@standardagents/builder 0.40.8 → 0.40.10

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 (26) hide show
  1. package/dist/built-in-routes.js +1 -1
  2. package/dist/built-in-routes.js.map +1 -1
  3. package/dist/client/{ApiKeysView-C4Y9cSYU.js → ApiKeysView-DW_rcgbf.js} +1 -1
  4. package/dist/client/{CenteredContentView-CPmwemli.js → CenteredContentView-BwxhThjf.js} +1 -1
  5. package/dist/client/{CompositionView-DjGkIlYr.js → CompositionView-DQQloYHA.js} +1 -1
  6. package/dist/client/{ConfirmDialog.vue_vue_type_script_setup_true_lang-XiNe3YrT.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-DCZCVtJJ.js} +1 -1
  7. package/dist/client/{CopyButton.vue_vue_type_script_setup_true_lang-BwmDHOX8.js → CopyButton.vue_vue_type_script_setup_true_lang-DPaK8ZgZ.js} +1 -1
  8. package/dist/client/{DataTable.vue_vue_type_script_setup_true_lang-CcLHLHnY.js → DataTable.vue_vue_type_script_setup_true_lang-oU3rezOQ.js} +1 -1
  9. package/dist/client/{JsonViewer-NFiM-1mq.js → JsonViewer-Dd0PDdAu.js} +1 -1
  10. package/dist/client/{LoginView-CMrynGWA.js → LoginView-BoUWDaYZ.js} +1 -1
  11. package/dist/client/{MarketplaceView-DSVK0eEg.js → MarketplaceView-Dq3arYjz.js} +1 -1
  12. package/dist/client/{Modal.vue_vue_type_script_setup_true_lang-CNLy_Ual.js → Modal.vue_vue_type_script_setup_true_lang-CwLmWuhx.js} +1 -1
  13. package/dist/client/{ModelModal.vue_vue_type_script_setup_true_lang-C7RUHd8w.js → ModelModal.vue_vue_type_script_setup_true_lang-ByVG_rEF.js} +1 -1
  14. package/dist/client/{ModelsView-BxwhabLZ.js → ModelsView-CNxZxuMY.js} +1 -1
  15. package/dist/client/{PromptEditView-5Duk1Ptb.js → PromptEditView-CdALsRZ0.js} +1 -1
  16. package/dist/client/{PromptModal-c-HXeNKs.js → PromptModal-Bg9-3prv.js} +1 -1
  17. package/dist/client/{PromptsView-Dbvrqsre.js → PromptsView-BgumN2bU.js} +1 -1
  18. package/dist/client/{ProvidersView-RLYrNVsO.js → ProvidersView-C9UvETp8.js} +1 -1
  19. package/dist/client/{ThreadInspectorPane.vue_vue_type_script_setup_true_lang-DoC-EFIL.js → ThreadInspectorPane.vue_vue_type_script_setup_true_lang-BNKZouHJ.js} +1 -1
  20. package/dist/client/{ThreadsView-BLWLaaK5.js → ThreadsView-G7WPUvXx.js} +1 -1
  21. package/dist/client/{ToolsView-DDKFpl-z.js → ToolsView-VXM-IHXM.js} +1 -1
  22. package/dist/client/{UsersView-oD_h7Zbf.js → UsersView-C_LlI9x0.js} +1 -1
  23. package/dist/client/{VariablesView-C7F2C4zr.js → VariablesView-BlsswVjj.js} +1 -1
  24. package/dist/client/{index-C9sh-3lG.js → index-CRZrWTvf.js} +3 -3
  25. package/dist/client/index.html +1 -1
  26. package/package.json +5 -5
@@ -1 +1 @@
1
- import{A as G,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-BuvSxRmI.js";import{_ as Be}from"./Modal.vue_vue_type_script_setup_true_lang-CNLy_Ual.js";import{_,L as Te,a2 as He,N as X,i as Y,O as ee,z as te,C as Fe,a3 as Pe,a4 as Ve,a5 as Ee,a6 as Ne,a7 as ze,a8 as Me,m as De}from"./index-C9sh-3lG.js";import{I as Re}from"./check-CD2lvcVi.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=G({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=G({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"],Ge={class:"modal-card-header border-b border-neutral-100 px-5 py-3 dark:border-neutral-800"},Je={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",Ge,[d("h3",Je,[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(N=>v(l,N)!==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 N of n)v(l,N).getBoundingClientRect().top<=E&&(I=N);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=G({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),N=["basics","schema","prompt","tools","hooks","variables","behavior"],{activeTab:J,scrollToSection:W}=Ye(E,N),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),M=$(!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(()=>M.value?"success":"primary");const ce=x(()=>M.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(){M.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(),M.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=>{M.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(J),"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(Ne,{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(Me,{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":M.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 G,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-BuvSxRmI.js";import{_ as Be}from"./Modal.vue_vue_type_script_setup_true_lang-CwLmWuhx.js";import{_,L as Te,a2 as He,N as X,i as Y,O as ee,z as te,C as Fe,a3 as Pe,a4 as Ve,a5 as Ee,a6 as Ne,a7 as ze,a8 as Me,m as De}from"./index-CRZrWTvf.js";import{I as Re}from"./check-CD2lvcVi.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=G({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=G({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"],Ge={class:"modal-card-header border-b border-neutral-100 px-5 py-3 dark:border-neutral-800"},Je={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",Ge,[d("h3",Je,[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(N=>v(l,N)!==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 N of n)v(l,N).getBoundingClientRect().top<=E&&(I=N);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=G({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),N=["basics","schema","prompt","tools","hooks","variables","behavior"],{activeTab:J,scrollToSection:W}=Ye(E,N),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),M=$(!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(()=>M.value?"success":"primary");const ce=x(()=>M.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(){M.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(),M.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=>{M.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(J),"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(Ne,{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(Me,{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":M.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-BuvSxRmI.js";import{C as E,b as x,D as S,x as q}from"./index-C9sh-3lG.js";import{_ as B}from"./DataTable.vue_vue_type_script_setup_true_lang-CcLHLHnY.js";import{u as F}from"./useActionFeedback-FN4t6ezB.js";import{P as U}from"./PromptModal-c-HXeNKs.js";import{C as j}from"./CenteredContentView-CPmwemli.js";import{I as L}from"./plus-XkSslfF4.js";import"./formkit-DJxUzqRQ.js";import"./vendor-c_uwtQ-S.js";import"./syntax-D68HCEYm.js";import"./monaco-DI2r3M8m.js";import"./chevron-right-bWZrmJ5a.js";import"./ConfirmDialog.vue_vue_type_script_setup_true_lang-XiNe3YrT.js";import"./Modal.vue_vue_type_script_setup_true_lang-CNLy_Ual.js";import"./check-CD2lvcVi.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-BuvSxRmI.js";import{C as E,b as x,D as S,x as q}from"./index-CRZrWTvf.js";import{_ as B}from"./DataTable.vue_vue_type_script_setup_true_lang-oU3rezOQ.js";import{u as F}from"./useActionFeedback-FN4t6ezB.js";import{P as U}from"./PromptModal-Bg9-3prv.js";import{C as j}from"./CenteredContentView-BwxhThjf.js";import{I as L}from"./plus-XkSslfF4.js";import"./formkit-DJxUzqRQ.js";import"./vendor-c_uwtQ-S.js";import"./syntax-D68HCEYm.js";import"./monaco-DI2r3M8m.js";import"./chevron-right-bWZrmJ5a.js";import"./ConfirmDialog.vue_vue_type_script_setup_true_lang-DCZCVtJJ.js";import"./Modal.vue_vue_type_script_setup_true_lang-CwLmWuhx.js";import"./check-CD2lvcVi.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,an as I,b as k}from"./index-C9sh-3lG.js";import{_ as N}from"./DataTable.vue_vue_type_script_setup_true_lang-CcLHLHnY.js";import{C as $}from"./CenteredContentView-CPmwemli.js";import{I as x}from"./check-CD2lvcVi.js";import{u as F}from"./useActionFeedback-FN4t6ezB.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-BuvSxRmI.js";import"./formkit-DJxUzqRQ.js";import"./monaco-DI2r3M8m.js";import"./vendor-c_uwtQ-S.js";import"./syntax-D68HCEYm.js";import"./chevron-right-bWZrmJ5a.js";import"./ConfirmDialog.vue_vue_type_script_setup_true_lang-XiNe3YrT.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,an as I,b as k}from"./index-CRZrWTvf.js";import{_ as N}from"./DataTable.vue_vue_type_script_setup_true_lang-oU3rezOQ.js";import{C as $}from"./CenteredContentView-BwxhThjf.js";import{I as x}from"./check-CD2lvcVi.js";import{u as F}from"./useActionFeedback-FN4t6ezB.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-BuvSxRmI.js";import"./formkit-DJxUzqRQ.js";import"./monaco-DI2r3M8m.js";import"./vendor-c_uwtQ-S.js";import"./syntax-D68HCEYm.js";import"./chevron-right-bWZrmJ5a.js";import"./ConfirmDialog.vue_vue_type_script_setup_true_lang-DCZCVtJJ.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};
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["syntax-D68HCEYm.js","vendor-c_uwtQ-S.js","vue-BuvSxRmI.js","formkit-DJxUzqRQ.js"])))=>i.map(i=>d[i]);
2
- import{d as nt,z as j,e as t,k as ze,g as Pt,m as J,B as Dt,an as Vt,c as C,w as ge,r as g,O as Jt,a5 as Pr,ao as Nr,J as c,a4 as fa,C as zr,D as jr,b as s,f as n,q as b,j as B,s as lt,u as f,h as Xe,a as Ut,Z as xn,o as At,ap as Br,aq as Ft,ag as It,F as Me,l as Ge,K as Ye,n as bt,ar as nr,as as ar,ah as Bt,at as Or,au as Vr,av as aa,aw as rr,ax as sr,x as ut,ay as Ln,az as Ur,aA as or,aB as qr,X as Hr,Y as Wr,aC as lr,y as wt,aD as Rn,aE as Tt,_ as ra,aF as Kr,a3 as $t,aG as Jr,am as hn,aH as Gr,aI as Mn,aJ as ir,aK as dr,aL as Yr,al as Qr,aM as ur,aN as Zr,aO as Xr,aP as es,aQ as ts,aR as ns,aS as as,aT as rs,aU as ss,aV as os,aW as ls,L as Wt,aX as is,aY as sn,aZ as sa,a_ as Bn,P as Ot,H as ds,a$ as cr,b0 as us,b1 as cs,b2 as fs,b3 as qn,b4 as ps,b5 as vs,b6 as hs,b7 as _a,b8 as Dn,b9 as ms,ba as gs,bb as wa,bc as $a,bd as oa,W as xs,be as bs,bf as ys,bg as Ca}from"./vue-BuvSxRmI.js";import{H as fr,b as Ze,J as ks,K as _s,L as pa,M as ws,N as la,I as _n,k as Sa,O as Ta,C as pr,P as $s,Q as Ia,R as Cs,m as ht,S as vr,U as hr,B as tt,V as mr,h as mn,W as Fn,X as Ss,Y as Hn,_ as wn,e as pn,f as fn,Z as Ts,$ as Is,u as As,A as Et,p as Es,w as Ls,y as Rs,z as Ms,a0 as Ds,a1 as Fs,x as Ps}from"./index-C9sh-3lG.js";import{e as Ns,p as zs}from"./vendor-c_uwtQ-S.js";import{_ as gr}from"./Modal.vue_vue_type_script_setup_true_lang-CNLy_Ual.js";import{u as js}from"./timeAgo-DRBdu9ed.js";import{_ as va,u as Bs}from"./CopyButton.vue_vue_type_script_setup_true_lang-BwmDHOX8.js";import{_ as pt,W as Os,a as Vs,b as Us,c as qs,d as Hs,e as on}from"./monaco-DI2r3M8m.js";import{J as Wn}from"./JsonViewer-NFiM-1mq.js";import{_ as Ws}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-XiNe3YrT.js";import{u as xr,_ as br,b as $n,c as Ks,P as Js}from"./PromptModal-c-HXeNKs.js";const Gs=nt({__name:"UiMenuItem",props:{active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},as:{default:"button"}},emits:["click"],setup(e,{emit:o}){const a=e,l=o;function r(i){a.disabled||l("click",i)}return(i,p)=>(t(),j(Dt(e.as),{type:e.as==="button"?"button":void 0,disabled:e.as==="button"?e.disabled:void 0,onClick:r,class:J(["w-full flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors",[e.disabled?"opacity-50 cursor-not-allowed":"hover:bg-neutral-100 dark:hover:bg-neutral-800 cursor-pointer",e.active?"bg-accent-50 dark:bg-accent-950/30":""]])},{default:ze(()=>[Pt(i.$slots,"default")]),_:3},8,["type","disabled","class"]))}});async function vn(e){const o=await fr(e);if(!o.ok)throw new Error(`Request failed for ${e}`);return o.json()}async function Ys(e){if(!e)return null;try{return(await vn(`/prompts/${encodeURIComponent(e)}`)).prompt}catch{return null}}async function sy(e){if(!e)return null;try{return await vn(`/tools/${encodeURIComponent(e)}`)}catch{return null}}function Qs(e){const o=e?.env??e?.tenvs;return!o||typeof o!="object"?{}:o}function yr(e){return Object.keys(Qs(e)).filter(o=>o.trim().length>0)}function Zs(e){const o=e?.variables||[],a=new Map;for(const l of o){const r=l.name?.trim();r&&a.set(r,{...l,name:r})}for(const l of yr(e))a.has(l)||a.set(l,{name:l,type:"text",required:!1,description:"Default value set on this prompt."});return Array.from(a.values())}function oy(e){return e?!e.packed&&e.id===e.name:!1}function Xs(e,o){return o?.type?o.type:e.startsWith("provider:")?"provider":e.startsWith("mcp:")?"mcp":"unknown"}function eo(e){return e.startsWith("provider:")?e.slice(9):e.startsWith("mcp:")?e.slice(4):e}function to(e,o){if(!e)return null;const a=o[e];if(a)return a;for(const l of Object.values(o))if(l.name===e)return l;return null}function no(e,o,a={}){const l=o[e.name],r=l?.model;return{name:e.name,displayName:eo(e.name),kind:Xs(e.name,l),description:l?.description||"",variables:l?.variables||[],model:r,resolvedModel:to(r,a),config:e}}function ly(e,o,a,l){const r=o==="b"&&e.type!=="dual_ai",i=o==="a"?e.side_a_label||"Side A":e.side_b_label||(r?"Human":"Side B"),p=o==="a"?e.side_a_agent_prompt:e.side_b_agent_prompt,u=o==="a"?e.side_a_stop_on_response:e.side_b_stop_on_response,S=o==="a"?e.side_a_stop_tool:e.side_b_stop_tool,T=o==="a"?e.side_a_max_steps:e.side_b_max_steps,w=[o==="a"?e.side_a_session_stop_tool:e.side_b_session_stop_tool,o==="a"?e.side_a_session_fail_tool:e.side_b_session_fail_tool,o==="a"?e.side_a_session_status_tool:e.side_b_session_status_tool].filter(M=>!!M),v=(a?.tools||[]).map(M=>no(M,l.toolsCatalog,l.models)),y=v.filter(M=>M.kind==="handoff"||M.kind==="subagent");return{id:o,agentName:e.name,label:i,mode:r?"human":"ai",promptName:p||null,stopOnResponse:u,stopTool:S,maxSteps:T,sessionStopTool:o==="a"?e.side_a_session_stop_tool:e.side_b_session_stop_tool,sessionTools:w,prompt:a,model:a&&l.models[a.model_id]||null,tools:v,hooks:(a?.hooks||[]).map(M=>l.hooks[M]||{id:M,hook:"unknown"}),variables:Zs(a),variableEnvNames:yr(a),outgoingAgents:y}}function kr(e){if(!e)return!1;if(e instanceof Error&&e.name==="AbortError")return!0;const o=String(e);return o.includes("signal is aborted")||o.includes("The operation was aborted")||o.includes("aborted a request")}function ao(e){const{limit:o=50,offset:a=0,agentId:l=null,userId:r=null,search:i=null,startDate:p=null,endDate:u=null,sort:S="activity",executingOnly:T=!1,includeTerminated:w=!0,autoFetch:v=!0}=e||{},y=C(()=>{const ee=new URLSearchParams,R=typeof o=="number"?o:o.value,P=typeof a=="number"?a:a.value,N=typeof l=="string"?l:l?.value,W=typeof r=="string"?r:r?.value,_e=typeof i=="string"?i:i?.value,Le=typeof p=="number"?p:p?.value,Z=typeof u=="number"?u:u?.value;ee.append("limit",R.toString()),ee.append("offset",P.toString()),N&&(ee.append("agent_id",N),ee.append("include_children","1")),W&&ee.append("user_id",W),_e&&ee.append("search",_e),Le&&ee.append("startDate",Le.toString()),Z&&ee.append("endDate",Z.toString());const Re=typeof S=="string"?S:S.value;return Re&&ee.append("sort",Re),(typeof T=="boolean"?T:T.value)&&ee.append("executing","1"),(typeof w=="boolean"?w:w.value)||ee.append("terminated","0"),Ze(`/api/threads?${ee.toString()}`)}),{data:M,error:$,isFetching:q,isFinished:K,execute:G,abort:ue}=Vt(y,{immediate:v,refetch:!0}).get().json(),re=C(()=>M.value?.threads||[]),ie=C(()=>M.value?.total||0),xe=C(()=>M.value?.hasMore||!1);return{threads:re,total:ie,hasMore:xe,error:$,isFetching:q,isFinished:K,refetch:G,abort:ue}}function ro(){const{data:e,error:o,isFetching:a,execute:l}=Vt(Ze("/api/threads/owners"),{immediate:!0}).get().json();return{owners:C(()=>e.value?.owners||[]),error:o,isFetching:a,refetch:l}}function ha(e){const o=C(()=>{const w=typeof e=="string"?e:e?.value;return w?Ze(`/api/threads/${w}`):""}),{data:a,error:l,isFetching:r,isFinished:i,execute:p,abort:u}=Vt(o,{immediate:!1,refetch:!0}).get().json();ge(o,w=>{w?p():(u(),a.value=null)},{immediate:!0});const S=C(()=>a.value?{id:a.value.thread.id,agent_id:a.value.thread.agent_id,user_id:a.value.thread.user_id,tags:a.value.thread.tags||[],parent:a.value.thread.parent??null,terminated:a.value.thread.terminated??null,created_at:a.value.thread.created_at,agent:a.value.agent||{id:"",title:"Unknown",type:"unknown"},stats:a.value.stats}:null),T=C(()=>kr(l.value)?null:l.value);return{thread:S,error:T,isFetching:r,isFinished:i,refetch:p,abort:u}}const _r=3,Aa=3e4;let Pn=!1,ln=null,Tn=0;function ma(){return Pn}function ga(e={}){if(Pn)return Promise.resolve("halt");if(ln)return ln;if(Date.now()<Tn)return Promise.resolve("retry");const o=e.fetch??fetch;return ln=(async()=>{try{const a=await o(Ze("/api/auth/me"),ks({credentials:"same-origin"}));return a.status===401||a.status===403?(Pn=!0,_s(e),"halt"):(Tn=Date.now()+Aa,"retry")}catch{return Tn=Date.now()+Aa,"retry"}finally{ln=null}})(),ln}function wr(){Pn=!1,Tn=0}function $r(e){const o=e*.25;return Math.max(0,Math.round(e-o+Math.random()*o*2))}async function iy(){return ma()?!1:await ga()==="retry"}const so={key:0,class:"flex min-h-[500px] items-center justify-center"},oo={class:"flex min-h-0 min-w-0 flex-1 flex-col"},lo={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"},io={class:"min-w-0 flex-1"},uo={class:"edit-sections-query"},co=nt({__name:"AgentModal",props:{modelValue:{type:Boolean},editAgent:{},mode:{},apiError:{},readonly:{type:Boolean,default:!1},saving:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},inlineGlobalNotice:{type:Boolean,default:!1},inlineAccentTabs:{type:Boolean,default:!1},inlineFlatSections:{type:Boolean,default:!1},surfaceSection:{default:null}},emits:["update:modelValue","save"],setup(e,{expose:o,emit:a}){const l=e,r=a,i=C(()=>l.mode==="edit"),p=C(()=>!!l.surfaceSection),u=C(()=>l.inline&&l.inlineFlatSections),S=C(()=>l.inline||p.value),T=C(()=>S.value?{config:pa}:{}),w=C(()=>i.value&&(l.editAgent?.id||l.editAgent?.name)||""),v=ws(()=>w.value,{autoload:!1}),y=g(null),M=["basics","side-a","side-b","variables"],{activeTab:$,scrollToSection:q}=xr(y,M),K=C(()=>[{id:"basics",label:"Basics",icon:la},{id:"side-a",label:"Side A",icon:_n},{id:"side-b",label:"Side B",icon:v.agentType.value==="ai_human"?Sa:_n},{id:"variables",label:"Variables",icon:Ta}]),G=g(!1),ue=g(!1),re=g(null);let ie=0;const xe=C(()=>JSON.stringify({name:v.name.value,title:v.title.value,agentType:v.agentType.value,exposeAsTool:v.exposeAsTool.value,toolDescription:v.toolDescription.value,maxSessionTurns:v.maxSessionTurns.value,sideALabel:v.sideALabel.value,sideAAgentPrompt:v.sideAAgentPrompt.value,sideAStopOnResponse:v.sideAStopOnResponse.value,sideAStopOnToolCall:v.sideAStopOnToolCall.value,sideAStopTool:v.sideAStopTool.value,sideAStopToolResponseProperty:v.sideAStopToolResponseProperty.value,sideAManualStopCondition:v.sideAManualStopCondition.value,sideAMaxSteps:v.sideAMaxSteps.value,sideAEndConversationTool:v.sideAEndConversationTool.value,sideBLabel:v.sideBLabel.value,sideBAgentPrompt:v.sideBAgentPrompt.value,sideBStopOnResponse:v.sideBStopOnResponse.value,sideBStopOnToolCall:v.sideBStopOnToolCall.value,sideBStopTool:v.sideBStopTool.value,sideBStopToolResponseProperty:v.sideBStopToolResponseProperty.value,sideBMaxSteps:v.sideBMaxSteps.value,sideBEndConversationTool:v.sideBEndConversationTool.value,agentEnv:v.agentEnv.value})),ee=C(()=>ue.value?"Saved":l.inline&&i.value?"Save Agent Changes":i.value?"Update Agent":"Create Agent"),R=C(()=>l.saving||l.inline&&!G.value),P=C(()=>p.value||l.inline?{class:l.inline?"flex h-full min-w-0 flex-col":"min-w-0"}:{modelValue:l.modelValue,title:i.value?"Edit Agent":"Create Agent",width:"max-w-5xl",contentPadding:!1});function N(){ue.value=!1,re.value=null}function W(){Xe().then(()=>{G.value=!!v.formNode.value?.context?.state.dirty})}function _e(ye){v.handleFormNode(ye),ye.on("commit",W),ye.on("reset",W),ye.on("message-added",W),ye.on("message-updated",W),ye.on("message-removed",W),W()}async function Le(){const ye=++ie;await Xe();const we=v.formNode.value;if(!we||ye!==ie){G.value=!1;return}await we.settled,we.reset(we.value),await Xe(),ye===ie&&(G.value=!1)}async function Z(){await Le(),ue.value=!0,re.value=xe.value}async function Re(){N(),v.resetForm(),await Xe(),i.value&&w.value?await v.load():await v.loadPrerequisites(),await Le()}async function z(){const ye=await v.prepareSubmit();ye&&r("save",ye)}function ne(){v.resetForm(),N(),r("update:modelValue",!1)}async function Ce(){N(),await Re()}function De(ye){return!l.surfaceSection||l.surfaceSection===ye}return ge(()=>l.modelValue,async ye=>{ye?await Re():(ie+=1,v.resetForm(),N(),G.value=!1)},{immediate:!0}),ge(()=>w.value,async(ye,we)=>{!l.modelValue||ye===we||await Re()}),ge(xe,ye=>{ue.value&&re.value!==null&&ye!==re.value&&N()}),ge(G,ye=>{ye&&N()}),o({formNode:v.formNode,markSaveSucceeded:Z,markCurrentFormCleanAfterSettle:Le,resetSaveSuccess:N}),(ye,we)=>{const Pe=Jt("FormKit");return t(),j(Dt(e.inline||p.value?"div":gr),Pr(P.value,Nr(e.inline||p.value?void 0:{"update:modelValue":Ie=>ye.$emit("update:modelValue",Ie)})),{default:ze(()=>[(t(),j(Dt(S.value?c(fa):"div"),zr(jr(T.value)),{default:ze(()=>[c(v).isLoading.value?(t(),s("div",so,[...we[0]||(we[0]=[n("span",{class:"text-neutral-500"},"Loading agent data...",-1)])])):(t(),j(Pe,{key:1,type:"form",id:"agent-form",actions:!1,disabled:e.readonly||e.saving,onSubmit:z,onNode:_e,"dirty-behavior":"compare","outer-class":"$reset flex min-h-0 min-w-0 flex-1 flex-col","form-class":"$reset flex-1 min-h-0 min-w-0 flex flex-col"},{default:ze(()=>[n("div",oo,[p.value?b("",!0):(t(),s("nav",lo,[Pt(ye.$slots,"nav-leading",{},void 0,!0),n("div",io,[B(c(br),{tabs:K.value,"active-tab":c($),"accent-active":e.inlineAccentTabs,orientation:"horizontal",onSelect:c(q)},null,8,["tabs","active-tab","accent-active","onSelect"])])])),n("div",{ref_key:"contentRef",ref:y,class:J(["min-h-0 flex-1 overflow-y-auto",p.value?"p-5":u.value?"bg-neutral-100 dark:bg-neutral-950":"bg-neutral-100 p-5 dark:bg-neutral-950"])},[n("div",uo,[e.inlineGlobalNotice?(t(),s("div",{key:0,class:J(["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",u.value?"mx-5 mb-4 mt-5":"mb-4"])}," Changes here are global and will affect all new messages across all threads. ",2)):b("",!0),n("div",{class:J([u.value?"space-y-4 pb-5":"space-y-4","edit-sections-stack"])},[e.apiError?(t(),j(c(pr),{key:0,variant:"error"},{default:ze(()=>[lt(f(e.apiError),1)]),_:1})):b("",!0),De("identity")?(t(),j(c($n),{key:1,id:"section-basics",title:"Basics",icon:c(la),flat:u.value},{default:ze(()=>[B($s,{form:c(v),"is-edit-mode":i.value},null,8,["form","is-edit-mode"])]),_:1},8,["icon","flat"])):b("",!0),De("side-a")?(t(),j(c($n),{key:2,id:"section-side-a",title:"Side A (AI)",icon:c(_n),flat:u.value},{default:ze(()=>[B(Ia,{form:c(v),side:"a"},null,8,["form"])]),_:1},8,["icon","flat"])):b("",!0),De("side-b")?(t(),j(c($n),{key:3,id:"section-side-b",title:c(v).agentType.value==="ai_human"?"Side B (Human)":"Side B (AI)",icon:c(v).agentType.value==="ai_human"?c(Sa):c(_n),flat:u.value},{default:ze(()=>[B(Ia,{form:c(v),side:"b"},null,8,["form"])]),_:1},8,["title","icon","flat"])):b("",!0),De("variables")?(t(),j(c($n),{key:4,id:"section-variables",title:"Variables",icon:c(Ta),flat:u.value},{default:ze(()=>[B(Cs,{form:c(v),readonly:e.readonly},null,8,["form","readonly"])]),_:1},8,["icon","flat"])):b("",!0)],2)])],2)]),p.value?b("",!0):(t(),j(Ks,{key:0,"form-id":"agent-form","form-node":c(v).formNode.value,readonly:e.readonly,inline:e.inline,saving:e.saving,dirty:G.value,"save-succeeded":ue.value,"save-label":ee.value,"save-disabled":R.value,"cancel-label":e.readonly?"Close":"Cancel",onCancel:ne,onDiscard:Ce},null,8,["form-node","readonly","inline","saving","dirty","save-succeeded","save-label","save-disabled","cancel-label"]))]),_:3},8,["disabled"]))]),_:3},16))]),_:3},16)}}}),fo=ht(co,[["__scopeId","data-v-e47eeb63"]]);function Cr(){const e=Ze("/api/agents"),{data:o,error:a,isFetching:l,isFinished:r,execute:i}=Vt(e,{immediate:!0}).get().json();return{agents:C(()=>o.value?.agents||[]),error:a,isFetching:l,isFinished:r,refetch:i}}function Xt(e,o,...a){}function xa(e){return!!e&&typeof e=="object"}function en(e){return typeof e=="string"?e:null}function In(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function po(e){if(xa(e)&&!(typeof e.name!="string"||typeof e.title!="string"||typeof e.type!="string"))return{name:e.name,title:e.title,type:e.type,description:en(e.description)??void 0,icon:en(e.icon)??void 0}}function vo(e){return!xa(e)||typeof e.id!="string"||typeof e.agent_name!="string"||typeof e.created_at!="number"?null:{id:e.id,agent_name:e.agent_name,user_id:en(e.user_id),tags:Array.isArray(e.tags)?e.tags.filter(o=>typeof o=="string"):null,parent:en(e.parent),terminated:In(e.terminated),created_at:e.created_at,last_activity_at:In(e.last_activity_at),executing:e.executing===!0,last_message_preview:en(e.last_message_preview),last_message_at:In(e.last_message_at),agent:po(e.agent)}}function ho(e){if(!xa(e))return null;if(e.type==="thread_deleted")return typeof e.threadId=="string"?{type:e.type,threadId:e.threadId}:null;if(e.type==="thread_activity")return typeof e.threadId=="string"&&typeof e.last_activity_at=="number"?{type:e.type,threadId:e.threadId,last_activity_at:e.last_activity_at,executing:e.executing===!0,...e.last_message_preview!==void 0?{last_message_preview:en(e.last_message_preview)}:{},...e.last_message_at!==void 0?{last_message_at:In(e.last_message_at)}:{}}:null;if(e.type==="thread_created"||e.type==="thread_updated"){const o=vo(e.thread);return o?{type:e.type,thread:o}:null}return null}function mo(e){return e==="admin"?"all":"user"}function go(e="user"){return e==="all"?"/api/events?scope=all":"/api/events"}function xo(e){const{autoConnect:o=!0,onEvent:a,scope:l="user"}=e||{};let r=l;const i=g(null),p=g(!1),u=g(null);let S=0,T=null,w=null,v=!0,y=null,M=0,$=!1,q=0;const K=3e4,G=3e4,ue=()=>{T&&(clearTimeout(T),T=null),w&&(clearInterval(w),w=null)};let re=0;const ie=()=>{w&&clearInterval(w),re=Date.now(),w=setInterval(()=>{i.value&&i.value.readyState===WebSocket.OPEN&&Date.now()-re>=G&&i.value.send("stream_ping")},G)},xe=()=>{const _e=$r(Math.min(1e3*Math.pow(2,S),K));S++,Xt(),T=setTimeout(()=>{v&&R()},_e)},ee=()=>{if(!(!v||ma())){if(M>=_r){ga().then(_e=>{_e==="halt"||!v||xe()});return}xe()}},R=()=>{P()},P=async()=>{const _e=++q;$=!1,i.value&&(y=null,i.value.close());const Le=window.location.protocol==="https:"?"wss:":"ws:",Z=window.location.host;try{const Re=await vr(`${Le}//${Z}${Ze(go(r))}`);if(_e!==q||!v)return;const z=new WebSocket(Re);i.value=z,y=z,z.onopen=()=>{y===z&&(p.value=!0,u.value=null,S=0,M=0,$=!0,wr(),ie(),Xt("AgentBuilderEvents","WebSocket connected"))},z.onmessage=ne=>{if(y===z){re=Date.now();try{if(typeof ne.data=="string"&&(ne.data==="pong"||ne.data==="stream_pong"))return;const Ce=ho(JSON.parse(ne.data));Ce&&a&&a(Ce)}catch{u.value="Failed to parse event update"}}},z.onerror=ne=>{y===z&&(u.value="WebSocket connection error")},z.onclose=()=>{y===z&&(p.value=!1,$||M++,ue(),Xt("AgentBuilderEvents","WebSocket disconnected"),ee())}}catch(Re){u.value=Re instanceof Error?Re.message:"Failed to create WebSocket",ee()}},N=(_e=r)=>{r=_e,v=!0,S=0,R()},W=()=>{q++,v=!1,ue(),y=null,i.value&&(i.value.close(),i.value=null),p.value=!1,S=0};return o&&N(),Ut(()=>{W()}),{wsConnected:p,wsError:u,connect:N,disconnect:W}}const bo={class:"relative inline-flex items-center"},yo={key:0,class:"inline-block w-2 h-2 rounded-full bg-green-500 dark:bg-green-400"},ko={key:1,class:"inline-block w-2 h-2 rounded-full bg-neutral-400 dark:bg-neutral-600"},_o={key:0},wo={key:1},Sr=nt({__name:"StatusDot",props:{connected:{type:Boolean},error:{type:Boolean}},setup(e){const o=g(!1),a=g(null);return(l,r)=>(t(),s("div",bo,[n("span",{class:"p-0.5 cursor-default outline-none",tabindex:"-1",onMouseenter:r[0]||(r[0]=i=>o.value=!0),onMouseleave:r[1]||(r[1]=i=>o.value=!1)},[e.connected?(t(),s("span",yo)):(t(),s("span",ko))],32),B(xn,{"enter-active-class":"transition-opacity duration-150","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-100","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:ze(()=>[o.value?(t(),s("div",{key:0,ref_key:"popoverRef",ref:a,class:J(["absolute top-full left-1/2 -translate-x-1/2 mt-1 px-2 py-1 text-xs rounded shadow-lg whitespace-nowrap z-50 border",{"bg-green-50 dark:bg-green-950 border-green-200 dark:border-green-800 text-green-700 dark:text-green-300":e.connected,"bg-neutral-50 dark:bg-neutral-900 border-neutral-200 dark:border-neutral-700 text-neutral-600 dark:text-neutral-400":!e.connected}])},[e.connected?(t(),s("span",_o,"Live - Connected")):(t(),s("span",wo,"Offline"))],2)):b("",!0)]),_:1})]))}}),$o={class:"relative min-w-0"},Co={class:"truncate flex-1 text-left"},So={key:0},To=["onClick"],Io={class:"border-t border-neutral-200 dark:border-neutral-700"},Ao={class:"flex items-center justify-between"},Eo={class:"space-y-4 date-filter-inputs"},Lo=nt({__name:"DateFilterDropdown",props:{startDate:{},endDate:{}},emits:["update:startDate","update:endDate"],setup(e,{emit:o}){const a=e,l=o,r=g(!1),i=g(!1),p=g(null),u=g(null),S=g(""),T=g(""),w=[{label:"All time",value:"all",getRange:()=>({startDate:null,endDate:null})},{label:"Today",value:"today",getRange:()=>{const R=new Date,P=new Date(R.getFullYear(),R.getMonth(),R.getDate());return{startDate:Math.floor(P.getTime()/1e3),endDate:null}}},{label:"Last 3 days",value:"3days",getRange:()=>{const R=new Date,P=new Date(R.getFullYear(),R.getMonth(),R.getDate()-2);return{startDate:Math.floor(P.getTime()/1e3),endDate:null}}},{label:"Last 7 days",value:"7days",getRange:()=>{const R=new Date,P=new Date(R.getFullYear(),R.getMonth(),R.getDate()-6);return{startDate:Math.floor(P.getTime()/1e3),endDate:null}}},{label:"Last 30 days",value:"30days",getRange:()=>{const R=new Date,P=new Date(R.getFullYear(),R.getMonth(),R.getDate()-29);return{startDate:Math.floor(P.getTime()/1e3),endDate:null}}}],v=C(()=>{if(!a.startDate&&!a.endDate)return"all";for(const R of w){const P=R.getRange();if(P.startDate===a.startDate&&P.endDate===a.endDate)return R.value}return"custom"}),y=C(()=>{if(!a.startDate&&!a.endDate)return"All time";const R=w.find(N=>N.value===v.value);if(R&&v.value!=="custom")return R.label;const P=N=>new Date(N*1e3).toLocaleDateString("en-US",{month:"short",day:"numeric"});return a.startDate&&a.endDate?`${P(a.startDate)} - ${P(a.endDate)}`:a.startDate?`From ${P(a.startDate)}`:a.endDate?`Until ${P(a.endDate)}`:"Custom"}),M=C(()=>a.startDate!==null||a.endDate!==null);function $(){if(!p.value||!u.value)return;const R=p.value.getBoundingClientRect();u.value.style.position="fixed",u.value.style.top=`${R.bottom+8}px`,u.value.style.left=`${R.left}px`;const P=i.value?280:180;u.value.style.minWidth=`${R.width}px`,u.value.style.maxWidth=`${Math.max(R.width,P)}px`,u.value.style.width="auto",u.value.style.margin="0"}function q(){r.value?K():(r.value=!0,Xe(()=>{if(u.value&&(u.value.setAttribute("popover","auto"),u.value.addEventListener("toggle",G),"showPopover"in u.value))try{u.value.showPopover()}catch{}$()}))}function K(){if(u.value){if("hidePopover"in u.value)try{u.value.hidePopover()}catch{}u.value.removeEventListener("toggle",G)}r.value=!1,i.value=!1}function G(R){R.target===u.value&&(r.value=R.newState==="open",r.value&&$())}function ue(R){const P=R.getRange();l("update:startDate",P.startDate),l("update:endDate",P.endDate),K()}function re(){const R=S.value?Math.floor(new Date(S.value).getTime()/1e3):null,P=T.value?Math.floor(new Date(T.value+"T23:59:59").getTime()/1e3):null;l("update:startDate",R),l("update:endDate",P),K()}function ie(R){R.stopPropagation(),l("update:startDate",null),l("update:endDate",null)}const xe=R=>{const P=R.target;u.value&&!u.value.contains(P)&&p.value&&!p.value.contains(P)&&K()},ee=R=>{R.key==="Escape"&&r.value&&(K(),p.value?.focus())};return At(()=>{document.addEventListener("click",xe),document.addEventListener("keydown",ee),window.addEventListener("resize",$),window.addEventListener("scroll",$,!0)}),Ut(()=>{document.removeEventListener("click",xe),document.removeEventListener("keydown",ee),window.removeEventListener("resize",$),window.removeEventListener("scroll",$,!0)}),ge(i,R=>{R&&(a.startDate&&(S.value=new Date(a.startDate*1e3).toISOString().split("T")[0]),a.endDate?T.value=new Date(a.endDate*1e3).toISOString().split("T")[0]:T.value=new Date().toISOString().split("T")[0]),Xe($)}),(R,P)=>{const N=Jt("FormKit");return t(),s("div",$o,[n("button",{ref_key:"triggerRef",ref:p,type:"button",onClick:q,class:J(["w-full flex items-center gap-1 px-2 py-1 text-xs rounded-sm border transition-colors min-w-0 focus:outline-none focus:ring-2 focus:ring-accent-500/30",[M.value?"agents-border-selected agents-surface-selected agents-text-selected-muted":"border-zinc-300 dark:border-zinc-600 hover:border-accent-400 dark:hover:border-accent-500 bg-white dark:bg-transparent text-zinc-700 dark:text-zinc-300"]])},[B(c(Br),{size:14,class:"shrink-0 text-zinc-400"}),n("span",Co,f(y.value),1),M.value?(t(),j(c(Ft),{key:0,size:14,class:"shrink-0 text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-200",onClick:ie})):(t(),j(c(It),{key:1,size:14,class:J(["shrink-0 text-zinc-400",r.value?"rotate-180":""])},null,8,["class"]))],2),r.value?(t(),s("div",{key:0,ref_key:"popoverRef",ref:u,class:"dropdown-popover z-[9999]"},[B(c(hr),{"max-height":i.value?void 0:"max-h-48",shadow:!1},{default:ze(()=>[i.value?(t(),s("div",{key:1,class:"p-2.5 space-y-2.5",onClick:P[4]||(P[4]=Ye(()=>{},["stop"]))},[n("div",Ao,[P[6]||(P[6]=n("span",{class:"text-xs font-medium"},"Custom range",-1)),n("button",{type:"button",onClick:P[1]||(P[1]=Ye(W=>i.value=!1,["stop"])),class:"text-[10px] text-neutral-500 hover:text-black dark:hover:text-white"}," ← Back ")]),n("div",Eo,[B(N,{modelValue:S.value,"onUpdate:modelValue":P[2]||(P[2]=W=>S.value=W),type:"datepicker",label:"From","picker-only":"",popover:"",format:"MMM D, YYYY","value-format":"YYYY-MM-DD",sequence:["day"]},null,8,["modelValue"]),B(N,{modelValue:T.value,"onUpdate:modelValue":P[3]||(P[3]=W=>T.value=W),type:"datepicker",label:"To","picker-only":"",popover:"",format:"MMM D, YYYY","value-format":"YYYY-MM-DD",sequence:["day"]},null,8,["modelValue"])]),n("button",{type:"button",onClick:re,class:"w-full py-1.5 text-xs font-medium bg-black dark:bg-white text-white dark:text-black rounded-sm hover:opacity-90 transition-opacity"}," Apply ")])):(t(),s("div",So,[(t(),s(Me,null,Ge(w,W=>n("button",{key:W.value,type:"button",onClick:_e=>ue(W),class:J(["w-full px-2.5 py-1.5 text-left text-xs agents-surface-hover transition-colors flex items-center gap-2",v.value===W.value?"agents-surface-selected agents-text-selected":""])},[n("span",{class:J(["w-1.5 h-1.5 rounded-full border border-accent-500",v.value===W.value?"bg-accent-500":""])},null,2),lt(" "+f(W.label),1)],10,To)),64)),n("div",Io,[n("button",{type:"button",onClick:P[0]||(P[0]=Ye(W=>i.value=!0,["stop"])),class:J(["w-full px-2.5 py-1.5 text-left text-xs agents-surface-hover transition-colors flex items-center gap-2",v.value==="custom"?"agents-surface-selected agents-text-selected":""])},[n("span",{class:J(["w-1.5 h-1.5 rounded-full border border-accent-500",v.value==="custom"?"bg-accent-500":""])},null,2),P[5]||(P[5]=lt(" Custom range... ",-1))],2)])]))]),_:1},8,["max-height"])],512)):b("",!0)])}}}),Ro=ht(Lo,[["__scopeId","data-v-753faf78"]]),Nn=nt({__name:"TimeAgo",props:{timestamp:{}},setup(e){const o=e,a=js(()=>o.timestamp);return(l,r)=>(t(),s("span",null,f(c(a)),1))}}),ia="name:",Ea=["bg-sky-400/70 dark:bg-sky-500/70","bg-emerald-400/70 dark:bg-emerald-500/70","bg-amber-400/70 dark:bg-amber-500/70","bg-rose-400/70 dark:bg-rose-500/70","bg-violet-400/70 dark:bg-violet-500/70"],Mo=(e,o)=>o.created_at-e.created_at,gn=e=>e.last_activity_at??e.created_at,da=e=>e.executing===!0&&!e.terminated,Do=e=>{const o=new Map,a=new Map(e.map(l=>[l.id,l]));for(const l of e){const r=gn(l);let i=l;const p=new Set;for(;i&&!p.has(i.id);){p.add(i.id);const u=o.get(i.id);(u===void 0||u<r)&&o.set(i.id,r),i=i.parent?a.get(i.parent):void 0}}return o},Tr=e=>{const o=new Set,a=new Map(e.map(l=>[l.id,l]));for(const l of e){if(!da(l))continue;let r=l;const i=new Set;for(;r&&!i.has(r.id);)i.add(r.id),o.add(r.id),r=r.parent?a.get(r.parent):void 0}return o},Fo=(e,o,a)=>{const l=r=>o.get(r.id)??gn(r);return(r,i)=>{const p=a.has(r.id),u=a.has(i.id);if(p!==u)return p?-1:1;if(e==="created")return i.created_at-r.created_at;if(e==="oldest")return r.created_at-i.created_at;const S=l(i)-l(r);return S!==0?S:i.created_at-r.created_at}},An=(e,o)=>`${e}::${o}`,Ir=e=>{const o=e.tags.find(l=>l.startsWith(ia));if(!o)return null;const a=o.slice(ia.length).trim();return a.length>0?a:null},Kn=e=>{const o=e.last_message_preview?.trim();return o||null},Po=e=>gn(e)>e.created_at,Lt=e=>e.tags.filter(o=>!o.startsWith(ia)),No=e=>Ir(e)||e.agent.title||e.agent.name,zo=e=>e.id.startsWith("__draft_")?"--------":e.id.slice(0,8),Jn=e=>Ir(e)?e.agent.title||e.agent.name:null,La=e=>Array.from({length:Math.min(Math.max(e,0),6)},(o,a)=>12+a*8),Ra=e=>Ea[e%Ea.length],Ma=e=>({left:`${e}px`}),jo=(e,o,a="activity")=>{if(e.length===0)return[];const l=Do(e),r=Tr(e),i=Fo(a,l,r),p=new Map(e.map($=>[$.id,$])),u=new Map,S=[];for(const $ of e){const q=$.parent;if(q&&p.has(q)){const K=u.get(q)??[];K.push($),u.set(q,K);continue}S.push($)}S.sort(i);for(const $ of u.values())$.sort(i);const T=[],w=new Set,v=$=>{if(w.has($.id))return;w.add($.id);const q=u.get($.id);if(q)for(const K of q)v(K)},y=($,q,K)=>{if(w.has($.id))return;w.add($.id),T.push({kind:"thread",thread:$,depth:q,isNested:q>0,clusterId:K});const G=u.get($.id);if(!G)return;const ue=new Map;for(const re of G){const ie=re.agent_id||re.agent?.name||re.id,xe=ue.get(ie);xe?xe.push(re):ue.set(ie,[re])}for(const[re,ie]of ue.entries()){if(ie.length>1){const xe=An($.id,re),ee=o(xe);if(T.push({kind:"directory",key:xe,depth:q+1,label:ie[0]?.agent?.title||ie[0]?.agent?.name||re,count:ie.length,open:ee,clusterId:K,working:ie.some(R=>r.has(R.id))}),!ee){for(const R of ie)v(R);continue}for(const R of ie)y(R,q+2,K);continue}y(ie[0],q+1,K)}};for(const $ of S)y($,0,$.id);const M=e.filter($=>!w.has($.id)).sort(i);for(const $ of M)y($,$.parent?1:0,$.parent??$.id);return T},Bo=["id","onClick"],Oo=["title"],Vo=["title"],Uo={key:0,class:"text-emerald-600 dark:text-emerald-400"},qo=["title"],Ho={key:2,class:"space-y-0.5"},Wo={key:0,class:"flex flex-wrap gap-1 min-w-0"},Ko={key:3,class:"flex items-center gap-1"},Jo={key:0,class:"text-[10px] text-neutral-400"},Go=["onClick"],Yo={class:"flex items-center gap-2"},Qo={key:0,class:"thread-working-dot shrink-0",title:"A thread in this group is executing","aria-label":"Working"},Zo=nt({__name:"ThreadListRows",props:{rows:{},selectedThreadId:{},workingClusterIds:{},clusterHasNestedRows:{},isThreadFlashing:{type:Function},isDirectoryFlashing:{type:Function},hasRowTopGap:{type:Function},hasRowBottomBorder:{type:Function}},emits:["selectThread","toggleDirectory"],setup(e,{emit:o}){const a=e,l=o,r=i=>a.workingClusterIds.has(i);return(i,p)=>(t(!0),s(Me,null,Ge(e.rows,(u,S)=>(t(),s(Me,{key:u.kind==="thread"?u.thread.id:u.key},[u.kind==="thread"?(t(),s("button",{key:0,id:`thread-${u.thread.id}`,class:J(["w-full text-left cursor-pointer rounded-lg px-3 transition-colors relative",[u.isNested?e.selectedThreadId===u.thread.id?"py-1.5":"py-1.5 bg-neutral-50/40 dark:bg-neutral-900/20":"py-2",e.hasRowTopGap(S)?"mt-1":"",e.hasRowBottomBorder(S)&&e.clusterHasNestedRows[u.clusterId]?"mb-1":"",u.thread.terminated?"opacity-50 text-neutral-500 dark:text-neutral-500":"",e.selectedThreadId===u.thread.id?"agents-surface-selected":"agents-surface-hover"]]),style:bt(u.depth>0?{paddingLeft:`${12+Math.min(u.depth,6)*8}px`}:void 0),onClick:T=>l("selectThread",u.thread.id)},[(t(!0),s(Me,null,Ge(c(La)(u.depth),(T,w)=>(t(),s("span",{key:`thread-line-${w}`,class:J(["pointer-events-none absolute inset-y-1 w-px rounded-full",c(Ra)(w)]),style:bt(c(Ma)(T)),"aria-hidden":"true"},null,6))),128)),n("div",{class:J(["flex items-center gap-2",!u.isNested||c(Lt)(u.thread).length>0||c(Jn)(u.thread)?"mb-0.5":""])},[r(u.thread.id)?(t(),s("span",{key:0,class:"thread-working-dot shrink-0",title:u.thread.executing?"Executing now":"Subagent executing","aria-label":"Working"},null,8,Oo)):u.thread.terminated?(t(),j(c(nr),{key:1,size:12,class:"shrink-0 text-neutral-500 dark:text-neutral-400"})):b("",!0),n("span",{class:J(["font-medium truncate flex-1 min-w-0",[e.selectedThreadId===u.thread.id?"agents-text-selected":"",e.isThreadFlashing(u.thread.id)?"thread-list-green-flash":""]])},f(c(No)(u.thread)),3),n("span",{class:J(["flex-shrink-0 text-[10px]",e.selectedThreadId===u.thread.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"]),title:c(Po)(u.thread)?`Last activity ${new Date(c(gn)(u.thread)*1e3).toLocaleString()} · Created ${new Date(u.thread.created_at*1e3).toLocaleString()}`:`Created ${new Date(u.thread.created_at*1e3).toLocaleString()} · no activity recorded`},[r(u.thread.id)?(t(),s("span",Uo," working ")):(t(),j(Nn,{key:1,timestamp:c(gn)(u.thread)*1e6},null,8,["timestamp"]))],10,Vo)],2),c(Kn)(u.thread)?(t(),s("div",{key:0,class:J(["mb-0.5 truncate text-[11px]",e.selectedThreadId===u.thread.id?"agents-text-selected":"text-neutral-600 dark:text-neutral-300"]),title:c(Kn)(u.thread)||""},f(c(Kn)(u.thread)),11,qo)):b("",!0),c(Jn)(u.thread)?(t(),s("div",{key:1,class:J(["mb-0.5 truncate text-[10px]",e.selectedThreadId===u.thread.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},f(c(Jn)(u.thread)),3)):b("",!0),u.isNested?c(Lt)(u.thread).length>0?(t(),s("div",Ko,[(t(!0),s(Me,null,Ge(c(Lt)(u.thread).slice(0,3),T=>(t(),s("span",{key:T,class:"inline-block px-1.5 py-0.5 rounded text-[10px] truncate max-w-[120px] bg-neutral-200 dark:bg-neutral-800 text-neutral-600 dark:text-neutral-400"},f(T),1))),128)),c(Lt)(u.thread).length>3?(t(),s("span",Jo," +"+f(c(Lt)(u.thread).length-3),1)):b("",!0)])):b("",!0):(t(),s("div",Ho,[n("span",{class:J(["block max-w-[80px] truncate font-mono text-[10px]",e.selectedThreadId===u.thread.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},f(c(zo)(u.thread)),3),c(Lt)(u.thread).length>0?(t(),s("div",Wo,[(t(!0),s(Me,null,Ge(c(Lt)(u.thread).slice(0,3),T=>(t(),s("span",{key:T,class:J(["inline-block px-1.5 py-0.5 rounded text-[10px] truncate max-w-[60px]",e.selectedThreadId===u.thread.id?"agents-surface-selected-strong agents-text-selected":"bg-neutral-200 dark:bg-neutral-800 text-neutral-600 dark:text-neutral-400"])},f(T),3))),128)),c(Lt)(u.thread).length>3?(t(),s("span",{key:0,class:J(["text-[10px]",e.selectedThreadId===u.thread.id?"agents-text-selected-muted":"text-neutral-400"])}," +"+f(c(Lt)(u.thread).length-3),3)):b("",!0)])):b("",!0)]))],14,Bo)):(t(),s("button",{key:1,type:"button",class:"w-full rounded-lg text-left px-3 py-1.5 bg-neutral-50/25 dark:bg-neutral-900/10 hover:bg-neutral-100 dark:hover:bg-neutral-800/40 transition-colors relative",style:bt({paddingLeft:`${12+Math.min(u.depth,6)*8}px`}),onClick:T=>l("toggleDirectory",u.key)},[(t(!0),s(Me,null,Ge(c(La)(u.depth),(T,w)=>(t(),s("span",{key:`directory-line-${w}`,class:J(["pointer-events-none absolute inset-y-1 w-px rounded-full",c(Ra)(w)]),style:bt(c(Ma)(T)),"aria-hidden":"true"},null,6))),128)),n("div",Yo,[u.working?(t(),s("span",Qo)):(t(),j(c(ar),{key:1,size:13,class:"text-neutral-500 dark:text-neutral-400 shrink-0"})),n("span",{class:J(["truncate flex-1 min-w-0 text-[11px] font-medium text-neutral-600 dark:text-neutral-300",e.isDirectoryFlashing(u.key)?"thread-list-green-flash":""])},f(u.label)+" ("+f(u.count)+") ",3),u.open?(t(),j(c(It),{key:2,size:14,class:"text-neutral-500 dark:text-neutral-400 shrink-0"})):(t(),j(c(Bt),{key:3,size:14,class:"text-neutral-500 dark:text-neutral-400 shrink-0"}))])],12,Go))],64))),128))}}),Xo=ht(Zo,[["__scopeId","data-v-ce56afa5"]]),el={class:"flex flex-col flex-1 min-h-0 overflow-visible"},tl={class:"px-3 border-b border-neutral-300 dark:border-neutral-700 h-12 flex items-center shrink-0"},nl={class:"flex items-center w-full min-w-0"},al={key:0,class:"shrink-0 text-xs font-mono text-neutral-500 dark:text-neutral-400"},rl=["title"],sl={class:"ml-auto flex shrink-0 items-center gap-1"},ol=["title","aria-label","aria-pressed"],ll={key:0,class:"px-3 py-2 border-b border-neutral-200 dark:border-neutral-800 shrink-0 space-y-2"},il={class:"relative"},dl={class:"flex items-center gap-2 w-full"},ul={class:"relative flex-1 min-w-0"},cl=["value"],fl=["aria-pressed"],pl=["aria-pressed"],vl={key:0},hl={class:"flex items-center gap-2 w-full"},ml={key:0,class:"flex-1 min-w-0"},gl={key:0,class:"p-4 flex justify-center"},xl={key:1,class:"p-4 text-red-600 dark:text-red-400"},bl={key:2,class:"text-neutral-500 dark:text-neutral-400 text-center py-12"},yl={key:1,class:"text-base"},kl={key:3,class:"px-2 py-2"},_l={key:0,class:"p-3 flex justify-center"},wl={key:1,class:"p-3 text-center text-[10px] text-neutral-400 dark:text-neutral-500"},Da="agents.threads.sort",$l=50,Fa=1800,Cl=nt({__name:"ThreadListPane",props:{selectedThreadId:{},optimisticThread:{},agentId:{},showCollapseButton:{type:Boolean}},emits:["selectThread","collapse","createThread","threadsLoaded"],setup(e,{expose:o,emit:a}){const l=e,r=a,i=g(""),p=g(null),u=g(!1),S=g(null),T=g(null),w=g(null),v=g(!1),y=g(!0),M=g(null),$=[{value:"activity",label:"Recent activity"},{value:"created",label:"Newest"},{value:"oldest",label:"Oldest"}],K=g((()=>{try{const D=localStorage.getItem(Da);if($.some(U=>U.value===D))return D}catch{}return"activity"})());ge(K,D=>{try{localStorage.setItem(Da,D)}catch{}});const{owners:G}=ro(),ue=C(()=>G.value.filter(D=>D.user_id).map(D=>({value:D.user_id,label:`${D.display_name||D.username||D.email||D.user_id} (${D.thread_count})`}))),re=C(()=>ue.value.length>1),ie=g(!1),xe=C(()=>l.agentId!=null);ge(()=>l.agentId,D=>{D!=null&&(T.value=D),ie.value=!1},{immediate:!0});const ee=g(null),{agents:R,isFetching:P}=Cr(),N=C(()=>R.value.map(D=>({value:D.name,label:D.title||D.name}))),W=g(0),_e=g([]),Le=g(!1),Z=g(!1),Re=qr(D=>{p.value=D||null},300);ge(i,D=>{Re(D)});const z=C(()=>{let D=0;return p.value&&D++,T.value&&!xe.value&&D++,w.value&&D++,v.value&&D++,y.value||D++,(M.value||ee.value)&&D++,D});function ne(){i.value="",p.value=null,xe.value||(T.value=null),w.value=null,v.value=!1,y.value=!0,M.value=null,ee.value=null}async function Ce(){u.value=!0,await Xe(),S.value?.focus(),S.value?.select()}function De(){ne(),u.value=!1}function ye(){u.value?De():Ce()}const{threads:we,hasMore:Pe,isFetching:Ie,isFinished:me,error:le,refetch:de}=ao({limit:$l,offset:W,search:p,agentId:T,userId:w,startDate:M,endDate:ee,sort:K,executingOnly:v,includeTerminated:y}),he=g([]),Q=g(new Set);ge([p,T,w,v,y,K,M,ee],()=>{W.value=0,_e.value=[],he.value=[],Q.value.clear(),Le.value=!1,Z.value=!1}),ge(we,D=>{if(W.value===0){const U=new Map(_e.value.map(Te=>[Te.id,Te]));_e.value=D.map(Te=>{const ke=U.get(Te.id);if(!ke)return Te;const Je=Te.last_message_at??0;return(ke.last_message_at??0)<=Je?Te:{...Te,last_message_at:ke.last_message_at,...ke.last_message_preview!==void 0?{last_message_preview:ke.last_message_preview}:{},...ke.last_activity_at!==void 0&&(Te.last_activity_at??0)<ke.last_activity_at?{last_activity_at:ke.last_activity_at,executing:ke.executing}:{}}})}else{const U=new Set(_e.value.map(ke=>ke.id)),Te=D.filter(ke=>!U.has(ke.id));_e.value=[..._e.value,...Te],Z.value=!0}Le.value=!1});const Ae=g({}),Ne=g({}),V=g({}),ce=new Set,se=D=>Ae.value[D]??!1,Fe=D=>{Ae.value[D]=!se(D)},Oe=D=>{Ne.value[D]=!0;const U=setTimeout(()=>{delete Ne.value[D],ce.delete(U)},Fa);ce.add(U)},Qe=D=>{V.value[D]=!0;const U=setTimeout(()=>{delete V.value[D],ce.delete(U)},Fa);ce.add(U)};Ut(()=>{ce.forEach(D=>clearTimeout(D)),ce.clear()});const X=D=>Ne.value[D]===!0,fe=D=>V.value[D]===!0,ae=D=>{if(T.value&&D.agent_id!==T.value&&D.origin_agent_id!==T.value&&!D.parent||w.value&&D.user_id!==w.value||v.value&&!da(D)&&!D.parent||!y.value&&D.terminated||M.value&&D.created_at<M.value||ee.value&&D.created_at>ee.value)return!1;if(p.value){const U=p.value.toLowerCase(),Te=D.id.toLowerCase().includes(U),ke=D.tags.some(Je=>Je.toLowerCase().includes(U));if(!Te&&!ke)return!1}return!0},je=C(()=>{const D=_e.value.filter(Je=>!Q.value.has(Je.id)),U=new Set(D.map(Je=>Je.id)),ke=[...he.value.filter(Je=>!U.has(Je.id)&&!Q.value.has(Je.id)),...D];return l.optimisticThread&&!ke.some(Je=>Je.id===l.optimisticThread?.id)&&ke.unshift(l.optimisticThread),ke.sort(Mo)}),He=C(()=>je.value.filter(D=>!D.parent).length),H=C(()=>Tr(je.value)),$e=C(()=>je.value.filter(da).length),oe=C(()=>jo(je.value,se,K.value)),We=D=>{const U=oe.value[D],Te=oe.value[D+1];return U?Te?U.clusterId!==Te.clusterId:!0:!1},at=D=>{const U=oe.value[D],Te=oe.value[D-1];if(!U||!Te||U.clusterId!==Te.clusterId)return!1;const ke=U.kind==="directory"||U.kind==="thread"&&U.isNested,Je=Te.kind==="thread"&&!Te.isNested;return ke&&Je},ot=C(()=>{const D={};for(const U of oe.value)if(!D[U.clusterId]){if(U.kind==="directory"){D[U.clusterId]=!0;continue}if(U.kind==="thread"&&U.isNested){D[U.clusterId]=!0;continue}D[U.clusterId]=!1}return D}),pe=g(null);function O(){Le.value||Ie.value||!Pe.value||(Le.value=!0,W.value=_e.value.length)}const{arrivedState:te}=Or(pe,{offset:{bottom:100}});ge(()=>te.bottom,D=>{D&&Pe.value&&!Ie.value&&!Le.value&&O()});const qe=D=>{const U=R.value.find(ke=>ke.name===D.agent_name),Te=D.agent;return{id:D.id,agent_id:D.agent_name,origin_agent_id:D.origin_agent_name??D.agent_name,user_id:D.user_id,tags:D.tags||[],parent:D.parent??null,terminated:D.terminated??null,created_at:D.created_at,last_activity_at:D.last_activity_at??D.created_at,executing:D.executing===!0,last_message_preview:D.last_message_preview??null,last_message_at:D.last_message_at??null,agent:{name:D.agent_name,title:Te?.title||U?.title,type:Te?.type||U?.type||"ai_human"}}},ve=async D=>{if(D.type==="thread_created"){const U=qe(D.thread);if(!ae(U))return;if(U.parent)if(je.value.filter(ke=>ke.parent===U.parent&&ke.agent_id===U.agent_id).length+1>1){const ke=An(U.parent,U.agent_id);Qe(ke),se(ke)&&Oe(U.id)}else Oe(U.id);he.value.unshift(U)}else if(D.type==="thread_updated"){const U=qe(D.thread),Te=je.value.find(d=>d.id===U.id);if(!ae(U)){he.value=he.value.filter(d=>d.id!==U.id),_e.value=_e.value.filter(d=>d.id!==U.id);return}Q.value.delete(U.id);const ke=he.value.findIndex(d=>d.id===U.id);ke>=0&&(he.value[ke]=U);const Je=_e.value.findIndex(d=>d.id===U.id);if(Je>=0?_e.value[Je]=U:ke===-1&&he.value.unshift(U),!!U.terminated&&!Te?.terminated)if(U.parent)if((je.value.filter(m=>m.parent===U.parent&&m.agent_id===U.agent_id).length||1)>1){const m=An(U.parent,U.agent_id);Qe(m),se(m)&&Oe(U.id)}else Oe(U.id);else Oe(U.id)}else if(D.type==="thread_activity"){const U=Te=>{const ke=Te.findIndex(Je=>Je.id===D.threadId);ke!==-1&&(Te[ke]={...Te[ke],...D.last_activity_at!==void 0?{last_activity_at:D.last_activity_at}:{},...D.executing!==void 0?{executing:D.executing}:{},...D.last_message_preview!==void 0?{last_message_preview:D.last_message_preview}:{},...D.last_message_at!==void 0?{last_message_at:D.last_message_at}:{}})};U(_e.value),U(he.value)}else D.type==="thread_deleted"&&(Q.value.add(D.threadId),he.value=he.value.filter(U=>U.id!==D.threadId))},{wsConnected:E,wsError:be,connect:Be}=xo({autoConnect:!1,onEvent:ve});let Ke=!1;Ut(()=>{Ke=!0}),(async()=>{let D;try{const U=await fr("/auth/me");U.ok&&(D=(await U.json()).user?.role)}catch{}Ke||Be(mo(D))})(),ge(()=>W.value,D=>{D===0&&(he.value=[])}),ge(()=>[l.selectedThreadId,je.value],([D,U])=>{if(!D||U.length===0)return;const Te=new Map(U.map(Je=>[Je.id,Je]));let ke=Te.get(D);for(;ke&&ke.parent;){const Je=An(ke.parent,ke.agent_id);Ae.value[Je]=!0,ke=Te.get(ke.parent)}},{immediate:!0}),ge(()=>({rows:oe.value,finished:me.value}),({rows:D,finished:U})=>{const Te=D.find(ke=>ke.kind==="thread");U&&!ie.value&&(ie.value=!0,r("threadsLoaded",Te?.thread.id??null,je.value.map(ke=>ke.id)))},{immediate:!0}),o({refetch:de});const Ue=D=>{r("selectThread",D)};return(D,U)=>{const Te=Jt("FormKit");return t(),s("div",el,[n("div",tl,[n("div",nl,[n("button",{onClick:U[0]||(U[0]=Ye(ke=>r("collapse"),["stop"])),type:"button",class:"-ml-1 flex min-w-0 items-center gap-2 rounded px-1.5 py-1 text-left transition-colors hover:bg-black/10 dark:hover:bg-white/15",title:"Collapse Threads pane","aria-label":"Collapse Threads pane"},[B(c(Vr),{size:18,class:"shrink-0"}),U[12]||(U[12]=n("h2",{class:"truncate text-base font-bold"},"Threads",-1)),!c(Ie)&&He.value>0?(t(),s("span",al," ("+f(He.value)+") ",1)):b("",!0),!c(E)||c(be)?(t(),j(Sr,{key:1,class:"shrink-0",connected:c(E),error:c(be)},null,8,["connected","error"])):b("",!0)]),$e.value>0?(t(),s("span",{key:0,class:"ml-1 inline-flex shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-emerald-500/10 px-1.5 py-0.5 text-[10px] font-medium text-emerald-700 dark:text-emerald-400",title:`${$e.value} thread${$e.value===1?"":"s"} executing right now`},[U[13]||(U[13]=n("span",{class:"thread-working-dot shrink-0","aria-hidden":"true"},null,-1)),n("span",null,f($e.value),1)],8,rl)):b("",!0),n("div",sl,[n("button",{type:"button",class:J(["inline-flex h-7 w-7 items-center justify-center rounded-md border border-neutral-300 bg-white text-neutral-700 transition-colors hover:border-neutral-500 hover:bg-neutral-50 hover:text-black dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-300 dark:hover:border-neutral-500 dark:hover:bg-neutral-900 dark:hover:text-white",u.value?"agents-border-selected agents-text-selected bg-white dark:bg-neutral-950":""]),title:u.value?"Hide search":"Search threads","aria-label":u.value?"Hide search":"Search threads","aria-pressed":u.value,onClick:Ye(ye,["stop"])},[B(c(aa),{size:16})],10,ol),n("button",{onClick:U[1]||(U[1]=ke=>r("createThread")),type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded-md border border-neutral-300 bg-white text-neutral-700 transition-colors hover:border-neutral-500 hover:bg-neutral-50 hover:text-black dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-300 dark:hover:border-neutral-500 dark:hover:bg-neutral-900 dark:hover:text-white",title:"New thread","aria-label":"New thread"},[B(c(rr),{size:16})]),e.showCollapseButton!==!1?(t(),s("button",{key:0,onClick:U[2]||(U[2]=ke=>r("collapse")),type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded-md text-neutral-700 transition-colors hover:bg-black/10 hover:text-black dark:text-neutral-300 dark:hover:bg-white/15 dark:hover:text-white",title:"Collapse pane","aria-label":"Collapse pane"},[B(c(sr),{size:17})])):b("",!0)])])]),u.value||z.value>0?(t(),s("div",ll,[n("div",il,[B(c(aa),{size:14,class:"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-neutral-400"}),ut(n("input",{ref_key:"threadSearchInputRef",ref:S,"onUpdate:modelValue":U[3]||(U[3]=ke=>i.value=ke),type:"search",placeholder:"Search threads...",class:"h-8 w-full rounded-md border border-neutral-300 bg-white pl-7 pr-8 text-sm text-neutral-950 outline-none transition-colors placeholder:text-neutral-400 focus:border-[var(--agents-accent-border)] dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-50"},null,512),[[Ln,i.value]]),i.value?(t(),s("button",{key:0,type:"button",class:"absolute right-1.5 top-1/2 inline-flex h-5 w-5 -translate-y-1/2 items-center justify-center rounded text-neutral-400 transition-colors hover:bg-neutral-100 hover:text-neutral-800 dark:hover:bg-neutral-800 dark:hover:text-neutral-100",title:"Clear search","aria-label":"Clear search",onClick:U[4]||(U[4]=ke=>{i.value="",p.value=null,Ce()})},[B(c(Ft),{size:13})])):b("",!0)]),n("div",dl,[n("label",ul,[B(c(Ur),{size:12,class:"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-neutral-400"}),ut(n("select",{"onUpdate:modelValue":U[5]||(U[5]=ke=>K.value=ke),class:"h-8 w-full appearance-none rounded-md border border-neutral-300 bg-white pl-6 pr-2 text-xs text-neutral-700 outline-none transition-colors focus:border-[var(--agents-accent-border)] dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-200","aria-label":"Sort threads"},[(t(),s(Me,null,Ge($,ke=>n("option",{key:ke.value,value:ke.value},f(ke.label),9,cl)),64))],512),[[or,K.value]])]),n("button",{type:"button",class:J(["h-8 shrink-0 rounded-md border px-2 text-[11px] transition-colors",v.value?"border-emerald-500/60 bg-emerald-500/10 text-emerald-700 dark:text-emerald-400":"border-neutral-300 text-neutral-500 hover:text-neutral-900 dark:border-neutral-700 dark:text-neutral-400 dark:hover:text-neutral-100"]),"aria-pressed":v.value,title:"Show only threads that are executing right now",onClick:U[6]||(U[6]=ke=>v.value=!v.value)}," Working ",10,fl),n("button",{type:"button",class:J(["h-8 shrink-0 rounded-md border px-2 text-[11px] transition-colors",y.value?"border-neutral-300 text-neutral-500 hover:text-neutral-900 dark:border-neutral-700 dark:text-neutral-400 dark:hover:text-neutral-100":"agents-border-selected agents-text-selected"]),"aria-pressed":!y.value,title:"Hide threads that have finished",onClick:U[7]||(U[7]=ke=>y.value=!y.value)}," Open ",10,pl)]),re.value?(t(),s("div",vl,[B(Te,{type:"selectSearch",size:"sm","active-highlight":"",value:w.value||"",options:ue.value,placeholder:"All owners","search-placeholder":"Search owners...",onInput:U[8]||(U[8]=ke=>w.value=ke||null)},null,8,["value","options"])])):b("",!0),n("div",hl,[xe.value?b("",!0):(t(),s("div",ml,[B(Te,{type:"selectSearch",size:"sm","active-highlight":"",value:T.value||"",options:N.value,placeholder:"All agents","search-placeholder":"Search agents...",loading:c(P),onInput:U[9]||(U[9]=ke=>T.value=ke||null)},null,8,["value","options","loading"])])),B(Ro,{startDate:M.value,"onUpdate:startDate":U[10]||(U[10]=ke=>M.value=ke),endDate:ee.value,"onUpdate:endDate":U[11]||(U[11]=ke=>ee.value=ke),class:J(xe.value?"w-full":"flex-1 min-w-0")},null,8,["startDate","endDate","class"]),z.value>0?(t(),s("button",{key:1,onClick:ne,type:"button",class:"text-[10px] font-mono text-neutral-400 hover:text-neutral-900 dark:hover:text-neutral-100 transition-colors whitespace-nowrap"}," Clear ")):(t(),s("button",{key:2,onClick:De,type:"button",class:"text-[10px] font-mono text-neutral-400 hover:text-neutral-900 dark:hover:text-neutral-100 transition-colors whitespace-nowrap"}," Close "))])])):b("",!0),n("div",{ref_key:"scrollContainerRef",ref:pe,class:"flex-1 overflow-y-auto text-xs min-h-0"},[c(Ie)&&_e.value.length===0?(t(),s("div",gl,[B(tt)])):c(le)?(t(),s("div",xl," Error: "+f(c(le)),1)):oe.value.length===0?(t(),s("div",bl,[z.value>0?(t(),s(Me,{key:0},[U[14]||(U[14]=n("p",{class:"text-base mb-2"},"No matching threads",-1)),n("button",{onClick:ne,type:"button",class:"text-xs text-accent-600 dark:text-accent-400 hover:underline"}," Clear filters ")],64)):(t(),s("p",yl,"No threads found"))])):(t(),s("div",kl,[B(Xo,{rows:oe.value,"selected-thread-id":e.selectedThreadId,"working-cluster-ids":H.value,"cluster-has-nested-rows":ot.value,"is-thread-flashing":X,"is-directory-flashing":fe,"has-row-top-gap":at,"has-row-bottom-border":We,onSelectThread:Ue,onToggleDirectory:Fe},null,8,["rows","selected-thread-id","working-cluster-ids","cluster-has-nested-rows"]),Le.value||c(Ie)&&_e.value.length>0?(t(),s("div",_l,[B(tt)])):Z.value&&!c(Pe)&&oe.value.length>0?(t(),s("div",wl," All "+f(He.value)+" threads loaded ",1)):b("",!0)]))],512)])}}}),dy=ht(Cl,[["__scopeId","data-v-40e10a61"]]);function ua(e){return!!e&&typeof e=="object"}function Sl(e){if(ua(e)&&!Array.isArray(e))return e;if(typeof e=="string")try{const o=JSON.parse(e);return ua(o)&&!Array.isArray(o)?o:void 0}catch{return}}function Tl(e){const o=g(null),a=g(!1),l=g(null);let r=null;try{r=mr()}catch{}const i=r?.messages??g([]),p=C(()=>r?.groupedMessages?.value?r.groupedMessages.value:r?.workblocks?.value?r.workblocks.value:i.value),u=C(()=>r?.status.value==="connected"),S=g(null);r?.loading??g(!1);const T=C(()=>i.value.some(z=>z.status==="pending"));function w(z){if(!o.value?.agent)return null;const ne=o.value.agent,Ce=z==="assistant"?"A":"B";return Ce==="A"&&ne.side_a_label?ne.side_a_label:Ce==="B"&&ne.side_b_label?ne.side_b_label:null}function v(z){const ne=z.path??"",Ce=z.name??ne.split("/").pop()??"attachment";return{id:z.id||`att-${ne||Ce||Math.random().toString(36).slice(2)}`,type:"file",path:ne,name:Ce,mimeType:z.mimeType||z.mediaType||"application/octet-stream",width:z.width,height:z.height,description:z.description}}function y(z){if(z){if(Array.isArray(z))return z.length>0?z.map(v):void 0;try{const ne=JSON.parse(z);return Array.isArray(ne)&&ne.length>0?ne.filter(ua).map(v):void 0}catch{return}}}function M(z,ne){const Ce=[];z.reasoning_content&&Ce.push({id:`${z.id}-reasoning`,type:"reasoning",content:z.reasoning_content,created_at:z.created_at});const De=new Map;for(const Pe of z.workItems)Pe.type==="tool_result"&&Pe.tool_call_id&&De.set(Pe.tool_call_id,Pe);for(const Pe of z.workItems){if(Pe.type==="content"){if(!Pe.content)continue;Ce.push({id:Pe.id,type:"content",content:Pe.content,created_at:Pe.created_at??z.created_at});continue}if(Pe.type!=="tool_call")continue;const Ie=Pe.tool_call_id||Pe.id,me=De.get(Ie);let le="pending";if(me){const de=(me.content||"").toLowerCase(),he=de.includes("failed")||de.includes("error"),Q=de.length<500;le=me.status==="error"||he&&Q?"failed":"success"}Ce.push({id:Pe.id,type:"tool_call",content:Pe.name||"",created_at:z.created_at,tool_name:Pe.name,tool_call_id:Ie,tool_arguments:Pe.content||void 0,response:me?.content||null,response_status:le,response_log_id:null,log_id:null})}const ye=Ce.some(Pe=>Pe.type==="tool_call"&&Pe.response_status==="pending"),we=z.status!=="pending"&&!ye;return{type:"work",id:z.id,role:"assistant",items:Ce,created_at:z.created_at,updated_at:z.updated_at??z.response_completed_at??z.created_at,request_sent_at:z.request_sent_at??z.created_at,response_completed_at:z.response_completed_at??(we?z.updated_at??z.created_at:null),isComplete:we,sideLabel:w("assistant"),status:z.status}}function $(z){return z==="assistant"?"assistant":"user"}function q(z){for(let ne=z.length-1;ne>=0;ne--){const Ce=(z[ne].content||"").trim();if(Ce.length>0)return Ce}return""}function K(z){const ne=new Set,Ce=[];for(const De of z){const ye=y(De.attachments);if(ye?.length)for(const we of ye)ne.has(we.path)||(ne.add(we.path),Ce.push(we))}return Ce.length>0?Ce:void 0}function G(z){if(!z)return!1;if(z.tool_status==="error"||z.status==="failed")return!0;const ne=(z.content||"").toLowerCase();return ne?ne.includes("failed to execute tool")||ne.includes("has reported a failure")||ne.includes("execution stopped before completion"):!1}function ue(z){const ne=z.messages||[],Ce=ne[ne.length-1],De=Ce?$(Ce.role):"assistant",ye=Ce?.log_id??null,we=(z.subagent_status||"").toLowerCase(),Pe=G(Ce)||we.includes("error")||we.includes("failed"),Ie=q(ne),me=K(ne),le=ne.filter(de=>{const he=y(de.attachments);return!!de.content||!!de.status||!!(he&&he.length>0)}).map(de=>({id:de.id,role:de.role,content:de.content||"",created_at:de.created_at,silent:de.silent,attachments:y(de.attachments)}));return{type:"subagent",id:z.id,role:De,created_at:z.created_at,updated_at:z.updated_at,subagentId:z.subagent_id,subagentName:z.subagent_name??null,subagentTitle:z.subagent_title??null,subagentThreadName:z.subagent_thread_name??null,subagentStatus:z.subagent_status??null,subagentHasError:Pe,subagentResumable:z.subagent_resumable??null,subagentBlocking:z.subagent_blocking??null,messages:le,messageCount:ne.length,latestContent:Ie,attachments:me,log_id:ye,sideLabel:w(De),silent:ne.length>0&&ne.every(de=>!!de.silent)}}function re(z){const ne=(z.subagents||[]).map(De=>ue(De)),Ce=ne.reduce((De,ye)=>De?ye.updated_at>De.updated_at?ye:De:ye,null);return{type:"subagent_group",id:z.id,role:Ce?.role??"assistant",created_at:z.created_at,updated_at:z.updated_at,subagents:ne,count:ne.length,log_id:Ce?.log_id??null,sideLabel:Ce?.sideLabel??w("assistant"),silent:ne.every(De=>!!De.silent)}}function ie(z){return{type:"status",id:z.id,role:"system",content:z.content,created_at:z.created_at,statusKind:z.status_kind??null,subagentId:z.subagent_id??null}}const xe=C(()=>{const z=[],Ce=p.value.filter(ye=>(ye.depth??0)===0);let De=[];for(let ye=0;ye<Ce.length;ye++){const we=Ce[ye];if(z[z.length-1]?.role,"type"in we&&we.type==="workblock"){const he=M(we);z.push(he),we.attachments&&we.attachments.length>0&&De.push(...we.attachments.map(v));continue}if("type"in we&&we.type==="subagent_block"){De=[],z.push(ue(we));continue}if("type"in we&&we.type==="subagent_group_block"){De=[],z.push(re(we));continue}if("type"in we&&we.type==="status"){De=[],z.push(ie(we));continue}const Ie=we,me=Ie.role;if(Ie.role==="tool")continue;const le=y(Ie.attachments);let de;if((De.length>0||le)&&(de=[...De,...le||[]],De=[]),Ie.content||me==="system"||Ie.status==="pending"||de?.length){const he={type:"text",id:Ie.id,role:me,content:Ie.content||"",attachments:de?.length?de:void 0,created_at:Ie.created_at,log_id:Ie.log_id||null,sideLabel:w(me),isOptimistic:Ie.isOptimistic,status:Ie.status,silent:Ie.silent,metadata:Sl(Ie.metadata)};z.push(he)}}return z});async function ee(){if(!e.value){o.value=null;return}try{const z=await fetch(Ze(`/api/threads/${e.value}`));z.ok&&(o.value=await z.json())}catch{o.value=null}}async function R(z){if(e.value){if(r?.deleteMessage){await r.deleteMessage(z);return}try{if(!(await fetch(Ze(`/api/threads/${e.value}/messages/${z}`),{method:"DELETE"})).ok)throw new Error("Failed to delete message")}catch(ne){throw ne}}}async function P(z,ne){if(e.value)try{if(!(await fetch(Ze(`/api/threads/${e.value}/messages/${z}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:ne})})).ok)throw new Error("Failed to update message")}catch(Ce){throw Ce}}ge(e,async z=>{z?(a.value=!0,await ee(),a.value=!1):o.value=null},{immediate:!0});const N=r?.sendMessage,W=r?.stopExecution,_e=r?.attachments??g([]),Le=r?.addAttachment??(()=>{}),Z=r?.removeAttachment??(()=>{}),Re=r?.clearAttachments??(()=>{});return{messages:xe,threadInfo:o,isFetching:a,error:l,wsConnected:u,wsError:S,isExecuting:T,sendMessage:N,stopThread:W,attachments:_e,addAttachment:Le,removeAttachment:Z,clearAttachments:Re,deleteMessageById:R,updateMessageContent:P}}const Gn="__shiki_highlighter__";let Cn=null;async function Il(){return typeof window<"u"&&window[Gn]?window[Gn]:Cn||(Cn=Promise.all([pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.d),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.e),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.f),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.g),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.i),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.k),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.l),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.m),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.n),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.s),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.o),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.p),__vite__mapDeps([0,1])),pt(()=>import("./vue-BuvSxRmI.js").then(e=>e.bi),__vite__mapDeps([2,3,1,0])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.y),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.q),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.r),__vite__mapDeps([0,1]))]).then(async([{createHighlighterCore:e},{createJavaScriptRegexEngine:o},a,l,r,i,p,u,S,T,w,v,y,M,$,q])=>{const K=await e({themes:[$.default,q.default],langs:[a.default,l.default,r.default,i.default,p.default,u.default,S.default,T.default,w.default,v.default,y.default,M.default],engine:o()});return typeof window<"u"&&(window[Gn]=K),K}),Cn)}const Al={class:"code-block"},El={key:0,class:"text-xs text-neutral-500 p-2"},Ll=["innerHTML"],jt=nt({__name:"CodeBlock",props:{code:{},language:{}},setup(e){const o=e,a=g(""),l=g(!0),r={bash:"bash",cjs:"javascript",htm:"html",js:"javascript",jsonl:"json",md:"markdown",mjs:"javascript",sh:"bash",shell:"bash",text:"text",ts:"typescript",txt:"text",yml:"yaml"},i=new Set(["bash","css","html","javascript","jsx","json","markdown","shellscript","tsx","typescript","vue","yaml"]),p=w=>{const v=w?.trim().toLowerCase()||"text";return r[v]??v},u=w=>w.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),S=w=>`<pre class="shiki shiki-text"><code>${u(w)}</code></pre>`,T=async()=>{const w=o.code??"";if(!w){a.value='<pre class="shiki"><code></code></pre>',l.value=!1;return}try{const v=await Il(),y=p(o.language);i.has(y)?a.value=v.codeToHtml(w,{lang:y,themes:{light:"github-light",dark:"github-dark"}}):a.value=S(w)}catch{a.value=S(w)}finally{l.value=!1}};return At(()=>{T()}),ge(()=>o.code,()=>{T()}),ge(()=>o.language,()=>{T()}),(w,v)=>(t(),s("div",Al,[l.value?(t(),s("div",El,"Loading...")):(t(),s("div",{key:1,innerHTML:a.value,class:"code-content"},null,8,Ll))]))}}),Rl={key:0,class:"absolute inset-0 flex items-center justify-center bg-neutral-100 dark:bg-neutral-800"},Ml={key:1,class:"absolute inset-0 flex items-center justify-center bg-neutral-100 dark:bg-neutral-800 text-neutral-400"},Dl=["src","alt"],Fl={key:2,class:"pointer-events-none absolute inset-0 flex items-center justify-center bg-black/0 group-hover:bg-black/35 transition-colors"},Pl={class:"text-xs text-neutral-600 dark:text-neutral-300 truncate max-w-[100px]"},Yn=nt({__name:"FileAttachment",props:{attachment:{},threadId:{},showRemove:{type:Boolean}},emits:["remove"],setup(e,{emit:o}){const a=Hr(),l=Wr(),r=e,i=o,p=g(!0),u=g(!1),S=C(()=>r.attachment.mimeType.startsWith("image/")),T=C(()=>!!r.attachment.thumbnailBase64),w=C(()=>{if(!r.threadId||!r.attachment.path)return"";const K=r.attachment.path.startsWith("/")?r.attachment.path.slice(1):r.attachment.path;return Ze(`/api/threads/${r.threadId}/fs/${K}`)}),v=C(()=>S.value?r.attachment.thumbnailBase64?`data:image/webp;base64,${r.attachment.thumbnailBase64}`:w.value:"");function y(){p.value=!1,u.value=!1}function M(){p.value=!1,u.value=!0}function $(){i("remove",r.attachment.id)}function q(){if(!r.attachment.path){w.value&&window.open(w.value,"_blank");return}a.replace({query:{...l.query,inspector:"files",filePath:r.attachment.path},hash:l.hash})}return(K,G)=>(t(),s("div",{class:J(["relative group inline-flex items-center overflow-hidden rounded-2xl bg-neutral-100 dark:bg-neutral-800/60 ring-1 ring-black/5 dark:ring-white/10 transition-all hover:ring-black/10 dark:hover:ring-white/20 hover:shadow-sm",{"w-[256px] h-[256px]":S.value,"px-2.5 py-1.5":!S.value,"cursor-pointer":S.value&&w.value}]),onClick:G[0]||(G[0]=ue=>S.value&&w.value?q():void 0)},[S.value?(t(),s(Me,{key:0},[p.value&&!u.value&&!T.value?(t(),s("div",Rl,[...G[1]||(G[1]=[n("div",{class:"w-4 h-4 border-2 border-neutral-300 border-t-neutral-600 rounded-full animate-spin"},null,-1)])])):b("",!0),u.value&&!T.value?(t(),s("div",Ml,[B(c(lr),{size:24})])):b("",!0),ut(n("img",{src:v.value||w.value,alt:e.attachment.name,class:"w-full h-full object-cover",onLoad:y,onError:M},null,40,Dl),[[wt,!p.value&&!u.value||T.value]]),w.value?(t(),s("div",Fl,[...G[2]||(G[2]=[n("span",{class:"rounded-full bg-white/90 px-3 py-1 text-xs font-medium text-neutral-900 opacity-0 group-hover:opacity-100 transition-opacity shadow-sm"}," View ",-1)])])):b("",!0)],64)):(t(),s(Me,{key:1},[B(c(Rn),{size:14,class:"text-neutral-500 mr-1 flex-shrink-0"}),n("span",Pl,f(e.attachment.name),1)],64)),e.showRemove?(t(),s("button",{key:2,onClick:Ye($,["stop"]),class:"absolute -top-1 -right-1 w-4 h-4 rounded-full bg-red-500 text-white flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity"},[B(c(Ft),{size:10})])):b("",!0)],2))}});function Nl(e){const o=l=>!!l.path&&(l.mimeType||"").startsWith("image/"),a=[...e.attachments||[]].reverse().find(o);if(a)return a;for(let l=e.messages.length-1;l>=0;l--){const r=[...e.messages[l].attachments||[]].reverse().find(o);if(r)return r}return null}function zl(e){if(e.silent!==!0||!e.metadata)return null;const o=e.metadata.subagent_id??e.metadata.subagentId;if(typeof o!="string")return null;const a=o.trim();return a.length>0?a:null}const jl=/https:\/\/[^\s"'<>()\][]+/g;function Ar(e){if(!e)return null;const o=e.match(jl);if(!o)return null;for(const a of o){const l=a.replace(/[.,;:!?]+$/,"");let r;try{r=new URL(l)}catch{continue}if(r.protocol==="https:"&&r.pathname.endsWith("/settings/billing"))return r.toString()}return null}let Qn=null,Pa=null;function Bl(){return typeof window>"u"?null:((!Qn||Pa!==window)&&(Qn=zs(window),Pa=window),Qn)}function Na(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Ol(e){const o=e.trim().replace(/[\u0000-\u0020\u007f]+/g,"");return/^data:image\/(?:gif|jpe?g|png|webp);base64,/i.test(o)||/^(?:https?:|mailto:|tel:)/i.test(o)||/^[#/?]/.test(o)?!0:o.length>0&&!o.includes(":")&&!o.includes("&")}function Vl(e){const o=Na((e??"").trim()),a=Ns.parse(o,{async:!1,gfm:!0,breaks:!0,walkTokens(r){(r.type==="link"||r.type==="image")&&"href"in r&&typeof r.href=="string"&&!Ol(r.href)&&(r.href="")}}),l=Bl();return l?.isSupported?l.sanitize(a,{USE_PROFILES:{html:!0},FORBID_TAGS:["style","form","input","button"],FORBID_ATTR:["style"]}):Na(a)}const Ul=["onMouseenter","onMouseleave","onClick"],ql=["onClick"],Hl={key:0,xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"3",stroke:"currentColor",class:"w-3 h-3 text-white"},Wl={key:1,xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"2.5",stroke:"currentColor",class:"w-3 h-3 text-white"},Kl={key:0,class:"w-full text-center text-xs text-neutral-400 dark:text-neutral-500 py-1"},Jl={key:0,class:"mb-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-[10px] font-semibold uppercase leading-none tracking-wider text-neutral-400 dark:text-neutral-500"},Gl={key:0,class:"break-all font-mono font-normal normal-case tracking-normal"},Yl=["contenteditable","onInput"],Ql=["innerHTML"],Zl=["href"],Xl={key:4,class:"inline-flex items-center gap-1 rounded-full bg-neutral-100 dark:bg-neutral-800/60 px-3 py-2"},ei={key:0,class:"inline-flex items-center gap-1.5"},ti={key:1,class:"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-[4px] border agents-border-selected agents-surface-selected text-[8px] font-semibold leading-none agents-text-selected","aria-hidden":"true"},ni=["title","onClick"],ai={key:0,class:"flex flex-wrap gap-2 px-4"},ri=["onClick","onMouseenter"],si={key:0,class:"flex items-center gap-2 px-4 py-2 min-w-0"},oi={key:0,class:"truncate text-neutral-700 dark:text-neutral-300 min-w-0"},li={key:1,class:"truncate text-neutral-600 dark:text-neutral-400 min-w-0"},ii={class:"text-neutral-500 dark:text-neutral-400 flex-shrink-0"},di={class:"work-op-strip","aria-label":"Operation statuses"},ui=["title"],ci={key:1,class:"px-4 py-2 space-y-2.5"},fi={class:"flex items-center gap-2"},pi={class:"min-w-0 truncate text-neutral-700 dark:text-neutral-300"},vi={class:"shrink-0 text-neutral-500 dark:text-neutral-400"},hi={class:"work-op-strip","aria-label":"Operation statuses"},mi=["title"],gi={key:0,class:"space-y-1"},xi=["onClick","onMouseenter"],bi=["title"],yi={class:"font-mono font-medium text-neutral-800 dark:text-neutral-100 flex-shrink-0"},ki={key:2,class:"text-neutral-500 dark:text-neutral-400 truncate flex-1 min-w-0"},_i={key:0,class:"pl-5 mt-2 space-y-3"},wi={key:0},$i={class:"divide-y divide-neutral-100/80 rounded-md bg-white px-2.5 py-1.5 ring-1 ring-neutral-200/70 dark:divide-neutral-800/70 dark:bg-neutral-950/60 dark:ring-neutral-800/70"},Ci={class:"pt-1 font-mono text-[12px] text-neutral-500 dark:text-neutral-500"},Si={class:"min-w-0"},Ti={key:1,class:"break-words text-neutral-800 dark:text-neutral-200"},Ii={key:1},Ai={class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-400 dark:text-neutral-500 mb-1"},Ei=["onClick","onMouseenter"],Li={key:0,class:"m-0 whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed"},Ri={key:1},Mi=["onClick"],Di={key:0,class:"pl-5 mt-2 whitespace-pre-wrap break-words rounded-md bg-white dark:bg-neutral-950/60 ring-1 ring-neutral-200/70 dark:ring-neutral-800/70 px-2.5 py-2 text-neutral-700 dark:text-neutral-300"},Fi={key:2,class:"pl-5 pb-1 break-words text-neutral-600 dark:text-neutral-400"},Pi={class:"flex items-center justify-between gap-3 border-b border-neutral-100 px-3 py-2 dark:border-neutral-900"},Ni={class:"min-w-0"},zi={class:"truncate text-[12px] font-medium text-neutral-800 dark:text-neutral-100"},ji={class:"rounded-full bg-neutral-100 px-2 py-0.5 text-[10px] text-neutral-500 ring-1 ring-inset ring-neutral-200 dark:bg-neutral-900 dark:text-neutral-400 dark:ring-neutral-800"},Bi={class:"divide-y divide-neutral-100 dark:divide-neutral-900"},Oi=["onClick"],Vi={class:"flex items-center gap-3"},Ui=["src"],qi={class:"min-w-0 flex-1"},Hi={class:"flex items-center gap-2"},Wi={class:"truncate text-[13px] font-medium text-neutral-900 dark:text-neutral-50"},Ki={class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Ji=["src"],Gi={class:"shrink-0 rounded-full bg-neutral-100 px-1.5 py-0.5 text-[10px] leading-none text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400"},Yi={class:"ml-11 mt-1 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Qi={key:0,class:"ml-12 mt-1.5 space-y-1.5 border-l border-neutral-200 pl-2.5 dark:border-neutral-800"},Zi={class:"flex items-center gap-2 text-[10px] text-neutral-500 dark:text-neutral-400"},Xi={class:"font-medium uppercase text-neutral-600 dark:text-neutral-300"},ed={key:0,class:"italic"},td=["innerHTML"],nd={key:1,class:"mt-2 flex flex-wrap gap-2"},ad=["onClick"],rd={class:"flex items-center gap-3"},sd=["src"],od={class:"min-w-0 flex-1"},ld={class:"flex items-center gap-2"},id={class:"truncate text-[13px] font-medium text-neutral-900 dark:text-neutral-50"},dd={class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},ud=["src"],cd={class:"shrink-0 rounded-full bg-neutral-100 px-1.5 py-0.5 text-[10px] leading-none text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400"},fd={class:"ml-12 mt-1 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},pd={key:0,class:"ml-12 mt-2 space-y-1.5 border-l border-neutral-200 pl-2.5 dark:border-neutral-800"},vd={class:"flex items-center gap-2 text-[10px] text-neutral-500 dark:text-neutral-400"},hd={class:"font-medium uppercase text-neutral-600 dark:text-neutral-300"},md={key:0,class:"italic"},gd=["innerHTML"],xd={key:1,class:"mt-2 flex flex-wrap gap-2"},bd=nt({__name:"AgentMessages",props:{messages:{},threadId:{},selectedMessageId:{},selectedLogId:{},selectedEffectId:{},hoveredLogId:{},isEditMode:{type:Boolean},selectedForDelete:{},editedMessages:{},assistantAvatarSrc:{},userAvatarSrc:{}},emits:["messageClick","messageHover","selectionChange","messageEdit"],setup(e,{expose:o,emit:a}){const l=e,r=a;function i(h){const x=l.selectedForDelete?.has(h)??!1;r("selectionChange",h,!x)}function p(h,x){const Ee=h.target.innerText;r("messageEdit",x,Ee)}function u(h){return!!h&&typeof h=="object"&&!Array.isArray(h)}function S(h){return h.type==="text"?zl(h):null}function T(h){return Vl(Ke(h))}function w(h){const x=h.content??"";return h.status!=="failed"&&!x.includes("[ERROR]")?null:Ar(x)}function v(h){return l.editedMessages?.has(h)??!1}const y=g(new Map);function M(h,x){x?y.value.set(h,x):y.value.delete(h)}function $(h,x){M(h,x instanceof HTMLElement?x:null)}function q(h){const x=l.messages.findIndex(_=>_.log_id===h);if(x<=0)return-1;for(let _=x-1;_>=0;_--){const Ee=l.messages[_];if(Ee.role==="user")return _;if(Ee.role==="assistant"&&Ee.log_id)break}return-1}function K(h){for(let x=0;x<l.messages.length;x++){const _=l.messages[x];if(_.log_id===h||_.type==="work"&&_.items&&_.items.some(et=>et.log_id===h||et.response_log_id===h))return x}return-1}function G(h,x){const Ee=K(h);if(Ee===-1)return!1;const Y=y.value.get(Ee);if(!Y)return!1;const et=l.messages[Ee];let gt=null;if(et.role==="assistant"&&et.log_id){const Ct=q(et.log_id);gt=Ct!==-1?y.value.get(Ct):null}const kt=x.getBoundingClientRect(),rn=Y.getBoundingClientRect();if(rn.top<kt.top){const Vn=(gt||Y).getBoundingClientRect().top-kt.top-10;x.scrollBy({top:Vn,behavior:"smooth"})}else if(rn.bottom>kt.bottom){const Ct=rn.bottom-kt.bottom+10;x.scrollBy({top:Ct,behavior:"smooth"})}else if(gt){const Ct=gt.getBoundingClientRect();if(Ct.top<kt.top){const kn=Ct.top-kt.top-10;x.scrollBy({top:kn,behavior:"smooth"})}}return!0}function ue(h){for(const x of l.messages){if(x.type!=="work")continue;if(x.items.some(Y=>Y.log_id===h||Y.response_log_id===h))return!0}return!1}o({scrollToLogId:G,hasWorkblockForLogId:ue});function re(h){const x=l.messages[h];if(x.log_id)return x.log_id;if(x.role==="user")for(let _=h+1;_<l.messages.length;_++){const Ee=l.messages[_];if(Ee.log_id)return Ee.log_id;if(Ee.role==="user")break}return null}function ie(h){if(h.type!=="text")return null;const x=h.metadata;if(!u(x))return null;const _=x.scheduledEffect;return u(_)?_:null}function xe(h){const x=ie(h);return typeof x?.id=="string"?x.id:null}function ee(h){const x=ie(h);return typeof x?.name=="string"?x.name:null}function R(h){return xe(h)!==null}function P(h){const x=xe(h),_=ee(h);return _&&x?`${_} (${x})`:_||"Scheduled effect"}function N(h){if(h.type!=="text")return null;const x=ie(h),_=typeof x?.id=="string"?x.id:null;return _?{id:_,name:typeof x?.name=="string"?x.name:null}:null}function W(h,x){return x?re(h)===x:!1}function _e(h,x){if(l.isEditMode||h.silent||h.role==="user"&&!R(h))return"";const _=xe(h),Ee=!!re(x)||R(h);return W(x,l.selectedLogId??null)||_&&_===l.selectedEffectId?"message-log-state message-log-state--selected":re(x)&&W(x,l.hoveredLogId??null)?"message-log-state message-log-state--hovered":Ee?"message-log-state":""}function Le(h){const x=re(h);x&&r("messageHover",x)}function Z(h){re(h)&&r("messageHover",null)}function Re(h){const x=l.messages[h],_=re(h),Ee=N(x);(_||Ee)&&r("messageClick",x.id,_,Ee)}function z(h){const x=l.messages[h],_=N(x);_&&r("messageClick",x.id,re(h),_)}const ne=g(new Set),Ce=g(new Set),De=g(new Set),ye=g(new Set);function we(h){ne.value.has(h)?ne.value.delete(h):ne.value.add(h)}function Pe(h){Ce.value.has(h)?Ce.value.delete(h):Ce.value.add(h)}function Ie(h){De.value.has(h)?De.value.delete(h):De.value.add(h)}function me(h){ye.value.has(h)?ye.value.delete(h):ye.value.add(h)}function le(h){if(!h)return{};try{const x=JSON.parse(h);return x&&typeof x=="object"&&!Array.isArray(x)?x:{raw:x}}catch{return{raw:h}}}function de(h){if(!h)return null;const x=le(h),_=Object.keys(x);if(_.length===0)return null;const Ee=x[_[0]];return typeof Ee=="string"?te(se(Ee)):JSON.stringify(Ee)}const he={bash:"bash",css:"css",html:"html",js:"javascript",jsx:"jsx",json:"json",md:"markdown",mjs:"javascript",sh:"bash",ts:"typescript",tsx:"tsx",vue:"vue",yaml:"yaml",yml:"yaml"};function Q(h){if(typeof h!="string")return null;const x=h.split("?")[0]?.split("#")[0]?.split(".").pop()?.toLowerCase();return x?he[x]??null:null}function Ae(h){if(typeof h!="string")return null;const x=h.toLowerCase();return x.includes("json")?"json":x.includes("typescript")?"typescript":x.includes("javascript")?"javascript":x.includes("html")?"html":x.includes("css")?"css":x.includes("markdown")?"markdown":x.includes("yaml")||x.includes("yml")?"yaml":x.includes("shell")||x.includes("bash")?"bash":null}function Ne(h){try{return JSON.stringify(JSON.parse(h),null,2)}catch{return null}}function V(h){try{return JSON.parse(h)}catch{return null}}function ce(h){return h&&typeof h=="object"&&!Array.isArray(h)?h:null}function se(h){return h.replace(/\\r\\n/g,`
2
+ import{d as nt,z as j,e as t,k as ze,g as Pt,m as J,B as Dt,an as Vt,c as C,w as ge,r as g,O as Jt,a5 as Pr,ao as Nr,J as c,a4 as fa,C as zr,D as jr,b as s,f as n,q as b,j as B,s as lt,u as f,h as Xe,a as Ut,Z as xn,o as At,ap as Br,aq as Ft,ag as It,F as Me,l as Ge,K as Ye,n as bt,ar as nr,as as ar,ah as Bt,at as Or,au as Vr,av as aa,aw as rr,ax as sr,x as ut,ay as Ln,az as Ur,aA as or,aB as qr,X as Hr,Y as Wr,aC as lr,y as wt,aD as Rn,aE as Tt,_ as ra,aF as Kr,a3 as $t,aG as Jr,am as hn,aH as Gr,aI as Mn,aJ as ir,aK as dr,aL as Yr,al as Qr,aM as ur,aN as Zr,aO as Xr,aP as es,aQ as ts,aR as ns,aS as as,aT as rs,aU as ss,aV as os,aW as ls,L as Wt,aX as is,aY as sn,aZ as sa,a_ as Bn,P as Ot,H as ds,a$ as cr,b0 as us,b1 as cs,b2 as fs,b3 as qn,b4 as ps,b5 as vs,b6 as hs,b7 as _a,b8 as Dn,b9 as ms,ba as gs,bb as wa,bc as $a,bd as oa,W as xs,be as bs,bf as ys,bg as Ca}from"./vue-BuvSxRmI.js";import{H as fr,b as Ze,J as ks,K as _s,L as pa,M as ws,N as la,I as _n,k as Sa,O as Ta,C as pr,P as $s,Q as Ia,R as Cs,m as ht,S as vr,U as hr,B as tt,V as mr,h as mn,W as Fn,X as Ss,Y as Hn,_ as wn,e as pn,f as fn,Z as Ts,$ as Is,u as As,A as Et,p as Es,w as Ls,y as Rs,z as Ms,a0 as Ds,a1 as Fs,x as Ps}from"./index-CRZrWTvf.js";import{e as Ns,p as zs}from"./vendor-c_uwtQ-S.js";import{_ as gr}from"./Modal.vue_vue_type_script_setup_true_lang-CwLmWuhx.js";import{u as js}from"./timeAgo-DRBdu9ed.js";import{_ as va,u as Bs}from"./CopyButton.vue_vue_type_script_setup_true_lang-DPaK8ZgZ.js";import{_ as pt,W as Os,a as Vs,b as Us,c as qs,d as Hs,e as on}from"./monaco-DI2r3M8m.js";import{J as Wn}from"./JsonViewer-Dd0PDdAu.js";import{_ as Ws}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-DCZCVtJJ.js";import{u as xr,_ as br,b as $n,c as Ks,P as Js}from"./PromptModal-Bg9-3prv.js";const Gs=nt({__name:"UiMenuItem",props:{active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},as:{default:"button"}},emits:["click"],setup(e,{emit:o}){const a=e,l=o;function r(i){a.disabled||l("click",i)}return(i,p)=>(t(),j(Dt(e.as),{type:e.as==="button"?"button":void 0,disabled:e.as==="button"?e.disabled:void 0,onClick:r,class:J(["w-full flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors",[e.disabled?"opacity-50 cursor-not-allowed":"hover:bg-neutral-100 dark:hover:bg-neutral-800 cursor-pointer",e.active?"bg-accent-50 dark:bg-accent-950/30":""]])},{default:ze(()=>[Pt(i.$slots,"default")]),_:3},8,["type","disabled","class"]))}});async function vn(e){const o=await fr(e);if(!o.ok)throw new Error(`Request failed for ${e}`);return o.json()}async function Ys(e){if(!e)return null;try{return(await vn(`/prompts/${encodeURIComponent(e)}`)).prompt}catch{return null}}async function sy(e){if(!e)return null;try{return await vn(`/tools/${encodeURIComponent(e)}`)}catch{return null}}function Qs(e){const o=e?.env??e?.tenvs;return!o||typeof o!="object"?{}:o}function yr(e){return Object.keys(Qs(e)).filter(o=>o.trim().length>0)}function Zs(e){const o=e?.variables||[],a=new Map;for(const l of o){const r=l.name?.trim();r&&a.set(r,{...l,name:r})}for(const l of yr(e))a.has(l)||a.set(l,{name:l,type:"text",required:!1,description:"Default value set on this prompt."});return Array.from(a.values())}function oy(e){return e?!e.packed&&e.id===e.name:!1}function Xs(e,o){return o?.type?o.type:e.startsWith("provider:")?"provider":e.startsWith("mcp:")?"mcp":"unknown"}function eo(e){return e.startsWith("provider:")?e.slice(9):e.startsWith("mcp:")?e.slice(4):e}function to(e,o){if(!e)return null;const a=o[e];if(a)return a;for(const l of Object.values(o))if(l.name===e)return l;return null}function no(e,o,a={}){const l=o[e.name],r=l?.model;return{name:e.name,displayName:eo(e.name),kind:Xs(e.name,l),description:l?.description||"",variables:l?.variables||[],model:r,resolvedModel:to(r,a),config:e}}function ly(e,o,a,l){const r=o==="b"&&e.type!=="dual_ai",i=o==="a"?e.side_a_label||"Side A":e.side_b_label||(r?"Human":"Side B"),p=o==="a"?e.side_a_agent_prompt:e.side_b_agent_prompt,u=o==="a"?e.side_a_stop_on_response:e.side_b_stop_on_response,S=o==="a"?e.side_a_stop_tool:e.side_b_stop_tool,T=o==="a"?e.side_a_max_steps:e.side_b_max_steps,w=[o==="a"?e.side_a_session_stop_tool:e.side_b_session_stop_tool,o==="a"?e.side_a_session_fail_tool:e.side_b_session_fail_tool,o==="a"?e.side_a_session_status_tool:e.side_b_session_status_tool].filter(M=>!!M),v=(a?.tools||[]).map(M=>no(M,l.toolsCatalog,l.models)),y=v.filter(M=>M.kind==="handoff"||M.kind==="subagent");return{id:o,agentName:e.name,label:i,mode:r?"human":"ai",promptName:p||null,stopOnResponse:u,stopTool:S,maxSteps:T,sessionStopTool:o==="a"?e.side_a_session_stop_tool:e.side_b_session_stop_tool,sessionTools:w,prompt:a,model:a&&l.models[a.model_id]||null,tools:v,hooks:(a?.hooks||[]).map(M=>l.hooks[M]||{id:M,hook:"unknown"}),variables:Zs(a),variableEnvNames:yr(a),outgoingAgents:y}}function kr(e){if(!e)return!1;if(e instanceof Error&&e.name==="AbortError")return!0;const o=String(e);return o.includes("signal is aborted")||o.includes("The operation was aborted")||o.includes("aborted a request")}function ao(e){const{limit:o=50,offset:a=0,agentId:l=null,userId:r=null,search:i=null,startDate:p=null,endDate:u=null,sort:S="activity",executingOnly:T=!1,includeTerminated:w=!0,autoFetch:v=!0}=e||{},y=C(()=>{const ee=new URLSearchParams,R=typeof o=="number"?o:o.value,P=typeof a=="number"?a:a.value,N=typeof l=="string"?l:l?.value,W=typeof r=="string"?r:r?.value,_e=typeof i=="string"?i:i?.value,Le=typeof p=="number"?p:p?.value,Z=typeof u=="number"?u:u?.value;ee.append("limit",R.toString()),ee.append("offset",P.toString()),N&&(ee.append("agent_id",N),ee.append("include_children","1")),W&&ee.append("user_id",W),_e&&ee.append("search",_e),Le&&ee.append("startDate",Le.toString()),Z&&ee.append("endDate",Z.toString());const Re=typeof S=="string"?S:S.value;return Re&&ee.append("sort",Re),(typeof T=="boolean"?T:T.value)&&ee.append("executing","1"),(typeof w=="boolean"?w:w.value)||ee.append("terminated","0"),Ze(`/api/threads?${ee.toString()}`)}),{data:M,error:$,isFetching:q,isFinished:K,execute:G,abort:ue}=Vt(y,{immediate:v,refetch:!0}).get().json(),re=C(()=>M.value?.threads||[]),ie=C(()=>M.value?.total||0),xe=C(()=>M.value?.hasMore||!1);return{threads:re,total:ie,hasMore:xe,error:$,isFetching:q,isFinished:K,refetch:G,abort:ue}}function ro(){const{data:e,error:o,isFetching:a,execute:l}=Vt(Ze("/api/threads/owners"),{immediate:!0}).get().json();return{owners:C(()=>e.value?.owners||[]),error:o,isFetching:a,refetch:l}}function ha(e){const o=C(()=>{const w=typeof e=="string"?e:e?.value;return w?Ze(`/api/threads/${w}`):""}),{data:a,error:l,isFetching:r,isFinished:i,execute:p,abort:u}=Vt(o,{immediate:!1,refetch:!0}).get().json();ge(o,w=>{w?p():(u(),a.value=null)},{immediate:!0});const S=C(()=>a.value?{id:a.value.thread.id,agent_id:a.value.thread.agent_id,user_id:a.value.thread.user_id,tags:a.value.thread.tags||[],parent:a.value.thread.parent??null,terminated:a.value.thread.terminated??null,created_at:a.value.thread.created_at,agent:a.value.agent||{id:"",title:"Unknown",type:"unknown"},stats:a.value.stats}:null),T=C(()=>kr(l.value)?null:l.value);return{thread:S,error:T,isFetching:r,isFinished:i,refetch:p,abort:u}}const _r=3,Aa=3e4;let Pn=!1,ln=null,Tn=0;function ma(){return Pn}function ga(e={}){if(Pn)return Promise.resolve("halt");if(ln)return ln;if(Date.now()<Tn)return Promise.resolve("retry");const o=e.fetch??fetch;return ln=(async()=>{try{const a=await o(Ze("/api/auth/me"),ks({credentials:"same-origin"}));return a.status===401||a.status===403?(Pn=!0,_s(e),"halt"):(Tn=Date.now()+Aa,"retry")}catch{return Tn=Date.now()+Aa,"retry"}finally{ln=null}})(),ln}function wr(){Pn=!1,Tn=0}function $r(e){const o=e*.25;return Math.max(0,Math.round(e-o+Math.random()*o*2))}async function iy(){return ma()?!1:await ga()==="retry"}const so={key:0,class:"flex min-h-[500px] items-center justify-center"},oo={class:"flex min-h-0 min-w-0 flex-1 flex-col"},lo={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"},io={class:"min-w-0 flex-1"},uo={class:"edit-sections-query"},co=nt({__name:"AgentModal",props:{modelValue:{type:Boolean},editAgent:{},mode:{},apiError:{},readonly:{type:Boolean,default:!1},saving:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},inlineGlobalNotice:{type:Boolean,default:!1},inlineAccentTabs:{type:Boolean,default:!1},inlineFlatSections:{type:Boolean,default:!1},surfaceSection:{default:null}},emits:["update:modelValue","save"],setup(e,{expose:o,emit:a}){const l=e,r=a,i=C(()=>l.mode==="edit"),p=C(()=>!!l.surfaceSection),u=C(()=>l.inline&&l.inlineFlatSections),S=C(()=>l.inline||p.value),T=C(()=>S.value?{config:pa}:{}),w=C(()=>i.value&&(l.editAgent?.id||l.editAgent?.name)||""),v=ws(()=>w.value,{autoload:!1}),y=g(null),M=["basics","side-a","side-b","variables"],{activeTab:$,scrollToSection:q}=xr(y,M),K=C(()=>[{id:"basics",label:"Basics",icon:la},{id:"side-a",label:"Side A",icon:_n},{id:"side-b",label:"Side B",icon:v.agentType.value==="ai_human"?Sa:_n},{id:"variables",label:"Variables",icon:Ta}]),G=g(!1),ue=g(!1),re=g(null);let ie=0;const xe=C(()=>JSON.stringify({name:v.name.value,title:v.title.value,agentType:v.agentType.value,exposeAsTool:v.exposeAsTool.value,toolDescription:v.toolDescription.value,maxSessionTurns:v.maxSessionTurns.value,sideALabel:v.sideALabel.value,sideAAgentPrompt:v.sideAAgentPrompt.value,sideAStopOnResponse:v.sideAStopOnResponse.value,sideAStopOnToolCall:v.sideAStopOnToolCall.value,sideAStopTool:v.sideAStopTool.value,sideAStopToolResponseProperty:v.sideAStopToolResponseProperty.value,sideAManualStopCondition:v.sideAManualStopCondition.value,sideAMaxSteps:v.sideAMaxSteps.value,sideAEndConversationTool:v.sideAEndConversationTool.value,sideBLabel:v.sideBLabel.value,sideBAgentPrompt:v.sideBAgentPrompt.value,sideBStopOnResponse:v.sideBStopOnResponse.value,sideBStopOnToolCall:v.sideBStopOnToolCall.value,sideBStopTool:v.sideBStopTool.value,sideBStopToolResponseProperty:v.sideBStopToolResponseProperty.value,sideBMaxSteps:v.sideBMaxSteps.value,sideBEndConversationTool:v.sideBEndConversationTool.value,agentEnv:v.agentEnv.value})),ee=C(()=>ue.value?"Saved":l.inline&&i.value?"Save Agent Changes":i.value?"Update Agent":"Create Agent"),R=C(()=>l.saving||l.inline&&!G.value),P=C(()=>p.value||l.inline?{class:l.inline?"flex h-full min-w-0 flex-col":"min-w-0"}:{modelValue:l.modelValue,title:i.value?"Edit Agent":"Create Agent",width:"max-w-5xl",contentPadding:!1});function N(){ue.value=!1,re.value=null}function W(){Xe().then(()=>{G.value=!!v.formNode.value?.context?.state.dirty})}function _e(ye){v.handleFormNode(ye),ye.on("commit",W),ye.on("reset",W),ye.on("message-added",W),ye.on("message-updated",W),ye.on("message-removed",W),W()}async function Le(){const ye=++ie;await Xe();const we=v.formNode.value;if(!we||ye!==ie){G.value=!1;return}await we.settled,we.reset(we.value),await Xe(),ye===ie&&(G.value=!1)}async function Z(){await Le(),ue.value=!0,re.value=xe.value}async function Re(){N(),v.resetForm(),await Xe(),i.value&&w.value?await v.load():await v.loadPrerequisites(),await Le()}async function z(){const ye=await v.prepareSubmit();ye&&r("save",ye)}function ne(){v.resetForm(),N(),r("update:modelValue",!1)}async function Ce(){N(),await Re()}function De(ye){return!l.surfaceSection||l.surfaceSection===ye}return ge(()=>l.modelValue,async ye=>{ye?await Re():(ie+=1,v.resetForm(),N(),G.value=!1)},{immediate:!0}),ge(()=>w.value,async(ye,we)=>{!l.modelValue||ye===we||await Re()}),ge(xe,ye=>{ue.value&&re.value!==null&&ye!==re.value&&N()}),ge(G,ye=>{ye&&N()}),o({formNode:v.formNode,markSaveSucceeded:Z,markCurrentFormCleanAfterSettle:Le,resetSaveSuccess:N}),(ye,we)=>{const Pe=Jt("FormKit");return t(),j(Dt(e.inline||p.value?"div":gr),Pr(P.value,Nr(e.inline||p.value?void 0:{"update:modelValue":Ie=>ye.$emit("update:modelValue",Ie)})),{default:ze(()=>[(t(),j(Dt(S.value?c(fa):"div"),zr(jr(T.value)),{default:ze(()=>[c(v).isLoading.value?(t(),s("div",so,[...we[0]||(we[0]=[n("span",{class:"text-neutral-500"},"Loading agent data...",-1)])])):(t(),j(Pe,{key:1,type:"form",id:"agent-form",actions:!1,disabled:e.readonly||e.saving,onSubmit:z,onNode:_e,"dirty-behavior":"compare","outer-class":"$reset flex min-h-0 min-w-0 flex-1 flex-col","form-class":"$reset flex-1 min-h-0 min-w-0 flex flex-col"},{default:ze(()=>[n("div",oo,[p.value?b("",!0):(t(),s("nav",lo,[Pt(ye.$slots,"nav-leading",{},void 0,!0),n("div",io,[B(c(br),{tabs:K.value,"active-tab":c($),"accent-active":e.inlineAccentTabs,orientation:"horizontal",onSelect:c(q)},null,8,["tabs","active-tab","accent-active","onSelect"])])])),n("div",{ref_key:"contentRef",ref:y,class:J(["min-h-0 flex-1 overflow-y-auto",p.value?"p-5":u.value?"bg-neutral-100 dark:bg-neutral-950":"bg-neutral-100 p-5 dark:bg-neutral-950"])},[n("div",uo,[e.inlineGlobalNotice?(t(),s("div",{key:0,class:J(["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",u.value?"mx-5 mb-4 mt-5":"mb-4"])}," Changes here are global and will affect all new messages across all threads. ",2)):b("",!0),n("div",{class:J([u.value?"space-y-4 pb-5":"space-y-4","edit-sections-stack"])},[e.apiError?(t(),j(c(pr),{key:0,variant:"error"},{default:ze(()=>[lt(f(e.apiError),1)]),_:1})):b("",!0),De("identity")?(t(),j(c($n),{key:1,id:"section-basics",title:"Basics",icon:c(la),flat:u.value},{default:ze(()=>[B($s,{form:c(v),"is-edit-mode":i.value},null,8,["form","is-edit-mode"])]),_:1},8,["icon","flat"])):b("",!0),De("side-a")?(t(),j(c($n),{key:2,id:"section-side-a",title:"Side A (AI)",icon:c(_n),flat:u.value},{default:ze(()=>[B(Ia,{form:c(v),side:"a"},null,8,["form"])]),_:1},8,["icon","flat"])):b("",!0),De("side-b")?(t(),j(c($n),{key:3,id:"section-side-b",title:c(v).agentType.value==="ai_human"?"Side B (Human)":"Side B (AI)",icon:c(v).agentType.value==="ai_human"?c(Sa):c(_n),flat:u.value},{default:ze(()=>[B(Ia,{form:c(v),side:"b"},null,8,["form"])]),_:1},8,["title","icon","flat"])):b("",!0),De("variables")?(t(),j(c($n),{key:4,id:"section-variables",title:"Variables",icon:c(Ta),flat:u.value},{default:ze(()=>[B(Cs,{form:c(v),readonly:e.readonly},null,8,["form","readonly"])]),_:1},8,["icon","flat"])):b("",!0)],2)])],2)]),p.value?b("",!0):(t(),j(Ks,{key:0,"form-id":"agent-form","form-node":c(v).formNode.value,readonly:e.readonly,inline:e.inline,saving:e.saving,dirty:G.value,"save-succeeded":ue.value,"save-label":ee.value,"save-disabled":R.value,"cancel-label":e.readonly?"Close":"Cancel",onCancel:ne,onDiscard:Ce},null,8,["form-node","readonly","inline","saving","dirty","save-succeeded","save-label","save-disabled","cancel-label"]))]),_:3},8,["disabled"]))]),_:3},16))]),_:3},16)}}}),fo=ht(co,[["__scopeId","data-v-e47eeb63"]]);function Cr(){const e=Ze("/api/agents"),{data:o,error:a,isFetching:l,isFinished:r,execute:i}=Vt(e,{immediate:!0}).get().json();return{agents:C(()=>o.value?.agents||[]),error:a,isFetching:l,isFinished:r,refetch:i}}function Xt(e,o,...a){}function xa(e){return!!e&&typeof e=="object"}function en(e){return typeof e=="string"?e:null}function In(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function po(e){if(xa(e)&&!(typeof e.name!="string"||typeof e.title!="string"||typeof e.type!="string"))return{name:e.name,title:e.title,type:e.type,description:en(e.description)??void 0,icon:en(e.icon)??void 0}}function vo(e){return!xa(e)||typeof e.id!="string"||typeof e.agent_name!="string"||typeof e.created_at!="number"?null:{id:e.id,agent_name:e.agent_name,user_id:en(e.user_id),tags:Array.isArray(e.tags)?e.tags.filter(o=>typeof o=="string"):null,parent:en(e.parent),terminated:In(e.terminated),created_at:e.created_at,last_activity_at:In(e.last_activity_at),executing:e.executing===!0,last_message_preview:en(e.last_message_preview),last_message_at:In(e.last_message_at),agent:po(e.agent)}}function ho(e){if(!xa(e))return null;if(e.type==="thread_deleted")return typeof e.threadId=="string"?{type:e.type,threadId:e.threadId}:null;if(e.type==="thread_activity")return typeof e.threadId=="string"&&typeof e.last_activity_at=="number"?{type:e.type,threadId:e.threadId,last_activity_at:e.last_activity_at,executing:e.executing===!0,...e.last_message_preview!==void 0?{last_message_preview:en(e.last_message_preview)}:{},...e.last_message_at!==void 0?{last_message_at:In(e.last_message_at)}:{}}:null;if(e.type==="thread_created"||e.type==="thread_updated"){const o=vo(e.thread);return o?{type:e.type,thread:o}:null}return null}function mo(e){return e==="admin"?"all":"user"}function go(e="user"){return e==="all"?"/api/events?scope=all":"/api/events"}function xo(e){const{autoConnect:o=!0,onEvent:a,scope:l="user"}=e||{};let r=l;const i=g(null),p=g(!1),u=g(null);let S=0,T=null,w=null,v=!0,y=null,M=0,$=!1,q=0;const K=3e4,G=3e4,ue=()=>{T&&(clearTimeout(T),T=null),w&&(clearInterval(w),w=null)};let re=0;const ie=()=>{w&&clearInterval(w),re=Date.now(),w=setInterval(()=>{i.value&&i.value.readyState===WebSocket.OPEN&&Date.now()-re>=G&&i.value.send("stream_ping")},G)},xe=()=>{const _e=$r(Math.min(1e3*Math.pow(2,S),K));S++,Xt(),T=setTimeout(()=>{v&&R()},_e)},ee=()=>{if(!(!v||ma())){if(M>=_r){ga().then(_e=>{_e==="halt"||!v||xe()});return}xe()}},R=()=>{P()},P=async()=>{const _e=++q;$=!1,i.value&&(y=null,i.value.close());const Le=window.location.protocol==="https:"?"wss:":"ws:",Z=window.location.host;try{const Re=await vr(`${Le}//${Z}${Ze(go(r))}`);if(_e!==q||!v)return;const z=new WebSocket(Re);i.value=z,y=z,z.onopen=()=>{y===z&&(p.value=!0,u.value=null,S=0,M=0,$=!0,wr(),ie(),Xt("AgentBuilderEvents","WebSocket connected"))},z.onmessage=ne=>{if(y===z){re=Date.now();try{if(typeof ne.data=="string"&&(ne.data==="pong"||ne.data==="stream_pong"))return;const Ce=ho(JSON.parse(ne.data));Ce&&a&&a(Ce)}catch{u.value="Failed to parse event update"}}},z.onerror=ne=>{y===z&&(u.value="WebSocket connection error")},z.onclose=()=>{y===z&&(p.value=!1,$||M++,ue(),Xt("AgentBuilderEvents","WebSocket disconnected"),ee())}}catch(Re){u.value=Re instanceof Error?Re.message:"Failed to create WebSocket",ee()}},N=(_e=r)=>{r=_e,v=!0,S=0,R()},W=()=>{q++,v=!1,ue(),y=null,i.value&&(i.value.close(),i.value=null),p.value=!1,S=0};return o&&N(),Ut(()=>{W()}),{wsConnected:p,wsError:u,connect:N,disconnect:W}}const bo={class:"relative inline-flex items-center"},yo={key:0,class:"inline-block w-2 h-2 rounded-full bg-green-500 dark:bg-green-400"},ko={key:1,class:"inline-block w-2 h-2 rounded-full bg-neutral-400 dark:bg-neutral-600"},_o={key:0},wo={key:1},Sr=nt({__name:"StatusDot",props:{connected:{type:Boolean},error:{type:Boolean}},setup(e){const o=g(!1),a=g(null);return(l,r)=>(t(),s("div",bo,[n("span",{class:"p-0.5 cursor-default outline-none",tabindex:"-1",onMouseenter:r[0]||(r[0]=i=>o.value=!0),onMouseleave:r[1]||(r[1]=i=>o.value=!1)},[e.connected?(t(),s("span",yo)):(t(),s("span",ko))],32),B(xn,{"enter-active-class":"transition-opacity duration-150","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-100","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:ze(()=>[o.value?(t(),s("div",{key:0,ref_key:"popoverRef",ref:a,class:J(["absolute top-full left-1/2 -translate-x-1/2 mt-1 px-2 py-1 text-xs rounded shadow-lg whitespace-nowrap z-50 border",{"bg-green-50 dark:bg-green-950 border-green-200 dark:border-green-800 text-green-700 dark:text-green-300":e.connected,"bg-neutral-50 dark:bg-neutral-900 border-neutral-200 dark:border-neutral-700 text-neutral-600 dark:text-neutral-400":!e.connected}])},[e.connected?(t(),s("span",_o,"Live - Connected")):(t(),s("span",wo,"Offline"))],2)):b("",!0)]),_:1})]))}}),$o={class:"relative min-w-0"},Co={class:"truncate flex-1 text-left"},So={key:0},To=["onClick"],Io={class:"border-t border-neutral-200 dark:border-neutral-700"},Ao={class:"flex items-center justify-between"},Eo={class:"space-y-4 date-filter-inputs"},Lo=nt({__name:"DateFilterDropdown",props:{startDate:{},endDate:{}},emits:["update:startDate","update:endDate"],setup(e,{emit:o}){const a=e,l=o,r=g(!1),i=g(!1),p=g(null),u=g(null),S=g(""),T=g(""),w=[{label:"All time",value:"all",getRange:()=>({startDate:null,endDate:null})},{label:"Today",value:"today",getRange:()=>{const R=new Date,P=new Date(R.getFullYear(),R.getMonth(),R.getDate());return{startDate:Math.floor(P.getTime()/1e3),endDate:null}}},{label:"Last 3 days",value:"3days",getRange:()=>{const R=new Date,P=new Date(R.getFullYear(),R.getMonth(),R.getDate()-2);return{startDate:Math.floor(P.getTime()/1e3),endDate:null}}},{label:"Last 7 days",value:"7days",getRange:()=>{const R=new Date,P=new Date(R.getFullYear(),R.getMonth(),R.getDate()-6);return{startDate:Math.floor(P.getTime()/1e3),endDate:null}}},{label:"Last 30 days",value:"30days",getRange:()=>{const R=new Date,P=new Date(R.getFullYear(),R.getMonth(),R.getDate()-29);return{startDate:Math.floor(P.getTime()/1e3),endDate:null}}}],v=C(()=>{if(!a.startDate&&!a.endDate)return"all";for(const R of w){const P=R.getRange();if(P.startDate===a.startDate&&P.endDate===a.endDate)return R.value}return"custom"}),y=C(()=>{if(!a.startDate&&!a.endDate)return"All time";const R=w.find(N=>N.value===v.value);if(R&&v.value!=="custom")return R.label;const P=N=>new Date(N*1e3).toLocaleDateString("en-US",{month:"short",day:"numeric"});return a.startDate&&a.endDate?`${P(a.startDate)} - ${P(a.endDate)}`:a.startDate?`From ${P(a.startDate)}`:a.endDate?`Until ${P(a.endDate)}`:"Custom"}),M=C(()=>a.startDate!==null||a.endDate!==null);function $(){if(!p.value||!u.value)return;const R=p.value.getBoundingClientRect();u.value.style.position="fixed",u.value.style.top=`${R.bottom+8}px`,u.value.style.left=`${R.left}px`;const P=i.value?280:180;u.value.style.minWidth=`${R.width}px`,u.value.style.maxWidth=`${Math.max(R.width,P)}px`,u.value.style.width="auto",u.value.style.margin="0"}function q(){r.value?K():(r.value=!0,Xe(()=>{if(u.value&&(u.value.setAttribute("popover","auto"),u.value.addEventListener("toggle",G),"showPopover"in u.value))try{u.value.showPopover()}catch{}$()}))}function K(){if(u.value){if("hidePopover"in u.value)try{u.value.hidePopover()}catch{}u.value.removeEventListener("toggle",G)}r.value=!1,i.value=!1}function G(R){R.target===u.value&&(r.value=R.newState==="open",r.value&&$())}function ue(R){const P=R.getRange();l("update:startDate",P.startDate),l("update:endDate",P.endDate),K()}function re(){const R=S.value?Math.floor(new Date(S.value).getTime()/1e3):null,P=T.value?Math.floor(new Date(T.value+"T23:59:59").getTime()/1e3):null;l("update:startDate",R),l("update:endDate",P),K()}function ie(R){R.stopPropagation(),l("update:startDate",null),l("update:endDate",null)}const xe=R=>{const P=R.target;u.value&&!u.value.contains(P)&&p.value&&!p.value.contains(P)&&K()},ee=R=>{R.key==="Escape"&&r.value&&(K(),p.value?.focus())};return At(()=>{document.addEventListener("click",xe),document.addEventListener("keydown",ee),window.addEventListener("resize",$),window.addEventListener("scroll",$,!0)}),Ut(()=>{document.removeEventListener("click",xe),document.removeEventListener("keydown",ee),window.removeEventListener("resize",$),window.removeEventListener("scroll",$,!0)}),ge(i,R=>{R&&(a.startDate&&(S.value=new Date(a.startDate*1e3).toISOString().split("T")[0]),a.endDate?T.value=new Date(a.endDate*1e3).toISOString().split("T")[0]:T.value=new Date().toISOString().split("T")[0]),Xe($)}),(R,P)=>{const N=Jt("FormKit");return t(),s("div",$o,[n("button",{ref_key:"triggerRef",ref:p,type:"button",onClick:q,class:J(["w-full flex items-center gap-1 px-2 py-1 text-xs rounded-sm border transition-colors min-w-0 focus:outline-none focus:ring-2 focus:ring-accent-500/30",[M.value?"agents-border-selected agents-surface-selected agents-text-selected-muted":"border-zinc-300 dark:border-zinc-600 hover:border-accent-400 dark:hover:border-accent-500 bg-white dark:bg-transparent text-zinc-700 dark:text-zinc-300"]])},[B(c(Br),{size:14,class:"shrink-0 text-zinc-400"}),n("span",Co,f(y.value),1),M.value?(t(),j(c(Ft),{key:0,size:14,class:"shrink-0 text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-200",onClick:ie})):(t(),j(c(It),{key:1,size:14,class:J(["shrink-0 text-zinc-400",r.value?"rotate-180":""])},null,8,["class"]))],2),r.value?(t(),s("div",{key:0,ref_key:"popoverRef",ref:u,class:"dropdown-popover z-[9999]"},[B(c(hr),{"max-height":i.value?void 0:"max-h-48",shadow:!1},{default:ze(()=>[i.value?(t(),s("div",{key:1,class:"p-2.5 space-y-2.5",onClick:P[4]||(P[4]=Ye(()=>{},["stop"]))},[n("div",Ao,[P[6]||(P[6]=n("span",{class:"text-xs font-medium"},"Custom range",-1)),n("button",{type:"button",onClick:P[1]||(P[1]=Ye(W=>i.value=!1,["stop"])),class:"text-[10px] text-neutral-500 hover:text-black dark:hover:text-white"}," ← Back ")]),n("div",Eo,[B(N,{modelValue:S.value,"onUpdate:modelValue":P[2]||(P[2]=W=>S.value=W),type:"datepicker",label:"From","picker-only":"",popover:"",format:"MMM D, YYYY","value-format":"YYYY-MM-DD",sequence:["day"]},null,8,["modelValue"]),B(N,{modelValue:T.value,"onUpdate:modelValue":P[3]||(P[3]=W=>T.value=W),type:"datepicker",label:"To","picker-only":"",popover:"",format:"MMM D, YYYY","value-format":"YYYY-MM-DD",sequence:["day"]},null,8,["modelValue"])]),n("button",{type:"button",onClick:re,class:"w-full py-1.5 text-xs font-medium bg-black dark:bg-white text-white dark:text-black rounded-sm hover:opacity-90 transition-opacity"}," Apply ")])):(t(),s("div",So,[(t(),s(Me,null,Ge(w,W=>n("button",{key:W.value,type:"button",onClick:_e=>ue(W),class:J(["w-full px-2.5 py-1.5 text-left text-xs agents-surface-hover transition-colors flex items-center gap-2",v.value===W.value?"agents-surface-selected agents-text-selected":""])},[n("span",{class:J(["w-1.5 h-1.5 rounded-full border border-accent-500",v.value===W.value?"bg-accent-500":""])},null,2),lt(" "+f(W.label),1)],10,To)),64)),n("div",Io,[n("button",{type:"button",onClick:P[0]||(P[0]=Ye(W=>i.value=!0,["stop"])),class:J(["w-full px-2.5 py-1.5 text-left text-xs agents-surface-hover transition-colors flex items-center gap-2",v.value==="custom"?"agents-surface-selected agents-text-selected":""])},[n("span",{class:J(["w-1.5 h-1.5 rounded-full border border-accent-500",v.value==="custom"?"bg-accent-500":""])},null,2),P[5]||(P[5]=lt(" Custom range... ",-1))],2)])]))]),_:1},8,["max-height"])],512)):b("",!0)])}}}),Ro=ht(Lo,[["__scopeId","data-v-753faf78"]]),Nn=nt({__name:"TimeAgo",props:{timestamp:{}},setup(e){const o=e,a=js(()=>o.timestamp);return(l,r)=>(t(),s("span",null,f(c(a)),1))}}),ia="name:",Ea=["bg-sky-400/70 dark:bg-sky-500/70","bg-emerald-400/70 dark:bg-emerald-500/70","bg-amber-400/70 dark:bg-amber-500/70","bg-rose-400/70 dark:bg-rose-500/70","bg-violet-400/70 dark:bg-violet-500/70"],Mo=(e,o)=>o.created_at-e.created_at,gn=e=>e.last_activity_at??e.created_at,da=e=>e.executing===!0&&!e.terminated,Do=e=>{const o=new Map,a=new Map(e.map(l=>[l.id,l]));for(const l of e){const r=gn(l);let i=l;const p=new Set;for(;i&&!p.has(i.id);){p.add(i.id);const u=o.get(i.id);(u===void 0||u<r)&&o.set(i.id,r),i=i.parent?a.get(i.parent):void 0}}return o},Tr=e=>{const o=new Set,a=new Map(e.map(l=>[l.id,l]));for(const l of e){if(!da(l))continue;let r=l;const i=new Set;for(;r&&!i.has(r.id);)i.add(r.id),o.add(r.id),r=r.parent?a.get(r.parent):void 0}return o},Fo=(e,o,a)=>{const l=r=>o.get(r.id)??gn(r);return(r,i)=>{const p=a.has(r.id),u=a.has(i.id);if(p!==u)return p?-1:1;if(e==="created")return i.created_at-r.created_at;if(e==="oldest")return r.created_at-i.created_at;const S=l(i)-l(r);return S!==0?S:i.created_at-r.created_at}},An=(e,o)=>`${e}::${o}`,Ir=e=>{const o=e.tags.find(l=>l.startsWith(ia));if(!o)return null;const a=o.slice(ia.length).trim();return a.length>0?a:null},Kn=e=>{const o=e.last_message_preview?.trim();return o||null},Po=e=>gn(e)>e.created_at,Lt=e=>e.tags.filter(o=>!o.startsWith(ia)),No=e=>Ir(e)||e.agent.title||e.agent.name,zo=e=>e.id.startsWith("__draft_")?"--------":e.id.slice(0,8),Jn=e=>Ir(e)?e.agent.title||e.agent.name:null,La=e=>Array.from({length:Math.min(Math.max(e,0),6)},(o,a)=>12+a*8),Ra=e=>Ea[e%Ea.length],Ma=e=>({left:`${e}px`}),jo=(e,o,a="activity")=>{if(e.length===0)return[];const l=Do(e),r=Tr(e),i=Fo(a,l,r),p=new Map(e.map($=>[$.id,$])),u=new Map,S=[];for(const $ of e){const q=$.parent;if(q&&p.has(q)){const K=u.get(q)??[];K.push($),u.set(q,K);continue}S.push($)}S.sort(i);for(const $ of u.values())$.sort(i);const T=[],w=new Set,v=$=>{if(w.has($.id))return;w.add($.id);const q=u.get($.id);if(q)for(const K of q)v(K)},y=($,q,K)=>{if(w.has($.id))return;w.add($.id),T.push({kind:"thread",thread:$,depth:q,isNested:q>0,clusterId:K});const G=u.get($.id);if(!G)return;const ue=new Map;for(const re of G){const ie=re.agent_id||re.agent?.name||re.id,xe=ue.get(ie);xe?xe.push(re):ue.set(ie,[re])}for(const[re,ie]of ue.entries()){if(ie.length>1){const xe=An($.id,re),ee=o(xe);if(T.push({kind:"directory",key:xe,depth:q+1,label:ie[0]?.agent?.title||ie[0]?.agent?.name||re,count:ie.length,open:ee,clusterId:K,working:ie.some(R=>r.has(R.id))}),!ee){for(const R of ie)v(R);continue}for(const R of ie)y(R,q+2,K);continue}y(ie[0],q+1,K)}};for(const $ of S)y($,0,$.id);const M=e.filter($=>!w.has($.id)).sort(i);for(const $ of M)y($,$.parent?1:0,$.parent??$.id);return T},Bo=["id","onClick"],Oo=["title"],Vo=["title"],Uo={key:0,class:"text-emerald-600 dark:text-emerald-400"},qo=["title"],Ho={key:2,class:"space-y-0.5"},Wo={key:0,class:"flex flex-wrap gap-1 min-w-0"},Ko={key:3,class:"flex items-center gap-1"},Jo={key:0,class:"text-[10px] text-neutral-400"},Go=["onClick"],Yo={class:"flex items-center gap-2"},Qo={key:0,class:"thread-working-dot shrink-0",title:"A thread in this group is executing","aria-label":"Working"},Zo=nt({__name:"ThreadListRows",props:{rows:{},selectedThreadId:{},workingClusterIds:{},clusterHasNestedRows:{},isThreadFlashing:{type:Function},isDirectoryFlashing:{type:Function},hasRowTopGap:{type:Function},hasRowBottomBorder:{type:Function}},emits:["selectThread","toggleDirectory"],setup(e,{emit:o}){const a=e,l=o,r=i=>a.workingClusterIds.has(i);return(i,p)=>(t(!0),s(Me,null,Ge(e.rows,(u,S)=>(t(),s(Me,{key:u.kind==="thread"?u.thread.id:u.key},[u.kind==="thread"?(t(),s("button",{key:0,id:`thread-${u.thread.id}`,class:J(["w-full text-left cursor-pointer rounded-lg px-3 transition-colors relative",[u.isNested?e.selectedThreadId===u.thread.id?"py-1.5":"py-1.5 bg-neutral-50/40 dark:bg-neutral-900/20":"py-2",e.hasRowTopGap(S)?"mt-1":"",e.hasRowBottomBorder(S)&&e.clusterHasNestedRows[u.clusterId]?"mb-1":"",u.thread.terminated?"opacity-50 text-neutral-500 dark:text-neutral-500":"",e.selectedThreadId===u.thread.id?"agents-surface-selected":"agents-surface-hover"]]),style:bt(u.depth>0?{paddingLeft:`${12+Math.min(u.depth,6)*8}px`}:void 0),onClick:T=>l("selectThread",u.thread.id)},[(t(!0),s(Me,null,Ge(c(La)(u.depth),(T,w)=>(t(),s("span",{key:`thread-line-${w}`,class:J(["pointer-events-none absolute inset-y-1 w-px rounded-full",c(Ra)(w)]),style:bt(c(Ma)(T)),"aria-hidden":"true"},null,6))),128)),n("div",{class:J(["flex items-center gap-2",!u.isNested||c(Lt)(u.thread).length>0||c(Jn)(u.thread)?"mb-0.5":""])},[r(u.thread.id)?(t(),s("span",{key:0,class:"thread-working-dot shrink-0",title:u.thread.executing?"Executing now":"Subagent executing","aria-label":"Working"},null,8,Oo)):u.thread.terminated?(t(),j(c(nr),{key:1,size:12,class:"shrink-0 text-neutral-500 dark:text-neutral-400"})):b("",!0),n("span",{class:J(["font-medium truncate flex-1 min-w-0",[e.selectedThreadId===u.thread.id?"agents-text-selected":"",e.isThreadFlashing(u.thread.id)?"thread-list-green-flash":""]])},f(c(No)(u.thread)),3),n("span",{class:J(["flex-shrink-0 text-[10px]",e.selectedThreadId===u.thread.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"]),title:c(Po)(u.thread)?`Last activity ${new Date(c(gn)(u.thread)*1e3).toLocaleString()} · Created ${new Date(u.thread.created_at*1e3).toLocaleString()}`:`Created ${new Date(u.thread.created_at*1e3).toLocaleString()} · no activity recorded`},[r(u.thread.id)?(t(),s("span",Uo," working ")):(t(),j(Nn,{key:1,timestamp:c(gn)(u.thread)*1e6},null,8,["timestamp"]))],10,Vo)],2),c(Kn)(u.thread)?(t(),s("div",{key:0,class:J(["mb-0.5 truncate text-[11px]",e.selectedThreadId===u.thread.id?"agents-text-selected":"text-neutral-600 dark:text-neutral-300"]),title:c(Kn)(u.thread)||""},f(c(Kn)(u.thread)),11,qo)):b("",!0),c(Jn)(u.thread)?(t(),s("div",{key:1,class:J(["mb-0.5 truncate text-[10px]",e.selectedThreadId===u.thread.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},f(c(Jn)(u.thread)),3)):b("",!0),u.isNested?c(Lt)(u.thread).length>0?(t(),s("div",Ko,[(t(!0),s(Me,null,Ge(c(Lt)(u.thread).slice(0,3),T=>(t(),s("span",{key:T,class:"inline-block px-1.5 py-0.5 rounded text-[10px] truncate max-w-[120px] bg-neutral-200 dark:bg-neutral-800 text-neutral-600 dark:text-neutral-400"},f(T),1))),128)),c(Lt)(u.thread).length>3?(t(),s("span",Jo," +"+f(c(Lt)(u.thread).length-3),1)):b("",!0)])):b("",!0):(t(),s("div",Ho,[n("span",{class:J(["block max-w-[80px] truncate font-mono text-[10px]",e.selectedThreadId===u.thread.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},f(c(zo)(u.thread)),3),c(Lt)(u.thread).length>0?(t(),s("div",Wo,[(t(!0),s(Me,null,Ge(c(Lt)(u.thread).slice(0,3),T=>(t(),s("span",{key:T,class:J(["inline-block px-1.5 py-0.5 rounded text-[10px] truncate max-w-[60px]",e.selectedThreadId===u.thread.id?"agents-surface-selected-strong agents-text-selected":"bg-neutral-200 dark:bg-neutral-800 text-neutral-600 dark:text-neutral-400"])},f(T),3))),128)),c(Lt)(u.thread).length>3?(t(),s("span",{key:0,class:J(["text-[10px]",e.selectedThreadId===u.thread.id?"agents-text-selected-muted":"text-neutral-400"])}," +"+f(c(Lt)(u.thread).length-3),3)):b("",!0)])):b("",!0)]))],14,Bo)):(t(),s("button",{key:1,type:"button",class:"w-full rounded-lg text-left px-3 py-1.5 bg-neutral-50/25 dark:bg-neutral-900/10 hover:bg-neutral-100 dark:hover:bg-neutral-800/40 transition-colors relative",style:bt({paddingLeft:`${12+Math.min(u.depth,6)*8}px`}),onClick:T=>l("toggleDirectory",u.key)},[(t(!0),s(Me,null,Ge(c(La)(u.depth),(T,w)=>(t(),s("span",{key:`directory-line-${w}`,class:J(["pointer-events-none absolute inset-y-1 w-px rounded-full",c(Ra)(w)]),style:bt(c(Ma)(T)),"aria-hidden":"true"},null,6))),128)),n("div",Yo,[u.working?(t(),s("span",Qo)):(t(),j(c(ar),{key:1,size:13,class:"text-neutral-500 dark:text-neutral-400 shrink-0"})),n("span",{class:J(["truncate flex-1 min-w-0 text-[11px] font-medium text-neutral-600 dark:text-neutral-300",e.isDirectoryFlashing(u.key)?"thread-list-green-flash":""])},f(u.label)+" ("+f(u.count)+") ",3),u.open?(t(),j(c(It),{key:2,size:14,class:"text-neutral-500 dark:text-neutral-400 shrink-0"})):(t(),j(c(Bt),{key:3,size:14,class:"text-neutral-500 dark:text-neutral-400 shrink-0"}))])],12,Go))],64))),128))}}),Xo=ht(Zo,[["__scopeId","data-v-ce56afa5"]]),el={class:"flex flex-col flex-1 min-h-0 overflow-visible"},tl={class:"px-3 border-b border-neutral-300 dark:border-neutral-700 h-12 flex items-center shrink-0"},nl={class:"flex items-center w-full min-w-0"},al={key:0,class:"shrink-0 text-xs font-mono text-neutral-500 dark:text-neutral-400"},rl=["title"],sl={class:"ml-auto flex shrink-0 items-center gap-1"},ol=["title","aria-label","aria-pressed"],ll={key:0,class:"px-3 py-2 border-b border-neutral-200 dark:border-neutral-800 shrink-0 space-y-2"},il={class:"relative"},dl={class:"flex items-center gap-2 w-full"},ul={class:"relative flex-1 min-w-0"},cl=["value"],fl=["aria-pressed"],pl=["aria-pressed"],vl={key:0},hl={class:"flex items-center gap-2 w-full"},ml={key:0,class:"flex-1 min-w-0"},gl={key:0,class:"p-4 flex justify-center"},xl={key:1,class:"p-4 text-red-600 dark:text-red-400"},bl={key:2,class:"text-neutral-500 dark:text-neutral-400 text-center py-12"},yl={key:1,class:"text-base"},kl={key:3,class:"px-2 py-2"},_l={key:0,class:"p-3 flex justify-center"},wl={key:1,class:"p-3 text-center text-[10px] text-neutral-400 dark:text-neutral-500"},Da="agents.threads.sort",$l=50,Fa=1800,Cl=nt({__name:"ThreadListPane",props:{selectedThreadId:{},optimisticThread:{},agentId:{},showCollapseButton:{type:Boolean}},emits:["selectThread","collapse","createThread","threadsLoaded"],setup(e,{expose:o,emit:a}){const l=e,r=a,i=g(""),p=g(null),u=g(!1),S=g(null),T=g(null),w=g(null),v=g(!1),y=g(!0),M=g(null),$=[{value:"activity",label:"Recent activity"},{value:"created",label:"Newest"},{value:"oldest",label:"Oldest"}],K=g((()=>{try{const D=localStorage.getItem(Da);if($.some(U=>U.value===D))return D}catch{}return"activity"})());ge(K,D=>{try{localStorage.setItem(Da,D)}catch{}});const{owners:G}=ro(),ue=C(()=>G.value.filter(D=>D.user_id).map(D=>({value:D.user_id,label:`${D.display_name||D.username||D.email||D.user_id} (${D.thread_count})`}))),re=C(()=>ue.value.length>1),ie=g(!1),xe=C(()=>l.agentId!=null);ge(()=>l.agentId,D=>{D!=null&&(T.value=D),ie.value=!1},{immediate:!0});const ee=g(null),{agents:R,isFetching:P}=Cr(),N=C(()=>R.value.map(D=>({value:D.name,label:D.title||D.name}))),W=g(0),_e=g([]),Le=g(!1),Z=g(!1),Re=qr(D=>{p.value=D||null},300);ge(i,D=>{Re(D)});const z=C(()=>{let D=0;return p.value&&D++,T.value&&!xe.value&&D++,w.value&&D++,v.value&&D++,y.value||D++,(M.value||ee.value)&&D++,D});function ne(){i.value="",p.value=null,xe.value||(T.value=null),w.value=null,v.value=!1,y.value=!0,M.value=null,ee.value=null}async function Ce(){u.value=!0,await Xe(),S.value?.focus(),S.value?.select()}function De(){ne(),u.value=!1}function ye(){u.value?De():Ce()}const{threads:we,hasMore:Pe,isFetching:Ie,isFinished:me,error:le,refetch:de}=ao({limit:$l,offset:W,search:p,agentId:T,userId:w,startDate:M,endDate:ee,sort:K,executingOnly:v,includeTerminated:y}),he=g([]),Q=g(new Set);ge([p,T,w,v,y,K,M,ee],()=>{W.value=0,_e.value=[],he.value=[],Q.value.clear(),Le.value=!1,Z.value=!1}),ge(we,D=>{if(W.value===0){const U=new Map(_e.value.map(Te=>[Te.id,Te]));_e.value=D.map(Te=>{const ke=U.get(Te.id);if(!ke)return Te;const Je=Te.last_message_at??0;return(ke.last_message_at??0)<=Je?Te:{...Te,last_message_at:ke.last_message_at,...ke.last_message_preview!==void 0?{last_message_preview:ke.last_message_preview}:{},...ke.last_activity_at!==void 0&&(Te.last_activity_at??0)<ke.last_activity_at?{last_activity_at:ke.last_activity_at,executing:ke.executing}:{}}})}else{const U=new Set(_e.value.map(ke=>ke.id)),Te=D.filter(ke=>!U.has(ke.id));_e.value=[..._e.value,...Te],Z.value=!0}Le.value=!1});const Ae=g({}),Ne=g({}),V=g({}),ce=new Set,se=D=>Ae.value[D]??!1,Fe=D=>{Ae.value[D]=!se(D)},Oe=D=>{Ne.value[D]=!0;const U=setTimeout(()=>{delete Ne.value[D],ce.delete(U)},Fa);ce.add(U)},Qe=D=>{V.value[D]=!0;const U=setTimeout(()=>{delete V.value[D],ce.delete(U)},Fa);ce.add(U)};Ut(()=>{ce.forEach(D=>clearTimeout(D)),ce.clear()});const X=D=>Ne.value[D]===!0,fe=D=>V.value[D]===!0,ae=D=>{if(T.value&&D.agent_id!==T.value&&D.origin_agent_id!==T.value&&!D.parent||w.value&&D.user_id!==w.value||v.value&&!da(D)&&!D.parent||!y.value&&D.terminated||M.value&&D.created_at<M.value||ee.value&&D.created_at>ee.value)return!1;if(p.value){const U=p.value.toLowerCase(),Te=D.id.toLowerCase().includes(U),ke=D.tags.some(Je=>Je.toLowerCase().includes(U));if(!Te&&!ke)return!1}return!0},je=C(()=>{const D=_e.value.filter(Je=>!Q.value.has(Je.id)),U=new Set(D.map(Je=>Je.id)),ke=[...he.value.filter(Je=>!U.has(Je.id)&&!Q.value.has(Je.id)),...D];return l.optimisticThread&&!ke.some(Je=>Je.id===l.optimisticThread?.id)&&ke.unshift(l.optimisticThread),ke.sort(Mo)}),He=C(()=>je.value.filter(D=>!D.parent).length),H=C(()=>Tr(je.value)),$e=C(()=>je.value.filter(da).length),oe=C(()=>jo(je.value,se,K.value)),We=D=>{const U=oe.value[D],Te=oe.value[D+1];return U?Te?U.clusterId!==Te.clusterId:!0:!1},at=D=>{const U=oe.value[D],Te=oe.value[D-1];if(!U||!Te||U.clusterId!==Te.clusterId)return!1;const ke=U.kind==="directory"||U.kind==="thread"&&U.isNested,Je=Te.kind==="thread"&&!Te.isNested;return ke&&Je},ot=C(()=>{const D={};for(const U of oe.value)if(!D[U.clusterId]){if(U.kind==="directory"){D[U.clusterId]=!0;continue}if(U.kind==="thread"&&U.isNested){D[U.clusterId]=!0;continue}D[U.clusterId]=!1}return D}),pe=g(null);function O(){Le.value||Ie.value||!Pe.value||(Le.value=!0,W.value=_e.value.length)}const{arrivedState:te}=Or(pe,{offset:{bottom:100}});ge(()=>te.bottom,D=>{D&&Pe.value&&!Ie.value&&!Le.value&&O()});const qe=D=>{const U=R.value.find(ke=>ke.name===D.agent_name),Te=D.agent;return{id:D.id,agent_id:D.agent_name,origin_agent_id:D.origin_agent_name??D.agent_name,user_id:D.user_id,tags:D.tags||[],parent:D.parent??null,terminated:D.terminated??null,created_at:D.created_at,last_activity_at:D.last_activity_at??D.created_at,executing:D.executing===!0,last_message_preview:D.last_message_preview??null,last_message_at:D.last_message_at??null,agent:{name:D.agent_name,title:Te?.title||U?.title,type:Te?.type||U?.type||"ai_human"}}},ve=async D=>{if(D.type==="thread_created"){const U=qe(D.thread);if(!ae(U))return;if(U.parent)if(je.value.filter(ke=>ke.parent===U.parent&&ke.agent_id===U.agent_id).length+1>1){const ke=An(U.parent,U.agent_id);Qe(ke),se(ke)&&Oe(U.id)}else Oe(U.id);he.value.unshift(U)}else if(D.type==="thread_updated"){const U=qe(D.thread),Te=je.value.find(d=>d.id===U.id);if(!ae(U)){he.value=he.value.filter(d=>d.id!==U.id),_e.value=_e.value.filter(d=>d.id!==U.id);return}Q.value.delete(U.id);const ke=he.value.findIndex(d=>d.id===U.id);ke>=0&&(he.value[ke]=U);const Je=_e.value.findIndex(d=>d.id===U.id);if(Je>=0?_e.value[Je]=U:ke===-1&&he.value.unshift(U),!!U.terminated&&!Te?.terminated)if(U.parent)if((je.value.filter(m=>m.parent===U.parent&&m.agent_id===U.agent_id).length||1)>1){const m=An(U.parent,U.agent_id);Qe(m),se(m)&&Oe(U.id)}else Oe(U.id);else Oe(U.id)}else if(D.type==="thread_activity"){const U=Te=>{const ke=Te.findIndex(Je=>Je.id===D.threadId);ke!==-1&&(Te[ke]={...Te[ke],...D.last_activity_at!==void 0?{last_activity_at:D.last_activity_at}:{},...D.executing!==void 0?{executing:D.executing}:{},...D.last_message_preview!==void 0?{last_message_preview:D.last_message_preview}:{},...D.last_message_at!==void 0?{last_message_at:D.last_message_at}:{}})};U(_e.value),U(he.value)}else D.type==="thread_deleted"&&(Q.value.add(D.threadId),he.value=he.value.filter(U=>U.id!==D.threadId))},{wsConnected:E,wsError:be,connect:Be}=xo({autoConnect:!1,onEvent:ve});let Ke=!1;Ut(()=>{Ke=!0}),(async()=>{let D;try{const U=await fr("/auth/me");U.ok&&(D=(await U.json()).user?.role)}catch{}Ke||Be(mo(D))})(),ge(()=>W.value,D=>{D===0&&(he.value=[])}),ge(()=>[l.selectedThreadId,je.value],([D,U])=>{if(!D||U.length===0)return;const Te=new Map(U.map(Je=>[Je.id,Je]));let ke=Te.get(D);for(;ke&&ke.parent;){const Je=An(ke.parent,ke.agent_id);Ae.value[Je]=!0,ke=Te.get(ke.parent)}},{immediate:!0}),ge(()=>({rows:oe.value,finished:me.value}),({rows:D,finished:U})=>{const Te=D.find(ke=>ke.kind==="thread");U&&!ie.value&&(ie.value=!0,r("threadsLoaded",Te?.thread.id??null,je.value.map(ke=>ke.id)))},{immediate:!0}),o({refetch:de});const Ue=D=>{r("selectThread",D)};return(D,U)=>{const Te=Jt("FormKit");return t(),s("div",el,[n("div",tl,[n("div",nl,[n("button",{onClick:U[0]||(U[0]=Ye(ke=>r("collapse"),["stop"])),type:"button",class:"-ml-1 flex min-w-0 items-center gap-2 rounded px-1.5 py-1 text-left transition-colors hover:bg-black/10 dark:hover:bg-white/15",title:"Collapse Threads pane","aria-label":"Collapse Threads pane"},[B(c(Vr),{size:18,class:"shrink-0"}),U[12]||(U[12]=n("h2",{class:"truncate text-base font-bold"},"Threads",-1)),!c(Ie)&&He.value>0?(t(),s("span",al," ("+f(He.value)+") ",1)):b("",!0),!c(E)||c(be)?(t(),j(Sr,{key:1,class:"shrink-0",connected:c(E),error:c(be)},null,8,["connected","error"])):b("",!0)]),$e.value>0?(t(),s("span",{key:0,class:"ml-1 inline-flex shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-emerald-500/10 px-1.5 py-0.5 text-[10px] font-medium text-emerald-700 dark:text-emerald-400",title:`${$e.value} thread${$e.value===1?"":"s"} executing right now`},[U[13]||(U[13]=n("span",{class:"thread-working-dot shrink-0","aria-hidden":"true"},null,-1)),n("span",null,f($e.value),1)],8,rl)):b("",!0),n("div",sl,[n("button",{type:"button",class:J(["inline-flex h-7 w-7 items-center justify-center rounded-md border border-neutral-300 bg-white text-neutral-700 transition-colors hover:border-neutral-500 hover:bg-neutral-50 hover:text-black dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-300 dark:hover:border-neutral-500 dark:hover:bg-neutral-900 dark:hover:text-white",u.value?"agents-border-selected agents-text-selected bg-white dark:bg-neutral-950":""]),title:u.value?"Hide search":"Search threads","aria-label":u.value?"Hide search":"Search threads","aria-pressed":u.value,onClick:Ye(ye,["stop"])},[B(c(aa),{size:16})],10,ol),n("button",{onClick:U[1]||(U[1]=ke=>r("createThread")),type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded-md border border-neutral-300 bg-white text-neutral-700 transition-colors hover:border-neutral-500 hover:bg-neutral-50 hover:text-black dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-300 dark:hover:border-neutral-500 dark:hover:bg-neutral-900 dark:hover:text-white",title:"New thread","aria-label":"New thread"},[B(c(rr),{size:16})]),e.showCollapseButton!==!1?(t(),s("button",{key:0,onClick:U[2]||(U[2]=ke=>r("collapse")),type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded-md text-neutral-700 transition-colors hover:bg-black/10 hover:text-black dark:text-neutral-300 dark:hover:bg-white/15 dark:hover:text-white",title:"Collapse pane","aria-label":"Collapse pane"},[B(c(sr),{size:17})])):b("",!0)])])]),u.value||z.value>0?(t(),s("div",ll,[n("div",il,[B(c(aa),{size:14,class:"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-neutral-400"}),ut(n("input",{ref_key:"threadSearchInputRef",ref:S,"onUpdate:modelValue":U[3]||(U[3]=ke=>i.value=ke),type:"search",placeholder:"Search threads...",class:"h-8 w-full rounded-md border border-neutral-300 bg-white pl-7 pr-8 text-sm text-neutral-950 outline-none transition-colors placeholder:text-neutral-400 focus:border-[var(--agents-accent-border)] dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-50"},null,512),[[Ln,i.value]]),i.value?(t(),s("button",{key:0,type:"button",class:"absolute right-1.5 top-1/2 inline-flex h-5 w-5 -translate-y-1/2 items-center justify-center rounded text-neutral-400 transition-colors hover:bg-neutral-100 hover:text-neutral-800 dark:hover:bg-neutral-800 dark:hover:text-neutral-100",title:"Clear search","aria-label":"Clear search",onClick:U[4]||(U[4]=ke=>{i.value="",p.value=null,Ce()})},[B(c(Ft),{size:13})])):b("",!0)]),n("div",dl,[n("label",ul,[B(c(Ur),{size:12,class:"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-neutral-400"}),ut(n("select",{"onUpdate:modelValue":U[5]||(U[5]=ke=>K.value=ke),class:"h-8 w-full appearance-none rounded-md border border-neutral-300 bg-white pl-6 pr-2 text-xs text-neutral-700 outline-none transition-colors focus:border-[var(--agents-accent-border)] dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-200","aria-label":"Sort threads"},[(t(),s(Me,null,Ge($,ke=>n("option",{key:ke.value,value:ke.value},f(ke.label),9,cl)),64))],512),[[or,K.value]])]),n("button",{type:"button",class:J(["h-8 shrink-0 rounded-md border px-2 text-[11px] transition-colors",v.value?"border-emerald-500/60 bg-emerald-500/10 text-emerald-700 dark:text-emerald-400":"border-neutral-300 text-neutral-500 hover:text-neutral-900 dark:border-neutral-700 dark:text-neutral-400 dark:hover:text-neutral-100"]),"aria-pressed":v.value,title:"Show only threads that are executing right now",onClick:U[6]||(U[6]=ke=>v.value=!v.value)}," Working ",10,fl),n("button",{type:"button",class:J(["h-8 shrink-0 rounded-md border px-2 text-[11px] transition-colors",y.value?"border-neutral-300 text-neutral-500 hover:text-neutral-900 dark:border-neutral-700 dark:text-neutral-400 dark:hover:text-neutral-100":"agents-border-selected agents-text-selected"]),"aria-pressed":!y.value,title:"Hide threads that have finished",onClick:U[7]||(U[7]=ke=>y.value=!y.value)}," Open ",10,pl)]),re.value?(t(),s("div",vl,[B(Te,{type:"selectSearch",size:"sm","active-highlight":"",value:w.value||"",options:ue.value,placeholder:"All owners","search-placeholder":"Search owners...",onInput:U[8]||(U[8]=ke=>w.value=ke||null)},null,8,["value","options"])])):b("",!0),n("div",hl,[xe.value?b("",!0):(t(),s("div",ml,[B(Te,{type:"selectSearch",size:"sm","active-highlight":"",value:T.value||"",options:N.value,placeholder:"All agents","search-placeholder":"Search agents...",loading:c(P),onInput:U[9]||(U[9]=ke=>T.value=ke||null)},null,8,["value","options","loading"])])),B(Ro,{startDate:M.value,"onUpdate:startDate":U[10]||(U[10]=ke=>M.value=ke),endDate:ee.value,"onUpdate:endDate":U[11]||(U[11]=ke=>ee.value=ke),class:J(xe.value?"w-full":"flex-1 min-w-0")},null,8,["startDate","endDate","class"]),z.value>0?(t(),s("button",{key:1,onClick:ne,type:"button",class:"text-[10px] font-mono text-neutral-400 hover:text-neutral-900 dark:hover:text-neutral-100 transition-colors whitespace-nowrap"}," Clear ")):(t(),s("button",{key:2,onClick:De,type:"button",class:"text-[10px] font-mono text-neutral-400 hover:text-neutral-900 dark:hover:text-neutral-100 transition-colors whitespace-nowrap"}," Close "))])])):b("",!0),n("div",{ref_key:"scrollContainerRef",ref:pe,class:"flex-1 overflow-y-auto text-xs min-h-0"},[c(Ie)&&_e.value.length===0?(t(),s("div",gl,[B(tt)])):c(le)?(t(),s("div",xl," Error: "+f(c(le)),1)):oe.value.length===0?(t(),s("div",bl,[z.value>0?(t(),s(Me,{key:0},[U[14]||(U[14]=n("p",{class:"text-base mb-2"},"No matching threads",-1)),n("button",{onClick:ne,type:"button",class:"text-xs text-accent-600 dark:text-accent-400 hover:underline"}," Clear filters ")],64)):(t(),s("p",yl,"No threads found"))])):(t(),s("div",kl,[B(Xo,{rows:oe.value,"selected-thread-id":e.selectedThreadId,"working-cluster-ids":H.value,"cluster-has-nested-rows":ot.value,"is-thread-flashing":X,"is-directory-flashing":fe,"has-row-top-gap":at,"has-row-bottom-border":We,onSelectThread:Ue,onToggleDirectory:Fe},null,8,["rows","selected-thread-id","working-cluster-ids","cluster-has-nested-rows"]),Le.value||c(Ie)&&_e.value.length>0?(t(),s("div",_l,[B(tt)])):Z.value&&!c(Pe)&&oe.value.length>0?(t(),s("div",wl," All "+f(He.value)+" threads loaded ",1)):b("",!0)]))],512)])}}}),dy=ht(Cl,[["__scopeId","data-v-40e10a61"]]);function ua(e){return!!e&&typeof e=="object"}function Sl(e){if(ua(e)&&!Array.isArray(e))return e;if(typeof e=="string")try{const o=JSON.parse(e);return ua(o)&&!Array.isArray(o)?o:void 0}catch{return}}function Tl(e){const o=g(null),a=g(!1),l=g(null);let r=null;try{r=mr()}catch{}const i=r?.messages??g([]),p=C(()=>r?.groupedMessages?.value?r.groupedMessages.value:r?.workblocks?.value?r.workblocks.value:i.value),u=C(()=>r?.status.value==="connected"),S=g(null);r?.loading??g(!1);const T=C(()=>i.value.some(z=>z.status==="pending"));function w(z){if(!o.value?.agent)return null;const ne=o.value.agent,Ce=z==="assistant"?"A":"B";return Ce==="A"&&ne.side_a_label?ne.side_a_label:Ce==="B"&&ne.side_b_label?ne.side_b_label:null}function v(z){const ne=z.path??"",Ce=z.name??ne.split("/").pop()??"attachment";return{id:z.id||`att-${ne||Ce||Math.random().toString(36).slice(2)}`,type:"file",path:ne,name:Ce,mimeType:z.mimeType||z.mediaType||"application/octet-stream",width:z.width,height:z.height,description:z.description}}function y(z){if(z){if(Array.isArray(z))return z.length>0?z.map(v):void 0;try{const ne=JSON.parse(z);return Array.isArray(ne)&&ne.length>0?ne.filter(ua).map(v):void 0}catch{return}}}function M(z,ne){const Ce=[];z.reasoning_content&&Ce.push({id:`${z.id}-reasoning`,type:"reasoning",content:z.reasoning_content,created_at:z.created_at});const De=new Map;for(const Pe of z.workItems)Pe.type==="tool_result"&&Pe.tool_call_id&&De.set(Pe.tool_call_id,Pe);for(const Pe of z.workItems){if(Pe.type==="content"){if(!Pe.content)continue;Ce.push({id:Pe.id,type:"content",content:Pe.content,created_at:Pe.created_at??z.created_at});continue}if(Pe.type!=="tool_call")continue;const Ie=Pe.tool_call_id||Pe.id,me=De.get(Ie);let le="pending";if(me){const de=(me.content||"").toLowerCase(),he=de.includes("failed")||de.includes("error"),Q=de.length<500;le=me.status==="error"||he&&Q?"failed":"success"}Ce.push({id:Pe.id,type:"tool_call",content:Pe.name||"",created_at:z.created_at,tool_name:Pe.name,tool_call_id:Ie,tool_arguments:Pe.content||void 0,response:me?.content||null,response_status:le,response_log_id:null,log_id:null})}const ye=Ce.some(Pe=>Pe.type==="tool_call"&&Pe.response_status==="pending"),we=z.status!=="pending"&&!ye;return{type:"work",id:z.id,role:"assistant",items:Ce,created_at:z.created_at,updated_at:z.updated_at??z.response_completed_at??z.created_at,request_sent_at:z.request_sent_at??z.created_at,response_completed_at:z.response_completed_at??(we?z.updated_at??z.created_at:null),isComplete:we,sideLabel:w("assistant"),status:z.status}}function $(z){return z==="assistant"?"assistant":"user"}function q(z){for(let ne=z.length-1;ne>=0;ne--){const Ce=(z[ne].content||"").trim();if(Ce.length>0)return Ce}return""}function K(z){const ne=new Set,Ce=[];for(const De of z){const ye=y(De.attachments);if(ye?.length)for(const we of ye)ne.has(we.path)||(ne.add(we.path),Ce.push(we))}return Ce.length>0?Ce:void 0}function G(z){if(!z)return!1;if(z.tool_status==="error"||z.status==="failed")return!0;const ne=(z.content||"").toLowerCase();return ne?ne.includes("failed to execute tool")||ne.includes("has reported a failure")||ne.includes("execution stopped before completion"):!1}function ue(z){const ne=z.messages||[],Ce=ne[ne.length-1],De=Ce?$(Ce.role):"assistant",ye=Ce?.log_id??null,we=(z.subagent_status||"").toLowerCase(),Pe=G(Ce)||we.includes("error")||we.includes("failed"),Ie=q(ne),me=K(ne),le=ne.filter(de=>{const he=y(de.attachments);return!!de.content||!!de.status||!!(he&&he.length>0)}).map(de=>({id:de.id,role:de.role,content:de.content||"",created_at:de.created_at,silent:de.silent,attachments:y(de.attachments)}));return{type:"subagent",id:z.id,role:De,created_at:z.created_at,updated_at:z.updated_at,subagentId:z.subagent_id,subagentName:z.subagent_name??null,subagentTitle:z.subagent_title??null,subagentThreadName:z.subagent_thread_name??null,subagentStatus:z.subagent_status??null,subagentHasError:Pe,subagentResumable:z.subagent_resumable??null,subagentBlocking:z.subagent_blocking??null,messages:le,messageCount:ne.length,latestContent:Ie,attachments:me,log_id:ye,sideLabel:w(De),silent:ne.length>0&&ne.every(de=>!!de.silent)}}function re(z){const ne=(z.subagents||[]).map(De=>ue(De)),Ce=ne.reduce((De,ye)=>De?ye.updated_at>De.updated_at?ye:De:ye,null);return{type:"subagent_group",id:z.id,role:Ce?.role??"assistant",created_at:z.created_at,updated_at:z.updated_at,subagents:ne,count:ne.length,log_id:Ce?.log_id??null,sideLabel:Ce?.sideLabel??w("assistant"),silent:ne.every(De=>!!De.silent)}}function ie(z){return{type:"status",id:z.id,role:"system",content:z.content,created_at:z.created_at,statusKind:z.status_kind??null,subagentId:z.subagent_id??null}}const xe=C(()=>{const z=[],Ce=p.value.filter(ye=>(ye.depth??0)===0);let De=[];for(let ye=0;ye<Ce.length;ye++){const we=Ce[ye];if(z[z.length-1]?.role,"type"in we&&we.type==="workblock"){const he=M(we);z.push(he),we.attachments&&we.attachments.length>0&&De.push(...we.attachments.map(v));continue}if("type"in we&&we.type==="subagent_block"){De=[],z.push(ue(we));continue}if("type"in we&&we.type==="subagent_group_block"){De=[],z.push(re(we));continue}if("type"in we&&we.type==="status"){De=[],z.push(ie(we));continue}const Ie=we,me=Ie.role;if(Ie.role==="tool")continue;const le=y(Ie.attachments);let de;if((De.length>0||le)&&(de=[...De,...le||[]],De=[]),Ie.content||me==="system"||Ie.status==="pending"||de?.length){const he={type:"text",id:Ie.id,role:me,content:Ie.content||"",attachments:de?.length?de:void 0,created_at:Ie.created_at,log_id:Ie.log_id||null,sideLabel:w(me),isOptimistic:Ie.isOptimistic,status:Ie.status,silent:Ie.silent,metadata:Sl(Ie.metadata)};z.push(he)}}return z});async function ee(){if(!e.value){o.value=null;return}try{const z=await fetch(Ze(`/api/threads/${e.value}`));z.ok&&(o.value=await z.json())}catch{o.value=null}}async function R(z){if(e.value){if(r?.deleteMessage){await r.deleteMessage(z);return}try{if(!(await fetch(Ze(`/api/threads/${e.value}/messages/${z}`),{method:"DELETE"})).ok)throw new Error("Failed to delete message")}catch(ne){throw ne}}}async function P(z,ne){if(e.value)try{if(!(await fetch(Ze(`/api/threads/${e.value}/messages/${z}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:ne})})).ok)throw new Error("Failed to update message")}catch(Ce){throw Ce}}ge(e,async z=>{z?(a.value=!0,await ee(),a.value=!1):o.value=null},{immediate:!0});const N=r?.sendMessage,W=r?.stopExecution,_e=r?.attachments??g([]),Le=r?.addAttachment??(()=>{}),Z=r?.removeAttachment??(()=>{}),Re=r?.clearAttachments??(()=>{});return{messages:xe,threadInfo:o,isFetching:a,error:l,wsConnected:u,wsError:S,isExecuting:T,sendMessage:N,stopThread:W,attachments:_e,addAttachment:Le,removeAttachment:Z,clearAttachments:Re,deleteMessageById:R,updateMessageContent:P}}const Gn="__shiki_highlighter__";let Cn=null;async function Il(){return typeof window<"u"&&window[Gn]?window[Gn]:Cn||(Cn=Promise.all([pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.d),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.e),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.f),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.g),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.i),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.k),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.l),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.m),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.n),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.s),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.o),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.p),__vite__mapDeps([0,1])),pt(()=>import("./vue-BuvSxRmI.js").then(e=>e.bi),__vite__mapDeps([2,3,1,0])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.y),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.q),__vite__mapDeps([0,1])),pt(()=>import("./syntax-D68HCEYm.js").then(e=>e.r),__vite__mapDeps([0,1]))]).then(async([{createHighlighterCore:e},{createJavaScriptRegexEngine:o},a,l,r,i,p,u,S,T,w,v,y,M,$,q])=>{const K=await e({themes:[$.default,q.default],langs:[a.default,l.default,r.default,i.default,p.default,u.default,S.default,T.default,w.default,v.default,y.default,M.default],engine:o()});return typeof window<"u"&&(window[Gn]=K),K}),Cn)}const Al={class:"code-block"},El={key:0,class:"text-xs text-neutral-500 p-2"},Ll=["innerHTML"],jt=nt({__name:"CodeBlock",props:{code:{},language:{}},setup(e){const o=e,a=g(""),l=g(!0),r={bash:"bash",cjs:"javascript",htm:"html",js:"javascript",jsonl:"json",md:"markdown",mjs:"javascript",sh:"bash",shell:"bash",text:"text",ts:"typescript",txt:"text",yml:"yaml"},i=new Set(["bash","css","html","javascript","jsx","json","markdown","shellscript","tsx","typescript","vue","yaml"]),p=w=>{const v=w?.trim().toLowerCase()||"text";return r[v]??v},u=w=>w.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),S=w=>`<pre class="shiki shiki-text"><code>${u(w)}</code></pre>`,T=async()=>{const w=o.code??"";if(!w){a.value='<pre class="shiki"><code></code></pre>',l.value=!1;return}try{const v=await Il(),y=p(o.language);i.has(y)?a.value=v.codeToHtml(w,{lang:y,themes:{light:"github-light",dark:"github-dark"}}):a.value=S(w)}catch{a.value=S(w)}finally{l.value=!1}};return At(()=>{T()}),ge(()=>o.code,()=>{T()}),ge(()=>o.language,()=>{T()}),(w,v)=>(t(),s("div",Al,[l.value?(t(),s("div",El,"Loading...")):(t(),s("div",{key:1,innerHTML:a.value,class:"code-content"},null,8,Ll))]))}}),Rl={key:0,class:"absolute inset-0 flex items-center justify-center bg-neutral-100 dark:bg-neutral-800"},Ml={key:1,class:"absolute inset-0 flex items-center justify-center bg-neutral-100 dark:bg-neutral-800 text-neutral-400"},Dl=["src","alt"],Fl={key:2,class:"pointer-events-none absolute inset-0 flex items-center justify-center bg-black/0 group-hover:bg-black/35 transition-colors"},Pl={class:"text-xs text-neutral-600 dark:text-neutral-300 truncate max-w-[100px]"},Yn=nt({__name:"FileAttachment",props:{attachment:{},threadId:{},showRemove:{type:Boolean}},emits:["remove"],setup(e,{emit:o}){const a=Hr(),l=Wr(),r=e,i=o,p=g(!0),u=g(!1),S=C(()=>r.attachment.mimeType.startsWith("image/")),T=C(()=>!!r.attachment.thumbnailBase64),w=C(()=>{if(!r.threadId||!r.attachment.path)return"";const K=r.attachment.path.startsWith("/")?r.attachment.path.slice(1):r.attachment.path;return Ze(`/api/threads/${r.threadId}/fs/${K}`)}),v=C(()=>S.value?r.attachment.thumbnailBase64?`data:image/webp;base64,${r.attachment.thumbnailBase64}`:w.value:"");function y(){p.value=!1,u.value=!1}function M(){p.value=!1,u.value=!0}function $(){i("remove",r.attachment.id)}function q(){if(!r.attachment.path){w.value&&window.open(w.value,"_blank");return}a.replace({query:{...l.query,inspector:"files",filePath:r.attachment.path},hash:l.hash})}return(K,G)=>(t(),s("div",{class:J(["relative group inline-flex items-center overflow-hidden rounded-2xl bg-neutral-100 dark:bg-neutral-800/60 ring-1 ring-black/5 dark:ring-white/10 transition-all hover:ring-black/10 dark:hover:ring-white/20 hover:shadow-sm",{"w-[256px] h-[256px]":S.value,"px-2.5 py-1.5":!S.value,"cursor-pointer":S.value&&w.value}]),onClick:G[0]||(G[0]=ue=>S.value&&w.value?q():void 0)},[S.value?(t(),s(Me,{key:0},[p.value&&!u.value&&!T.value?(t(),s("div",Rl,[...G[1]||(G[1]=[n("div",{class:"w-4 h-4 border-2 border-neutral-300 border-t-neutral-600 rounded-full animate-spin"},null,-1)])])):b("",!0),u.value&&!T.value?(t(),s("div",Ml,[B(c(lr),{size:24})])):b("",!0),ut(n("img",{src:v.value||w.value,alt:e.attachment.name,class:"w-full h-full object-cover",onLoad:y,onError:M},null,40,Dl),[[wt,!p.value&&!u.value||T.value]]),w.value?(t(),s("div",Fl,[...G[2]||(G[2]=[n("span",{class:"rounded-full bg-white/90 px-3 py-1 text-xs font-medium text-neutral-900 opacity-0 group-hover:opacity-100 transition-opacity shadow-sm"}," View ",-1)])])):b("",!0)],64)):(t(),s(Me,{key:1},[B(c(Rn),{size:14,class:"text-neutral-500 mr-1 flex-shrink-0"}),n("span",Pl,f(e.attachment.name),1)],64)),e.showRemove?(t(),s("button",{key:2,onClick:Ye($,["stop"]),class:"absolute -top-1 -right-1 w-4 h-4 rounded-full bg-red-500 text-white flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity"},[B(c(Ft),{size:10})])):b("",!0)],2))}});function Nl(e){const o=l=>!!l.path&&(l.mimeType||"").startsWith("image/"),a=[...e.attachments||[]].reverse().find(o);if(a)return a;for(let l=e.messages.length-1;l>=0;l--){const r=[...e.messages[l].attachments||[]].reverse().find(o);if(r)return r}return null}function zl(e){if(e.silent!==!0||!e.metadata)return null;const o=e.metadata.subagent_id??e.metadata.subagentId;if(typeof o!="string")return null;const a=o.trim();return a.length>0?a:null}const jl=/https:\/\/[^\s"'<>()\][]+/g;function Ar(e){if(!e)return null;const o=e.match(jl);if(!o)return null;for(const a of o){const l=a.replace(/[.,;:!?]+$/,"");let r;try{r=new URL(l)}catch{continue}if(r.protocol==="https:"&&r.pathname.endsWith("/settings/billing"))return r.toString()}return null}let Qn=null,Pa=null;function Bl(){return typeof window>"u"?null:((!Qn||Pa!==window)&&(Qn=zs(window),Pa=window),Qn)}function Na(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Ol(e){const o=e.trim().replace(/[\u0000-\u0020\u007f]+/g,"");return/^data:image\/(?:gif|jpe?g|png|webp);base64,/i.test(o)||/^(?:https?:|mailto:|tel:)/i.test(o)||/^[#/?]/.test(o)?!0:o.length>0&&!o.includes(":")&&!o.includes("&")}function Vl(e){const o=Na((e??"").trim()),a=Ns.parse(o,{async:!1,gfm:!0,breaks:!0,walkTokens(r){(r.type==="link"||r.type==="image")&&"href"in r&&typeof r.href=="string"&&!Ol(r.href)&&(r.href="")}}),l=Bl();return l?.isSupported?l.sanitize(a,{USE_PROFILES:{html:!0},FORBID_TAGS:["style","form","input","button"],FORBID_ATTR:["style"]}):Na(a)}const Ul=["onMouseenter","onMouseleave","onClick"],ql=["onClick"],Hl={key:0,xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"3",stroke:"currentColor",class:"w-3 h-3 text-white"},Wl={key:1,xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"2.5",stroke:"currentColor",class:"w-3 h-3 text-white"},Kl={key:0,class:"w-full text-center text-xs text-neutral-400 dark:text-neutral-500 py-1"},Jl={key:0,class:"mb-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-[10px] font-semibold uppercase leading-none tracking-wider text-neutral-400 dark:text-neutral-500"},Gl={key:0,class:"break-all font-mono font-normal normal-case tracking-normal"},Yl=["contenteditable","onInput"],Ql=["innerHTML"],Zl=["href"],Xl={key:4,class:"inline-flex items-center gap-1 rounded-full bg-neutral-100 dark:bg-neutral-800/60 px-3 py-2"},ei={key:0,class:"inline-flex items-center gap-1.5"},ti={key:1,class:"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-[4px] border agents-border-selected agents-surface-selected text-[8px] font-semibold leading-none agents-text-selected","aria-hidden":"true"},ni=["title","onClick"],ai={key:0,class:"flex flex-wrap gap-2 px-4"},ri=["onClick","onMouseenter"],si={key:0,class:"flex items-center gap-2 px-4 py-2 min-w-0"},oi={key:0,class:"truncate text-neutral-700 dark:text-neutral-300 min-w-0"},li={key:1,class:"truncate text-neutral-600 dark:text-neutral-400 min-w-0"},ii={class:"text-neutral-500 dark:text-neutral-400 flex-shrink-0"},di={class:"work-op-strip","aria-label":"Operation statuses"},ui=["title"],ci={key:1,class:"px-4 py-2 space-y-2.5"},fi={class:"flex items-center gap-2"},pi={class:"min-w-0 truncate text-neutral-700 dark:text-neutral-300"},vi={class:"shrink-0 text-neutral-500 dark:text-neutral-400"},hi={class:"work-op-strip","aria-label":"Operation statuses"},mi=["title"],gi={key:0,class:"space-y-1"},xi=["onClick","onMouseenter"],bi=["title"],yi={class:"font-mono font-medium text-neutral-800 dark:text-neutral-100 flex-shrink-0"},ki={key:2,class:"text-neutral-500 dark:text-neutral-400 truncate flex-1 min-w-0"},_i={key:0,class:"pl-5 mt-2 space-y-3"},wi={key:0},$i={class:"divide-y divide-neutral-100/80 rounded-md bg-white px-2.5 py-1.5 ring-1 ring-neutral-200/70 dark:divide-neutral-800/70 dark:bg-neutral-950/60 dark:ring-neutral-800/70"},Ci={class:"pt-1 font-mono text-[12px] text-neutral-500 dark:text-neutral-500"},Si={class:"min-w-0"},Ti={key:1,class:"break-words text-neutral-800 dark:text-neutral-200"},Ii={key:1},Ai={class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-400 dark:text-neutral-500 mb-1"},Ei=["onClick","onMouseenter"],Li={key:0,class:"m-0 whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed"},Ri={key:1},Mi=["onClick"],Di={key:0,class:"pl-5 mt-2 whitespace-pre-wrap break-words rounded-md bg-white dark:bg-neutral-950/60 ring-1 ring-neutral-200/70 dark:ring-neutral-800/70 px-2.5 py-2 text-neutral-700 dark:text-neutral-300"},Fi={key:2,class:"pl-5 pb-1 break-words text-neutral-600 dark:text-neutral-400"},Pi={class:"flex items-center justify-between gap-3 border-b border-neutral-100 px-3 py-2 dark:border-neutral-900"},Ni={class:"min-w-0"},zi={class:"truncate text-[12px] font-medium text-neutral-800 dark:text-neutral-100"},ji={class:"rounded-full bg-neutral-100 px-2 py-0.5 text-[10px] text-neutral-500 ring-1 ring-inset ring-neutral-200 dark:bg-neutral-900 dark:text-neutral-400 dark:ring-neutral-800"},Bi={class:"divide-y divide-neutral-100 dark:divide-neutral-900"},Oi=["onClick"],Vi={class:"flex items-center gap-3"},Ui=["src"],qi={class:"min-w-0 flex-1"},Hi={class:"flex items-center gap-2"},Wi={class:"truncate text-[13px] font-medium text-neutral-900 dark:text-neutral-50"},Ki={class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Ji=["src"],Gi={class:"shrink-0 rounded-full bg-neutral-100 px-1.5 py-0.5 text-[10px] leading-none text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400"},Yi={class:"ml-11 mt-1 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Qi={key:0,class:"ml-12 mt-1.5 space-y-1.5 border-l border-neutral-200 pl-2.5 dark:border-neutral-800"},Zi={class:"flex items-center gap-2 text-[10px] text-neutral-500 dark:text-neutral-400"},Xi={class:"font-medium uppercase text-neutral-600 dark:text-neutral-300"},ed={key:0,class:"italic"},td=["innerHTML"],nd={key:1,class:"mt-2 flex flex-wrap gap-2"},ad=["onClick"],rd={class:"flex items-center gap-3"},sd=["src"],od={class:"min-w-0 flex-1"},ld={class:"flex items-center gap-2"},id={class:"truncate text-[13px] font-medium text-neutral-900 dark:text-neutral-50"},dd={class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},ud=["src"],cd={class:"shrink-0 rounded-full bg-neutral-100 px-1.5 py-0.5 text-[10px] leading-none text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400"},fd={class:"ml-12 mt-1 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},pd={key:0,class:"ml-12 mt-2 space-y-1.5 border-l border-neutral-200 pl-2.5 dark:border-neutral-800"},vd={class:"flex items-center gap-2 text-[10px] text-neutral-500 dark:text-neutral-400"},hd={class:"font-medium uppercase text-neutral-600 dark:text-neutral-300"},md={key:0,class:"italic"},gd=["innerHTML"],xd={key:1,class:"mt-2 flex flex-wrap gap-2"},bd=nt({__name:"AgentMessages",props:{messages:{},threadId:{},selectedMessageId:{},selectedLogId:{},selectedEffectId:{},hoveredLogId:{},isEditMode:{type:Boolean},selectedForDelete:{},editedMessages:{},assistantAvatarSrc:{},userAvatarSrc:{}},emits:["messageClick","messageHover","selectionChange","messageEdit"],setup(e,{expose:o,emit:a}){const l=e,r=a;function i(h){const x=l.selectedForDelete?.has(h)??!1;r("selectionChange",h,!x)}function p(h,x){const Ee=h.target.innerText;r("messageEdit",x,Ee)}function u(h){return!!h&&typeof h=="object"&&!Array.isArray(h)}function S(h){return h.type==="text"?zl(h):null}function T(h){return Vl(Ke(h))}function w(h){const x=h.content??"";return h.status!=="failed"&&!x.includes("[ERROR]")?null:Ar(x)}function v(h){return l.editedMessages?.has(h)??!1}const y=g(new Map);function M(h,x){x?y.value.set(h,x):y.value.delete(h)}function $(h,x){M(h,x instanceof HTMLElement?x:null)}function q(h){const x=l.messages.findIndex(_=>_.log_id===h);if(x<=0)return-1;for(let _=x-1;_>=0;_--){const Ee=l.messages[_];if(Ee.role==="user")return _;if(Ee.role==="assistant"&&Ee.log_id)break}return-1}function K(h){for(let x=0;x<l.messages.length;x++){const _=l.messages[x];if(_.log_id===h||_.type==="work"&&_.items&&_.items.some(et=>et.log_id===h||et.response_log_id===h))return x}return-1}function G(h,x){const Ee=K(h);if(Ee===-1)return!1;const Y=y.value.get(Ee);if(!Y)return!1;const et=l.messages[Ee];let gt=null;if(et.role==="assistant"&&et.log_id){const Ct=q(et.log_id);gt=Ct!==-1?y.value.get(Ct):null}const kt=x.getBoundingClientRect(),rn=Y.getBoundingClientRect();if(rn.top<kt.top){const Vn=(gt||Y).getBoundingClientRect().top-kt.top-10;x.scrollBy({top:Vn,behavior:"smooth"})}else if(rn.bottom>kt.bottom){const Ct=rn.bottom-kt.bottom+10;x.scrollBy({top:Ct,behavior:"smooth"})}else if(gt){const Ct=gt.getBoundingClientRect();if(Ct.top<kt.top){const kn=Ct.top-kt.top-10;x.scrollBy({top:kn,behavior:"smooth"})}}return!0}function ue(h){for(const x of l.messages){if(x.type!=="work")continue;if(x.items.some(Y=>Y.log_id===h||Y.response_log_id===h))return!0}return!1}o({scrollToLogId:G,hasWorkblockForLogId:ue});function re(h){const x=l.messages[h];if(x.log_id)return x.log_id;if(x.role==="user")for(let _=h+1;_<l.messages.length;_++){const Ee=l.messages[_];if(Ee.log_id)return Ee.log_id;if(Ee.role==="user")break}return null}function ie(h){if(h.type!=="text")return null;const x=h.metadata;if(!u(x))return null;const _=x.scheduledEffect;return u(_)?_:null}function xe(h){const x=ie(h);return typeof x?.id=="string"?x.id:null}function ee(h){const x=ie(h);return typeof x?.name=="string"?x.name:null}function R(h){return xe(h)!==null}function P(h){const x=xe(h),_=ee(h);return _&&x?`${_} (${x})`:_||"Scheduled effect"}function N(h){if(h.type!=="text")return null;const x=ie(h),_=typeof x?.id=="string"?x.id:null;return _?{id:_,name:typeof x?.name=="string"?x.name:null}:null}function W(h,x){return x?re(h)===x:!1}function _e(h,x){if(l.isEditMode||h.silent||h.role==="user"&&!R(h))return"";const _=xe(h),Ee=!!re(x)||R(h);return W(x,l.selectedLogId??null)||_&&_===l.selectedEffectId?"message-log-state message-log-state--selected":re(x)&&W(x,l.hoveredLogId??null)?"message-log-state message-log-state--hovered":Ee?"message-log-state":""}function Le(h){const x=re(h);x&&r("messageHover",x)}function Z(h){re(h)&&r("messageHover",null)}function Re(h){const x=l.messages[h],_=re(h),Ee=N(x);(_||Ee)&&r("messageClick",x.id,_,Ee)}function z(h){const x=l.messages[h],_=N(x);_&&r("messageClick",x.id,re(h),_)}const ne=g(new Set),Ce=g(new Set),De=g(new Set),ye=g(new Set);function we(h){ne.value.has(h)?ne.value.delete(h):ne.value.add(h)}function Pe(h){Ce.value.has(h)?Ce.value.delete(h):Ce.value.add(h)}function Ie(h){De.value.has(h)?De.value.delete(h):De.value.add(h)}function me(h){ye.value.has(h)?ye.value.delete(h):ye.value.add(h)}function le(h){if(!h)return{};try{const x=JSON.parse(h);return x&&typeof x=="object"&&!Array.isArray(x)?x:{raw:x}}catch{return{raw:h}}}function de(h){if(!h)return null;const x=le(h),_=Object.keys(x);if(_.length===0)return null;const Ee=x[_[0]];return typeof Ee=="string"?te(se(Ee)):JSON.stringify(Ee)}const he={bash:"bash",css:"css",html:"html",js:"javascript",jsx:"jsx",json:"json",md:"markdown",mjs:"javascript",sh:"bash",ts:"typescript",tsx:"tsx",vue:"vue",yaml:"yaml",yml:"yaml"};function Q(h){if(typeof h!="string")return null;const x=h.split("?")[0]?.split("#")[0]?.split(".").pop()?.toLowerCase();return x?he[x]??null:null}function Ae(h){if(typeof h!="string")return null;const x=h.toLowerCase();return x.includes("json")?"json":x.includes("typescript")?"typescript":x.includes("javascript")?"javascript":x.includes("html")?"html":x.includes("css")?"css":x.includes("markdown")?"markdown":x.includes("yaml")||x.includes("yml")?"yaml":x.includes("shell")||x.includes("bash")?"bash":null}function Ne(h){try{return JSON.stringify(JSON.parse(h),null,2)}catch{return null}}function V(h){try{return JSON.parse(h)}catch{return null}}function ce(h){return h&&typeof h=="object"&&!Array.isArray(h)?h:null}function se(h){return h.replace(/\\r\\n/g,`
3
3
  `).replace(/\\n/g,`
4
4
  `).replace(/\\t/g," ")}function Fe(h){const x=se(h);return x.includes(`
5
5
  `)||/(^|\s)(import|export|const|let|function|async|return|class|interface|type)\s/.test(x)||/<\/?[a-z][\s\S]*>/i.test(x)||/\b(Response|Request|fetch|console)\b/.test(x)}function Oe(h){const x=se(h).trim();return x?/^\s*</.test(x)||/<\/[a-z][\s\S]*>/i.test(x)?"html":/^\s*[{[]/.test(x)&&Ne(x)?"json":/\b(interface|type|Request|Response)\b/.test(x)||/\bimport\s+.+\s+from\s+["']/.test(x)||/\bexport\s+(default\s+)?(async\s+)?function\b/.test(x)?"typescript":/\b(import|export|const|let|function|async|return|class)\b/.test(x)?"javascript":/^#!.*\b(bash|sh)\b/.test(x)?"bash":null:null}function Qe(h,x,_){const Ee=h.toLowerCase(),Y=Q(_.path)||Q(_.filePath)||Q(_.filename)||Q(_.name),et=Ae(_.mimeType)||Ae(_.mime_type)||Ae(_.contentType)||Ae(_.content_type);return typeof x=="string"&&(Ee.includes("content")||Ee.includes("code")||Ee.includes("source"))?et||Y||Oe(x)||"text":typeof x!="string"||Array.isArray(x)||x&&typeof x=="object"?"json":Oe(x)||"text"}function X(h,x,_){if(Array.isArray(x)||x&&typeof x=="object")return!0;if(typeof x!="string")return!1;const Ee=h.toLowerCase();return _!=="text"||x.length>120||Fe(x)||Ee.includes("content")||Ee.includes("body")||Ee.includes("schema")||Ee.includes("payload")}function fe(h,x){return typeof h!="string"?JSON.stringify(h,null,2):x==="json"?Ne(h)||h:se(h)}function ae(h){const x=le(h);return Object.entries(x).map(([_,Ee])=>{const Y=Qe(_,Ee,x);return{key:_,language:Y,code:fe(Ee,Y),isBlock:X(_,Ee,Y)}})}function je(h){const x=ce(h);if(!x||typeof x.content!="string")return null;const _=Ae(x.mimeType)||Ae(x.mime_type)||Ae(x.contentType)||Ae(x.content_type)||Q(x.path)||Q(x.filePath)||Q(x.name)||Oe(x.content)||"text";return{code:se(x.content),language:_}}function He(h){const x=Ke(h),_=V(x),Ee=je(_);if(Ee)return Ee;if(_!==null)return{code:JSON.stringify(_,null,2),language:"json"};const Y=se(x);return{code:Y,language:Y.includes("```")?"markdown":"text"}}function H(h){return se(Ke(h))}function $e(h){return O(h.items)?te(O(h.items)||""):pe(h)}function oe(h){return h.type==="tool_call"?h.response_status==="failed"?"work-op-square--failed":h.response_status==="success"?"work-op-square--success":"work-op-square--pending":h.type==="content"?"work-op-square--success":"work-op-square--neutral"}function We(h){if(h.type==="tool_call"){const x=h.tool_name||"Tool call";return h.response_status==="failed"?`${x} failed`:h.response_status==="success"?`${x} succeeded`:`${x} pending`}return h.type}function at(h){return new Date(h/1e3).toLocaleTimeString()}function ot(h){const x=Math.round(h/1e6);if(x<1)return"< 1s";if(x<60)return`${x}s`;const _=Math.floor(x/60),Ee=x%60;return`${_}m ${Ee}s`}function pe(h){if(h.status==="pending")return"...";if(!h.isComplete)return"Working...";let x;return h.request_sent_at&&h.response_completed_at?x=h.response_completed_at-h.request_sent_at:x=h.updated_at-h.created_at,`Worked for ${ot(x)}`}function O(h){const x=h.filter(_=>_.type==="content");if(x.length===0){const _=h.filter(Ee=>Ee.type==="reasoning");return _.length>0?_[_.length-1].content:null}return x[x.length-1].content}function te(h){const _=h.trim().split(`