PageSourceSearch

https://app.deployit.ai/_nuxt/DI1ExAgl.js

js deployit.ai collected 2026-10-05 14:27:11 UTC 16,450 bytes, 1 lines download raw bytes

1import{c as Te,b as Ue,_ as Me,a as De}from"./D3mG2o8r.js";import{_ as Se}from"./D_ti0uK4.js";import{e as Ae,u as Oe,r as c,B as oe,j as Be,c as f,a as r,b as e,k,t as o,g as t,w as l,d as i,F as de,v as ne,o as u,I as Ee,A as $,m as Ne}from"./Bpz7BnuH.js";import{_ as He}from"./HcW1oq9P.js";import{_ as Ie}from"./h6VjYQVz.js";import{_ as Le,a as je,b as ze,c as Fe,d as Ke}from"./CNfvY-2Q.js";import{_ as qe}from"./BcwbFT1t.js";import{_ as Re}from"./CQexgLcB.js";import{_ as Ze}from"./Cr9Vyl6H.js";import{_ as Ge,a as Je,b as Qe,c as We,d as Xe,e as Ye}from"./B_1LvKrA.js";import{_ as el,a as ll,b as tl}from"./DfZplHCy.js";import{_ as al}from"./BC0qCCp2.js";import{_ as sl}from"./lOSuURtn.js";import{_ as ol}from"./Bafk9M0f.js";import{S as dl}from"./BE4ubfBl.js";import{C as nl}from"./Ch1QhRPQ.js";import{C as il}from"./CtbpQ7oP.js";import{P as ie}from"./BMMo8kZn.js";import{L as J}from"./CaMmAF3a.js";import{Z as rl}from"./CSjuTK_a.js";import{C as re}from"./C5_AAGja.js";import{P as ul}from"./B1THzbyw.js";import{T as ue}from"./BQLBUNS8.js";import"./CXt04so1.js";import"./DYSGl3Su.js";import"./emKi8zsf.js";import"./DYXp-PYY.js";import"./qA7ig-Vm.js";import"./Wab520HX.js";import"./DrtEIZi1.js";import"./RP08i5GS.js";import"./CHIgUVhi.js";import"./CI06am3Y.js";import"./BSusWr4R.js";import"./C4kx_3Ub.js";const ml={class:"container mx-auto p-6 max-w-5xl"},_l={class:"mb-8"},cl={class:"text-3xl font-bold mb-2"},fl={class:"text-muted-foreground max-w-3xl"},pl={class:"text-sm text-muted-foreground space-y-1"},vl={key:0,class:"mb-6 border border-green-500/20 bg-green-500/10 text-green-700 dark:text-green-300 p-3 rounded-lg flex items-center text-sm"},bl={key:1,class:"mb-6 border border-red-500/20 bg-red-500/10 text-red-700 dark:text-red-300 p-3 rounded-lg flex items-center text-sm"},yl={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},gl={class:"space-y-2"},xl={class:"space-y-2"},Pl={key:0,class:"space-y-2"},hl={class:"text-xs text-muted-foreground"},kl={class:"space-y-2"},$l={class:"text-xs text-muted-foreground"},wl={class:"flex items-center gap-3"},Vl={key:2,class:"text-center py-12 text-muted-foreground"},Cl={key:3,class:"text-center py-12 text-muted-foreground"},Tl={class:"flex items-start justify-between gap-4 flex-wrap"},Ul={key:0,class:"font-mono text-xs break-all"},Ml={key:1},Dl={class:"flex items-center gap-2"},Sl={class:"flex items-center justify-between mb-3"},Al={class:"text-sm font-semibold"},Ol={key:0,class:"text-sm text-muted-foreground italic"},Bl={key:0,class:"space-y-4"},El={class:"space-y-2"},Nl={key:0,class:"space-y-2"},Hl={class:"space-y-2"},Il={class:"text-xs text-muted-foreground"},Ll={class:"space-y-4"},jl={class:"space-y-2"},zl={class:"space-y-2"},Fl={class:"text-xs text-muted-foreground"},Kl={class:"grid grid-cols-2 gap-4"},ql={class:"space-y-2"},Rl={class:"text-xs text-muted-foreground"},Zl={class:"space-y-2"},Gl={class:"flex items-center gap-2"},Dt=Ae({__name:"llm",setup(Jl){const{t:a}=Oe(),I=c([]),L=c(!0),B=c(!1),E=c(!1),C=c(""),g=c(""),P=c(null),m=oe({label:"",type:"openai",base_url:"",api_key:""});function N(d,s){d(s),setTimeout(()=>d(""),4e3)}function me(d){return d==="openai"?"OpenAI":d==="anthropic"?"Anthropic":a("llmProviders.fields.typeCustom")}function _e(d){return new Intl.NumberFormat().format(d)}async function w(){L.value=!0;try{const d=await $fetch("/api/llm-providers");I.value=d.data||[]}catch(d){g.value=d?.data?.statusMessage||d.message||a("llmProviders.errors.load")}finally{L.value=!1}}async function ce(){B.value=!0,g.value="";try{await $fetch("/api/llm-providers",{method:"POST",body:{...m}}),Object.assign(m,{label:"",type:"openai",base_url:"",api_key:""}),P.value=null,N(d=>C.value=d,a("llmProviders.messages.created")),await w()}catch(d){g.value=d?.data?.statusMessage||d.message||a("llmProviders.errors.create")}finally{B.value=!1}}async function fe(){E.value=!0,P.value=null;try{P.value=await $fetch("/api/llm-providers/test",{method:"POST",body:{type:m.type,base_url:m.base_url,api_key:m.api_key}})}catch(d){P.value={ok:!1,error:d?.data?.statusMessage||d.message}}finally{E.value=!1}}const D=c(!1),v=c(null),S=c("");function pe(d){v.value={...d},S.value="",D.value=!0}async function ve(){if(v.value)try{const d={label:v.value.label,base_url:v.value.base_url};S.value&&(d.api_key=S.value),await $fetch(`/api/llm-providers/${v.value.id}`,{method:"PUT",body:d}),D.value=!1,N(s=>C.value=s,a("llmProviders.messages.updated")),await w()}catch(d){g.value=d?.data?.statusMessage||d.message||a("llmProviders.errors.update")}}async function be(d,s){try{await $fetch(`/api/llm-providers/${d.id}`,{method:"PUT",body:{is_enabled:s}}),d.is_enabled=s}catch(x){g.value=x?.data?.statusMessage||x.message}}const A=c(!1),H=c(null);function ye(d){H.value=d,A.value=!0}async function ge(){if(H.value)try{await $fetch(`/api/llm-providers/${H.value.id}`,{method:"DELETE"}),A.value=!1,N(d=>C.value=d,a("llmProviders.messages.deleted")),await w()}catch(d){g.value=d?.data?.statusMessage||d.message}}const O=c(!1),j=c(null),_=oe({label:"",model_name:"",role:"agent",context_limit:128e3,is_default:!1});function xe(d){j.value=d.id,Object.assign(_,{label:"",model_name:"",role:"agent",context_limit:128e3,is_default:!1}),O.value=!0}async function Pe(){if(j.value)try{await $fetch(`/api/llm-providers/${j.value}/models`,{method:"POST",body:{..._}}),O.value=!1,N(d=>C.value=d,a("llmProviders.messages.modelAdded")),await w()}catch(d){g.value=d?.data?.statusMessage||d.message}}async function he(d,s,x){try{await $fetch(`/api/llm-providers/${d.id}/models/${s.id}`,{method:"PUT",body:{is_default:x}}),await w()}catch(T){g.value=T?.data?.statusMessage||T.message}}async function ke(d,s){try{await $fetch(`/api/llm-providers/${d.id}/models/${s.id}`,{method:"DELETE"}),await w()}catch(x){g.value=x?.data?.statusMessage||x.message}}return Be(w),(d,s)=>{const x=Ue,T=Te,Q=De,W=Se,X=Me,b=He,h=Ie,Y=ze,ee=je,V=Ke,le=Fe,te=Le,y=qe,z=Re,F=Ze,U=We,ae=Qe,$e=Je,M=Ye,we=Xe,Ve=Ge,K=tl,q=ol,R=sl,Z=ll,G=el,Ce=al;return u(),f("div",ml,[r("div",_l,[r("h1",cl,o(t(a)("llmProviders.title")),1),r("p",fl,o(t(a)("llmProviders.subtitle")),1)]),e(T,{class:"mb-8 border-emerald-500/20 bg-emerald-500/5"},{default:l(()=>[e(x,{class:"p-5 flex items-start gap-4"},{default:l(()=>[e(t(dl),{class:"w-5 h-5 text-emerald-600 dark:text-emerald-400 mt-0.5 shrink-0"}),r("div",pl,[r("p",null,o(t(a)("llmProviders.trust.encrypted")),1),r("p",null,o(t(a)("llmProviders.trust.noTraining")),1),r("p",null,o(t(a)("llmProviders.trust.fallback")),1)])]),_:1})]),_:1}),C.value?(u(),f("div",vl,[e(t(nl),{class:"h-4 w-4 mr-2 shrink-0"}),i(" "+o(C.value),1)])):k("",!0),g.value?(u(),f("div",bl,[e(t(il),{class:"h-4 w-4 mr-2 shrink-0"}),i(" "+o(g.value),1)])):k("",!0),e(T,{class:"mb-8"},{default:l(()=>[e(X,null,{default:l(()=>[e(Q,null,{default:l(()=>[i(o(t(a)("llmProviders.add.title")),1)]),_:1}),e(W,null,{default:l(()=>[i(o(t(a)("llmProviders.add.subtitle")),1)]),_:1})]),_:1}),e(x,null,{default:l(()=>[r("form",{class:"space-y-4",onSubmit:Ee(ce,["prevent"])},[r("div",yl,[r("div",gl,[e(b,null,{default:l(()=>[i(o(t(a)("llmProviders.fields.label")),1)]),_:1}),e(h,{modelValue:m.label,"onUpdate:modelValue":s[0]||(s[0]=n=>m.label=n),placeholder:t(a)("llmProviders.fields.labelPlaceholder"),required:""}
1,null,8,["modelValue","placeholder"])]),r("div",xl,[e(b,null,{default:l(()=>[i(o(t(a)("llmProviders.fields.type")),1)]),_:1}),e(te,{modelValue:m.type,"onUpdate:modelValue":s[1]||(s[1]=n=>m.type=n)},{default:l(()=>[e(ee,null,{default:l(()=>[e(Y)]),_:1}),e(le,null,{default:l(()=>[e(V,{value:"openai"},{default:l(()=>s[18]||(s[18]=[i("OpenAI",-1)])),_:1,__:[18]}),e(V,{value:"anthropic"},{default:l(()=>s[19]||(s[19]=[i("Anthropic",-1)])),_:1,__:[19]}),e(V,{value:"openai_compatible"},{default:l(()=>[i(o(t(a)("llmProviders.fields.typeCustom")),1)]),_:1})]),_:1})]),_:1},8,["modelValue"])])]),m.type==="openai_compatible"?(u(),f("div",Pl,[e(b,null,{default:l(()=>[i(o(t(a)("llmProviders.fields.baseUrl")),1)]),_:1}),e(h,{modelValue:m.base_url,"onUpdate:modelValue":s[2]||(s[2]=n=>m.base_url=n),placeholder:"https://my-llm.company.com/v1"},null,8,["modelValue"]),r("p",hl,o(t(a)("llmProviders.fields.baseUrlHint")),1)])):k("",!0),r("div",kl,[e(b,null,{default:l(()=>[i(o(t(a)("llmProviders.fields.apiKey")),1)]),_:1}),e(h,{modelValue:m.api_key,"onUpdate:modelValue":s[3]||(s[3]=n=>m.api_key=n),type:"password",placeholder:"sk-...",autocomplete:"off"},null,8,["modelValue"]),r("p",$l,o(t(a)("llmProviders.fields.apiKeyHint")),1)]),r("div",wl,[e(y,{type:"submit",disabled:B.value||!m.label.trim()},{default:l(()=>[B.value?(u(),$(t(J),{key:1,class:"w-4 h-4 mr-2 animate-spin"})):(u(),$(t(ie),{key:0,class:"w-4 h-4 mr-2"})),i(" "+o(t(a)("llmProviders.add.submit")),1)]),_:1},8,["disabled"]),e(y,{type:"button",variant:"outline",disabled:E.value||!m.api_key&&m.type!=="openai_compatible",onClick:fe},{default:l(()=>[E.value?(u(),$(t(J),{key:0,class:"w-4 h-4 mr-2 animate-spin"})):(u(),$(t(rl),{key:1,class:"w-4 h-4 mr-2"})),i(" "+o(t(a)("llmProviders.add.test")),1)]),_:1},8,["disabled"]),P.value?(u(),f("span",{key:0,class:Ne(P.value.ok?"text-emerald-600 dark:text-emerald-400 text-sm":"text-red-600 dark:text-red-400 text-sm")},o(P.value.ok?t(a)("llmProviders.add.testOk",{ms:P.value.latency_ms}):P.value.error||t(a)("llmProviders.add.testFail")),3)):k("",!0)])],32)]),_:1})]),_:1}),L.value?(u(),f("div",Vl,[e(t(J),{class:"w-6 h-6 animate-spin mx-auto"})])):I.value.length===0?(u(),f("div",Cl,[e(t(re),{class:"w-10 h-10 mx-auto mb-3 opacity-30"}),r("p",null,o(t(a)("llmProviders.empty")),1)])):k("",!0),(u(!0),f(de,null,ne(I.value,n=>(u(),$(T,{key:n.id,class:"mb-6"},{default:l(()=>[e(X,null,{default:l(()=>[r("div",Tl,[r("div",null,[e(Q,{class:"flex items-center gap-2"},{default:l(()=>[e(t(re),{class:"w-5 h-5"}),i(" "+o(n.label)+" ",1),e(z,{variant:"outline"},{default:l(()=>[i(o(me(n.type)),1)]),_:2},1024),n.is_enabled?k("",!0):(u(),$(z,{key:0,variant:"secondary"},{default:l(()=>[i(o(t(a)("llmProviders.disabled")),1)]),_:1}))]),_:2},1024),e(W,{class:"mt-1"},{default:l(()=>[n.base_url?(u(),f("span",Ul,o(n.base_url),1)):(u(),f("span",Ml,o(t(a)("llmProviders.officialEndpoint")),1))]),_:2},1024)]),r("div",Dl,[e(F,{"model-value":n.is_enabled,"onUpdate:modelValue":p=>be(n,p)},null,8,["model-value","onUpdate:modelValue"]),e(y,{variant:"ghost",size:"sm",onClick:p=>pe(n)},{default:l(()=>[e(t(ul),{class:"w-4 h-4"})]),_:2},1032,["onClick"]),e(y,{variant:"ghost",size:"sm",onClick:p=>ye(n)},{default:l(()=>[e(t(ue),{class:"w-4 h-4 text-red-500"})]),_:2},1032,["onClick"])])])]),_:2},1024),e(x,{class:"space-y-4"},{default:l(()=>[r("div",null,[r("div",Sl,[r("h4",Al,o(t(a)("llmProviders.models.title")),1),e(y,{variant:"outline",size:"sm",onClick:p=>xe(n)},{default:l(()=>[e(t(ie),{class:"w-3 h-3 mr-1"}),i(" "+o(t(a)("llmProviders.models.add")),1)]),_:2},1032,["onClick"])]),n.models.length===0?(u(),f("div",Ol,o(t(a)("llmProviders.models.empty")),1)):(u(),$(Ve,{key:1},{default:l(()=>[e($e,null,{default:l(()=>[e(ae,null,{default:l(()=>[e(U,null,{default:l(()=>[i(o(t(a)("llmProviders.models.label")),1)]),_:1}),e(U,null,{default:l(()=>[i(o(t(a)("llmProviders.models.role")),1)]),_:1}),e(U,null,{default:l(()=>[i(o(t(a)("llmProviders.models.modelName")),1)]),_:1}),e(U,{class:"text-right"},{default:l(()=>[i(o(t(a)("llmProviders.models.context")),1)]),_:1}),e(U,{class:"text-center"},{default:l(()=>[i(o(t(a)("llmProviders.models.default")),1)]),_:1}),e(U)]),_:1})]),_:1}),e(we,null,{default:l(()=>[(u(!0),f(de,null,ne(n.models,p=>(u(),$(ae,{key:p.id},{default:l(()=>[e(M,null,{default:l(()=>[i(o(p.label),1)]),_:2},1024),e(M,null,{default:l(()=>[e(z,{variant:"outline"},{default:l(()=>[i(o(p.role),1)]),_:2},1024)]),_:2},1024),e(M,{class:"font-mono text-xs"},{default:l(()=>[i(o(p.model_name),1)]),_:2},1024),e(M,{class:"text-right text-xs"},{default:l(()=>[i(o(_e(p.context_limit)),1)]),_:2},1024),e(M,{class:"text-center"},{default:l(()=>[e(F,{"model-value":p.is_default,"onUpdate:modelValue":se=>he(n,p,se)},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),e(M,{class:"text-right"},{default:l(()=>[e(y,{variant:"ghost",size:"sm",onClick:se=>ke(n,p)},{default:l(()=>[e(t(ue),{class:"w-4 h-4 text-red-500"})]),_:2},1032,["onClick"])]),_:2},1024)]),_:2},1024))),128))]),_:2},1024)]),_:2},1024))])]),_:2},1024)]),_:2},1024))),128)),e(G,{open:D.value,"onUpdate:open":s[8]||(s[8]=n=>D.value=n)},{default:l(()=>[e(Z,{class:"max-w-lg"},{default:l(()=>[e(q,null,{default:l(()=>[e(K,null,{default:l(()=>[i(o(t(a)("llmProviders.edit.title")),1)]),_:1})]),_:1}),v.value?(u(),f("div",Bl,[r("div",El,[e(b,null,{default:l(()=>[i(o(t(a)("llmProviders.fields.label")),1)]),_:1}),e(h,{modelValue:v.value.label,"onUpdate:modelValue":s[4]||(s[4]=n=>v.value.label=n)},null,8,["modelValue"])]),v.value.type==="openai_compatible"?(u(),f("div",Nl,[e(b,null,{default:l(()=>[i(o(t(a)("llmProviders.fields.baseUrl")),1)]),_:1}),e(h,{modelValue:v.value.base_url,"onUpdate:modelValue":s[5]||(s[5]=n=>v.value.base_url=n)},null,8,["modelValue"])])):k("",!0),r("div",Hl,[e(b,null,{default:l(()=>[i(o(t(a)("llmProviders.fields.rotateApiKey")),1)]),_:1}),e(h,{modelValue:S.value,"onUpdate:modelValue":s[6]||(s[6]=n=>S.value=n),type:"password",autocomplete:"off",placeholder:v.value.has_api_key?"••••••••":""},null,8,["modelValue","placeholder"]),r("p",Il,o(t(a)("llmProviders.fields.rotateApiKeyHint")),1)])])):k("",!0),e(R,null,{default:l(()=>[e(y,{variant:"outline",onClick:s[7]||(s[7]=n=>D.value=!1)},{default:l(()=>[i(o(t(a)("common.cancel")),1)]),_:1}),e(y,{onClick:ve},{default:l(()=>[i(o(t(a)("common.save")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["open"]),e(G,{open:O.value,"onUpdate:open":s[15]||(s[15]=n=>O.value=n)},{default:l(()=>[e(Z,{class:"max-w-lg"},{default:l(()=>[e(q,null,{default:l(()=>[e(K,null,{default:l(()=>[i(o(t(a)("llmProviders.models.dialogTitle")),1)]),_:1})]),_:1}),r("div",Ll,[r("div",jl,[e(b,null,{default:l(()=>[i(o(t(a)("llmProviders.models.label")),1)]),_:1}),e(h,{modelValue:_.label,"onUpdate:modelValue":s[9]||(s[9]=n=>_.label=n),placeholder:t(a)("llmProviders.models.labelPlaceholder")},null,8,["modelValue","placeholder"])]),r("div",zl,[e(b,null,{default:l(()=>[i(o(t(a)("llmProviders.models.modelName")),1)]),_:1}),e(h,{modelValue:_.model_name,"onUpdate:modelValue":s[10]||(s[10]=n=>_.model_name=n),placeholder:"gpt-4o-mini"},null,8,["modelValue"]),r("p",Fl,o(t(a)("llmProviders.models.modelNameHint")),1)]),r("div",Kl,[r("div",ql,[e(b,null,{default:l(()=>[i(o(t(a)("llmProviders.models.role")),1)]),_:1}),e(te,{modelValue:_.role,"onUpdate:modelValue":s[11]||(s[11]=n=>_.role=n)},{default:l(()=>[e(ee,null,{default:l(()=>[e(Y)]),_:1}),e(le,null,{default:l(()=>[e(V,{value:"agent"},{default:l(()=>s[20]||(s[20]=[i("agent",-1)])),_:1,__:[20]}),e(V,{value:"mini"},{default:l(()=>s[21]||(s[21]=[i("mini",-1)])),_:1,__:[21]}),e(V,{value:"standard"},{default:l(()=>s[22]||(s[22]=[i("standard",-1)])),_:1,__:[22]}),e(V,{value:"embedding"},{default:l(()=>s[23]||(s[23]=[i("embedding",-1)])),_:1,__:[23]})]),_:1})]),_:1},8,["modelValue"]),r("p",Rl,o(t(a)("llmProviders.models.roleHint")),1)]),r("div",Zl,[e(b,null,{default:l(()=>[i(o(t(a)("llmProviders.models.context")),1)]),_:1}),e(h,{modelValue:_.context_limit,"onUpdate:modelValue":s[12]||(s[12]=n=>_.context_limit=n),modelModifiers:{number:!0},type:"number",min:"1024"},null,8,["modelValue"])])]),r("div",Gl,[e(F,{modelValue:_.is_default,"onUpdate:modelValue":s[13]||(s[13]=n=>_.is_default=n)},null,8,["modelValue"]),e(b,{class:"cursor-pointer"},{default:l(()=>[i(o(t(a)("llmProviders.models.useByDefault")),1)]),_:1})])]),e(R,null,{default:l(()=>[e(y,{variant:"outline",onClick:s[14]||(s[14]=n=>O.value=!1)},{default:l(()=>[i(o(t(a)("common.cancel")),1)]),_:1}),e(y,{disabled:!_.label.trim()||!_.model_name.trim(),onClick:Pe},{default:l(()=>[i(o(t(a)("common.add")),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"]),e(G,{open:A.value,"onUpdate:open":s[17]||(s[17]=n=>A.value=n)},{default:l(()=>[e(Z,{class:"max-w-md"},{default:l(()=>[e(q,null,{default:l(()=>[e(K,null,{default:l(()=>[i(o(t(a)("llmProviders.delete.title")),1)]),_:1}),e(Ce,null,{default:l(()=>[i(o(t(a)("llmProviders.delete.message",{label:H.value?.label})),1)]),_:1})]),_:1}),e(R,null,{default:l(()=>[e(y,{variant:"outline",onClick:s[16]||(s[16]=n=>A.value=!1)},{default:l(()=>[i(o(t(a)("common.cancel")),1)]),_:1}),e(y,{variant:"destructive",onClick:ge},{default:l(()=>[i(o(t(a)("common.delete")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])])}}});
1export{Dt as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.