@standardagents/builder 0.45.8 → 0.45.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/built-in-routes.js +1 -1
- package/dist/client/{ApiKeysView-BcqUvH1N.js → ApiKeysView-BwDYd2nU.js} +1 -1
- package/dist/client/{CodeEditor-C9bQ4Z3b.js → CodeEditor-xwWkV1-c.js} +3 -3
- package/dist/client/CompositionView-D1bxg5aS.js +72 -0
- package/dist/client/{CopyButton.vue_vue_type_script_setup_true_lang-DX9-shOV.js → CopyButton.vue_vue_type_script_setup_true_lang-CLj4kYi5.js} +1 -1
- package/dist/client/{DataTable.vue_vue_type_script_setup_true_lang-B85c2lO4.js → DataTable.vue_vue_type_script_setup_true_lang-CkugFRtR.js} +1 -1
- package/dist/client/{DefinitionSource-Bpge2u90.js → DefinitionSource-BbqSJUnU.js} +3 -3
- package/dist/client/{DefinitionUsedBy.vue_vue_type_script_setup_true_lang-BVz1zKTE.js → DefinitionUsedBy.vue_vue_type_script_setup_true_lang-BMGuiEk7.js} +1 -1
- package/dist/client/{LoginView-rym24zTR.js → LoginView-0OVTMU2S.js} +1 -1
- package/dist/client/{MarketplaceView-iAUImVOg.js → MarketplaceView-BuQxQaUp.js} +1 -1
- package/dist/client/{Modal.vue_vue_type_script_setup_true_lang-DOTIR3w5.js → Modal.vue_vue_type_script_setup_true_lang-UlrwSOT8.js} +1 -1
- package/dist/client/{ModelsView-D-GX47Hw.js → ModelsView-B9nRyP5Y.js} +1 -1
- package/dist/client/{PromptView-C_KoH5Mj.js → PromptView-3MXx3DhS.js} +1 -1
- package/dist/client/{PromptsView-CDiHQ75x.js → PromptsView-CaS5lNVN.js} +1 -1
- package/dist/client/{ProvidersView-COIzWC9J.js → ProvidersView-jwLDm5PC.js} +1 -1
- package/dist/client/{ToolsView-DgQIHbKB.js → ToolsView-DfaKB3DJ.js} +1 -1
- package/dist/client/{UiButton.vue_vue_type_script_setup_true_lang-BezveAaR.js → UiButton.vue_vue_type_script_setup_true_lang-CVyrFcWg.js} +1 -1
- package/dist/client/{UiEmptyState.vue_vue_type_script_setup_true_lang-n9hcWKvI.js → UiEmptyState.vue_vue_type_script_setup_true_lang-BD_dt9VV.js} +1 -1
- package/dist/client/{UiFilterMenu.vue_vue_type_script_setup_true_lang-CcYZv4bj.js → UiFilterMenu.vue_vue_type_script_setup_true_lang-BE1kHACC.js} +1 -1
- package/dist/client/{UiPageFrame-CeuT1rer.js → UiPageFrame-CP9KRIIM.js} +1 -1
- package/dist/client/{UsersView-C0283pU_.js → UsersView-SCr3Ls5P.js} +1 -1
- package/dist/client/{VariablesView-DljSo_RS.js → VariablesView-DGyxj9Ow.js} +1 -1
- package/dist/client/assets/{index-BBzCGX26.css → index-D0bcj_gk.css} +1 -1
- package/dist/client/{form-errors-cxIParHK.js → form-errors-D9RXsjd2.js} +1 -1
- package/dist/client/{index-CgCqkjVa.js → index-BkfWiMo-.js} +1 -1
- package/dist/client/index-BwlCQIem.js +5 -0
- package/dist/client/{index-er6dD-sT.js → index-C4-LP0pJ.js} +1 -1
- package/dist/client/{index-BEnYvzGi.js → index-CDCQWHe2.js} +1 -1
- package/dist/client/{index-CzsbmDuv.js → index-ChLk4ONU.js} +1 -1
- package/dist/client/{index-BFKj1V0c.js → index-CmfTs1yz.js} +1 -1
- package/dist/client/{index-C7gIQnkU.js → index-CwBC9sTn.js} +1 -1
- package/dist/client/{index-Dj5tjGFV.js → index-D4_R8FnR.js} +1 -1
- package/dist/client/{index-DfVgpfCm.js → index-DcCqDioc.js} +1 -1
- package/dist/client/{index-BcQ5zdWM.js → index-b4VUAUvJ.js} +1 -1
- package/dist/client/{index-DvSYq8lz.js → index-jI_N1y04.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/client/{schemaArguments-B2ppewpv.js → schemaArguments-DnkXBmpq.js} +1 -1
- package/dist/client/{toolReference-B96xiDXn.js → toolReference-Dnhl8D6k.js} +1 -1
- package/dist/client/{useDefinitionUsage-BxmZT4nk.js → useDefinitionUsage-CkISuMRg.js} +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/plugin.d.ts +10 -0
- package/dist/plugin.js +20 -0
- package/dist/plugin.js.map +1 -1
- package/package.json +7 -6
- package/dist/client/CompositionView-GlnAWxhl.js +0 -72
- package/dist/client/index-DnlG7hIl.js +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as le,c as f,R as ie,r as B,w as ue,k as y,e as t,E as de,l as d,f as s,z as l,A as i,D as g,q as k,b as r,y as x,X as ce,F as p,B as E,n as Y,ab as me}from"./vue-CnrejLtC.js";import{_ as V,a as pe,b as q,c as ve}from"./DefinitionUsedBy.vue_vue_type_script_setup_true_lang-BVz1zKTE.js";import{P as fe,_ as xe}from"./toolReference-B96xiDXn.js";import{D as ge}from"./DefinitionSource-Bpge2u90.js";import{m as _e}from"./modelReference-xZ6MYL2p.js";import{bJ as ke,c as he,bI as ye,a6 as be,V as M,b as Ce,e as we}from"./index-DnlG7hIl.js";import{u as Se}from"./useDefinitionUsage-BxmZT4nk.js";import{u as Ne,_ as j}from"./useClipboardCopy-DURjq7gM.js";import{a as Ae}from"./UiEmptyState.vue_vue_type_script_setup_true_lang-n9hcWKvI.js";import"./formkit-B1fIUqP-.js";import"./syntax-XeetdF8c.js";import"./vendor-L6I0G397.js";function D(u){return u.configurationSource?u.configurationSource:u.configuredViaPlatform?"platform":u.hasApiKey?"direct":"missing"}const H={direct:"Your key",platform:"Platform key",missing:"Not configured"};function J(u){const v=D(u);return v==="direct"&&Q(u).length===0?"No key needed":H[v]}const X={direct:"The provider's configuration is complete, so requests go straight to the provider.",platform:"The provider has no key of its own. Requests route through the Standard Agents platform with your project's platform key.",missing:"A required configuration key has no value, so requests to the provider's models fail. Set each required key in .dev.vars for local development, or as a secret on your deployed Worker. For a Standard Agents provider package, a project linked to the Standard Agents platform can set STANDARD_AGENTS_API_KEY instead."};function Q(u){return u.variables?.length?u.variables:(u.envKeys??[]).map(v=>({name:v,required:!0}))}function W(u,v){return v.filter(c=>c.provider===u).sort((c,m)=>c.name.localeCompare(m.name))}function De(u,v){const c=new Map,m=new Set;for(const _ of u){const h=v.model(_.name);for(const b of h.agents)c.set(b.id,b);for(const b of h.prompts)m.add(b)}return{agents:[...c.values()].sort((_,h)=>_.title.localeCompare(h.title)),prompts:[...m].sort((_,h)=>_.localeCompare(h))}}const Te={class:"mt-1 text-[14px] text-neutral-600 dark:text-neutral-300"},Le={class:"mt-3 divide-y divide-neutral-200 border-b border-neutral-200 dark:divide-neutral-800 dark:border-neutral-800"},$e={class:"text-[13px] text-neutral-600 dark:text-neutral-300"},Ie={key:3,class:"text-[13px] text-neutral-500 dark:text-neutral-400"},Pe={class:"flex items-center gap-3"},Re=["src"],Ee={class:"min-w-0 truncate text-[22px] font-medium text-neutral-900 dark:text-neutral-50"},qe={class:"mt-1 text-[14px] text-neutral-600 dark:text-neutral-300"},Ue={class:"font-mono text-[13px]"},Oe={class:"font-mono text-[13px]"},Be={class:"mt-3 divide-y divide-neutral-200 border-b border-neutral-200 dark:divide-neutral-800 dark:border-neutral-800"},Ve={key:0,class:"flex items-baseline gap-2 text-[13px] text-neutral-600 dark:text-neutral-300"},Me={key:1,class:"mt-4 space-y-3 text-[13px]"},je={class:"flex flex-wrap items-baseline gap-x-2"},Fe={class:"font-mono text-[12.5px] text-neutral-900 dark:text-neutral-50"},Ke={key:0,class:"text-neutral-500 dark:text-neutral-400"},Ge={class:"text-neutral-500 dark:text-neutral-400"},ze={key:0,class:"mt-0.5 text-neutral-600 dark:text-neutral-300"},Ye={key:2,class:"mt-3 text-[13px] text-neutral-500 dark:text-neutral-400"},Je={key:0,class:"space-y-1.5 text-[13px]"},Xe=["src"],We={class:"truncate font-mono text-[12.5px] text-neutral-900 dark:text-neutral-50"},He={class:"ml-auto truncate font-mono text-[12px] text-neutral-500 dark:text-neutral-400"},Qe={class:"space-y-2 text-[13px]"},Ze=["title"],et={class:"text-neutral-900 dark:text-neutral-50"},tt={class:"flex items-center gap-2.5"},at=["src"],st={class:"truncate text-neutral-900 dark:text-neutral-50"},nt={class:"break-all font-mono text-[12px] text-neutral-700 dark:text-neutral-200"},rt="-mx-1 flex items-center gap-2 rounded px-1 py-0.5 hover:bg-black/5 dark:hover:bg-white/10",_t=le({__name:"ProvidersView",setup(u){const v=ie(),c=f(()=>typeof v.params.name=="string"&&v.params.name?v.params.name:null),m=ke(),_=he(),h=ye(),b=Se(),F=Ne(),T=f(()=>m.initialLoading.value||_.initialLoading.value),Z=f(()=>!T.value&&!m.error.value&&m.items.value.length===0),K=be("providers"),S=a=>a.label||a.name,U=a=>`/api/providers/${encodeURIComponent(a)}/icon`;function L(a,e){return`${a} ${e}${a===1?"":"s"}`}function ee(a){const e=W(a.name,_.items.value).length;return e?L(e,"model"):"No models"}const te={direct:"positive",platform:"info",missing:"neutral"},G=f(()=>[...m.items.value].sort((a,e)=>S(a).localeCompare(S(e)))),ae=f(()=>[{label:"Defined in this project",items:G.value.filter(a=>a.isUserDefined)},{label:"Installed packages",items:G.value.filter(a=>!a.isUserDefined)}].map(a=>({label:a.label,items:a.items.map(e=>({key:e.name,name:S(e),detail:ee(e),badge:{label:J(e),tone:te[D(e)]},icon:U(e.name),to:M.provider(e.name)}))}))),o=f(()=>m.items.value.find(a=>a.name===c.value)??null),$=f(()=>o.value?D(o.value):null),z=f(()=>o.value?Q(o.value):[]),N=f(()=>o.value?W(o.value.name,_.items.value):[]),se=f(()=>De(N.value,b.value)),I=f(()=>h.items.value.find(a=>a.kind==="providers"&&a.name===c.value)?.path??null),ne=f(()=>m.items.value.filter(a=>D(a)!=="missing").length),C=B([]),P=B(null),O=B(!1);let R=0;ue(c,async a=>{const e=++R;if(C.value=[],P.value=null,!!a){O.value=!0;try{const w=await Ce.getJson(`/api/providers/${encodeURIComponent(a)}/tools`);e===R&&(C.value=(w.tools??[]).slice().sort((n,A)=>n.name.localeCompare(A.name)))}catch(w){e===R&&(P.value=we(w))}finally{e===R&&(O.value=!1)}}},{immediate:!0});const re={direct:"bg-emerald-500",platform:"bg-sky-500",missing:"bg-neutral-400 dark:bg-neutral-500"};return(a,e)=>{const w=me("RouterLink");return t(),y(ve,{parent:{label:"Providers",to:"/providers"},name:o.value?S(o.value):c.value??void 0,"mono-name":!1},de({list:d(()=>[g(xe,{groups:ae.value,"selected-key":c.value,loading:T.value,"search-placeholder":"Search providers","mono-names":!1,"empty-message":i(K).message},null,8,["groups","selected-key","loading","empty-message"])]),default:d(()=>[i(m).error.value?(t(),y(i(j),{key:0,variant:"error",class:"mb-4"},{default:d(()=>[x(l(i(m).error.value),1)]),_:1})):k("",!0),!c.value&&Z.value?(t(),r(p,{key:1},[e[1]||(e[1]=s("h1",{class:"text-[22px] font-medium text-neutral-900 dark:text-neutral-50"},"Providers",-1)),g(i(Ae),ce({align:"start"},i(K)),null,16)],64)):c.value?T.value?(t(),r("p",Ie,"Loading provider…")):o.value?(t(),r(p,{key:5},[s("div",Pe,[s("img",{src:U(o.value.name),alt:"",class:"h-7 w-7 shrink-0"},null,8,Re),s("h1",Ee,l(S(o.value)),1)]),s("p",qe,[o.value.isUserDefined?(t(),r(p,{key:0},[e[3]||(e[3]=x(" Defined in this project on the ",-1)),s("span",Ue,l(o.value.sdk),1),e[4]||(e[4]=x(" provider. ",-1))],64)):(t(),r(p,{key:1},[e[5]||(e[5]=x(" The installed ",-1)),s("span",Oe,l(o.value.name),1),e[6]||(e[6]=x(" provider package. ",-1))],64)),o.value.kind==="decision"?(t(),r(p,{key:2},[x(" It answers decision questions from tools and hooks and serves no chat models.")],64)):k("",!0)]),s("div",Be,[g(q,{title:"Configuration",meta:$.value?i(J)(o.value):void 0},{default:d(()=>[$.value?(t(),r("p",Ve,[s("span",{class:Y(["relative top-[-1px] size-2 shrink-0 rounded-full",re[$.value]]),"aria-hidden":"true"},null,2),x(" "+l(i(X)[$.value]),1)])):k("",!0),z.value.length?(t(),r("dl",Me,[(t(!0),r(p,null,E(z.value,n=>(t(),r("div",{key:n.name},[s("dt",je,[s("span",Fe,l(n.name),1),n.type?(t(),r("span",Ke,l(n.type==="secret"?"Secret":"Text"),1)):k("",!0),s("span",Ge,l(n.required?"required":"optional"),1)]),n.description?(t(),r("dd",ze,l(n.description),1)):k("",!0)]))),128))])):(t(),r("p",Ye,"It reads no configuration keys."))]),_:1},8,["meta"]),g(q,{title:"Models",meta:N.value.length?L(N.value.length,"model"):"No models"},{default:d(()=>[N.value.length?(t(),r("ul",Je,[(t(!0),r(p,null,E(N.value,n=>(t(),r("li",{key:n.name},[g(w,{to:i(M).model(n.name),class:Y(rt)},{default:d(()=>[s("img",{src:i(_e)(n),alt:"",class:"h-4 w-4 shrink-0"},null,8,Xe),s("span",We,l(n.name),1),s("span",He,l(n.model),1)]),_:2},1032,["to"])]))),128))])):k("",!0)]),_:1},8,["meta"]),g(q,{title:"Provider tools",meta:O.value?"Loading…":C.value.length?L(C.value.length,"tool"):"No tools"},{default:d(()=>[P.value?(t(),y(i(j),{key:0,variant:"error"},{default:d(()=>[x(l(P.value),1)]),_:1})):C.value.length?(t(),r(p,{key:1},[e[7]||(e[7]=s("p",{class:"mb-3 text-[13px] text-neutral-500 dark:text-neutral-400"},"The provider runs these tools on its own servers. A prompt can list them for a model on this provider.",-1)),s("ul",Qe,[(t(!0),r(p,null,E(C.value,n=>(t(),r("li",{key:n.name,class:"grid grid-cols-[minmax(0,12rem)_minmax(0,1fr)] items-baseline gap-x-4"},[g(w,{to:i(M).tool(`${i(fe)}${n.name}`),class:"truncate font-mono text-[12.5px] text-neutral-900 underline decoration-neutral-300 underline-offset-2 hover:decoration-neutral-500 dark:text-neutral-50 dark:decoration-neutral-600 dark:hover:decoration-neutral-400"},{default:d(()=>[x(l(n.name),1)]),_:2},1032,["to"]),s("span",{class:"truncate text-neutral-600 dark:text-neutral-300",title:n.description},l(n.description||"No description"),9,Ze)]))),128))])],64)):k("",!0)]),_:1},8,["meta"]),g(ge,{kind:"providers",name:o.value.name},null,8,["name"])])],64)):(t(),y(i(j),{key:4,variant:"error"},{default:d(()=>[x("This project has no provider named "+l(c.value)+".",1)]),_:1})):(t(),r(p,{key:2},[e[2]||(e[2]=s("h1",{class:"text-[22px] font-medium text-neutral-900 dark:text-neutral-50"},"Providers",-1)),s("p",Te,[T.value?(t(),r(p,{key:0},[x("Loading providers…")],64)):(t(),r(p,{key:1},[x(" This project has "+l(L(i(m).items.value.length,"provider"))+", and "+l(ne.value)+" can take requests. A model names the provider that serves it. ",1)],64))]),s("div",Le,[(t(!0),r(p,null,E(i(X),(n,A)=>(t(),y(q,{key:A,title:i(H)[A],meta:String(i(m).items.value.filter(oe=>i(D)(oe)===A).length)},{default:d(()=>[s("p",$e,l(n),1)]),_:2},1032,["title","meta"]))),128))])],64))]),_:2},[I.value?{name:"actions",fn:d(()=>[s("button",{type:"button",class:"inline-flex h-8 items-center rounded-md px-2.5 text-[13px] text-neutral-600 transition-colors hover:bg-black/5 hover:text-neutral-900 dark:text-neutral-300 dark:hover:bg-white/10 dark:hover:text-white",onClick:e[0]||(e[0]=n=>i(F).copy(I.value))},l(i(F).copied.value?"Copied":"Copy source path"),1)]),key:"0"}:void 0,o.value?{name:"aside",fn:d(()=>[g(V,{label:"Kind"},{default:d(()=>[s("p",et,l(o.value.kind==="decision"?"Decision provider":"Language model provider"),1)]),_:1}),o.value.isUserDefined?(t(),y(V,{key:0,label:"Built on"},{default:d(()=>[s("div",tt,[s("img",{src:U(o.value.sdk),alt:"",class:"h-5 w-5 shrink-0"},null,8,at),s("span",st,l(o.value.sdk),1)])]),_:1})):k("",!0),g(pe,{users:se.value,empty:"No agent or prompt runs on its models."},null,8,["users"]),I.value?(t(),y(V,{key:1,label:"Source file"},{default:d(()=>[s("p",nt,l(I.value),1)]),_:1})):k("",!0)]),key:"1"}:void 0]),1032,["name"])}}});export{_t as default};
|
|
1
|
+
import{d as le,c as f,R as ie,r as B,w as ue,k as y,e as t,E as de,l as d,f as s,z as l,A as i,D as g,q as k,b as r,y as x,X as ce,F as p,B as I,n as Y,ab as me}from"./vue-CnrejLtC.js";import{_ as V,a as pe,b as q,c as ve}from"./DefinitionUsedBy.vue_vue_type_script_setup_true_lang-BMGuiEk7.js";import{P as fe,_ as xe}from"./toolReference-Dnhl8D6k.js";import{D as ge}from"./DefinitionSource-BbqSJUnU.js";import{m as _e}from"./modelReference-xZ6MYL2p.js";import{bK as ke,c as he,bJ as ye,a6 as be,V as M,b as Ce,e as we}from"./index-BwlCQIem.js";import{u as Se}from"./useDefinitionUsage-CkISuMRg.js";import{u as Ne,_ as j}from"./useClipboardCopy-DURjq7gM.js";import{a as Ae}from"./UiEmptyState.vue_vue_type_script_setup_true_lang-BD_dt9VV.js";import"./formkit-B1fIUqP-.js";import"./syntax-XeetdF8c.js";import"./vendor-L6I0G397.js";function D(u){return u.configurationSource?u.configurationSource:u.configuredViaPlatform?"platform":u.hasApiKey?"direct":"missing"}const H={direct:"Your key",platform:"Platform key",missing:"Not configured"};function J(u){const v=D(u);return v==="direct"&&Q(u).length===0?"No key needed":H[v]}const X={direct:"The provider's configuration is complete, so requests go straight to the provider.",platform:"The provider has no key of its own. Requests route through the Standard Agents platform with your project's platform key.",missing:"A required configuration key has no value, so requests to the provider's models fail. Set each required key in .dev.vars for local development, or as a secret on your deployed Worker. For a Standard Agents provider package, a project linked to the Standard Agents platform can set STANDARD_AGENTS_API_KEY instead."};function Q(u){return u.variables?.length?u.variables:(u.envKeys??[]).map(v=>({name:v,required:!0}))}function W(u,v){return v.filter(c=>c.provider===u).sort((c,m)=>c.name.localeCompare(m.name))}function De(u,v){const c=new Map,m=new Set;for(const _ of u){const h=v.model(_.name);for(const b of h.agents)c.set(b.id,b);for(const b of h.prompts)m.add(b)}return{agents:[...c.values()].sort((_,h)=>_.title.localeCompare(h.title)),prompts:[...m].sort((_,h)=>_.localeCompare(h))}}const Te={class:"mt-1 text-[14px] text-neutral-600 dark:text-neutral-300"},Le={class:"mt-3 divide-y divide-neutral-200 border-b border-neutral-200 dark:divide-neutral-800 dark:border-neutral-800"},$e={class:"text-[13px] text-neutral-600 dark:text-neutral-300"},Pe={key:3,class:"text-[13px] text-neutral-500 dark:text-neutral-400"},Re={class:"flex items-center gap-3"},Ee=["src"],Ie={class:"min-w-0 truncate text-[22px] font-medium text-neutral-900 dark:text-neutral-50"},qe={class:"mt-1 text-[14px] text-neutral-600 dark:text-neutral-300"},Ue={class:"font-mono text-[13px]"},Oe={class:"font-mono text-[13px]"},Be={class:"mt-3 divide-y divide-neutral-200 border-b border-neutral-200 dark:divide-neutral-800 dark:border-neutral-800"},Ve={key:0,class:"flex items-baseline gap-2 text-[13px] text-neutral-600 dark:text-neutral-300"},Me={key:1,class:"mt-4 space-y-3 text-[13px]"},je={class:"flex flex-wrap items-baseline gap-x-2"},Fe={class:"font-mono text-[12.5px] text-neutral-900 dark:text-neutral-50"},Ke={key:0,class:"text-neutral-500 dark:text-neutral-400"},Ge={class:"text-neutral-500 dark:text-neutral-400"},ze={key:0,class:"mt-0.5 text-neutral-600 dark:text-neutral-300"},Ye={key:2,class:"mt-3 text-[13px] text-neutral-500 dark:text-neutral-400"},Je={key:0,class:"space-y-1.5 text-[13px]"},Xe=["src"],We={class:"truncate font-mono text-[12.5px] text-neutral-900 dark:text-neutral-50"},He={class:"ml-auto truncate font-mono text-[12px] text-neutral-500 dark:text-neutral-400"},Qe={class:"space-y-2 text-[13px]"},Ze=["title"],et={class:"text-neutral-900 dark:text-neutral-50"},tt={class:"flex items-center gap-2.5"},at=["src"],st={class:"truncate text-neutral-900 dark:text-neutral-50"},nt={class:"break-all font-mono text-[12px] text-neutral-700 dark:text-neutral-200"},rt="-mx-1 flex items-center gap-2 rounded px-1 py-0.5 hover:bg-black/5 dark:hover:bg-white/10",_t=le({__name:"ProvidersView",setup(u){const v=ie(),c=f(()=>typeof v.params.name=="string"&&v.params.name?v.params.name:null),m=ke(),_=he(),h=ye(),b=Se(),F=Ne(),T=f(()=>m.initialLoading.value||_.initialLoading.value),Z=f(()=>!T.value&&!m.error.value&&m.items.value.length===0),K=be("providers"),S=a=>a.label||a.name,U=a=>`/api/providers/${encodeURIComponent(a)}/icon`;function L(a,e){return`${a} ${e}${a===1?"":"s"}`}function ee(a){const e=W(a.name,_.items.value).length;return e?L(e,"model"):"No models"}const te={direct:"positive",platform:"info",missing:"neutral"},G=f(()=>[...m.items.value].sort((a,e)=>S(a).localeCompare(S(e)))),ae=f(()=>[{label:"Defined in this project",items:G.value.filter(a=>a.isUserDefined)},{label:"Installed packages",items:G.value.filter(a=>!a.isUserDefined)}].map(a=>({label:a.label,items:a.items.map(e=>({key:e.name,name:S(e),detail:ee(e),badge:{label:J(e),tone:te[D(e)]},icon:U(e.name),to:M.provider(e.name)}))}))),o=f(()=>m.items.value.find(a=>a.name===c.value)??null),$=f(()=>o.value?D(o.value):null),z=f(()=>o.value?Q(o.value):[]),N=f(()=>o.value?W(o.value.name,_.items.value):[]),se=f(()=>De(N.value,b.value)),P=f(()=>h.items.value.find(a=>a.kind==="providers"&&a.name===c.value)?.path??null),ne=f(()=>m.items.value.filter(a=>D(a)!=="missing").length),C=B([]),R=B(null),O=B(!1);let E=0;ue(c,async a=>{const e=++E;if(C.value=[],R.value=null,!!a){O.value=!0;try{const w=await Ce.getJson(`/api/providers/${encodeURIComponent(a)}/tools`);e===E&&(C.value=(w.tools??[]).slice().sort((n,A)=>n.name.localeCompare(A.name)))}catch(w){e===E&&(R.value=we(w))}finally{e===E&&(O.value=!1)}}},{immediate:!0});const re={direct:"bg-emerald-500",platform:"bg-sky-500",missing:"bg-neutral-400 dark:bg-neutral-500"};return(a,e)=>{const w=me("RouterLink");return t(),y(ve,{parent:{label:"Providers",to:"/providers"},name:o.value?S(o.value):c.value??void 0,"mono-name":!1},de({list:d(()=>[g(xe,{groups:ae.value,"selected-key":c.value,loading:T.value,"search-placeholder":"Search providers","mono-names":!1,"empty-message":i(K).message},null,8,["groups","selected-key","loading","empty-message"])]),default:d(()=>[i(m).error.value?(t(),y(i(j),{key:0,variant:"error",class:"mb-4"},{default:d(()=>[x(l(i(m).error.value),1)]),_:1})):k("",!0),!c.value&&Z.value?(t(),r(p,{key:1},[e[1]||(e[1]=s("h1",{class:"text-[22px] font-medium text-neutral-900 dark:text-neutral-50"},"Providers",-1)),g(i(Ae),ce({align:"start"},i(K)),null,16)],64)):c.value?T.value?(t(),r("p",Pe,"Loading provider…")):o.value?(t(),r(p,{key:5},[s("div",Re,[s("img",{src:U(o.value.name),alt:"",class:"h-7 w-7 shrink-0"},null,8,Ee),s("h1",Ie,l(S(o.value)),1)]),s("p",qe,[o.value.isUserDefined?(t(),r(p,{key:0},[e[3]||(e[3]=x(" Defined in this project on the ",-1)),s("span",Ue,l(o.value.sdk),1),e[4]||(e[4]=x(" provider. ",-1))],64)):(t(),r(p,{key:1},[e[5]||(e[5]=x(" The installed ",-1)),s("span",Oe,l(o.value.name),1),e[6]||(e[6]=x(" provider package. ",-1))],64)),o.value.kind==="decision"?(t(),r(p,{key:2},[x(" It answers decision questions from tools and hooks and serves no chat models.")],64)):k("",!0)]),s("div",Be,[g(q,{title:"Configuration",meta:$.value?i(J)(o.value):void 0},{default:d(()=>[$.value?(t(),r("p",Ve,[s("span",{class:Y(["relative top-[-1px] size-2 shrink-0 rounded-full",re[$.value]]),"aria-hidden":"true"},null,2),x(" "+l(i(X)[$.value]),1)])):k("",!0),z.value.length?(t(),r("dl",Me,[(t(!0),r(p,null,I(z.value,n=>(t(),r("div",{key:n.name},[s("dt",je,[s("span",Fe,l(n.name),1),n.type?(t(),r("span",Ke,l(n.type==="secret"?"Secret":"Text"),1)):k("",!0),s("span",Ge,l(n.required?"required":"optional"),1)]),n.description?(t(),r("dd",ze,l(n.description),1)):k("",!0)]))),128))])):(t(),r("p",Ye,"It reads no configuration keys."))]),_:1},8,["meta"]),g(q,{title:"Models",meta:N.value.length?L(N.value.length,"model"):"No models"},{default:d(()=>[N.value.length?(t(),r("ul",Je,[(t(!0),r(p,null,I(N.value,n=>(t(),r("li",{key:n.name},[g(w,{to:i(M).model(n.name),class:Y(rt)},{default:d(()=>[s("img",{src:i(_e)(n),alt:"",class:"h-4 w-4 shrink-0"},null,8,Xe),s("span",We,l(n.name),1),s("span",He,l(n.model),1)]),_:2},1032,["to"])]))),128))])):k("",!0)]),_:1},8,["meta"]),g(q,{title:"Provider tools",meta:O.value?"Loading…":C.value.length?L(C.value.length,"tool"):"No tools"},{default:d(()=>[R.value?(t(),y(i(j),{key:0,variant:"error"},{default:d(()=>[x(l(R.value),1)]),_:1})):C.value.length?(t(),r(p,{key:1},[e[7]||(e[7]=s("p",{class:"mb-3 text-[13px] text-neutral-500 dark:text-neutral-400"},"The provider runs these tools on its own servers. A prompt can list them for a model on this provider.",-1)),s("ul",Qe,[(t(!0),r(p,null,I(C.value,n=>(t(),r("li",{key:n.name,class:"grid grid-cols-[minmax(0,12rem)_minmax(0,1fr)] items-baseline gap-x-4"},[g(w,{to:i(M).tool(`${i(fe)}${n.name}`),class:"truncate font-mono text-[12.5px] text-neutral-900 underline decoration-neutral-300 underline-offset-2 hover:decoration-neutral-500 dark:text-neutral-50 dark:decoration-neutral-600 dark:hover:decoration-neutral-400"},{default:d(()=>[x(l(n.name),1)]),_:2},1032,["to"]),s("span",{class:"truncate text-neutral-600 dark:text-neutral-300",title:n.description},l(n.description||"No description"),9,Ze)]))),128))])],64)):k("",!0)]),_:1},8,["meta"]),g(ge,{kind:"providers",name:o.value.name},null,8,["name"])])],64)):(t(),y(i(j),{key:4,variant:"error"},{default:d(()=>[x("This project has no provider named "+l(c.value)+".",1)]),_:1})):(t(),r(p,{key:2},[e[2]||(e[2]=s("h1",{class:"text-[22px] font-medium text-neutral-900 dark:text-neutral-50"},"Providers",-1)),s("p",Te,[T.value?(t(),r(p,{key:0},[x("Loading providers…")],64)):(t(),r(p,{key:1},[x(" This project has "+l(L(i(m).items.value.length,"provider"))+", and "+l(ne.value)+" can take requests. A model names the provider that serves it. ",1)],64))]),s("div",Le,[(t(!0),r(p,null,I(i(X),(n,A)=>(t(),y(q,{key:A,title:i(H)[A],meta:String(i(m).items.value.filter(oe=>i(D)(oe)===A).length)},{default:d(()=>[s("p",$e,l(n),1)]),_:2},1032,["title","meta"]))),128))])],64))]),_:2},[P.value?{name:"actions",fn:d(()=>[s("button",{type:"button",class:"inline-flex h-8 items-center rounded-md px-2.5 text-[13px] text-neutral-600 transition-colors hover:bg-black/5 hover:text-neutral-900 dark:text-neutral-300 dark:hover:bg-white/10 dark:hover:text-white",onClick:e[0]||(e[0]=n=>i(F).copy(P.value))},l(i(F).copied.value?"Copied":"Copy source path"),1)]),key:"0"}:void 0,o.value?{name:"aside",fn:d(()=>[g(V,{label:"Kind"},{default:d(()=>[s("p",et,l(o.value.kind==="decision"?"Decision provider":"Language model provider"),1)]),_:1}),o.value.isUserDefined?(t(),y(V,{key:0,label:"Built on"},{default:d(()=>[s("div",tt,[s("img",{src:U(o.value.sdk),alt:"",class:"h-5 w-5 shrink-0"},null,8,at),s("span",st,l(o.value.sdk),1)])]),_:1})):k("",!0),g(pe,{users:se.value,empty:"No agent or prompt runs on its models."},null,8,["users"]),P.value?(t(),y(V,{key:1,label:"Source file"},{default:d(()=>[s("p",nt,l(P.value),1)]),_:1})):k("",!0)]),key:"1"}:void 0]),1032,["name"])}}});export{_t as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as de,c as m,R as ce,r as B,w as H,k as v,e as a,E as pe,l as r,f as o,z as l,A as u,D as k,q as p,b as i,n as I,ab as me,y as $,F as _,B as D,X as ve}from"./vue-CnrejLtC.js";import{bG as ke,bF as _e,u as fe,c as xe,bI as ge,a6 as he,V as h,y as ye,b as Q,e as be}from"./index-DnlG7hIl.js";import{_ as y,a as Ce,b as M,c as Te}from"./DefinitionUsedBy.vue_vue_type_script_setup_true_lang-BVz1zKTE.js";import{b as $e,T as W,a as Z,c as ee,t as Le,_ as Oe}from"./toolReference-B96xiDXn.js";import{D as we}from"./DefinitionSource-Bpge2u90.js";import{P as Ne,_ as Re,s as te}from"./schemaArguments-B2ppewpv.js";import{u as Se}from"./useDefinitionUsage-BxmZT4nk.js";import{u as Ae,_ as q}from"./useClipboardCopy-DURjq7gM.js";import{a as Ie}from"./UiEmptyState.vue_vue_type_script_setup_true_lang-n9hcWKvI.js";import"./formkit-B1fIUqP-.js";import"./syntax-XeetdF8c.js";import"./vendor-L6I0G397.js";import"./promptReasoningLevel-BrUFPP1Z.js";const De={class:"mt-1 text-[14px] text-neutral-600 dark:text-neutral-300"},Ee={class:"mt-3 divide-y divide-neutral-200 border-b border-neutral-200 dark:divide-neutral-800 dark:border-neutral-800"},Pe={class:"text-[13px] text-neutral-600 dark:text-neutral-300"},Ke={key:2,class:"text-[13px] text-neutral-500 dark:text-neutral-400"},Ue={class:"font-mono text-[22px] font-medium text-neutral-900 dark:text-neutral-50"},Ve={key:0,class:"mt-1 text-[14px] text-neutral-600 dark:text-neutral-300"},Be={key:1,class:"mt-1 text-[14px] text-neutral-500 dark:text-neutral-400"},Me={class:"mt-3 divide-y divide-neutral-200 border-b border-neutral-200 dark:divide-neutral-800 dark:border-neutral-800"},qe={key:0,class:"mb-3 text-[13px] text-neutral-500 dark:text-neutral-400"},Fe={class:"space-y-3 text-[13px]"},je={class:"flex flex-wrap items-baseline gap-x-2"},ze={class:"font-mono text-[12.5px] text-neutral-900 dark:text-neutral-50"},Ge={class:"text-neutral-500 dark:text-neutral-400"},Je={class:"text-neutral-500 dark:text-neutral-400"},Xe={key:0,class:"mt-0.5 text-neutral-600 dark:text-neutral-300"},Ye={class:"text-neutral-900 dark:text-neutral-50"},He={class:"mt-0.5 text-neutral-500 dark:text-neutral-400"},Qe={class:"truncate font-mono text-[12.5px] text-neutral-900 dark:text-neutral-50"},We={key:0,class:"mt-1 text-neutral-500 dark:text-neutral-400"},Ze={class:"truncate text-neutral-900 dark:text-neutral-50"},et={key:0,class:"space-y-1"},tt=["src"],at={class:"truncate text-neutral-900 dark:text-neutral-50"},nt={key:1,class:"text-neutral-500 dark:text-neutral-400"},st={key:0,class:"space-y-1"},ot={class:"truncate font-mono text-[12.5px] text-neutral-900 dark:text-neutral-50"},rt={key:1,class:"text-neutral-500 dark:text-neutral-400"},lt={class:"break-all font-mono text-[12px] text-neutral-700 dark:text-neutral-200"},E="-mx-1 flex items-center gap-2 rounded px-1 py-0.5 hover:bg-black/5 dark:hover:bg-white/10",bt=de({__name:"ToolsView",setup(it){const P=ce(),f=m(()=>typeof P.params.name=="string"&&P.params.name?P.params.name:null),K=ke(),b=_e(),L=fe(),U=xe(),ae=ge(),O=Se(),F=Ae(),C=m(()=>$e({functions:K.items.value,prompts:b.items.value,agents:L.items.value,models:U.items.value,usage:O.value})),w=m(()=>K.initialLoading.value||b.initialLoading.value||L.initialLoading.value||U.initialLoading.value),ne=m(()=>!w.value&&C.value.length===0&&![K,b,L,U].some(t=>t.error.value)),j=he("tools"),se=m(()=>W.map(t=>({label:Z[t],items:C.value.filter(e=>e.kind===t).map(e=>({key:e.key,name:e.name,detail:e.kind==="provider"?e.providers.join(", "):e.description,to:h.tool(e.key),error:e.error!==void 0}))}))),n=m(()=>C.value.find(t=>t.key===f.value)??null),c=B(null),N=B(null),R=B(!1);let S=0;const V=t=>b.items.value.find(e=>e.name===t)??null,z=t=>L.items.value.find(e=>e.id===t)??null;async function oe(t,e){for(const d of e){const T=(await Q.getJson(`/api/providers/${encodeURIComponent(d)}/tools`)).tools?.find(ue=>ue.name===t);if(T)return{description:T.description??"",arguments:[],variables:T.variables??[]}}return{description:"",arguments:[],variables:[]}}async function G(){const t=++S,e=n.value;if(N.value=null,!e){c.value=null;return}R.value=!0;try{let d;if(e.kind==="function"){const s=await Q.getJson(`/api/tools/${encodeURIComponent(e.key)}`);d={description:s.description,arguments:te(s.schema),variables:s.variables??[],error:s.hasError?s.error:void 0}}else if(e.kind==="provider")d=await oe(e.name,e.providers);else{const s=e.kind==="prompt"?V(e.key):V(z(e.key)?.side_a_agent_prompt);d={description:e.description,arguments:te(s?.required_schema),variables:[]}}t===S&&(c.value=d)}catch(d){if(t!==S)return;c.value=null,N.value=be(d)}finally{t===S&&(R.value=!1)}}H(n,(t,e)=>{(t?.key!==e?.key||t?.description!==e?.description||t?.error!==e?.error)&&G()},{immediate:!0}),H(()=>b.items.value,()=>{(n.value?.kind==="prompt"||n.value?.kind==="agent")&&G()});const J=m(()=>c.value?.description||n.value?.description||""),re=m(()=>{const t=n.value;return t?t.kind==="agent"?O.value.agent(t.key):t.kind==="prompt"?O.value.prompt(t.key):O.value.tool(t.key):{agents:[],prompts:[]}}),X={function:"tools",prompt:"prompts",agent:"agents"},A=m(()=>{const t=n.value;if(!t||t.kind==="provider")return null;const e=X[t.kind];return ae.items.value.find(d=>d.kind===e&&d.name===t.key)?.path??null}),x=m(()=>n.value?.kind==="agent"?z(n.value.key):null),g=m(()=>n.value?.kind==="prompt"?V(n.value.key):null),le=m(()=>{if(R.value)return"Loading…";if(!(n.value?.kind==="provider"||c.value?.arguments.length))return"No arguments"}),Y=m(()=>{if(n.value?.kind==="agent"){const t=x.value?.side_a_agent_prompt;return t?c.value?.arguments.length?`A call takes the input of the agent's side A prompt, ${t}.`:`The agent's side A prompt, ${t}, declares no input.`:"The agent's side A has no prompt, so a call takes no arguments."}return n.value?.kind==="provider"?"The provider defines this tool's input. The model fills it in on the provider's side.":null}),ie=t=>`/api/providers/${encodeURIComponent(t)}/icon`;return(t,e)=>{const d=me("RouterLink");return a(),v(Te,{parent:{label:"Tools",to:"/tools"},name:n.value?.name??f.value??void 0},pe({list:r(()=>[k(Oe,{groups:se.value,"selected-key":f.value,loading:w.value,"search-placeholder":"Search tools","empty-message":u(j).message},null,8,["groups","selected-key","loading","empty-message"])]),default:r(()=>[!f.value&&ne.value?(a(),i(_,{key:0},[e[1]||(e[1]=o("h1",{class:"text-[22px] font-medium text-neutral-900 dark:text-neutral-50"},"Tools",-1)),k(u(Ie),ve({align:"start"},u(j)),null,16)],64)):f.value?w.value?(a(),i("p",Ke,"Loading tool…")):n.value?(a(),i(_,{key:4},[o("h1",Ue,l(n.value.name),1),J.value?(a(),i("p",Ve,l(J.value),1)):R.value?p("",!0):(a(),i("p",Be,"No description")),c.value?.error||n.value.error?(a(),v(u(q),{key:2,variant:"error",class:"mt-4"},{default:r(()=>[$(l(c.value?.error??n.value.error),1)]),_:1})):p("",!0),N.value?(a(),v(u(q),{key:3,variant:"error",class:"mt-4"},{default:r(()=>[$(l(N.value),1)]),_:1})):p("",!0),o("div",Me,[k(M,{title:"Input",meta:le.value},{default:r(()=>[Y.value?(a(),i("p",qe,l(Y.value),1)):p("",!0),c.value?.arguments.length?(a(),v(Re,{key:1,arguments:c.value.arguments},null,8,["arguments"])):p("",!0)]),_:1},8,["meta"]),c.value?.variables.length?(a(),v(M,{key:0,title:"Variables",meta:`${c.value.variables.length} ${c.value.variables.length===1?"variable":"variables"}`},{default:r(()=>[o("dl",Fe,[(a(!0),i(_,null,D(c.value.variables,s=>(a(),i("div",{key:s.name},[o("dt",je,[o("span",ze,l(s.name),1),o("span",Ge,l(s.type==="secret"?"Secret":"Text"),1),o("span",Je,l(s.required?"required":"optional"),1)]),s.description?(a(),i("dd",Xe,l(s.description),1)):p("",!0)]))),128))])]),_:1},8,["meta"])):p("",!0),n.value.kind!=="provider"?(a(),v(we,{key:1,kind:X[n.value.kind],name:n.value.key},null,8,["kind","name"])):p("",!0)])],64)):(a(),v(u(q),{key:3,variant:"error"},{default:r(()=>[$("This project has no tool named "+l(f.value)+".",1)]),_:1})):(a(),i(_,{key:1},[e[2]||(e[2]=o("h1",{class:"text-[22px] font-medium text-neutral-900 dark:text-neutral-50"},"Tools",-1)),o("p",De,l(w.value?"Loading tools…":`This project has ${u(Le)(C.value)}. A prompt lists the tools its model can call.`),1),o("div",Ee,[(a(!0),i(_,null,D(u(W),s=>(a(),v(M,{key:s,title:u(Z)[s],meta:String(C.value.filter(T=>T.kind===s).length)},{default:r(()=>[o("p",Pe,l(u(ee)[s]),1)]),_:2},1032,["title","meta"]))),128))])],64))]),_:2},[A.value?{name:"actions",fn:r(()=>[o("button",{type:"button",class:"inline-flex h-8 items-center rounded-md px-2.5 text-[13px] text-neutral-600 transition-colors hover:bg-black/5 hover:text-neutral-900 dark:text-neutral-300 dark:hover:bg-white/10 dark:hover:text-white",onClick:e[0]||(e[0]=s=>u(F).copy(A.value))},l(u(F).copied.value?"Copied":"Copy source path"),1)]),key:"0"}:void 0,n.value?{name:"aside",fn:r(()=>[k(y,{label:"Kind"},{default:r(()=>[o("p",Ye,l(u(Ne)[n.value.kind]),1),o("p",He,l(u(ee)[n.value.kind]),1)]),_:1}),g.value?(a(),v(y,{key:0,label:"Prompt"},{default:r(()=>[k(d,{to:u(h).prompt(g.value.name),class:I(E)},{default:r(()=>[o("span",Qe,l(g.value.name),1),e[3]||(e[3]=o("span",{class:"ml-auto shrink-0 text-neutral-500 dark:text-neutral-400"},"Open page",-1))]),_:1},8,["to"]),g.value.model_id?(a(),i("p",We,[e[4]||(e[4]=$(" Runs on ",-1)),k(d,{to:u(h).model(g.value.model_id),class:"font-mono text-[12px] underline decoration-neutral-300 underline-offset-2 hover:text-neutral-900 dark:decoration-neutral-600 dark:hover:text-white"},{default:r(()=>[$(l(g.value.model_id),1)]),_:1},8,["to"])])):p("",!0)]),_:1})):p("",!0),x.value?(a(),v(y,{key:1,label:"Agent"},{default:r(()=>[k(d,{to:u(h).agent(x.value.id),class:I(E)},{default:r(()=>[k(ye,{icon:x.value.icon,seed:x.value.id,class:"h-5 w-5 shrink-0 rounded"},null,8,["icon","seed"]),o("span",Ze,l(x.value.title),1),e[5]||(e[5]=o("span",{class:"ml-auto shrink-0 text-neutral-500 dark:text-neutral-400"},"Open agent",-1))]),_:1},8,["to"])]),_:1})):p("",!0),n.value.kind==="provider"?(a(),v(y,{key:2,label:"Offered by"},{default:r(()=>[n.value.providers.length?(a(),i("ul",et,[(a(!0),i(_,null,D(n.value.providers,s=>(a(),i("li",{key:s},[k(d,{to:u(h).provider(s),class:I(E)},{default:r(()=>[o("img",{src:ie(s),alt:"",class:"h-5 w-5 shrink-0"},null,8,tt),o("span",at,l(s),1)]),_:2},1032,["to"])]))),128))])):(a(),i("p",nt,"No model in this project names a provider for it."))]),_:1})):p("",!0),n.value.kind==="provider"?(a(),v(y,{key:3,label:"Models that list it"},{default:r(()=>[n.value.models.length?(a(),i("ul",st,[(a(!0),i(_,null,D(n.value.models,s=>(a(),i("li",{key:s},[k(d,{to:u(h).model(s),class:I(E)},{default:r(()=>[o("span",ot,l(s),1)]),_:2},1032,["to"])]))),128))])):(a(),i("p",rt,"No model lists it."))]),_:1})):p("",!0),k(Ce,{users:re.value,empty:`No agent or prompt uses ${n.value.name}.`},null,8,["users","empty"]),A.value?(a(),v(y,{key:4,label:"Source file"},{default:r(()=>[o("p",lt,l(A.value),1)]),_:1})):p("",!0)]),key:"1"}:void 0]),1032,["name"])}}});export{bt as default};
|
|
1
|
+
import{d as de,c as m,R as ce,r as B,w as Y,k as v,e as a,E as pe,l as r,f as o,z as l,A as u,D as k,q as p,b as i,n as D,ab as me,y as $,F as _,B as I,X as ve}from"./vue-CnrejLtC.js";import{bH as ke,bG as _e,u as fe,c as xe,bJ as ge,a6 as he,V as h,y as ye,b as Q,e as be}from"./index-BwlCQIem.js";import{_ as y,a as Ce,b as M,c as Te}from"./DefinitionUsedBy.vue_vue_type_script_setup_true_lang-BMGuiEk7.js";import{b as $e,T as W,a as Z,c as ee,t as Le,_ as Oe}from"./toolReference-Dnhl8D6k.js";import{D as we}from"./DefinitionSource-BbqSJUnU.js";import{P as Ne,_ as Re,s as te}from"./schemaArguments-DnkXBmpq.js";import{u as Se}from"./useDefinitionUsage-CkISuMRg.js";import{u as Ae,_ as q}from"./useClipboardCopy-DURjq7gM.js";import{a as De}from"./UiEmptyState.vue_vue_type_script_setup_true_lang-BD_dt9VV.js";import"./formkit-B1fIUqP-.js";import"./syntax-XeetdF8c.js";import"./vendor-L6I0G397.js";import"./promptReasoningLevel-BrUFPP1Z.js";const Ie={class:"mt-1 text-[14px] text-neutral-600 dark:text-neutral-300"},Ee={class:"mt-3 divide-y divide-neutral-200 border-b border-neutral-200 dark:divide-neutral-800 dark:border-neutral-800"},Pe={class:"text-[13px] text-neutral-600 dark:text-neutral-300"},Ke={key:2,class:"text-[13px] text-neutral-500 dark:text-neutral-400"},Ue={class:"font-mono text-[22px] font-medium text-neutral-900 dark:text-neutral-50"},Ve={key:0,class:"mt-1 text-[14px] text-neutral-600 dark:text-neutral-300"},Be={key:1,class:"mt-1 text-[14px] text-neutral-500 dark:text-neutral-400"},Me={class:"mt-3 divide-y divide-neutral-200 border-b border-neutral-200 dark:divide-neutral-800 dark:border-neutral-800"},qe={key:0,class:"mb-3 text-[13px] text-neutral-500 dark:text-neutral-400"},je={class:"space-y-3 text-[13px]"},Fe={class:"flex flex-wrap items-baseline gap-x-2"},Je={class:"font-mono text-[12.5px] text-neutral-900 dark:text-neutral-50"},ze={class:"text-neutral-500 dark:text-neutral-400"},Ge={class:"text-neutral-500 dark:text-neutral-400"},He={key:0,class:"mt-0.5 text-neutral-600 dark:text-neutral-300"},Xe={class:"text-neutral-900 dark:text-neutral-50"},Ye={class:"mt-0.5 text-neutral-500 dark:text-neutral-400"},Qe={class:"truncate font-mono text-[12.5px] text-neutral-900 dark:text-neutral-50"},We={key:0,class:"mt-1 text-neutral-500 dark:text-neutral-400"},Ze={class:"truncate text-neutral-900 dark:text-neutral-50"},et={key:0,class:"space-y-1"},tt=["src"],at={class:"truncate text-neutral-900 dark:text-neutral-50"},nt={key:1,class:"text-neutral-500 dark:text-neutral-400"},st={key:0,class:"space-y-1"},ot={class:"truncate font-mono text-[12.5px] text-neutral-900 dark:text-neutral-50"},rt={key:1,class:"text-neutral-500 dark:text-neutral-400"},lt={class:"break-all font-mono text-[12px] text-neutral-700 dark:text-neutral-200"},E="-mx-1 flex items-center gap-2 rounded px-1 py-0.5 hover:bg-black/5 dark:hover:bg-white/10",bt=de({__name:"ToolsView",setup(it){const P=ce(),f=m(()=>typeof P.params.name=="string"&&P.params.name?P.params.name:null),K=ke(),b=_e(),L=fe(),U=xe(),ae=ge(),O=Se(),j=Ae(),C=m(()=>$e({functions:K.items.value,prompts:b.items.value,agents:L.items.value,models:U.items.value,usage:O.value})),w=m(()=>K.initialLoading.value||b.initialLoading.value||L.initialLoading.value||U.initialLoading.value),ne=m(()=>!w.value&&C.value.length===0&&![K,b,L,U].some(t=>t.error.value)),F=he("tools"),se=m(()=>W.map(t=>({label:Z[t],items:C.value.filter(e=>e.kind===t).map(e=>({key:e.key,name:e.name,detail:e.kind==="provider"?e.providers.join(", "):e.description,to:h.tool(e.key),error:e.error!==void 0}))}))),n=m(()=>C.value.find(t=>t.key===f.value)??null),c=B(null),N=B(null),R=B(!1);let S=0;const V=t=>b.items.value.find(e=>e.name===t)??null,J=t=>L.items.value.find(e=>e.id===t)??null;async function oe(t,e){for(const d of e){const T=(await Q.getJson(`/api/providers/${encodeURIComponent(d)}/tools`)).tools?.find(ue=>ue.name===t);if(T)return{description:T.description??"",arguments:[],variables:T.variables??[]}}return{description:"",arguments:[],variables:[]}}async function z(){const t=++S,e=n.value;if(N.value=null,!e){c.value=null;return}R.value=!0;try{let d;if(e.kind==="function"){const s=await Q.getJson(`/api/tools/${encodeURIComponent(e.key)}`);d={description:s.description,arguments:te(s.schema),variables:s.variables??[],error:s.hasError?s.error:void 0}}else if(e.kind==="provider")d=await oe(e.name,e.providers);else{const s=e.kind==="prompt"?V(e.key):V(J(e.key)?.side_a_agent_prompt);d={description:e.description,arguments:te(s?.required_schema),variables:[]}}t===S&&(c.value=d)}catch(d){if(t!==S)return;c.value=null,N.value=be(d)}finally{t===S&&(R.value=!1)}}Y(n,(t,e)=>{(t?.key!==e?.key||t?.description!==e?.description||t?.error!==e?.error)&&z()},{immediate:!0}),Y(()=>b.items.value,()=>{(n.value?.kind==="prompt"||n.value?.kind==="agent")&&z()});const G=m(()=>c.value?.description||n.value?.description||""),re=m(()=>{const t=n.value;return t?t.kind==="agent"?O.value.agent(t.key):t.kind==="prompt"?O.value.prompt(t.key):O.value.tool(t.key):{agents:[],prompts:[]}}),H={function:"tools",prompt:"prompts",agent:"agents"},A=m(()=>{const t=n.value;if(!t||t.kind==="provider")return null;const e=H[t.kind];return ae.items.value.find(d=>d.kind===e&&d.name===t.key)?.path??null}),x=m(()=>n.value?.kind==="agent"?J(n.value.key):null),g=m(()=>n.value?.kind==="prompt"?V(n.value.key):null),le=m(()=>{if(R.value)return"Loading…";if(!(n.value?.kind==="provider"||c.value?.arguments.length))return"No arguments"}),X=m(()=>{if(n.value?.kind==="agent"){const t=x.value?.side_a_agent_prompt;return t?c.value?.arguments.length?`A call takes the input of the agent's side A prompt, ${t}.`:`The agent's side A prompt, ${t}, declares no input.`:"The agent's side A has no prompt, so a call takes no arguments."}return n.value?.kind==="provider"?"The provider defines this tool's input. The model fills it in on the provider's side.":null}),ie=t=>`/api/providers/${encodeURIComponent(t)}/icon`;return(t,e)=>{const d=me("RouterLink");return a(),v(Te,{parent:{label:"Tools",to:"/tools"},name:n.value?.name??f.value??void 0},pe({list:r(()=>[k(Oe,{groups:se.value,"selected-key":f.value,loading:w.value,"search-placeholder":"Search tools","empty-message":u(F).message},null,8,["groups","selected-key","loading","empty-message"])]),default:r(()=>[!f.value&&ne.value?(a(),i(_,{key:0},[e[1]||(e[1]=o("h1",{class:"text-[22px] font-medium text-neutral-900 dark:text-neutral-50"},"Tools",-1)),k(u(De),ve({align:"start"},u(F)),null,16)],64)):f.value?w.value?(a(),i("p",Ke,"Loading tool…")):n.value?(a(),i(_,{key:4},[o("h1",Ue,l(n.value.name),1),G.value?(a(),i("p",Ve,l(G.value),1)):R.value?p("",!0):(a(),i("p",Be,"No description")),c.value?.error||n.value.error?(a(),v(u(q),{key:2,variant:"error",class:"mt-4"},{default:r(()=>[$(l(c.value?.error??n.value.error),1)]),_:1})):p("",!0),N.value?(a(),v(u(q),{key:3,variant:"error",class:"mt-4"},{default:r(()=>[$(l(N.value),1)]),_:1})):p("",!0),o("div",Me,[k(M,{title:"Input",meta:le.value},{default:r(()=>[X.value?(a(),i("p",qe,l(X.value),1)):p("",!0),c.value?.arguments.length?(a(),v(Re,{key:1,arguments:c.value.arguments},null,8,["arguments"])):p("",!0)]),_:1},8,["meta"]),c.value?.variables.length?(a(),v(M,{key:0,title:"Variables",meta:`${c.value.variables.length} ${c.value.variables.length===1?"variable":"variables"}`},{default:r(()=>[o("dl",je,[(a(!0),i(_,null,I(c.value.variables,s=>(a(),i("div",{key:s.name},[o("dt",Fe,[o("span",Je,l(s.name),1),o("span",ze,l(s.type==="secret"?"Secret":"Text"),1),o("span",Ge,l(s.required?"required":"optional"),1)]),s.description?(a(),i("dd",He,l(s.description),1)):p("",!0)]))),128))])]),_:1},8,["meta"])):p("",!0),n.value.kind!=="provider"?(a(),v(we,{key:1,kind:H[n.value.kind],name:n.value.key},null,8,["kind","name"])):p("",!0)])],64)):(a(),v(u(q),{key:3,variant:"error"},{default:r(()=>[$("This project has no tool named "+l(f.value)+".",1)]),_:1})):(a(),i(_,{key:1},[e[2]||(e[2]=o("h1",{class:"text-[22px] font-medium text-neutral-900 dark:text-neutral-50"},"Tools",-1)),o("p",Ie,l(w.value?"Loading tools…":`This project has ${u(Le)(C.value)}. A prompt lists the tools its model can call.`),1),o("div",Ee,[(a(!0),i(_,null,I(u(W),s=>(a(),v(M,{key:s,title:u(Z)[s],meta:String(C.value.filter(T=>T.kind===s).length)},{default:r(()=>[o("p",Pe,l(u(ee)[s]),1)]),_:2},1032,["title","meta"]))),128))])],64))]),_:2},[A.value?{name:"actions",fn:r(()=>[o("button",{type:"button",class:"inline-flex h-8 items-center rounded-md px-2.5 text-[13px] text-neutral-600 transition-colors hover:bg-black/5 hover:text-neutral-900 dark:text-neutral-300 dark:hover:bg-white/10 dark:hover:text-white",onClick:e[0]||(e[0]=s=>u(j).copy(A.value))},l(u(j).copied.value?"Copied":"Copy source path"),1)]),key:"0"}:void 0,n.value?{name:"aside",fn:r(()=>[k(y,{label:"Kind"},{default:r(()=>[o("p",Xe,l(u(Ne)[n.value.kind]),1),o("p",Ye,l(u(ee)[n.value.kind]),1)]),_:1}),g.value?(a(),v(y,{key:0,label:"Prompt"},{default:r(()=>[k(d,{to:u(h).prompt(g.value.name),class:D(E)},{default:r(()=>[o("span",Qe,l(g.value.name),1),e[3]||(e[3]=o("span",{class:"ml-auto shrink-0 text-neutral-500 dark:text-neutral-400"},"Open page",-1))]),_:1},8,["to"]),g.value.model_id?(a(),i("p",We,[e[4]||(e[4]=$(" Runs on ",-1)),k(d,{to:u(h).model(g.value.model_id),class:"font-mono text-[12px] underline decoration-neutral-300 underline-offset-2 hover:text-neutral-900 dark:decoration-neutral-600 dark:hover:text-white"},{default:r(()=>[$(l(g.value.model_id),1)]),_:1},8,["to"])])):p("",!0)]),_:1})):p("",!0),x.value?(a(),v(y,{key:1,label:"Agent"},{default:r(()=>[k(d,{to:u(h).agent(x.value.id),class:D(E)},{default:r(()=>[k(ye,{icon:x.value.icon,seed:x.value.id,class:"h-5 w-5 shrink-0 rounded"},null,8,["icon","seed"]),o("span",Ze,l(x.value.title),1),e[5]||(e[5]=o("span",{class:"ml-auto shrink-0 text-neutral-500 dark:text-neutral-400"},"Open agent",-1))]),_:1},8,["to"])]),_:1})):p("",!0),n.value.kind==="provider"?(a(),v(y,{key:2,label:"Offered by"},{default:r(()=>[n.value.providers.length?(a(),i("ul",et,[(a(!0),i(_,null,I(n.value.providers,s=>(a(),i("li",{key:s},[k(d,{to:u(h).provider(s),class:D(E)},{default:r(()=>[o("img",{src:ie(s),alt:"",class:"h-5 w-5 shrink-0"},null,8,tt),o("span",at,l(s),1)]),_:2},1032,["to"])]))),128))])):(a(),i("p",nt,"No model in this project names a provider for it."))]),_:1})):p("",!0),n.value.kind==="provider"?(a(),v(y,{key:3,label:"Models that list it"},{default:r(()=>[n.value.models.length?(a(),i("ul",st,[(a(!0),i(_,null,I(n.value.models,s=>(a(),i("li",{key:s},[k(d,{to:u(h).model(s),class:D(E)},{default:r(()=>[o("span",ot,l(s),1)]),_:2},1032,["to"])]))),128))])):(a(),i("p",rt,"No model lists it."))]),_:1})):p("",!0),k(Ce,{users:re.value,empty:`No agent or prompt uses ${n.value.name}.`},null,8,["users","empty"]),A.value?(a(),v(y,{key:4,label:"Source file"},{default:r(()=>[o("p",lt,l(A.value),1)]),_:1})):p("",!0)]),key:"1"}:void 0]),1032,["name"])}}});export{bt as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{aj as h}from"./index-
|
|
1
|
+
import{aj as h}from"./index-BwlCQIem.js";import{d as f,c as n,b as g,e as a,n as x,k as s,q as l,g as k,x as i}from"./vue-CnrejLtC.js";const v=["type","disabled"],y="inline-flex items-center justify-center gap-2 font-medium rounded-md transition-colors disabled:opacity-50 disabled:cursor-not-allowed",C=f({__name:"UiButton",props:{variant:{default:"primary"},size:{default:"md"},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},iconLeft:{},iconRight:{},fullWidth:{type:Boolean,default:!1},type:{default:"button"}},emits:["click"],setup(e,{emit:d}){const t=e,o=d,c=n(()=>{switch(t.variant){case"primary":return"bg-neutral-900 text-white hover:bg-neutral-700 dark:bg-neutral-100 dark:text-neutral-950 dark:hover:bg-neutral-300";case"secondary":case"ghost":return"border border-neutral-200 bg-white text-neutral-800 hover:bg-neutral-50 dark:border-neutral-800 dark:bg-transparent dark:text-neutral-200 dark:hover:bg-neutral-800";case"danger":return"bg-red-600 text-white hover:bg-red-700 dark:bg-red-500 dark:hover:bg-red-600";case"success":return"bg-emerald-600 text-white hover:bg-emerald-700";case"link":return"text-accent-600 dark:text-accent-400 hover:underline p-0";default:return""}}),u=n(()=>{if(t.variant==="link")return"text-sm";switch(t.size){case"xs":return"h-7 px-2.5 text-xs";case"sm":return"h-8 px-3 text-sm";case"md":return"h-9 px-4 text-sm";case"lg":return"h-11 px-5 text-base";default:return""}}),m=n(()=>t.size==="xs"||t.size==="sm"?"xs":"sm"),b=r=>{!t.disabled&&!t.loading&&o("click",r)};return(r,w)=>(a(),g("button",{type:e.type,disabled:e.disabled||e.loading,class:x([y,c.value,u.value,e.fullWidth?"w-full":""]),onClick:b},[e.loading?(a(),s(h,{key:0,size:m.value},null,8,["size"])):e.iconLeft?(a(),s(i(e.iconLeft),{key:1,class:"w-4 h-4"})):l("",!0),k(r.$slots,"default"),e.iconRight&&!e.loading?(a(),s(i(e.iconRight),{key:2,class:"w-4 h-4"})):l("",!0)],10,v))}});export{C as _};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{E as k,C as g,F as y,
|
|
1
|
+
import{E as k,C as g,F as y,bP as v}from"./index-BwlCQIem.js";import{u as C}from"./useClipboardCopy-DURjq7gM.js";import{d as h,r as P,b as n,e as a,q as l,f as c,z as o,A as t,F as w,B as $,k as u,x as p,y as B,D as L,n as d,g as E,ba as I}from"./vue-CnrejLtC.js";const S={class:"text-left"},_={key:0,class:"mb-1.5 text-[12px] font-semibold text-neutral-500 dark:text-neutral-400"},z=["aria-label"],D={class:"min-w-0 flex-1 text-[13px] leading-5 text-neutral-800 dark:text-neutral-200"},N=["aria-label","onClick"],T={"aria-live":"polite"},V=h({__name:"UiSuggestedPrompts",props:{prompts:{},hideLabel:{type:Boolean}},setup(e){const s=k.ui,{copied:i,copy:b}=C(),m=P(null);async function f(x){m.value=x,await b(x)}return(x,Y)=>(a(),n("div",S,[e.hideLabel?l("",!0):(a(),n("h3",_,o(t(s).suggestedPromptsLabel),1)),c("ul",{class:"space-y-1.5","aria-label":t(s).suggestedPromptsLabel},[(a(!0),n(w,null,$(e.prompts,r=>(a(),n("li",{key:r,class:"flex items-start gap-2 rounded-md border border-neutral-200 bg-white px-3 py-2 dark:border-neutral-800 dark:bg-neutral-900"},[c("span",D,o(r),1),c("button",{type:"button",class:"inline-flex h-6 shrink-0 items-center gap-1 rounded px-1.5 text-[12px] font-medium text-neutral-500 transition-colors hover:bg-black/5 hover:text-neutral-900 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-500 dark:text-neutral-400 dark:hover:bg-white/10 dark:hover:text-neutral-100","aria-label":`${t(s).copyPrompt}: ${r}`,onClick:q=>f(r)},[(a(),u(p(t(i)&&m.value===r?t(g):t(y)),{class:"size-3.5","aria-hidden":"true"})),c("span",T,o(t(i)&&m.value===r?t(s).copied:t(s).copyPrompt),1)],8,N)]))),128))],8,z)]))}}),F=["href"],U=h({__name:"UiDocsLink",props:{docs:{}},setup(e){return(s,i)=>(a(),n("a",{href:e.docs.href,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-[13px] font-medium text-accent-700 hover:text-accent-900 dark:text-accent-300 dark:hover:text-accent-100"},[B(o(e.docs.label)+" ",1),L(t(v),{class:"size-3","aria-hidden":"true"})],8,F))}}),A={key:1,class:"mt-1"},G=h({__name:"UiEmptyState",props:{message:{},description:{},prompts:{},docs:{},icon:{},showIcon:{type:Boolean,default:!1},align:{default:"center"}},setup(e){return(s,i)=>(a(),n("div",{class:d(["text-sm text-neutral-500 dark:text-neutral-400",e.align==="center"?"px-4 py-6 text-center":"py-5 text-left"])},[e.icon||e.showIcon?(a(),u(p(e.icon||t(I)),{key:0,class:d(["mb-2 h-8 w-8 opacity-50",e.align==="center"?"mx-auto":""])},null,8,["class"])):l("",!0),c("p",{class:d(e.description||e.prompts?.length?"font-medium text-neutral-900 dark:text-neutral-100":"")},o(e.message),3),e.description?(a(),n("p",A,o(e.description),1)):l("",!0),e.prompts?.length?(a(),u(V,{key:2,class:d(["mt-4 max-w-2xl",e.align==="center"?"mx-auto":""]),prompts:e.prompts},null,8,["class","prompts"])):l("",!0),e.docs?(a(),u(U,{key:3,class:"mt-4",docs:e.docs},null,8,["docs"])):l("",!0),E(s.$slots,"default")],2))}});export{U as _,G as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as C,c as $,b as r,e as l,n as w,k as g,x as j,m as V,f as o,w as E,a8 as U,T as H,D as u,aw as M,l as k,q as f,z as v,A as b,y as p,C as L,g as I,G as S,H as
|
|
1
|
+
import{d as C,c as $,b as r,e as l,n as w,k as g,x as j,m as V,f as o,w as E,a8 as U,T as H,D as u,aw as M,l as k,q as f,z as v,A as b,y as p,C as L,g as I,G as S,H as N,r as B,M as R,L as A,F as z,B as F}from"./vue-CnrejLtC.js";import{aj as K,bB as q,M as D,C as O,ai as G}from"./index-BwlCQIem.js";import{_ as T}from"./UiButton.vue_vue_type_script_setup_true_lang-CVyrFcWg.js";const P=["disabled","aria-label","title"],X="inline-flex items-center justify-center rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed",Y=C({__name:"UiIconButton",props:{icon:{},label:{},size:{default:"sm"},variant:{default:"default"},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:["click"],setup(e,{emit:t}){const a=e,d=t,i=$(()=>{switch(a.variant){case"default":return"hover:bg-black/10 dark:hover:bg-white/10";case"ghost":return"hover:bg-black/5 dark:hover:bg-white/5";case"danger":return"text-red-600 hover:bg-red-50 dark:hover:bg-red-900/20";default:return""}}),h=$(()=>{switch(a.size){case"xs":return"p-0.5";case"sm":return"p-1";case"md":return"p-1.5";default:return""}}),x=$(()=>{switch(a.size){case"xs":return"w-3.5 h-3.5";case"sm":return"w-4 h-4";case"md":return"w-5 h-5";default:return""}}),c=s=>{!a.disabled&&!a.loading&&d("click",s)};return(s,m)=>(l(),r("button",{type:"button",disabled:e.disabled||e.loading,"aria-label":e.label,title:e.label,class:w([X,i.value,h.value]),onClick:c},[e.loading?(l(),g(K,{key:0,size:"xs"})):(l(),g(j(e.icon),{key:1,class:w(x.value)},null,8,["class"]))],10,P))}}),J={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Q(e,t){return l(),r("svg",J,[...t[0]||(t[0]=[o("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m6 9l6 6l6-6"},null,-1)])])}const W=V({name:"lucide-chevron-down",render:Q}),Z={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function ee(e,t){return l(),r("svg",Z,[...t[0]||(t[0]=[o("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m18 15l-6-6l-6 6"},null,-1)])])}const Be=V({name:"lucide-chevron-up",render:ee}),te={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function ae(e,t){return l(),r("svg",te,[...t[0]||(t[0]=[o("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m7 15l5 5l5-5M7 9l5-5l5 5"},null,-1)])])}const _e=V({name:"lucide-chevrons-up-down",render:ae});let y=0,_=null;function le(){return typeof document>"u"?null:document.body}function ne(){const e=le();if(!e)return()=>{};y===0&&(_=e.style.overflow,e.style.overflow="hidden"),y+=1;let t=!1;return()=>{t||(t=!0,y=Math.max(0,y-1),y===0&&(e.style.overflow=_??"",_=null))}}const re={key:0,class:"w-full max-w-md"},se={class:"flex items-center justify-between p-4 border-b border-neutral-200 dark:border-neutral-800 flex-shrink-0"},oe={class:"text-base font-medium text-neutral-900 dark:text-neutral-100"},ie={class:"p-6"},ce={class:"text-sm text-neutral-700 dark:text-neutral-300 mb-6"},ue={class:"flex justify-end gap-3"},Ve=C({__name:"ConfirmDialog",props:{modelValue:{type:Boolean},title:{default:"Confirm action"},message:{default:"Are you sure you want to continue? You will lose any unsaved changes."},confirmText:{default:"Continue"},cancelText:{default:"Cancel"}},emits:["update:modelValue","confirm","cancel"],setup(e,{emit:t}){const a=e,d=t;let i=null;const h=()=>{d("update:modelValue",!1)},x=()=>{d("confirm"),h()},c=()=>{d("cancel"),h()},s=m=>{m.key==="Escape"&&a.modelValue&&c()};return E(()=>a.modelValue,m=>{m?(document.addEventListener("keydown",s),i=ne()):(document.removeEventListener("keydown",s),i?.(),i=null)}),U(()=>{document.removeEventListener("keydown",s),i?.(),i=null}),(m,n)=>(l(),g(H,{to:"body"},[u(M,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:k(()=>[e.modelValue?(l(),r("div",{key:0,class:"fixed inset-0 z-[60] flex items-center justify-center p-4 ui-modal-backdrop dark:text-white",onClick:c},[u(M,{"enter-active-class":"transition-[opacity,transform] duration-200","enter-from-class":"opacity-0 scale-95","enter-to-class":"opacity-100 scale-100","leave-active-class":"transition-[opacity,transform] duration-200","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-95"},{default:k(()=>[e.modelValue?(l(),r("div",re,[u(q,{"offset-x":8,"offset-y":8,intensity:.35},{default:k(()=>[o("div",{class:"bg-white dark:bg-neutral-900 border border-neutral-300 dark:border-neutral-700 rounded-lg flex flex-col",onClick:n[0]||(n[0]=L(()=>{},["stop"]))},[o("div",se,[o("h2",oe,v(e.title),1),u(b(Y),{icon:b(D),label:"Close dialog",variant:"ghost",onClick:c},null,8,["icon"])]),o("div",ie,[o("p",ce,v(e.message),1),o("div",ue,[u(b(T),{variant:"secondary",onClick:c},{default:k(()=>[p(v(e.cancelText),1)]),_:1}),u(b(T),{variant:"danger",onClick:x},{default:k(()=>[p(v(e.confirmText),1)]),_:1})])])])]),_:1})])):f("",!0)]),_:1})])):f("",!0)]),_:1})]))}}),de=C({__name:"UiToolbarButton",props:{variant:{default:"secondary"},icon:{},pressed:{type:Boolean,default:!1}},setup(e){return(t,a)=>(l(),r("button",{type:"button",class:w(["inline-flex shrink-0 items-center gap-1.5 rounded-md font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-accent-500",["h-8 px-3 text-sm",e.variant==="primary"?"bg-neutral-900 text-white hover:bg-neutral-700 dark:bg-neutral-100 dark:text-neutral-900 dark:hover:bg-white":["border text-neutral-700 dark:text-neutral-300",e.pressed?"border-neutral-300 bg-black/[0.05] dark:border-neutral-600 dark:bg-white/[0.08]":"border-neutral-200 bg-white hover:bg-neutral-50 dark:border-neutral-700 dark:bg-neutral-900 dark:hover:bg-neutral-800"]]])},[e.icon?(l(),g(j(e.icon),{key:0,class:"h-3.5 w-3.5 shrink-0"})):f("",!0),I(t.$slots,"default")],2))}}),fe={class:"flex items-stretch"},me={class:"text-neutral-500 dark:text-neutral-400"},ve={key:0,class:"max-w-40 truncate"},be=["aria-label"],he=["aria-label"],ke=["aria-selected","onClick"],xe=["src"],ye={class:"min-w-0 flex-1 truncate"},we={key:1,class:"tabular-nums text-neutral-400"},Me=C({__name:"UiFilterMenu",props:S({label:{},options:{},clearable:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=N(e,"modelValue"),a=B(!1),d=B(null),i=B(0);R(d,()=>{a.value=!1});function h(){if(!a.value){const s=d.value?.getBoundingClientRect().bottom??0;i.value=G(s+4,window.innerHeight)}a.value=!a.value}function x(s){a.value&&(a.value=!1,s.stopPropagation())}function c(s){t.value=s,a.value=!1}return(s,m)=>(l(),r("div",{ref_key:"rootRef",ref:d,class:"relative",onKeydown:A(x,["esc"])},[o("div",fe,[u(de,{pressed:e.clearable&&!!t.value,"aria-expanded":a.value,"aria-haspopup":"listbox",class:w(t.value&&e.clearable?"rounded-r-none":""),onClick:h},{default:k(()=>[o("span",me,[p(v(e.label),1),t.value?(l(),r(z,{key:0},[p(":")],64)):f("",!0)]),t.value?(l(),r("span",ve,v(e.options.find(n=>n.value===t.value)?.label??t.value),1)):f("",!0),u(b(W),{class:"h-3.5 w-3.5 text-neutral-400"})]),_:1},8,["pressed","aria-expanded","class"]),t.value&&e.clearable?(l(),r("button",{key:0,type:"button",class:"inline-flex items-center rounded-r-md border border-l-0 border-neutral-300 bg-black/[0.05] px-1.5 text-neutral-500 hover:text-neutral-900 dark:border-neutral-600 dark:bg-white/[0.08] dark:hover:text-white","aria-label":`Clear ${e.label} filter`,onClick:m[0]||(m[0]=n=>c(""))},[u(b(D),{class:"h-3 w-3"})],8,be)):f("",!0)]),a.value&&s.$slots.panel?I(s.$slots,"panel",{key:0,choose:c,maxHeight:i.value}):a.value?(l(),r("ul",{key:1,role:"listbox","aria-label":e.label,class:"absolute left-0 z-30 mt-1 max-h-72 min-w-48 overflow-y-auto rounded-lg border border-neutral-200 bg-white p-1 shadow-lg dark:border-neutral-700 dark:bg-neutral-900"},[(l(!0),r(z,null,F(e.clearable?[{value:"",label:"All"},...e.options]:e.options,n=>(l(),r("li",{key:n.value,role:"option","aria-selected":t.value===n.value,class:"flex h-7 cursor-pointer items-center gap-2 rounded-md px-2 text-[13px] text-neutral-700 hover:bg-black/[0.04] dark:text-neutral-300 dark:hover:bg-white/[0.06]",onClick:ge=>c(n.value)},[u(b(O),{class:w(["h-3.5 w-3.5 shrink-0",t.value===n.value?"":"invisible"])},null,8,["class"]),"icon"in n&&n.icon?(l(),r("img",{key:0,src:n.icon,alt:"",class:"h-4 w-4 shrink-0"},null,8,xe)):f("",!0),o("span",ye,v(n.label),1),"count"in n&&n.count!==null&&n.count!==void 0?(l(),r("span",we,v(n.count),1)):f("",!0)],8,ke))),128))],8,he)):f("",!0)],544))}});export{W as I,Me as _,Be as a,_e as b,de as c,Ve as d,Y as e,ne as l};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as c,b as s,e as a,f as n,q as l,g as o,z as i}from"./vue-CnrejLtC.js";import{_ as r}from"./index-
|
|
1
|
+
import{d as c,b as s,e as a,f as n,q as l,g as o,z as i}from"./vue-CnrejLtC.js";import{_ as r}from"./index-BwlCQIem.js";const d={class:"flex items-start justify-between gap-6"},u={class:"flex min-w-0 items-start gap-3"},m={class:"min-w-0"},f={class:"flex flex-wrap items-baseline gap-2"},x={class:"min-w-0 break-words text-2xl font-medium tracking-tight text-neutral-900 dark:text-neutral-100"},_={key:0,class:"text-sm tabular-nums text-neutral-400 dark:text-neutral-500"},h={key:0,class:"mt-1 max-w-2xl text-sm text-neutral-500 dark:text-neutral-400"},p={key:0,class:"flex shrink-0 items-center gap-2 pt-0.5"},B=c({__name:"UiPageHeader",props:{title:{},count:{},description:{}},setup(t){return(e,y)=>(a(),s("header",d,[n("div",u,[o(e.$slots,"leading"),n("div",m,[n("div",f,[n("h1",x,i(t.title),1),t.count!==null&&t.count!==void 0?(a(),s("span",_,i(t.count),1)):l("",!0),o(e.$slots,"badge")]),t.description?(a(),s("p",h,i(t.description),1)):l("",!0)])]),e.$slots.actions?(a(),s("div",p,[o(e.$slots,"actions")])):l("",!0)]))}}),g={},k={class:"h-full w-full overflow-y-auto"},w={class:"mx-auto flex w-full max-w-[1200px] flex-col gap-4 px-4 py-6 lg:px-8 lg:py-8"};function v(t,e){return a(),s("div",k,[n("div",w,[o(t.$slots,"default")])])}const U=r(g,[["render",v]]);export{U,B as _};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as z,b as I}from"./settingsData-DPy9F9nQ.js";import{e as A,E as G,b as d}from"./index-
|
|
1
|
+
import{f as z,b as I}from"./settingsData-DPy9F9nQ.js";import{e as A,E as G,b as d}from"./index-BwlCQIem.js";import{d as H,r as o,o as Q,b as N,e as T,D as s,E as W,l,A as r,y,z as F,f as i,q as P,ab as X,ae as D}from"./vue-CnrejLtC.js";import{r as $}from"./formkit-B1fIUqP-.js";import{c as h,a as O}from"./form-errors-D9RXsjd2.js";import{_ as Z}from"./DataTable.vue_vue_type_script_setup_true_lang-CkugFRtR.js";import{_ as j}from"./Modal.vue_vue_type_script_setup_true_lang-UlrwSOT8.js";import{_ as x}from"./UiButton.vue_vue_type_script_setup_true_lang-CVyrFcWg.js";import{_ as ee}from"./useClipboardCopy-DURjq7gM.js";import{u as ae}from"./useActionFeedback-BrPTIt_1.js";import"./vendor-L6I0G397.js";import"./syntax-XeetdF8c.js";import"./UiFilterMenu.vue_vue_type_script_setup_true_lang-BE1kHACC.js";import"./UiEmptyState.vue_vue_type_script_setup_true_lang-BD_dt9VV.js";import"./UiPageFrame-CP9KRIIM.js";const se={class:"flex h-full min-h-0 flex-col"},te={class:"inline-flex items-center gap-2"},le={key:0,class:"rounded-full bg-accent-100 px-2 py-0.5 text-xs font-medium text-accent-800 dark:bg-accent-900 dark:text-accent-200"},re={key:1,class:"rounded-full bg-neutral-100 px-2 py-0.5 text-xs font-medium text-neutral-600 dark:bg-neutral-800 dark:text-neutral-300",title:"Signs in through the Standard Agents platform connection"},oe={class:"space-y-4"},ne={class:"flex justify-end gap-2"},de={class:"space-y-4"},ie={class:"flex justify-end gap-2"},Ve=H({__name:"UsersView",setup(ue){const b=o(!1),g=o(!1),k=o([]),C=o(null),V=o(!1),_=o(null),u=o(!1),m=o(!1),c=o(null),p=o(null),{feedback:q,setFeedback:f,clearFeedback:U}=ae(),v=o({username:"",role:"admin"}),M=[{value:"admin",label:"Admin"}],J=[{key:"username",label:"Username",width:"w-1/3"},{key:"role",label:"Role",width:"w-1/4"},{key:"created_at",label:"Created",width:"w-1/3",formatter:a=>z(a)}],R=[{icon:"edit",label:"Edit",handler:async a=>{_.value=a,v.value={username:a.username,role:a.role},g.value=!0}},{icon:"delete",label:"Delete",confirm:!0,confirmMessage:"Are you sure you want to delete this user? This action cannot be undone.",handler:async a=>{await L(a.id)}}],w=async()=>{V.value=!0,U();try{const a=await d.request("/api/users"),e=await d.readJson(a);k.value=e.users||[]}catch(a){f("error",A(a)),k.value=[]}finally{V.value=!1}},B=async()=>{try{const a=await d.request("/api/auth/me"),e=await d.readJson(a);C.value=e.user?.id??null}catch{C.value=null}},K=async a=>{u.value=!0,U(),h(c);try{await d.request("/api/users",{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify(a)}),await w(),E(),f("success","User added.")}catch(e){O(e,c)}finally{u.value=!1}},Y=async a=>{if(_.value){m.value=!0,U(),h(p);try{const e=I(a);await d.request(`/api/users/${_.value.id}`,{headers:{"Content-Type":"application/json"},method:"PUT",body:JSON.stringify(e)}),await w(),S(),f("success","User updated.")}catch(e){O(e,p)}finally{m.value=!1}}},L=async a=>{U();try{await d.request(`/api/users/${a}`,{method:"DELETE"}),await w(),f("success","User deleted.")}catch(e){f("error",A(e))}},E=()=>{h(c),$("add-user-form"),b.value=!1},S=()=>{h(p),$("edit-user-form"),g.value=!1,_.value=null};return Q(()=>{w(),B()}),(a,e)=>{const n=X("FormKit");return T(),N("div",se,[s(Z,{title:"Users",description:"Manage user accounts and permissions","primary-action":{label:"Add user",handler:()=>b.value=!0},columns:J,data:k.value,actions:R,loading:V.value,"empty-message":r(G).tables.users},W({"cell-username":l(({row:t})=>[i("span",te,[i("span",null,F(t.username),1),t.id===C.value?(T(),N("span",le," You ")):P("",!0),t.source==="standard_agents"?(T(),N("span",re," Standard Agents login ")):P("",!0)])]),_:2},[r(q)?{name:"notices",fn:l(()=>[s(r(ee),{variant:r(q).variant},{default:l(()=>[y(F(r(A)(r(q).message)),1)]),_:1},8,["variant"])]),key:"0"}:void 0]),1032,["primary-action","data","loading","empty-message"]),s(j,{modelValue:b.value,"onUpdate:modelValue":e[1]||(e[1]=t=>b.value=t),title:"Add user",onClose:E},{footer:l(()=>[i("div",ne,[s(r(x),{variant:"secondary",disabled:u.value,onClick:E},{default:l(()=>[...e[6]||(e[6]=[y(" Cancel ",-1)])]),_:1},8,["disabled"]),s(r(x),{type:"submit",form:"add-user-form",loading:u.value},{default:l(()=>[...e[7]||(e[7]=[y(" Add user ",-1)])]),_:1},8,["loading"])])]),default:l(()=>[s(n,{id:"add-user-form",type:"form",actions:!1,disabled:u.value,onSubmit:K,onNode:e[0]||(e[0]=t=>c.value=t)},{default:l(()=>[i("div",oe,[s(r(D),{node:c.value||void 0},null,8,["node"]),s(n,{type:"text",name:"username",label:"Username",validation:"required","validation-messages":{required:"Username is required"}}),s(n,{type:"password",name:"password",label:"Password",validation:"required","validation-messages":{required:"Password is required"}}),s(n,{type:"selectSearch",name:"role",label:"Role",options:M,value:"admin",placeholder:"Select role"})])]),_:1},8,["disabled"])]),_:1},8,["modelValue"]),s(j,{modelValue:g.value,"onUpdate:modelValue":e[5]||(e[5]=t=>g.value=t),title:"Edit user",onClose:S},{footer:l(()=>[i("div",ie,[s(r(x),{variant:"secondary",disabled:m.value,onClick:S},{default:l(()=>[...e[8]||(e[8]=[y(" Cancel ",-1)])]),_:1},8,["disabled"]),s(r(x),{type:"submit",form:"edit-user-form",loading:m.value},{default:l(()=>[...e[9]||(e[9]=[y(" Update user ",-1)])]),_:1},8,["loading"])])]),default:l(()=>[s(n,{id:"edit-user-form",type:"form",actions:!1,disabled:m.value,onSubmit:Y,onNode:e[4]||(e[4]=t=>p.value=t)},{default:l(()=>[i("div",de,[s(r(D),{node:p.value||void 0},null,8,["node"]),s(n,{type:"text",name:"username",label:"Username",validation:"required",modelValue:v.value.username,"onUpdate:modelValue":e[2]||(e[2]=t=>v.value.username=t),"validation-messages":{required:"Username is required"}},null,8,["modelValue"]),s(n,{type:"password",name:"password",label:"Password",help:"Leave blank to keep current password"}),s(n,{type:"selectSearch",name:"role",label:"Role",options:M,modelValue:v.value.role,"onUpdate:modelValue":e[3]||(e[3]=t=>v.value.role=t),placeholder:"Select role"},null,8,["modelValue"])])]),_:1},8,["disabled"])]),_:1},8,["modelValue"])])}}});export{Ve as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as m,e as s,g as ce,d as ve,c as U,R as me,r as i,w as pe,o as be,k as b,l as V,q as D,f as n,A as l,y as $,z as N,D as v,ab as q,ae as fe,F as H,B as W,n as J,aX as Z,aY as Q,aR as X,L as G,C as ee}from"./vue-CnrejLtC.js";import{_ as ae,e as P,aj as he,E as xe,bQ as ke,b as B}from"./index-DnlG7hIl.js";import{_ as ye}from"./UiButton.vue_vue_type_script_setup_true_lang-BezveAaR.js";import{_ as _e}from"./useClipboardCopy-DURjq7gM.js";import{a as ge}from"./UiEmptyState.vue_vue_type_script_setup_true_lang-n9hcWKvI.js";import{c as L,a as we,b as Ve}from"./form-errors-cxIParHK.js";import{u as $e}from"./useActionFeedback-BrPTIt_1.js";import"./formkit-B1fIUqP-.js";import"./syntax-XeetdF8c.js";import"./vendor-L6I0G397.js";const Ee={},Ce={class:"p-8 w-full max-w-7xl mx-auto"};function Re(Y,O){return s(),m("div",Ce,[ce(Y.$slots,"default")])}const Se=ae(Ee,[["render",Re]]),Te={class:"overflow-hidden rounded-xl border border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900"},Ae={class:"border-b border-neutral-200 px-5 py-4 dark:border-neutral-800"},Ne={class:"text-lg font-semibold text-neutral-900 dark:text-neutral-50"},je={class:"mt-1 text-sm text-neutral-500 dark:text-neutral-400"},Ke={key:0,class:"p-5 text-sm text-neutral-600 dark:text-neutral-300"},Me={key:0,class:"flex justify-center py-8"},ze={key:1,class:"space-y-5"},Ie={key:1,class:"space-y-2"},Fe={class:"min-w-0"},Ue=["title"],De=["disabled","title","onClick"],Pe=["disabled","onClick"],Be={class:"space-y-2 border-t border-neutral-200 pt-5 dark:border-neutral-800"},Le=["disabled","title","onClick"],Ye=["disabled","onClick"],Oe=["disabled"],qe={class:"flex flex-col gap-3 border-t border-neutral-200 pt-5 dark:border-neutral-800 sm:flex-row sm:items-center sm:justify-between"},te="**********",He=ve({__name:"VariablesView",setup(Y){const O=me(),y=U(()=>O.name==="instance-variables"),h=U(()=>({title:y.value?"Instance variables":"My variables",description:y.value?"Defaults for the full Standard Agents Builder instance. These apply when a thread or user does not provide a more local value.":"Defaults for your user account. These override instance values and are overridden by thread-specific values.",endpoint:y.value?"/envs/instance":"/users/me/env",successMessage:y.value?"Instance variables saved.":"User variables saved."}));let re=0;const _=()=>({id:`scoped-env-${re++}`,name:"",value:"",secret:!0}),E=i(!1),j=i(!1),o=i(!1),x=i([]),C=i({}),c=i({}),g=i({}),w=i({}),k=i({}),p=i([_()]),f=i(null),{feedback:K,setFeedback:R,clearFeedback:S}=$e(),T=U(()=>x.value.filter(a=>!k.value[a.name])),M=(a={})=>({outer:"$remove:mb-4 !mb-0 min-w-0",wrapper:"$remove:flex-1 flex min-w-0",inner:"$reset min-w-0",input:["$reset block h-9 w-full min-w-0 rounded border border-neutral-200 bg-white px-3 py-2 text-sm text-neutral-700 placeholder:text-neutral-400 disabled:opacity-60 dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-200",a.mono?"font-mono":""].filter(Boolean).join(" "),help:"$remove:hidden hidden",messages:"$remove:formkit-messages hidden"}),A=a=>{const t={},u={};for(const d of a)t[d.name]=d.type==="secret"?te:d.value??"",u[d.name]=d.type==="secret";C.value=t,c.value=u,g.value={},w.value={},k.value={}},z=(a,t)=>{Ve(t?{error:a,fieldErrors:t}:{error:a},f)||R("error",a)},se=a=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(a.trim()),ne=a=>{g.value={...g.value,[a]:!0}},le=a=>{c.value={...c.value,[a]:!c.value[a]},w.value={...w.value,[a]:!0}},oe=a=>{k.value={...k.value,[a]:!0},S(),L(f)},de=()=>{p.value=[...p.value,_()]},ie=a=>{const t=p.value.filter(u=>u.id!==a);p.value=t.length>0?t:[_()]},I=async()=>{E.value=!0,L(f);try{if(j.value=!y.value&&!(await ke()).account,j.value){S(),x.value=[],A([]);return}const a=await B.request(`/api${h.value.endpoint}`),t=await B.readJson(a);S(),x.value=t.variables||[],A(x.value)}catch(a){const t=P(a);R("error",t),x.value=[],A([])}finally{E.value=!1}},F=async()=>{if(o.value)return;S(),L(f);const a={},t={},u=Object.keys(k.value).filter(e=>k.value[e]);for(const e of T.value){if(!g.value[e.name]&&!w.value[e.name])continue;const r=C.value[e.name]??"";r!==te&&(a[e.name]=r),(g.value[e.name]||w.value[e.name])&&(t[e.name]=c.value[e.name]?"secret":"text")}const d=new Set;for(const e of p.value){const r=e.name.trim(),ue=e.value.length>0;if(!(!r&&!ue)){if(!r||!se(r)){z("Use a valid env name like WEATHER_API_KEY",{[`${e.id}_name`]:"Use a valid env name like WEATHER_API_KEY"});return}if(d.has(r)){z(`Duplicate env name: ${r}`,{[`${e.id}_name`]:`Duplicate env name: ${r}`});return}d.add(r),a[r]=e.value,t[r]=e.secret?"secret":"text"}}if(Object.keys(a).length===0&&Object.keys(t).length===0&&u.length===0){z("No env changes to save");return}o.value=!0;try{await B.request(`/api${h.value.endpoint}`,{headers:{"Content-Type":"application/json"},method:"PATCH",body:JSON.stringify({env_patch:a,env_type_patch:t,env_delete:u})}),await I(),p.value=[_()],R("success",h.value.successMessage)}catch(e){we(e,f)||R("error",P(e))}finally{o.value=!1}};return pe(()=>h.value.endpoint,()=>{x.value=[],A([]),p.value=[_()],I()}),be(()=>{I()}),(a,t)=>{const u=q("RouterLink"),d=q("FormKit");return s(),b(Se,null,{default:V(()=>[l(K)?(s(),b(l(_e),{key:0,variant:l(K).variant,class:"mb-4"},{default:V(()=>[$(N(l(P)(l(K).message)),1)]),_:1},8,["variant"])):D("",!0),n("div",Te,[n("div",Ae,[n("h1",Ne,N(h.value.title),1),n("p",je,N(h.value.description),1),t[1]||(t[1]=n("p",{class:"mt-2 text-xs text-neutral-500 dark:text-neutral-400"}," Resolution order: thread, user, instance, agent, then prompt. ",-1))]),j.value?(s(),m("p",Ke,[t[3]||(t[3]=$(" You are signed in as the super admin, which has no user account and no variables of its own. Set defaults for every user in ",-1)),v(u,{to:{name:"instance-variables"},class:"font-medium text-accent-700 hover:text-accent-900 dark:text-accent-300 dark:hover:text-accent-100"},{default:V(()=>[...t[2]||(t[2]=[$("instance variables",-1)])]),_:1}),t[4]||(t[4]=$(". ",-1))])):(s(),b(d,{key:1,type:"form",id:"scoped-env-form",actions:!1,disabled:o.value,onSubmit:F,onNode:t[0]||(t[0]=e=>f.value=e),"form-class":"$reset p-5"},{default:V(()=>[v(l(fe),{node:f.value||void 0},null,8,["node"]),E.value?(s(),m("div",Me,[v(he)])):(s(),m("div",ze,[T.value.length===0?(s(),b(l(ge),{key:0,class:"rounded-lg border border-dashed border-neutral-200 dark:border-neutral-800",message:l(xe).tables.variables},null,8,["message"])):D("",!0),T.value.length>0?(s(),m("div",Ie,[(s(!0),m(H,null,W(T.value,e=>(s(),m("div",{key:e.name,class:"scoped-env-row grid items-center gap-2"},[n("div",Fe,[n("div",{class:"truncate text-xs font-mono text-neutral-700 dark:text-neutral-200",title:e.name},N(e.name),9,Ue)]),v(d,{type:c.value[e.name]?"password":"text",name:`env_${e.name}`,modelValue:C.value[e.name],"onUpdate:modelValue":r=>C.value[e.name]=r,placeholder:"Value",disabled:o.value,"outer-class":"$reset",classes:M(),onInput:r=>ne(e.name)},null,8,["type","name","modelValue","onUpdate:modelValue","disabled","classes","onInput"]),n("button",{type:"button",class:J(["inline-flex h-9 w-9 shrink-0 items-center justify-center rounded border border-neutral-200 text-neutral-500 hover:bg-neutral-50 hover:text-neutral-900 disabled:opacity-50 dark:border-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:hover:text-white",c.value[e.name]?"":"text-neutral-300 dark:text-neutral-600"]),disabled:o.value,title:c.value[e.name]?"Treat as secret":"Treat as text",onClick:r=>le(e.name)},[c.value[e.name]?(s(),b(l(Z),{key:0,size:14})):(s(),b(l(Q),{key:1,size:14}))],10,De),n("button",{type:"button",class:"inline-flex h-9 w-9 shrink-0 items-center justify-center rounded border border-neutral-200 text-neutral-400 hover:border-red-200 hover:bg-red-50 hover:text-red-600 disabled:opacity-50 dark:border-neutral-800 dark:text-neutral-500 dark:hover:border-red-900 dark:hover:bg-red-950 dark:hover:text-red-400",disabled:o.value,title:"Remove variable",onClick:r=>oe(e.name)},[v(l(X),{size:14})],8,Pe)]))),128))])):D("",!0),n("div",Be,[(s(!0),m(H,null,W(p.value,e=>(s(),m("div",{key:e.id,class:"scoped-env-row grid items-center gap-2"},[v(d,{type:"text",name:`${e.id}_name`,modelValue:e.name,"onUpdate:modelValue":r=>e.name=r,placeholder:"WEATHER_API_KEY",disabled:o.value,validation:"envName","validation-visibility":"submit","outer-class":"$reset",classes:M({mono:!0}),onKeydown:G(ee(F,["prevent"]),["enter"])},null,8,["name","modelValue","onUpdate:modelValue","disabled","classes","onKeydown"]),v(d,{type:e.secret?"password":"text",name:`${e.id}_value`,modelValue:e.value,"onUpdate:modelValue":r=>e.value=r,placeholder:"Value",disabled:o.value,"outer-class":"$reset",classes:M(),onKeydown:G(ee(F,["prevent"]),["enter"])},null,8,["type","name","modelValue","onUpdate:modelValue","disabled","classes","onKeydown"]),n("button",{type:"button",class:J(["inline-flex h-9 w-9 shrink-0 items-center justify-center rounded border border-neutral-200 text-neutral-500 hover:bg-neutral-50 hover:text-neutral-900 disabled:opacity-50 dark:border-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:hover:text-white",e.secret?"":"text-neutral-300 dark:text-neutral-600"]),disabled:o.value,title:e.secret?"Treat as secret":"Treat as text",onClick:r=>e.secret=!e.secret},[e.secret?(s(),b(l(Z),{key:0,size:14})):(s(),b(l(Q),{key:1,size:14}))],10,Le),n("button",{type:"button",class:"inline-flex h-9 w-9 shrink-0 items-center justify-center rounded border border-neutral-200 text-neutral-400 hover:border-red-200 hover:bg-red-50 hover:text-red-600 disabled:opacity-50 dark:border-neutral-800 dark:text-neutral-500 dark:hover:border-red-900 dark:hover:bg-red-950 dark:hover:text-red-400",disabled:o.value,title:"Remove new row",onClick:r=>ie(e.id)},[v(l(X),{size:14})],8,Ye)]))),128)),n("button",{type:"button",class:"text-sm font-medium text-neutral-500 hover:text-neutral-900 disabled:opacity-50 dark:text-neutral-400 dark:hover:text-neutral-100",disabled:o.value,onClick:de}," Add another variable ",8,Oe)]),n("div",qe,[t[6]||(t[6]=n("p",{class:"text-xs text-neutral-500 dark:text-neutral-400"}," Secret values stay encrypted at rest and remain write-only until you switch them to text. ",-1)),v(l(ye),{type:"submit",form:"scoped-env-form",loading:o.value,disabled:o.value||E.value},{default:V(()=>[...t[5]||(t[5]=[$(" Save variables ",-1)])]),_:1},8,["loading","disabled"])])]))]),_:1},8,["disabled"]))])]),_:1})}}}),st=ae(He,[["__scopeId","data-v-6fa6de8f"]]);export{st as default};
|
|
1
|
+
import{b as m,e as s,g as ce,d as ve,c as U,R as me,r as i,w as pe,o as be,k as b,l as V,q as D,f as n,A as l,y as $,z as N,D as v,ab as q,ae as fe,F as H,B as W,n as J,aX as Z,aY as X,aR as G,L as Q,C as ee}from"./vue-CnrejLtC.js";import{_ as ae,e as P,aj as he,E as xe,bR as ke,b as B}from"./index-BwlCQIem.js";import{_ as ye}from"./UiButton.vue_vue_type_script_setup_true_lang-CVyrFcWg.js";import{_ as _e}from"./useClipboardCopy-DURjq7gM.js";import{a as ge}from"./UiEmptyState.vue_vue_type_script_setup_true_lang-BD_dt9VV.js";import{c as L,a as we,b as Ve}from"./form-errors-D9RXsjd2.js";import{u as $e}from"./useActionFeedback-BrPTIt_1.js";import"./formkit-B1fIUqP-.js";import"./syntax-XeetdF8c.js";import"./vendor-L6I0G397.js";const Ee={},Ce={class:"p-8 w-full max-w-7xl mx-auto"};function Re(Y,O){return s(),m("div",Ce,[ce(Y.$slots,"default")])}const Se=ae(Ee,[["render",Re]]),Te={class:"overflow-hidden rounded-xl border border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900"},Ae={class:"border-b border-neutral-200 px-5 py-4 dark:border-neutral-800"},Ne={class:"text-lg font-semibold text-neutral-900 dark:text-neutral-50"},je={class:"mt-1 text-sm text-neutral-500 dark:text-neutral-400"},Ke={key:0,class:"p-5 text-sm text-neutral-600 dark:text-neutral-300"},Me={key:0,class:"flex justify-center py-8"},ze={key:1,class:"space-y-5"},Ie={key:1,class:"space-y-2"},Fe={class:"min-w-0"},Ue=["title"],De=["disabled","title","onClick"],Pe=["disabled","onClick"],Be={class:"space-y-2 border-t border-neutral-200 pt-5 dark:border-neutral-800"},Le=["disabled","title","onClick"],Ye=["disabled","onClick"],Oe=["disabled"],qe={class:"flex flex-col gap-3 border-t border-neutral-200 pt-5 dark:border-neutral-800 sm:flex-row sm:items-center sm:justify-between"},te="**********",He=ve({__name:"VariablesView",setup(Y){const O=me(),y=U(()=>O.name==="instance-variables"),h=U(()=>({title:y.value?"Instance variables":"My variables",description:y.value?"Defaults for the full Standard Agents Builder instance. These apply when a thread or user does not provide a more local value.":"Defaults for your user account. These override instance values and are overridden by thread-specific values.",endpoint:y.value?"/envs/instance":"/users/me/env",successMessage:y.value?"Instance variables saved.":"User variables saved."}));let re=0;const _=()=>({id:`scoped-env-${re++}`,name:"",value:"",secret:!0}),E=i(!1),j=i(!1),o=i(!1),x=i([]),C=i({}),c=i({}),g=i({}),w=i({}),k=i({}),p=i([_()]),f=i(null),{feedback:K,setFeedback:R,clearFeedback:S}=$e(),T=U(()=>x.value.filter(a=>!k.value[a.name])),M=(a={})=>({outer:"$remove:mb-4 !mb-0 min-w-0",wrapper:"$remove:flex-1 flex min-w-0",inner:"$reset min-w-0",input:["$reset block h-9 w-full min-w-0 rounded border border-neutral-200 bg-white px-3 py-2 text-sm text-neutral-700 placeholder:text-neutral-400 disabled:opacity-60 dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-200",a.mono?"font-mono":""].filter(Boolean).join(" "),help:"$remove:hidden hidden",messages:"$remove:formkit-messages hidden"}),A=a=>{const t={},u={};for(const d of a)t[d.name]=d.type==="secret"?te:d.value??"",u[d.name]=d.type==="secret";C.value=t,c.value=u,g.value={},w.value={},k.value={}},z=(a,t)=>{Ve(t?{error:a,fieldErrors:t}:{error:a},f)||R("error",a)},se=a=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(a.trim()),ne=a=>{g.value={...g.value,[a]:!0}},le=a=>{c.value={...c.value,[a]:!c.value[a]},w.value={...w.value,[a]:!0}},oe=a=>{k.value={...k.value,[a]:!0},S(),L(f)},de=()=>{p.value=[...p.value,_()]},ie=a=>{const t=p.value.filter(u=>u.id!==a);p.value=t.length>0?t:[_()]},I=async()=>{E.value=!0,L(f);try{if(j.value=!y.value&&!(await ke()).account,j.value){S(),x.value=[],A([]);return}const a=await B.request(`/api${h.value.endpoint}`),t=await B.readJson(a);S(),x.value=t.variables||[],A(x.value)}catch(a){const t=P(a);R("error",t),x.value=[],A([])}finally{E.value=!1}},F=async()=>{if(o.value)return;S(),L(f);const a={},t={},u=Object.keys(k.value).filter(e=>k.value[e]);for(const e of T.value){if(!g.value[e.name]&&!w.value[e.name])continue;const r=C.value[e.name]??"";r!==te&&(a[e.name]=r),(g.value[e.name]||w.value[e.name])&&(t[e.name]=c.value[e.name]?"secret":"text")}const d=new Set;for(const e of p.value){const r=e.name.trim(),ue=e.value.length>0;if(!(!r&&!ue)){if(!r||!se(r)){z("Use a valid env name like WEATHER_API_KEY",{[`${e.id}_name`]:"Use a valid env name like WEATHER_API_KEY"});return}if(d.has(r)){z(`Duplicate env name: ${r}`,{[`${e.id}_name`]:`Duplicate env name: ${r}`});return}d.add(r),a[r]=e.value,t[r]=e.secret?"secret":"text"}}if(Object.keys(a).length===0&&Object.keys(t).length===0&&u.length===0){z("No env changes to save");return}o.value=!0;try{await B.request(`/api${h.value.endpoint}`,{headers:{"Content-Type":"application/json"},method:"PATCH",body:JSON.stringify({env_patch:a,env_type_patch:t,env_delete:u})}),await I(),p.value=[_()],R("success",h.value.successMessage)}catch(e){we(e,f)||R("error",P(e))}finally{o.value=!1}};return pe(()=>h.value.endpoint,()=>{x.value=[],A([]),p.value=[_()],I()}),be(()=>{I()}),(a,t)=>{const u=q("RouterLink"),d=q("FormKit");return s(),b(Se,null,{default:V(()=>[l(K)?(s(),b(l(_e),{key:0,variant:l(K).variant,class:"mb-4"},{default:V(()=>[$(N(l(P)(l(K).message)),1)]),_:1},8,["variant"])):D("",!0),n("div",Te,[n("div",Ae,[n("h1",Ne,N(h.value.title),1),n("p",je,N(h.value.description),1),t[1]||(t[1]=n("p",{class:"mt-2 text-xs text-neutral-500 dark:text-neutral-400"}," Resolution order: thread, user, instance, agent, then prompt. ",-1))]),j.value?(s(),m("p",Ke,[t[3]||(t[3]=$(" You are signed in as the super admin, which has no user account and no variables of its own. Set defaults for every user in ",-1)),v(u,{to:{name:"instance-variables"},class:"font-medium text-accent-700 hover:text-accent-900 dark:text-accent-300 dark:hover:text-accent-100"},{default:V(()=>[...t[2]||(t[2]=[$("instance variables",-1)])]),_:1}),t[4]||(t[4]=$(". ",-1))])):(s(),b(d,{key:1,type:"form",id:"scoped-env-form",actions:!1,disabled:o.value,onSubmit:F,onNode:t[0]||(t[0]=e=>f.value=e),"form-class":"$reset p-5"},{default:V(()=>[v(l(fe),{node:f.value||void 0},null,8,["node"]),E.value?(s(),m("div",Me,[v(he)])):(s(),m("div",ze,[T.value.length===0?(s(),b(l(ge),{key:0,class:"rounded-lg border border-dashed border-neutral-200 dark:border-neutral-800",message:l(xe).tables.variables},null,8,["message"])):D("",!0),T.value.length>0?(s(),m("div",Ie,[(s(!0),m(H,null,W(T.value,e=>(s(),m("div",{key:e.name,class:"scoped-env-row grid items-center gap-2"},[n("div",Fe,[n("div",{class:"truncate text-xs font-mono text-neutral-700 dark:text-neutral-200",title:e.name},N(e.name),9,Ue)]),v(d,{type:c.value[e.name]?"password":"text",name:`env_${e.name}`,modelValue:C.value[e.name],"onUpdate:modelValue":r=>C.value[e.name]=r,placeholder:"Value",disabled:o.value,"outer-class":"$reset",classes:M(),onInput:r=>ne(e.name)},null,8,["type","name","modelValue","onUpdate:modelValue","disabled","classes","onInput"]),n("button",{type:"button",class:J(["inline-flex h-9 w-9 shrink-0 items-center justify-center rounded border border-neutral-200 text-neutral-500 hover:bg-neutral-50 hover:text-neutral-900 disabled:opacity-50 dark:border-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:hover:text-white",c.value[e.name]?"":"text-neutral-300 dark:text-neutral-600"]),disabled:o.value,title:c.value[e.name]?"Treat as secret":"Treat as text",onClick:r=>le(e.name)},[c.value[e.name]?(s(),b(l(Z),{key:0,size:14})):(s(),b(l(X),{key:1,size:14}))],10,De),n("button",{type:"button",class:"inline-flex h-9 w-9 shrink-0 items-center justify-center rounded border border-neutral-200 text-neutral-400 hover:border-red-200 hover:bg-red-50 hover:text-red-600 disabled:opacity-50 dark:border-neutral-800 dark:text-neutral-500 dark:hover:border-red-900 dark:hover:bg-red-950 dark:hover:text-red-400",disabled:o.value,title:"Remove variable",onClick:r=>oe(e.name)},[v(l(G),{size:14})],8,Pe)]))),128))])):D("",!0),n("div",Be,[(s(!0),m(H,null,W(p.value,e=>(s(),m("div",{key:e.id,class:"scoped-env-row grid items-center gap-2"},[v(d,{type:"text",name:`${e.id}_name`,modelValue:e.name,"onUpdate:modelValue":r=>e.name=r,placeholder:"WEATHER_API_KEY",disabled:o.value,validation:"envName","validation-visibility":"submit","outer-class":"$reset",classes:M({mono:!0}),onKeydown:Q(ee(F,["prevent"]),["enter"])},null,8,["name","modelValue","onUpdate:modelValue","disabled","classes","onKeydown"]),v(d,{type:e.secret?"password":"text",name:`${e.id}_value`,modelValue:e.value,"onUpdate:modelValue":r=>e.value=r,placeholder:"Value",disabled:o.value,"outer-class":"$reset",classes:M(),onKeydown:Q(ee(F,["prevent"]),["enter"])},null,8,["type","name","modelValue","onUpdate:modelValue","disabled","classes","onKeydown"]),n("button",{type:"button",class:J(["inline-flex h-9 w-9 shrink-0 items-center justify-center rounded border border-neutral-200 text-neutral-500 hover:bg-neutral-50 hover:text-neutral-900 disabled:opacity-50 dark:border-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:hover:text-white",e.secret?"":"text-neutral-300 dark:text-neutral-600"]),disabled:o.value,title:e.secret?"Treat as secret":"Treat as text",onClick:r=>e.secret=!e.secret},[e.secret?(s(),b(l(Z),{key:0,size:14})):(s(),b(l(X),{key:1,size:14}))],10,Le),n("button",{type:"button",class:"inline-flex h-9 w-9 shrink-0 items-center justify-center rounded border border-neutral-200 text-neutral-400 hover:border-red-200 hover:bg-red-50 hover:text-red-600 disabled:opacity-50 dark:border-neutral-800 dark:text-neutral-500 dark:hover:border-red-900 dark:hover:bg-red-950 dark:hover:text-red-400",disabled:o.value,title:"Remove new row",onClick:r=>ie(e.id)},[v(l(G),{size:14})],8,Ye)]))),128)),n("button",{type:"button",class:"text-sm font-medium text-neutral-500 hover:text-neutral-900 disabled:opacity-50 dark:text-neutral-400 dark:hover:text-neutral-100",disabled:o.value,onClick:de}," Add another variable ",8,Oe)]),n("div",qe,[t[6]||(t[6]=n("p",{class:"text-xs text-neutral-500 dark:text-neutral-400"}," Secret values stay encrypted at rest and remain write-only until you switch them to text. ",-1)),v(l(ye),{type:"submit",form:"scoped-env-form",loading:o.value,disabled:o.value||E.value},{default:V(()=>[...t[5]||(t[5]=[$(" Save variables ",-1)])]),_:1},8,["loading","disabled"])])]))]),_:1},8,["disabled"]))])]),_:1})}}}),st=ae(He,[["__scopeId","data-v-6fa6de8f"]]);export{st as default};
|