@standardagents/builder 0.24.5 → 0.24.7

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.
Files changed (54) hide show
  1. package/dist/built-in-routes.js +303 -37
  2. package/dist/built-in-routes.js.map +1 -1
  3. package/dist/client/{ApiKeysView-CmObAp7n.js → ApiKeysView-C_QyBNy2.js} +1 -1
  4. package/dist/client/CenteredContentView-c7OLhxvd.js +1 -0
  5. package/dist/client/CompositionView-DqKI6dJ9.js +32 -0
  6. package/dist/client/{ConfirmDialog.vue_vue_type_script_setup_true_lang-A1C0eTY7.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-DQIo2wlE.js} +1 -1
  7. package/dist/client/{CopyButton.vue_vue_type_script_setup_true_lang-D5q8qf4n.js → CopyButton.vue_vue_type_script_setup_true_lang-q-A7DQTq.js} +1 -1
  8. package/dist/client/{DataTable.vue_vue_type_script_setup_true_lang-DzPpurCp.js → DataTable.vue_vue_type_script_setup_true_lang-B0UNyBiO.js} +1 -1
  9. package/dist/client/{JsonViewer-CKqMMqjU.js → JsonViewer-DrA7M9_g.js} +1 -1
  10. package/dist/client/{LoginView-BY2NMQQF.js → LoginView-BxbNgfzz.js} +1 -1
  11. package/dist/client/{MarketplaceView-DVEMUvDq.js → MarketplaceView-DXrtN6-0.js} +1 -1
  12. package/dist/client/{Modal.vue_vue_type_script_setup_true_lang-1t6cxO9H.js → Modal.vue_vue_type_script_setup_true_lang-CLZzFYMW.js} +1 -1
  13. package/dist/client/{ModelModal.vue_vue_type_script_setup_true_lang-WFlATqyT.js → ModelModal.vue_vue_type_script_setup_true_lang-BaLZApRs.js} +1 -1
  14. package/dist/client/{ModelsView-_qZmXle8.js → ModelsView-CVtPgAVZ.js} +1 -1
  15. package/dist/client/{PromptEditView-DzY493YB.js → PromptEditView-Dhc0rBHD.js} +1 -1
  16. package/dist/client/{PromptModal-BQYwnWKw.js → PromptModal-DXt6M359.js} +1 -1
  17. package/dist/client/{PromptsView-DBiQ9X1g.js → PromptsView-y3yvzkjM.js} +1 -1
  18. package/dist/client/{ProvidersView-DEH34_v0.js → ProvidersView-DN-SmDPF.js} +1 -1
  19. package/dist/client/ThreadInspectorPane.vue_vue_type_script_setup_true_lang-lIW3rtYB.js +22 -0
  20. package/dist/client/ThreadsView-B1Xo2bP0.js +1 -0
  21. package/dist/client/{ToolsView-D-qvyctb.js → ToolsView-DYj_Mk9L.js} +1 -1
  22. package/dist/client/{UiCodeBlock.vue_vue_type_script_setup_true_lang-BawOR_eB.js → UiCodeBlock.vue_vue_type_script_setup_true_lang-BH3WC9G_.js} +1 -1
  23. package/dist/client/{UsersView-DaXRB61v.js → UsersView-BLNNFDUM.js} +1 -1
  24. package/dist/client/{VariablesView-DDomn-IB.js → VariablesView-D4-5tNwt.js} +1 -1
  25. package/dist/client/assets/{ThreadInspectorPane-CjK6SKEi.css → ThreadInspectorPane-CGrBd6US.css} +1 -1
  26. package/dist/client/assets/index-B38KmIlM.css +1 -0
  27. package/dist/client/{check-DKLwABgc.js → check-Dkzs1C3V.js} +1 -1
  28. package/dist/client/{chevron-right-DJJGHNE5.js → chevron-right-BGirddPg.js} +1 -1
  29. package/dist/client/{copy-CLWiDcxB.js → copy-C08OR8rY.js} +1 -1
  30. package/dist/client/{formkit-DcuuXZjC.js → formkit-YJ1Z7D5r.js} +1 -1
  31. package/dist/client/{index-DihZBCmQ.js → index-0OxNDXyK.js} +3 -3
  32. package/dist/client/index.html +4 -4
  33. package/dist/client/{package-CarOhnUs.js → package-guyzMTDG.js} +1 -1
  34. package/dist/client/{plus-zGapov7j.js → plus-DG3ZN5wg.js} +1 -1
  35. package/dist/client/{timeAgo-ASgzq6bq.js → timeAgo-D7V247YG.js} +1 -1
  36. package/dist/client/{useActionFeedback-uUrfjlCo.js → useActionFeedback-byARNQjQ.js} +1 -1
  37. package/dist/client/vue-BqC6IZDY.js +1 -0
  38. package/dist/{index-D7KMmRgr.d.ts → index-Bd--_E_1.d.ts} +18 -1
  39. package/dist/index.d.ts +1 -1
  40. package/dist/index.js +224 -41
  41. package/dist/index.js.map +1 -1
  42. package/dist/plugin.js +2 -0
  43. package/dist/plugin.js.map +1 -1
  44. package/dist/runtime.d.ts +19 -2
  45. package/dist/runtime.js +222 -41
  46. package/dist/runtime.js.map +1 -1
  47. package/dist/test.d.ts +1 -1
  48. package/package.json +5 -5
  49. package/dist/client/CenteredContentView-gJXa9UHE.js +0 -1
  50. package/dist/client/CompositionView-BohQwGLE.js +0 -32
  51. package/dist/client/ThreadInspectorPane.vue_vue_type_script_setup_true_lang-Dtd1VFrj.js +0 -22
  52. package/dist/client/ThreadsView-m1CAq3Aw.js +0 -1
  53. package/dist/client/assets/index-V68N0r_5.css +0 -1
  54. package/dist/client/vue-2tGL2Ulx.js +0 -1
@@ -1 +1 @@
1
- import{A as J,b as m,e as a,f as d,d as L,m as C,z as h,q as f,J as o,k as p,s as V,u as H,j as w,_ as pe,B as j,g as U,r as $,w as T,F as ne,l as se,K as ge,h as P,a3 as xe,c as x,O as re,a5 as ye,ao as we,a4 as Se,C as $e,D as Ce}from"./vue-2tGL2Ulx.js";import{_ as Be}from"./Modal.vue_vue_type_script_setup_true_lang-1t6cxO9H.js";import{_,J as Te,$ as He,L as X,i as Y,M as ee,z as te,C as Fe,a0 as Pe,a1 as Ve,a2 as Ee,a3 as Me,a4 as ze,a5 as Ne,m as De}from"./index-DihZBCmQ.js";import{I as Re}from"./check-DKLwABgc.js";const Ie={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Le(e,c){return a(),m("svg",Ie,[...c[0]||(c[0]=[d("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z"},null,-1)])])}const ae=J({name:"lucide-wrench",render:Le}),Ke={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ae(e,c){return a(),m("svg",Ke,[...c[0]||(c[0]=[d("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"},null,-1)])])}const le=J({name:"lucide-zap",render:Ae}),je={class:"p-6 border-t border-neutral-200 dark:border-neutral-700 flex-shrink-0"},qe={key:1,class:"flex items-center gap-3"},Oe={key:0,class:"text-sm text-red-600 dark:text-red-400"},_e=L({__name:"EditFormFooter",props:{formId:{},formNode:{},readonly:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},saving:{type:Boolean,default:!1},dirty:{type:Boolean,default:!1},saveSucceeded:{type:Boolean,default:!1},saveLabel:{},saveDisabled:{type:Boolean,default:!1},apiError:{default:null},cancelLabel:{default:"Cancel"}},emits:["cancel","discard"],setup(e,{emit:c}){const b=c;return(s,v)=>(a(),m("div",je,[d("div",{class:C(["flex items-center",e.inline?"justify-end":"justify-between"])},[e.inline?f("",!0):(a(),h(o(_),{key:0,variant:"ghost",size:"sm",disabled:e.saving,onClick:v[0]||(v[0]=u=>b("cancel"))},{default:p(()=>[V(H(e.cancelLabel),1)]),_:1},8,["disabled"])),e.readonly?f("",!0):(a(),m("div",qe,[e.apiError?(a(),m("span",Oe,H(e.apiError),1)):f("",!0),w(o(pe),{node:e.formNode||void 0},null,8,["node"]),e.inline&&e.dirty?(a(),h(o(_),{key:1,variant:"ghost",size:"sm",disabled:e.saving,onClick:v[1]||(v[1]=u=>b("discard"))},{default:p(()=>[...v[2]||(v[2]=[V(" Discard changes ",-1)])]),_:1},8,["disabled"])):f("",!0),w(o(_),{variant:e.saveSucceeded?"success":"primary",size:"sm",disabled:e.saveDisabled,loading:e.saving,"icon-left":e.saveSucceeded?o(Re):void 0,type:"submit",form:e.formId},{default:p(()=>[V(H(e.saveLabel),1)]),_:1},8,["variant","disabled","loading","icon-left","form"])]))],2)]))}}),Ue=["id"],Je={class:"modal-card-header border-b border-neutral-100 px-5 py-3 dark:border-neutral-800"},Ge={class:"text-sm font-semibold text-neutral-900 dark:text-neutral-100 flex items-center gap-2"},We={class:"p-5"},F=L({__name:"ModalCard",props:{id:{},title:{},icon:{},flat:{type:Boolean,default:!1}},setup(e){return(c,b)=>(a(),m("section",{id:e.id,class:C(e.flat?"modal-card overflow-hidden border-y border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900":"modal-card overflow-hidden rounded-lg border border-neutral-200 bg-white dark:border-neutral-700 dark:bg-neutral-900")},[d("div",Je,[d("h3",Ge,[e.icon?(a(),h(j(e.icon),{key:0,class:"w-4 h-4 text-neutral-500"})):f("",!0),V(" "+H(e.title),1)])]),d("div",We,[U(c.$slots,"default")]),c.$slots.footer?(a(),m("div",{key:0,class:C(["modal-card-footer",e.flat?"border-t border-neutral-100 bg-transparent px-5 py-3 dark:border-neutral-800":"border-t border-neutral-100 bg-neutral-50 px-5 py-3 dark:border-neutral-800 dark:bg-neutral-800/50"])},[U(c.$slots,"footer")],2)):f("",!0)],10,Ue))}}),Ze=["onClick"],Qe={class:"overflow-hidden text-ellipsis whitespace-nowrap"},Xe=L({__name:"ModalTabs",props:{tabs:{},activeTab:{},accentActive:{type:Boolean},orientation:{default:"vertical"}},emits:["select"],setup(e,{emit:c}){const b=e,s=c,v=$({}),u=()=>b.orientation==="horizontal";function i(l,n){v.value[l]=n instanceof HTMLButtonElement?n:null}return T(()=>[b.activeTab,b.orientation],async()=>{u()&&(await P(),v.value[b.activeTab]?.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"}))},{immediate:!0}),(l,n)=>(a(),m("div",{class:C(e.orientation==="horizontal"?"flex min-w-0 gap-1 overflow-x-auto px-2 py-2":"flex flex-col gap-1 px-2")},[(a(!0),m(ne,null,se(e.tabs,k=>(a(),m("button",{key:k.id,ref_for:!0,ref:y=>i(k.id,y),type:"button",onClick:ge(y=>s("select",k.id),["prevent"]),class:C([e.orientation==="horizontal"?"flex shrink-0 items-center gap-1.5 rounded px-2.5 py-1.5 text-xs font-medium transition-all":"flex w-full items-center gap-3 rounded px-3 py-2.5 text-left text-sm font-medium transition-all",e.activeTab===k.id?e.accentActive?"agents-surface-selected agents-text-selected":"bg-black text-white dark:bg-white dark:text-black":"text-neutral-600 dark:text-neutral-400 hover:bg-black/5 dark:hover:bg-white/10"])},[(a(),h(j(k.icon),{class:C(e.orientation==="horizontal"?"h-3.5 w-3.5 flex-shrink-0":"h-4 w-4 flex-shrink-0")},null,8,["class"])),d("span",Qe,H(k.label),1)],10,Ze))),128))],2))}});function Ye(e,c){const b=$(c[0]);let s=null;const v=(l,n)=>l.querySelector(`#section-${n}`),u=()=>{const l=e.value;if(!l||l.clientHeight<=0)return;const n=c.filter(M=>v(l,M)!==null);if(n.length===0)return;if(l.scrollHeight>l.clientHeight+1&&l.scrollHeight-l.scrollTop-l.clientHeight<50){b.value=n[n.length-1];return}const t=l.getBoundingClientRect(),E=t.top+t.height*.3;let I=n[0];for(const M of n)v(l,M).getBoundingClientRect().top<=E&&(I=M);b.value=I},i=l=>{const n=e.value,k=n?v(n,l):null;if(k&&n){const y=n.getBoundingClientRect().top,t=k.getBoundingClientRect().top,E=n.scrollTop+(t-y);n.scrollTo({top:E,behavior:"smooth"})}};return T(e,(l,n)=>{n&&(n.removeEventListener("scroll",u),s?.disconnect(),s=null),l&&(l.addEventListener("scroll",u),s=new ResizeObserver(u),s.observe(l),u())}),xe(()=>{e.value?.removeEventListener("scroll",u),s?.disconnect()}),{activeTab:b,scrollToSection:i}}const et={key:0,class:"mb-4 space-y-2"},tt={class:"min-w-0 flex-1"},at={class:"text-sm font-medium"},lt={class:"text-xs text-neutral-500 dark:text-neutral-400"},ot=["onClick","aria-label"],nt={key:2,class:"rounded-lg border border-dashed border-neutral-300 px-4 py-6 text-center dark:border-neutral-600"},st={key:3,class:"py-3 text-center text-xs text-neutral-400 dark:text-neutral-500"},rt=L({__name:"PromptHooksFields",props:{form:{}},setup(e){const c=e,b=$(""),s=x(()=>{const u=new Set(c.form.selectedHooks.value);return c.form.availableHooks.value.filter(i=>!u.has(i.id)).map(i=>({value:i.id,label:i.id,attrs:{description:i.hook}}))}),v=u=>{u&&(c.form.selectedHooks.value.includes(u)||(c.form.selectedHooks.value=[...c.form.selectedHooks.value,u],P(()=>{b.value=""})))};return(u,i)=>{const l=re("FormKit");return a(),m("div",null,[i[3]||(i[3]=d("p",{class:"mb-4 text-sm text-neutral-500 dark:text-neutral-400"}," Select hooks to run when this prompt is active. Hooks execute in the order listed. ",-1)),e.form.selectedHooks.value.length>0?(a(),m("div",et,[(a(!0),m(ne,null,se(e.form.selectedHooks.value,n=>(a(),m("div",{key:n,class:"flex items-center justify-between rounded-lg border border-neutral-300 p-3 dark:border-neutral-600"},[d("div",tt,[d("div",at,H(n),1),d("div",lt,H(e.form.availableHooks.value.find(k=>k.id===n)?.hook||"unknown"),1)]),d("button",{onClick:k=>e.form.selectedHooks.value=e.form.selectedHooks.value.filter(y=>y!==n),type:"button",class:"rounded p-1 text-neutral-500 transition-colors hover:bg-neutral-200 hover:text-red-500 dark:hover:bg-neutral-800","aria-label":`Remove ${n}`},[...i[1]||(i[1]=[d("svg",{class:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])],8,ot)]))),128))])):f("",!0),s.value.length>0?(a(),h(l,{key:1,type:"selectSearch",modelValue:b.value,"onUpdate:modelValue":i[0]||(i[0]=n=>b.value=n),onInput:v,placeholder:e.form.selectedHooks.value.length>0?"Add another hook...":"Select a hook","search-placeholder":"Search hooks...",options:s.value,"outer-class":"$reset"},null,8,["modelValue","placeholder","options"])):f("",!0),e.form.availableHooks.value.length===0?(a(),m("div",nt,[...i[2]||(i[2]=[d("p",{class:"text-sm text-neutral-500 dark:text-neutral-400"},[V(" No hooks available. Create hooks in "),d("code",{class:"rounded bg-neutral-200 px-1.5 py-0.5 font-mono text-xs dark:bg-neutral-700"},"agents/hooks/"),V(" to enable them here. ")],-1)])])):s.value.length===0&&e.form.selectedHooks.value.length>0?(a(),m("div",st," All available hooks are selected. ")):f("",!0)])}}}),it={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function ct(e,c){return a(),m("svg",it,[...c[0]||(c[0]=[d("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2a2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1m8 0h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1"},null,-1)])])}const oe=J({name:"lucide-braces",render:ct}),dt={key:0,class:"flex min-h-[500px] items-center justify-center"},ut={class:"flex min-h-0 min-w-0 flex-1 flex-col"},ft={key:0,class:"sticky top-0 z-10 flex min-w-0 shrink-0 items-center gap-2 border-b border-neutral-200 bg-neutral-50/95 px-3 backdrop-blur dark:border-neutral-800 dark:bg-neutral-950/95"},mt={class:"min-w-0 flex-1"},vt={class:"edit-sections-query"},bt=L({__name:"PromptModal",props:{modelValue:{type:Boolean},editPrompt:{},mode:{},readonly:{type:Boolean,default:!1},saving:{type:Boolean,default:!1},apiError:{default:null},inline:{type:Boolean,default:!1},inlineGlobalNotice:{type:Boolean,default:!1},inlineAccentTabs:{type:Boolean,default:!1},inlineFlatSections:{type:Boolean,default:!1},saveSuccessKey:{default:0},resetSuccessKey:{default:0},surfaceSection:{default:null},surfaceDefaultToolTab:{default:null}},emits:["update:modelValue","save"],setup(e,{expose:c,emit:b}){const s=e,v=b,u=x(()=>s.mode==="edit"),i=x(()=>!!s.surfaceSection),l=x(()=>s.inline&&s.inlineFlatSections),n=x(()=>s.inline||i.value),k=x(()=>n.value?{config:Te}:{}),y=x(()=>u.value&&(s.editPrompt?.id||s.editPrompt?.name)||""),t=He(()=>y.value,{autoload:!1}),E=$(null),I=$(null),M=["basics","schema","prompt","tools","hooks","variables","behavior"],{activeTab:G,scrollToSection:W}=Ye(E,M),ie=[{id:"basics",label:"Basics",icon:X},{id:"schema",label:"Schema",icon:oe},{id:"prompt",label:"Prompt",icon:Y},{id:"tools",label:"Tools",icon:ae},{id:"hooks",label:"Hooks",icon:le},{id:"variables",label:"Variables",icon:ee},{id:"behavior",label:"Behavior",icon:te}],S=$(!1),z=$(!1),N=$(!1),K=$(null);let A=0;const Z=x(()=>JSON.stringify({name:t.name.value,toolDescription:t.toolDescription.value,selectedModel:t.selectedModel.value,requiredSchema:t.requiredSchema.value,promptText:t.promptText.value,includeChat:t.includeChat.value,includePastTools:t.includePastTools.value,selectedTools:t.selectedTools.value,parallelToolCalls:t.parallelToolCalls.value,toolChoice:t.toolChoice.value,reasoningEffort:t.reasoningEffort.value,reasoningMaxTokens:t.reasoningMaxTokens.value,reasoningExclude:t.reasoningExclude.value,includeReasoning:t.includeReasoning.value,selectedHooks:t.selectedHooks.value,promptVariables:t.promptVariables.value,promptEnv:t.promptEnv.value}));x(()=>N.value?"success":"primary");const ce=x(()=>N.value?"Saved":u.value?"Save Prompt Changes":"Create Prompt"),de=x(()=>s.saving||z.value||s.inline&&!S.value),ue=x(()=>i.value||s.inline?{class:s.inline?"flex h-full min-w-0 flex-col":"min-w-0"}:{modelValue:s.modelValue,title:u.value?"Edit Prompt":"Add Prompt",width:"max-w-5xl",contentPadding:!1});function B(){N.value=!1,K.value=null}function D(){P().then(()=>{if(z.value){S.value=!1;return}S.value=!!t.formNode.value?.context?.state.dirty})}function fe(r){t.handleFormNode(r),r.on("commit",D),r.on("reset",D),r.on("message-added",D),r.on("message-updated",D),r.on("message-removed",D),D()}async function q(){const r=++A;z.value=!0,S.value=!1,await P();const g=t.formNode.value;if(!g||r!==A){z.value=!1,S.value=!1;return}await g.settled,g.reset(g.value),await P(),r===A&&(z.value=!1,S.value=!1)}async function Q(){await q(),N.value=!0,K.value=Z.value}async function O(){B(),t.resetForm(),await P(),u.value&&y.value?await t.load():(await t.loadPrerequisites(),await t.fetchScannedVariables()),await q()}async function me(){I.value?.removeUnavailableTools(),await P();const r=await t.prepareSubmit();v("save",r)}function ve(){t.resetForm(),B(),v("update:modelValue",!1)}async function be(){B(),await O()}function he(r){v("update:modelValue",r)}function R(r){return!s.surfaceSection||s.surfaceSection===r}return T(()=>s.modelValue,async r=>{r?await O():(A+=1,t.resetForm(),B(),S.value=!1,z.value=!1)},{immediate:!0}),T(()=>y.value,async(r,g)=>{!s.modelValue||r===g||await O()}),T(()=>s.saveSuccessKey,(r,g)=>{r===g||r<=0||Q()}),T(()=>s.resetSuccessKey,(r,g)=>{r!==g&&B()}),T(Z,r=>{N.value&&K.value!==null&&r!==K.value&&B()}),T(S,r=>{r&&B()}),c({formNode:t.formNode,markSaveSucceeded:Q,markCurrentFormCleanAfterSettle:q,resetSaveSuccess:B}),(r,g)=>{const ke=re("FormKit");return a(),h(j(i.value||e.inline?"div":Be),ye(ue.value,we(i.value||e.inline?void 0:{"update:modelValue":he})),{default:p(()=>[(a(),h(j(n.value?o(Se):"div"),$e(Ce(k.value)),{default:p(()=>[o(t).isLoading.value?(a(),m("div",dt,[...g[0]||(g[0]=[d("span",{class:"text-neutral-500"},"Loading prompt data...",-1)])])):(a(),h(ke,{key:1,type:"form",id:"prompt-form",actions:!1,disabled:e.readonly||e.saving,onSubmit:me,onNode:fe,"dirty-behavior":"compare","outer-class":"$reset flex min-h-0 min-w-0 flex-1 flex-col","form-class":i.value?"$reset min-w-0 flex flex-col":"$reset flex-1 min-h-0 min-w-0 flex flex-col"},{default:p(()=>[d("div",ut,[i.value?f("",!0):(a(),m("nav",ft,[U(r.$slots,"nav-leading",{},void 0,!0),d("div",mt,[w(o(Xe),{tabs:ie,"active-tab":o(G),"accent-active":e.inlineAccentTabs,orientation:"horizontal",onSelect:o(W)},null,8,["active-tab","accent-active","onSelect"])])])),d("div",{ref_key:"contentRef",ref:E,class:C(["min-h-0 flex-1 overflow-y-auto",i.value?"p-5":l.value?"bg-neutral-100 dark:bg-neutral-950":"bg-neutral-100 p-5 dark:bg-neutral-950"])},[d("div",vt,[e.inlineGlobalNotice?(a(),m("div",{key:0,class:C(["edit-sections-notice rounded-md border border-amber-300 bg-amber-50 px-3 py-2 text-sm text-amber-800 dark:border-amber-700 dark:bg-amber-950/30 dark:text-amber-200",l.value?"mx-5 mb-4 mt-5":"mb-4"])}," Changes here are global and will affect all new messages across all threads. ",2)):f("",!0),d("div",{class:C([l.value?"space-y-4 pb-5":"space-y-4","edit-sections-stack"])},[e.apiError?(a(),h(o(Fe),{key:0,variant:"error"},{default:p(()=>[V(H(e.apiError),1)]),_:1})):f("",!0),R("basic")?(a(),h(o(F),{key:1,id:"section-basics",title:"Basics",icon:o(X),flat:l.value},{default:p(()=>[w(Pe,{form:o(t)},null,8,["form"])]),_:1},8,["icon","flat"])):f("",!0),R("schema")?(a(),h(o(F),{key:2,id:"section-schema",title:"Schema",icon:o(oe),flat:l.value},{default:p(()=>[w(Ve,{form:o(t)},null,8,["form"])]),_:1},8,["icon","flat"])):f("",!0),R("prompt")?(a(),h(o(F),{key:3,id:"section-prompt",title:"Prompt",icon:o(Y),flat:l.value},{default:p(()=>[w(Ee,{form:o(t)},null,8,["form"])]),_:1},8,["icon","flat"])):f("",!0),R("tools")?(a(),h(o(F),{key:4,id:"section-tools",title:"Tools",icon:o(ae),flat:l.value},{default:p(()=>[w(Me,{ref_key:"toolsFieldsRef",ref:I,form:o(t),"default-tab":e.surfaceDefaultToolTab},null,8,["form","default-tab"])]),_:1},8,["icon","flat"])):f("",!0),i.value?f("",!0):(a(),h(o(F),{key:5,id:"section-hooks",title:"Hooks",icon:o(le),flat:l.value},{default:p(()=>[w(rt,{form:o(t)},null,8,["form"])]),_:1},8,["icon","flat"])),R("variables")?(a(),h(o(F),{key:6,id:"section-variables",title:"Variables",icon:o(ee),flat:l.value},{default:p(()=>[w(ze,{form:o(t),readonly:e.readonly},null,8,["form","readonly"])]),_:1},8,["icon","flat"])):f("",!0),R("behavior")?(a(),h(o(F),{key:7,id:"section-behavior",title:"Behavior",icon:o(te),flat:l.value},{default:p(()=>[w(Ne,{form:o(t)},null,8,["form"])]),_:1},8,["icon","flat"])):f("",!0)],2)])],2)]),i.value?f("",!0):(a(),h(_e,{key:0,"form-id":"prompt-form","form-node":o(t).formNode.value,readonly:e.readonly,inline:e.inline,saving:e.saving,dirty:S.value,"save-succeeded":N.value,"save-label":ce.value,"save-disabled":de.value,"api-error":e.apiError,"cancel-label":e.readonly?"Close":"Cancel",onCancel:ve,onDiscard:be},null,8,["form-node","readonly","inline","saving","dirty","save-succeeded","save-label","save-disabled","api-error","cancel-label"]))]),_:3},8,["disabled","form-class"]))]),_:3},16))]),_:3},16)}}}),xt=De(bt,[["__scopeId","data-v-e5d80261"]]);export{ae as I,xt as P,Xe as _,le as a,F as b,_e as c,Ye as u};
1
+ import{A as J,b as m,e as a,f as d,d as L,m as C,z as h,q as f,J as o,k as p,s as V,u as H,j as w,_ as pe,B as j,g as U,r as $,w as T,F as ne,l as se,K as ge,h as P,a3 as xe,c as x,O as re,a5 as ye,ao as we,a4 as Se,C as $e,D as Ce}from"./vue-BqC6IZDY.js";import{_ as Be}from"./Modal.vue_vue_type_script_setup_true_lang-CLZzFYMW.js";import{_,J as Te,$ as He,L as X,i as Y,M as ee,z as te,C as Fe,a0 as Pe,a1 as Ve,a2 as Ee,a3 as Me,a4 as ze,a5 as Ne,m as De}from"./index-0OxNDXyK.js";import{I as Re}from"./check-Dkzs1C3V.js";const Ie={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Le(e,c){return a(),m("svg",Ie,[...c[0]||(c[0]=[d("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z"},null,-1)])])}const ae=J({name:"lucide-wrench",render:Le}),Ke={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ae(e,c){return a(),m("svg",Ke,[...c[0]||(c[0]=[d("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"},null,-1)])])}const le=J({name:"lucide-zap",render:Ae}),je={class:"p-6 border-t border-neutral-200 dark:border-neutral-700 flex-shrink-0"},qe={key:1,class:"flex items-center gap-3"},Oe={key:0,class:"text-sm text-red-600 dark:text-red-400"},_e=L({__name:"EditFormFooter",props:{formId:{},formNode:{},readonly:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},saving:{type:Boolean,default:!1},dirty:{type:Boolean,default:!1},saveSucceeded:{type:Boolean,default:!1},saveLabel:{},saveDisabled:{type:Boolean,default:!1},apiError:{default:null},cancelLabel:{default:"Cancel"}},emits:["cancel","discard"],setup(e,{emit:c}){const b=c;return(s,v)=>(a(),m("div",je,[d("div",{class:C(["flex items-center",e.inline?"justify-end":"justify-between"])},[e.inline?f("",!0):(a(),h(o(_),{key:0,variant:"ghost",size:"sm",disabled:e.saving,onClick:v[0]||(v[0]=u=>b("cancel"))},{default:p(()=>[V(H(e.cancelLabel),1)]),_:1},8,["disabled"])),e.readonly?f("",!0):(a(),m("div",qe,[e.apiError?(a(),m("span",Oe,H(e.apiError),1)):f("",!0),w(o(pe),{node:e.formNode||void 0},null,8,["node"]),e.inline&&e.dirty?(a(),h(o(_),{key:1,variant:"ghost",size:"sm",disabled:e.saving,onClick:v[1]||(v[1]=u=>b("discard"))},{default:p(()=>[...v[2]||(v[2]=[V(" Discard changes ",-1)])]),_:1},8,["disabled"])):f("",!0),w(o(_),{variant:e.saveSucceeded?"success":"primary",size:"sm",disabled:e.saveDisabled,loading:e.saving,"icon-left":e.saveSucceeded?o(Re):void 0,type:"submit",form:e.formId},{default:p(()=>[V(H(e.saveLabel),1)]),_:1},8,["variant","disabled","loading","icon-left","form"])]))],2)]))}}),Ue=["id"],Je={class:"modal-card-header border-b border-neutral-100 px-5 py-3 dark:border-neutral-800"},Ge={class:"text-sm font-semibold text-neutral-900 dark:text-neutral-100 flex items-center gap-2"},We={class:"p-5"},F=L({__name:"ModalCard",props:{id:{},title:{},icon:{},flat:{type:Boolean,default:!1}},setup(e){return(c,b)=>(a(),m("section",{id:e.id,class:C(e.flat?"modal-card overflow-hidden border-y border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900":"modal-card overflow-hidden rounded-lg border border-neutral-200 bg-white dark:border-neutral-700 dark:bg-neutral-900")},[d("div",Je,[d("h3",Ge,[e.icon?(a(),h(j(e.icon),{key:0,class:"w-4 h-4 text-neutral-500"})):f("",!0),V(" "+H(e.title),1)])]),d("div",We,[U(c.$slots,"default")]),c.$slots.footer?(a(),m("div",{key:0,class:C(["modal-card-footer",e.flat?"border-t border-neutral-100 bg-transparent px-5 py-3 dark:border-neutral-800":"border-t border-neutral-100 bg-neutral-50 px-5 py-3 dark:border-neutral-800 dark:bg-neutral-800/50"])},[U(c.$slots,"footer")],2)):f("",!0)],10,Ue))}}),Ze=["onClick"],Qe={class:"overflow-hidden text-ellipsis whitespace-nowrap"},Xe=L({__name:"ModalTabs",props:{tabs:{},activeTab:{},accentActive:{type:Boolean},orientation:{default:"vertical"}},emits:["select"],setup(e,{emit:c}){const b=e,s=c,v=$({}),u=()=>b.orientation==="horizontal";function i(l,n){v.value[l]=n instanceof HTMLButtonElement?n:null}return T(()=>[b.activeTab,b.orientation],async()=>{u()&&(await P(),v.value[b.activeTab]?.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"}))},{immediate:!0}),(l,n)=>(a(),m("div",{class:C(e.orientation==="horizontal"?"flex min-w-0 gap-1 overflow-x-auto px-2 py-2":"flex flex-col gap-1 px-2")},[(a(!0),m(ne,null,se(e.tabs,k=>(a(),m("button",{key:k.id,ref_for:!0,ref:y=>i(k.id,y),type:"button",onClick:ge(y=>s("select",k.id),["prevent"]),class:C([e.orientation==="horizontal"?"flex shrink-0 items-center gap-1.5 rounded px-2.5 py-1.5 text-xs font-medium transition-all":"flex w-full items-center gap-3 rounded px-3 py-2.5 text-left text-sm font-medium transition-all",e.activeTab===k.id?e.accentActive?"agents-surface-selected agents-text-selected":"bg-black text-white dark:bg-white dark:text-black":"text-neutral-600 dark:text-neutral-400 hover:bg-black/5 dark:hover:bg-white/10"])},[(a(),h(j(k.icon),{class:C(e.orientation==="horizontal"?"h-3.5 w-3.5 flex-shrink-0":"h-4 w-4 flex-shrink-0")},null,8,["class"])),d("span",Qe,H(k.label),1)],10,Ze))),128))],2))}});function Ye(e,c){const b=$(c[0]);let s=null;const v=(l,n)=>l.querySelector(`#section-${n}`),u=()=>{const l=e.value;if(!l||l.clientHeight<=0)return;const n=c.filter(M=>v(l,M)!==null);if(n.length===0)return;if(l.scrollHeight>l.clientHeight+1&&l.scrollHeight-l.scrollTop-l.clientHeight<50){b.value=n[n.length-1];return}const t=l.getBoundingClientRect(),E=t.top+t.height*.3;let I=n[0];for(const M of n)v(l,M).getBoundingClientRect().top<=E&&(I=M);b.value=I},i=l=>{const n=e.value,k=n?v(n,l):null;if(k&&n){const y=n.getBoundingClientRect().top,t=k.getBoundingClientRect().top,E=n.scrollTop+(t-y);n.scrollTo({top:E,behavior:"smooth"})}};return T(e,(l,n)=>{n&&(n.removeEventListener("scroll",u),s?.disconnect(),s=null),l&&(l.addEventListener("scroll",u),s=new ResizeObserver(u),s.observe(l),u())}),xe(()=>{e.value?.removeEventListener("scroll",u),s?.disconnect()}),{activeTab:b,scrollToSection:i}}const et={key:0,class:"mb-4 space-y-2"},tt={class:"min-w-0 flex-1"},at={class:"text-sm font-medium"},lt={class:"text-xs text-neutral-500 dark:text-neutral-400"},ot=["onClick","aria-label"],nt={key:2,class:"rounded-lg border border-dashed border-neutral-300 px-4 py-6 text-center dark:border-neutral-600"},st={key:3,class:"py-3 text-center text-xs text-neutral-400 dark:text-neutral-500"},rt=L({__name:"PromptHooksFields",props:{form:{}},setup(e){const c=e,b=$(""),s=x(()=>{const u=new Set(c.form.selectedHooks.value);return c.form.availableHooks.value.filter(i=>!u.has(i.id)).map(i=>({value:i.id,label:i.id,attrs:{description:i.hook}}))}),v=u=>{u&&(c.form.selectedHooks.value.includes(u)||(c.form.selectedHooks.value=[...c.form.selectedHooks.value,u],P(()=>{b.value=""})))};return(u,i)=>{const l=re("FormKit");return a(),m("div",null,[i[3]||(i[3]=d("p",{class:"mb-4 text-sm text-neutral-500 dark:text-neutral-400"}," Select hooks to run when this prompt is active. Hooks execute in the order listed. ",-1)),e.form.selectedHooks.value.length>0?(a(),m("div",et,[(a(!0),m(ne,null,se(e.form.selectedHooks.value,n=>(a(),m("div",{key:n,class:"flex items-center justify-between rounded-lg border border-neutral-300 p-3 dark:border-neutral-600"},[d("div",tt,[d("div",at,H(n),1),d("div",lt,H(e.form.availableHooks.value.find(k=>k.id===n)?.hook||"unknown"),1)]),d("button",{onClick:k=>e.form.selectedHooks.value=e.form.selectedHooks.value.filter(y=>y!==n),type:"button",class:"rounded p-1 text-neutral-500 transition-colors hover:bg-neutral-200 hover:text-red-500 dark:hover:bg-neutral-800","aria-label":`Remove ${n}`},[...i[1]||(i[1]=[d("svg",{class:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])],8,ot)]))),128))])):f("",!0),s.value.length>0?(a(),h(l,{key:1,type:"selectSearch",modelValue:b.value,"onUpdate:modelValue":i[0]||(i[0]=n=>b.value=n),onInput:v,placeholder:e.form.selectedHooks.value.length>0?"Add another hook...":"Select a hook","search-placeholder":"Search hooks...",options:s.value,"outer-class":"$reset"},null,8,["modelValue","placeholder","options"])):f("",!0),e.form.availableHooks.value.length===0?(a(),m("div",nt,[...i[2]||(i[2]=[d("p",{class:"text-sm text-neutral-500 dark:text-neutral-400"},[V(" No hooks available. Create hooks in "),d("code",{class:"rounded bg-neutral-200 px-1.5 py-0.5 font-mono text-xs dark:bg-neutral-700"},"agents/hooks/"),V(" to enable them here. ")],-1)])])):s.value.length===0&&e.form.selectedHooks.value.length>0?(a(),m("div",st," All available hooks are selected. ")):f("",!0)])}}}),it={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function ct(e,c){return a(),m("svg",it,[...c[0]||(c[0]=[d("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2a2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1m8 0h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1"},null,-1)])])}const oe=J({name:"lucide-braces",render:ct}),dt={key:0,class:"flex min-h-[500px] items-center justify-center"},ut={class:"flex min-h-0 min-w-0 flex-1 flex-col"},ft={key:0,class:"sticky top-0 z-10 flex min-w-0 shrink-0 items-center gap-2 border-b border-neutral-200 bg-neutral-50/95 px-3 backdrop-blur dark:border-neutral-800 dark:bg-neutral-950/95"},mt={class:"min-w-0 flex-1"},vt={class:"edit-sections-query"},bt=L({__name:"PromptModal",props:{modelValue:{type:Boolean},editPrompt:{},mode:{},readonly:{type:Boolean,default:!1},saving:{type:Boolean,default:!1},apiError:{default:null},inline:{type:Boolean,default:!1},inlineGlobalNotice:{type:Boolean,default:!1},inlineAccentTabs:{type:Boolean,default:!1},inlineFlatSections:{type:Boolean,default:!1},saveSuccessKey:{default:0},resetSuccessKey:{default:0},surfaceSection:{default:null},surfaceDefaultToolTab:{default:null}},emits:["update:modelValue","save"],setup(e,{expose:c,emit:b}){const s=e,v=b,u=x(()=>s.mode==="edit"),i=x(()=>!!s.surfaceSection),l=x(()=>s.inline&&s.inlineFlatSections),n=x(()=>s.inline||i.value),k=x(()=>n.value?{config:Te}:{}),y=x(()=>u.value&&(s.editPrompt?.id||s.editPrompt?.name)||""),t=He(()=>y.value,{autoload:!1}),E=$(null),I=$(null),M=["basics","schema","prompt","tools","hooks","variables","behavior"],{activeTab:G,scrollToSection:W}=Ye(E,M),ie=[{id:"basics",label:"Basics",icon:X},{id:"schema",label:"Schema",icon:oe},{id:"prompt",label:"Prompt",icon:Y},{id:"tools",label:"Tools",icon:ae},{id:"hooks",label:"Hooks",icon:le},{id:"variables",label:"Variables",icon:ee},{id:"behavior",label:"Behavior",icon:te}],S=$(!1),z=$(!1),N=$(!1),K=$(null);let A=0;const Z=x(()=>JSON.stringify({name:t.name.value,toolDescription:t.toolDescription.value,selectedModel:t.selectedModel.value,requiredSchema:t.requiredSchema.value,promptText:t.promptText.value,includeChat:t.includeChat.value,includePastTools:t.includePastTools.value,selectedTools:t.selectedTools.value,parallelToolCalls:t.parallelToolCalls.value,toolChoice:t.toolChoice.value,reasoningEffort:t.reasoningEffort.value,reasoningMaxTokens:t.reasoningMaxTokens.value,reasoningExclude:t.reasoningExclude.value,includeReasoning:t.includeReasoning.value,selectedHooks:t.selectedHooks.value,promptVariables:t.promptVariables.value,promptEnv:t.promptEnv.value}));x(()=>N.value?"success":"primary");const ce=x(()=>N.value?"Saved":u.value?"Save Prompt Changes":"Create Prompt"),de=x(()=>s.saving||z.value||s.inline&&!S.value),ue=x(()=>i.value||s.inline?{class:s.inline?"flex h-full min-w-0 flex-col":"min-w-0"}:{modelValue:s.modelValue,title:u.value?"Edit Prompt":"Add Prompt",width:"max-w-5xl",contentPadding:!1});function B(){N.value=!1,K.value=null}function D(){P().then(()=>{if(z.value){S.value=!1;return}S.value=!!t.formNode.value?.context?.state.dirty})}function fe(r){t.handleFormNode(r),r.on("commit",D),r.on("reset",D),r.on("message-added",D),r.on("message-updated",D),r.on("message-removed",D),D()}async function q(){const r=++A;z.value=!0,S.value=!1,await P();const g=t.formNode.value;if(!g||r!==A){z.value=!1,S.value=!1;return}await g.settled,g.reset(g.value),await P(),r===A&&(z.value=!1,S.value=!1)}async function Q(){await q(),N.value=!0,K.value=Z.value}async function O(){B(),t.resetForm(),await P(),u.value&&y.value?await t.load():(await t.loadPrerequisites(),await t.fetchScannedVariables()),await q()}async function me(){I.value?.removeUnavailableTools(),await P();const r=await t.prepareSubmit();v("save",r)}function ve(){t.resetForm(),B(),v("update:modelValue",!1)}async function be(){B(),await O()}function he(r){v("update:modelValue",r)}function R(r){return!s.surfaceSection||s.surfaceSection===r}return T(()=>s.modelValue,async r=>{r?await O():(A+=1,t.resetForm(),B(),S.value=!1,z.value=!1)},{immediate:!0}),T(()=>y.value,async(r,g)=>{!s.modelValue||r===g||await O()}),T(()=>s.saveSuccessKey,(r,g)=>{r===g||r<=0||Q()}),T(()=>s.resetSuccessKey,(r,g)=>{r!==g&&B()}),T(Z,r=>{N.value&&K.value!==null&&r!==K.value&&B()}),T(S,r=>{r&&B()}),c({formNode:t.formNode,markSaveSucceeded:Q,markCurrentFormCleanAfterSettle:q,resetSaveSuccess:B}),(r,g)=>{const ke=re("FormKit");return a(),h(j(i.value||e.inline?"div":Be),ye(ue.value,we(i.value||e.inline?void 0:{"update:modelValue":he})),{default:p(()=>[(a(),h(j(n.value?o(Se):"div"),$e(Ce(k.value)),{default:p(()=>[o(t).isLoading.value?(a(),m("div",dt,[...g[0]||(g[0]=[d("span",{class:"text-neutral-500"},"Loading prompt data...",-1)])])):(a(),h(ke,{key:1,type:"form",id:"prompt-form",actions:!1,disabled:e.readonly||e.saving,onSubmit:me,onNode:fe,"dirty-behavior":"compare","outer-class":"$reset flex min-h-0 min-w-0 flex-1 flex-col","form-class":i.value?"$reset min-w-0 flex flex-col":"$reset flex-1 min-h-0 min-w-0 flex flex-col"},{default:p(()=>[d("div",ut,[i.value?f("",!0):(a(),m("nav",ft,[U(r.$slots,"nav-leading",{},void 0,!0),d("div",mt,[w(o(Xe),{tabs:ie,"active-tab":o(G),"accent-active":e.inlineAccentTabs,orientation:"horizontal",onSelect:o(W)},null,8,["active-tab","accent-active","onSelect"])])])),d("div",{ref_key:"contentRef",ref:E,class:C(["min-h-0 flex-1 overflow-y-auto",i.value?"p-5":l.value?"bg-neutral-100 dark:bg-neutral-950":"bg-neutral-100 p-5 dark:bg-neutral-950"])},[d("div",vt,[e.inlineGlobalNotice?(a(),m("div",{key:0,class:C(["edit-sections-notice rounded-md border border-amber-300 bg-amber-50 px-3 py-2 text-sm text-amber-800 dark:border-amber-700 dark:bg-amber-950/30 dark:text-amber-200",l.value?"mx-5 mb-4 mt-5":"mb-4"])}," Changes here are global and will affect all new messages across all threads. ",2)):f("",!0),d("div",{class:C([l.value?"space-y-4 pb-5":"space-y-4","edit-sections-stack"])},[e.apiError?(a(),h(o(Fe),{key:0,variant:"error"},{default:p(()=>[V(H(e.apiError),1)]),_:1})):f("",!0),R("basic")?(a(),h(o(F),{key:1,id:"section-basics",title:"Basics",icon:o(X),flat:l.value},{default:p(()=>[w(Pe,{form:o(t)},null,8,["form"])]),_:1},8,["icon","flat"])):f("",!0),R("schema")?(a(),h(o(F),{key:2,id:"section-schema",title:"Schema",icon:o(oe),flat:l.value},{default:p(()=>[w(Ve,{form:o(t)},null,8,["form"])]),_:1},8,["icon","flat"])):f("",!0),R("prompt")?(a(),h(o(F),{key:3,id:"section-prompt",title:"Prompt",icon:o(Y),flat:l.value},{default:p(()=>[w(Ee,{form:o(t)},null,8,["form"])]),_:1},8,["icon","flat"])):f("",!0),R("tools")?(a(),h(o(F),{key:4,id:"section-tools",title:"Tools",icon:o(ae),flat:l.value},{default:p(()=>[w(Me,{ref_key:"toolsFieldsRef",ref:I,form:o(t),"default-tab":e.surfaceDefaultToolTab},null,8,["form","default-tab"])]),_:1},8,["icon","flat"])):f("",!0),i.value?f("",!0):(a(),h(o(F),{key:5,id:"section-hooks",title:"Hooks",icon:o(le),flat:l.value},{default:p(()=>[w(rt,{form:o(t)},null,8,["form"])]),_:1},8,["icon","flat"])),R("variables")?(a(),h(o(F),{key:6,id:"section-variables",title:"Variables",icon:o(ee),flat:l.value},{default:p(()=>[w(ze,{form:o(t),readonly:e.readonly},null,8,["form","readonly"])]),_:1},8,["icon","flat"])):f("",!0),R("behavior")?(a(),h(o(F),{key:7,id:"section-behavior",title:"Behavior",icon:o(te),flat:l.value},{default:p(()=>[w(Ne,{form:o(t)},null,8,["form"])]),_:1},8,["icon","flat"])):f("",!0)],2)])],2)]),i.value?f("",!0):(a(),h(_e,{key:0,"form-id":"prompt-form","form-node":o(t).formNode.value,readonly:e.readonly,inline:e.inline,saving:e.saving,dirty:S.value,"save-succeeded":N.value,"save-label":ce.value,"save-disabled":de.value,"api-error":e.apiError,"cancel-label":e.readonly?"Close":"Cancel",onCancel:ve,onDiscard:be},null,8,["form-node","readonly","inline","saving","dirty","save-succeeded","save-label","save-disabled","api-error","cancel-label"]))]),_:3},8,["disabled","form-class"]))]),_:3},16))]),_:3},16)}}}),xt=De(bt,[["__scopeId","data-v-e5d80261"]]);export{ae as I,xt as P,Xe as _,le as a,F as b,_e as c,Ye as u};
@@ -1 +1 @@
1
- import{d as D,r as u,c as V,o as N,b as M,e as f,z as _,q as w,j as C,J as a,k as P,s as R,u as A,X as $,Y as T,w as I}from"./vue-2tGL2Ulx.js";import{C as E,b as x,D as S,x as q}from"./index-DihZBCmQ.js";import{_ as B}from"./DataTable.vue_vue_type_script_setup_true_lang-DzPpurCp.js";import{u as F}from"./useActionFeedback-uUrfjlCo.js";import{P as U}from"./PromptModal-BQYwnWKw.js";import{C as j}from"./CenteredContentView-gJXa9UHE.js";import{I as L}from"./plus-zGapov7j.js";import"./formkit-DcuuXZjC.js";import"./vendor-TPZjEwCU.js";import"./syntax-D-ZcovVx.js";import"./monaco-DI2r3M8m.js";import"./chevron-right-DJJGHNE5.js";import"./ConfirmDialog.vue_vue_type_script_setup_true_lang-A1C0eTY7.js";import"./Modal.vue_vue_type_script_setup_true_lang-1t6cxO9H.js";import"./check-DKLwABgc.js";const z=D({__name:"PromptsDataTable",props:{title:{},description:{},primaryAction:{},readonly:{type:Boolean,default:!1}},emits:["add","edit","delete"],setup(i,{expose:b,emit:y}){const r=i,s=y,d=u([]),o=u(!1),{feedback:m,setFeedback:n,clearFeedback:l}=F(),k=[{key:"name",label:"Name",width:"w-1/4",sortable:!0},{key:"tool_description",label:"Description",width:"w-2/5"},{key:"model_name",label:"Model",width:"w-1/5",sortable:!0,filterable:!0,formatter:(e,t)=>e||t.model_id||"-",filterIcon:(e,t)=>t.model_provider?`/api/providers/${t.model_provider}/icon?model=${encodeURIComponent(t.model_id||"")}`:void 0},{key:"created_at",label:"Created",width:"w-1/6",sortable:!0,searchable:!1,formatter:e=>e?new Date(e*1e3).toLocaleDateString():"-"}],v=[{icon:"edit",label:"Edit",handler:e=>s("edit",e)},{icon:"delete",label:"Delete",handler:async e=>{await g(e)},confirm:!0,confirmMessage:"Are you sure you want to delete this prompt?",variant:"danger"}],h=V(()=>r.readonly?v.filter(e=>e.variant!=="danger"):v),c=async()=>{o.value=!0,l();try{const e=await fetch(x("/api/prompts"));if(e.ok){const t=await e.json();d.value=t.prompts||[]}}catch{n("error","Prompts could not be loaded.")}finally{o.value=!1}},g=async e=>{l();try{const t=await fetch(x(`/api/prompts/${encodeURIComponent(e.id)}`),{method:"DELETE"});if(t.ok)await c(),n("success","Prompt deleted.");else{const p=await t.json();n("error",p.error||"Failed to delete prompt")}}catch{n("error","Failed to delete prompt")}};return N(()=>{c()}),b({refresh:c}),(e,t)=>(f(),M("div",null,[a(m)?(f(),_(a(E),{key:0,variant:a(m).variant,class:"mb-4"},{default:P(()=>[R(A(a(m).message),1)]),_:1},8,["variant"])):w("",!0),C(B,{title:i.title,description:i.description,"primary-action":i.primaryAction,columns:k,data:d.value,actions:h.value,loading:o.value,sortable:"",searchable:"","search-placeholder":"Search prompts...","empty-message":"No prompts available. Create your first prompt to get started.",onRowClick:t[0]||(t[0]=p=>s("edit",p))},null,8,["title","description","primary-action","data","actions","loading"])]))}}),J={key:1,class:"mb-5 rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 px-4 py-3 text-sm text-amber-800 dark:text-amber-200"},ne=D({__name:"PromptsView",setup(i){const b=$(),y=T(),r=u(!1),s=u(null),d=u(null),o=S(),{saving:m,savePrompt:n}=q(),{feedback:l,setFeedback:k,clearFeedback:v}=F();I(()=>y.query.refresh,()=>{y.query.refresh&&(s.value?.refresh(),b.replace({path:"/prompts",query:{}}))});const h=()=>{r.value=!0},c=e=>{b.push(`/prompts/${e.id}`)},g=async e=>{v();const t=await n({mode:"add",data:e,formNode:d.value?.formNode});t.ok?(r.value=!1,await s.value?.refresh()):t.formErrorsApplied||k("error","Failed to create prompt")};return(e,t)=>(f(),_(j,null,{default:P(()=>[a(l)?(f(),_(a(E),{key:0,variant:a(l).variant,class:"mb-4"},{default:P(()=>[R(A(a(l).message),1)]),_:1},8,["variant"])):w("",!0),a(o)?w("",!0):(f(),M("div",J," Configuration is read-only in production. To make changes, edit your configuration files locally and deploy. ")),C(z,{ref_key:"dataTableRef",ref:s,title:"Prompts",description:"Define and manage prompt templates for your agents.","primary-action":a(o)?{label:"Create Prompt",icon:a(L),handler:h}:void 0,readonly:!a(o),onAdd:h,onEdit:c},null,8,["primary-action","readonly"]),C(U,{ref_key:"promptModalRef",ref:d,modelValue:r.value,"onUpdate:modelValue":t[0]||(t[0]=p=>r.value=p),mode:"add",saving:a(m),onSave:g},null,8,["modelValue","saving"])]),_:1}))}});export{ne as default};
1
+ import{d as D,r as u,c as V,o as N,b as M,e as f,z as _,q as w,j as C,J as a,k as P,s as R,u as A,X as $,Y as T,w as I}from"./vue-BqC6IZDY.js";import{C as E,b as x,D as S,x as q}from"./index-0OxNDXyK.js";import{_ as B}from"./DataTable.vue_vue_type_script_setup_true_lang-B0UNyBiO.js";import{u as F}from"./useActionFeedback-byARNQjQ.js";import{P as U}from"./PromptModal-DXt6M359.js";import{C as j}from"./CenteredContentView-c7OLhxvd.js";import{I as L}from"./plus-DG3ZN5wg.js";import"./formkit-YJ1Z7D5r.js";import"./vendor-TPZjEwCU.js";import"./syntax-D-ZcovVx.js";import"./monaco-DI2r3M8m.js";import"./chevron-right-BGirddPg.js";import"./ConfirmDialog.vue_vue_type_script_setup_true_lang-DQIo2wlE.js";import"./Modal.vue_vue_type_script_setup_true_lang-CLZzFYMW.js";import"./check-Dkzs1C3V.js";const z=D({__name:"PromptsDataTable",props:{title:{},description:{},primaryAction:{},readonly:{type:Boolean,default:!1}},emits:["add","edit","delete"],setup(i,{expose:b,emit:y}){const r=i,s=y,d=u([]),o=u(!1),{feedback:m,setFeedback:n,clearFeedback:l}=F(),k=[{key:"name",label:"Name",width:"w-1/4",sortable:!0},{key:"tool_description",label:"Description",width:"w-2/5"},{key:"model_name",label:"Model",width:"w-1/5",sortable:!0,filterable:!0,formatter:(e,t)=>e||t.model_id||"-",filterIcon:(e,t)=>t.model_provider?`/api/providers/${t.model_provider}/icon?model=${encodeURIComponent(t.model_id||"")}`:void 0},{key:"created_at",label:"Created",width:"w-1/6",sortable:!0,searchable:!1,formatter:e=>e?new Date(e*1e3).toLocaleDateString():"-"}],v=[{icon:"edit",label:"Edit",handler:e=>s("edit",e)},{icon:"delete",label:"Delete",handler:async e=>{await g(e)},confirm:!0,confirmMessage:"Are you sure you want to delete this prompt?",variant:"danger"}],h=V(()=>r.readonly?v.filter(e=>e.variant!=="danger"):v),c=async()=>{o.value=!0,l();try{const e=await fetch(x("/api/prompts"));if(e.ok){const t=await e.json();d.value=t.prompts||[]}}catch{n("error","Prompts could not be loaded.")}finally{o.value=!1}},g=async e=>{l();try{const t=await fetch(x(`/api/prompts/${encodeURIComponent(e.id)}`),{method:"DELETE"});if(t.ok)await c(),n("success","Prompt deleted.");else{const p=await t.json();n("error",p.error||"Failed to delete prompt")}}catch{n("error","Failed to delete prompt")}};return N(()=>{c()}),b({refresh:c}),(e,t)=>(f(),M("div",null,[a(m)?(f(),_(a(E),{key:0,variant:a(m).variant,class:"mb-4"},{default:P(()=>[R(A(a(m).message),1)]),_:1},8,["variant"])):w("",!0),C(B,{title:i.title,description:i.description,"primary-action":i.primaryAction,columns:k,data:d.value,actions:h.value,loading:o.value,sortable:"",searchable:"","search-placeholder":"Search prompts...","empty-message":"No prompts available. Create your first prompt to get started.",onRowClick:t[0]||(t[0]=p=>s("edit",p))},null,8,["title","description","primary-action","data","actions","loading"])]))}}),J={key:1,class:"mb-5 rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 px-4 py-3 text-sm text-amber-800 dark:text-amber-200"},ne=D({__name:"PromptsView",setup(i){const b=$(),y=T(),r=u(!1),s=u(null),d=u(null),o=S(),{saving:m,savePrompt:n}=q(),{feedback:l,setFeedback:k,clearFeedback:v}=F();I(()=>y.query.refresh,()=>{y.query.refresh&&(s.value?.refresh(),b.replace({path:"/prompts",query:{}}))});const h=()=>{r.value=!0},c=e=>{b.push(`/prompts/${e.id}`)},g=async e=>{v();const t=await n({mode:"add",data:e,formNode:d.value?.formNode});t.ok?(r.value=!1,await s.value?.refresh()):t.formErrorsApplied||k("error","Failed to create prompt")};return(e,t)=>(f(),_(j,null,{default:P(()=>[a(l)?(f(),_(a(E),{key:0,variant:a(l).variant,class:"mb-4"},{default:P(()=>[R(A(a(l).message),1)]),_:1},8,["variant"])):w("",!0),a(o)?w("",!0):(f(),M("div",J," Configuration is read-only in production. To make changes, edit your configuration files locally and deploy. ")),C(z,{ref_key:"dataTableRef",ref:s,title:"Prompts",description:"Define and manage prompt templates for your agents.","primary-action":a(o)?{label:"Create Prompt",icon:a(L),handler:h}:void 0,readonly:!a(o),onAdd:h,onEdit:c},null,8,["primary-action","readonly"]),C(U,{ref_key:"promptModalRef",ref:d,modelValue:r.value,"onUpdate:modelValue":t[0]||(t[0]=p=>r.value=p),mode:"add",saving:a(m),onSave:g},null,8,["modelValue","saving"])]),_:1}))}});export{ne as default};
@@ -1,3 +1,3 @@
1
- import{C as A,al as I,b as k}from"./index-DihZBCmQ.js";import{_ as N}from"./DataTable.vue_vue_type_script_setup_true_lang-DzPpurCp.js";import{C as $}from"./CenteredContentView-gJXa9UHE.js";import{I as x}from"./check-DKLwABgc.js";import{u as F}from"./useActionFeedback-uUrfjlCo.js";import{d as j,r as y,o as q,z as _,e as s,k as n,q as B,j as i,J as r,s as l,u as w,b as f,f as v}from"./vue-2tGL2Ulx.js";import"./formkit-DcuuXZjC.js";import"./monaco-DI2r3M8m.js";import"./vendor-TPZjEwCU.js";import"./syntax-D-ZcovVx.js";import"./chevron-right-DJJGHNE5.js";import"./ConfirmDialog.vue_vue_type_script_setup_true_lang-A1C0eTY7.js";const E={class:"flex items-center gap-2"},K=["src","alt"],T={class:"font-medium text-neutral-900 dark:text-neutral-100"},D={key:0,class:"inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded-full bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},R={key:1,class:"inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded-full bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400"},L=["title"],ee=j({__name:"ProvidersView",setup(M){const d=y([]),c=y(!1),{feedback:u,setFeedback:o,clearFeedback:h}=F(),m=a=>a.label||a.name,g=a=>{const e=a.variables?.filter(t=>t.required).map(t=>t.name);return e?.length?e:a.envKeys||[]},C=[{key:"name",label:"Name",width:"w-2/3",sortable:!0,formatter:(a,e)=>m(e)},{key:"hasApiKey",label:"API Key",width:"w-1/3"}],P=[{icon:"delete",label:"Delete",confirm:!0,confirmMessage:"Are you sure you want to delete this provider? This action cannot be undone.",variant:"danger",handler:async a=>{await V(a.name)}}],b=async()=>{c.value=!0,h();try{const a=await fetch(k("/api/providers"));if(!a.ok)throw new Error("Failed to fetch providers");const e=await a.json();d.value=e.providers||[]}catch{o("error","Providers could not be loaded."),d.value=[]}finally{c.value=!1}},V=async a=>{h();try{const e=await fetch(k(`/api/providers/${encodeURIComponent(a)}`),{method:"DELETE"});if(!e.ok){const t=await e.json();t.modelCount?o("error",`${t.error}
1
+ import{C as A,al as I,b as k}from"./index-0OxNDXyK.js";import{_ as N}from"./DataTable.vue_vue_type_script_setup_true_lang-B0UNyBiO.js";import{C as $}from"./CenteredContentView-c7OLhxvd.js";import{I as x}from"./check-Dkzs1C3V.js";import{u as F}from"./useActionFeedback-byARNQjQ.js";import{d as j,r as y,o as q,z as _,e as s,k as n,q as B,j as i,J as r,s as l,u as w,b as f,f as v}from"./vue-BqC6IZDY.js";import"./formkit-YJ1Z7D5r.js";import"./monaco-DI2r3M8m.js";import"./vendor-TPZjEwCU.js";import"./syntax-D-ZcovVx.js";import"./chevron-right-BGirddPg.js";import"./ConfirmDialog.vue_vue_type_script_setup_true_lang-DQIo2wlE.js";const E={class:"flex items-center gap-2"},K=["src","alt"],T={class:"font-medium text-neutral-900 dark:text-neutral-100"},D={key:0,class:"inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded-full bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},R={key:1,class:"inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded-full bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400"},L=["title"],ee=j({__name:"ProvidersView",setup(M){const d=y([]),c=y(!1),{feedback:u,setFeedback:o,clearFeedback:h}=F(),m=a=>a.label||a.name,g=a=>{const e=a.variables?.filter(t=>t.required).map(t=>t.name);return e?.length?e:a.envKeys||[]},C=[{key:"name",label:"Name",width:"w-2/3",sortable:!0,formatter:(a,e)=>m(e)},{key:"hasApiKey",label:"API Key",width:"w-1/3"}],P=[{icon:"delete",label:"Delete",confirm:!0,confirmMessage:"Are you sure you want to delete this provider? This action cannot be undone.",variant:"danger",handler:async a=>{await V(a.name)}}],b=async()=>{c.value=!0,h();try{const a=await fetch(k("/api/providers"));if(!a.ok)throw new Error("Failed to fetch providers");const e=await a.json();d.value=e.providers||[]}catch{o("error","Providers could not be loaded."),d.value=[]}finally{c.value=!1}},V=async a=>{h();try{const e=await fetch(k(`/api/providers/${encodeURIComponent(a)}`),{method:"DELETE"});if(!e.ok){const t=await e.json();t.modelCount?o("error",`${t.error}
2
2
 
3
3
  This provider has ${t.modelCount} associated model(s).`):o("error",t.error||"Failed to delete provider");return}await b(),o("success","Provider deleted.")}catch{o("error","Failed to delete provider")}};return q(()=>{b()}),(a,e)=>(s(),_($,null,{default:n(()=>[r(u)?(s(),_(r(A),{key:0,variant:r(u).variant,class:"mb-4 whitespace-pre-line"},{default:n(()=>[l(w(r(u).message),1)]),_:1},8,["variant"])):B("",!0),i(N,{title:"Providers",description:"Installed providers and API key status. Provider availability is defined in code and environment configuration.",columns:C,data:d.value,actions:P,loading:c.value,sortable:"",searchable:"","search-placeholder":"Search providers...","empty-message":"No providers are installed in this AgentBuilder instance."},{"cell-name":n(({row:t})=>[v("div",E,[v("img",{src:`/api/providers/${t.name}/icon`,alt:m(t),class:"w-5 h-5 shrink-0 object-contain"},null,8,K),v("span",T,w(m(t)),1)])]),"cell-hasApiKey":n(({value:t,row:p})=>[t&&p.configuredViaPlatform?(s(),f("span",D,[i(r(x),{class:"w-3.5 h-3.5"}),e[0]||(e[0]=l(" Via platform ",-1))])):t?(s(),f("span",R,[i(r(x),{class:"w-3.5 h-3.5"}),e[1]||(e[1]=l(" Configured ",-1))])):(s(),f("span",{key:2,class:"inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded-full bg-neutral-100 text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400",title:g(p).length?`Required: ${g(p).join(", ")}`:void 0},[i(r(I),{class:"w-3.5 h-3.5"}),e[2]||(e[2]=l(" Not configured ",-1))],8,L))]),_:1},8,["data","loading"])]),_:1}))}});export{ee as default};