From 35bc2d52a384159290d0ec6ad27913fd2f798464 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Sat, 7 Jun 2025 19:51:26 -0700 Subject: [PATCH] docs(index.md): document rate limiting improvements --- .../multi_instance_rate_limits_v3.jpg | Bin 0 -> 187367 bytes .../my-website/release_notes/v1.72.2/index.md | 20 +- .../static/chunks/250-000144669044689e.js | 2 +- .../static/chunks/webpack-a426aae3231a8df1.js | 2 +- .../out/_next/static/css/31b7f215e119031e.css | 2 +- .../_experimental/out/assets/logos/aws.svg | 68 +++---- .../out/assets/logos/cerebras.svg | 178 +++++++++--------- .../out/assets/logos/deepseek.svg | 50 ++--- .../out/assets/logos/perplexity-ai.svg | 30 +-- litellm/proxy/_experimental/out/index.html | 2 +- litellm/proxy/_experimental/out/index.txt | 2 +- litellm/proxy/_experimental/out/model_hub.txt | 2 +- .../proxy/_experimental/out/onboarding.html | 1 - .../proxy/_experimental/out/onboarding.txt | 2 +- 14 files changed, 189 insertions(+), 172 deletions(-) create mode 100644 docs/my-website/img/release_notes/multi_instance_rate_limits_v3.jpg delete mode 100644 litellm/proxy/_experimental/out/onboarding.html diff --git a/docs/my-website/img/release_notes/multi_instance_rate_limits_v3.jpg b/docs/my-website/img/release_notes/multi_instance_rate_limits_v3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..433c320eeb14e42ae457f7c7b6b2023e50f7730b GIT binary patch literal 187367 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⪙f-Fw;b!>d*3!J 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 Y$LxO`?$1{H6J-8`*Z; + +LiteLLM v1.72.2.rc now accurately tracks rate limits across keys, models, teams, and users with 0 spillover. + +This is a significant improvement over the previous version, which faced issues with leakage and spillover in high traffic, multi-instance setups. + +**Key Changes:** +- Redis is now part of the rate limit check, instead of being a background sync. This ensures accuracy and reduces read/write operations during low activity. +- LiteLLM now uses Lua scripts to ensure all checks are atomic. +- In-memory caching uses Redis values. This prevents drift, and reduces Redis queries once objects are over their limit. + +These changes are currently behind the feature flag - `ENABLE_MULTI_INSTANCE_RATE_LIMITING=True`. We plan to GA this in our next release - subject to feedback. ## Audit Logs on UI diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/250-000144669044689e.js b/litellm/proxy/_experimental/out/_next/static/chunks/250-000144669044689e.js index 8e4749e2090..0696e27b273 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/250-000144669044689e.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/250-000144669044689e.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[250],{19250:function(e,t,o){o.d(t,{$D:function(){return eI},$I:function(){return ee},$o:function(){return tv},AZ:function(){return Y},Au:function(){return eT},BL:function(){return eH},Br:function(){return x},E9:function(){return eY},EB:function(){return tl},EG:function(){return eQ},EY:function(){return e1},Eb:function(){return N},FC:function(){return ep},Gh:function(){return eJ},H1:function(){return A},H2:function(){return n},Hx:function(){return ej},I1:function(){return v},It:function(){return P},J$:function(){return es},JO:function(){return B},K8:function(){return p},K_:function(){return e0},Ko:function(){return tC},LY:function(){return eL},Lp:function(){return eU},MO:function(){return w},Mx:function(){return tu},N3:function(){return ex},N8:function(){return ea},NL:function(){return e8},NV:function(){return k},Nc:function(){return eG},O3:function(){return eZ},OD:function(){return eS},OU:function(){return eg},Of:function(){return b},Og:function(){return m},Ou:function(){return tg},Ov:function(){return S},PC:function(){return e5},PT:function(){return W},PY:function(){return tS},Pj:function(){return te},Pv:function(){return tf},Qg:function(){return eO},RQ:function(){return j},Rg:function(){return eo},Sb:function(){return eV},So:function(){return en},TF:function(){return tp},Tj:function(){return e2},U8:function(){return e7},UM:function(){return ts},VA:function(){return R},Vt:function(){return e$},W_:function(){return D},X:function(){return ei},XB:function(){return tw},XO:function(){return E},Xd:function(){return ev},Xm:function(){return O},YU:function(){return eq},Yi:function(){return t_},Yo:function(){return z},Z9:function(){return L},Zr:function(){return _},a6:function(){return G},aC:function(){return th},ao:function(){return eW},b1:function(){return eu},cq:function(){return U},cu:function(){return eA},e2:function(){return eE},eH:function(){return Q},eW:function(){return tE},eZ:function(){return eP},fE:function(){return ti},fP:function(){return er},fk:function(){return tj},g:function(){return e3},gX:function(){return eB},h3:function(){return eh},hT:function(){return eF},hy:function(){return y},ix:function(){return $},j2:function(){return el},jA:function(){return eK},jE:function(){return eD},jr:function(){return tk},kK:function(){return f},kn:function(){return K},lP:function(){return u},lU:function(){return to},lg:function(){return eN},mC:function(){return tc},mR:function(){return ec},mY:function(){return ta},m_:function(){return Z},mp:function(){return eX},n$:function(){return ek},n9:function(){return tn},nJ:function(){return tN},nd:function(){return e9},o6:function(){return et},oC:function(){return eb},ol:function(){return M},pf:function(){return eM},pu:function(){return ty},qI:function(){return T},qW:function(){return tm},qd:function(){return tT},qk:function(){return e6},qm:function(){return g},r1:function(){return td},r6:function(){return J},rs:function(){return F},s0:function(){return H},sN:function(){return eR},t$:function(){return I},t0:function(){return eC},t3:function(){return e4},tB:function(){return tr},tN:function(){return ew},u5:function(){return ed},v9:function(){return e_},vh:function(){return ez},wX:function(){return C},wd:function(){return ef},xA:function(){return em},xX:function(){return V},xZ:function(){return tt},zX:function(){return s},zg:function(){return ey}});var r=o(20347),a=o(41021);let n=null;console.log=function(){};let c=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=window.location.origin,r=t||o;console.log("proxyBaseUrl:",n),console.log("serverRootPath:",e),e.length>0&&!r.endsWith(e)&&"/"!=e&&(r+=e,n=r),console.log("Updated proxyBaseUrl:",n)},s=()=>n||window.location.origin,i={GET:"GET",DELETE:"DELETE"},l=0,d=async e=>{let t=Date.now();t-l>6e4?(e.includes("Authentication Error - Expired Key")&&(a.ZP.info("UI Session Expired. Logging out."),l=t,document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;",window.location.href=window.location.pathname),l=t):console.log("Error suppressed to prevent spam:",e)},h="Authorization";function p(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Authorization";console.log("setGlobalLitellmHeaderName: ".concat(e)),h=e}let w=async()=>{console.log("Getting UI config");let e=await fetch("/litellm/.well-known/litellm-ui-config"),t=await e.json();return console.log("jsonData in getUiConfig:",t),c(t.server_root_path,t.proxy_base_url),t},u=async()=>{let e=n?"".concat(n,"/openapi.json"):"/openapi.json",t=await fetch(e);return await t.json()},g=async e=>{try{let t=n?"".concat(n,"/get/litellm_model_cost_map"):"/get/litellm_model_cost_map",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}}),r=await o.json();return console.log("received litellm model cost data: ".concat(r)),r}catch(e){throw console.error("Failed to get model cost map:",e),e}},f=async(e,t)=>{try{let o=n?"".concat(n,"/model/new"):"/model/new",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text()||"Network response was not ok";throw a.ZP.error(e),Error(e)}let c=await r.json();return console.log("API Response:",c),a.ZP.destroy(),a.ZP.success("Model ".concat(t.model_name," created successfully"),2),c}catch(e){throw console.error("Failed to create key:",e),e}},y=async e=>{try{let t=n?"".concat(n,"/model/settings"):"/model/settings",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){console.error("Failed to get model settings:",e)}},m=async(e,t)=>{console.log("model_id in model delete call: ".concat(t));try{let o=n?"".concat(n,"/model/delete"):"/model/delete",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({id:t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},k=async(e,t)=>{if(console.log("budget_id in budget delete call: ".concat(t)),null!=e)try{let o=n?"".concat(n,"/budget/delete"):"/budget/delete",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({id:t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},_=async(e,t)=>{try{console.log("Form Values in budgetCreateCall:",t),console.log("Form Values after check:",t);let o=n?"".concat(n,"/budget/new"):"/budget/new",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},T=async(e,t)=>{try{console.log("Form Values in budgetUpdateCall:",t),console.log("Form Values after check:",t);let o=n?"".concat(n,"/budget/update"):"/budget/update",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},E=async(e,t)=>{try{let o=n?"".concat(n,"/invitation/new"):"/invitation/new",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},j=async e=>{try{let t=n?"".concat(n,"/alerting/settings"):"/alerting/settings",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},C=async(e,t,o)=>{try{if(console.log("Form Values in keyCreateCall:",o),o.description&&(o.metadata||(o.metadata={}),o.metadata.description=o.description,delete o.description,o.metadata=JSON.stringify(o.metadata)),o.metadata){console.log("formValues.metadata:",o.metadata);try{o.metadata=JSON.parse(o.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",o);let r=n?"".concat(n,"/key/generate"):"/key/generate",a=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...o})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error response from the server:",e),Error(e)}let c=await a.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},S=async(e,t,o)=>{try{if(console.log("Form Values in keyCreateCall:",o),o.description&&(o.metadata||(o.metadata={}),o.metadata.description=o.description,delete o.description,o.metadata=JSON.stringify(o.metadata)),o.auto_create_key=!1,o.metadata){console.log("formValues.metadata:",o.metadata);try{o.metadata=JSON.parse(o.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",o);let r=n?"".concat(n,"/user/new"):"/user/new",a=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...o})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error response from the server:",e),Error(e)}let c=await a.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},v=async(e,t)=>{try{let o=n?"".concat(n,"/key/delete"):"/key/delete";console.log("in keyDeleteCall:",t);let r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:[t]})});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},N=async(e,t)=>{try{let o=n?"".concat(n,"/user/delete"):"/user/delete";console.log("in userDeleteCall:",t);let r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_ids:t})});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log(a),a}catch(e){throw console.error("Failed to delete user(s):",e),e}},F=async(e,t)=>{try{let o=n?"".concat(n,"/team/delete"):"/team/delete";console.log("in teamDeleteCall:",t);let r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_ids:[t]})});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log(a),a}catch(e){throw console.error("Failed to delete key:",e),e}},b=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,c=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,i=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,p=arguments.length>9&&void 0!==arguments[9]?arguments[9]:null;try{let w=n?"".concat(n,"/user/list"):"/user/list";console.log("in userListCall");let u=new URLSearchParams;if(t&&t.length>0){let e=t.join(",");u.append("user_ids",e)}o&&u.append("page",o.toString()),r&&u.append("page_size",r.toString()),a&&u.append("user_email",a),c&&u.append("role",c),s&&u.append("team",s),i&&u.append("sso_user_ids",i),l&&u.append("sort_by",l),p&&u.append("sort_order",p);let g=u.toString();g&&(w+="?".concat(g));let f=await fetch(w,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!f.ok){let e=await f.text();throw d(e),Error("Network response was not ok")}let y=await f.json();return console.log("/user/list API Response:",y),y}catch(e){throw console.error("Failed to create key:",e),e}},x=async function(e,t,o){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4?arguments[4]:void 0,c=arguments.length>5?arguments[5]:void 0,s=arguments.length>6&&void 0!==arguments[6]&&arguments[6];console.log("userInfoCall: ".concat(t,", ").concat(o,", ").concat(r,", ").concat(a,", ").concat(c,", ").concat(s));try{let i;if(r){i=n?"".concat(n,"/user/list"):"/user/list";let e=new URLSearchParams;null!=a&&e.append("page",a.toString()),null!=c&&e.append("page_size",c.toString()),i+="?".concat(e.toString())}else i=n?"".concat(n,"/user/info"):"/user/info",("Admin"!==o&&"Admin Viewer"!==o||s)&&t&&(i+="?user_id=".concat(t));console.log("Requesting user data from:",i);let l=await fetch(i,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw d(e),Error("Network response was not ok")}let p=await l.json();return console.log("API Response:",p),p}catch(e){throw console.error("Failed to fetch user data:",e),e}},O=async(e,t)=>{try{let o=n?"".concat(n,"/team/info"):"/team/info";t&&(o="".concat(o,"?team_id=").concat(t)),console.log("in teamInfoCall");let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},B=async function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;arguments.length>5&&void 0!==arguments[5]&&arguments[5],arguments.length>6&&void 0!==arguments[6]&&arguments[6],arguments.length>7&&void 0!==arguments[7]&&arguments[7],arguments.length>8&&void 0!==arguments[8]&&arguments[8];try{let c=n?"".concat(n,"/v2/team/list"):"/v2/team/list";console.log("in teamInfoCall");let s=new URLSearchParams;o&&s.append("user_id",o.toString()),t&&s.append("organization_id",t.toString()),r&&s.append("team_id",r.toString()),a&&s.append("team_alias",a.toString());let i=s.toString();i&&(c+="?".concat(i));let l=await fetch(c,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw d(e),Error("Network response was not ok")}let p=await l.json();return console.log("/v2/team/list API Response:",p),p}catch(e){throw console.error("Failed to create key:",e),e}},P=async function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let c=n?"".concat(n,"/team/list"):"/team/list";console.log("in teamInfoCall");let s=new URLSearchParams;o&&s.append("user_id",o.toString()),t&&s.append("organization_id",t.toString()),r&&s.append("team_id",r.toString()),a&&s.append("team_alias",a.toString());let i=s.toString();i&&(c+="?".concat(i));let l=await fetch(c,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw d(e),Error("Network response was not ok")}let p=await l.json();return console.log("/team/list API Response:",p),p}catch(e){throw console.error("Failed to create key:",e),e}},G=async e=>{try{let t=n?"".concat(n,"/team/available"):"/team/available";console.log("in availableTeamListCall");let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log("/team/available_teams API Response:",r),r}catch(e){throw e}},J=async e=>{try{let t=n?"".concat(n,"/organization/list"):"/organization/list",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},I=async(e,t)=>{try{let o=n?"".concat(n,"/organization/info"):"/organization/info";t&&(o="".concat(o,"?organization_id=").concat(t)),console.log("in teamInfoCall");let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},A=async(e,t)=>{try{if(console.log("Form Values in organizationCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw console.error("Failed to parse metadata:",e),Error("Failed to parse metadata: "+e)}}let o=n?"".concat(n,"/organization/new"):"/organization/new",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},R=async(e,t)=>{try{console.log("Form Values in organizationUpdateCall:",t);let o=n?"".concat(n,"/organization/update"):"/organization/update",r=await fetch(o,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("Update Team Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},U=async(e,t)=>{try{let o=n?"".concat(n,"/organization/delete"):"/organization/delete",r=await fetch(o,{method:"DELETE",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_ids:[t]})});if(!r.ok){let e=await r.text();throw d(e),Error("Error deleting organization: ".concat(e))}return await r.json()}catch(e){throw console.error("Failed to delete organization:",e),e}},z=async(e,t)=>{try{let o=n?"".concat(n,"/utils/transform_request"):"/utils/transform_request",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}return await r.json()}catch(e){throw console.error("Failed to create key:",e),e}},V=async function(e,t,o){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;try{let a=n?"".concat(n,"/user/daily/activity"):"/user/daily/activity",c=new URLSearchParams;c.append("start_date",t.toISOString()),c.append("end_date",o.toISOString()),c.append("page_size","1000"),c.append("page",r.toString());let s=c.toString();s&&(a+="?".concat(s));let i=await fetch(a,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.text();throw d(e),Error("Network response was not ok")}return await i.json()}catch(e){throw console.error("Failed to create key:",e),e}},L=async function(e,t,o){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let c=n?"".concat(n,"/tag/daily/activity"):"/tag/daily/activity",s=new URLSearchParams;s.append("start_date",t.toISOString()),s.append("end_date",o.toISOString()),s.append("page_size","1000"),s.append("page",r.toString()),a&&s.append("tags",a.join(","));let i=s.toString();i&&(c+="?".concat(i));let l=await fetch(c,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw d(e),Error("Network response was not ok")}return await l.json()}catch(e){throw console.error("Failed to create key:",e),e}},M=async function(e,t,o){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let c=n?"".concat(n,"/team/daily/activity"):"/team/daily/activity",s=new URLSearchParams;s.append("start_date",t.toISOString()),s.append("end_date",o.toISOString()),s.append("page_size","1000"),s.append("page",r.toString()),a&&s.append("team_ids",a.join(",")),s.append("exclude_team_ids","litellm-dashboard");let i=s.toString();i&&(c+="?".concat(i));let l=await fetch(c,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw d(e),Error("Network response was not ok")}return await l.json()}catch(e){throw console.error("Failed to create key:",e),e}},D=async e=>{try{let t=n?"".concat(n,"/onboarding/get_token"):"/onboarding/get_token";t+="?invite_link=".concat(e);let o=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},Z=async(e,t,o,r)=>{let a=n?"".concat(n,"/onboarding/claim_token"):"/onboarding/claim_token";try{let n=await fetch(a,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({invitation_link:t,user_id:o,password:r})});if(!n.ok){let e=await n.text();throw d(e),Error("Network response was not ok")}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to delete key:",e),e}},H=async(e,t,o)=>{try{let r=n?"".concat(n,"/key/").concat(t,"/regenerate"):"/key/".concat(t,"/regenerate"),a=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!a.ok){let e=await a.text();throw d(e),Error("Network response was not ok")}let c=await a.json();return console.log("Regenerate key Response:",c),c}catch(e){throw console.error("Failed to regenerate key:",e),e}},q=!1,X=null,Y=async(e,t,o)=>{try{console.log("modelInfoCall:",e,t,o);let c=n?"".concat(n,"/v2/model/info"):"/v2/model/info";r.ZL.includes(o)||(c+="?user_models_only=true");let s=await fetch(c,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw e+="error shown=".concat(q),q||(e.includes("No model list passed")&&(e="No Models Exist. Click Add Model to get started."),a.ZP.info(e,10),q=!0,X&&clearTimeout(X),X=setTimeout(()=>{q=!1},1e4)),Error("Network response was not ok")}let i=await s.json();return console.log("modelInfoCall:",i),i}catch(e){throw console.error("Failed to create key:",e),e}},$=async(e,t)=>{try{let o=n?"".concat(n,"/v1/model/info"):"/v1/model/info";o+="?litellm_model_id=".concat(t);let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok)throw await r.text(),Error("Network response was not ok");let a=await r.json();return console.log("modelInfoV1Call:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},K=async e=>{try{let t=n?"".concat(n,"/model_group/info"):"/model_group/info",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok)throw await o.text(),Error("Network response was not ok");let r=await o.json();return console.log("modelHubCall:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},W=async e=>{try{let t=n?"".concat(n,"/get/allowed_ips"):"/get/allowed_ips",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw Error("Network response was not ok: ".concat(e))}let r=await o.json();return console.log("getAllowedIPs:",r),r.data}catch(e){throw console.error("Failed to get allowed IPs:",e),e}},Q=async(e,t)=>{try{let o=n?"".concat(n,"/add/allowed_ip"):"/add/allowed_ip",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({ip:t})});if(!r.ok){let e=await r.text();throw Error("Network response was not ok: ".concat(e))}let a=await r.json();return console.log("addAllowedIP:",a),a}catch(e){throw console.error("Failed to add allowed IP:",e),e}},ee=async(e,t)=>{try{let o=n?"".concat(n,"/delete/allowed_ip"):"/delete/allowed_ip",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({ip:t})});if(!r.ok){let e=await r.text();throw Error("Network response was not ok: ".concat(e))}let a=await r.json();return console.log("deleteAllowedIP:",a),a}catch(e){throw console.error("Failed to delete allowed IP:",e),e}},et=async(e,t,o,r,a,c,s,i)=>{try{let t=n?"".concat(n,"/model/metrics"):"/model/metrics";r&&(t="".concat(t,"?_selected_model_group=").concat(r,"&startTime=").concat(a,"&endTime=").concat(c,"&api_key=").concat(s,"&customer=").concat(i));let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},eo=async(e,t,o,r)=>{try{let a=n?"".concat(n,"/model/streaming_metrics"):"/model/streaming_metrics";t&&(a="".concat(a,"?_selected_model_group=").concat(t,"&startTime=").concat(o,"&endTime=").concat(r));let c=await fetch(a,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok){let e=await c.text();throw d(e),Error("Network response was not ok")}return await c.json()}catch(e){throw console.error("Failed to create key:",e),e}},er=async(e,t,o,r,a,c,s,i)=>{try{let t=n?"".concat(n,"/model/metrics/slow_responses"):"/model/metrics/slow_responses";r&&(t="".concat(t,"?_selected_model_group=").concat(r,"&startTime=").concat(a,"&endTime=").concat(c,"&api_key=").concat(s,"&customer=").concat(i));let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},ea=async(e,t,o,r,a,c,s,i)=>{try{let t=n?"".concat(n,"/model/metrics/exceptions"):"/model/metrics/exceptions";r&&(t="".concat(t,"?_selected_model_group=").concat(r,"&startTime=").concat(a,"&endTime=").concat(c,"&api_key=").concat(s,"&customer=").concat(i));let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},en=async function(e,t,o){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,c=arguments.length>5&&void 0!==arguments[5]&&arguments[5];console.log("in /models calls, globalLitellmHeaderName",h);try{let t=n?"".concat(n,"/models"):"/models",o=new URLSearchParams;!0===r&&o.append("return_wildcard_routes","True"),!0===c&&o.append("include_model_access_groups","True"),a&&o.append("team_id",a.toString()),o.toString()&&(t+="?".concat(o.toString()));let s=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw d(e),Error("Network response was not ok")}return await s.json()}catch(e){throw console.error("Failed to create key:",e),e}},ec=async e=>{try{let t=n?"".concat(n,"/global/spend/teams"):"/global/spend/teams";console.log("in teamSpendLogsCall:",t);let o=await fetch("".concat(t),{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},es=async(e,t,o,r)=>{try{let a=n?"".concat(n,"/global/spend/tags"):"/global/spend/tags";t&&o&&(a="".concat(a,"?start_date=").concat(t,"&end_date=").concat(o)),r&&(a+="".concat(a,"&tags=").concat(r.join(","))),console.log("in tagsSpendLogsCall:",a);let c=await fetch("".concat(a),{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok)throw await c.text(),Error("Network response was not ok");let s=await c.json();return console.log(s),s}catch(e){throw console.error("Failed to create key:",e),e}},ei=async e=>{try{let t=n?"".concat(n,"/global/spend/all_tag_names"):"/global/spend/all_tag_names";console.log("in global/spend/all_tag_names call",t);let o=await fetch("".concat(t),{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok)throw await o.text(),Error("Network response was not ok");let r=await o.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},el=async e=>{try{let t=n?"".concat(n,"/global/all_end_users"):"/global/all_end_users";console.log("in global/all_end_users call",t);let o=await fetch("".concat(t),{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok)throw await o.text(),Error("Network response was not ok");let r=await o.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},ed=async(e,t)=>{try{let o=n?"".concat(n,"/user/filter/ui"):"/user/filter/ui";t.get("user_email")&&(o+="?user_email=".concat(t.get("user_email"))),t.get("user_id")&&(o+="?user_id=".concat(t.get("user_id")));let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}return await r.json()}catch(e){throw console.error("Failed to create key:",e),e}},eh=async(e,t,o,r,a,c,s,i,l,p,w)=>{try{let u=n?"".concat(n,"/spend/logs/ui"):"/spend/logs/ui",g=new URLSearchParams;t&&g.append("api_key",t),o&&g.append("team_id",o),r&&g.append("request_id",r),a&&g.append("start_date",a),c&&g.append("end_date",c),s&&g.append("page",s.toString()),i&&g.append("page_size",i.toString()),l&&g.append("user_id",l),p&&g.append("status_filter",p),w&&g.append("model",w);let f=g.toString();f&&(u+="?".concat(f));let y=await fetch(u,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!y.ok){let e=await y.text();throw d(e),Error("Network response was not ok")}let m=await y.json();return console.log("Spend Logs Response:",m),m}catch(e){throw console.error("Failed to fetch spend logs:",e),e}},ep=async e=>{try{let t=n?"".concat(n,"/global/spend/logs"):"/global/spend/logs",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},ew=async e=>{try{let t=n?"".concat(n,"/global/spend/keys?limit=5"):"/global/spend/keys?limit=5",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},eu=async(e,t,o,r)=>{try{let a=n?"".concat(n,"/global/spend/end_users"):"/global/spend/end_users",c="";c=t?JSON.stringify({api_key:t,startTime:o,endTime:r}):JSON.stringify({startTime:o,endTime:r});let s={method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:c},i=await fetch(a,s);if(!i.ok){let e=await i.text();throw d(e),Error("Network response was not ok")}let l=await i.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},eg=async(e,t,o,r)=>{try{let a=n?"".concat(n,"/global/spend/provider"):"/global/spend/provider";o&&r&&(a+="?start_date=".concat(o,"&end_date=").concat(r)),t&&(a+="&api_key=".concat(t));let c={method:"GET",headers:{[h]:"Bearer ".concat(e)}},s=await fetch(a,c);if(!s.ok){let e=await s.text();throw d(e),Error("Network response was not ok")}let i=await s.json();return console.log(i),i}catch(e){throw console.error("Failed to fetch spend data:",e),e}},ef=async(e,t,o)=>{try{let r=n?"".concat(n,"/global/activity"):"/global/activity";t&&o&&(r+="?start_date=".concat(t,"&end_date=").concat(o));let a={method:"GET",headers:{[h]:"Bearer ".concat(e)}},c=await fetch(r,a);if(!c.ok)throw await c.text(),Error("Network response was not ok");let s=await c.json();return console.log(s),s}catch(e){throw console.error("Failed to fetch spend data:",e),e}},ey=async(e,t,o)=>{try{let r=n?"".concat(n,"/global/activity/cache_hits"):"/global/activity/cache_hits";t&&o&&(r+="?start_date=".concat(t,"&end_date=").concat(o));let a={method:"GET",headers:{[h]:"Bearer ".concat(e)}},c=await fetch(r,a);if(!c.ok)throw await c.text(),Error("Network response was not ok");let s=await c.json();return console.log(s),s}catch(e){throw console.error("Failed to fetch spend data:",e),e}},em=async(e,t,o)=>{try{let r=n?"".concat(n,"/global/activity/model"):"/global/activity/model";t&&o&&(r+="?start_date=".concat(t,"&end_date=").concat(o));let a={method:"GET",headers:{[h]:"Bearer ".concat(e)}},c=await fetch(r,a);if(!c.ok)throw await c.text(),Error("Network response was not ok");let s=await c.json();return console.log(s),s}catch(e){throw console.error("Failed to fetch spend data:",e),e}},ek=async(e,t,o,r)=>{try{let a=n?"".concat(n,"/global/activity/exceptions"):"/global/activity/exceptions";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o)),r&&(a+="&model_group=".concat(r));let c={method:"GET",headers:{[h]:"Bearer ".concat(e)}},s=await fetch(a,c);if(!s.ok)throw await s.text(),Error("Network response was not ok");let i=await s.json();return console.log(i),i}catch(e){throw console.error("Failed to fetch spend data:",e),e}},e_=async(e,t,o,r)=>{try{let a=n?"".concat(n,"/global/activity/exceptions/deployment"):"/global/activity/exceptions/deployment";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o)),r&&(a+="&model_group=".concat(r));let c={method:"GET",headers:{[h]:"Bearer ".concat(e)}},s=await fetch(a,c);if(!s.ok)throw await s.text(),Error("Network response was not ok");let i=await s.json();return console.log(i),i}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eT=async e=>{try{let t=n?"".concat(n,"/global/spend/models?limit=5"):"/global/spend/models?limit=5",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},eE=async(e,t)=>{try{let o=n?"".concat(n,"/v2/key/info"):"/v2/key/info",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:t})});if(!r.ok){let e=await r.text();if(e.includes("Invalid proxy server token passed"))throw Error("Invalid proxy server token passed");throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},ej=async(e,t,o)=>{try{console.log("Sending model connection test request:",JSON.stringify(t));let a=n?"".concat(n,"/health/test_connection"):"/health/test_connection",c=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",[h]:"Bearer ".concat(e)},body:JSON.stringify({litellm_params:t,mode:o})}),s=c.headers.get("content-type");if(!s||!s.includes("application/json")){let e=await c.text();throw console.error("Received non-JSON response:",e),Error("Received non-JSON response (".concat(c.status,": ").concat(c.statusText,"). Check network tab for details."))}let i=await c.json();if(!c.ok||"error"===i.status){if("error"===i.status);else{var r;return{status:"error",message:(null===(r=i.error)||void 0===r?void 0:r.message)||"Connection test failed: ".concat(c.status," ").concat(c.statusText)}}}return i}catch(e){throw console.error("Model connection test error:",e),e}},eC=async(e,t)=>{try{console.log("entering keyInfoV1Call");let o=n?"".concat(n,"/key/info"):"/key/info";o="".concat(o,"?key=").concat(t);let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(console.log("response",r),!r.ok){let e=await r.text();d(e),a.ZP.error("Failed to fetch key info - "+e)}let c=await r.json();return console.log("data",c),c}catch(e){throw console.error("Failed to fetch key info:",e),e}},eS=async function(e,t,o,r,a,c,s,i){let l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,p=arguments.length>9&&void 0!==arguments[9]?arguments[9]:null;try{let w=n?"".concat(n,"/key/list"):"/key/list";console.log("in keyListCall");let u=new URLSearchParams;o&&u.append("team_id",o.toString()),t&&u.append("organization_id",t.toString()),r&&u.append("key_alias",r),c&&u.append("key_hash",c),a&&u.append("user_id",a.toString()),s&&u.append("page",s.toString()),i&&u.append("size",i.toString()),l&&u.append("sort_by",l),p&&u.append("sort_order",p),u.append("return_full_object","true"),u.append("include_team_keys","true");let g=u.toString();g&&(w+="?".concat(g));let f=await fetch(w,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!f.ok){let e=await f.text();throw d(e),Error("Network response was not ok")}let y=await f.json();return console.log("/team/list API Response:",y),y}catch(e){throw console.error("Failed to create key:",e),e}},ev=async(e,t)=>{try{let o=n?"".concat(n,"/user/get_users?role=").concat(t):"/user/get_users?role=".concat(t);console.log("in userGetAllUsersCall:",o);let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log(a),a}catch(e){throw console.error("Failed to get requested models:",e),e}},eN=async e=>{try{let t=n?"".concat(n,"/user/available_roles"):"/user/available_roles",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok)throw await o.text(),Error("Network response was not ok");let r=await o.json();return console.log("response from user/available_role",r),r}catch(e){throw e}},eF=async(e,t)=>{try{if(console.log("Form Values in teamCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let o=n?"".concat(n,"/team/new"):"/team/new",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},eb=async(e,t)=>{try{if(console.log("Form Values in credentialCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let o=n?"".concat(n,"/credentials"):"/credentials",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},ex=async e=>{try{let t=n?"".concat(n,"/credentials"):"/credentials";console.log("in credentialListCall");let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log("/credentials API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},eO=async(e,t,o)=>{try{let r=n?"".concat(n,"/credentials"):"/credentials";t?r+="/by_name/".concat(t):o&&(r+="/by_model/".concat(o)),console.log("in credentialListCall");let a=await fetch(r,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw d(e),Error("Network response was not ok")}let c=await a.json();return console.log("/credentials API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},eB=async(e,t)=>{try{let o=n?"".concat(n,"/credentials/").concat(t):"/credentials/".concat(t);console.log("in credentialDeleteCall:",t);let r=await fetch(o,{method:"DELETE",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log(a),a}catch(e){throw console.error("Failed to delete key:",e),e}},eP=async(e,t,o)=>{try{if(console.log("Form Values in credentialUpdateCall:",o),o.metadata){console.log("formValues.metadata:",o.metadata);try{o.metadata=JSON.parse(o.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let r=n?"".concat(n,"/credentials/").concat(t):"/credentials/".concat(t),a=await fetch(r,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...o})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let c=await a.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},eG=async(e,t)=>{try{if(console.log("Form Values in keyUpdateCall:",t),t.model_tpm_limit){console.log("formValues.model_tpm_limit:",t.model_tpm_limit);try{t.model_tpm_limit=JSON.parse(t.model_tpm_limit)}catch(e){throw Error("Failed to parse model_tpm_limit: "+e)}}if(t.model_rpm_limit){console.log("formValues.model_rpm_limit:",t.model_rpm_limit);try{t.model_rpm_limit=JSON.parse(t.model_rpm_limit)}catch(e){throw Error("Failed to parse model_rpm_limit: "+e)}}let o=n?"".concat(n,"/key/update"):"/key/update",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("Update key Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},eJ=async(e,t)=>{try{console.log("Form Values in teamUpateCall:",t);let o=n?"".concat(n,"/team/update"):"/team/update",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),a.ZP.error("Failed to update team settings: "+e),Error(e)}let c=await r.json();return console.log("Update Team Response:",c),c}catch(e){throw console.error("Failed to update team:",e),e}},eI=async(e,t,o)=>{try{console.log("Form Values in modelUpateCall:",t);let r=n?"".concat(n,"/model/").concat(o,"/update"):"/model/".concat(o,"/update"),a=await fetch(r,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error update from the server:",e),Error("Network response was not ok")}let c=await a.json();return console.log("Update model Response:",c),c}catch(e){throw console.error("Failed to update model:",e),e}},eA=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let a=n?"".concat(n,"/team/member_add"):"/team/member_add",c=await fetch(a,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,member:o})});if(!c.ok){var r;let e=await c.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(r=t.detail)||void 0===r?void 0:r.error)||"Failed to add team member",a=Error(o);throw a.raw=t,a}let s=await c.json();return console.log("API Response:",s),s}catch(e){throw console.error("Failed to create key:",e),e}},eR=async(e,t,o)=>{try{console.log("Form Values in teamMemberUpdateCall:",o);let a=n?"".concat(n,"/team/member_update"):"/team/member_update",c=await fetch(a,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,role:o.role,user_id:o.user_id})});if(!c.ok){var r;let e=await c.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(r=t.detail)||void 0===r?void 0:r.error)||"Failed to add team member",a=Error(o);throw a.raw=t,a}let s=await c.json();return console.log("API Response:",s),s}catch(e){throw console.error("Failed to update team member:",e),e}},eU=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let r=n?"".concat(n,"/team/member_delete"):"/team/member_delete",a=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,...void 0!==o.user_email&&{user_email:o.user_email},...void 0!==o.user_id&&{user_id:o.user_id}})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let c=await a.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},ez=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let r=n?"".concat(n,"/organization/member_add"):"/organization/member_add",a=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,member:o})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error response from the server:",e),Error(e)}let c=await a.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create organization member:",e),e}},eV=async(e,t,o)=>{try{console.log("Form Values in organizationMemberDeleteCall:",o);let r=n?"".concat(n,"/organization/member_delete"):"/organization/member_delete",a=await fetch(r,{method:"DELETE",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,user_id:o})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let c=await a.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to delete organization member:",e),e}},eL=async(e,t,o)=>{try{console.log("Form Values in organizationMemberUpdateCall:",o);let r=n?"".concat(n,"/organization/member_update"):"/organization/member_update",a=await fetch(r,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,...o})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let c=await a.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to update organization member:",e),e}},eM=async(e,t,o)=>{try{console.log("Form Values in userUpdateUserCall:",t);let r=n?"".concat(n,"/user/update"):"/user/update",a={...t};null!==o&&(a.user_role=o),a=JSON.stringify(a);let c=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:a});if(!c.ok){let e=await c.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let s=await c.json();return console.log("API Response:",s),s}catch(e){throw console.error("Failed to create key:",e),e}},eD=async(e,t)=>{try{let o=n?"".concat(n,"/health/services?service=").concat(t):"/health/services?service=".concat(t);console.log("Checking Slack Budget Alerts service health");let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error(e)}let c=await r.json();return a.ZP.success("Test request to ".concat(t," made - check logs/alerts on ").concat(t," to verify")),c}catch(e){throw console.error("Failed to perform health check:",e),e}},eZ=async e=>{try{let t=n?"".concat(n,"/budget/list"):"/budget/list",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},eH=async(e,t,o)=>{try{let t=n?"".concat(n,"/get/config/callbacks"):"/get/config/callbacks",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},eq=async e=>{try{let t=n?"".concat(n,"/config/list?config_type=general_settings"):"/config/list?config_type=general_settings",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},eX=async e=>{try{let t=n?"".concat(n,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},eY=async(e,t)=>{try{let o=n?"".concat(n,"/config/field/info?field_name=").concat(t):"/config/field/info?field_name=".concat(t),r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok)throw await r.text(),Error("Network response was not ok");return await r.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},e$=async(e,t)=>{try{let o=n?"".concat(n,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}return await r.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},eK=async(e,t,o)=>{try{let r=n?"".concat(n,"/config/field/update"):"/config/field/update",c=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,field_value:o,config_type:"general_settings"})});if(!c.ok){let e=await c.text();throw d(e),Error("Network response was not ok")}let s=await c.json();return a.ZP.success("Successfully updated value!"),s}catch(e){throw console.error("Failed to set callbacks:",e),e}},eW=async(e,t)=>{try{let o=n?"".concat(n,"/config/field/delete"):"/config/field/delete",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,config_type:"general_settings"})});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let c=await r.json();return a.ZP.success("Field reset on proxy"),c}catch(e){throw console.error("Failed to get callbacks:",e),e}},eQ=async(e,t)=>{try{let o=n?"".concat(n,"/config/pass_through_endpoint?endpoint_id=").concat(t):"/config/pass_through_endpoint".concat(t),r=await fetch(o,{method:"DELETE",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}return await r.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},e0=async(e,t)=>{try{let o=n?"".concat(n,"/config/update"):"/config/update",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}return await r.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},e1=async e=>{try{let t=n?"".concat(n,"/health"):"/health",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to call /health:",e),e}},e2=async e=>{try{let t=n?"".concat(n,"/cache/ping"):"/cache/ping",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error(e)}return await o.json()}catch(e){throw console.error("Failed to call /cache/ping:",e),e}},e3=async e=>{try{console.log("Getting proxy UI settings"),console.log("proxyBaseUrl in getProxyUISettings:",n);let t=n?"".concat(n,"/sso/get/ui_settings"):"/sso/get/ui_settings",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok)throw await o.text(),Error("Network response was not ok");return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},e4=async e=>{try{let t=n?"".concat(n,"/v2/guardrails/list"):"/v2/guardrails/list",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to get guardrails list:",e),e}},e5=async(e,t)=>{try{let o=n?"".concat(n,"/guardrails"):"/guardrails",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({guardrail:t})});if(!r.ok){let e=await r.text();throw d(e),Error(e)}let a=await r.json();return console.log("Create guardrail response:",a),a}catch(e){throw console.error("Failed to create guardrail:",e),e}},e6=async(e,t,o)=>{try{let r=n?"".concat(n,"/spend/logs/ui/").concat(t,"?start_date=").concat(encodeURIComponent(o)):"/spend/logs/ui/".concat(t,"?start_date=").concat(encodeURIComponent(o));console.log("Fetching log details from:",r);let a=await fetch(r,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw d(e),Error("Network response was not ok")}let c=await a.json();return console.log("Fetched log details:",c),c}catch(e){throw console.error("Failed to fetch log details:",e),e}},e8=async e=>{try{let t=n?"".concat(n,"/get/internal_user_settings"):"/get/internal_user_settings";console.log("Fetching SSO settings from:",t);let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log("Fetched SSO settings:",r),r}catch(e){throw console.error("Failed to fetch SSO settings:",e),e}},e9=async(e,t)=>{try{let o=n?"".concat(n,"/update/internal_user_settings"):"/update/internal_user_settings";console.log("Updating internal user settings:",t);let r=await fetch(o,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let c=await r.json();return console.log("Updated internal user settings:",c),a.ZP.success("Internal user settings updated successfully"),c}catch(e){throw console.error("Failed to update internal user settings:",e),e}},e7=async e=>{try{let t=n?"".concat(n,"/v1/mcp/server"):"/v1/mcp/server";console.log("Fetching MCP servers from:",t);let o=await fetch(t,{method:i.GET,headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log("Fetched MCP servers:",r),r}catch(e){throw console.error("Failed to fetch MCP servers:",e),e}},te=async(e,t)=>{try{console.log("Form Values in createMCPServer:",t);let o=n?"".concat(n,"/v1/mcp/server"):"/v1/mcp/server",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},tt=async(e,t)=>{try{let o=(n?"".concat(n):"")+"/v1/mcp/server/".concat(t);console.log("in deleteMCPServer:",t);let r=await fetch(o,{method:i.DELETE,headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}}catch(e){throw console.error("Failed to delete key:",e),e}},to=async(e,t)=>{try{let o=n?"".concat(n,"/mcp/tools/list?server_id=").concat(t):"/mcp/tools/list?server_id=".concat(t);console.log("Fetching MCP tools from:",o);let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log("Fetched MCP tools:",a),a}catch(e){throw console.error("Failed to fetch MCP tools:",e),e}},tr=async(e,t,o)=>{try{let r=n?"".concat(n,"/mcp/tools/call"):"/mcp/tools/call";console.log("Calling MCP tool:",t,"with arguments:",o);let a=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({name:t,arguments:o})});if(!a.ok){let e=await a.text();throw d(e),Error("Network response was not ok")}let c=await a.json();return console.log("MCP tool call response:",c),c}catch(e){throw console.error("Failed to call MCP tool:",e),e}},ta=async(e,t)=>{try{let o=n?"".concat(n,"/tag/new"):"/tag/new",r=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!r.ok){let e=await r.text();await d(e);return}return await r.json()}catch(e){throw console.error("Error creating tag:",e),e}},tn=async(e,t)=>{try{let o=n?"".concat(n,"/tag/update"):"/tag/update",r=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!r.ok){let e=await r.text();await d(e);return}return await r.json()}catch(e){throw console.error("Error updating tag:",e),e}},tc=async(e,t)=>{try{let o=n?"".concat(n,"/tag/info"):"/tag/info",r=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({names:t})});if(!r.ok){let e=await r.text();return await d(e),{}}return await r.json()}catch(e){throw console.error("Error getting tag info:",e),e}},ts=async e=>{try{let t=n?"".concat(n,"/tag/list"):"/tag/list",o=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e)}});if(!o.ok){let e=await o.text();return await d(e),{}}return await o.json()}catch(e){throw console.error("Error listing tags:",e),e}},ti=async(e,t)=>{try{let o=n?"".concat(n,"/tag/delete"):"/tag/delete",r=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({name:t})});if(!r.ok){let e=await r.text();await d(e);return}return await r.json()}catch(e){throw console.error("Error deleting tag:",e),e}},tl=async e=>{try{let t=n?"".concat(n,"/get/default_team_settings"):"/get/default_team_settings";console.log("Fetching default team settings from:",t);let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log("Fetched default team settings:",r),r}catch(e){throw console.error("Failed to fetch default team settings:",e),e}},td=async(e,t)=>{try{let o=n?"".concat(n,"/update/default_team_settings"):"/update/default_team_settings";console.log("Updating default team settings:",t);let r=await fetch(o,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let c=await r.json();return console.log("Updated default team settings:",c),a.ZP.success("Default team settings updated successfully"),c}catch(e){throw console.error("Failed to update default team settings:",e),e}},th=async(e,t)=>{try{let o=n?"".concat(n,"/team/permissions_list?team_id=").concat(t):"/team/permissions_list?team_id=".concat(t),r=await fetch(o,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log("Team permissions response:",a),a}catch(e){throw console.error("Failed to get team permissions:",e),e}},tp=async(e,t,o)=>{try{let r=n?"".concat(n,"/team/permissions_update"):"/team/permissions_update",a=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({team_id:t,team_member_permissions:o})});if(!a.ok){let e=await a.text();throw d(e),Error("Network response was not ok")}let c=await a.json();return console.log("Team permissions response:",c),c}catch(e){throw console.error("Failed to update team permissions:",e),e}},tw=async(e,t)=>{try{let o=n?"".concat(n,"/spend/logs/session/ui?session_id=").concat(encodeURIComponent(t)):"/spend/logs/session/ui?session_id=".concat(encodeURIComponent(t)),r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}return await r.json()}catch(e){throw console.error("Failed to fetch session logs:",e),e}},tu=async(e,t)=>{try{let o=n?"".concat(n,"/vector_store/new"):"/vector_store/new",r=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!r.ok){let e=await r.json();throw Error(e.detail||"Failed to create vector store")}return await r.json()}catch(e){throw console.error("Error creating vector store:",e),e}},tg=async function(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1],arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let t=n?"".concat(n,"/vector_store/list"):"/vector_store/list",o=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}});if(!o.ok){let e=await o.json();throw Error(e.detail||"Failed to list vector stores")}return await o.json()}catch(e){throw console.error("Error listing vector stores:",e),e}},tf=async(e,t)=>{try{let o=n?"".concat(n,"/vector_store/delete"):"/vector_store/delete",r=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({vector_store_id:t})});if(!r.ok){let e=await r.json();throw Error(e.detail||"Failed to delete vector store")}return await r.json()}catch(e){throw console.error("Error deleting vector store:",e),e}},ty=async e=>{try{let t=n?"".concat(n,"/email/event_settings"):"/email/event_settings",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Failed to get email event settings")}let r=await o.json();return console.log("Email event settings response:",r),r}catch(e){throw console.error("Failed to get email event settings:",e),e}},tm=async(e,t)=>{try{let o=n?"".concat(n,"/email/event_settings"):"/email/event_settings",r=await fetch(o,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=await r.text();throw d(e),Error("Failed to update email event settings")}let a=await r.json();return console.log("Update email event settings response:",a),a}catch(e){throw console.error("Failed to update email event settings:",e),e}},tk=async e=>{try{let t=n?"".concat(n,"/email/event_settings/reset"):"/email/event_settings/reset",o=await fetch(t,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Failed to reset email event settings")}let r=await o.json();return console.log("Reset email event settings response:",r),r}catch(e){throw console.error("Failed to reset email event settings:",e),e}},t_=async(e,t)=>{try{let o=n?"".concat(n,"/guardrails/").concat(t):"/guardrails/".concat(t),r=await fetch(o,{method:"DELETE",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error(e)}let a=await r.json();return console.log("Delete guardrail response:",a),a}catch(e){throw console.error("Failed to delete guardrail:",e),e}},tT=async e=>{try{let t=n?"".concat(n,"/guardrails/ui/add_guardrail_settings"):"/guardrails/ui/add_guardrail_settings",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Failed to get guardrail UI settings")}let r=await o.json();return console.log("Guardrail UI settings response:",r),r}catch(e){throw console.error("Failed to get guardrail UI settings:",e),e}},tE=async e=>{try{let t=n?"".concat(n,"/guardrails/ui/provider_specific_params"):"/guardrails/ui/provider_specific_params",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Failed to get guardrail provider specific parameters")}let r=await o.json();return console.log("Guardrail provider specific params response:",r),r}catch(e){throw console.error("Failed to get guardrail provider specific parameters:",e),e}},tj=async(e,t)=>{try{let o=n?"".concat(n,"/guardrails/").concat(t,"/info"):"/guardrails/".concat(t,"/info"),r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Failed to get guardrail info")}let a=await r.json();return console.log("Guardrail info response:",a),a}catch(e){throw console.error("Failed to get guardrail info:",e),e}},tC=async(e,t,o)=>{try{let r=n?"".concat(n,"/guardrails/").concat(t):"/guardrails/".concat(t),a=await fetch(r,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!a.ok){let e=await a.text();throw d(e),Error("Failed to update guardrail")}let c=await a.json();return console.log("Update guardrail response:",c),c}catch(e){throw console.error("Failed to update guardrail:",e),e}},tS=async e=>{try{let t=n?"".concat(n,"/get/sso_settings"):"/get/sso_settings";console.log("Fetching SSO configuration from:",t);let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log("Fetched SSO configuration:",r),r}catch(e){throw console.error("Failed to fetch SSO configuration:",e),e}},tv=async(e,t)=>{try{let o=n?"".concat(n,"/update/sso_settings"):"/update/sso_settings";console.log("Updating SSO configuration:",t);let r=await fetch(o,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log("Updated SSO configuration:",a),a}catch(e){throw console.error("Failed to update SSO configuration:",e),e}},tN=async(e,t,o,r,a)=>{try{let t=n?"".concat(n,"/audit"):"/audit",o=new URLSearchParams;r&&o.append("page",r.toString()),a&&o.append("page_size",a.toString());let c=o.toString();c&&(t+="?".concat(c));let s=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw d(e),Error("Network response was not ok")}return await s.json()}catch(e){throw console.error("Failed to fetch audit logs:",e),e}}},20347:function(e,t,o){o.d(t,{LQ:function(){return n},ZL:function(){return r},lo:function(){return a},tY:function(){return c}});let r=["Admin","Admin Viewer","proxy_admin","proxy_admin_viewer","org_admin"],a=["Internal User","Internal Viewer"],n=["Internal User","Admin"],c=e=>r.includes(e)}}]); \ No newline at end of file +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[250],{19250:function(e,t,o){o.d(t,{$D:function(){return eI},$I:function(){return ee},$o:function(){return tv},AZ:function(){return Y},Au:function(){return eT},BL:function(){return eH},Br:function(){return x},E9:function(){return eY},EB:function(){return tl},EG:function(){return eQ},EY:function(){return e1},Eb:function(){return N},FC:function(){return ep},Gh:function(){return eJ},H1:function(){return A},H2:function(){return n},Hx:function(){return ej},I1:function(){return v},It:function(){return P},J$:function(){return es},JO:function(){return B},K8:function(){return p},K_:function(){return e0},Ko:function(){return tC},LY:function(){return eL},Lp:function(){return eU},MO:function(){return w},Mx:function(){return tu},N3:function(){return ex},N8:function(){return ea},NL:function(){return e8},NV:function(){return k},Nc:function(){return eG},O3:function(){return eZ},OD:function(){return eS},OU:function(){return eg},Of:function(){return b},Og:function(){return m},Ou:function(){return tg},Ov:function(){return S},PC:function(){return e5},PT:function(){return W},PY:function(){return tS},Pj:function(){return te},Pv:function(){return tf},Qg:function(){return eO},RQ:function(){return j},Rg:function(){return eo},Sb:function(){return eV},So:function(){return en},TF:function(){return tp},Tj:function(){return e2},U8:function(){return e7},UM:function(){return ts},VA:function(){return R},Vt:function(){return e$},W_:function(){return D},X:function(){return ei},XB:function(){return tw},XO:function(){return E},Xd:function(){return ev},Xm:function(){return O},YU:function(){return eq},Yi:function(){return t_},Yo:function(){return z},Z9:function(){return L},Zr:function(){return _},a6:function(){return G},aC:function(){return th},ao:function(){return eW},b1:function(){return eu},cq:function(){return U},cu:function(){return eA},e2:function(){return eE},eH:function(){return Q},eW:function(){return tE},eZ:function(){return eP},fE:function(){return ti},fP:function(){return er},fk:function(){return tj},g:function(){return e3},gX:function(){return eB},h3:function(){return eh},hT:function(){return eF},hy:function(){return y},ix:function(){return $},j2:function(){return el},jA:function(){return eK},jE:function(){return eD},jr:function(){return tk},kK:function(){return f},kn:function(){return K},lP:function(){return u},lU:function(){return to},lg:function(){return eN},mC:function(){return tc},mR:function(){return ec},mY:function(){return ta},m_:function(){return Z},mp:function(){return eX},n$:function(){return ek},n9:function(){return tn},nJ:function(){return tN},nd:function(){return e9},o6:function(){return et},oC:function(){return eb},ol:function(){return M},pf:function(){return eM},pu:function(){return ty},qI:function(){return T},qW:function(){return tm},qd:function(){return tT},qk:function(){return e6},qm:function(){return g},r1:function(){return td},r6:function(){return J},rs:function(){return F},s0:function(){return H},sN:function(){return eR},t$:function(){return I},t0:function(){return eC},t3:function(){return e4},tB:function(){return tr},tN:function(){return ew},u5:function(){return ed},v9:function(){return e_},vh:function(){return ez},wX:function(){return C},wd:function(){return ef},xA:function(){return em},xX:function(){return V},xZ:function(){return tt},zX:function(){return s},zg:function(){return ey}});var r=o(20347),a=o(41021);let n=null;console.log=function(){};let c=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=window.location.origin,r=t||o;console.log("proxyBaseUrl:",n),console.log("serverRootPath:",e),e.length>0&&!r.endsWith(e)&&"/"!=e&&(r+=e,n=r),console.log("Updated proxyBaseUrl:",n)},s=()=>n||window.location.origin,i={GET:"GET",DELETE:"DELETE"},l=0,d=async e=>{let t=Date.now();t-l>6e4?(e.includes("Authentication Error - Expired Key")&&(a.ZP.info("UI Session Expired. Logging out."),l=t,document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;",window.location.href=window.location.pathname),l=t):console.log("Error suppressed to prevent spam:",e)},h="Authorization";function p(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Authorization";console.log("setGlobalLitellmHeaderName: ".concat(e)),h=e}let w=async()=>{console.log("Getting UI config");let e=await fetch("/.well-known/litellm-ui-config"),t=await e.json();return console.log("jsonData in getUiConfig:",t),c(t.server_root_path,t.proxy_base_url),t},u=async()=>{let e=n?"".concat(n,"/openapi.json"):"/openapi.json",t=await fetch(e);return await t.json()},g=async e=>{try{let t=n?"".concat(n,"/get/litellm_model_cost_map"):"/get/litellm_model_cost_map",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}}),r=await o.json();return console.log("received litellm model cost data: ".concat(r)),r}catch(e){throw console.error("Failed to get model cost map:",e),e}},f=async(e,t)=>{try{let o=n?"".concat(n,"/model/new"):"/model/new",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text()||"Network response was not ok";throw a.ZP.error(e),Error(e)}let c=await r.json();return console.log("API Response:",c),a.ZP.destroy(),a.ZP.success("Model ".concat(t.model_name," created successfully"),2),c}catch(e){throw console.error("Failed to create key:",e),e}},y=async e=>{try{let t=n?"".concat(n,"/model/settings"):"/model/settings",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){console.error("Failed to get model settings:",e)}},m=async(e,t)=>{console.log("model_id in model delete call: ".concat(t));try{let o=n?"".concat(n,"/model/delete"):"/model/delete",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({id:t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},k=async(e,t)=>{if(console.log("budget_id in budget delete call: ".concat(t)),null!=e)try{let o=n?"".concat(n,"/budget/delete"):"/budget/delete",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({id:t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},_=async(e,t)=>{try{console.log("Form Values in budgetCreateCall:",t),console.log("Form Values after check:",t);let o=n?"".concat(n,"/budget/new"):"/budget/new",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},T=async(e,t)=>{try{console.log("Form Values in budgetUpdateCall:",t),console.log("Form Values after check:",t);let o=n?"".concat(n,"/budget/update"):"/budget/update",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},E=async(e,t)=>{try{let o=n?"".concat(n,"/invitation/new"):"/invitation/new",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},j=async e=>{try{let t=n?"".concat(n,"/alerting/settings"):"/alerting/settings",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},C=async(e,t,o)=>{try{if(console.log("Form Values in keyCreateCall:",o),o.description&&(o.metadata||(o.metadata={}),o.metadata.description=o.description,delete o.description,o.metadata=JSON.stringify(o.metadata)),o.metadata){console.log("formValues.metadata:",o.metadata);try{o.metadata=JSON.parse(o.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",o);let r=n?"".concat(n,"/key/generate"):"/key/generate",a=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...o})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error response from the server:",e),Error(e)}let c=await a.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},S=async(e,t,o)=>{try{if(console.log("Form Values in keyCreateCall:",o),o.description&&(o.metadata||(o.metadata={}),o.metadata.description=o.description,delete o.description,o.metadata=JSON.stringify(o.metadata)),o.auto_create_key=!1,o.metadata){console.log("formValues.metadata:",o.metadata);try{o.metadata=JSON.parse(o.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",o);let r=n?"".concat(n,"/user/new"):"/user/new",a=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...o})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error response from the server:",e),Error(e)}let c=await a.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},v=async(e,t)=>{try{let o=n?"".concat(n,"/key/delete"):"/key/delete";console.log("in keyDeleteCall:",t);let r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:[t]})});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},N=async(e,t)=>{try{let o=n?"".concat(n,"/user/delete"):"/user/delete";console.log("in userDeleteCall:",t);let r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_ids:t})});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log(a),a}catch(e){throw console.error("Failed to delete user(s):",e),e}},F=async(e,t)=>{try{let o=n?"".concat(n,"/team/delete"):"/team/delete";console.log("in teamDeleteCall:",t);let r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_ids:[t]})});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log(a),a}catch(e){throw console.error("Failed to delete key:",e),e}},b=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,c=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,i=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,p=arguments.length>9&&void 0!==arguments[9]?arguments[9]:null;try{let w=n?"".concat(n,"/user/list"):"/user/list";console.log("in userListCall");let u=new URLSearchParams;if(t&&t.length>0){let e=t.join(",");u.append("user_ids",e)}o&&u.append("page",o.toString()),r&&u.append("page_size",r.toString()),a&&u.append("user_email",a),c&&u.append("role",c),s&&u.append("team",s),i&&u.append("sso_user_ids",i),l&&u.append("sort_by",l),p&&u.append("sort_order",p);let g=u.toString();g&&(w+="?".concat(g));let f=await fetch(w,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!f.ok){let e=await f.text();throw d(e),Error("Network response was not ok")}let y=await f.json();return console.log("/user/list API Response:",y),y}catch(e){throw console.error("Failed to create key:",e),e}},x=async function(e,t,o){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4?arguments[4]:void 0,c=arguments.length>5?arguments[5]:void 0,s=arguments.length>6&&void 0!==arguments[6]&&arguments[6];console.log("userInfoCall: ".concat(t,", ").concat(o,", ").concat(r,", ").concat(a,", ").concat(c,", ").concat(s));try{let i;if(r){i=n?"".concat(n,"/user/list"):"/user/list";let e=new URLSearchParams;null!=a&&e.append("page",a.toString()),null!=c&&e.append("page_size",c.toString()),i+="?".concat(e.toString())}else i=n?"".concat(n,"/user/info"):"/user/info",("Admin"!==o&&"Admin Viewer"!==o||s)&&t&&(i+="?user_id=".concat(t));console.log("Requesting user data from:",i);let l=await fetch(i,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw d(e),Error("Network response was not ok")}let p=await l.json();return console.log("API Response:",p),p}catch(e){throw console.error("Failed to fetch user data:",e),e}},O=async(e,t)=>{try{let o=n?"".concat(n,"/team/info"):"/team/info";t&&(o="".concat(o,"?team_id=").concat(t)),console.log("in teamInfoCall");let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},B=async function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;arguments.length>5&&void 0!==arguments[5]&&arguments[5],arguments.length>6&&void 0!==arguments[6]&&arguments[6],arguments.length>7&&void 0!==arguments[7]&&arguments[7],arguments.length>8&&void 0!==arguments[8]&&arguments[8];try{let c=n?"".concat(n,"/v2/team/list"):"/v2/team/list";console.log("in teamInfoCall");let s=new URLSearchParams;o&&s.append("user_id",o.toString()),t&&s.append("organization_id",t.toString()),r&&s.append("team_id",r.toString()),a&&s.append("team_alias",a.toString());let i=s.toString();i&&(c+="?".concat(i));let l=await fetch(c,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw d(e),Error("Network response was not ok")}let p=await l.json();return console.log("/v2/team/list API Response:",p),p}catch(e){throw console.error("Failed to create key:",e),e}},P=async function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let c=n?"".concat(n,"/team/list"):"/team/list";console.log("in teamInfoCall");let s=new URLSearchParams;o&&s.append("user_id",o.toString()),t&&s.append("organization_id",t.toString()),r&&s.append("team_id",r.toString()),a&&s.append("team_alias",a.toString());let i=s.toString();i&&(c+="?".concat(i));let l=await fetch(c,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw d(e),Error("Network response was not ok")}let p=await l.json();return console.log("/team/list API Response:",p),p}catch(e){throw console.error("Failed to create key:",e),e}},G=async e=>{try{let t=n?"".concat(n,"/team/available"):"/team/available";console.log("in availableTeamListCall");let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log("/team/available_teams API Response:",r),r}catch(e){throw e}},J=async e=>{try{let t=n?"".concat(n,"/organization/list"):"/organization/list",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},I=async(e,t)=>{try{let o=n?"".concat(n,"/organization/info"):"/organization/info";t&&(o="".concat(o,"?organization_id=").concat(t)),console.log("in teamInfoCall");let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},A=async(e,t)=>{try{if(console.log("Form Values in organizationCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw console.error("Failed to parse metadata:",e),Error("Failed to parse metadata: "+e)}}let o=n?"".concat(n,"/organization/new"):"/organization/new",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},R=async(e,t)=>{try{console.log("Form Values in organizationUpdateCall:",t);let o=n?"".concat(n,"/organization/update"):"/organization/update",r=await fetch(o,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("Update Team Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},U=async(e,t)=>{try{let o=n?"".concat(n,"/organization/delete"):"/organization/delete",r=await fetch(o,{method:"DELETE",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_ids:[t]})});if(!r.ok){let e=await r.text();throw d(e),Error("Error deleting organization: ".concat(e))}return await r.json()}catch(e){throw console.error("Failed to delete organization:",e),e}},z=async(e,t)=>{try{let o=n?"".concat(n,"/utils/transform_request"):"/utils/transform_request",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}return await r.json()}catch(e){throw console.error("Failed to create key:",e),e}},V=async function(e,t,o){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;try{let a=n?"".concat(n,"/user/daily/activity"):"/user/daily/activity",c=new URLSearchParams;c.append("start_date",t.toISOString()),c.append("end_date",o.toISOString()),c.append("page_size","1000"),c.append("page",r.toString());let s=c.toString();s&&(a+="?".concat(s));let i=await fetch(a,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.text();throw d(e),Error("Network response was not ok")}return await i.json()}catch(e){throw console.error("Failed to create key:",e),e}},L=async function(e,t,o){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let c=n?"".concat(n,"/tag/daily/activity"):"/tag/daily/activity",s=new URLSearchParams;s.append("start_date",t.toISOString()),s.append("end_date",o.toISOString()),s.append("page_size","1000"),s.append("page",r.toString()),a&&s.append("tags",a.join(","));let i=s.toString();i&&(c+="?".concat(i));let l=await fetch(c,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw d(e),Error("Network response was not ok")}return await l.json()}catch(e){throw console.error("Failed to create key:",e),e}},M=async function(e,t,o){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let c=n?"".concat(n,"/team/daily/activity"):"/team/daily/activity",s=new URLSearchParams;s.append("start_date",t.toISOString()),s.append("end_date",o.toISOString()),s.append("page_size","1000"),s.append("page",r.toString()),a&&s.append("team_ids",a.join(",")),s.append("exclude_team_ids","litellm-dashboard");let i=s.toString();i&&(c+="?".concat(i));let l=await fetch(c,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw d(e),Error("Network response was not ok")}return await l.json()}catch(e){throw console.error("Failed to create key:",e),e}},D=async e=>{try{let t=n?"".concat(n,"/onboarding/get_token"):"/onboarding/get_token";t+="?invite_link=".concat(e);let o=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},Z=async(e,t,o,r)=>{let a=n?"".concat(n,"/onboarding/claim_token"):"/onboarding/claim_token";try{let n=await fetch(a,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({invitation_link:t,user_id:o,password:r})});if(!n.ok){let e=await n.text();throw d(e),Error("Network response was not ok")}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to delete key:",e),e}},H=async(e,t,o)=>{try{let r=n?"".concat(n,"/key/").concat(t,"/regenerate"):"/key/".concat(t,"/regenerate"),a=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!a.ok){let e=await a.text();throw d(e),Error("Network response was not ok")}let c=await a.json();return console.log("Regenerate key Response:",c),c}catch(e){throw console.error("Failed to regenerate key:",e),e}},q=!1,X=null,Y=async(e,t,o)=>{try{console.log("modelInfoCall:",e,t,o);let c=n?"".concat(n,"/v2/model/info"):"/v2/model/info";r.ZL.includes(o)||(c+="?user_models_only=true");let s=await fetch(c,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw e+="error shown=".concat(q),q||(e.includes("No model list passed")&&(e="No Models Exist. Click Add Model to get started."),a.ZP.info(e,10),q=!0,X&&clearTimeout(X),X=setTimeout(()=>{q=!1},1e4)),Error("Network response was not ok")}let i=await s.json();return console.log("modelInfoCall:",i),i}catch(e){throw console.error("Failed to create key:",e),e}},$=async(e,t)=>{try{let o=n?"".concat(n,"/v1/model/info"):"/v1/model/info";o+="?litellm_model_id=".concat(t);let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok)throw await r.text(),Error("Network response was not ok");let a=await r.json();return console.log("modelInfoV1Call:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},K=async e=>{try{let t=n?"".concat(n,"/model_group/info"):"/model_group/info",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok)throw await o.text(),Error("Network response was not ok");let r=await o.json();return console.log("modelHubCall:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},W=async e=>{try{let t=n?"".concat(n,"/get/allowed_ips"):"/get/allowed_ips",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw Error("Network response was not ok: ".concat(e))}let r=await o.json();return console.log("getAllowedIPs:",r),r.data}catch(e){throw console.error("Failed to get allowed IPs:",e),e}},Q=async(e,t)=>{try{let o=n?"".concat(n,"/add/allowed_ip"):"/add/allowed_ip",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({ip:t})});if(!r.ok){let e=await r.text();throw Error("Network response was not ok: ".concat(e))}let a=await r.json();return console.log("addAllowedIP:",a),a}catch(e){throw console.error("Failed to add allowed IP:",e),e}},ee=async(e,t)=>{try{let o=n?"".concat(n,"/delete/allowed_ip"):"/delete/allowed_ip",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({ip:t})});if(!r.ok){let e=await r.text();throw Error("Network response was not ok: ".concat(e))}let a=await r.json();return console.log("deleteAllowedIP:",a),a}catch(e){throw console.error("Failed to delete allowed IP:",e),e}},et=async(e,t,o,r,a,c,s,i)=>{try{let t=n?"".concat(n,"/model/metrics"):"/model/metrics";r&&(t="".concat(t,"?_selected_model_group=").concat(r,"&startTime=").concat(a,"&endTime=").concat(c,"&api_key=").concat(s,"&customer=").concat(i));let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},eo=async(e,t,o,r)=>{try{let a=n?"".concat(n,"/model/streaming_metrics"):"/model/streaming_metrics";t&&(a="".concat(a,"?_selected_model_group=").concat(t,"&startTime=").concat(o,"&endTime=").concat(r));let c=await fetch(a,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok){let e=await c.text();throw d(e),Error("Network response was not ok")}return await c.json()}catch(e){throw console.error("Failed to create key:",e),e}},er=async(e,t,o,r,a,c,s,i)=>{try{let t=n?"".concat(n,"/model/metrics/slow_responses"):"/model/metrics/slow_responses";r&&(t="".concat(t,"?_selected_model_group=").concat(r,"&startTime=").concat(a,"&endTime=").concat(c,"&api_key=").concat(s,"&customer=").concat(i));let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},ea=async(e,t,o,r,a,c,s,i)=>{try{let t=n?"".concat(n,"/model/metrics/exceptions"):"/model/metrics/exceptions";r&&(t="".concat(t,"?_selected_model_group=").concat(r,"&startTime=").concat(a,"&endTime=").concat(c,"&api_key=").concat(s,"&customer=").concat(i));let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},en=async function(e,t,o){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,c=arguments.length>5&&void 0!==arguments[5]&&arguments[5];console.log("in /models calls, globalLitellmHeaderName",h);try{let t=n?"".concat(n,"/models"):"/models",o=new URLSearchParams;!0===r&&o.append("return_wildcard_routes","True"),!0===c&&o.append("include_model_access_groups","True"),a&&o.append("team_id",a.toString()),o.toString()&&(t+="?".concat(o.toString()));let s=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw d(e),Error("Network response was not ok")}return await s.json()}catch(e){throw console.error("Failed to create key:",e),e}},ec=async e=>{try{let t=n?"".concat(n,"/global/spend/teams"):"/global/spend/teams";console.log("in teamSpendLogsCall:",t);let o=await fetch("".concat(t),{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},es=async(e,t,o,r)=>{try{let a=n?"".concat(n,"/global/spend/tags"):"/global/spend/tags";t&&o&&(a="".concat(a,"?start_date=").concat(t,"&end_date=").concat(o)),r&&(a+="".concat(a,"&tags=").concat(r.join(","))),console.log("in tagsSpendLogsCall:",a);let c=await fetch("".concat(a),{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok)throw await c.text(),Error("Network response was not ok");let s=await c.json();return console.log(s),s}catch(e){throw console.error("Failed to create key:",e),e}},ei=async e=>{try{let t=n?"".concat(n,"/global/spend/all_tag_names"):"/global/spend/all_tag_names";console.log("in global/spend/all_tag_names call",t);let o=await fetch("".concat(t),{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok)throw await o.text(),Error("Network response was not ok");let r=await o.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},el=async e=>{try{let t=n?"".concat(n,"/global/all_end_users"):"/global/all_end_users";console.log("in global/all_end_users call",t);let o=await fetch("".concat(t),{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok)throw await o.text(),Error("Network response was not ok");let r=await o.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},ed=async(e,t)=>{try{let o=n?"".concat(n,"/user/filter/ui"):"/user/filter/ui";t.get("user_email")&&(o+="?user_email=".concat(t.get("user_email"))),t.get("user_id")&&(o+="?user_id=".concat(t.get("user_id")));let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}return await r.json()}catch(e){throw console.error("Failed to create key:",e),e}},eh=async(e,t,o,r,a,c,s,i,l,p,w)=>{try{let u=n?"".concat(n,"/spend/logs/ui"):"/spend/logs/ui",g=new URLSearchParams;t&&g.append("api_key",t),o&&g.append("team_id",o),r&&g.append("request_id",r),a&&g.append("start_date",a),c&&g.append("end_date",c),s&&g.append("page",s.toString()),i&&g.append("page_size",i.toString()),l&&g.append("user_id",l),p&&g.append("status_filter",p),w&&g.append("model",w);let f=g.toString();f&&(u+="?".concat(f));let y=await fetch(u,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!y.ok){let e=await y.text();throw d(e),Error("Network response was not ok")}let m=await y.json();return console.log("Spend Logs Response:",m),m}catch(e){throw console.error("Failed to fetch spend logs:",e),e}},ep=async e=>{try{let t=n?"".concat(n,"/global/spend/logs"):"/global/spend/logs",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},ew=async e=>{try{let t=n?"".concat(n,"/global/spend/keys?limit=5"):"/global/spend/keys?limit=5",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},eu=async(e,t,o,r)=>{try{let a=n?"".concat(n,"/global/spend/end_users"):"/global/spend/end_users",c="";c=t?JSON.stringify({api_key:t,startTime:o,endTime:r}):JSON.stringify({startTime:o,endTime:r});let s={method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:c},i=await fetch(a,s);if(!i.ok){let e=await i.text();throw d(e),Error("Network response was not ok")}let l=await i.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},eg=async(e,t,o,r)=>{try{let a=n?"".concat(n,"/global/spend/provider"):"/global/spend/provider";o&&r&&(a+="?start_date=".concat(o,"&end_date=").concat(r)),t&&(a+="&api_key=".concat(t));let c={method:"GET",headers:{[h]:"Bearer ".concat(e)}},s=await fetch(a,c);if(!s.ok){let e=await s.text();throw d(e),Error("Network response was not ok")}let i=await s.json();return console.log(i),i}catch(e){throw console.error("Failed to fetch spend data:",e),e}},ef=async(e,t,o)=>{try{let r=n?"".concat(n,"/global/activity"):"/global/activity";t&&o&&(r+="?start_date=".concat(t,"&end_date=").concat(o));let a={method:"GET",headers:{[h]:"Bearer ".concat(e)}},c=await fetch(r,a);if(!c.ok)throw await c.text(),Error("Network response was not ok");let s=await c.json();return console.log(s),s}catch(e){throw console.error("Failed to fetch spend data:",e),e}},ey=async(e,t,o)=>{try{let r=n?"".concat(n,"/global/activity/cache_hits"):"/global/activity/cache_hits";t&&o&&(r+="?start_date=".concat(t,"&end_date=").concat(o));let a={method:"GET",headers:{[h]:"Bearer ".concat(e)}},c=await fetch(r,a);if(!c.ok)throw await c.text(),Error("Network response was not ok");let s=await c.json();return console.log(s),s}catch(e){throw console.error("Failed to fetch spend data:",e),e}},em=async(e,t,o)=>{try{let r=n?"".concat(n,"/global/activity/model"):"/global/activity/model";t&&o&&(r+="?start_date=".concat(t,"&end_date=").concat(o));let a={method:"GET",headers:{[h]:"Bearer ".concat(e)}},c=await fetch(r,a);if(!c.ok)throw await c.text(),Error("Network response was not ok");let s=await c.json();return console.log(s),s}catch(e){throw console.error("Failed to fetch spend data:",e),e}},ek=async(e,t,o,r)=>{try{let a=n?"".concat(n,"/global/activity/exceptions"):"/global/activity/exceptions";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o)),r&&(a+="&model_group=".concat(r));let c={method:"GET",headers:{[h]:"Bearer ".concat(e)}},s=await fetch(a,c);if(!s.ok)throw await s.text(),Error("Network response was not ok");let i=await s.json();return console.log(i),i}catch(e){throw console.error("Failed to fetch spend data:",e),e}},e_=async(e,t,o,r)=>{try{let a=n?"".concat(n,"/global/activity/exceptions/deployment"):"/global/activity/exceptions/deployment";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o)),r&&(a+="&model_group=".concat(r));let c={method:"GET",headers:{[h]:"Bearer ".concat(e)}},s=await fetch(a,c);if(!s.ok)throw await s.text(),Error("Network response was not ok");let i=await s.json();return console.log(i),i}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eT=async e=>{try{let t=n?"".concat(n,"/global/spend/models?limit=5"):"/global/spend/models?limit=5",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},eE=async(e,t)=>{try{let o=n?"".concat(n,"/v2/key/info"):"/v2/key/info",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:t})});if(!r.ok){let e=await r.text();if(e.includes("Invalid proxy server token passed"))throw Error("Invalid proxy server token passed");throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},ej=async(e,t,o)=>{try{console.log("Sending model connection test request:",JSON.stringify(t));let a=n?"".concat(n,"/health/test_connection"):"/health/test_connection",c=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",[h]:"Bearer ".concat(e)},body:JSON.stringify({litellm_params:t,mode:o})}),s=c.headers.get("content-type");if(!s||!s.includes("application/json")){let e=await c.text();throw console.error("Received non-JSON response:",e),Error("Received non-JSON response (".concat(c.status,": ").concat(c.statusText,"). Check network tab for details."))}let i=await c.json();if(!c.ok||"error"===i.status){if("error"===i.status);else{var r;return{status:"error",message:(null===(r=i.error)||void 0===r?void 0:r.message)||"Connection test failed: ".concat(c.status," ").concat(c.statusText)}}}return i}catch(e){throw console.error("Model connection test error:",e),e}},eC=async(e,t)=>{try{console.log("entering keyInfoV1Call");let o=n?"".concat(n,"/key/info"):"/key/info";o="".concat(o,"?key=").concat(t);let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(console.log("response",r),!r.ok){let e=await r.text();d(e),a.ZP.error("Failed to fetch key info - "+e)}let c=await r.json();return console.log("data",c),c}catch(e){throw console.error("Failed to fetch key info:",e),e}},eS=async function(e,t,o,r,a,c,s,i){let l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,p=arguments.length>9&&void 0!==arguments[9]?arguments[9]:null;try{let w=n?"".concat(n,"/key/list"):"/key/list";console.log("in keyListCall");let u=new URLSearchParams;o&&u.append("team_id",o.toString()),t&&u.append("organization_id",t.toString()),r&&u.append("key_alias",r),c&&u.append("key_hash",c),a&&u.append("user_id",a.toString()),s&&u.append("page",s.toString()),i&&u.append("size",i.toString()),l&&u.append("sort_by",l),p&&u.append("sort_order",p),u.append("return_full_object","true"),u.append("include_team_keys","true");let g=u.toString();g&&(w+="?".concat(g));let f=await fetch(w,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!f.ok){let e=await f.text();throw d(e),Error("Network response was not ok")}let y=await f.json();return console.log("/team/list API Response:",y),y}catch(e){throw console.error("Failed to create key:",e),e}},ev=async(e,t)=>{try{let o=n?"".concat(n,"/user/get_users?role=").concat(t):"/user/get_users?role=".concat(t);console.log("in userGetAllUsersCall:",o);let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log(a),a}catch(e){throw console.error("Failed to get requested models:",e),e}},eN=async e=>{try{let t=n?"".concat(n,"/user/available_roles"):"/user/available_roles",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok)throw await o.text(),Error("Network response was not ok");let r=await o.json();return console.log("response from user/available_role",r),r}catch(e){throw e}},eF=async(e,t)=>{try{if(console.log("Form Values in teamCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let o=n?"".concat(n,"/team/new"):"/team/new",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},eb=async(e,t)=>{try{if(console.log("Form Values in credentialCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let o=n?"".concat(n,"/credentials"):"/credentials",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},ex=async e=>{try{let t=n?"".concat(n,"/credentials"):"/credentials";console.log("in credentialListCall");let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log("/credentials API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},eO=async(e,t,o)=>{try{let r=n?"".concat(n,"/credentials"):"/credentials";t?r+="/by_name/".concat(t):o&&(r+="/by_model/".concat(o)),console.log("in credentialListCall");let a=await fetch(r,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw d(e),Error("Network response was not ok")}let c=await a.json();return console.log("/credentials API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},eB=async(e,t)=>{try{let o=n?"".concat(n,"/credentials/").concat(t):"/credentials/".concat(t);console.log("in credentialDeleteCall:",t);let r=await fetch(o,{method:"DELETE",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log(a),a}catch(e){throw console.error("Failed to delete key:",e),e}},eP=async(e,t,o)=>{try{if(console.log("Form Values in credentialUpdateCall:",o),o.metadata){console.log("formValues.metadata:",o.metadata);try{o.metadata=JSON.parse(o.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let r=n?"".concat(n,"/credentials/").concat(t):"/credentials/".concat(t),a=await fetch(r,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...o})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let c=await a.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},eG=async(e,t)=>{try{if(console.log("Form Values in keyUpdateCall:",t),t.model_tpm_limit){console.log("formValues.model_tpm_limit:",t.model_tpm_limit);try{t.model_tpm_limit=JSON.parse(t.model_tpm_limit)}catch(e){throw Error("Failed to parse model_tpm_limit: "+e)}}if(t.model_rpm_limit){console.log("formValues.model_rpm_limit:",t.model_rpm_limit);try{t.model_rpm_limit=JSON.parse(t.model_rpm_limit)}catch(e){throw Error("Failed to parse model_rpm_limit: "+e)}}let o=n?"".concat(n,"/key/update"):"/key/update",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("Update key Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},eJ=async(e,t)=>{try{console.log("Form Values in teamUpateCall:",t);let o=n?"".concat(n,"/team/update"):"/team/update",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),a.ZP.error("Failed to update team settings: "+e),Error(e)}let c=await r.json();return console.log("Update Team Response:",c),c}catch(e){throw console.error("Failed to update team:",e),e}},eI=async(e,t,o)=>{try{console.log("Form Values in modelUpateCall:",t);let r=n?"".concat(n,"/model/").concat(o,"/update"):"/model/".concat(o,"/update"),a=await fetch(r,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error update from the server:",e),Error("Network response was not ok")}let c=await a.json();return console.log("Update model Response:",c),c}catch(e){throw console.error("Failed to update model:",e),e}},eA=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let a=n?"".concat(n,"/team/member_add"):"/team/member_add",c=await fetch(a,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,member:o})});if(!c.ok){var r;let e=await c.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(r=t.detail)||void 0===r?void 0:r.error)||"Failed to add team member",a=Error(o);throw a.raw=t,a}let s=await c.json();return console.log("API Response:",s),s}catch(e){throw console.error("Failed to create key:",e),e}},eR=async(e,t,o)=>{try{console.log("Form Values in teamMemberUpdateCall:",o);let a=n?"".concat(n,"/team/member_update"):"/team/member_update",c=await fetch(a,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,role:o.role,user_id:o.user_id})});if(!c.ok){var r;let e=await c.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(r=t.detail)||void 0===r?void 0:r.error)||"Failed to add team member",a=Error(o);throw a.raw=t,a}let s=await c.json();return console.log("API Response:",s),s}catch(e){throw console.error("Failed to update team member:",e),e}},eU=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let r=n?"".concat(n,"/team/member_delete"):"/team/member_delete",a=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,...void 0!==o.user_email&&{user_email:o.user_email},...void 0!==o.user_id&&{user_id:o.user_id}})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let c=await a.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},ez=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let r=n?"".concat(n,"/organization/member_add"):"/organization/member_add",a=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,member:o})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error response from the server:",e),Error(e)}let c=await a.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create organization member:",e),e}},eV=async(e,t,o)=>{try{console.log("Form Values in organizationMemberDeleteCall:",o);let r=n?"".concat(n,"/organization/member_delete"):"/organization/member_delete",a=await fetch(r,{method:"DELETE",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,user_id:o})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let c=await a.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to delete organization member:",e),e}},eL=async(e,t,o)=>{try{console.log("Form Values in organizationMemberUpdateCall:",o);let r=n?"".concat(n,"/organization/member_update"):"/organization/member_update",a=await fetch(r,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,...o})});if(!a.ok){let e=await a.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let c=await a.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to update organization member:",e),e}},eM=async(e,t,o)=>{try{console.log("Form Values in userUpdateUserCall:",t);let r=n?"".concat(n,"/user/update"):"/user/update",a={...t};null!==o&&(a.user_role=o),a=JSON.stringify(a);let c=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:a});if(!c.ok){let e=await c.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let s=await c.json();return console.log("API Response:",s),s}catch(e){throw console.error("Failed to create key:",e),e}},eD=async(e,t)=>{try{let o=n?"".concat(n,"/health/services?service=").concat(t):"/health/services?service=".concat(t);console.log("Checking Slack Budget Alerts service health");let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error(e)}let c=await r.json();return a.ZP.success("Test request to ".concat(t," made - check logs/alerts on ").concat(t," to verify")),c}catch(e){throw console.error("Failed to perform health check:",e),e}},eZ=async e=>{try{let t=n?"".concat(n,"/budget/list"):"/budget/list",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},eH=async(e,t,o)=>{try{let t=n?"".concat(n,"/get/config/callbacks"):"/get/config/callbacks",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},eq=async e=>{try{let t=n?"".concat(n,"/config/list?config_type=general_settings"):"/config/list?config_type=general_settings",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},eX=async e=>{try{let t=n?"".concat(n,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},eY=async(e,t)=>{try{let o=n?"".concat(n,"/config/field/info?field_name=").concat(t):"/config/field/info?field_name=".concat(t),r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok)throw await r.text(),Error("Network response was not ok");return await r.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},e$=async(e,t)=>{try{let o=n?"".concat(n,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}return await r.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},eK=async(e,t,o)=>{try{let r=n?"".concat(n,"/config/field/update"):"/config/field/update",c=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,field_value:o,config_type:"general_settings"})});if(!c.ok){let e=await c.text();throw d(e),Error("Network response was not ok")}let s=await c.json();return a.ZP.success("Successfully updated value!"),s}catch(e){throw console.error("Failed to set callbacks:",e),e}},eW=async(e,t)=>{try{let o=n?"".concat(n,"/config/field/delete"):"/config/field/delete",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,config_type:"general_settings"})});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let c=await r.json();return a.ZP.success("Field reset on proxy"),c}catch(e){throw console.error("Failed to get callbacks:",e),e}},eQ=async(e,t)=>{try{let o=n?"".concat(n,"/config/pass_through_endpoint?endpoint_id=").concat(t):"/config/pass_through_endpoint".concat(t),r=await fetch(o,{method:"DELETE",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}return await r.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},e0=async(e,t)=>{try{let o=n?"".concat(n,"/config/update"):"/config/update",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}return await r.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},e1=async e=>{try{let t=n?"".concat(n,"/health"):"/health",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to call /health:",e),e}},e2=async e=>{try{let t=n?"".concat(n,"/cache/ping"):"/cache/ping",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error(e)}return await o.json()}catch(e){throw console.error("Failed to call /cache/ping:",e),e}},e3=async e=>{try{console.log("Getting proxy UI settings"),console.log("proxyBaseUrl in getProxyUISettings:",n);let t=n?"".concat(n,"/sso/get/ui_settings"):"/sso/get/ui_settings",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok)throw await o.text(),Error("Network response was not ok");return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},e4=async e=>{try{let t=n?"".concat(n,"/v2/guardrails/list"):"/v2/guardrails/list",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to get guardrails list:",e),e}},e5=async(e,t)=>{try{let o=n?"".concat(n,"/guardrails"):"/guardrails",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({guardrail:t})});if(!r.ok){let e=await r.text();throw d(e),Error(e)}let a=await r.json();return console.log("Create guardrail response:",a),a}catch(e){throw console.error("Failed to create guardrail:",e),e}},e6=async(e,t,o)=>{try{let r=n?"".concat(n,"/spend/logs/ui/").concat(t,"?start_date=").concat(encodeURIComponent(o)):"/spend/logs/ui/".concat(t,"?start_date=").concat(encodeURIComponent(o));console.log("Fetching log details from:",r);let a=await fetch(r,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw d(e),Error("Network response was not ok")}let c=await a.json();return console.log("Fetched log details:",c),c}catch(e){throw console.error("Failed to fetch log details:",e),e}},e8=async e=>{try{let t=n?"".concat(n,"/get/internal_user_settings"):"/get/internal_user_settings";console.log("Fetching SSO settings from:",t);let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log("Fetched SSO settings:",r),r}catch(e){throw console.error("Failed to fetch SSO settings:",e),e}},e9=async(e,t)=>{try{let o=n?"".concat(n,"/update/internal_user_settings"):"/update/internal_user_settings";console.log("Updating internal user settings:",t);let r=await fetch(o,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let c=await r.json();return console.log("Updated internal user settings:",c),a.ZP.success("Internal user settings updated successfully"),c}catch(e){throw console.error("Failed to update internal user settings:",e),e}},e7=async e=>{try{let t=n?"".concat(n,"/v1/mcp/server"):"/v1/mcp/server";console.log("Fetching MCP servers from:",t);let o=await fetch(t,{method:i.GET,headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log("Fetched MCP servers:",r),r}catch(e){throw console.error("Failed to fetch MCP servers:",e),e}},te=async(e,t)=>{try{console.log("Form Values in createMCPServer:",t);let o=n?"".concat(n,"/v1/mcp/server"):"/v1/mcp/server",r=await fetch(o,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw d(e),console.error("Error response from the server:",e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},tt=async(e,t)=>{try{let o=(n?"".concat(n):"")+"/v1/mcp/server/".concat(t);console.log("in deleteMCPServer:",t);let r=await fetch(o,{method:i.DELETE,headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}}catch(e){throw console.error("Failed to delete key:",e),e}},to=async(e,t)=>{try{let o=n?"".concat(n,"/mcp/tools/list?server_id=").concat(t):"/mcp/tools/list?server_id=".concat(t);console.log("Fetching MCP tools from:",o);let r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log("Fetched MCP tools:",a),a}catch(e){throw console.error("Failed to fetch MCP tools:",e),e}},tr=async(e,t,o)=>{try{let r=n?"".concat(n,"/mcp/tools/call"):"/mcp/tools/call";console.log("Calling MCP tool:",t,"with arguments:",o);let a=await fetch(r,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({name:t,arguments:o})});if(!a.ok){let e=await a.text();throw d(e),Error("Network response was not ok")}let c=await a.json();return console.log("MCP tool call response:",c),c}catch(e){throw console.error("Failed to call MCP tool:",e),e}},ta=async(e,t)=>{try{let o=n?"".concat(n,"/tag/new"):"/tag/new",r=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!r.ok){let e=await r.text();await d(e);return}return await r.json()}catch(e){throw console.error("Error creating tag:",e),e}},tn=async(e,t)=>{try{let o=n?"".concat(n,"/tag/update"):"/tag/update",r=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!r.ok){let e=await r.text();await d(e);return}return await r.json()}catch(e){throw console.error("Error updating tag:",e),e}},tc=async(e,t)=>{try{let o=n?"".concat(n,"/tag/info"):"/tag/info",r=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({names:t})});if(!r.ok){let e=await r.text();return await d(e),{}}return await r.json()}catch(e){throw console.error("Error getting tag info:",e),e}},ts=async e=>{try{let t=n?"".concat(n,"/tag/list"):"/tag/list",o=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e)}});if(!o.ok){let e=await o.text();return await d(e),{}}return await o.json()}catch(e){throw console.error("Error listing tags:",e),e}},ti=async(e,t)=>{try{let o=n?"".concat(n,"/tag/delete"):"/tag/delete",r=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({name:t})});if(!r.ok){let e=await r.text();await d(e);return}return await r.json()}catch(e){throw console.error("Error deleting tag:",e),e}},tl=async e=>{try{let t=n?"".concat(n,"/get/default_team_settings"):"/get/default_team_settings";console.log("Fetching default team settings from:",t);let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log("Fetched default team settings:",r),r}catch(e){throw console.error("Failed to fetch default team settings:",e),e}},td=async(e,t)=>{try{let o=n?"".concat(n,"/update/default_team_settings"):"/update/default_team_settings";console.log("Updating default team settings:",t);let r=await fetch(o,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let c=await r.json();return console.log("Updated default team settings:",c),a.ZP.success("Default team settings updated successfully"),c}catch(e){throw console.error("Failed to update default team settings:",e),e}},th=async(e,t)=>{try{let o=n?"".concat(n,"/team/permissions_list?team_id=").concat(t):"/team/permissions_list?team_id=".concat(t),r=await fetch(o,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log("Team permissions response:",a),a}catch(e){throw console.error("Failed to get team permissions:",e),e}},tp=async(e,t,o)=>{try{let r=n?"".concat(n,"/team/permissions_update"):"/team/permissions_update",a=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({team_id:t,team_member_permissions:o})});if(!a.ok){let e=await a.text();throw d(e),Error("Network response was not ok")}let c=await a.json();return console.log("Team permissions response:",c),c}catch(e){throw console.error("Failed to update team permissions:",e),e}},tw=async(e,t)=>{try{let o=n?"".concat(n,"/spend/logs/session/ui?session_id=").concat(encodeURIComponent(t)):"/spend/logs/session/ui?session_id=".concat(encodeURIComponent(t)),r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}return await r.json()}catch(e){throw console.error("Failed to fetch session logs:",e),e}},tu=async(e,t)=>{try{let o=n?"".concat(n,"/vector_store/new"):"/vector_store/new",r=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!r.ok){let e=await r.json();throw Error(e.detail||"Failed to create vector store")}return await r.json()}catch(e){throw console.error("Error creating vector store:",e),e}},tg=async function(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1],arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let t=n?"".concat(n,"/vector_store/list"):"/vector_store/list",o=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}});if(!o.ok){let e=await o.json();throw Error(e.detail||"Failed to list vector stores")}return await o.json()}catch(e){throw console.error("Error listing vector stores:",e),e}},tf=async(e,t)=>{try{let o=n?"".concat(n,"/vector_store/delete"):"/vector_store/delete",r=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({vector_store_id:t})});if(!r.ok){let e=await r.json();throw Error(e.detail||"Failed to delete vector store")}return await r.json()}catch(e){throw console.error("Error deleting vector store:",e),e}},ty=async e=>{try{let t=n?"".concat(n,"/email/event_settings"):"/email/event_settings",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Failed to get email event settings")}let r=await o.json();return console.log("Email event settings response:",r),r}catch(e){throw console.error("Failed to get email event settings:",e),e}},tm=async(e,t)=>{try{let o=n?"".concat(n,"/email/event_settings"):"/email/event_settings",r=await fetch(o,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=await r.text();throw d(e),Error("Failed to update email event settings")}let a=await r.json();return console.log("Update email event settings response:",a),a}catch(e){throw console.error("Failed to update email event settings:",e),e}},tk=async e=>{try{let t=n?"".concat(n,"/email/event_settings/reset"):"/email/event_settings/reset",o=await fetch(t,{method:"POST",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Failed to reset email event settings")}let r=await o.json();return console.log("Reset email event settings response:",r),r}catch(e){throw console.error("Failed to reset email event settings:",e),e}},t_=async(e,t)=>{try{let o=n?"".concat(n,"/guardrails/").concat(t):"/guardrails/".concat(t),r=await fetch(o,{method:"DELETE",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error(e)}let a=await r.json();return console.log("Delete guardrail response:",a),a}catch(e){throw console.error("Failed to delete guardrail:",e),e}},tT=async e=>{try{let t=n?"".concat(n,"/guardrails/ui/add_guardrail_settings"):"/guardrails/ui/add_guardrail_settings",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Failed to get guardrail UI settings")}let r=await o.json();return console.log("Guardrail UI settings response:",r),r}catch(e){throw console.error("Failed to get guardrail UI settings:",e),e}},tE=async e=>{try{let t=n?"".concat(n,"/guardrails/ui/provider_specific_params"):"/guardrails/ui/provider_specific_params",o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Failed to get guardrail provider specific parameters")}let r=await o.json();return console.log("Guardrail provider specific params response:",r),r}catch(e){throw console.error("Failed to get guardrail provider specific parameters:",e),e}},tj=async(e,t)=>{try{let o=n?"".concat(n,"/guardrails/").concat(t,"/info"):"/guardrails/".concat(t,"/info"),r=await fetch(o,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw d(e),Error("Failed to get guardrail info")}let a=await r.json();return console.log("Guardrail info response:",a),a}catch(e){throw console.error("Failed to get guardrail info:",e),e}},tC=async(e,t,o)=>{try{let r=n?"".concat(n,"/guardrails/").concat(t):"/guardrails/".concat(t),a=await fetch(r,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!a.ok){let e=await a.text();throw d(e),Error("Failed to update guardrail")}let c=await a.json();return console.log("Update guardrail response:",c),c}catch(e){throw console.error("Failed to update guardrail:",e),e}},tS=async e=>{try{let t=n?"".concat(n,"/get/sso_settings"):"/get/sso_settings";console.log("Fetching SSO configuration from:",t);let o=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw d(e),Error("Network response was not ok")}let r=await o.json();return console.log("Fetched SSO configuration:",r),r}catch(e){throw console.error("Failed to fetch SSO configuration:",e),e}},tv=async(e,t)=>{try{let o=n?"".concat(n,"/update/sso_settings"):"/update/sso_settings";console.log("Updating SSO configuration:",t);let r=await fetch(o,{method:"PATCH",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=await r.text();throw d(e),Error("Network response was not ok")}let a=await r.json();return console.log("Updated SSO configuration:",a),a}catch(e){throw console.error("Failed to update SSO configuration:",e),e}},tN=async(e,t,o,r,a)=>{try{let t=n?"".concat(n,"/audit"):"/audit",o=new URLSearchParams;r&&o.append("page",r.toString()),a&&o.append("page_size",a.toString());let c=o.toString();c&&(t+="?".concat(c));let s=await fetch(t,{method:"GET",headers:{[h]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw d(e),Error("Network response was not ok")}return await s.json()}catch(e){throw console.error("Failed to fetch audit logs:",e),e}}},20347:function(e,t,o){o.d(t,{LQ:function(){return n},ZL:function(){return r},lo:function(){return a},tY:function(){return c}});let r=["Admin","Admin Viewer","proxy_admin","proxy_admin_viewer","org_admin"],a=["Internal User","Internal Viewer"],n=["Internal User","Admin"],c=e=>r.includes(e)}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/webpack-a426aae3231a8df1.js b/litellm/proxy/_experimental/out/_next/static/chunks/webpack-a426aae3231a8df1.js index c82df116cd8..21702908136 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/webpack-a426aae3231a8df1.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/webpack-a426aae3231a8df1.js @@ -1 +1 @@ -!function(){"use strict";var e,t,n,r,o,u,i,c,f,a={},l={};function d(e){var t=l[e];if(void 0!==t)return t.exports;var n=l[e]={id:e,loaded:!1,exports:{}},r=!0;try{a[e].call(n.exports,n,n.exports,d),r=!1}finally{r&&delete l[e]}return n.loaded=!0,n.exports}d.m=a,e=[],d.O=function(t,n,r,o){if(n){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o];return}for(var i=1/0,u=0;u=o&&Object.keys(d.O).every(function(e){return d.O[e](n[f])})?n.splice(f--,1):(c=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o];return}for(var i=1/0,u=0;u=o&&Object.keys(d.O).every(function(e){return d.O[e](n[f])})?n.splice(f--,1):(c=!1,o - - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/litellm/proxy/_experimental/out/assets/logos/cerebras.svg b/litellm/proxy/_experimental/out/assets/logos/cerebras.svg index 426f6430c23..1ff347220c5 100644 --- a/litellm/proxy/_experimental/out/assets/logos/cerebras.svg +++ b/litellm/proxy/_experimental/out/assets/logos/cerebras.svg @@ -1,89 +1,89 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/litellm/proxy/_experimental/out/assets/logos/deepseek.svg b/litellm/proxy/_experimental/out/assets/logos/deepseek.svg index c4754047da2..61760f13190 100644 --- a/litellm/proxy/_experimental/out/assets/logos/deepseek.svg +++ b/litellm/proxy/_experimental/out/assets/logos/deepseek.svg @@ -1,25 +1,25 @@ - - - - - - + + + + + + diff --git a/litellm/proxy/_experimental/out/assets/logos/perplexity-ai.svg b/litellm/proxy/_experimental/out/assets/logos/perplexity-ai.svg index e828b6dfbf1..e3a32be9809 100644 --- a/litellm/proxy/_experimental/out/assets/logos/perplexity-ai.svg +++ b/litellm/proxy/_experimental/out/assets/logos/perplexity-ai.svg @@ -1,16 +1,16 @@ - - - - - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/index.html b/litellm/proxy/_experimental/out/index.html index 7fd5aa0041f..598ea63bb1c 100644 --- a/litellm/proxy/_experimental/out/index.html +++ b/litellm/proxy/_experimental/out/index.html @@ -1 +1 @@ -LiteLLM Dashboard \ No newline at end of file +LiteLLM Dashboard \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/index.txt b/litellm/proxy/_experimental/out/index.txt index 46ee4e2ee6f..da39505c51d 100644 --- a/litellm/proxy/_experimental/out/index.txt +++ b/litellm/proxy/_experimental/out/index.txt @@ -2,6 +2,6 @@ 3:I[32642,["665","static/chunks/3014691f-b7b79b78e27792f3.js","990","static/chunks/13b76428-ebdf3012af0e4489.js","402","static/chunks/402-cba8184a1bf36c3c.js","313","static/chunks/313-bba577664545e320.js","899","static/chunks/899-768e8bb08fd1e694.js","660","static/chunks/660-f312005e599e275d.js","250","static/chunks/250-000144669044689e.js","699","static/chunks/699-9d4e264a9d0a1a44.js","931","static/chunks/app/page-79b1176fcf45d5dd.js"],"default",1] 4:I[4707,[],""] 5:I[36423,[],""] -0:["eaU5IaICPaosw6LmDs7nW",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/31b7f215e119031e.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/42ae04859829a544.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_b0dd8a","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +0:["eaU5IaICPaosw6LmDs7nW",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/31b7f215e119031e.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/42ae04859829a544.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_b0dd8a","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"LiteLLM Dashboard"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","meta","5",{"name":"next-size-adjust"}]] 1:null diff --git a/litellm/proxy/_experimental/out/model_hub.txt b/litellm/proxy/_experimental/out/model_hub.txt index 316ac38d82a..d17c5959001 100644 --- a/litellm/proxy/_experimental/out/model_hub.txt +++ b/litellm/proxy/_experimental/out/model_hub.txt @@ -2,6 +2,6 @@ 3:I[52829,["402","static/chunks/402-cba8184a1bf36c3c.js","313","static/chunks/313-bba577664545e320.js","250","static/chunks/250-000144669044689e.js","699","static/chunks/699-9d4e264a9d0a1a44.js","418","static/chunks/app/model_hub/page-ce40c5a05f3174ca.js"],"default",1] 4:I[4707,[],""] 5:I[36423,[],""] -0:["eaU5IaICPaosw6LmDs7nW",[[["",{"children":["model_hub",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["model_hub",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","model_hub","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/31b7f215e119031e.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/42ae04859829a544.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_b0dd8a","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +0:["eaU5IaICPaosw6LmDs7nW",[[["",{"children":["model_hub",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["model_hub",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","model_hub","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/31b7f215e119031e.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/42ae04859829a544.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_b0dd8a","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"LiteLLM Dashboard"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","meta","5",{"name":"next-size-adjust"}]] 1:null diff --git a/litellm/proxy/_experimental/out/onboarding.html b/litellm/proxy/_experimental/out/onboarding.html deleted file mode 100644 index 250ab9eefed..00000000000 --- a/litellm/proxy/_experimental/out/onboarding.html +++ /dev/null @@ -1 +0,0 @@ -LiteLLM Dashboard \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/onboarding.txt b/litellm/proxy/_experimental/out/onboarding.txt index 57d971fa639..05c7ad9c422 100644 --- a/litellm/proxy/_experimental/out/onboarding.txt +++ b/litellm/proxy/_experimental/out/onboarding.txt @@ -2,6 +2,6 @@ 3:I[12011,["665","static/chunks/3014691f-b7b79b78e27792f3.js","402","static/chunks/402-cba8184a1bf36c3c.js","899","static/chunks/899-768e8bb08fd1e694.js","250","static/chunks/250-000144669044689e.js","461","static/chunks/app/onboarding/page-542d6edb14f192f7.js"],"default",1] 4:I[4707,[],""] 5:I[36423,[],""] -0:["eaU5IaICPaosw6LmDs7nW",[[["",{"children":["onboarding",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["onboarding",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","onboarding","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/31b7f215e119031e.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/42ae04859829a544.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_b0dd8a","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +0:["eaU5IaICPaosw6LmDs7nW",[[["",{"children":["onboarding",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["onboarding",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","onboarding","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/31b7f215e119031e.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/42ae04859829a544.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_b0dd8a","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"LiteLLM Dashboard"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","meta","5",{"name":"next-size-adjust"}]] 1:null