@standardagents/builder 0.36.3 → 0.37.0

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 (37) hide show
  1. package/dist/built-in-routes.js +167 -131
  2. package/dist/built-in-routes.js.map +1 -1
  3. package/dist/client/{ApiKeysView-CxelZw61.js → ApiKeysView-CTfDKe47.js} +1 -1
  4. package/dist/client/{CenteredContentView-CeQNRQH8.js → CenteredContentView-BrVntknT.js} +1 -1
  5. package/dist/client/{CompositionView-YO0nHsYV.js → CompositionView-BT-1sFij.js} +1 -1
  6. package/dist/client/{ConfirmDialog.vue_vue_type_script_setup_true_lang-_Y_F2vcO.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-yyjbXnqu.js} +1 -1
  7. package/dist/client/{CopyButton.vue_vue_type_script_setup_true_lang-CtC06f6H.js → CopyButton.vue_vue_type_script_setup_true_lang-BWgZbcol.js} +1 -1
  8. package/dist/client/{DataTable.vue_vue_type_script_setup_true_lang-CqaWkS63.js → DataTable.vue_vue_type_script_setup_true_lang-DP_WTiEu.js} +1 -1
  9. package/dist/client/{JsonViewer-71rdOpyq.js → JsonViewer-DY4s92Td.js} +1 -1
  10. package/dist/client/{LoginView-CkDpPh8U.js → LoginView-DHYLpkb0.js} +1 -1
  11. package/dist/client/{MarketplaceView-UYrMBLon.js → MarketplaceView-Bcil0ES3.js} +1 -1
  12. package/dist/client/{Modal.vue_vue_type_script_setup_true_lang-B1HPGo8o.js → Modal.vue_vue_type_script_setup_true_lang-BJgJZ56X.js} +1 -1
  13. package/dist/client/{ModelModal.vue_vue_type_script_setup_true_lang-DejoTM9W.js → ModelModal.vue_vue_type_script_setup_true_lang-BXTP0K4Z.js} +1 -1
  14. package/dist/client/{ModelsView-DKYzp2fJ.js → ModelsView-_RY4gQ79.js} +1 -1
  15. package/dist/client/{PromptEditView-BlYHZ0ao.js → PromptEditView-D8kyGi30.js} +1 -1
  16. package/dist/client/{PromptModal-B1neRzSc.js → PromptModal-DSPIuleV.js} +1 -1
  17. package/dist/client/{PromptsView-C0Ez74j0.js → PromptsView-DPvBDPJf.js} +1 -1
  18. package/dist/client/{ProvidersView-CFc4K0IC.js → ProvidersView-PaPnME7I.js} +1 -1
  19. package/dist/client/{ThreadInspectorPane.vue_vue_type_script_setup_true_lang-CXbSQo2-.js → ThreadInspectorPane.vue_vue_type_script_setup_true_lang-BAUlrnb6.js} +14 -14
  20. package/dist/client/{ThreadsView-B1hFXL-4.js → ThreadsView-BW4SYvFN.js} +1 -1
  21. package/dist/client/{ToolsView-B3KqeOZD.js → ToolsView-xsIVTHh0.js} +1 -1
  22. package/dist/client/{UsersView-CF1tomjI.js → UsersView-CSXdBGA-.js} +1 -1
  23. package/dist/client/{VariablesView-CP0TDspK.js → VariablesView-Bl5S2ZDn.js} +1 -1
  24. package/dist/client/assets/{ThreadInspectorPane-2QOWOtet.css → ThreadInspectorPane-CnbmdCdH.css} +1 -1
  25. package/dist/client/{index-BTs3PMFs.js → index-Df4DTwgs.js} +2 -2
  26. package/dist/client/index.html +1 -1
  27. package/dist/{index-DUIfQjBW.d.ts → index-yV9JL4r3.d.ts} +17 -1
  28. package/dist/index.d.ts +60 -2
  29. package/dist/index.js +10015 -9557
  30. package/dist/index.js.map +1 -1
  31. package/dist/plugin.js +3 -0
  32. package/dist/plugin.js.map +1 -1
  33. package/dist/runtime.d.ts +68 -3
  34. package/dist/runtime.js +10013 -9558
  35. package/dist/runtime.js.map +1 -1
  36. package/dist/test.d.ts +1 -1
  37. package/package.json +5 -5
@@ -1,23 +1,23 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["syntax-D-ZcovVx.js","vendor-TPZjEwCU.js","vue-Dw7WLX4c.js","formkit-0eyyCEP_.js"])))=>i.map(i=>d[i]);
2
- import{d as et,z as j,e as t,k as Fe,g as Ft,m as G,B as Mt,an as Ot,c as T,w as be,r as g,O as Wt,a5 as xr,ao as br,J as c,a4 as sa,C as yr,D as kr,b as r,f as n,q as b,j as B,s as rt,u as p,h as Xe,a as Kt,Z as hn,o as It,ap as _r,aq as Dt,ag as Tt,F as Ae,l as We,K as Ge,n as gt,ar as Ha,as as Wa,ah as jt,at as wr,au as $r,av as Yn,aw as Ka,ax as Ja,x as dt,ay as Sn,az as Cr,aA as Ga,aB as Sr,X as Tr,Y as Ir,aC as Ya,y as _t,aD as Tn,aE as St,_ as Qn,aF as Ar,a3 as wt,aG as Er,am as fn,aH as Lr,aI as In,aJ as Qa,aK as Xa,aL as Rr,al as Mr,aM as Za,aN as Dr,aO as Fr,aP as Pr,aQ as Nr,aR as zr,aS as jr,aT as Br,aU as Or,aV as Vr,aW as qr,L as Ut,aX as an,aY as Xn,aZ as Dn,P as Bt,H as Ur,a_ as er,a$ as Hr,b0 as Wr,b1 as Kr,b2 as zn,b3 as Jr,b4 as Gr,b5 as Yr,b6 as fa,b7 as An,b8 as Qr,b9 as Xr,ba as pa,bb as va,bc as Zn,W as Zr,bd as es,be as ts,bf as ha}from"./vue-Dw7WLX4c.js";import{H as ns,b as Qe,J as oa,K as as,L as ea,I as yn,k as ma,M as ga,C as tr,N as rs,O as xa,P as ss,m as vt,Q as la,R as nr,B as Ze,S as os,h as pn,U as En,V as ls,W as jn,_ as kn,e as un,f as dn,X as is,Y as ds,u as us,A as At,p as cs,w as fs,y as ps,z as vs,Z as hs,$ as ms,x as gs}from"./index-BTs3PMFs.js";import{e as ba}from"./vendor-TPZjEwCU.js";import{_ as ar}from"./Modal.vue_vue_type_script_setup_true_lang-B1HPGo8o.js";import{u as xs}from"./timeAgo-CDt-vAhI.js";import{_ as ia,u as bs}from"./CopyButton.vue_vue_type_script_setup_true_lang-CtC06f6H.js";import{_ as ft,W as ys,a as ks,b as _s,c as ws,d as $s,e as rn}from"./monaco-DI2r3M8m.js";import{J as Bn}from"./JsonViewer-71rdOpyq.js";import{_ as Cs}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-_Y_F2vcO.js";import{u as rr,_ as sr,b as _n,c as Ss,P as Ts}from"./PromptModal-B1neRzSc.js";const Is=et({__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 s(i){a.disabled||l("click",i)}return(i,h)=>(t(),j(Mt(e.as),{type:e.as==="button"?"button":void 0,disabled:e.as==="button"?e.disabled:void 0,onClick:s,class:G(["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:Fe(()=>[Ft(i.$slots,"default")]),_:3},8,["type","disabled","class"]))}});async function cn(e){const o=await ns(e);if(!o.ok)throw new Error(`Request failed for ${e}`);return o.json()}async function As(e){if(!e)return null;try{return(await cn(`/prompts/${encodeURIComponent(e)}`)).prompt}catch{return null}}async function Ib(e){if(!e)return null;try{return await cn(`/tools/${encodeURIComponent(e)}`)}catch{return null}}function Es(e){const o=e?.env??e?.tenvs;return!o||typeof o!="object"?{}:o}function or(e){return Object.keys(Es(e)).filter(o=>o.trim().length>0)}function Ls(e){const o=e?.variables||[],a=new Map;for(const l of o){const s=l.name?.trim();s&&a.set(s,{...l,name:s})}for(const l of or(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 Ab(e){return e?!e.packed&&e.id===e.name:!1}function Rs(e,o){return o?.type?o.type:e.startsWith("provider:")?"provider":e.startsWith("mcp:")?"mcp":"unknown"}function Ms(e){return e.startsWith("provider:")?e.slice(9):e.startsWith("mcp:")?e.slice(4):e}function Ds(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 Fs(e,o,a={}){const l=o[e.name],s=l?.model;return{name:e.name,displayName:Ms(e.name),kind:Rs(e.name,l),description:l?.description||"",variables:l?.variables||[],model:s,resolvedModel:Ds(s,a),config:e}}function Eb(e,o,a,l){const s=o==="b"&&e.type!=="dual_ai",i=o==="a"?e.side_a_label||"Side A":e.side_b_label||(s?"Human":"Side B"),h=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,I=o==="a"?e.side_a_stop_tool:e.side_b_stop_tool,S=o==="a"?e.side_a_max_steps:e.side_b_max_steps,$=[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(E=>!!E),m=(a?.tools||[]).map(E=>Fs(E,l.toolsCatalog,l.models)),y=m.filter(E=>E.kind==="handoff"||E.kind==="subagent");return{id:o,agentName:e.name,label:i,mode:s?"human":"ai",promptName:h||null,stopOnResponse:u,stopTool:I,maxSteps:S,sessionStopTool:o==="a"?e.side_a_session_stop_tool:e.side_b_session_stop_tool,sessionTools:$,prompt:a,model:a&&l.models[a.model_id]||null,tools:m,hooks:(a?.hooks||[]).map(E=>l.hooks[E]||{id:E,hook:"unknown"}),variables:Ls(a),variableEnvNames:or(a),outgoingAgents:y}}function lr(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 Ps(e){const{limit:o=50,offset:a=0,agentId:l=null,userId:s=null,search:i=null,startDate:h=null,endDate:u=null,sort:I="activity",executingOnly:S=!1,includeTerminated:$=!0,autoFetch:m=!0}=e||{},y=T(()=>{const K=new URLSearchParams,P=typeof o=="number"?o:o.value,R=typeof a=="number"?a:a.value,W=typeof l=="string"?l:l?.value,q=typeof s=="string"?s:s?.value,we=typeof i=="string"?i:i?.value,Pe=typeof h=="number"?h:h?.value,te=typeof u=="number"?u:u?.value;K.append("limit",P.toString()),K.append("offset",R.toString()),W&&(K.append("agent_id",W),K.append("include_children","1")),q&&K.append("user_id",q),we&&K.append("search",we),Pe&&K.append("startDate",Pe.toString()),te&&K.append("endDate",te.toString());const qe=typeof I=="string"?I:I.value;return qe&&K.append("sort",qe),(typeof S=="boolean"?S:S.value)&&K.append("executing","1"),(typeof $=="boolean"?$:$.value)||K.append("terminated","0"),Qe(`/api/threads?${K.toString()}`)}),{data:E,error:C,isFetching:V,isFinished:H,execute:J,abort:oe}=Ot(y,{immediate:m,refetch:!0}).get().json(),X=T(()=>E.value?.threads||[]),ne=T(()=>E.value?.total||0),ue=T(()=>E.value?.hasMore||!1);return{threads:X,total:ne,hasMore:ue,error:C,isFetching:V,isFinished:H,refetch:J,abort:oe}}function Ns(){const{data:e,error:o,isFetching:a,execute:l}=Ot(Qe("/api/threads/owners"),{immediate:!0}).get().json();return{owners:T(()=>e.value?.owners||[]),error:o,isFetching:a,refetch:l}}function da(e){const o=T(()=>{const $=typeof e=="string"?e:e?.value;return $?Qe(`/api/threads/${$}`):""}),{data:a,error:l,isFetching:s,isFinished:i,execute:h,abort:u}=Ot(o,{immediate:!1,refetch:!0}).get().json();be(o,$=>{$?h():(u(),a.value=null)},{immediate:!0});const I=T(()=>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),S=T(()=>lr(l.value)?null:l.value);return{thread:I,error:S,isFetching:s,isFinished:i,refetch:h,abort:u}}const zs={key:0,class:"flex min-h-[500px] items-center justify-center"},js={class:"flex min-h-0 min-w-0 flex-1 flex-col"},Bs={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"},Os={class:"min-w-0 flex-1"},Vs={class:"edit-sections-query"},qs=et({__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,s=a,i=T(()=>l.mode==="edit"),h=T(()=>!!l.surfaceSection),u=T(()=>l.inline&&l.inlineFlatSections),I=T(()=>l.inline||h.value),S=T(()=>I.value?{config:oa}:{}),$=T(()=>i.value&&(l.editAgent?.id||l.editAgent?.name)||""),m=as(()=>$.value,{autoload:!1}),y=g(null),E=["basics","side-a","side-b","variables"],{activeTab:C,scrollToSection:V}=rr(y,E),H=T(()=>[{id:"basics",label:"Basics",icon:ea},{id:"side-a",label:"Side A",icon:yn},{id:"side-b",label:"Side B",icon:m.agentType.value==="ai_human"?ma:yn},{id:"variables",label:"Variables",icon:ga}]),J=g(!1),oe=g(!1),X=g(null);let ne=0;const ue=T(()=>JSON.stringify({name:m.name.value,title:m.title.value,agentType:m.agentType.value,exposeAsTool:m.exposeAsTool.value,toolDescription:m.toolDescription.value,maxSessionTurns:m.maxSessionTurns.value,sideALabel:m.sideALabel.value,sideAAgentPrompt:m.sideAAgentPrompt.value,sideAStopOnResponse:m.sideAStopOnResponse.value,sideAStopOnToolCall:m.sideAStopOnToolCall.value,sideAStopTool:m.sideAStopTool.value,sideAStopToolResponseProperty:m.sideAStopToolResponseProperty.value,sideAManualStopCondition:m.sideAManualStopCondition.value,sideAMaxSteps:m.sideAMaxSteps.value,sideAEndConversationTool:m.sideAEndConversationTool.value,sideBLabel:m.sideBLabel.value,sideBAgentPrompt:m.sideBAgentPrompt.value,sideBStopOnResponse:m.sideBStopOnResponse.value,sideBStopOnToolCall:m.sideBStopOnToolCall.value,sideBStopTool:m.sideBStopTool.value,sideBStopToolResponseProperty:m.sideBStopToolResponseProperty.value,sideBMaxSteps:m.sideBMaxSteps.value,sideBEndConversationTool:m.sideBEndConversationTool.value,agentEnv:m.agentEnv.value})),K=T(()=>oe.value?"Saved":l.inline&&i.value?"Save Agent Changes":i.value?"Update Agent":"Create Agent"),P=T(()=>l.saving||l.inline&&!J.value),R=T(()=>h.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 W(){oe.value=!1,X.value=null}function q(){Xe().then(()=>{J.value=!!m.formNode.value?.context?.state.dirty})}function we(_e){m.handleFormNode(_e),_e.on("commit",q),_e.on("reset",q),_e.on("message-added",q),_e.on("message-updated",q),_e.on("message-removed",q),q()}async function Pe(){const _e=++ne;await Xe();const me=m.formNode.value;if(!me||_e!==ne){J.value=!1;return}await me.settled,me.reset(me.value),await Xe(),_e===ne&&(J.value=!1)}async function te(){await Pe(),oe.value=!0,X.value=ue.value}async function qe(){W(),m.resetForm(),await Xe(),i.value&&$.value?await m.load():await m.loadPrerequisites(),await Pe()}async function z(){const _e=await m.prepareSubmit();_e&&s("save",_e)}function he(){m.resetForm(),W(),s("update:modelValue",!1)}async function ke(){W(),await qe()}function Ee(_e){return!l.surfaceSection||l.surfaceSection===_e}return be(()=>l.modelValue,async _e=>{_e?await qe():(ne+=1,m.resetForm(),W(),J.value=!1)},{immediate:!0}),be(()=>$.value,async(_e,me)=>{!l.modelValue||_e===me||await qe()}),be(ue,_e=>{oe.value&&X.value!==null&&_e!==X.value&&W()}),be(J,_e=>{_e&&W()}),o({formNode:m.formNode,markSaveSucceeded:te,markCurrentFormCleanAfterSettle:Pe,resetSaveSuccess:W}),(_e,me)=>{const Se=Wt("FormKit");return t(),j(Mt(e.inline||h.value?"div":ar),xr(R.value,br(e.inline||h.value?void 0:{"update:modelValue":Ie=>_e.$emit("update:modelValue",Ie)})),{default:Fe(()=>[(t(),j(Mt(I.value?c(sa):"div"),yr(kr(S.value)),{default:Fe(()=>[c(m).isLoading.value?(t(),r("div",zs,[...me[0]||(me[0]=[n("span",{class:"text-neutral-500"},"Loading agent data...",-1)])])):(t(),j(Se,{key:1,type:"form",id:"agent-form",actions:!1,disabled:e.readonly||e.saving,onSubmit:z,onNode:we,"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:Fe(()=>[n("div",js,[h.value?b("",!0):(t(),r("nav",Bs,[Ft(_e.$slots,"nav-leading",{},void 0,!0),n("div",Os,[B(c(sr),{tabs:H.value,"active-tab":c(C),"accent-active":e.inlineAccentTabs,orientation:"horizontal",onSelect:c(V)},null,8,["tabs","active-tab","accent-active","onSelect"])])])),n("div",{ref_key:"contentRef",ref:y,class:G(["min-h-0 flex-1 overflow-y-auto",h.value?"p-5":u.value?"bg-neutral-100 dark:bg-neutral-950":"bg-neutral-100 p-5 dark:bg-neutral-950"])},[n("div",Vs,[e.inlineGlobalNotice?(t(),r("div",{key:0,class:G(["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:G([u.value?"space-y-4 pb-5":"space-y-4","edit-sections-stack"])},[e.apiError?(t(),j(c(tr),{key:0,variant:"error"},{default:Fe(()=>[rt(p(e.apiError),1)]),_:1})):b("",!0),Ee("identity")?(t(),j(c(_n),{key:1,id:"section-basics",title:"Basics",icon:c(ea),flat:u.value},{default:Fe(()=>[B(rs,{form:c(m),"is-edit-mode":i.value},null,8,["form","is-edit-mode"])]),_:1},8,["icon","flat"])):b("",!0),Ee("side-a")?(t(),j(c(_n),{key:2,id:"section-side-a",title:"Side A (AI)",icon:c(yn),flat:u.value},{default:Fe(()=>[B(xa,{form:c(m),side:"a"},null,8,["form"])]),_:1},8,["icon","flat"])):b("",!0),Ee("side-b")?(t(),j(c(_n),{key:3,id:"section-side-b",title:c(m).agentType.value==="ai_human"?"Side B (Human)":"Side B (AI)",icon:c(m).agentType.value==="ai_human"?c(ma):c(yn),flat:u.value},{default:Fe(()=>[B(xa,{form:c(m),side:"b"},null,8,["form"])]),_:1},8,["title","icon","flat"])):b("",!0),Ee("variables")?(t(),j(c(_n),{key:4,id:"section-variables",title:"Variables",icon:c(ga),flat:u.value},{default:Fe(()=>[B(ss,{form:c(m),readonly:e.readonly},null,8,["form","readonly"])]),_:1},8,["icon","flat"])):b("",!0)],2)])],2)]),h.value?b("",!0):(t(),j(Ss,{key:0,"form-id":"agent-form","form-node":c(m).formNode.value,readonly:e.readonly,inline:e.inline,saving:e.saving,dirty:J.value,"save-succeeded":oe.value,"save-label":K.value,"save-disabled":P.value,"cancel-label":e.readonly?"Close":"Cancel",onCancel:he,onDiscard:ke},null,8,["form-node","readonly","inline","saving","dirty","save-succeeded","save-label","save-disabled","cancel-label"]))]),_:3},8,["disabled"]))]),_:3},16))]),_:3},16)}}}),Us=vt(qs,[["__scopeId","data-v-e47eeb63"]]);function ir(){const e=Qe("/api/agents"),{data:o,error:a,isFetching:l,isFinished:s,execute:i}=Ot(e,{immediate:!0}).get().json();return{agents:T(()=>o.value?.agents||[]),error:a,isFetching:l,isFinished:s,refetch:i}}function Ht(e,o,...a){}function ua(e){return!!e&&typeof e=="object"}function Xt(e){return typeof e=="string"?e:null}function ya(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Hs(e){if(ua(e)&&!(typeof e.name!="string"||typeof e.title!="string"||typeof e.type!="string"))return{name:e.name,title:e.title,type:e.type,description:Xt(e.description)??void 0,icon:Xt(e.icon)??void 0}}function Ws(e){return!ua(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:Xt(e.user_id),tags:Array.isArray(e.tags)?e.tags.filter(o=>typeof o=="string"):null,parent:Xt(e.parent),terminated:ya(e.terminated),created_at:e.created_at,last_activity_at:ya(e.last_activity_at),executing:e.executing===!0,last_message_preview:Xt(e.last_message_preview),agent:Hs(e.agent)}}function Ks(e){if(!ua(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:Xt(e.last_message_preview)}:{}}:null;if(e.type==="thread_created"||e.type==="thread_updated"){const o=Ws(e.thread);return o?{type:e.type,thread:o}:null}return null}function Js(e){const{autoConnect:o=!0,onEvent:a}=e||{},l=g(null),s=g(!1),i=g(null);let h=0,u=null,I=null,S=!0,$=null;const m=3e4,y=3e4,E=()=>{u&&(clearTimeout(u),u=null),I&&(clearInterval(I),I=null)},C=()=>{I&&clearInterval(I),I=setInterval(()=>{l.value&&l.value.readyState===WebSocket.OPEN&&l.value.send("ping")},y)},V=()=>{if(!S)return;const X=Math.min(1e3*Math.pow(2,h),m);h++,Ht(),u=setTimeout(()=>{S&&H()},X)},H=()=>{l.value&&($=null,l.value.close());const X=window.location.protocol==="https:"?"wss:":"ws:",ne=window.location.host,ue=la(`${X}//${ne}${Qe("/api/events")}`);try{const K=new WebSocket(ue);l.value=K,$=K,K.onopen=()=>{$===K&&(s.value=!0,i.value=null,h=0,C(),Ht("AgentBuilderEvents","WebSocket connected"))},K.onmessage=P=>{if($===K)try{if(typeof P.data=="string"&&P.data==="pong")return;const R=Ks(JSON.parse(P.data));R&&a&&a(R)}catch{i.value="Failed to parse event update"}},K.onerror=P=>{$===K&&(i.value="WebSocket connection error")},K.onclose=()=>{$===K&&(s.value=!1,E(),Ht("AgentBuilderEvents","WebSocket disconnected"),V())}}catch(K){i.value=K instanceof Error?K.message:"Failed to create WebSocket",V()}},J=()=>{S=!0,h=0,H()},oe=()=>{S=!1,E(),$=null,l.value&&(l.value.close(),l.value=null),s.value=!1,h=0};return o&&J(),Kt(()=>{oe()}),{wsConnected:s,wsError:i,connect:J,disconnect:oe}}const Gs={class:"relative inline-flex items-center"},Ys={key:0,class:"inline-block w-2 h-2 rounded-full bg-green-500 dark:bg-green-400"},Qs={key:1,class:"inline-block w-2 h-2 rounded-full bg-neutral-400 dark:bg-neutral-600"},Xs={key:0},Zs={key:1},dr=et({__name:"StatusDot",props:{connected:{type:Boolean},error:{type:Boolean}},setup(e){const o=g(!1),a=g(null);return(l,s)=>(t(),r("div",Gs,[n("span",{class:"p-0.5 cursor-default outline-none",tabindex:"-1",onMouseenter:s[0]||(s[0]=i=>o.value=!0),onMouseleave:s[1]||(s[1]=i=>o.value=!1)},[e.connected?(t(),r("span",Ys)):(t(),r("span",Qs))],32),B(hn,{"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:Fe(()=>[o.value?(t(),r("div",{key:0,ref_key:"popoverRef",ref:a,class:G(["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(),r("span",Xs,"Live - Connected")):(t(),r("span",Zs,"Offline"))],2)):b("",!0)]),_:1})]))}}),eo={class:"relative min-w-0"},to={class:"truncate flex-1 text-left"},no={key:0},ao=["onClick"],ro={class:"border-t border-neutral-200 dark:border-neutral-700"},so={class:"flex items-center justify-between"},oo={class:"space-y-4 date-filter-inputs"},lo=et({__name:"DateFilterDropdown",props:{startDate:{},endDate:{}},emits:["update:startDate","update:endDate"],setup(e,{emit:o}){const a=e,l=o,s=g(!1),i=g(!1),h=g(null),u=g(null),I=g(""),S=g(""),$=[{label:"All time",value:"all",getRange:()=>({startDate:null,endDate:null})},{label:"Today",value:"today",getRange:()=>{const P=new Date,R=new Date(P.getFullYear(),P.getMonth(),P.getDate());return{startDate:Math.floor(R.getTime()/1e3),endDate:null}}},{label:"Last 3 days",value:"3days",getRange:()=>{const P=new Date,R=new Date(P.getFullYear(),P.getMonth(),P.getDate()-2);return{startDate:Math.floor(R.getTime()/1e3),endDate:null}}},{label:"Last 7 days",value:"7days",getRange:()=>{const P=new Date,R=new Date(P.getFullYear(),P.getMonth(),P.getDate()-6);return{startDate:Math.floor(R.getTime()/1e3),endDate:null}}},{label:"Last 30 days",value:"30days",getRange:()=>{const P=new Date,R=new Date(P.getFullYear(),P.getMonth(),P.getDate()-29);return{startDate:Math.floor(R.getTime()/1e3),endDate:null}}}],m=T(()=>{if(!a.startDate&&!a.endDate)return"all";for(const P of $){const R=P.getRange();if(R.startDate===a.startDate&&R.endDate===a.endDate)return P.value}return"custom"}),y=T(()=>{if(!a.startDate&&!a.endDate)return"All time";const P=$.find(W=>W.value===m.value);if(P&&m.value!=="custom")return P.label;const R=W=>new Date(W*1e3).toLocaleDateString("en-US",{month:"short",day:"numeric"});return a.startDate&&a.endDate?`${R(a.startDate)} - ${R(a.endDate)}`:a.startDate?`From ${R(a.startDate)}`:a.endDate?`Until ${R(a.endDate)}`:"Custom"}),E=T(()=>a.startDate!==null||a.endDate!==null);function C(){if(!h.value||!u.value)return;const P=h.value.getBoundingClientRect();u.value.style.position="fixed",u.value.style.top=`${P.bottom+8}px`,u.value.style.left=`${P.left}px`;const R=i.value?280:180;u.value.style.minWidth=`${P.width}px`,u.value.style.maxWidth=`${Math.max(P.width,R)}px`,u.value.style.width="auto",u.value.style.margin="0"}function V(){s.value?H():(s.value=!0,Xe(()=>{if(u.value&&(u.value.setAttribute("popover","auto"),u.value.addEventListener("toggle",J),"showPopover"in u.value))try{u.value.showPopover()}catch{}C()}))}function H(){if(u.value){if("hidePopover"in u.value)try{u.value.hidePopover()}catch{}u.value.removeEventListener("toggle",J)}s.value=!1,i.value=!1}function J(P){P.target===u.value&&(s.value=P.newState==="open",s.value&&C())}function oe(P){const R=P.getRange();l("update:startDate",R.startDate),l("update:endDate",R.endDate),H()}function X(){const P=I.value?Math.floor(new Date(I.value).getTime()/1e3):null,R=S.value?Math.floor(new Date(S.value+"T23:59:59").getTime()/1e3):null;l("update:startDate",P),l("update:endDate",R),H()}function ne(P){P.stopPropagation(),l("update:startDate",null),l("update:endDate",null)}const ue=P=>{const R=P.target;u.value&&!u.value.contains(R)&&h.value&&!h.value.contains(R)&&H()},K=P=>{P.key==="Escape"&&s.value&&(H(),h.value?.focus())};return It(()=>{document.addEventListener("click",ue),document.addEventListener("keydown",K),window.addEventListener("resize",C),window.addEventListener("scroll",C,!0)}),Kt(()=>{document.removeEventListener("click",ue),document.removeEventListener("keydown",K),window.removeEventListener("resize",C),window.removeEventListener("scroll",C,!0)}),be(i,P=>{P&&(a.startDate&&(I.value=new Date(a.startDate*1e3).toISOString().split("T")[0]),a.endDate?S.value=new Date(a.endDate*1e3).toISOString().split("T")[0]:S.value=new Date().toISOString().split("T")[0]),Xe(C)}),(P,R)=>{const W=Wt("FormKit");return t(),r("div",eo,[n("button",{ref_key:"triggerRef",ref:h,type:"button",onClick:V,class:G(["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",[E.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(_r),{size:14,class:"shrink-0 text-zinc-400"}),n("span",to,p(y.value),1),E.value?(t(),j(c(Dt),{key:0,size:14,class:"shrink-0 text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-200",onClick:ne})):(t(),j(c(Tt),{key:1,size:14,class:G(["shrink-0 text-zinc-400",s.value?"rotate-180":""])},null,8,["class"]))],2),s.value?(t(),r("div",{key:0,ref_key:"popoverRef",ref:u,class:"dropdown-popover z-[9999]"},[B(c(nr),{"max-height":i.value?void 0:"max-h-48",shadow:!1},{default:Fe(()=>[i.value?(t(),r("div",{key:1,class:"p-2.5 space-y-2.5",onClick:R[4]||(R[4]=Ge(()=>{},["stop"]))},[n("div",so,[R[6]||(R[6]=n("span",{class:"text-xs font-medium"},"Custom range",-1)),n("button",{type:"button",onClick:R[1]||(R[1]=Ge(q=>i.value=!1,["stop"])),class:"text-[10px] text-neutral-500 hover:text-black dark:hover:text-white"}," ← Back ")]),n("div",oo,[B(W,{modelValue:I.value,"onUpdate:modelValue":R[2]||(R[2]=q=>I.value=q),type:"datepicker",label:"From","picker-only":"",popover:"",format:"MMM D, YYYY","value-format":"YYYY-MM-DD",sequence:["day"]},null,8,["modelValue"]),B(W,{modelValue:S.value,"onUpdate:modelValue":R[3]||(R[3]=q=>S.value=q),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:X,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(),r("div",no,[(t(),r(Ae,null,We($,q=>n("button",{key:q.value,type:"button",onClick:we=>oe(q),class:G(["w-full px-2.5 py-1.5 text-left text-xs agents-surface-hover transition-colors flex items-center gap-2",m.value===q.value?"agents-surface-selected agents-text-selected":""])},[n("span",{class:G(["w-1.5 h-1.5 rounded-full border border-accent-500",m.value===q.value?"bg-accent-500":""])},null,2),rt(" "+p(q.label),1)],10,ao)),64)),n("div",ro,[n("button",{type:"button",onClick:R[0]||(R[0]=Ge(q=>i.value=!0,["stop"])),class:G(["w-full px-2.5 py-1.5 text-left text-xs agents-surface-hover transition-colors flex items-center gap-2",m.value==="custom"?"agents-surface-selected agents-text-selected":""])},[n("span",{class:G(["w-1.5 h-1.5 rounded-full border border-accent-500",m.value==="custom"?"bg-accent-500":""])},null,2),R[5]||(R[5]=rt(" Custom range... ",-1))],2)])]))]),_:1},8,["max-height"])],512)):b("",!0)])}}}),io=vt(lo,[["__scopeId","data-v-753faf78"]]),Ln=et({__name:"TimeAgo",props:{timestamp:{}},setup(e){const o=e,a=xs(()=>o.timestamp);return(l,s)=>(t(),r("span",null,p(c(a)),1))}}),ta="name:",ka=["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"],uo=(e,o)=>o.created_at-e.created_at,vn=e=>e.last_activity_at??e.created_at,na=e=>e.executing===!0&&!e.terminated,co=e=>{const o=new Map,a=new Map(e.map(l=>[l.id,l]));for(const l of e){const s=vn(l);let i=l;const h=new Set;for(;i&&!h.has(i.id);){h.add(i.id);const u=o.get(i.id);(u===void 0||u<s)&&o.set(i.id,s),i=i.parent?a.get(i.parent):void 0}}return o},ur=e=>{const o=new Set,a=new Map(e.map(l=>[l.id,l]));for(const l of e){if(!na(l))continue;let s=l;const i=new Set;for(;s&&!i.has(s.id);)i.add(s.id),o.add(s.id),s=s.parent?a.get(s.parent):void 0}return o},fo=(e,o,a)=>{const l=s=>o.get(s.id)??vn(s);return(s,i)=>{const h=a.has(s.id),u=a.has(i.id);if(h!==u)return h?-1:1;if(e==="created")return i.created_at-s.created_at;if(e==="oldest")return s.created_at-i.created_at;const I=l(i)-l(s);return I!==0?I:i.created_at-s.created_at}},Cn=(e,o)=>`${e}::${o}`,cr=e=>{const o=e.tags.find(l=>l.startsWith(ta));if(!o)return null;const a=o.slice(ta.length).trim();return a.length>0?a:null},On=e=>{const o=e.last_message_preview?.trim();return o||null},po=e=>vn(e)>e.created_at,Et=e=>e.tags.filter(o=>!o.startsWith(ta)),vo=e=>cr(e)||e.agent.title||e.agent.name,ho=e=>e.id.startsWith("__draft_")?"--------":e.id.slice(0,8),Vn=e=>cr(e)?e.agent.title||e.agent.name:null,_a=e=>Array.from({length:Math.min(Math.max(e,0),6)},(o,a)=>12+a*8),wa=e=>ka[e%ka.length],$a=e=>({left:`${e}px`}),mo=(e,o,a="activity")=>{if(e.length===0)return[];const l=co(e),s=ur(e),i=fo(a,l,s),h=new Map(e.map(C=>[C.id,C])),u=new Map,I=[];for(const C of e){const V=C.parent;if(V&&h.has(V)){const H=u.get(V)??[];H.push(C),u.set(V,H);continue}I.push(C)}I.sort(i);for(const C of u.values())C.sort(i);const S=[],$=new Set,m=C=>{if($.has(C.id))return;$.add(C.id);const V=u.get(C.id);if(V)for(const H of V)m(H)},y=(C,V,H)=>{if($.has(C.id))return;$.add(C.id),S.push({kind:"thread",thread:C,depth:V,isNested:V>0,clusterId:H});const J=u.get(C.id);if(!J)return;const oe=new Map;for(const X of J){const ne=X.agent_id||X.agent?.name||X.id,ue=oe.get(ne);ue?ue.push(X):oe.set(ne,[X])}for(const[X,ne]of oe.entries()){if(ne.length>1){const ue=Cn(C.id,X),K=o(ue);if(S.push({kind:"directory",key:ue,depth:V+1,label:ne[0]?.agent?.title||ne[0]?.agent?.name||X,count:ne.length,open:K,clusterId:H,working:ne.some(P=>s.has(P.id))}),!K){for(const P of ne)m(P);continue}for(const P of ne)y(P,V+2,H);continue}y(ne[0],V+1,H)}};for(const C of I)y(C,0,C.id);const E=e.filter(C=>!$.has(C.id)).sort(i);for(const C of E)y(C,C.parent?1:0,C.parent??C.id);return S},go=["id","onClick"],xo=["title"],bo=["title"],yo={key:0,class:"text-emerald-600 dark:text-emerald-400"},ko=["title"],_o={key:2,class:"space-y-0.5"},wo={key:0,class:"flex flex-wrap gap-1 min-w-0"},$o={key:3,class:"flex items-center gap-1"},Co={key:0,class:"text-[10px] text-neutral-400"},So=["onClick"],To={class:"flex items-center gap-2"},Io={key:0,class:"thread-working-dot shrink-0",title:"A thread in this group is executing","aria-label":"Working"},Ao=et({__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,s=i=>a.workingClusterIds.has(i);return(i,h)=>(t(!0),r(Ae,null,We(e.rows,(u,I)=>(t(),r(Ae,{key:u.kind==="thread"?u.thread.id:u.key},[u.kind==="thread"?(t(),r("button",{key:0,id:`thread-${u.thread.id}`,class:G(["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(I)?"mt-1":"",e.hasRowBottomBorder(I)&&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:gt(u.depth>0?{paddingLeft:`${12+Math.min(u.depth,6)*8}px`}:void 0),onClick:S=>l("selectThread",u.thread.id)},[(t(!0),r(Ae,null,We(c(_a)(u.depth),(S,$)=>(t(),r("span",{key:`thread-line-${$}`,class:G(["pointer-events-none absolute inset-y-1 w-px rounded-full",c(wa)($)]),style:gt(c($a)(S)),"aria-hidden":"true"},null,6))),128)),n("div",{class:G(["flex items-center gap-2",!u.isNested||c(Et)(u.thread).length>0||c(Vn)(u.thread)?"mb-0.5":""])},[s(u.thread.id)?(t(),r("span",{key:0,class:"thread-working-dot shrink-0",title:u.thread.executing?"Executing now":"Subagent executing","aria-label":"Working"},null,8,xo)):u.thread.terminated?(t(),j(c(Ha),{key:1,size:12,class:"shrink-0 text-neutral-500 dark:text-neutral-400"})):b("",!0),n("span",{class:G(["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":""]])},p(c(vo)(u.thread)),3),n("span",{class:G(["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(vn)(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`},[s(u.thread.id)?(t(),r("span",yo," working ")):(t(),j(Ln,{key:1,timestamp:c(vn)(u.thread)*1e6},null,8,["timestamp"]))],10,bo)],2),c(On)(u.thread)?(t(),r("div",{key:0,class:G(["mb-0.5 truncate text-[11px]",e.selectedThreadId===u.thread.id?"agents-text-selected":"text-neutral-600 dark:text-neutral-300"]),title:c(On)(u.thread)||""},p(c(On)(u.thread)),11,ko)):b("",!0),c(Vn)(u.thread)?(t(),r("div",{key:1,class:G(["mb-0.5 truncate text-[10px]",e.selectedThreadId===u.thread.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},p(c(Vn)(u.thread)),3)):b("",!0),u.isNested?c(Et)(u.thread).length>0?(t(),r("div",$o,[(t(!0),r(Ae,null,We(c(Et)(u.thread).slice(0,3),S=>(t(),r("span",{key:S,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"},p(S),1))),128)),c(Et)(u.thread).length>3?(t(),r("span",Co," +"+p(c(Et)(u.thread).length-3),1)):b("",!0)])):b("",!0):(t(),r("div",_o,[n("span",{class:G(["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"])},p(c(ho)(u.thread)),3),c(Et)(u.thread).length>0?(t(),r("div",wo,[(t(!0),r(Ae,null,We(c(Et)(u.thread).slice(0,3),S=>(t(),r("span",{key:S,class:G(["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"])},p(S),3))),128)),c(Et)(u.thread).length>3?(t(),r("span",{key:0,class:G(["text-[10px]",e.selectedThreadId===u.thread.id?"agents-text-selected-muted":"text-neutral-400"])}," +"+p(c(Et)(u.thread).length-3),3)):b("",!0)])):b("",!0)]))],14,go)):(t(),r("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:gt({paddingLeft:`${12+Math.min(u.depth,6)*8}px`}),onClick:S=>l("toggleDirectory",u.key)},[(t(!0),r(Ae,null,We(c(_a)(u.depth),(S,$)=>(t(),r("span",{key:`directory-line-${$}`,class:G(["pointer-events-none absolute inset-y-1 w-px rounded-full",c(wa)($)]),style:gt(c($a)(S)),"aria-hidden":"true"},null,6))),128)),n("div",To,[u.working?(t(),r("span",Io)):(t(),j(c(Wa),{key:1,size:13,class:"text-neutral-500 dark:text-neutral-400 shrink-0"})),n("span",{class:G(["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":""])},p(u.label)+" ("+p(u.count)+") ",3),u.open?(t(),j(c(Tt),{key:2,size:14,class:"text-neutral-500 dark:text-neutral-400 shrink-0"})):(t(),j(c(jt),{key:3,size:14,class:"text-neutral-500 dark:text-neutral-400 shrink-0"}))])],12,So))],64))),128))}}),Eo=vt(Ao,[["__scopeId","data-v-ce56afa5"]]),Lo={class:"flex flex-col flex-1 min-h-0 overflow-visible"},Ro={class:"px-3 border-b border-neutral-300 dark:border-neutral-700 h-12 flex items-center shrink-0"},Mo={class:"flex items-center w-full min-w-0"},Do={key:0,class:"shrink-0 text-xs font-mono text-neutral-500 dark:text-neutral-400"},Fo=["title"],Po={class:"ml-auto flex shrink-0 items-center gap-1"},No=["title","aria-label","aria-pressed"],zo={key:0,class:"px-3 py-2 border-b border-neutral-200 dark:border-neutral-800 shrink-0 space-y-2"},jo={class:"relative"},Bo={class:"flex items-center gap-2 w-full"},Oo={class:"relative flex-1 min-w-0"},Vo=["value"],qo=["aria-pressed"],Uo=["aria-pressed"],Ho={key:0},Wo={class:"flex items-center gap-2 w-full"},Ko={key:0,class:"flex-1 min-w-0"},Jo={key:0,class:"p-4 flex justify-center"},Go={key:1,class:"p-4 text-red-600 dark:text-red-400"},Yo={key:2,class:"text-neutral-500 dark:text-neutral-400 text-center py-12"},Qo={key:1,class:"text-base"},Xo={key:3,class:"px-2 py-2"},Zo={key:0,class:"p-3 flex justify-center"},el={key:1,class:"p-3 text-center text-[10px] text-neutral-400 dark:text-neutral-500"},Ca="agents.threads.sort",tl=50,Sa=1800,nl=et({__name:"ThreadListPane",props:{selectedThreadId:{},optimisticThread:{},agentId:{},showCollapseButton:{type:Boolean}},emits:["selectThread","collapse","createThread","threadsLoaded"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g(""),h=g(null),u=g(!1),I=g(null),S=g(null),$=g(null),m=g(!1),y=g(!0),E=g(null),C=[{value:"activity",label:"Recent activity"},{value:"created",label:"Newest"},{value:"oldest",label:"Oldest"}],H=g((()=>{try{const M=localStorage.getItem(Ca);if(C.some(N=>N.value===M))return M}catch{}return"activity"})());be(H,M=>{try{localStorage.setItem(Ca,M)}catch{}});const{owners:J}=Ns(),oe=T(()=>J.value.filter(M=>M.user_id).map(M=>({value:M.user_id,label:`${M.display_name||M.username||M.email||M.user_id} (${M.thread_count})`}))),X=T(()=>oe.value.length>1),ne=g(!1),ue=T(()=>l.agentId!=null);be(()=>l.agentId,M=>{M!=null&&(S.value=M),ne.value=!1},{immediate:!0});const K=g(null),{agents:P,isFetching:R}=ir(),W=T(()=>P.value.map(M=>({value:M.name,label:M.title||M.name}))),q=g(0),we=g([]),Pe=g(!1),te=g(!1),qe=Sr(M=>{h.value=M||null},300);be(i,M=>{qe(M)});const z=T(()=>{let M=0;return h.value&&M++,S.value&&!ue.value&&M++,$.value&&M++,m.value&&M++,y.value||M++,(E.value||K.value)&&M++,M});function he(){i.value="",h.value=null,ue.value||(S.value=null),$.value=null,m.value=!1,y.value=!0,E.value=null,K.value=null}async function ke(){u.value=!0,await Xe(),I.value?.focus(),I.value?.select()}function Ee(){he(),u.value=!1}function _e(){u.value?Ee():ke()}const{threads:me,hasMore:Se,isFetching:Ie,isFinished:re,error:Z,refetch:Q}=Ps({limit:tl,offset:q,search:h,agentId:S,userId:$,startDate:E,endDate:K,sort:H,executingOnly:m,includeTerminated:y}),ce=g([]),fe=g(new Set);be([h,S,$,m,y,H,E,K],()=>{q.value=0,we.value=[],ce.value=[],fe.value.clear(),Pe.value=!1,te.value=!1}),be(me,M=>{if(q.value===0)we.value=[...M];else{const N=new Set(we.value.map(de=>de.id)),Ne=M.filter(de=>!N.has(de.id));we.value=[...we.value,...Ne],te.value=!0}Pe.value=!1});const De=g({}),Ye=g({}),F=g({}),$e=new Set,ye=M=>De.value[M]??!1,Le=M=>{De.value[M]=!ye(M)},Ve=M=>{Ye.value[M]=!0;const N=setTimeout(()=>{delete Ye.value[M],$e.delete(N)},Sa);$e.add(N)},He=M=>{F.value[M]=!0;const N=setTimeout(()=>{delete F.value[M],$e.delete(N)},Sa);$e.add(N)};Kt(()=>{$e.forEach(M=>clearTimeout(M)),$e.clear()});const le=M=>Ye.value[M]===!0,ie=M=>F.value[M]===!0,ae=M=>{if(S.value&&M.agent_id!==S.value&&M.origin_agent_id!==S.value&&!M.parent||$.value&&M.user_id!==$.value||m.value&&!na(M)&&!M.parent||!y.value&&M.terminated||E.value&&M.created_at<E.value||K.value&&M.created_at>K.value)return!1;if(h.value){const N=h.value.toLowerCase(),Ne=M.id.toLowerCase().includes(N),de=M.tags.some(Be=>Be.toLowerCase().includes(N));if(!Ne&&!de)return!1}return!0},Re=T(()=>{const M=we.value.filter(Be=>!fe.value.has(Be.id)),N=new Set(M.map(Be=>Be.id)),de=[...ce.value.filter(Be=>!N.has(Be.id)&&!fe.value.has(Be.id)),...M];return l.optimisticThread&&!de.some(Be=>Be.id===l.optimisticThread?.id)&&de.unshift(l.optimisticThread),de.sort(uo)}),Ke=T(()=>Re.value.filter(M=>!M.parent).length),U=T(()=>ur(Re.value)),Ce=T(()=>Re.value.filter(na).length),se=T(()=>mo(Re.value,ye,H.value)),Ue=M=>{const N=se.value[M],Ne=se.value[M+1];return N?Ne?N.clusterId!==Ne.clusterId:!0:!1},tt=M=>{const N=se.value[M],Ne=se.value[M-1];if(!N||!Ne||N.clusterId!==Ne.clusterId)return!1;const de=N.kind==="directory"||N.kind==="thread"&&N.isNested,Be=Ne.kind==="thread"&&!Ne.isNested;return de&&Be},nt=T(()=>{const M={};for(const N of se.value)if(!M[N.clusterId]){if(N.kind==="directory"){M[N.clusterId]=!0;continue}if(N.kind==="thread"&&N.isNested){M[N.clusterId]=!0;continue}M[N.clusterId]=!1}return M}),ge=g(null);function O(){Pe.value||Ie.value||!Se.value||(Pe.value=!0,q.value=we.value.length)}const{arrivedState:ee}=wr(ge,{offset:{bottom:100}});be(()=>ee.bottom,M=>{M&&Se.value&&!Ie.value&&!Pe.value&&O()});const Oe=M=>{const N=P.value.find(de=>de.name===M.agent_name),Ne=M.agent;return{id:M.id,agent_id:M.agent_name,origin_agent_id:M.origin_agent_name??M.agent_name,user_id:M.user_id,tags:M.tags||[],parent:M.parent??null,terminated:M.terminated??null,created_at:M.created_at,last_activity_at:M.last_activity_at??M.created_at,executing:M.executing===!0,last_message_preview:M.last_message_preview??null,agent:{name:M.agent_name,title:Ne?.title||N?.title,type:Ne?.type||N?.type||"ai_human"}}},pe=async M=>{if(M.type==="thread_created"){const N=Oe(M.thread);if(!ae(N))return;if(N.parent)if(Re.value.filter(de=>de.parent===N.parent&&de.agent_id===N.agent_id).length+1>1){const de=Cn(N.parent,N.agent_id);He(de),ye(de)&&Ve(N.id)}else Ve(N.id);ce.value.unshift(N)}else if(M.type==="thread_updated"){const N=Oe(M.thread),Ne=Re.value.find(d=>d.id===N.id);if(!ae(N)){ce.value=ce.value.filter(d=>d.id!==N.id),we.value=we.value.filter(d=>d.id!==N.id);return}fe.value.delete(N.id);const de=ce.value.findIndex(d=>d.id===N.id);de>=0&&(ce.value[de]=N);const Be=we.value.findIndex(d=>d.id===N.id);if(Be>=0?we.value[Be]=N:de===-1&&ce.value.unshift(N),!!N.terminated&&!Ne?.terminated)if(N.parent)if((Re.value.filter(f=>f.parent===N.parent&&f.agent_id===N.agent_id).length||1)>1){const f=Cn(N.parent,N.agent_id);He(f),ye(f)&&Ve(N.id)}else Ve(N.id);else Ve(N.id)}else if(M.type==="thread_activity"){const N=Ne=>{const de=Ne.findIndex(Be=>Be.id===M.threadId);de!==-1&&(Ne[de]={...Ne[de],last_activity_at:M.last_activity_at,executing:M.executing,...M.last_message_preview!==void 0?{last_message_preview:M.last_message_preview}:{}})};N(we.value),N(ce.value)}else M.type==="thread_deleted"&&(fe.value.add(M.threadId),ce.value=ce.value.filter(N=>N.id!==M.threadId))},{wsConnected:D,wsError:xe}=Js({onEvent:pe});be(()=>q.value,M=>{M===0&&(ce.value=[])}),be(()=>[l.selectedThreadId,Re.value],([M,N])=>{if(!M||N.length===0)return;const Ne=new Map(N.map(Be=>[Be.id,Be]));let de=Ne.get(M);for(;de&&de.parent;){const Be=Cn(de.parent,de.agent_id);De.value[Be]=!0,de=Ne.get(de.parent)}},{immediate:!0}),be(()=>({rows:se.value,finished:re.value}),({rows:M,finished:N})=>{const Ne=M.find(de=>de.kind==="thread");N&&!ne.value&&(ne.value=!0,s("threadsLoaded",Ne?.thread.id??null,Re.value.map(de=>de.id)))},{immediate:!0}),o({refetch:Q});const je=M=>{s("selectThread",M)};return(M,N)=>{const Ne=Wt("FormKit");return t(),r("div",Lo,[n("div",Ro,[n("div",Mo,[n("button",{onClick:N[0]||(N[0]=Ge(de=>s("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($r),{size:18,class:"shrink-0"}),N[12]||(N[12]=n("h2",{class:"truncate text-base font-bold"},"Threads",-1)),!c(Ie)&&Ke.value>0?(t(),r("span",Do," ("+p(Ke.value)+") ",1)):b("",!0),!c(D)||c(xe)?(t(),j(dr,{key:1,class:"shrink-0",connected:c(D),error:c(xe)},null,8,["connected","error"])):b("",!0)]),Ce.value>0?(t(),r("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:`${Ce.value} thread${Ce.value===1?"":"s"} executing right now`},[N[13]||(N[13]=n("span",{class:"thread-working-dot shrink-0","aria-hidden":"true"},null,-1)),n("span",null,p(Ce.value),1)],8,Fo)):b("",!0),n("div",Po,[n("button",{type:"button",class:G(["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:Ge(_e,["stop"])},[B(c(Yn),{size:16})],10,No),n("button",{onClick:N[1]||(N[1]=de=>s("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(Ka),{size:16})]),e.showCollapseButton!==!1?(t(),r("button",{key:0,onClick:N[2]||(N[2]=de=>s("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(Ja),{size:17})])):b("",!0)])])]),u.value||z.value>0?(t(),r("div",zo,[n("div",jo,[B(c(Yn),{size:14,class:"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-neutral-400"}),dt(n("input",{ref_key:"threadSearchInputRef",ref:I,"onUpdate:modelValue":N[3]||(N[3]=de=>i.value=de),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),[[Sn,i.value]]),i.value?(t(),r("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:N[4]||(N[4]=de=>{i.value="",h.value=null,ke()})},[B(c(Dt),{size:13})])):b("",!0)]),n("div",Bo,[n("label",Oo,[B(c(Cr),{size:12,class:"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-neutral-400"}),dt(n("select",{"onUpdate:modelValue":N[5]||(N[5]=de=>H.value=de),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(),r(Ae,null,We(C,de=>n("option",{key:de.value,value:de.value},p(de.label),9,Vo)),64))],512),[[Ga,H.value]])]),n("button",{type:"button",class:G(["h-8 shrink-0 rounded-md border px-2 text-[11px] transition-colors",m.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":m.value,title:"Show only threads that are executing right now",onClick:N[6]||(N[6]=de=>m.value=!m.value)}," Working ",10,qo),n("button",{type:"button",class:G(["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:N[7]||(N[7]=de=>y.value=!y.value)}," Open ",10,Uo)]),X.value?(t(),r("div",Ho,[B(Ne,{type:"selectSearch",size:"sm","active-highlight":"",value:$.value||"",options:oe.value,placeholder:"All owners","search-placeholder":"Search owners...",onInput:N[8]||(N[8]=de=>$.value=de||null)},null,8,["value","options"])])):b("",!0),n("div",Wo,[ue.value?b("",!0):(t(),r("div",Ko,[B(Ne,{type:"selectSearch",size:"sm","active-highlight":"",value:S.value||"",options:W.value,placeholder:"All agents","search-placeholder":"Search agents...",loading:c(R),onInput:N[9]||(N[9]=de=>S.value=de||null)},null,8,["value","options","loading"])])),B(io,{startDate:E.value,"onUpdate:startDate":N[10]||(N[10]=de=>E.value=de),endDate:K.value,"onUpdate:endDate":N[11]||(N[11]=de=>K.value=de),class:G(ue.value?"w-full":"flex-1 min-w-0")},null,8,["startDate","endDate","class"]),z.value>0?(t(),r("button",{key:1,onClick:he,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(),r("button",{key:2,onClick:Ee,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:ge,class:"flex-1 overflow-y-auto text-xs min-h-0"},[c(Ie)&&we.value.length===0?(t(),r("div",Jo,[B(Ze)])):c(Z)?(t(),r("div",Go," Error: "+p(c(Z)),1)):se.value.length===0?(t(),r("div",Yo,[z.value>0?(t(),r(Ae,{key:0},[N[14]||(N[14]=n("p",{class:"text-base mb-2"},"No matching threads",-1)),n("button",{onClick:he,type:"button",class:"text-xs text-accent-600 dark:text-accent-400 hover:underline"}," Clear filters ")],64)):(t(),r("p",Qo,"No threads found"))])):(t(),r("div",Xo,[B(Eo,{rows:se.value,"selected-thread-id":e.selectedThreadId,"working-cluster-ids":U.value,"cluster-has-nested-rows":nt.value,"is-thread-flashing":le,"is-directory-flashing":ie,"has-row-top-gap":tt,"has-row-bottom-border":Ue,onSelectThread:je,onToggleDirectory:Le},null,8,["rows","selected-thread-id","working-cluster-ids","cluster-has-nested-rows"]),Pe.value||c(Ie)&&we.value.length>0?(t(),r("div",Zo,[B(Ze)])):te.value&&!c(Se)&&se.value.length>0?(t(),r("div",el," All "+p(Ke.value)+" threads loaded ",1)):b("",!0)]))],512)])}}}),Lb=vt(nl,[["__scopeId","data-v-b6173fe7"]]);function aa(e){return!!e&&typeof e=="object"}function al(e){if(aa(e)&&!Array.isArray(e))return e;if(typeof e=="string")try{const o=JSON.parse(e);return aa(o)&&!Array.isArray(o)?o:void 0}catch{return}}function rl(e){const o=g(null),a=g(!1),l=g(null);let s=null;try{s=os()}catch{}const i=s?.messages??g([]),h=T(()=>s?.groupedMessages?.value?s.groupedMessages.value:s?.workblocks?.value?s.workblocks.value:i.value),u=T(()=>s?.status.value==="connected"),I=g(null);s?.loading??g(!1);const S=T(()=>i.value.some(z=>z.status==="pending"));function $(z){if(!o.value?.agent)return null;const he=o.value.agent,ke=z==="assistant"?"A":"B";return ke==="A"&&he.side_a_label?he.side_a_label:ke==="B"&&he.side_b_label?he.side_b_label:null}function m(z){const he=z.path??"",ke=z.name??he.split("/").pop()??"attachment";return{id:z.id||`att-${he||ke||Math.random().toString(36).slice(2)}`,type:"file",path:he,name:ke,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(m):void 0;try{const he=JSON.parse(z);return Array.isArray(he)&&he.length>0?he.filter(aa).map(m):void 0}catch{return}}}function E(z,he){const ke=[];z.reasoning_content&&ke.push({id:`${z.id}-reasoning`,type:"reasoning",content:z.reasoning_content,created_at:z.created_at});const Ee=new Map;for(const Se of z.workItems)Se.type==="tool_result"&&Se.tool_call_id&&Ee.set(Se.tool_call_id,Se);for(const Se of z.workItems){if(Se.type==="content"){if(!Se.content)continue;ke.push({id:Se.id,type:"content",content:Se.content,created_at:Se.created_at??z.created_at});continue}if(Se.type!=="tool_call")continue;const Ie=Se.tool_call_id||Se.id,re=Ee.get(Ie);let Z="pending";if(re){const Q=(re.content||"").toLowerCase(),ce=Q.includes("failed")||Q.includes("error"),fe=Q.length<500;Z=re.status==="error"||ce&&fe?"failed":"success"}ke.push({id:Se.id,type:"tool_call",content:Se.name||"",created_at:z.created_at,tool_name:Se.name,tool_call_id:Ie,tool_arguments:Se.content||void 0,response:re?.content||null,response_status:Z,response_log_id:null,log_id:null})}const _e=ke.some(Se=>Se.type==="tool_call"&&Se.response_status==="pending"),me=z.status!=="pending"&&!_e;return{type:"work",id:z.id,role:"assistant",items:ke,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??(me?z.updated_at??z.created_at:null),isComplete:me,sideLabel:$("assistant"),status:z.status}}function C(z){return z==="assistant"?"assistant":"user"}function V(z){for(let he=z.length-1;he>=0;he--){const ke=(z[he].content||"").trim();if(ke.length>0)return ke}return""}function H(z){const he=new Set,ke=[];for(const Ee of z){const _e=y(Ee.attachments);if(_e?.length)for(const me of _e)he.has(me.path)||(he.add(me.path),ke.push(me))}return ke.length>0?ke:void 0}function J(z){if(!z)return!1;if(z.tool_status==="error"||z.status==="failed")return!0;const he=(z.content||"").toLowerCase();return he?he.includes("failed to execute tool")||he.includes("has reported a failure")||he.includes("execution stopped before completion"):!1}function oe(z){const he=z.messages||[],ke=he[he.length-1],Ee=ke?C(ke.role):"assistant",_e=ke?.log_id??null,me=(z.subagent_status||"").toLowerCase(),Se=J(ke)||me.includes("error")||me.includes("failed"),Ie=V(he),re=H(he),Z=he.filter(Q=>{const ce=y(Q.attachments);return!!Q.content||!!Q.status||!!(ce&&ce.length>0)}).map(Q=>({id:Q.id,role:Q.role,content:Q.content||"",created_at:Q.created_at,silent:Q.silent,attachments:y(Q.attachments)}));return{type:"subagent",id:z.id,role:Ee,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:Se,subagentResumable:z.subagent_resumable??null,subagentBlocking:z.subagent_blocking??null,messages:Z,messageCount:he.length,latestContent:Ie,attachments:re,log_id:_e,sideLabel:$(Ee),silent:he.length>0&&he.every(Q=>!!Q.silent)}}function X(z){const he=(z.subagents||[]).map(Ee=>oe(Ee)),ke=he.reduce((Ee,_e)=>Ee?_e.updated_at>Ee.updated_at?_e:Ee:_e,null);return{type:"subagent_group",id:z.id,role:ke?.role??"assistant",created_at:z.created_at,updated_at:z.updated_at,subagents:he,count:he.length,log_id:ke?.log_id??null,sideLabel:ke?.sideLabel??$("assistant"),silent:he.every(Ee=>!!Ee.silent)}}function ne(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 ue=T(()=>{const z=[],ke=h.value.filter(_e=>(_e.depth??0)===0);let Ee=[];for(let _e=0;_e<ke.length;_e++){const me=ke[_e];if(z[z.length-1]?.role,"type"in me&&me.type==="workblock"){const ce=E(me);z.push(ce),me.attachments&&me.attachments.length>0&&Ee.push(...me.attachments.map(m));continue}if("type"in me&&me.type==="subagent_block"){Ee=[],z.push(oe(me));continue}if("type"in me&&me.type==="subagent_group_block"){Ee=[],z.push(X(me));continue}if("type"in me&&me.type==="status"){Ee=[],z.push(ne(me));continue}const Ie=me,re=Ie.role;if(Ie.role==="tool")continue;const Z=y(Ie.attachments);let Q;if((Ee.length>0||Z)&&(Q=[...Ee,...Z||[]],Ee=[]),Ie.content||re==="system"||Ie.status==="pending"||Q?.length){const ce={type:"text",id:Ie.id,role:re,content:Ie.content||"",attachments:Q?.length?Q:void 0,created_at:Ie.created_at,log_id:Ie.log_id||null,sideLabel:$(re),isOptimistic:Ie.isOptimistic,status:Ie.status,silent:Ie.silent,metadata:al(Ie.metadata)};z.push(ce)}}return z});async function K(){if(!e.value){o.value=null;return}try{const z=await fetch(Qe(`/api/threads/${e.value}`));z.ok&&(o.value=await z.json())}catch{o.value=null}}async function P(z){if(e.value){if(s?.deleteMessage){await s.deleteMessage(z);return}try{if(!(await fetch(Qe(`/api/threads/${e.value}/messages/${z}`),{method:"DELETE"})).ok)throw new Error("Failed to delete message")}catch(he){throw he}}}async function R(z,he){if(e.value)try{if(!(await fetch(Qe(`/api/threads/${e.value}/messages/${z}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:he})})).ok)throw new Error("Failed to update message")}catch(ke){throw ke}}be(e,async z=>{z?(a.value=!0,await K(),a.value=!1):o.value=null},{immediate:!0});const W=s?.sendMessage,q=s?.stopExecution,we=s?.attachments??g([]),Pe=s?.addAttachment??(()=>{}),te=s?.removeAttachment??(()=>{}),qe=s?.clearAttachments??(()=>{});return{messages:ue,threadInfo:o,isFetching:a,error:l,wsConnected:u,wsError:I,isExecuting:S,sendMessage:W,stopThread:q,attachments:we,addAttachment:Pe,removeAttachment:te,clearAttachments:qe,deleteMessageById:P,updateMessageContent:R}}const qn="__shiki_highlighter__";let wn=null;async function sl(){return typeof window<"u"&&window[qn]?window[qn]:wn||(wn=Promise.all([ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.d),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.e),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.f),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.g),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.i),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.k),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.l),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.m),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.n),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.s),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.o),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.p),__vite__mapDeps([0,1])),ft(()=>import("./vue-Dw7WLX4c.js").then(e=>e.bh),__vite__mapDeps([2,3,1,0])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.y),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.q),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.r),__vite__mapDeps([0,1]))]).then(async([{createHighlighterCore:e},{createJavaScriptRegexEngine:o},a,l,s,i,h,u,I,S,$,m,y,E,C,V])=>{const H=await e({themes:[C.default,V.default],langs:[a.default,l.default,s.default,i.default,h.default,u.default,I.default,S.default,$.default,m.default,y.default,E.default],engine:o()});return typeof window<"u"&&(window[qn]=H),H}),wn)}const ol={class:"code-block"},ll={key:0,class:"text-xs text-neutral-500 p-2"},il=["innerHTML"],zt=et({__name:"CodeBlock",props:{code:{},language:{}},setup(e){const o=e,a=g(""),l=g(!0),s={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"]),h=$=>{const m=$?.trim().toLowerCase()||"text";return s[m]??m},u=$=>$.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),I=$=>`<pre class="shiki shiki-text"><code>${u($)}</code></pre>`,S=async()=>{const $=o.code??"";if(!$){a.value='<pre class="shiki"><code></code></pre>',l.value=!1;return}try{const m=await sl(),y=h(o.language);i.has(y)?a.value=m.codeToHtml($,{lang:y,themes:{light:"github-light",dark:"github-dark"}}):a.value=I($)}catch{a.value=I($)}finally{l.value=!1}};return It(()=>{S()}),be(()=>o.code,()=>{S()}),be(()=>o.language,()=>{S()}),($,m)=>(t(),r("div",ol,[l.value?(t(),r("div",ll,"Loading...")):(t(),r("div",{key:1,innerHTML:a.value,class:"code-content"},null,8,il))]))}}),dl={key:0,class:"absolute inset-0 flex items-center justify-center bg-neutral-100 dark:bg-neutral-800"},ul={key:1,class:"absolute inset-0 flex items-center justify-center bg-neutral-100 dark:bg-neutral-800 text-neutral-400"},cl=["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]"},Un=et({__name:"FileAttachment",props:{attachment:{},threadId:{},showRemove:{type:Boolean}},emits:["remove"],setup(e,{emit:o}){const a=Tr(),l=Ir(),s=e,i=o,h=g(!0),u=g(!1),I=T(()=>s.attachment.mimeType.startsWith("image/")),S=T(()=>!!s.attachment.thumbnailBase64),$=T(()=>{if(!s.threadId||!s.attachment.path)return"";const H=s.attachment.path.startsWith("/")?s.attachment.path.slice(1):s.attachment.path;return Qe(`/api/threads/${s.threadId}/fs/${H}`)}),m=T(()=>I.value?s.attachment.thumbnailBase64?`data:image/webp;base64,${s.attachment.thumbnailBase64}`:$.value:"");function y(){h.value=!1,u.value=!1}function E(){h.value=!1,u.value=!0}function C(){i("remove",s.attachment.id)}function V(){if(!s.attachment.path){$.value&&window.open($.value,"_blank");return}a.replace({query:{...l.query,inspector:"files",filePath:s.attachment.path},hash:l.hash})}return(H,J)=>(t(),r("div",{class:G(["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]":I.value,"px-2.5 py-1.5":!I.value,"cursor-pointer":I.value&&$.value}]),onClick:J[0]||(J[0]=oe=>I.value&&$.value?V():void 0)},[I.value?(t(),r(Ae,{key:0},[h.value&&!u.value&&!S.value?(t(),r("div",dl,[...J[1]||(J[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&&!S.value?(t(),r("div",ul,[B(c(Ya),{size:24})])):b("",!0),dt(n("img",{src:m.value||$.value,alt:e.attachment.name,class:"w-full h-full object-cover",onLoad:y,onError:E},null,40,cl),[[_t,!h.value&&!u.value||S.value]]),$.value?(t(),r("div",fl,[...J[2]||(J[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(),r(Ae,{key:1},[B(c(Tn),{size:14,class:"text-neutral-500 mr-1 flex-shrink-0"}),n("span",pl,p(e.attachment.name),1)],64)),e.showRemove?(t(),r("button",{key:2,onClick:Ge(C,["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(Dt),{size:10})])):b("",!0)],2))}}),vl=/https:\/\/[^\s"'<>()\][]+/g;function fr(e){if(!e)return null;const o=e.match(vl);if(!o)return null;for(const a of o){const l=a.replace(/[.,;:!?]+$/,"");let s;try{s=new URL(l)}catch{continue}if(s.protocol==="https:"&&s.pathname.endsWith("/settings/billing"))return s.toString()}return null}const hl=["onMouseenter","onMouseleave","onClick"],ml=["onClick"],gl={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"},xl={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"},bl={key:0,class:"w-full text-center text-xs text-neutral-400 dark:text-neutral-500 py-1"},yl={key:0,class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-400 dark:text-neutral-500 leading-none mb-1"},kl=["contenteditable","onInput"],_l=["innerHTML"],wl=["href"],$l={key:4,class:"inline-flex items-center gap-1 rounded-full bg-neutral-100 dark:bg-neutral-800/60 px-3 py-2"},Cl={key:0,class:"inline-flex items-center gap-1.5"},Sl={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"},Tl=["title","onClick"],Il={key:0,class:"flex flex-wrap gap-2 px-4"},Al=["onClick","onMouseenter"],El={key:0,class:"flex items-center gap-2 px-4 py-2 min-w-0"},Ll={key:0,class:"truncate text-neutral-700 dark:text-neutral-300 min-w-0"},Rl={key:1,class:"truncate text-neutral-600 dark:text-neutral-400 min-w-0"},Ml={class:"text-neutral-500 dark:text-neutral-400 flex-shrink-0"},Dl={class:"work-op-strip","aria-label":"Operation statuses"},Fl=["title"],Pl={key:1,class:"px-4 py-2 space-y-2.5"},Nl={class:"flex items-center gap-2"},zl={class:"min-w-0 truncate text-neutral-700 dark:text-neutral-300"},jl={class:"shrink-0 text-neutral-500 dark:text-neutral-400"},Bl={class:"work-op-strip","aria-label":"Operation statuses"},Ol=["title"],Vl={key:0,class:"space-y-1"},ql=["onClick","onMouseenter"],Ul=["title"],Hl={class:"font-mono font-medium text-neutral-800 dark:text-neutral-100 flex-shrink-0"},Wl={key:2,class:"text-neutral-500 dark:text-neutral-400 truncate flex-1 min-w-0"},Kl={key:0,class:"pl-5 mt-2 space-y-3"},Jl={key:0},Gl={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"},Yl={class:"pt-1 font-mono text-[12px] text-neutral-500 dark:text-neutral-500"},Ql={class:"min-w-0"},Xl={key:1,class:"break-words text-neutral-800 dark:text-neutral-200"},Zl={key:1},ei={class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-400 dark:text-neutral-500 mb-1"},ti=["onClick","onMouseenter"],ni={key:0,class:"m-0 whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed"},ai={key:1},ri=["onClick"],si={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"},oi={key:2,class:"pl-5 pb-1 break-words text-neutral-600 dark:text-neutral-400"},li={class:"flex items-center justify-between gap-3 border-b border-neutral-100 px-3 py-2 dark:border-neutral-900"},ii={class:"min-w-0"},di={class:"truncate text-[12px] font-medium text-neutral-800 dark:text-neutral-100"},ui={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"},ci={class:"divide-y divide-neutral-100 dark:divide-neutral-900"},fi=["onClick"],pi={class:"flex items-center gap-3"},vi=["src"],hi={class:"min-w-0 flex-1"},mi={class:"flex items-center gap-2"},gi={class:"truncate text-[13px] font-medium text-neutral-900 dark:text-neutral-50"},xi={class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},bi={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"},ki={key:0,class:"ml-12 mt-1.5 space-y-1.5 border-l border-neutral-200 pl-2.5 dark:border-neutral-800"},_i={class:"flex items-center gap-2 text-[10px] text-neutral-500 dark:text-neutral-400"},wi={class:"font-medium uppercase text-neutral-600 dark:text-neutral-300"},$i={key:0,class:"italic"},Ci=["innerHTML"],Si={key:1,class:"mt-2 flex flex-wrap gap-2"},Ti=["onClick"],Ii={class:"flex items-center gap-3"},Ai=["src"],Ei={class:"min-w-0 flex-1"},Li={class:"flex items-center gap-2"},Ri={class:"truncate text-[13px] font-medium text-neutral-900 dark:text-neutral-50"},Mi={class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Di={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"},Fi={class:"ml-12 mt-1 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Pi={key:0,class:"ml-12 mt-2 space-y-1.5 border-l border-neutral-200 pl-2.5 dark:border-neutral-800"},Ni={class:"flex items-center gap-2 text-[10px] text-neutral-500 dark:text-neutral-400"},zi={class:"font-medium uppercase text-neutral-600 dark:text-neutral-300"},ji={key:0,class:"italic"},Bi=["innerHTML"],Oi={key:1,class:"mt-2 flex flex-wrap gap-2"},Vi=et({__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,s=a;ba.setOptions({gfm:!0,breaks:!0});function i(v){const x=l.selectedForDelete?.has(v)??!1;s("selectionChange",v,!x)}function h(v,x){const Te=v.target.innerText;s("messageEdit",x,Te)}function u(v){return v.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function I(v){if(typeof window>"u"||typeof DOMParser>"u")return v.replace(/<script[\s\S]*?>[\s\S]*?<\/script>/gi,"").replace(/\son\w+="[^"]*"/gi,"").replace(/\s(href|src)="javascript:[^"]*"/gi,"");const x=new DOMParser().parseFromString(v,"text/html"),w=["script","style","iframe","object","embed"];for(const Te of w)x.querySelectorAll(Te).forEach(Y=>Y.remove());return x.body.querySelectorAll("*").forEach(Te=>{for(const Y of Array.from(Te.attributes)){const Je=Y.name.toLowerCase(),ct=Y.value.trim().toLowerCase();(Je.startsWith("on")||Je==="style"||(Je==="href"||Je==="src")&&(ct.startsWith("javascript:")||ct.startsWith("data:text/html")))&&Te.removeAttribute(Y.name)}}),x.body.innerHTML}function S(v){return!!v&&typeof v=="object"&&!Array.isArray(v)}function $(v){const x=u(N(v||"")),w=ba.parse(x,{async:!1});return I(w)}function m(v){const x=v.content??"";return v.status!=="failed"&&!x.includes("[ERROR]")?null:fr(x)}function y(v){return l.editedMessages?.has(v)??!1}const E=g(new Map);function C(v,x){x?E.value.set(v,x):E.value.delete(v)}function V(v,x){C(v,x instanceof HTMLElement?x:null)}function H(v){const x=l.messages.findIndex(w=>w.log_id===v);if(x<=0)return-1;for(let w=x-1;w>=0;w--){const Te=l.messages[w];if(Te.role==="user")return w;if(Te.role==="assistant"&&Te.log_id)break}return-1}function J(v){for(let x=0;x<l.messages.length;x++){const w=l.messages[x];if(w.log_id===v||w.type==="work"&&w.items&&w.items.some(Je=>Je.log_id===v||Je.response_log_id===v))return x}return-1}function oe(v,x){const Te=J(v);if(Te===-1)return!1;const Y=E.value.get(Te);if(!Y)return!1;const Je=l.messages[Te];let ct=null;if(Je.role==="assistant"&&Je.log_id){const $t=H(Je.log_id);ct=$t!==-1?E.value.get($t):null}const yt=x.getBoundingClientRect(),nn=Y.getBoundingClientRect();if(nn.top<yt.top){const Pn=(ct||Y).getBoundingClientRect().top-yt.top-10;x.scrollBy({top:Pn,behavior:"smooth"})}else if(nn.bottom>yt.bottom){const $t=nn.bottom-yt.bottom+10;x.scrollBy({top:$t,behavior:"smooth"})}else if(ct){const $t=ct.getBoundingClientRect();if($t.top<yt.top){const bn=$t.top-yt.top-10;x.scrollBy({top:bn,behavior:"smooth"})}}return!0}function X(v){for(const x of l.messages){if(x.type!=="work")continue;if(x.items.some(Y=>Y.log_id===v||Y.response_log_id===v))return!0}return!1}o({scrollToLogId:oe,hasWorkblockForLogId:X});function ne(v){const x=l.messages[v];if(x.log_id)return x.log_id;if(x.role==="user")for(let w=v+1;w<l.messages.length;w++){const Te=l.messages[w];if(Te.log_id)return Te.log_id;if(Te.role==="user")break}return null}function ue(v){if(v.type!=="text")return null;const x=v.metadata;if(!S(x))return null;const w=x.scheduledEffect;return S(w)?w:null}function K(v){const x=ue(v);return typeof x?.id=="string"?x.id:null}function P(v){const x=ue(v);return typeof x?.name=="string"?x.name:null}function R(v){return K(v)!==null}function W(v){const x=K(v),w=P(v);return w&&x?`${w} (${x})`:w||"Scheduled effect"}function q(v){if(v.type!=="text")return null;const x=ue(v),w=typeof x?.id=="string"?x.id:null;return w?{id:w,name:typeof x?.name=="string"?x.name:null}:null}function we(v,x){return x?ne(v)===x:!1}function Pe(v,x){if(l.isEditMode||v.silent||v.role==="user"&&!R(v))return"";const w=K(v),Te=!!ne(x)||R(v);return we(x,l.selectedLogId??null)||w&&w===l.selectedEffectId?"message-log-state message-log-state--selected":ne(x)&&we(x,l.hoveredLogId??null)?"message-log-state message-log-state--hovered":Te?"message-log-state":""}function te(v){const x=ne(v);x&&s("messageHover",x)}function qe(v){ne(v)&&s("messageHover",null)}function z(v){const x=l.messages[v],w=ne(v),Te=q(x);(w||Te)&&s("messageClick",x.id,w,Te)}function he(v){const x=l.messages[v],w=q(x);w&&s("messageClick",x.id,ne(v),w)}const ke=g(new Set),Ee=g(new Set),_e=g(new Set),me=g(new Set);function Se(v){ke.value.has(v)?ke.value.delete(v):ke.value.add(v)}function Ie(v){Ee.value.has(v)?Ee.value.delete(v):Ee.value.add(v)}function re(v){_e.value.has(v)?_e.value.delete(v):_e.value.add(v)}function Z(v){me.value.has(v)?me.value.delete(v):me.value.add(v)}function Q(v){if(!v)return{};try{const x=JSON.parse(v);return x&&typeof x=="object"&&!Array.isArray(x)?x:{raw:x}}catch{return{raw:v}}}function ce(v){if(!v)return null;const x=Q(v),w=Object.keys(x);if(w.length===0)return null;const Te=x[w[0]];return typeof Te=="string"?Oe(Le(Te)):JSON.stringify(Te)}const fe={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 De(v){if(typeof v!="string")return null;const x=v.split("?")[0]?.split("#")[0]?.split(".").pop()?.toLowerCase();return x?fe[x]??null:null}function Ye(v){if(typeof v!="string")return null;const x=v.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 F(v){try{return JSON.stringify(JSON.parse(v),null,2)}catch{return null}}function $e(v){try{return JSON.parse(v)}catch{return null}}function ye(v){return v&&typeof v=="object"&&!Array.isArray(v)?v:null}function Le(v){return v.replace(/\\r\\n/g,`
2
+ import{d as et,z as j,e as t,k as Pe,g as Ft,m as G,B as Mt,an as Ot,c as T,w as be,r as g,O as Wt,a5 as xr,ao as br,J as c,a4 as oa,C as yr,D as kr,b as r,f as n,q as b,j as B,s as rt,u as p,h as Xe,a as Kt,Z as hn,o as It,ap as _r,aq as Dt,ag as Tt,F as Ee,l as We,K as Ge,n as gt,ar as Ha,as as Wa,ah as jt,at as wr,au as $r,av as Qn,aw as Ka,ax as Ja,x as ut,ay as Tn,az as Cr,aA as Ga,aB as Sr,X as Tr,Y as Ir,aC as Ya,y as _t,aD as In,aE as St,_ as Xn,aF as Ar,a3 as wt,aG as Er,am as fn,aH as Lr,aI as An,aJ as Qa,aK as Xa,aL as Rr,al as Mr,aM as Za,aN as Dr,aO as Fr,aP as Pr,aQ as Nr,aR as zr,aS as jr,aT as Br,aU as Or,aV as Vr,aW as qr,L as Ut,aX as an,aY as Zn,aZ as Fn,P as Bt,H as Ur,a_ as er,a$ as Hr,b0 as Wr,b1 as Kr,b2 as jn,b3 as Jr,b4 as Gr,b5 as Yr,b6 as pa,b7 as En,b8 as Qr,b9 as Xr,ba as va,bb as ha,bc as ea,W as Zr,bd as es,be as ts,bf as ma}from"./vue-Dw7WLX4c.js";import{H as ns,b as Qe,J as la,K as as,L as ta,I as yn,k as ga,M as xa,C as tr,N as rs,O as ba,P as ss,m as vt,Q as ia,R as nr,B as Ze,S as os,h as pn,U as Ln,V as ls,W as Bn,_ as kn,e as un,f as dn,X as is,Y as ds,u as us,A as At,p as cs,w as fs,y as ps,z as vs,Z as hs,$ as ms,x as gs}from"./index-Df4DTwgs.js";import{e as ya}from"./vendor-TPZjEwCU.js";import{_ as ar}from"./Modal.vue_vue_type_script_setup_true_lang-BJgJZ56X.js";import{u as xs}from"./timeAgo-CDt-vAhI.js";import{_ as da,u as bs}from"./CopyButton.vue_vue_type_script_setup_true_lang-BWgZbcol.js";import{_ as ft,W as ys,a as ks,b as _s,c as ws,d as $s,e as rn}from"./monaco-DI2r3M8m.js";import{J as On}from"./JsonViewer-DY4s92Td.js";import{_ as Cs}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-yyjbXnqu.js";import{u as rr,_ as sr,b as _n,c as Ss,P as Ts}from"./PromptModal-DSPIuleV.js";const Is=et({__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 s(i){a.disabled||l("click",i)}return(i,h)=>(t(),j(Mt(e.as),{type:e.as==="button"?"button":void 0,disabled:e.as==="button"?e.disabled:void 0,onClick:s,class:G(["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:Pe(()=>[Ft(i.$slots,"default")]),_:3},8,["type","disabled","class"]))}});async function cn(e){const o=await ns(e);if(!o.ok)throw new Error(`Request failed for ${e}`);return o.json()}async function As(e){if(!e)return null;try{return(await cn(`/prompts/${encodeURIComponent(e)}`)).prompt}catch{return null}}async function Ib(e){if(!e)return null;try{return await cn(`/tools/${encodeURIComponent(e)}`)}catch{return null}}function Es(e){const o=e?.env??e?.tenvs;return!o||typeof o!="object"?{}:o}function or(e){return Object.keys(Es(e)).filter(o=>o.trim().length>0)}function Ls(e){const o=e?.variables||[],a=new Map;for(const l of o){const s=l.name?.trim();s&&a.set(s,{...l,name:s})}for(const l of or(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 Ab(e){return e?!e.packed&&e.id===e.name:!1}function Rs(e,o){return o?.type?o.type:e.startsWith("provider:")?"provider":e.startsWith("mcp:")?"mcp":"unknown"}function Ms(e){return e.startsWith("provider:")?e.slice(9):e.startsWith("mcp:")?e.slice(4):e}function Ds(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 Fs(e,o,a={}){const l=o[e.name],s=l?.model;return{name:e.name,displayName:Ms(e.name),kind:Rs(e.name,l),description:l?.description||"",variables:l?.variables||[],model:s,resolvedModel:Ds(s,a),config:e}}function Eb(e,o,a,l){const s=o==="b"&&e.type!=="dual_ai",i=o==="a"?e.side_a_label||"Side A":e.side_b_label||(s?"Human":"Side B"),h=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,I=o==="a"?e.side_a_stop_tool:e.side_b_stop_tool,S=o==="a"?e.side_a_max_steps:e.side_b_max_steps,$=[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(L=>!!L),m=(a?.tools||[]).map(L=>Fs(L,l.toolsCatalog,l.models)),y=m.filter(L=>L.kind==="handoff"||L.kind==="subagent");return{id:o,agentName:e.name,label:i,mode:s?"human":"ai",promptName:h||null,stopOnResponse:u,stopTool:I,maxSteps:S,sessionStopTool:o==="a"?e.side_a_session_stop_tool:e.side_b_session_stop_tool,sessionTools:$,prompt:a,model:a&&l.models[a.model_id]||null,tools:m,hooks:(a?.hooks||[]).map(L=>l.hooks[L]||{id:L,hook:"unknown"}),variables:Ls(a),variableEnvNames:or(a),outgoingAgents:y}}function lr(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 Ps(e){const{limit:o=50,offset:a=0,agentId:l=null,userId:s=null,search:i=null,startDate:h=null,endDate:u=null,sort:I="activity",executingOnly:S=!1,includeTerminated:$=!0,autoFetch:m=!0}=e||{},y=T(()=>{const K=new URLSearchParams,P=typeof o=="number"?o:o.value,M=typeof a=="number"?a:a.value,W=typeof l=="string"?l:l?.value,q=typeof s=="string"?s:s?.value,_e=typeof i=="string"?i:i?.value,Ne=typeof h=="number"?h:h?.value,te=typeof u=="number"?u:u?.value;K.append("limit",P.toString()),K.append("offset",M.toString()),W&&(K.append("agent_id",W),K.append("include_children","1")),q&&K.append("user_id",q),_e&&K.append("search",_e),Ne&&K.append("startDate",Ne.toString()),te&&K.append("endDate",te.toString());const qe=typeof I=="string"?I:I.value;return qe&&K.append("sort",qe),(typeof S=="boolean"?S:S.value)&&K.append("executing","1"),(typeof $=="boolean"?$:$.value)||K.append("terminated","0"),Qe(`/api/threads?${K.toString()}`)}),{data:L,error:C,isFetching:V,isFinished:H,execute:J,abort:le}=Ot(y,{immediate:m,refetch:!0}).get().json(),X=T(()=>L.value?.threads||[]),ne=T(()=>L.value?.total||0),ue=T(()=>L.value?.hasMore||!1);return{threads:X,total:ne,hasMore:ue,error:C,isFetching:V,isFinished:H,refetch:J,abort:le}}function Ns(){const{data:e,error:o,isFetching:a,execute:l}=Ot(Qe("/api/threads/owners"),{immediate:!0}).get().json();return{owners:T(()=>e.value?.owners||[]),error:o,isFetching:a,refetch:l}}function ua(e){const o=T(()=>{const $=typeof e=="string"?e:e?.value;return $?Qe(`/api/threads/${$}`):""}),{data:a,error:l,isFetching:s,isFinished:i,execute:h,abort:u}=Ot(o,{immediate:!1,refetch:!0}).get().json();be(o,$=>{$?h():(u(),a.value=null)},{immediate:!0});const I=T(()=>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),S=T(()=>lr(l.value)?null:l.value);return{thread:I,error:S,isFetching:s,isFinished:i,refetch:h,abort:u}}const zs={key:0,class:"flex min-h-[500px] items-center justify-center"},js={class:"flex min-h-0 min-w-0 flex-1 flex-col"},Bs={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"},Os={class:"min-w-0 flex-1"},Vs={class:"edit-sections-query"},qs=et({__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,s=a,i=T(()=>l.mode==="edit"),h=T(()=>!!l.surfaceSection),u=T(()=>l.inline&&l.inlineFlatSections),I=T(()=>l.inline||h.value),S=T(()=>I.value?{config:la}:{}),$=T(()=>i.value&&(l.editAgent?.id||l.editAgent?.name)||""),m=as(()=>$.value,{autoload:!1}),y=g(null),L=["basics","side-a","side-b","variables"],{activeTab:C,scrollToSection:V}=rr(y,L),H=T(()=>[{id:"basics",label:"Basics",icon:ta},{id:"side-a",label:"Side A",icon:yn},{id:"side-b",label:"Side B",icon:m.agentType.value==="ai_human"?ga:yn},{id:"variables",label:"Variables",icon:xa}]),J=g(!1),le=g(!1),X=g(null);let ne=0;const ue=T(()=>JSON.stringify({name:m.name.value,title:m.title.value,agentType:m.agentType.value,exposeAsTool:m.exposeAsTool.value,toolDescription:m.toolDescription.value,maxSessionTurns:m.maxSessionTurns.value,sideALabel:m.sideALabel.value,sideAAgentPrompt:m.sideAAgentPrompt.value,sideAStopOnResponse:m.sideAStopOnResponse.value,sideAStopOnToolCall:m.sideAStopOnToolCall.value,sideAStopTool:m.sideAStopTool.value,sideAStopToolResponseProperty:m.sideAStopToolResponseProperty.value,sideAManualStopCondition:m.sideAManualStopCondition.value,sideAMaxSteps:m.sideAMaxSteps.value,sideAEndConversationTool:m.sideAEndConversationTool.value,sideBLabel:m.sideBLabel.value,sideBAgentPrompt:m.sideBAgentPrompt.value,sideBStopOnResponse:m.sideBStopOnResponse.value,sideBStopOnToolCall:m.sideBStopOnToolCall.value,sideBStopTool:m.sideBStopTool.value,sideBStopToolResponseProperty:m.sideBStopToolResponseProperty.value,sideBMaxSteps:m.sideBMaxSteps.value,sideBEndConversationTool:m.sideBEndConversationTool.value,agentEnv:m.agentEnv.value})),K=T(()=>le.value?"Saved":l.inline&&i.value?"Save Agent Changes":i.value?"Update Agent":"Create Agent"),P=T(()=>l.saving||l.inline&&!J.value),M=T(()=>h.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 W(){le.value=!1,X.value=null}function q(){Xe().then(()=>{J.value=!!m.formNode.value?.context?.state.dirty})}function _e(we){m.handleFormNode(we),we.on("commit",q),we.on("reset",q),we.on("message-added",q),we.on("message-updated",q),we.on("message-removed",q),q()}async function Ne(){const we=++ne;await Xe();const me=m.formNode.value;if(!me||we!==ne){J.value=!1;return}await me.settled,me.reset(me.value),await Xe(),we===ne&&(J.value=!1)}async function te(){await Ne(),le.value=!0,X.value=ue.value}async function qe(){W(),m.resetForm(),await Xe(),i.value&&$.value?await m.load():await m.loadPrerequisites(),await Ne()}async function z(){const we=await m.prepareSubmit();we&&s("save",we)}function he(){m.resetForm(),W(),s("update:modelValue",!1)}async function ke(){W(),await qe()}function Le(we){return!l.surfaceSection||l.surfaceSection===we}return be(()=>l.modelValue,async we=>{we?await qe():(ne+=1,m.resetForm(),W(),J.value=!1)},{immediate:!0}),be(()=>$.value,async(we,me)=>{!l.modelValue||we===me||await qe()}),be(ue,we=>{le.value&&X.value!==null&&we!==X.value&&W()}),be(J,we=>{we&&W()}),o({formNode:m.formNode,markSaveSucceeded:te,markCurrentFormCleanAfterSettle:Ne,resetSaveSuccess:W}),(we,me)=>{const Se=Wt("FormKit");return t(),j(Mt(e.inline||h.value?"div":ar),xr(M.value,br(e.inline||h.value?void 0:{"update:modelValue":Ae=>we.$emit("update:modelValue",Ae)})),{default:Pe(()=>[(t(),j(Mt(I.value?c(oa):"div"),yr(kr(S.value)),{default:Pe(()=>[c(m).isLoading.value?(t(),r("div",zs,[...me[0]||(me[0]=[n("span",{class:"text-neutral-500"},"Loading agent data...",-1)])])):(t(),j(Se,{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:Pe(()=>[n("div",js,[h.value?b("",!0):(t(),r("nav",Bs,[Ft(we.$slots,"nav-leading",{},void 0,!0),n("div",Os,[B(c(sr),{tabs:H.value,"active-tab":c(C),"accent-active":e.inlineAccentTabs,orientation:"horizontal",onSelect:c(V)},null,8,["tabs","active-tab","accent-active","onSelect"])])])),n("div",{ref_key:"contentRef",ref:y,class:G(["min-h-0 flex-1 overflow-y-auto",h.value?"p-5":u.value?"bg-neutral-100 dark:bg-neutral-950":"bg-neutral-100 p-5 dark:bg-neutral-950"])},[n("div",Vs,[e.inlineGlobalNotice?(t(),r("div",{key:0,class:G(["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:G([u.value?"space-y-4 pb-5":"space-y-4","edit-sections-stack"])},[e.apiError?(t(),j(c(tr),{key:0,variant:"error"},{default:Pe(()=>[rt(p(e.apiError),1)]),_:1})):b("",!0),Le("identity")?(t(),j(c(_n),{key:1,id:"section-basics",title:"Basics",icon:c(ta),flat:u.value},{default:Pe(()=>[B(rs,{form:c(m),"is-edit-mode":i.value},null,8,["form","is-edit-mode"])]),_:1},8,["icon","flat"])):b("",!0),Le("side-a")?(t(),j(c(_n),{key:2,id:"section-side-a",title:"Side A (AI)",icon:c(yn),flat:u.value},{default:Pe(()=>[B(ba,{form:c(m),side:"a"},null,8,["form"])]),_:1},8,["icon","flat"])):b("",!0),Le("side-b")?(t(),j(c(_n),{key:3,id:"section-side-b",title:c(m).agentType.value==="ai_human"?"Side B (Human)":"Side B (AI)",icon:c(m).agentType.value==="ai_human"?c(ga):c(yn),flat:u.value},{default:Pe(()=>[B(ba,{form:c(m),side:"b"},null,8,["form"])]),_:1},8,["title","icon","flat"])):b("",!0),Le("variables")?(t(),j(c(_n),{key:4,id:"section-variables",title:"Variables",icon:c(xa),flat:u.value},{default:Pe(()=>[B(ss,{form:c(m),readonly:e.readonly},null,8,["form","readonly"])]),_:1},8,["icon","flat"])):b("",!0)],2)])],2)]),h.value?b("",!0):(t(),j(Ss,{key:0,"form-id":"agent-form","form-node":c(m).formNode.value,readonly:e.readonly,inline:e.inline,saving:e.saving,dirty:J.value,"save-succeeded":le.value,"save-label":K.value,"save-disabled":P.value,"cancel-label":e.readonly?"Close":"Cancel",onCancel:he,onDiscard:ke},null,8,["form-node","readonly","inline","saving","dirty","save-succeeded","save-label","save-disabled","cancel-label"]))]),_:3},8,["disabled"]))]),_:3},16))]),_:3},16)}}}),Us=vt(qs,[["__scopeId","data-v-e47eeb63"]]);function ir(){const e=Qe("/api/agents"),{data:o,error:a,isFetching:l,isFinished:s,execute:i}=Ot(e,{immediate:!0}).get().json();return{agents:T(()=>o.value?.agents||[]),error:a,isFetching:l,isFinished:s,refetch:i}}function Ht(e,o,...a){}function ca(e){return!!e&&typeof e=="object"}function Xt(e){return typeof e=="string"?e:null}function Cn(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Hs(e){if(ca(e)&&!(typeof e.name!="string"||typeof e.title!="string"||typeof e.type!="string"))return{name:e.name,title:e.title,type:e.type,description:Xt(e.description)??void 0,icon:Xt(e.icon)??void 0}}function Ws(e){return!ca(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:Xt(e.user_id),tags:Array.isArray(e.tags)?e.tags.filter(o=>typeof o=="string"):null,parent:Xt(e.parent),terminated:Cn(e.terminated),created_at:e.created_at,last_activity_at:Cn(e.last_activity_at),executing:e.executing===!0,last_message_preview:Xt(e.last_message_preview),last_message_at:Cn(e.last_message_at),agent:Hs(e.agent)}}function Ks(e){if(!ca(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:Xt(e.last_message_preview)}:{},...e.last_message_at!==void 0?{last_message_at:Cn(e.last_message_at)}:{}}:null;if(e.type==="thread_created"||e.type==="thread_updated"){const o=Ws(e.thread);return o?{type:e.type,thread:o}:null}return null}function Js(e){const{autoConnect:o=!0,onEvent:a}=e||{},l=g(null),s=g(!1),i=g(null);let h=0,u=null,I=null,S=!0,$=null;const m=3e4,y=3e4,L=()=>{u&&(clearTimeout(u),u=null),I&&(clearInterval(I),I=null)},C=()=>{I&&clearInterval(I),I=setInterval(()=>{l.value&&l.value.readyState===WebSocket.OPEN&&l.value.send("ping")},y)},V=()=>{if(!S)return;const X=Math.min(1e3*Math.pow(2,h),m);h++,Ht(),u=setTimeout(()=>{S&&H()},X)},H=()=>{l.value&&($=null,l.value.close());const X=window.location.protocol==="https:"?"wss:":"ws:",ne=window.location.host,ue=ia(`${X}//${ne}${Qe("/api/events")}`);try{const K=new WebSocket(ue);l.value=K,$=K,K.onopen=()=>{$===K&&(s.value=!0,i.value=null,h=0,C(),Ht("AgentBuilderEvents","WebSocket connected"))},K.onmessage=P=>{if($===K)try{if(typeof P.data=="string"&&P.data==="pong")return;const M=Ks(JSON.parse(P.data));M&&a&&a(M)}catch{i.value="Failed to parse event update"}},K.onerror=P=>{$===K&&(i.value="WebSocket connection error")},K.onclose=()=>{$===K&&(s.value=!1,L(),Ht("AgentBuilderEvents","WebSocket disconnected"),V())}}catch(K){i.value=K instanceof Error?K.message:"Failed to create WebSocket",V()}},J=()=>{S=!0,h=0,H()},le=()=>{S=!1,L(),$=null,l.value&&(l.value.close(),l.value=null),s.value=!1,h=0};return o&&J(),Kt(()=>{le()}),{wsConnected:s,wsError:i,connect:J,disconnect:le}}const Gs={class:"relative inline-flex items-center"},Ys={key:0,class:"inline-block w-2 h-2 rounded-full bg-green-500 dark:bg-green-400"},Qs={key:1,class:"inline-block w-2 h-2 rounded-full bg-neutral-400 dark:bg-neutral-600"},Xs={key:0},Zs={key:1},dr=et({__name:"StatusDot",props:{connected:{type:Boolean},error:{type:Boolean}},setup(e){const o=g(!1),a=g(null);return(l,s)=>(t(),r("div",Gs,[n("span",{class:"p-0.5 cursor-default outline-none",tabindex:"-1",onMouseenter:s[0]||(s[0]=i=>o.value=!0),onMouseleave:s[1]||(s[1]=i=>o.value=!1)},[e.connected?(t(),r("span",Ys)):(t(),r("span",Qs))],32),B(hn,{"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:Pe(()=>[o.value?(t(),r("div",{key:0,ref_key:"popoverRef",ref:a,class:G(["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(),r("span",Xs,"Live - Connected")):(t(),r("span",Zs,"Offline"))],2)):b("",!0)]),_:1})]))}}),eo={class:"relative min-w-0"},to={class:"truncate flex-1 text-left"},no={key:0},ao=["onClick"],ro={class:"border-t border-neutral-200 dark:border-neutral-700"},so={class:"flex items-center justify-between"},oo={class:"space-y-4 date-filter-inputs"},lo=et({__name:"DateFilterDropdown",props:{startDate:{},endDate:{}},emits:["update:startDate","update:endDate"],setup(e,{emit:o}){const a=e,l=o,s=g(!1),i=g(!1),h=g(null),u=g(null),I=g(""),S=g(""),$=[{label:"All time",value:"all",getRange:()=>({startDate:null,endDate:null})},{label:"Today",value:"today",getRange:()=>{const P=new Date,M=new Date(P.getFullYear(),P.getMonth(),P.getDate());return{startDate:Math.floor(M.getTime()/1e3),endDate:null}}},{label:"Last 3 days",value:"3days",getRange:()=>{const P=new Date,M=new Date(P.getFullYear(),P.getMonth(),P.getDate()-2);return{startDate:Math.floor(M.getTime()/1e3),endDate:null}}},{label:"Last 7 days",value:"7days",getRange:()=>{const P=new Date,M=new Date(P.getFullYear(),P.getMonth(),P.getDate()-6);return{startDate:Math.floor(M.getTime()/1e3),endDate:null}}},{label:"Last 30 days",value:"30days",getRange:()=>{const P=new Date,M=new Date(P.getFullYear(),P.getMonth(),P.getDate()-29);return{startDate:Math.floor(M.getTime()/1e3),endDate:null}}}],m=T(()=>{if(!a.startDate&&!a.endDate)return"all";for(const P of $){const M=P.getRange();if(M.startDate===a.startDate&&M.endDate===a.endDate)return P.value}return"custom"}),y=T(()=>{if(!a.startDate&&!a.endDate)return"All time";const P=$.find(W=>W.value===m.value);if(P&&m.value!=="custom")return P.label;const M=W=>new Date(W*1e3).toLocaleDateString("en-US",{month:"short",day:"numeric"});return a.startDate&&a.endDate?`${M(a.startDate)} - ${M(a.endDate)}`:a.startDate?`From ${M(a.startDate)}`:a.endDate?`Until ${M(a.endDate)}`:"Custom"}),L=T(()=>a.startDate!==null||a.endDate!==null);function C(){if(!h.value||!u.value)return;const P=h.value.getBoundingClientRect();u.value.style.position="fixed",u.value.style.top=`${P.bottom+8}px`,u.value.style.left=`${P.left}px`;const M=i.value?280:180;u.value.style.minWidth=`${P.width}px`,u.value.style.maxWidth=`${Math.max(P.width,M)}px`,u.value.style.width="auto",u.value.style.margin="0"}function V(){s.value?H():(s.value=!0,Xe(()=>{if(u.value&&(u.value.setAttribute("popover","auto"),u.value.addEventListener("toggle",J),"showPopover"in u.value))try{u.value.showPopover()}catch{}C()}))}function H(){if(u.value){if("hidePopover"in u.value)try{u.value.hidePopover()}catch{}u.value.removeEventListener("toggle",J)}s.value=!1,i.value=!1}function J(P){P.target===u.value&&(s.value=P.newState==="open",s.value&&C())}function le(P){const M=P.getRange();l("update:startDate",M.startDate),l("update:endDate",M.endDate),H()}function X(){const P=I.value?Math.floor(new Date(I.value).getTime()/1e3):null,M=S.value?Math.floor(new Date(S.value+"T23:59:59").getTime()/1e3):null;l("update:startDate",P),l("update:endDate",M),H()}function ne(P){P.stopPropagation(),l("update:startDate",null),l("update:endDate",null)}const ue=P=>{const M=P.target;u.value&&!u.value.contains(M)&&h.value&&!h.value.contains(M)&&H()},K=P=>{P.key==="Escape"&&s.value&&(H(),h.value?.focus())};return It(()=>{document.addEventListener("click",ue),document.addEventListener("keydown",K),window.addEventListener("resize",C),window.addEventListener("scroll",C,!0)}),Kt(()=>{document.removeEventListener("click",ue),document.removeEventListener("keydown",K),window.removeEventListener("resize",C),window.removeEventListener("scroll",C,!0)}),be(i,P=>{P&&(a.startDate&&(I.value=new Date(a.startDate*1e3).toISOString().split("T")[0]),a.endDate?S.value=new Date(a.endDate*1e3).toISOString().split("T")[0]:S.value=new Date().toISOString().split("T")[0]),Xe(C)}),(P,M)=>{const W=Wt("FormKit");return t(),r("div",eo,[n("button",{ref_key:"triggerRef",ref:h,type:"button",onClick:V,class:G(["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",[L.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(_r),{size:14,class:"shrink-0 text-zinc-400"}),n("span",to,p(y.value),1),L.value?(t(),j(c(Dt),{key:0,size:14,class:"shrink-0 text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-200",onClick:ne})):(t(),j(c(Tt),{key:1,size:14,class:G(["shrink-0 text-zinc-400",s.value?"rotate-180":""])},null,8,["class"]))],2),s.value?(t(),r("div",{key:0,ref_key:"popoverRef",ref:u,class:"dropdown-popover z-[9999]"},[B(c(nr),{"max-height":i.value?void 0:"max-h-48",shadow:!1},{default:Pe(()=>[i.value?(t(),r("div",{key:1,class:"p-2.5 space-y-2.5",onClick:M[4]||(M[4]=Ge(()=>{},["stop"]))},[n("div",so,[M[6]||(M[6]=n("span",{class:"text-xs font-medium"},"Custom range",-1)),n("button",{type:"button",onClick:M[1]||(M[1]=Ge(q=>i.value=!1,["stop"])),class:"text-[10px] text-neutral-500 hover:text-black dark:hover:text-white"}," ← Back ")]),n("div",oo,[B(W,{modelValue:I.value,"onUpdate:modelValue":M[2]||(M[2]=q=>I.value=q),type:"datepicker",label:"From","picker-only":"",popover:"",format:"MMM D, YYYY","value-format":"YYYY-MM-DD",sequence:["day"]},null,8,["modelValue"]),B(W,{modelValue:S.value,"onUpdate:modelValue":M[3]||(M[3]=q=>S.value=q),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:X,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(),r("div",no,[(t(),r(Ee,null,We($,q=>n("button",{key:q.value,type:"button",onClick:_e=>le(q),class:G(["w-full px-2.5 py-1.5 text-left text-xs agents-surface-hover transition-colors flex items-center gap-2",m.value===q.value?"agents-surface-selected agents-text-selected":""])},[n("span",{class:G(["w-1.5 h-1.5 rounded-full border border-accent-500",m.value===q.value?"bg-accent-500":""])},null,2),rt(" "+p(q.label),1)],10,ao)),64)),n("div",ro,[n("button",{type:"button",onClick:M[0]||(M[0]=Ge(q=>i.value=!0,["stop"])),class:G(["w-full px-2.5 py-1.5 text-left text-xs agents-surface-hover transition-colors flex items-center gap-2",m.value==="custom"?"agents-surface-selected agents-text-selected":""])},[n("span",{class:G(["w-1.5 h-1.5 rounded-full border border-accent-500",m.value==="custom"?"bg-accent-500":""])},null,2),M[5]||(M[5]=rt(" Custom range... ",-1))],2)])]))]),_:1},8,["max-height"])],512)):b("",!0)])}}}),io=vt(lo,[["__scopeId","data-v-753faf78"]]),Rn=et({__name:"TimeAgo",props:{timestamp:{}},setup(e){const o=e,a=xs(()=>o.timestamp);return(l,s)=>(t(),r("span",null,p(c(a)),1))}}),na="name:",ka=["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"],uo=(e,o)=>o.created_at-e.created_at,vn=e=>e.last_activity_at??e.created_at,aa=e=>e.executing===!0&&!e.terminated,co=e=>{const o=new Map,a=new Map(e.map(l=>[l.id,l]));for(const l of e){const s=vn(l);let i=l;const h=new Set;for(;i&&!h.has(i.id);){h.add(i.id);const u=o.get(i.id);(u===void 0||u<s)&&o.set(i.id,s),i=i.parent?a.get(i.parent):void 0}}return o},ur=e=>{const o=new Set,a=new Map(e.map(l=>[l.id,l]));for(const l of e){if(!aa(l))continue;let s=l;const i=new Set;for(;s&&!i.has(s.id);)i.add(s.id),o.add(s.id),s=s.parent?a.get(s.parent):void 0}return o},fo=(e,o,a)=>{const l=s=>o.get(s.id)??vn(s);return(s,i)=>{const h=a.has(s.id),u=a.has(i.id);if(h!==u)return h?-1:1;if(e==="created")return i.created_at-s.created_at;if(e==="oldest")return s.created_at-i.created_at;const I=l(i)-l(s);return I!==0?I:i.created_at-s.created_at}},Sn=(e,o)=>`${e}::${o}`,cr=e=>{const o=e.tags.find(l=>l.startsWith(na));if(!o)return null;const a=o.slice(na.length).trim();return a.length>0?a:null},Vn=e=>{const o=e.last_message_preview?.trim();return o||null},po=e=>vn(e)>e.created_at,Et=e=>e.tags.filter(o=>!o.startsWith(na)),vo=e=>cr(e)||e.agent.title||e.agent.name,ho=e=>e.id.startsWith("__draft_")?"--------":e.id.slice(0,8),qn=e=>cr(e)?e.agent.title||e.agent.name:null,_a=e=>Array.from({length:Math.min(Math.max(e,0),6)},(o,a)=>12+a*8),wa=e=>ka[e%ka.length],$a=e=>({left:`${e}px`}),mo=(e,o,a="activity")=>{if(e.length===0)return[];const l=co(e),s=ur(e),i=fo(a,l,s),h=new Map(e.map(C=>[C.id,C])),u=new Map,I=[];for(const C of e){const V=C.parent;if(V&&h.has(V)){const H=u.get(V)??[];H.push(C),u.set(V,H);continue}I.push(C)}I.sort(i);for(const C of u.values())C.sort(i);const S=[],$=new Set,m=C=>{if($.has(C.id))return;$.add(C.id);const V=u.get(C.id);if(V)for(const H of V)m(H)},y=(C,V,H)=>{if($.has(C.id))return;$.add(C.id),S.push({kind:"thread",thread:C,depth:V,isNested:V>0,clusterId:H});const J=u.get(C.id);if(!J)return;const le=new Map;for(const X of J){const ne=X.agent_id||X.agent?.name||X.id,ue=le.get(ne);ue?ue.push(X):le.set(ne,[X])}for(const[X,ne]of le.entries()){if(ne.length>1){const ue=Sn(C.id,X),K=o(ue);if(S.push({kind:"directory",key:ue,depth:V+1,label:ne[0]?.agent?.title||ne[0]?.agent?.name||X,count:ne.length,open:K,clusterId:H,working:ne.some(P=>s.has(P.id))}),!K){for(const P of ne)m(P);continue}for(const P of ne)y(P,V+2,H);continue}y(ne[0],V+1,H)}};for(const C of I)y(C,0,C.id);const L=e.filter(C=>!$.has(C.id)).sort(i);for(const C of L)y(C,C.parent?1:0,C.parent??C.id);return S},go=["id","onClick"],xo=["title"],bo=["title"],yo={key:0,class:"text-emerald-600 dark:text-emerald-400"},ko=["title"],_o={key:2,class:"space-y-0.5"},wo={key:0,class:"flex flex-wrap gap-1 min-w-0"},$o={key:3,class:"flex items-center gap-1"},Co={key:0,class:"text-[10px] text-neutral-400"},So=["onClick"],To={class:"flex items-center gap-2"},Io={key:0,class:"thread-working-dot shrink-0",title:"A thread in this group is executing","aria-label":"Working"},Ao=et({__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,s=i=>a.workingClusterIds.has(i);return(i,h)=>(t(!0),r(Ee,null,We(e.rows,(u,I)=>(t(),r(Ee,{key:u.kind==="thread"?u.thread.id:u.key},[u.kind==="thread"?(t(),r("button",{key:0,id:`thread-${u.thread.id}`,class:G(["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(I)?"mt-1":"",e.hasRowBottomBorder(I)&&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:gt(u.depth>0?{paddingLeft:`${12+Math.min(u.depth,6)*8}px`}:void 0),onClick:S=>l("selectThread",u.thread.id)},[(t(!0),r(Ee,null,We(c(_a)(u.depth),(S,$)=>(t(),r("span",{key:`thread-line-${$}`,class:G(["pointer-events-none absolute inset-y-1 w-px rounded-full",c(wa)($)]),style:gt(c($a)(S)),"aria-hidden":"true"},null,6))),128)),n("div",{class:G(["flex items-center gap-2",!u.isNested||c(Et)(u.thread).length>0||c(qn)(u.thread)?"mb-0.5":""])},[s(u.thread.id)?(t(),r("span",{key:0,class:"thread-working-dot shrink-0",title:u.thread.executing?"Executing now":"Subagent executing","aria-label":"Working"},null,8,xo)):u.thread.terminated?(t(),j(c(Ha),{key:1,size:12,class:"shrink-0 text-neutral-500 dark:text-neutral-400"})):b("",!0),n("span",{class:G(["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":""]])},p(c(vo)(u.thread)),3),n("span",{class:G(["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(vn)(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`},[s(u.thread.id)?(t(),r("span",yo," working ")):(t(),j(Rn,{key:1,timestamp:c(vn)(u.thread)*1e6},null,8,["timestamp"]))],10,bo)],2),c(Vn)(u.thread)?(t(),r("div",{key:0,class:G(["mb-0.5 truncate text-[11px]",e.selectedThreadId===u.thread.id?"agents-text-selected":"text-neutral-600 dark:text-neutral-300"]),title:c(Vn)(u.thread)||""},p(c(Vn)(u.thread)),11,ko)):b("",!0),c(qn)(u.thread)?(t(),r("div",{key:1,class:G(["mb-0.5 truncate text-[10px]",e.selectedThreadId===u.thread.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},p(c(qn)(u.thread)),3)):b("",!0),u.isNested?c(Et)(u.thread).length>0?(t(),r("div",$o,[(t(!0),r(Ee,null,We(c(Et)(u.thread).slice(0,3),S=>(t(),r("span",{key:S,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"},p(S),1))),128)),c(Et)(u.thread).length>3?(t(),r("span",Co," +"+p(c(Et)(u.thread).length-3),1)):b("",!0)])):b("",!0):(t(),r("div",_o,[n("span",{class:G(["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"])},p(c(ho)(u.thread)),3),c(Et)(u.thread).length>0?(t(),r("div",wo,[(t(!0),r(Ee,null,We(c(Et)(u.thread).slice(0,3),S=>(t(),r("span",{key:S,class:G(["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"])},p(S),3))),128)),c(Et)(u.thread).length>3?(t(),r("span",{key:0,class:G(["text-[10px]",e.selectedThreadId===u.thread.id?"agents-text-selected-muted":"text-neutral-400"])}," +"+p(c(Et)(u.thread).length-3),3)):b("",!0)])):b("",!0)]))],14,go)):(t(),r("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:gt({paddingLeft:`${12+Math.min(u.depth,6)*8}px`}),onClick:S=>l("toggleDirectory",u.key)},[(t(!0),r(Ee,null,We(c(_a)(u.depth),(S,$)=>(t(),r("span",{key:`directory-line-${$}`,class:G(["pointer-events-none absolute inset-y-1 w-px rounded-full",c(wa)($)]),style:gt(c($a)(S)),"aria-hidden":"true"},null,6))),128)),n("div",To,[u.working?(t(),r("span",Io)):(t(),j(c(Wa),{key:1,size:13,class:"text-neutral-500 dark:text-neutral-400 shrink-0"})),n("span",{class:G(["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":""])},p(u.label)+" ("+p(u.count)+") ",3),u.open?(t(),j(c(Tt),{key:2,size:14,class:"text-neutral-500 dark:text-neutral-400 shrink-0"})):(t(),j(c(jt),{key:3,size:14,class:"text-neutral-500 dark:text-neutral-400 shrink-0"}))])],12,So))],64))),128))}}),Eo=vt(Ao,[["__scopeId","data-v-ce56afa5"]]),Lo={class:"flex flex-col flex-1 min-h-0 overflow-visible"},Ro={class:"px-3 border-b border-neutral-300 dark:border-neutral-700 h-12 flex items-center shrink-0"},Mo={class:"flex items-center w-full min-w-0"},Do={key:0,class:"shrink-0 text-xs font-mono text-neutral-500 dark:text-neutral-400"},Fo=["title"],Po={class:"ml-auto flex shrink-0 items-center gap-1"},No=["title","aria-label","aria-pressed"],zo={key:0,class:"px-3 py-2 border-b border-neutral-200 dark:border-neutral-800 shrink-0 space-y-2"},jo={class:"relative"},Bo={class:"flex items-center gap-2 w-full"},Oo={class:"relative flex-1 min-w-0"},Vo=["value"],qo=["aria-pressed"],Uo=["aria-pressed"],Ho={key:0},Wo={class:"flex items-center gap-2 w-full"},Ko={key:0,class:"flex-1 min-w-0"},Jo={key:0,class:"p-4 flex justify-center"},Go={key:1,class:"p-4 text-red-600 dark:text-red-400"},Yo={key:2,class:"text-neutral-500 dark:text-neutral-400 text-center py-12"},Qo={key:1,class:"text-base"},Xo={key:3,class:"px-2 py-2"},Zo={key:0,class:"p-3 flex justify-center"},el={key:1,class:"p-3 text-center text-[10px] text-neutral-400 dark:text-neutral-500"},Ca="agents.threads.sort",tl=50,Sa=1800,nl=et({__name:"ThreadListPane",props:{selectedThreadId:{},optimisticThread:{},agentId:{},showCollapseButton:{type:Boolean}},emits:["selectThread","collapse","createThread","threadsLoaded"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g(""),h=g(null),u=g(!1),I=g(null),S=g(null),$=g(null),m=g(!1),y=g(!0),L=g(null),C=[{value:"activity",label:"Recent activity"},{value:"created",label:"Newest"},{value:"oldest",label:"Oldest"}],H=g((()=>{try{const E=localStorage.getItem(Ca);if(C.some(N=>N.value===E))return E}catch{}return"activity"})());be(H,E=>{try{localStorage.setItem(Ca,E)}catch{}});const{owners:J}=Ns(),le=T(()=>J.value.filter(E=>E.user_id).map(E=>({value:E.user_id,label:`${E.display_name||E.username||E.email||E.user_id} (${E.thread_count})`}))),X=T(()=>le.value.length>1),ne=g(!1),ue=T(()=>l.agentId!=null);be(()=>l.agentId,E=>{E!=null&&(S.value=E),ne.value=!1},{immediate:!0});const K=g(null),{agents:P,isFetching:M}=ir(),W=T(()=>P.value.map(E=>({value:E.name,label:E.title||E.name}))),q=g(0),_e=g([]),Ne=g(!1),te=g(!1),qe=Sr(E=>{h.value=E||null},300);be(i,E=>{qe(E)});const z=T(()=>{let E=0;return h.value&&E++,S.value&&!ue.value&&E++,$.value&&E++,m.value&&E++,y.value||E++,(L.value||K.value)&&E++,E});function he(){i.value="",h.value=null,ue.value||(S.value=null),$.value=null,m.value=!1,y.value=!0,L.value=null,K.value=null}async function ke(){u.value=!0,await Xe(),I.value?.focus(),I.value?.select()}function Le(){he(),u.value=!1}function we(){u.value?Le():ke()}const{threads:me,hasMore:Se,isFetching:Ae,isFinished:se,error:Z,refetch:Q}=Ps({limit:tl,offset:q,search:h,agentId:S,userId:$,startDate:L,endDate:K,sort:H,executingOnly:m,includeTerminated:y}),ce=g([]),fe=g(new Set);be([h,S,$,m,y,H,L,K],()=>{q.value=0,_e.value=[],ce.value=[],fe.value.clear(),Ne.value=!1,te.value=!1}),be(me,E=>{if(q.value===0){const N=new Map(_e.value.map(Ie=>[Ie.id,Ie]));_e.value=E.map(Ie=>{const re=N.get(Ie.id);if(!re)return Ie;const ze=Ie.last_message_at??0;return(re.last_message_at??0)<=ze?Ie:{...Ie,last_message_at:re.last_message_at,...re.last_message_preview!==void 0?{last_message_preview:re.last_message_preview}:{},...re.last_activity_at!==void 0&&(Ie.last_activity_at??0)<re.last_activity_at?{last_activity_at:re.last_activity_at,executing:re.executing}:{}}})}else{const N=new Set(_e.value.map(re=>re.id)),Ie=E.filter(re=>!N.has(re.id));_e.value=[..._e.value,...Ie],te.value=!0}Ne.value=!1});const Fe=g({}),Ye=g({}),F=g({}),$e=new Set,ye=E=>Fe.value[E]??!1,Re=E=>{Fe.value[E]=!ye(E)},Ve=E=>{Ye.value[E]=!0;const N=setTimeout(()=>{delete Ye.value[E],$e.delete(N)},Sa);$e.add(N)},He=E=>{F.value[E]=!0;const N=setTimeout(()=>{delete F.value[E],$e.delete(N)},Sa);$e.add(N)};Kt(()=>{$e.forEach(E=>clearTimeout(E)),$e.clear()});const ie=E=>Ye.value[E]===!0,de=E=>F.value[E]===!0,ae=E=>{if(S.value&&E.agent_id!==S.value&&E.origin_agent_id!==S.value&&!E.parent||$.value&&E.user_id!==$.value||m.value&&!aa(E)&&!E.parent||!y.value&&E.terminated||L.value&&E.created_at<L.value||K.value&&E.created_at>K.value)return!1;if(h.value){const N=h.value.toLowerCase(),Ie=E.id.toLowerCase().includes(N),re=E.tags.some(ze=>ze.toLowerCase().includes(N));if(!Ie&&!re)return!1}return!0},Me=T(()=>{const E=_e.value.filter(ze=>!fe.value.has(ze.id)),N=new Set(E.map(ze=>ze.id)),re=[...ce.value.filter(ze=>!N.has(ze.id)&&!fe.value.has(ze.id)),...E];return l.optimisticThread&&!re.some(ze=>ze.id===l.optimisticThread?.id)&&re.unshift(l.optimisticThread),re.sort(uo)}),Ke=T(()=>Me.value.filter(E=>!E.parent).length),U=T(()=>ur(Me.value)),Ce=T(()=>Me.value.filter(aa).length),oe=T(()=>mo(Me.value,ye,H.value)),Ue=E=>{const N=oe.value[E],Ie=oe.value[E+1];return N?Ie?N.clusterId!==Ie.clusterId:!0:!1},tt=E=>{const N=oe.value[E],Ie=oe.value[E-1];if(!N||!Ie||N.clusterId!==Ie.clusterId)return!1;const re=N.kind==="directory"||N.kind==="thread"&&N.isNested,ze=Ie.kind==="thread"&&!Ie.isNested;return re&&ze},nt=T(()=>{const E={};for(const N of oe.value)if(!E[N.clusterId]){if(N.kind==="directory"){E[N.clusterId]=!0;continue}if(N.kind==="thread"&&N.isNested){E[N.clusterId]=!0;continue}E[N.clusterId]=!1}return E}),ge=g(null);function O(){Ne.value||Ae.value||!Se.value||(Ne.value=!0,q.value=_e.value.length)}const{arrivedState:ee}=wr(ge,{offset:{bottom:100}});be(()=>ee.bottom,E=>{E&&Se.value&&!Ae.value&&!Ne.value&&O()});const Oe=E=>{const N=P.value.find(re=>re.name===E.agent_name),Ie=E.agent;return{id:E.id,agent_id:E.agent_name,origin_agent_id:E.origin_agent_name??E.agent_name,user_id:E.user_id,tags:E.tags||[],parent:E.parent??null,terminated:E.terminated??null,created_at:E.created_at,last_activity_at:E.last_activity_at??E.created_at,executing:E.executing===!0,last_message_preview:E.last_message_preview??null,last_message_at:E.last_message_at??null,agent:{name:E.agent_name,title:Ie?.title||N?.title,type:Ie?.type||N?.type||"ai_human"}}},pe=async E=>{if(E.type==="thread_created"){const N=Oe(E.thread);if(!ae(N))return;if(N.parent)if(Me.value.filter(re=>re.parent===N.parent&&re.agent_id===N.agent_id).length+1>1){const re=Sn(N.parent,N.agent_id);He(re),ye(re)&&Ve(N.id)}else Ve(N.id);ce.value.unshift(N)}else if(E.type==="thread_updated"){const N=Oe(E.thread),Ie=Me.value.find(d=>d.id===N.id);if(!ae(N)){ce.value=ce.value.filter(d=>d.id!==N.id),_e.value=_e.value.filter(d=>d.id!==N.id);return}fe.value.delete(N.id);const re=ce.value.findIndex(d=>d.id===N.id);re>=0&&(ce.value[re]=N);const ze=_e.value.findIndex(d=>d.id===N.id);if(ze>=0?_e.value[ze]=N:re===-1&&ce.value.unshift(N),!!N.terminated&&!Ie?.terminated)if(N.parent)if((Me.value.filter(f=>f.parent===N.parent&&f.agent_id===N.agent_id).length||1)>1){const f=Sn(N.parent,N.agent_id);He(f),ye(f)&&Ve(N.id)}else Ve(N.id);else Ve(N.id)}else if(E.type==="thread_activity"){const N=Ie=>{const re=Ie.findIndex(ze=>ze.id===E.threadId);re!==-1&&(Ie[re]={...Ie[re],...E.last_activity_at!==void 0?{last_activity_at:E.last_activity_at}:{},...E.executing!==void 0?{executing:E.executing}:{},...E.last_message_preview!==void 0?{last_message_preview:E.last_message_preview}:{},...E.last_message_at!==void 0?{last_message_at:E.last_message_at}:{}})};N(_e.value),N(ce.value)}else E.type==="thread_deleted"&&(fe.value.add(E.threadId),ce.value=ce.value.filter(N=>N.id!==E.threadId))},{wsConnected:D,wsError:xe}=Js({onEvent:pe});be(()=>q.value,E=>{E===0&&(ce.value=[])}),be(()=>[l.selectedThreadId,Me.value],([E,N])=>{if(!E||N.length===0)return;const Ie=new Map(N.map(ze=>[ze.id,ze]));let re=Ie.get(E);for(;re&&re.parent;){const ze=Sn(re.parent,re.agent_id);Fe.value[ze]=!0,re=Ie.get(re.parent)}},{immediate:!0}),be(()=>({rows:oe.value,finished:se.value}),({rows:E,finished:N})=>{const Ie=E.find(re=>re.kind==="thread");N&&!ne.value&&(ne.value=!0,s("threadsLoaded",Ie?.thread.id??null,Me.value.map(re=>re.id)))},{immediate:!0}),o({refetch:Q});const Be=E=>{s("selectThread",E)};return(E,N)=>{const Ie=Wt("FormKit");return t(),r("div",Lo,[n("div",Ro,[n("div",Mo,[n("button",{onClick:N[0]||(N[0]=Ge(re=>s("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($r),{size:18,class:"shrink-0"}),N[12]||(N[12]=n("h2",{class:"truncate text-base font-bold"},"Threads",-1)),!c(Ae)&&Ke.value>0?(t(),r("span",Do," ("+p(Ke.value)+") ",1)):b("",!0),!c(D)||c(xe)?(t(),j(dr,{key:1,class:"shrink-0",connected:c(D),error:c(xe)},null,8,["connected","error"])):b("",!0)]),Ce.value>0?(t(),r("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:`${Ce.value} thread${Ce.value===1?"":"s"} executing right now`},[N[13]||(N[13]=n("span",{class:"thread-working-dot shrink-0","aria-hidden":"true"},null,-1)),n("span",null,p(Ce.value),1)],8,Fo)):b("",!0),n("div",Po,[n("button",{type:"button",class:G(["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:Ge(we,["stop"])},[B(c(Qn),{size:16})],10,No),n("button",{onClick:N[1]||(N[1]=re=>s("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(Ka),{size:16})]),e.showCollapseButton!==!1?(t(),r("button",{key:0,onClick:N[2]||(N[2]=re=>s("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(Ja),{size:17})])):b("",!0)])])]),u.value||z.value>0?(t(),r("div",zo,[n("div",jo,[B(c(Qn),{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:I,"onUpdate:modelValue":N[3]||(N[3]=re=>i.value=re),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),[[Tn,i.value]]),i.value?(t(),r("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:N[4]||(N[4]=re=>{i.value="",h.value=null,ke()})},[B(c(Dt),{size:13})])):b("",!0)]),n("div",Bo,[n("label",Oo,[B(c(Cr),{size:12,class:"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-neutral-400"}),ut(n("select",{"onUpdate:modelValue":N[5]||(N[5]=re=>H.value=re),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(),r(Ee,null,We(C,re=>n("option",{key:re.value,value:re.value},p(re.label),9,Vo)),64))],512),[[Ga,H.value]])]),n("button",{type:"button",class:G(["h-8 shrink-0 rounded-md border px-2 text-[11px] transition-colors",m.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":m.value,title:"Show only threads that are executing right now",onClick:N[6]||(N[6]=re=>m.value=!m.value)}," Working ",10,qo),n("button",{type:"button",class:G(["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:N[7]||(N[7]=re=>y.value=!y.value)}," Open ",10,Uo)]),X.value?(t(),r("div",Ho,[B(Ie,{type:"selectSearch",size:"sm","active-highlight":"",value:$.value||"",options:le.value,placeholder:"All owners","search-placeholder":"Search owners...",onInput:N[8]||(N[8]=re=>$.value=re||null)},null,8,["value","options"])])):b("",!0),n("div",Wo,[ue.value?b("",!0):(t(),r("div",Ko,[B(Ie,{type:"selectSearch",size:"sm","active-highlight":"",value:S.value||"",options:W.value,placeholder:"All agents","search-placeholder":"Search agents...",loading:c(M),onInput:N[9]||(N[9]=re=>S.value=re||null)},null,8,["value","options","loading"])])),B(io,{startDate:L.value,"onUpdate:startDate":N[10]||(N[10]=re=>L.value=re),endDate:K.value,"onUpdate:endDate":N[11]||(N[11]=re=>K.value=re),class:G(ue.value?"w-full":"flex-1 min-w-0")},null,8,["startDate","endDate","class"]),z.value>0?(t(),r("button",{key:1,onClick:he,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(),r("button",{key:2,onClick:Le,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:ge,class:"flex-1 overflow-y-auto text-xs min-h-0"},[c(Ae)&&_e.value.length===0?(t(),r("div",Jo,[B(Ze)])):c(Z)?(t(),r("div",Go," Error: "+p(c(Z)),1)):oe.value.length===0?(t(),r("div",Yo,[z.value>0?(t(),r(Ee,{key:0},[N[14]||(N[14]=n("p",{class:"text-base mb-2"},"No matching threads",-1)),n("button",{onClick:he,type:"button",class:"text-xs text-accent-600 dark:text-accent-400 hover:underline"}," Clear filters ")],64)):(t(),r("p",Qo,"No threads found"))])):(t(),r("div",Xo,[B(Eo,{rows:oe.value,"selected-thread-id":e.selectedThreadId,"working-cluster-ids":U.value,"cluster-has-nested-rows":nt.value,"is-thread-flashing":ie,"is-directory-flashing":de,"has-row-top-gap":tt,"has-row-bottom-border":Ue,onSelectThread:Be,onToggleDirectory:Re},null,8,["rows","selected-thread-id","working-cluster-ids","cluster-has-nested-rows"]),Ne.value||c(Ae)&&_e.value.length>0?(t(),r("div",Zo,[B(Ze)])):te.value&&!c(Se)&&oe.value.length>0?(t(),r("div",el," All "+p(Ke.value)+" threads loaded ",1)):b("",!0)]))],512)])}}}),Lb=vt(nl,[["__scopeId","data-v-309bc05e"]]);function ra(e){return!!e&&typeof e=="object"}function al(e){if(ra(e)&&!Array.isArray(e))return e;if(typeof e=="string")try{const o=JSON.parse(e);return ra(o)&&!Array.isArray(o)?o:void 0}catch{return}}function rl(e){const o=g(null),a=g(!1),l=g(null);let s=null;try{s=os()}catch{}const i=s?.messages??g([]),h=T(()=>s?.groupedMessages?.value?s.groupedMessages.value:s?.workblocks?.value?s.workblocks.value:i.value),u=T(()=>s?.status.value==="connected"),I=g(null);s?.loading??g(!1);const S=T(()=>i.value.some(z=>z.status==="pending"));function $(z){if(!o.value?.agent)return null;const he=o.value.agent,ke=z==="assistant"?"A":"B";return ke==="A"&&he.side_a_label?he.side_a_label:ke==="B"&&he.side_b_label?he.side_b_label:null}function m(z){const he=z.path??"",ke=z.name??he.split("/").pop()??"attachment";return{id:z.id||`att-${he||ke||Math.random().toString(36).slice(2)}`,type:"file",path:he,name:ke,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(m):void 0;try{const he=JSON.parse(z);return Array.isArray(he)&&he.length>0?he.filter(ra).map(m):void 0}catch{return}}}function L(z,he){const ke=[];z.reasoning_content&&ke.push({id:`${z.id}-reasoning`,type:"reasoning",content:z.reasoning_content,created_at:z.created_at});const Le=new Map;for(const Se of z.workItems)Se.type==="tool_result"&&Se.tool_call_id&&Le.set(Se.tool_call_id,Se);for(const Se of z.workItems){if(Se.type==="content"){if(!Se.content)continue;ke.push({id:Se.id,type:"content",content:Se.content,created_at:Se.created_at??z.created_at});continue}if(Se.type!=="tool_call")continue;const Ae=Se.tool_call_id||Se.id,se=Le.get(Ae);let Z="pending";if(se){const Q=(se.content||"").toLowerCase(),ce=Q.includes("failed")||Q.includes("error"),fe=Q.length<500;Z=se.status==="error"||ce&&fe?"failed":"success"}ke.push({id:Se.id,type:"tool_call",content:Se.name||"",created_at:z.created_at,tool_name:Se.name,tool_call_id:Ae,tool_arguments:Se.content||void 0,response:se?.content||null,response_status:Z,response_log_id:null,log_id:null})}const we=ke.some(Se=>Se.type==="tool_call"&&Se.response_status==="pending"),me=z.status!=="pending"&&!we;return{type:"work",id:z.id,role:"assistant",items:ke,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??(me?z.updated_at??z.created_at:null),isComplete:me,sideLabel:$("assistant"),status:z.status}}function C(z){return z==="assistant"?"assistant":"user"}function V(z){for(let he=z.length-1;he>=0;he--){const ke=(z[he].content||"").trim();if(ke.length>0)return ke}return""}function H(z){const he=new Set,ke=[];for(const Le of z){const we=y(Le.attachments);if(we?.length)for(const me of we)he.has(me.path)||(he.add(me.path),ke.push(me))}return ke.length>0?ke:void 0}function J(z){if(!z)return!1;if(z.tool_status==="error"||z.status==="failed")return!0;const he=(z.content||"").toLowerCase();return he?he.includes("failed to execute tool")||he.includes("has reported a failure")||he.includes("execution stopped before completion"):!1}function le(z){const he=z.messages||[],ke=he[he.length-1],Le=ke?C(ke.role):"assistant",we=ke?.log_id??null,me=(z.subagent_status||"").toLowerCase(),Se=J(ke)||me.includes("error")||me.includes("failed"),Ae=V(he),se=H(he),Z=he.filter(Q=>{const ce=y(Q.attachments);return!!Q.content||!!Q.status||!!(ce&&ce.length>0)}).map(Q=>({id:Q.id,role:Q.role,content:Q.content||"",created_at:Q.created_at,silent:Q.silent,attachments:y(Q.attachments)}));return{type:"subagent",id:z.id,role:Le,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:Se,subagentResumable:z.subagent_resumable??null,subagentBlocking:z.subagent_blocking??null,messages:Z,messageCount:he.length,latestContent:Ae,attachments:se,log_id:we,sideLabel:$(Le),silent:he.length>0&&he.every(Q=>!!Q.silent)}}function X(z){const he=(z.subagents||[]).map(Le=>le(Le)),ke=he.reduce((Le,we)=>Le?we.updated_at>Le.updated_at?we:Le:we,null);return{type:"subagent_group",id:z.id,role:ke?.role??"assistant",created_at:z.created_at,updated_at:z.updated_at,subagents:he,count:he.length,log_id:ke?.log_id??null,sideLabel:ke?.sideLabel??$("assistant"),silent:he.every(Le=>!!Le.silent)}}function ne(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 ue=T(()=>{const z=[],ke=h.value.filter(we=>(we.depth??0)===0);let Le=[];for(let we=0;we<ke.length;we++){const me=ke[we];if(z[z.length-1]?.role,"type"in me&&me.type==="workblock"){const ce=L(me);z.push(ce),me.attachments&&me.attachments.length>0&&Le.push(...me.attachments.map(m));continue}if("type"in me&&me.type==="subagent_block"){Le=[],z.push(le(me));continue}if("type"in me&&me.type==="subagent_group_block"){Le=[],z.push(X(me));continue}if("type"in me&&me.type==="status"){Le=[],z.push(ne(me));continue}const Ae=me,se=Ae.role;if(Ae.role==="tool")continue;const Z=y(Ae.attachments);let Q;if((Le.length>0||Z)&&(Q=[...Le,...Z||[]],Le=[]),Ae.content||se==="system"||Ae.status==="pending"||Q?.length){const ce={type:"text",id:Ae.id,role:se,content:Ae.content||"",attachments:Q?.length?Q:void 0,created_at:Ae.created_at,log_id:Ae.log_id||null,sideLabel:$(se),isOptimistic:Ae.isOptimistic,status:Ae.status,silent:Ae.silent,metadata:al(Ae.metadata)};z.push(ce)}}return z});async function K(){if(!e.value){o.value=null;return}try{const z=await fetch(Qe(`/api/threads/${e.value}`));z.ok&&(o.value=await z.json())}catch{o.value=null}}async function P(z){if(e.value){if(s?.deleteMessage){await s.deleteMessage(z);return}try{if(!(await fetch(Qe(`/api/threads/${e.value}/messages/${z}`),{method:"DELETE"})).ok)throw new Error("Failed to delete message")}catch(he){throw he}}}async function M(z,he){if(e.value)try{if(!(await fetch(Qe(`/api/threads/${e.value}/messages/${z}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:he})})).ok)throw new Error("Failed to update message")}catch(ke){throw ke}}be(e,async z=>{z?(a.value=!0,await K(),a.value=!1):o.value=null},{immediate:!0});const W=s?.sendMessage,q=s?.stopExecution,_e=s?.attachments??g([]),Ne=s?.addAttachment??(()=>{}),te=s?.removeAttachment??(()=>{}),qe=s?.clearAttachments??(()=>{});return{messages:ue,threadInfo:o,isFetching:a,error:l,wsConnected:u,wsError:I,isExecuting:S,sendMessage:W,stopThread:q,attachments:_e,addAttachment:Ne,removeAttachment:te,clearAttachments:qe,deleteMessageById:P,updateMessageContent:M}}const Un="__shiki_highlighter__";let wn=null;async function sl(){return typeof window<"u"&&window[Un]?window[Un]:wn||(wn=Promise.all([ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.d),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.e),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.f),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.g),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.i),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.k),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.l),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.m),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.n),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.s),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.o),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.p),__vite__mapDeps([0,1])),ft(()=>import("./vue-Dw7WLX4c.js").then(e=>e.bh),__vite__mapDeps([2,3,1,0])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.y),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.q),__vite__mapDeps([0,1])),ft(()=>import("./syntax-D-ZcovVx.js").then(e=>e.r),__vite__mapDeps([0,1]))]).then(async([{createHighlighterCore:e},{createJavaScriptRegexEngine:o},a,l,s,i,h,u,I,S,$,m,y,L,C,V])=>{const H=await e({themes:[C.default,V.default],langs:[a.default,l.default,s.default,i.default,h.default,u.default,I.default,S.default,$.default,m.default,y.default,L.default],engine:o()});return typeof window<"u"&&(window[Un]=H),H}),wn)}const ol={class:"code-block"},ll={key:0,class:"text-xs text-neutral-500 p-2"},il=["innerHTML"],zt=et({__name:"CodeBlock",props:{code:{},language:{}},setup(e){const o=e,a=g(""),l=g(!0),s={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"]),h=$=>{const m=$?.trim().toLowerCase()||"text";return s[m]??m},u=$=>$.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),I=$=>`<pre class="shiki shiki-text"><code>${u($)}</code></pre>`,S=async()=>{const $=o.code??"";if(!$){a.value='<pre class="shiki"><code></code></pre>',l.value=!1;return}try{const m=await sl(),y=h(o.language);i.has(y)?a.value=m.codeToHtml($,{lang:y,themes:{light:"github-light",dark:"github-dark"}}):a.value=I($)}catch{a.value=I($)}finally{l.value=!1}};return It(()=>{S()}),be(()=>o.code,()=>{S()}),be(()=>o.language,()=>{S()}),($,m)=>(t(),r("div",ol,[l.value?(t(),r("div",ll,"Loading...")):(t(),r("div",{key:1,innerHTML:a.value,class:"code-content"},null,8,il))]))}}),dl={key:0,class:"absolute inset-0 flex items-center justify-center bg-neutral-100 dark:bg-neutral-800"},ul={key:1,class:"absolute inset-0 flex items-center justify-center bg-neutral-100 dark:bg-neutral-800 text-neutral-400"},cl=["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]"},Hn=et({__name:"FileAttachment",props:{attachment:{},threadId:{},showRemove:{type:Boolean}},emits:["remove"],setup(e,{emit:o}){const a=Tr(),l=Ir(),s=e,i=o,h=g(!0),u=g(!1),I=T(()=>s.attachment.mimeType.startsWith("image/")),S=T(()=>!!s.attachment.thumbnailBase64),$=T(()=>{if(!s.threadId||!s.attachment.path)return"";const H=s.attachment.path.startsWith("/")?s.attachment.path.slice(1):s.attachment.path;return Qe(`/api/threads/${s.threadId}/fs/${H}`)}),m=T(()=>I.value?s.attachment.thumbnailBase64?`data:image/webp;base64,${s.attachment.thumbnailBase64}`:$.value:"");function y(){h.value=!1,u.value=!1}function L(){h.value=!1,u.value=!0}function C(){i("remove",s.attachment.id)}function V(){if(!s.attachment.path){$.value&&window.open($.value,"_blank");return}a.replace({query:{...l.query,inspector:"files",filePath:s.attachment.path},hash:l.hash})}return(H,J)=>(t(),r("div",{class:G(["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]":I.value,"px-2.5 py-1.5":!I.value,"cursor-pointer":I.value&&$.value}]),onClick:J[0]||(J[0]=le=>I.value&&$.value?V():void 0)},[I.value?(t(),r(Ee,{key:0},[h.value&&!u.value&&!S.value?(t(),r("div",dl,[...J[1]||(J[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&&!S.value?(t(),r("div",ul,[B(c(Ya),{size:24})])):b("",!0),ut(n("img",{src:m.value||$.value,alt:e.attachment.name,class:"w-full h-full object-cover",onLoad:y,onError:L},null,40,cl),[[_t,!h.value&&!u.value||S.value]]),$.value?(t(),r("div",fl,[...J[2]||(J[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(),r(Ee,{key:1},[B(c(In),{size:14,class:"text-neutral-500 mr-1 flex-shrink-0"}),n("span",pl,p(e.attachment.name),1)],64)),e.showRemove?(t(),r("button",{key:2,onClick:Ge(C,["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(Dt),{size:10})])):b("",!0)],2))}}),vl=/https:\/\/[^\s"'<>()\][]+/g;function fr(e){if(!e)return null;const o=e.match(vl);if(!o)return null;for(const a of o){const l=a.replace(/[.,;:!?]+$/,"");let s;try{s=new URL(l)}catch{continue}if(s.protocol==="https:"&&s.pathname.endsWith("/settings/billing"))return s.toString()}return null}const hl=["onMouseenter","onMouseleave","onClick"],ml=["onClick"],gl={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"},xl={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"},bl={key:0,class:"w-full text-center text-xs text-neutral-400 dark:text-neutral-500 py-1"},yl={key:0,class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-400 dark:text-neutral-500 leading-none mb-1"},kl=["contenteditable","onInput"],_l=["innerHTML"],wl=["href"],$l={key:4,class:"inline-flex items-center gap-1 rounded-full bg-neutral-100 dark:bg-neutral-800/60 px-3 py-2"},Cl={key:0,class:"inline-flex items-center gap-1.5"},Sl={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"},Tl=["title","onClick"],Il={key:0,class:"flex flex-wrap gap-2 px-4"},Al=["onClick","onMouseenter"],El={key:0,class:"flex items-center gap-2 px-4 py-2 min-w-0"},Ll={key:0,class:"truncate text-neutral-700 dark:text-neutral-300 min-w-0"},Rl={key:1,class:"truncate text-neutral-600 dark:text-neutral-400 min-w-0"},Ml={class:"text-neutral-500 dark:text-neutral-400 flex-shrink-0"},Dl={class:"work-op-strip","aria-label":"Operation statuses"},Fl=["title"],Pl={key:1,class:"px-4 py-2 space-y-2.5"},Nl={class:"flex items-center gap-2"},zl={class:"min-w-0 truncate text-neutral-700 dark:text-neutral-300"},jl={class:"shrink-0 text-neutral-500 dark:text-neutral-400"},Bl={class:"work-op-strip","aria-label":"Operation statuses"},Ol=["title"],Vl={key:0,class:"space-y-1"},ql=["onClick","onMouseenter"],Ul=["title"],Hl={class:"font-mono font-medium text-neutral-800 dark:text-neutral-100 flex-shrink-0"},Wl={key:2,class:"text-neutral-500 dark:text-neutral-400 truncate flex-1 min-w-0"},Kl={key:0,class:"pl-5 mt-2 space-y-3"},Jl={key:0},Gl={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"},Yl={class:"pt-1 font-mono text-[12px] text-neutral-500 dark:text-neutral-500"},Ql={class:"min-w-0"},Xl={key:1,class:"break-words text-neutral-800 dark:text-neutral-200"},Zl={key:1},ei={class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-400 dark:text-neutral-500 mb-1"},ti=["onClick","onMouseenter"],ni={key:0,class:"m-0 whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed"},ai={key:1},ri=["onClick"],si={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"},oi={key:2,class:"pl-5 pb-1 break-words text-neutral-600 dark:text-neutral-400"},li={class:"flex items-center justify-between gap-3 border-b border-neutral-100 px-3 py-2 dark:border-neutral-900"},ii={class:"min-w-0"},di={class:"truncate text-[12px] font-medium text-neutral-800 dark:text-neutral-100"},ui={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"},ci={class:"divide-y divide-neutral-100 dark:divide-neutral-900"},fi=["onClick"],pi={class:"flex items-center gap-3"},vi=["src"],hi={class:"min-w-0 flex-1"},mi={class:"flex items-center gap-2"},gi={class:"truncate text-[13px] font-medium text-neutral-900 dark:text-neutral-50"},xi={class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},bi={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"},ki={key:0,class:"ml-12 mt-1.5 space-y-1.5 border-l border-neutral-200 pl-2.5 dark:border-neutral-800"},_i={class:"flex items-center gap-2 text-[10px] text-neutral-500 dark:text-neutral-400"},wi={class:"font-medium uppercase text-neutral-600 dark:text-neutral-300"},$i={key:0,class:"italic"},Ci=["innerHTML"],Si={key:1,class:"mt-2 flex flex-wrap gap-2"},Ti=["onClick"],Ii={class:"flex items-center gap-3"},Ai=["src"],Ei={class:"min-w-0 flex-1"},Li={class:"flex items-center gap-2"},Ri={class:"truncate text-[13px] font-medium text-neutral-900 dark:text-neutral-50"},Mi={class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Di={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"},Fi={class:"ml-12 mt-1 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Pi={key:0,class:"ml-12 mt-2 space-y-1.5 border-l border-neutral-200 pl-2.5 dark:border-neutral-800"},Ni={class:"flex items-center gap-2 text-[10px] text-neutral-500 dark:text-neutral-400"},zi={class:"font-medium uppercase text-neutral-600 dark:text-neutral-300"},ji={key:0,class:"italic"},Bi=["innerHTML"],Oi={key:1,class:"mt-2 flex flex-wrap gap-2"},Vi=et({__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,s=a;ya.setOptions({gfm:!0,breaks:!0});function i(v){const x=l.selectedForDelete?.has(v)??!1;s("selectionChange",v,!x)}function h(v,x){const Te=v.target.innerText;s("messageEdit",x,Te)}function u(v){return v.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function I(v){if(typeof window>"u"||typeof DOMParser>"u")return v.replace(/<script[\s\S]*?>[\s\S]*?<\/script>/gi,"").replace(/\son\w+="[^"]*"/gi,"").replace(/\s(href|src)="javascript:[^"]*"/gi,"");const x=new DOMParser().parseFromString(v,"text/html"),w=["script","style","iframe","object","embed"];for(const Te of w)x.querySelectorAll(Te).forEach(Y=>Y.remove());return x.body.querySelectorAll("*").forEach(Te=>{for(const Y of Array.from(Te.attributes)){const Je=Y.name.toLowerCase(),ct=Y.value.trim().toLowerCase();(Je.startsWith("on")||Je==="style"||(Je==="href"||Je==="src")&&(ct.startsWith("javascript:")||ct.startsWith("data:text/html")))&&Te.removeAttribute(Y.name)}}),x.body.innerHTML}function S(v){return!!v&&typeof v=="object"&&!Array.isArray(v)}function $(v){const x=u(N(v||"")),w=ya.parse(x,{async:!1});return I(w)}function m(v){const x=v.content??"";return v.status!=="failed"&&!x.includes("[ERROR]")?null:fr(x)}function y(v){return l.editedMessages?.has(v)??!1}const L=g(new Map);function C(v,x){x?L.value.set(v,x):L.value.delete(v)}function V(v,x){C(v,x instanceof HTMLElement?x:null)}function H(v){const x=l.messages.findIndex(w=>w.log_id===v);if(x<=0)return-1;for(let w=x-1;w>=0;w--){const Te=l.messages[w];if(Te.role==="user")return w;if(Te.role==="assistant"&&Te.log_id)break}return-1}function J(v){for(let x=0;x<l.messages.length;x++){const w=l.messages[x];if(w.log_id===v||w.type==="work"&&w.items&&w.items.some(Je=>Je.log_id===v||Je.response_log_id===v))return x}return-1}function le(v,x){const Te=J(v);if(Te===-1)return!1;const Y=L.value.get(Te);if(!Y)return!1;const Je=l.messages[Te];let ct=null;if(Je.role==="assistant"&&Je.log_id){const $t=H(Je.log_id);ct=$t!==-1?L.value.get($t):null}const yt=x.getBoundingClientRect(),nn=Y.getBoundingClientRect();if(nn.top<yt.top){const Nn=(ct||Y).getBoundingClientRect().top-yt.top-10;x.scrollBy({top:Nn,behavior:"smooth"})}else if(nn.bottom>yt.bottom){const $t=nn.bottom-yt.bottom+10;x.scrollBy({top:$t,behavior:"smooth"})}else if(ct){const $t=ct.getBoundingClientRect();if($t.top<yt.top){const bn=$t.top-yt.top-10;x.scrollBy({top:bn,behavior:"smooth"})}}return!0}function X(v){for(const x of l.messages){if(x.type!=="work")continue;if(x.items.some(Y=>Y.log_id===v||Y.response_log_id===v))return!0}return!1}o({scrollToLogId:le,hasWorkblockForLogId:X});function ne(v){const x=l.messages[v];if(x.log_id)return x.log_id;if(x.role==="user")for(let w=v+1;w<l.messages.length;w++){const Te=l.messages[w];if(Te.log_id)return Te.log_id;if(Te.role==="user")break}return null}function ue(v){if(v.type!=="text")return null;const x=v.metadata;if(!S(x))return null;const w=x.scheduledEffect;return S(w)?w:null}function K(v){const x=ue(v);return typeof x?.id=="string"?x.id:null}function P(v){const x=ue(v);return typeof x?.name=="string"?x.name:null}function M(v){return K(v)!==null}function W(v){const x=K(v),w=P(v);return w&&x?`${w} (${x})`:w||"Scheduled effect"}function q(v){if(v.type!=="text")return null;const x=ue(v),w=typeof x?.id=="string"?x.id:null;return w?{id:w,name:typeof x?.name=="string"?x.name:null}:null}function _e(v,x){return x?ne(v)===x:!1}function Ne(v,x){if(l.isEditMode||v.silent||v.role==="user"&&!M(v))return"";const w=K(v),Te=!!ne(x)||M(v);return _e(x,l.selectedLogId??null)||w&&w===l.selectedEffectId?"message-log-state message-log-state--selected":ne(x)&&_e(x,l.hoveredLogId??null)?"message-log-state message-log-state--hovered":Te?"message-log-state":""}function te(v){const x=ne(v);x&&s("messageHover",x)}function qe(v){ne(v)&&s("messageHover",null)}function z(v){const x=l.messages[v],w=ne(v),Te=q(x);(w||Te)&&s("messageClick",x.id,w,Te)}function he(v){const x=l.messages[v],w=q(x);w&&s("messageClick",x.id,ne(v),w)}const ke=g(new Set),Le=g(new Set),we=g(new Set),me=g(new Set);function Se(v){ke.value.has(v)?ke.value.delete(v):ke.value.add(v)}function Ae(v){Le.value.has(v)?Le.value.delete(v):Le.value.add(v)}function se(v){we.value.has(v)?we.value.delete(v):we.value.add(v)}function Z(v){me.value.has(v)?me.value.delete(v):me.value.add(v)}function Q(v){if(!v)return{};try{const x=JSON.parse(v);return x&&typeof x=="object"&&!Array.isArray(x)?x:{raw:x}}catch{return{raw:v}}}function ce(v){if(!v)return null;const x=Q(v),w=Object.keys(x);if(w.length===0)return null;const Te=x[w[0]];return typeof Te=="string"?Oe(Re(Te)):JSON.stringify(Te)}const fe={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 Fe(v){if(typeof v!="string")return null;const x=v.split("?")[0]?.split("#")[0]?.split(".").pop()?.toLowerCase();return x?fe[x]??null:null}function Ye(v){if(typeof v!="string")return null;const x=v.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 F(v){try{return JSON.stringify(JSON.parse(v),null,2)}catch{return null}}function $e(v){try{return JSON.parse(v)}catch{return null}}function ye(v){return v&&typeof v=="object"&&!Array.isArray(v)?v:null}function Re(v){return v.replace(/\\r\\n/g,`
3
3
  `).replace(/\\n/g,`
4
- `).replace(/\\t/g," ")}function Ve(v){const x=Le(v);return x.includes(`
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 He(v){const x=Le(v).trim();return x?/^\s*</.test(x)||/<\/[a-z][\s\S]*>/i.test(x)?"html":/^\s*[{[]/.test(x)&&F(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 le(v,x,w){const Te=v.toLowerCase(),Y=De(w.path)||De(w.filePath)||De(w.filename)||De(w.name),Je=Ye(w.mimeType)||Ye(w.mime_type)||Ye(w.contentType)||Ye(w.content_type);return typeof x=="string"&&(Te.includes("content")||Te.includes("code")||Te.includes("source"))?Je||Y||He(x)||"text":typeof x!="string"||Array.isArray(x)||x&&typeof x=="object"?"json":He(x)||"text"}function ie(v,x,w){if(Array.isArray(x)||x&&typeof x=="object")return!0;if(typeof x!="string")return!1;const Te=v.toLowerCase();return w!=="text"||x.length>120||Ve(x)||Te.includes("content")||Te.includes("body")||Te.includes("schema")||Te.includes("payload")}function ae(v,x){return typeof v!="string"?JSON.stringify(v,null,2):x==="json"?F(v)||v:Le(v)}function Re(v){const x=Q(v);return Object.entries(x).map(([w,Te])=>{const Y=le(w,Te,x);return{key:w,language:Y,code:ae(Te,Y),isBlock:ie(w,Te,Y)}})}function Ke(v){const x=ye(v);if(!x||typeof x.content!="string")return null;const w=Ye(x.mimeType)||Ye(x.mime_type)||Ye(x.contentType)||Ye(x.content_type)||De(x.path)||De(x.filePath)||De(x.name)||He(x.content)||"text";return{code:Le(x.content),language:w}}function U(v){const x=N(v),w=$e(x),Te=Ke(w);if(Te)return Te;if(w!==null)return{code:JSON.stringify(w,null,2),language:"json"};const Y=Le(x);return{code:Y,language:Y.includes("```")?"markdown":"text"}}function Ce(v){return Le(N(v))}function se(v){return ee(v.items)?Oe(ee(v.items)||""):O(v)}function Ue(v){return v.type==="tool_call"?v.response_status==="failed"?"work-op-square--failed":v.response_status==="success"?"work-op-square--success":"work-op-square--pending":v.type==="content"?"work-op-square--success":"work-op-square--neutral"}function tt(v){if(v.type==="tool_call"){const x=v.tool_name||"Tool call";return v.response_status==="failed"?`${x} failed`:v.response_status==="success"?`${x} succeeded`:`${x} pending`}return v.type}function nt(v){return new Date(v/1e3).toLocaleTimeString()}function ge(v){const x=Math.round(v/1e6);if(x<1)return"< 1s";if(x<60)return`${x}s`;const w=Math.floor(x/60),Te=x%60;return`${w}m ${Te}s`}function O(v){if(v.status==="pending")return"...";if(!v.isComplete)return"Working...";let x;return v.request_sent_at&&v.response_completed_at?x=v.response_completed_at-v.request_sent_at:x=v.updated_at-v.created_at,`Worked for ${ge(x)}`}function ee(v){const x=v.filter(w=>w.type==="content");if(x.length===0){const w=v.filter(Te=>Te.type==="reasoning");return w.length>0?w[w.length-1].content:null}return x[x.length-1].content}function Oe(v){const w=v.trim().split(`
6
- `)[0];return w.length>60?w.substring(0,60):w}function pe(v){return l.selectedMessageId===v.id?!0:l.selectedLogId?v.items.some(x=>x.log_id===l.selectedLogId||x.response_log_id===l.selectedLogId):!1}function D(v){return!!(l.selectedLogId&&(v.log_id===l.selectedLogId||v.response_log_id===l.selectedLogId))}function xe(v){return l.hoveredLogId?v.items.some(x=>x.log_id===l.hoveredLogId||x.response_log_id===l.hoveredLogId):!1}function je(v){return!!(l.hoveredLogId&&(v.log_id===l.hoveredLogId||v.response_log_id===l.hoveredLogId))}function M(v){const x=[];for(const w of v.items)w.log_id&&x.push(w.log_id),w.response_log_id&&x.push(w.response_log_id);return x}function N(v){return v?v.trim():""}function Ne(v,x){if(v.type!=="text")return;const w=v.attachments;if(!w?.length)return;if(v.silent)return w;const Te=l.messages[x-1];if(!Te||Te.type!=="text"||!Te.silent||!(Te.content||"").trim().startsWith("Initial asset attachment path:"))return w;const Je=new Set((Te.attachments||[]).map(yt=>yt.path));if(Je.size===0)return w;const ct=w.filter(yt=>!Je.has(yt.path));return ct.length>0?ct:void 0}function de(v){return v.subagentThreadName||v.subagentTitle||v.subagentName||"Subagent"}function Be(v){return v.subagentId.slice(0,8)}function ut(v){return En(v.subagentName||v.subagentTitle||v.subagentId)}function d(v){return(v.subagentStatus||"running").toLowerCase()}function f(v){return ht(v)?"error":Me(v)?"queued":bt(v)?"running":"complete"}function _(v){return ht(v)?"bg-red-50 text-red-700 ring-red-200 dark:bg-red-950/40 dark:text-red-300 dark:ring-red-900":bt(v)?"bg-blue-50 text-blue-700 ring-blue-200 dark:bg-blue-950/40 dark:text-blue-300 dark:ring-blue-900":Me(v)?"bg-neutral-100 text-neutral-600 ring-neutral-200 dark:bg-neutral-800 dark:text-neutral-300 dark:ring-neutral-700":"bg-emerald-50 text-emerald-700 ring-emerald-200 dark:bg-emerald-950/40 dark:text-emerald-300 dark:ring-emerald-900"}function ve(v){return N(v.latestContent||"").split(`
7
- `).find(Boolean)||"No activity yet"}function Me(v){const x=d(v);return x==="pending"||x==="queued"}function ot(v){return v==="tool"?"Initialization":v==="user"?"Subagent":v==="assistant"?"Assistant":"System"}function it(v){return ht(v)?"Reported failure to parent":Me(v)?"Queued":bt(v)?"Working":"Returned result to parent"}function ht(v){return v.subagentHasError===!0}function bt(v){if(ht(v)||Me(v))return!1;const x=d(v);return x!=="idle"&&x!=="terminated"}function mn(v){if(v.type==="status")return!0;if(v.type!=="text"||v.role!=="system")return!1;if(en(v)!==null)return!0;const x=v.content||"";return x.includes("Execution stopped")?!0:/subagents?\s+started:/i.test(x)}function en(v){if(v.type!=="text"||v.role!=="system")return null;const x=v.metadata;return!S(x)||x.user_command!==!0?null:((v.content||"").split(`
8
- `,1)[0]??"").replace(/^\$\s*/,"").trim()||"(command)"}function gn(v){const x=en(v);return x!==null?`User ran command: ${x}`:v.content||""}function xn(v){const x=v?.trim();return x?x.charAt(0).toUpperCase():"A"}function tn(v){return v.role==="assistant"?l.assistantAvatarSrc??null:v.role==="user"?l.userAvatarSrc??null:null}return(v,x)=>(t(),r("div",null,[(t(!0),r(Ae,null,We(e.messages,(w,Te)=>(t(),r("div",{key:w.id,ref_for:!0,ref:Y=>V(Te,Y),class:"flex items-center gap-2 pb-3",onMouseenter:Y=>te(Te),onMouseleave:Y=>qe(Te),onClick:Y=>e.isEditMode?i(w.id):z(Te)},[e.isEditMode&&w.role!=="system"?(t(),r("button",{key:0,onClick:Ge(Y=>i(w.id),["stop"]),class:G(["flex-shrink-0 w-6 h-6 rounded-full border-2 flex items-center justify-center transition-all",{"border-red-500 bg-red-500":e.selectedForDelete?.has(w.id),"border-green-500 bg-green-500":!e.selectedForDelete?.has(w.id)&&y(w.id),"border-neutral-400 dark:border-neutral-500 bg-transparent hover:border-neutral-500 dark:hover:border-neutral-400":!e.selectedForDelete?.has(w.id)&&!y(w.id)}])},[e.selectedForDelete?.has(w.id)?(t(),r("svg",gl,[...x[5]||(x[5]=[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.5 12.75l6 6 9-13.5"},null,-1)])])):y(w.id)?(t(),r("svg",xl,[...x[6]||(x[6]=[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125"},null,-1)])])):b("",!0)],10,ml)):b("",!0),n("div",{class:G(["flex-1 flex items-center gap-2 min-w-0",{"justify-start":w.type==="subagent"||w.type==="subagent_group"||w.role==="assistant","justify-end":w.type!=="subagent"&&w.type!=="subagent_group"&&w.role==="user","justify-center":w.type==="status"||w.role==="system","cursor-pointer":(ne(Te)||q(w))&&!e.isEditMode}])},[mn(w)?(t(),r("div",bl,p(gn(w)),1)):w.type==="text"?(t(),r("div",{key:1,class:G(["flex flex-col gap-2",{"w-full max-w-none items-start":w.role==="assistant","max-w-[72%] items-end":w.role==="user","max-w-[80%] items-center":w.role!=="assistant"&&w.role!=="user"}])},[n("div",{class:G(["message-text-frame",[Pe(w,Te),{"w-full":w.role==="assistant"}]])},[n("div",{class:G(["message-text-surface transition-all",[w.silent?"border-l-2 border-neutral-300 dark:border-neutral-700 pl-3.5 pr-4 py-2.5 text-[13px] leading-5 text-neutral-600 dark:text-neutral-400 min-h-[2.5rem]":w.role==="assistant"?"bg-transparent text-neutral-900 dark:text-neutral-100 rounded-2xl px-4 py-2.5 text-[15px] leading-7 min-h-[2.5rem]":w.role==="user"?"agents-surface-message agents-text-selected rounded-2xl px-4 py-2.5 text-[15px] leading-7 min-h-[2.5rem]":"bg-neutral-100 text-neutral-600 dark:bg-neutral-900 dark:text-neutral-400 text-[13px] leading-5 rounded-2xl px-4 py-2.5 min-h-[2.5rem]",{"opacity-60":w.isOptimistic},{"ring-2 ring-green-500 dark:ring-green-400":e.isEditMode&&y(w.id),"border border-dashed border-neutral-400 dark:border-neutral-500":e.isEditMode&&w.role!=="system"&&!y(w.id)}]])},[w.silent?(t(),r("div",yl," silent ")):b("",!0),e.isEditMode&&(w.content||e.isEditMode)?(t(),r("div",{key:1,class:G(["whitespace-pre-wrap break-words outline-none",w.silent?"text-[11px] leading-4":"text-[15px] leading-7"]),contenteditable:e.isEditMode&&w.role!=="system",onInput:Y=>h(Y,w.id),onClick:x[0]||(x[0]=Y=>e.isEditMode&&Y.stopPropagation())},p(N(w.content)),43,kl)):w.content?(t(),r("div",{key:2,class:G(["markdown-content break-words outline-none",w.silent?"text-[13px] leading-5":"text-[15px] leading-7"]),innerHTML:$(w.content)},null,10,_l)):b("",!0),!e.isEditMode&&m(w)?(t(),r("a",{key:3,href:m(w),target:"_blank",rel:"noopener noreferrer",class:"mt-2 inline-flex items-center gap-1.5 rounded-full bg-red-600 px-3.5 py-1.5 text-xs font-semibold text-white transition-colors hover:bg-red-700 dark:bg-red-500 dark:text-red-950 dark:hover:bg-red-400",onClick:x[1]||(x[1]=Ge(()=>{},["stop"]))},[...x[7]||(x[7]=[rt(" Add credits ",-1),n("svg",{class:"h-3 w-3",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},[n("path",{"fill-rule":"evenodd",d:"M4.25 5.5a.75.75 0 0 0-.75.75v8.5c0 .414.336.75.75.75h8.5a.75.75 0 0 0 .75-.75v-4a.75.75 0 0 1 1.5 0v4A2.25 2.25 0 0 1 12.75 17h-8.5A2.25 2.25 0 0 1 2 14.75v-8.5A2.25 2.25 0 0 1 4.25 4h5a.75.75 0 0 1 0 1.5h-5Z","clip-rule":"evenodd"}),n("path",{"fill-rule":"evenodd",d:"M6.194 12.753a.75.75 0 0 0 1.06.053L16.5 4.44v2.81a.75.75 0 0 0 1.5 0v-4.5a.75.75 0 0 0-.75-.75h-4.5a.75.75 0 0 0 0 1.5h2.553l-9.056 8.194a.75.75 0 0 0-.053 1.06Z","clip-rule":"evenodd"})],-1)])],8,wl)):w.status==="pending"?(t(),r("div",$l,[...x[8]||(x[8]=[n("span",{class:"typing-dot",style:{"animation-delay":"0ms"}},null,-1),n("span",{class:"typing-dot",style:{"animation-delay":"150ms"}},null,-1),n("span",{class:"typing-dot",style:{"animation-delay":"300ms"}},null,-1)])])):b("",!0)],2),w.status!=="pending"?(t(),r("div",{key:0,class:G(["text-[10px] mt-1 flex items-center gap-2 px-4",{"justify-start":w.role==="assistant","justify-end":w.role==="user","justify-center":w.role==="system"}])},[w.sideLabel?(t(),r("span",Cl,[tn(w)?(t(),j(pn,{key:0,icon:tn(w),seed:w.sideLabel,class:"h-4 w-4 shrink-0 rounded-[4px] object-cover"},null,8,["icon","seed"])):(t(),r("span",Sl,p(xn(w.sideLabel)),1)),n("span",{class:G(w.silent?"text-neutral-400 dark:text-neutral-500":"text-neutral-500 dark:text-neutral-400")},p(w.sideLabel),3)])):b("",!0),R(w)?(t(),r("button",{key:1,type:"button",class:"inline-flex cursor-pointer items-center gap-1 rounded px-0.5 text-neutral-500 transition-colors hover:text-neutral-900 dark:text-neutral-400 dark:hover:text-neutral-100",title:W(w),onClick:Ge(Y=>he(Te),["stop"])},[B(c(St),{size:11,class:"shrink-0"}),x[9]||(x[9]=n("span",null,"via Scheduled Effect",-1))],8,Tl)):b("",!0),n("span",{class:G(w.silent?"text-neutral-400 dark:text-neutral-500":"text-neutral-500 dark:text-neutral-400")},p(nt(w.created_at)),3)],2)):b("",!0)],2),Ne(w,Te)?.length&&e.threadId?(t(),r("div",Il,[(t(!0),r(Ae,null,We(Ne(w,Te),Y=>(t(),j(Un,{key:Y.id,attachment:Y,threadId:e.threadId},null,8,["attachment","threadId"]))),128))])):b("",!0)],2)):w.type==="work"?(t(),r("div",{key:2,class:G(["w-full text-[13px] leading-5 transition-all rounded-xl bg-neutral-100 dark:bg-neutral-900/70 ring-1 ring-neutral-300/80 dark:ring-neutral-700",{"cursor-pointer":!e.isEditMode,"text-neutral-700 dark:text-neutral-300":!w.silent,"text-neutral-500 dark:text-neutral-400 opacity-90":w.silent,"agents-ring-selected ring-2":!e.isEditMode&&(pe(w)||xe(w))}]),onClick:Y=>!e.isEditMode&&(Se(w.id),M(w)[0]&&s("messageClick",w.id,M(w)[0])),onMouseenter:Y=>!e.isEditMode&&M(w)[0]&&s("messageHover",M(w)[0]),onMouseleave:x[4]||(x[4]=Y=>!e.isEditMode&&s("messageHover",null))},[ke.value.has(w.id)?(t(),r("div",Pl,[n("div",Nl,[B(c(Tt),{size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"}),n("span",zl,p(se(w)),1),x[11]||(x[11]=n("span",{class:"text-neutral-400 dark:text-neutral-600"},"·",-1)),n("span",jl,p(w.items.length)+" op"+p(w.items.length!==1?"s":""),1),n("div",Bl,[(t(!0),r(Ae,null,We(w.items,Y=>(t(),r("span",{key:Y.id,class:G(["work-op-square",Ue(Y)]),title:tt(Y)},null,10,Ol))),128))])]),(t(!0),r(Ae,null,We(w.items,Y=>(t(),r("div",{key:Y.id},[Y.type==="tool_call"?(t(),r("div",Vl,[n("div",{onClick:Ge(Je=>{Ie(Y.id),Y.log_id&&s("messageClick",w.id,Y.log_id)},["stop"]),onMouseenter:Ge(Je=>Y.log_id&&s("messageHover",Y.log_id),["stop"]),onMouseleave:x[2]||(x[2]=Ge(Je=>s("messageHover",null),["stop"])),class:G(["flex items-center gap-2 cursor-pointer rounded-md hover:bg-neutral-100/70 dark:hover:bg-neutral-800/50 transition-colors min-w-0 -mx-1 px-1 py-0.5",{"ring-1 agents-ring-selected":D(Y)||je(Y)}])},[Ee.value.has(Y.id)?(t(),j(c(Tt),{key:1,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})):(t(),j(c(jt),{key:0,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})),n("span",{class:G(["work-op-square",Ue(Y)]),title:tt(Y),"aria-hidden":"true"},null,10,Ul),n("span",Hl,p(Y.tool_name),1),ce(Y.tool_arguments)?(t(),r("span",Wl,p(ce(Y.tool_arguments)),1)):b("",!0)],42,ql),Ee.value.has(Y.id)?(t(),r("div",Kl,[Y.tool_arguments?(t(),r("div",Jl,[x[12]||(x[12]=n("div",{class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-400 dark:text-neutral-500 mb-1"},"Arguments",-1)),n("div",Gl,[(t(!0),r(Ae,null,We(Re(Y.tool_arguments),Je=>(t(),r("div",{key:Je.key,class:"grid grid-cols-[5.5rem_minmax(0,1fr)] gap-x-3 gap-y-1 py-1.5 first:pt-0 last:pb-0"},[n("div",Yl,p(Je.key),1),n("div",Ql,[Je.isBlock?(t(),j(zt,{key:0,code:Je.code,language:Je.language},null,8,["code","language"])):(t(),r("span",Xl,p(Je.code),1))])]))),128))])])):b("",!0),Y.response?(t(),r("div",Zl,[n("div",ei,p(Y.response_status==="failed"?"Error":"Response"),1),n("div",{class:G(["cursor-pointer rounded-md px-2.5 py-2 text-neutral-800 ring-1 ring-neutral-200/70 dark:text-neutral-200 dark:ring-neutral-800/70",{"bg-rose-50/70 text-rose-800 ring-rose-200/70 dark:bg-rose-950/30 dark:text-rose-200 dark:ring-rose-900/60":Y.response_status==="failed","bg-white dark:bg-neutral-950/60":Y.response_status!=="failed","ring-1 agents-ring-selected":e.selectedLogId&&Y.response_log_id===e.selectedLogId||e.hoveredLogId&&Y.response_log_id===e.hoveredLogId&&Y.response_log_id!==e.selectedLogId}]),onClick:Ge(Je=>Y.response_log_id&&s("messageClick",w.id,Y.response_log_id),["stop"]),onMouseenter:Ge(Je=>Y.response_log_id&&s("messageHover",Y.response_log_id),["stop"]),onMouseleave:x[3]||(x[3]=Ge(Je=>s("messageHover",null),["stop"]))},[Y.response_status==="failed"?(t(),r("pre",ni,p(Ce(Y.response)),1)):(t(),j(zt,{key:1,code:U(Y.response).code,language:U(Y.response).language},null,8,["code","language"]))],42,ti)])):b("",!0)])):b("",!0)])):Y.type==="reasoning"?(t(),r("div",ai,[n("button",{onClick:Ge(Je=>re(Y.id),["stop"]),class:"flex items-center gap-2 -mx-1 px-1 py-0.5 rounded-md hover:bg-neutral-100/70 dark:hover:bg-neutral-800/50 transition-colors"},[_e.value.has(Y.id)?(t(),j(c(Tt),{key:1,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})):(t(),j(c(jt),{key:0,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})),x[13]||(x[13]=n("span",{class:"font-medium text-neutral-800 dark:text-neutral-100"},"Reasoning",-1))],8,ri),_e.value.has(Y.id)?(t(),r("div",si,p(N(Y.content)),1)):b("",!0)])):Y.type==="content"?(t(),r("div",oi,p(N(Y.content)),1)):b("",!0)]))),128))])):(t(),r("div",El,[B(c(jt),{size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"}),ee(w.items)?(t(),r("span",Ll,p(Oe(ee(w.items)||"")),1)):(t(),r("span",Rl,p(O(w)),1)),x[10]||(x[10]=n("span",{class:"text-neutral-400 dark:text-neutral-600 flex-shrink-0"},"·",-1)),n("span",Ml,p(w.items.length)+" op"+p(w.items.length!==1?"s":""),1),n("div",Dl,[(t(!0),r(Ae,null,We(w.items,Y=>(t(),r("span",{key:Y.id,class:G(["work-op-square",Ue(Y)]),title:tt(Y)},null,10,Fl))),128))])]))],42,Al)):w.type==="subagent_group"?(t(),r("div",{key:3,class:G(["w-full rounded-xl border border-neutral-200 bg-white text-xs text-neutral-800 shadow-sm transition-all dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-100",{"border-dashed bg-transparent text-neutral-700 dark:text-neutral-200":w.silent,"ring-2 agents-ring-selected":!e.isEditMode&&(we(Te,e.selectedLogId)||we(Te,e.hoveredLogId))}])},[n("div",li,[n("div",ii,[x[14]||(x[14]=n("div",{class:"text-[10px] font-medium uppercase text-neutral-400"}," Subagent activity ",-1)),n("div",di,p(w.count)+" active profile"+p(w.count===1?"":"s"),1)]),n("span",ui,p(w.count),1)]),n("div",ci,[(t(!0),r(Ae,null,We(w.subagents,Y=>(t(),r("div",{key:Y.id,class:"px-3 py-2"},[n("button",{type:"button",class:"w-full rounded-lg px-1 py-1 text-left transition-colors hover:bg-neutral-50 dark:hover:bg-neutral-900/70",onClick:Ge(Je=>Z(Y.id),["stop"])},[n("div",pi,[n("img",{src:ut(Y),alt:"",class:"h-8 w-8 shrink-0 rounded-lg object-cover ring-1 ring-neutral-200 dark:ring-neutral-800"},null,8,vi),n("div",hi,[n("div",mi,[n("span",gi,p(de(Y)),1),n("span",{class:G(["shrink-0 rounded-full px-1.5 py-0.5 text-[10px] leading-none ring-1 ring-inset",_(Y)])},p(f(Y)),3)]),n("div",xi,p(it(Y))+" · ref "+p(Be(Y)),1)]),n("span",bi,p(Y.messageCount),1),me.value.has(Y.id)?(t(),j(c(Tt),{key:0,size:14,class:"shrink-0 text-neutral-400"})):(t(),j(c(jt),{key:1,size:14,class:"shrink-0 text-neutral-400"}))]),n("div",yi,p(ve(Y)),1)],8,fi),me.value.has(Y.id)?(t(),r("div",ki,[(t(!0),r(Ae,null,We(Y.messages,Je=>(t(),r("div",{key:Je.id,class:"rounded-md border border-neutral-200 bg-neutral-50 px-2 py-1.5 dark:border-neutral-800 dark:bg-neutral-900/60"},[n("div",_i,[n("span",wi,p(ot(Je.role)),1),n("span",null,p(nt(Je.created_at)),1),Je.silent?(t(),r("span",$i,"silent")):b("",!0)]),Je.content?(t(),r("div",{key:0,class:"markdown-content mt-0.5 break-words text-[11px] leading-4 text-neutral-700 dark:text-neutral-200",innerHTML:$(Je.content)},null,8,Ci)):b("",!0),Je.attachments?.length&&e.threadId?(t(),r("div",Si,[(t(!0),r(Ae,null,We(Je.attachments,ct=>(t(),j(Un,{key:ct.id,attachment:ct,threadId:e.threadId},null,8,["attachment","threadId"]))),128))])):b("",!0)]))),128))])):b("",!0)]))),128))])],2)):w.type==="subagent"?(t(),r("div",{key:4,class:G(["w-full rounded-xl border border-neutral-200 bg-white px-3 py-3 text-xs text-neutral-800 shadow-sm transition-all dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-100",{"border-dashed bg-transparent text-neutral-700 dark:text-neutral-200":w.silent,"ring-2 agents-ring-selected":!e.isEditMode&&(we(Te,e.selectedLogId)||we(Te,e.hoveredLogId))}])},[n("button",{type:"button",class:"w-full rounded-lg text-left transition-colors hover:bg-neutral-50 dark:hover:bg-neutral-900/70",onClick:Ge(Y=>Z(w.id),["stop"])},[n("div",Ii,[n("img",{src:ut(w),alt:"",class:"h-9 w-9 shrink-0 rounded-lg object-cover ring-1 ring-neutral-200 dark:ring-neutral-800"},null,8,Ai),n("div",Ei,[n("div",Li,[n("span",Ri,p(de(w)),1),n("span",{class:G(["shrink-0 rounded-full px-1.5 py-0.5 text-[10px] leading-none ring-1 ring-inset",_(w)])},p(f(w)),3)]),n("div",Mi,p(it(w))+" · ref "+p(Be(w)),1)]),n("span",Di,p(w.messageCount),1),me.value.has(w.id)?(t(),j(c(Tt),{key:0,size:14,class:"shrink-0 text-neutral-400"})):(t(),j(c(jt),{key:1,size:14,class:"shrink-0 text-neutral-400"}))]),n("div",Fi,p(ve(w)),1)],8,Ti),me.value.has(w.id)?(t(),r("div",Pi,[(t(!0),r(Ae,null,We(w.messages,Y=>(t(),r("div",{key:Y.id,class:"rounded-md border border-neutral-200 bg-neutral-50 px-2 py-1.5 dark:border-neutral-800 dark:bg-neutral-900/60"},[n("div",Ni,[n("span",zi,p(ot(Y.role)),1),n("span",null,p(nt(Y.created_at)),1),Y.silent?(t(),r("span",ji,"silent")):b("",!0)]),Y.content?(t(),r("div",{key:0,class:"markdown-content mt-0.5 break-words text-[11px] leading-4 text-neutral-700 dark:text-neutral-200",innerHTML:$(Y.content)},null,8,Bi)):b("",!0),Y.attachments?.length&&e.threadId?(t(),r("div",Oi,[(t(!0),r(Ae,null,We(Y.attachments,Je=>(t(),j(Un,{key:Je.id,attachment:Je,threadId:e.threadId},null,8,["attachment","threadId"]))),128))])):b("",!0)]))),128))])):b("",!0)],2)):b("",!0)],2)],40,hl))),128))]))}}),qi=vt(Vi,[["__scopeId","data-v-53df6ee5"]]),Ui=et({__name:"ThreadVariableForm",props:{modelValue:{},scanned:{default:()=>[]},disabled:{type:Boolean,default:!1},requireRequiredValues:{type:Boolean,default:!0},groupName:{default:"env"}},emits:["update:modelValue"],setup(e,{emit:o}){const a=e,l=o,s=h=>h&&typeof h=="object"&&!Array.isArray(h)?h:{},i=T({get:()=>s(a.modelValue),set:h=>l("update:modelValue",s(h))});return(h,u)=>{const I=Wt("FormKit");return t(),j(I,{type:"group",name:e.groupName,modelValue:i.value,"onUpdate:modelValue":u[1]||(u[1]=S=>i.value=S),"outer-class":"$reset",classes:{outer:"$remove:mb-4 mb-0"}},{default:Fe(()=>[B(ls,{modelValue:i.value,"onUpdate:modelValue":u[0]||(u[0]=S=>i.value=S),scanned:e.scanned,"allow-declaration-edit":!1,"allow-secret-values":!0,"allow-secret-declarations":!0,"require-required-values":e.requireRequiredValues,"show-custom-rows":!1,disabled:e.disabled,thin:""},null,8,["modelValue","scanned","require-required-values","disabled"])]),_:1},8,["name","modelValue"])}}}),Hi={key:0,class:"create-thread-inline-header flex h-12 shrink-0 items-center border-b border-neutral-300 px-7 dark:border-neutral-700"},Wi={class:"text-base font-bold"},Ki={class:"hidden"},Ji={class:"create-thread-scroll flex-1 overflow-y-auto p-6"},Gi={class:"space-y-4"},Yi={key:1},Qi={class:"px-3 py-2 rounded-lg border border-neutral-200 dark:border-neutral-700 bg-neutral-50 dark:bg-neutral-900 text-sm text-neutral-700 dark:text-neutral-300"},Xi={key:2},Zi={class:"flex items-center justify-between mb-1"},ed={key:0,class:"flex items-center gap-1.5 ml-auto"},td={key:0},nd={key:1},ad={key:2},rd={key:3,class:"space-y-4"},sd={key:4,class:"text-center text-sm text-neutral-500"},od={key:5,class:"space-y-3"},ld={key:6,class:"text-center text-sm text-neutral-500"},id={key:7,class:"create-thread-inline-actions flex flex-col items-end gap-2"},dd={class:"create-thread-action-buttons flex gap-2"},ud={key:0,class:"create-thread-footer p-6 border-t border-neutral-200 dark:border-neutral-700 flex-shrink-0"},cd={class:"create-thread-footer-row flex justify-between items-center"},fd={class:"create-thread-action-buttons flex gap-2"},Ta="__optional__",pd=et({__name:"CreateThreadModal",props:{modelValue:{type:Boolean},editThread:{},lockedAgentId:{},inline:{type:Boolean}},emits:["update:modelValue","thread-created","thread-updated"],setup(e,{emit:o}){const a=e,l=o,s=T(()=>!!a.editThread),i=g(""),h=g(!1),u=g(!1),I=g(""),S=g([]),$=g(!1),m=g({}),y=g(null),E=re=>re&&typeof re=="object"&&!Array.isArray(re)?re:{},C=re=>re==null?"":String(re),V=re=>C(re).split(",").map(Z=>Z.trim()).filter(Z=>Z.length>0),H=re=>{const Z=E(re),Q={};for(const[ce,fe]of Object.entries(Z)){if(ce.startsWith(Ta)||/^(text|checkbox)_\d+$/.test(ce))continue;const De=C(fe);De&&(Q[ce]=De)}for(const[ce,fe]of Object.entries(Z)){if(!ce.startsWith(Ta)||!Array.isArray(fe))continue;let De=0;for(const Ye of fe){const F=E(Ye);if(Object.values(F).some(ye=>C(ye).trim().length>0)){for(const[ye,Le]of Object.entries(F)){if(/^(text|checkbox)_\d+$/.test(ye))continue;const Ve=C(Le),He=De===0?ye:`${ye}__${De+1}`;if(De===0){Ve&&(Q[He]=Ve);continue}Q[He]=Ve}De+=1}}}return Q},J=(re,Z)=>{const Q=new Map;for(const fe of Z||[])Q.set(fe.property,fe.type==="secret"?"secret":"text");const ce={};for(const fe of Object.keys(re)){const De=fe.replace(/__\d+$/,"");ce[fe]=Q.get(De)||"secret"}return ce},oe=re=>{const Z=new URL(Qe(`/api/variables/agents/${encodeURIComponent(re)}`),window.location.origin);return Z.searchParams.set("include_optional_disabled","1"),Z.toString()},X=()=>({include_subagents:!1,agent_id:s.value?a.editThread?.agent_id||"":a.lockedAgentId||"",tags_csv:s.value&&a.editThread?.tags?.join(", ")||"",data:{},env:{}}),ne=re=>{y.value=re},ue=re=>{const Z=E(re),Q=C(Z.agent_id),ce=!!Z.include_subagents;return i.value!==Q&&(i.value=Q),h.value!==ce&&(h.value=ce),""},{data:K,isFetching:P,execute:R}=Ot(Qe("/api/agents"),{immediate:!1}).json(),W=T(()=>{if(!K.value)return[];const re=K.value?.agents||[];return s.value||h.value?re:re.filter(Z=>Z.type!=="dual_ai")}),q=()=>W.value.map(re=>({value:re.id,label:re.title})),we=T(()=>!a.lockedAgentId||!K.value?a.lockedAgentId||"":(K.value?.agents||[]).find(Q=>Q.id===a.lockedAgentId)?.title||a.lockedAgentId),Pe=T(()=>!i.value||!K.value?null:(K.value?.agents||[]).find(Z=>Z.id===i.value)||null),{data:te,isFetching:qe,execute:z}=Ot(T(()=>Pe.value?.side_a_agent_prompt?Qe(`/api/prompts/${encodeURIComponent(Pe.value.side_a_agent_prompt)}`):""),{immediate:!1}).json(),he=T(()=>{if(!te.value)return null;const Z=(te.value.prompt||te.value).required_schema;if(!Z)return null;try{return typeof Z=="string"?JSON.parse(Z):Z}catch{return null}}),ke=T(()=>{const re=he.value;return!re||!re.properties?[]:Object.entries(re.properties).map(([Z,Q])=>({name:Z,type:Array.isArray(Q.type)?Q.type[0]||"string":Q.type||"string",description:typeof Q.description=="string"?Q.description:"",required:re.required?.includes(Z)||!1,enum:Q.enum}))}),Ee=T(()=>S.value.length>0),_e=async re=>{if(!re){S.value=[];return}$.value=!0;try{const Z=await fetch(oe(re));if(!Z.ok){S.value=[];return}const Q=await Z.json();S.value=Q.variables||[]}catch{S.value=[]}finally{$.value=!1}};be(i,async re=>{m.value={},re&&Pe.value?.side_a_agent_prompt?await z():te.value=null,re?await _e(re):S.value=[]}),be([h,W,s],()=>{s.value||!i.value||W.value.some(Z=>Z.id===i.value)||(i.value="",y.value?.at("agent_id")?.input(""))});const me=()=>{i.value=s.value?a.editThread?.agent_id||"":a.lockedAgentId||"",h.value=!1,I.value="",m.value={},un(y),S.value=[],te.value=null,y.value?.reset(X())},Se=async re=>{u.value=!0,I.value="",un(y);const Z=E(re),Q=V(Z.tags_csv);try{if(s.value){const ye=await fetch(Qe(`/api/threads/${a.editThread.id}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tags:Q})});if(!ye.ok){const Le=await ye.json();dn(Le,y);return}l("thread-updated"),me(),l("update:modelValue",!1);return}const ce={agent_id:C(Z.agent_id),tags:Q.length>0?Q:void 0},fe=E(Z.data);Object.keys(fe).length>0&&(ce.data=fe);const De=H(Z.env);Object.keys(De).length>0&&(ce.env=De,ce.env_types=J(De,S.value));const Ye=await fetch(Qe("/api/threads"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ce)});if(!Ye.ok){const ye=await Ye.json();dn(ye,y);return}const $e=(await Ye.json()).threadId;if(!$e){dn({error:"Thread created but ID not found in response"},y);return}l("thread-created",$e),me(),l("update:modelValue",!1)}catch(ce){const fe=(ce instanceof Error?ce.message:"")||`Failed to ${s.value?"update":"create"} thread`;dn({error:fe},y)||(I.value=fe)}finally{u.value=!1}},Ie=()=>{me(),l("update:modelValue",!1)};return be(()=>a.modelValue,async re=>{re&&(a.lockedAgentId&&(h.value=!0),await R(),me(),a.lockedAgentId&&(i.value=a.lockedAgentId,await Xe(),y.value?.at("agent_id")?.input(a.lockedAgentId)))},{immediate:!0}),(re,Z)=>{const Q=Wt("FormKit");return e.modelValue?(t(),j(Mt(e.inline?"div":ar),{key:0,"model-value":e.modelValue,"onUpdate:modelValue":Z[1]||(Z[1]=ce=>re.$emit("update:modelValue",ce)),title:s.value?"Edit Thread":"Create New Thread",width:"max-w-3xl","content-padding":!1,class:G(["create-thread-shell",e.inline?"flex h-full min-h-0 flex-col bg-white dark:bg-neutral-950":""])},{default:Fe(()=>[B(c(sa),{config:c(oa)},{default:Fe(()=>[e.inline?(t(),r("div",Hi,[n("h3",Wi,p(s.value?"Edit Thread":"Create New Thread"),1)])):b("",!0),B(Q,{type:"form",id:"create-thread-form",actions:!1,onSubmit:Se,onNode:ne,"form-class":"$reset flex-1 min-h-0 flex flex-col"},{default:Fe(({value:ce})=>[n("span",Ki,p(ue(ce)),1),n("div",Ji,[n("div",Gi,[I.value?(t(),j(c(tr),{key:0,variant:"error"},{default:Fe(()=>[rt(p(I.value),1)]),_:1})):b("",!0),e.lockedAgentId?(t(),r("div",Yi,[B(Q,{type:"hidden",name:"agent_id",value:e.lockedAgentId},null,8,["value"]),Z[2]||(Z[2]=n("label",{class:"block text-zinc-700 dark:text-zinc-300 text-xs font-bold mb-1"},"Agent",-1)),n("div",Qi,p(we.value),1)])):(t(),r("div",Xi,[n("div",Zi,[Z[4]||(Z[4]=n("label",{class:"block text-zinc-700 dark:text-zinc-300 text-xs font-bold"}," Agent ",-1)),s.value?b("",!0):(t(),r("div",ed,[Z[3]||(Z[3]=n("span",{class:"text-[11px] text-neutral-500 dark:text-neutral-400"}," Include subagents ",-1)),B(Q,{type:"toggle",name:"include_subagents",value:!1,"on-value":!0,"off-value":!1,"on-value-label":"","off-value-label":"",disabled:c(P),classes:{outer:"$remove:mb-4 mb-0",wrapper:"$remove:items-center flex items-center",label:"$remove:hidden",inner:"h-4",track:"h-4 w-7 rounded-full",thumb:"h-3 w-3",valueLabel:"$remove:hidden"}},null,8,["disabled"])]))]),B(Q,{type:"selectSearch",name:"agent_id",value:i.value,options:q,disabled:c(P)||s.value,placeholder:"Select an agent...",validation:"required","validation-visibility":"submit"},null,8,["value","disabled"]),B(c(jn),{class:"mt-1"},{default:Fe(()=>[s.value?(t(),r("span",td,"Agent cannot be changed after thread creation")):h.value?(t(),r("span",nd,"Choose which agent will handle this conversation (subagents included)")):(t(),r("span",ad,"Choose which agent will handle this conversation"))]),_:1})])),!s.value&&ke.value.length>0&&!c(qe)?(t(),r("div",rd,[Z[5]||(Z[5]=n("h4",{class:"text-sm font-medium text-neutral-700 dark:text-neutral-300"}," Required Information ",-1)),B(Q,{type:"group",name:"data","outer-class":"$reset",classes:{outer:"$remove:mb-4 mb-0"}},{default:Fe(()=>[(t(!0),r(Ae,null,We(ke.value,fe=>(t(),r("div",{key:fe.name,class:"space-y-2"},[fe.enum?(t(),j(Q,{key:0,type:"selectSearch",name:fe.name,label:fe.name,options:[{value:"",label:"Select..."},...fe.enum.map(De=>({value:De,label:De}))],validation:fe.required?"required":"","validation-visibility":"submit"},null,8,["name","label","options","validation"])):fe.type==="string"?(t(),j(Q,{key:1,type:"text",name:fe.name,label:fe.name,placeholder:fe.description,validation:fe.required?"required":"","validation-visibility":"submit"},null,8,["name","label","placeholder","validation"])):fe.type==="number"||fe.type==="integer"?(t(),j(Q,{key:2,type:"number",name:fe.name,label:fe.name,placeholder:fe.description,validation:fe.required?"required":"","validation-visibility":"submit"},null,8,["name","label","placeholder","validation"])):fe.type==="boolean"?(t(),j(Q,{key:3,type:"checkbox",name:fe.name,label:fe.name,validation:fe.required?"required":"","validation-visibility":"submit"},null,8,["name","label","validation"])):(t(),j(Q,{key:4,type:"textarea",name:fe.name,label:fe.name,placeholder:fe.description||`Enter ${fe.name} (JSON format)`,validation:fe.required?"required":"","validation-visibility":"submit",rows:3},null,8,["name","label","placeholder","validation"])),fe.description?(t(),j(c(jn),{key:5,class:"mt-1"},{default:Fe(()=>[rt(p(fe.description),1)]),_:2},1024)):b("",!0)]))),128))]),_:1})])):b("",!0),!s.value&&c(qe)?(t(),r("div",sd," Loading agent requirements... ")):b("",!0),!s.value&&Ee.value?(t(),r("div",od,[Z[6]||(Z[6]=n("h4",{class:"text-sm font-medium text-neutral-700 dark:text-neutral-300"}," Variables ",-1)),Z[7]||(Z[7]=n("p",{class:"text-xs text-neutral-500 dark:text-neutral-400"}," Required variables must be resolved before a new thread can be created. ",-1)),B(Ui,{modelValue:m.value,"onUpdate:modelValue":Z[0]||(Z[0]=fe=>m.value=fe),"group-name":"env",scanned:S.value,disabled:u.value,"require-required-values":!0},null,8,["modelValue","scanned","disabled"])])):b("",!0),!s.value&&$.value?(t(),r("div",ld," Scanning environment variables... ")):b("",!0),n("div",null,[B(Q,{type:"text",name:"tags_csv",value:s.value&&a.editThread?.tags?.join(", ")||"",label:"Tags",placeholder:"research, urgent, production"},null,8,["value"]),B(c(jn),{class:"mt-1"},{default:Fe(()=>[...Z[8]||(Z[8]=[rt(" Comma-separated tags to help organize and search threads ",-1)])]),_:1})]),e.inline?(t(),r("div",id,[B(c(Qn),{node:y.value||void 0},null,8,["node"]),n("div",dd,[B(c(kn),{variant:"ghost",size:"sm",disabled:u.value,onClick:Ie},{default:Fe(()=>[...Z[9]||(Z[9]=[rt(" Cancel ",-1)])]),_:1},8,["disabled"]),B(c(kn),{variant:"primary",size:"sm",disabled:u.value||c(P),loading:u.value,type:"submit",form:"create-thread-form"},{default:Fe(()=>[...Z[10]||(Z[10]=[rt(" Create Thread ",-1)])]),_:1},8,["disabled","loading"])])])):b("",!0)])]),e.inline?b("",!0):(t(),r("div",ud,[n("div",cd,[B(c(Qn),{node:y.value||void 0},null,8,["node"]),n("div",fd,[B(c(kn),{variant:"ghost",size:"sm",disabled:u.value,onClick:Ie},{default:Fe(()=>[...Z[11]||(Z[11]=[rt(" Cancel ",-1)])]),_:1},8,["disabled"]),B(c(kn),{variant:"primary",size:"sm",disabled:u.value||c(P),loading:u.value,type:"submit",form:"create-thread-form"},{default:Fe(()=>[s.value?(t(),r(Ae,{key:0},[rt(p(u.value?"Updating...":"Update Thread"),1)],64)):(t(),r(Ae,{key:1},[rt(p(u.value?"Creating...":"Create Thread"),1)],64))]),_:1},8,["disabled","loading"])])])]))]),_:1})]),_:1},8,["config"])]),_:1},8,["model-value","title","class"])):b("",!0)}}}),vd=vt(pd,[["__scopeId","data-v-85821044"]]),hd=["accept"],md=["disabled"],gd=et({__name:"FileUpload",props:{isProcessing:{type:Boolean},accept:{},buttonClass:{}},emits:["filesSelected"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g(null),h=T(()=>l.accept||"image/*,.pdf,.txt,.md,.json,.csv");function u(){i.value?.click()}function I($){const m=$.target;m.files&&m.files.length>0&&(s("filesSelected",m.files),m.value="")}function S($){const m=$.clipboardData?.items;if(!m)return;const y=[];for(let E=0;E<m.length;E++){const C=m[E];if(C.kind==="file"){const V=C.getAsFile();V&&y.push(V)}}if(y.length>0){const E=new DataTransfer;y.forEach(C=>E.items.add(C)),s("filesSelected",E.files)}}return o({handlePaste:S}),($,m)=>(t(),r(Ae,null,[n("input",{ref_key:"fileInputRef",ref:i,type:"file",accept:h.value,multiple:"",class:"hidden",onChange:I},null,40,hd),n("button",{type:"button",onClick:u,class:G(["p-1.5 hover:bg-neutral-100 dark:hover:bg-neutral-800 rounded-lg transition-colors text-neutral-500 hover:text-neutral-700 dark:hover:text-neutral-300",[e.buttonClass,{"opacity-50 cursor-not-allowed":e.isProcessing}]]),disabled:e.isProcessing,title:"Attach files","aria-label":"Attach files"},[B(c(Ar),{size:18})],10,md)],64))}}),xd={class:"absolute bottom-0 left-4 right-4 z-20 pb-4 pt-8 min-w-0 overflow-hidden bg-gradient-to-t from-white via-white/95 to-white/0 dark:from-neutral-900 dark:via-neutral-900/95 dark:to-neutral-900/0"},bd={key:0,class:"mb-2 rounded-md border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700 dark:border-red-900/60 dark:bg-red-950/30 dark:text-red-300"},yd={key:1,class:"mb-2 flex flex-wrap gap-2"},kd={key:0,class:"w-16 h-16 rounded-lg overflow-hidden border border-neutral-200 dark:border-neutral-700 bg-neutral-100 dark:bg-neutral-800"},_d=["src","alt"],wd={key:1,class:"w-full h-full flex items-center justify-center"},$d={key:1,class:"h-16 px-3 rounded-lg border border-neutral-200 dark:border-neutral-700 bg-neutral-100 dark:bg-neutral-800 flex items-center gap-2"},Cd=["title"],Sd=["onClick"],Td=["title","aria-label"],Id=["src"],Ad=["disabled","placeholder"],Ed=["disabled"],Ld={key:0,xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"2",stroke:"currentColor",class:"w-4 h-4"},Rd={key:1,class:"w-4 h-4"},Md=et({__name:"MessageComposer",props:{attachments:{},assistantAvatarSrc:{},assistantAvatarSeed:{},userAvatarSrc:{},sideALabel:{},sideBLabel:{},isExecuting:{type:Boolean},isProcessingFiles:{type:Boolean},sendMessage:{type:Function},stopThread:{type:Function},addFiles:{type:Function},removeAttachment:{type:Function}},emits:["sent"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g(null),h=g(null),u=g(""),I=g("B"),S=g(!1),$=g(!1),m=g(null),y=T(()=>l.attachments.length>0),E=T(()=>I.value==="A"?l.sideALabel:l.sideBLabel),C=T(()=>`Message from ${E.value}...`),V=g(C.value);let H=null;const J=()=>{H&&(clearTimeout(H),H=null)};be(C,R=>{J(),V.value="";const W=q=>{V.value=R.slice(0,q),q<R.length&&(H=setTimeout(()=>W(q+1),16))};H=setTimeout(()=>W(1),20)},{immediate:!0}),wt(J);const oe=(R=h.value)=>{if(!R){S.value=!1;return}const W=R.style.minHeight;R.style.minHeight="0px",R.style.height="auto";const q=R.scrollHeight,we=Math.min(q,160);R.style.height=`${we}px`,R.style.minHeight=W,S.value=q>52||u.value.includes(`
9
- `)},X=R=>{oe(R.target instanceof HTMLTextAreaElement?R.target:void 0)};be(u,async()=>{await Xe(),oe()});const ne=async()=>{I.value=I.value==="A"?"B":"A",await Xe(),h.value?.focus()},ue=async()=>{if(!(u.value.trim().length>0)&&!y.value||$.value)return;m.value=null;const W=u.value,q=I.value==="A"?"assistant":"user";u.value="",S.value=!1,await Xe(),oe(),$.value=!0;try{await l.sendMessage({role:q,content:W}),s("sent")}catch{m.value="Message could not be sent. Please try again."}finally{$.value=!1,await Xe(),h.value?.focus()}},K=R=>{R.key==="Enter"&&!R.shiftKey&&(R.preventDefault(),ue())},P=async()=>{try{m.value=null,await l.stopThread()}catch{m.value="Thread execution could not be stopped. Please try again."}};return o({focusInput:async()=>{await Xe(),h.value?.focus()}}),(R,W)=>(t(),r("div",xd,[m.value?(t(),r("div",bd,p(m.value),1)):b("",!0),e.attachments.length>0?(t(),r("div",yd,[(t(!0),r(Ae,null,We(e.attachments,q=>(t(),r("div",{key:q.id,class:"relative group"},[q.isImage?(t(),r("div",kd,[q.previewUrl?(t(),r("img",{key:0,src:q.previewUrl,alt:q.name,class:"w-full h-full object-cover"},null,8,_d)):(t(),r("div",wd,[...W[2]||(W[2]=[n("div",{class:"w-4 h-4 border-2 border-neutral-300 border-t-neutral-600 rounded-full animate-spin"},null,-1)])]))])):(t(),r("div",$d,[n("span",{class:"text-xs text-neutral-600 dark:text-neutral-300 max-w-[80px] truncate",title:q.name},p(q.name),9,Cd)])),n("button",{onClick:Ge(we=>e.removeAttachment(q.id),["stop"]),class:"absolute -top-1 -right-1 w-4 h-4 rounded-full bg-neutral-600 dark:bg-neutral-500 text-white flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity hover:bg-red-500"},[...W[3]||(W[3]=[n("span",{class:"text-[10px] font-bold leading-none"},"x",-1)])],8,Sd)]))),128))])):b("",!0),n("div",{class:G(["mx-auto max-w-3xl rounded-[28px] border border-neutral-200 bg-white/95 p-2 backdrop-blur transition-[border-radius] dark:border-neutral-700 dark:bg-neutral-900/95",S.value?"grid grid-cols-[auto_auto_1fr_auto] grid-rows-[auto_auto] gap-x-2 gap-y-2":"flex items-end gap-2"])},[n("button",{onClick:ne,type:"button",class:G(["sender-avatar-switch relative h-8 w-9 shrink-0 self-center",S.value?"col-start-1 row-start-2":""]),title:`Sending as ${E.value}. Click to switch.`,"aria-label":`Sending as ${E.value}. Click to switch.`},[B(pn,{icon:e.assistantAvatarSrc,seed:e.assistantAvatarSeed??e.sideALabel,class:G(["sender-avatar rounded-lg border-2 border-white bg-white object-cover shadow-sm ring-1 ring-black/10 dark:border-neutral-900 dark:bg-neutral-900 dark:ring-white/15",I.value==="A"?"sender-avatar--front":"sender-avatar--back"])},null,8,["icon","seed","class"]),n("img",{src:e.userAvatarSrc,alt:"",class:G(["sender-avatar rounded-lg border-2 border-white bg-white object-cover shadow-sm ring-1 ring-black/10 dark:border-neutral-900 dark:bg-neutral-900 dark:ring-white/15",I.value==="B"?"sender-avatar--front":"sender-avatar--back"])},null,10,Id)],10,Td),n("div",{class:G(S.value?"col-start-2 row-start-2 self-center":"")},[B(gd,{ref_key:"fileUploadRef",ref:i,"is-processing":!1,"button-class":S.value?"":"-translate-y-[0.1875rem]",onFilesSelected:e.addFiles},null,8,["button-class","onFilesSelected"])],2),dt(n("textarea",{ref_key:"messageTextarea",ref:h,"onUpdate:modelValue":W[0]||(W[0]=q=>u.value=q),onKeydown:K,onPaste:W[1]||(W[1]=q=>i.value?.handlePaste(q)),disabled:$.value,placeholder:V.value,rows:"1",class:G(["resize-none bg-transparent text-sm text-black focus:outline-none disabled:opacity-50 dark:text-white",S.value?"col-span-4 row-start-1 min-h-24 w-full px-3 py-3":"min-h-9 flex-1 px-1 py-2"]),style:{"max-height":"160px"},onInput:X},null,42,Ad),[[Sn,u.value]]),e.isExecuting?(t(),r("button",{key:1,id:"stop-thread-button",onClick:P,class:G(["h-9 w-9 shrink-0 rounded-full flex items-center justify-center transition-all bg-red-600 text-white dark:bg-red-500 hover:bg-red-700 dark:hover:bg-red-600",S.value?"col-start-4 row-start-2 justify-self-end":""]),title:"Stop execution"},[...W[5]||(W[5]=[n("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"2",stroke:"currentColor",class:"w-4 h-4"},[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5.25 7.5A2.25 2.25 0 017.5 5.25h9a2.25 2.25 0 012.25 2.25v9a2.25 2.25 0 01-2.25 2.25h-9a2.25 2.25 0 01-2.25-2.25v-9z"})],-1)])],2)):(t(),r("button",{key:0,id:"send-message-button",onClick:ue,disabled:!u.value.trim()&&!y.value||$.value||e.isProcessingFiles,class:G(["h-9 w-9 shrink-0 rounded-full flex items-center justify-center transition-all",[S.value?"col-start-4 row-start-2 justify-self-end":"",{"bg-accent-600 text-white hover:bg-accent-700 dark:bg-accent-500 dark:hover:bg-accent-400":(u.value.trim()||y.value)&&!$.value&&!e.isProcessingFiles,"bg-neutral-200 text-neutral-400 dark:bg-neutral-700 dark:text-neutral-600":!u.value.trim()&&!y.value||$.value||e.isProcessingFiles}]]),title:"Send message (Enter)"},[$.value?(t(),r("div",Rd,[B(Ze)])):(t(),r("svg",Ld,[...W[4]||(W[4]=[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18"},null,-1)])]))],10,Ed))],2)]))}}),Dd=vt(Md,[["__scopeId","data-v-bd07533d"]]),Fd={class:"bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},Pd=["disabled"],Nd={key:1,class:"flex items-center gap-2 p-3 text-xs text-neutral-500 dark:text-neutral-400"},zd={class:"p-3 space-y-3"},jd={class:"flex flex-wrap gap-x-4 gap-y-1 text-xs"},Bd={class:"ml-1 font-mono font-semibold text-neutral-800 dark:text-neutral-100"},Od={class:"ml-1 font-mono text-neutral-600 dark:text-neutral-400"},Vd={key:0,class:"flex flex-wrap gap-x-4 gap-y-1 text-xs"},qd={class:"ml-1 font-mono text-neutral-600 dark:text-neutral-400"},Ud={class:"ml-1 font-mono text-neutral-600 dark:text-neutral-400"},Hd={class:"ml-1 font-mono text-neutral-600 dark:text-neutral-400"},Wd={key:0},Kd={class:"ml-1 font-mono text-neutral-600 dark:text-neutral-400"},Jd={key:1,class:"w-full text-[11px]"},Gd={class:"border-b border-neutral-200 dark:border-neutral-800"},Yd={key:0,class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},Qd={key:1,class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},Xd={key:2,class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},Zd=["title"],eu={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},tu={key:0,class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},nu={key:1,class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},au={key:2,class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},ru={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},su={key:2,class:"text-[10px] text-neutral-400 dark:text-neutral-500"},ou={key:3,class:"w-full text-[11px]"},lu={class:"border-b border-neutral-200 dark:border-neutral-800"},iu={key:0,class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},du={key:1,class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},uu={key:2,class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},cu=["title"],fu={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},pu={key:0,class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},vu={key:1,class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},hu={key:2,class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},mu={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},gu=et({__name:"ThreadUsageCostCard",props:{expanded:{type:Boolean},loading:{type:Boolean},costData:{},hideHeader:{type:Boolean}},emits:["toggle"],setup(e,{emit:o}){const a=e,l=o,s=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}),i=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumSignificantDigits:3}),h=m=>s.format(m),u=m=>m==null?"—":m===0?"$0":i.format(m),I=T(()=>{const m=a.costData;return m?(m.inputCost??0)>0||(m.cachedCost??0)>0||(m.outputCost??0)>0||(m.routerFeeCost??0)>0:!1}),S=m=>{if(m.isRoot)return"This thread";const y=m.agentName||"subagent";return m.threadName?`${y} · ${m.threadName}`:y},$=m=>(m.threads?.length??0)>1;return(m,y)=>(t(),r("div",Fd,[e.hideHeader?b("",!0):(t(),r("button",{key:0,onClick:y[0]||(y[0]=E=>l("toggle")),disabled:e.loading,type:"button",class:"w-full flex items-center gap-2 px-3 py-2.5 text-left hover:bg-neutral-50 dark:hover:bg-neutral-800 transition-colors disabled:opacity-50"},[B(c(Er),{size:14,class:"shrink-0 text-neutral-400"}),y[1]||(y[1]=n("span",{class:"flex-1 text-xs font-medium text-neutral-700 dark:text-neutral-200"},"Usage & Cost",-1)),e.loading?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(Tt),{key:1,size:14,class:G(["shrink-0 text-neutral-400 transition-transform duration-200",{"-rotate-180":e.expanded}])},null,8,["class"]))],8,Pd)),e.hideHeader&&e.loading?(t(),r("div",Nd,[B(Ze,{size:"xs"}),y[2]||(y[2]=n("span",null,"Loading cost breakdown...",-1))])):(t(),j(hn,{key:2,"enter-active-class":"transition-all duration-200 ease-out","enter-from-class":"opacity-0 max-h-0","enter-to-class":"opacity-100 max-h-[480px]","leave-active-class":"transition-all duration-150 ease-in","leave-from-class":"opacity-100 max-h-[480px]","leave-to-class":"opacity-0 max-h-0"},{default:Fe(()=>[(e.hideHeader||e.expanded)&&e.costData?(t(),r("div",{key:0,class:G(["overflow-hidden",{"border-t border-neutral-100 dark:border-neutral-800":!e.hideHeader}])},[n("div",zd,[n("div",jd,[n("div",null,[y[3]||(y[3]=n("span",{class:"text-neutral-500 dark:text-neutral-400"},"Total:",-1)),n("span",Bd,p(h(e.costData.totalCost)),1)]),n("div",null,[y[4]||(y[4]=n("span",{class:"text-neutral-500 dark:text-neutral-400"},"Per msg:",-1)),n("span",Od,p(h(e.costData.avgCostPerMessage)),1)])]),I.value?(t(),r("div",Vd,[n("div",null,[y[5]||(y[5]=n("span",{class:"text-neutral-500 dark:text-neutral-400"},"Input:",-1)),n("span",qd,p(u(e.costData.inputCost)),1)]),n("div",null,[y[6]||(y[6]=n("span",{class:"text-neutral-500 dark:text-neutral-400"},"Cached:",-1)),n("span",Ud,p(u(e.costData.cachedCost)),1)]),n("div",null,[y[7]||(y[7]=n("span",{class:"text-neutral-500 dark:text-neutral-400"},"Output:",-1)),n("span",Hd,p(u(e.costData.outputCost)),1)]),(e.costData.routerFeeCost??0)>0?(t(),r("div",Wd,[y[8]||(y[8]=n("span",{class:"text-neutral-500 dark:text-neutral-400"},"Router fee:",-1)),n("span",Kd,p(u(e.costData.routerFeeCost)),1)])):b("",!0)])):b("",!0),$(e.costData)?(t(),r("table",Jd,[n("thead",null,[n("tr",Gd,[y[9]||(y[9]=n("th",{class:"text-left py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Thread",-1)),y[10]||(y[10]=n("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px] w-10"},"Reqs",-1)),I.value?(t(),r("th",Yd,"In")):b("",!0),I.value?(t(),r("th",Qd,"Cached")):b("",!0),I.value?(t(),r("th",Xd,"Out")):b("",!0),y[11]||(y[11]=n("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Cost",-1))])]),n("tbody",null,[(t(!0),r(Ae,null,We(e.costData.threads,E=>(t(),r("tr",{key:E.threadId},[n("td",{class:"py-1.5 truncate max-w-[110px] text-neutral-700 dark:text-neutral-300",title:E.threadId},p(S(E)),9,Zd),n("td",eu,p(E.requestCount),1),I.value?(t(),r("td",tu,p(u(E.inputCost)),1)):b("",!0),I.value?(t(),r("td",nu,p(u(E.cachedCost)),1)):b("",!0),I.value?(t(),r("td",au,p(u(E.outputCost)),1)):b("",!0),n("td",ru,p(h(E.totalCost)),1)]))),128))])])):b("",!0),e.costData.truncated?(t(),r("p",su," Large subtree — some subagent threads were not included. ")):b("",!0),e.costData.modelBreakdown.length>0?(t(),r("table",ou,[n("thead",null,[n("tr",lu,[y[12]||(y[12]=n("th",{class:"text-left py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Model",-1)),y[13]||(y[13]=n("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px] w-10"},"Reqs",-1)),I.value?(t(),r("th",iu,"In")):b("",!0),I.value?(t(),r("th",du,"Cached")):b("",!0),I.value?(t(),r("th",uu,"Out")):b("",!0),y[14]||(y[14]=n("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Cost",-1))])]),n("tbody",null,[(t(!0),r(Ae,null,We(e.costData.modelBreakdown,E=>(t(),r("tr",{key:E.modelName},[n("td",{class:"py-1.5 truncate max-w-[110px] text-neutral-700 dark:text-neutral-300",title:E.modelName},p(E.modelName),9,cu),n("td",fu,p(E.requestCount),1),I.value?(t(),r("td",pu,p(u(E.inputCost)),1)):b("",!0),I.value?(t(),r("td",vu,p(u(E.cachedCost)),1)):b("",!0),I.value?(t(),r("td",hu,p(u(E.outputCost)),1)):b("",!0),n("td",mu,p(h(E.totalCost)),1)]))),128))])])):b("",!0)])],2)):b("",!0)]),_:1}))]))}}),xu={class:"flex flex-col h-full min-w-0 overflow-hidden"},bu={class:"pl-7 pr-4 border-b border-neutral-300 dark:border-neutral-700 h-12 flex items-center shrink-0"},yu={class:"flex items-center justify-between w-full"},ku={class:"flex items-center gap-2"},_u={class:"font-mono"},wu={class:"flex-1 min-h-0 flex flex-col overflow-hidden relative"},$u={key:0,class:"shrink-0 border-b border-neutral-200 bg-neutral-50 p-3 dark:border-neutral-800 dark:bg-neutral-950"},Cu={key:0,class:"text-neutral-500 dark:text-neutral-400 text-center py-8"},Su={key:1,class:"flex justify-center py-8"},Tu={key:2,class:"text-red-600 dark:text-red-400 text-center py-8"},Iu={key:0,class:"text-neutral-500 dark:text-neutral-400 text-center py-8"},Au={key:1,class:"p-3 bg-white dark:bg-neutral-900 border-t border-neutral-300 dark:border-neutral-700"},Eu={key:0,class:"mb-2 rounded-md border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700 dark:border-red-900/60 dark:bg-red-950/30 dark:text-red-300"},Lu={class:"flex items-center justify-end gap-2"},Ru=["disabled"],Mu=4e3,Rb=et({__name:"MessagesPane",props:{threadId:{},selectedMessageId:{},selectedLogId:{},selectedEffectId:{},hoveredLogId:{},showCollapseButton:{type:Boolean},createThreadDraft:{type:Boolean},lockedAgentId:{}},emits:["collapse","messageClick","messageHover","messageCountChanged","logsDeleted","cancelCreateThread","threadCreated","filesChanged"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g(!1),h=g(new Set),u=g(new Map),I=()=>{i.value=!i.value,i.value||(h.value=new Set,u.value=new Map)},S=(ge,O)=>{const ee=new Set(h.value);O?ee.add(ge):ee.delete(ge),h.value=ee},$=(ge,O)=>{const ee=new Map(u.value);ee.set(ge,O),u.value=ee},m=()=>{i.value=!1,h.value=new Set,u.value=new Map},y=T(()=>h.value.size),E=T(()=>{let ge=0;for(const[O]of u.value)h.value.has(O)||ge++;return ge}),C=T(()=>{const ge=y.value,O=E.value;return ge>0&&O>0?`Delete (${ge}), Update (${O})`:ge>0?`Delete (${ge})`:O>0?`Save changes (${O})`:"Delete"}),V=T(()=>y.value>0||E.value>0),H=async()=>{if(!l.threadId||!V.value)return;Q.value=null;const ge=[];for(const O of h.value){const ee=J.value.find(Oe=>Oe.id===O);ee&&"log_id"in ee&&ee.log_id&&ge.push(ee.log_id)}try{for(const[O,ee]of u.value)h.value.has(O)||await W(O,ee);for(const O of h.value)await R(O);ge.length>0&&s("logsDeleted",ge)}catch{Q.value="Message changes could not be applied. Please try again."}finally{m()}},{messages:J,threadInfo:oe,isFetching:X,error:ne,wsConnected:ue,wsError:K,isExecuting:P,deleteMessageById:R,updateMessageContent:W,stopThread:q,sendMessage:we,attachments:Pe,addAttachment:te,removeAttachment:qe}=rl(T(()=>l.threadId)),{thread:z}=da(T(()=>l.threadId)),{theme:he}=is();be(()=>J.value.length,ge=>s("messageCountChanged",ge),{immediate:!0});const ke=T(()=>{const ge=[];for(const O of J.value){const ee=O,Oe=ee.attachments||[];for(const pe of Oe)pe.path&&ge.push(pe.path);if(typeof ee.content=="string")for(const pe of ee.content.matchAll(/\/attachments\/[^\s"'`),]+/g))ge.push(pe[0])}for(const O of Pe.value)O.path&&ge.push(O.path);return ge.sort().join(`
10
- `)});be(ke,(ge,O)=>{ge&&ge!==O&&s("filesChanged")});const Ee=T(()=>!1),_e=ge=>{te(ge)},me=g(null),Se=g(null),Ie=g(null);o({scrollToLogId:ge=>Se.value&&me.value?Se.value.scrollToLogId(ge,me.value):!1,hasWorkblockForLogId:ge=>Se.value?Se.value.hasWorkblockForLogId(ge):!1,messageCount:T(()=>J.value.length),focusComposer:()=>Ie.value?.focusInput()});const Q=g(null),ce=g(!1),fe=g(!1),De=g(null),Ye=ge=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}).format(ge);let F=!1,$e=!1;async function ye(){if(!l.threadId){De.value=null;return}if(F){$e=!0;return}F=!0,fe.value=!0;try{const ge=await fetch(Qe(`/api/threads/${l.threadId}/cost`));if(!ge.ok)throw new Error("Failed to fetch cost breakdown");De.value=await ge.json()}catch{De.value=null,ce.value=!1}finally{fe.value=!1,F=!1,$e&&($e=!1,ie())}}const Le=T(()=>fe.value&&!De.value?"...":Ye(De.value?.totalCost??0)),Ve=async()=>{ce.value=!ce.value,ce.value&&!De.value&&await ye()},He=async()=>{await Xe(),me.value&&(me.value.scrollTop=me.value.scrollHeight)};be(()=>J.value.length,async()=>{await He()}),be(()=>l.threadId,async ge=>{De.value=null,ce.value=!1,ge&&ye(),ge&&await He()});let le=null;function ie(){l.threadId&&(le&&clearTimeout(le),le=setTimeout(()=>{le=null,ye()},Mu))}be(()=>J.value.length,(ge,O)=>{O!==void 0&&l.threadId&&ie()}),wt(()=>{le&&clearTimeout(le)}),be(X,async(ge,O)=>{O&&!ge&&await He()});const ae=ge=>{const O=oe.value?.agent||z.value?.agent;if(!O)return"ai A";const ee=O.type;return ge==="A"&&O.side_a_label?O.side_a_label:ge==="B"&&O.side_b_label?O.side_b_label:ee==="ai_human"?ge==="A"?"ai":"human":ge==="A"?"ai A":"ai B"},Re=T(()=>ae("A")),Ke=T(()=>ae("B")),U=()=>{const ge=oe.value?.agent||z.value?.agent;return ge?typeof ge.id=="string"?ge.id:typeof ge.name=="string"?ge.name:l.threadId||"thread":l.threadId||"thread"},Ce=T(()=>{const ge=oe.value?.agent||z.value?.agent;if(!ge)return null;const O=typeof ge.icon=="string"?ge.icon:"",ee=typeof ge.id=="string"?ge.id:typeof ge.name=="string"?ge.name:"";return O||(ee?En(ee):null)}),se=(ge,O)=>typeof window>"u"?O:window.getComputedStyle(document.documentElement).getPropertyValue(ge).trim()||O,Ue=T(()=>{const ge=ae("B");return ge.trim().toLowerCase()==="human"?(he.value,ds({bg:se("--accent-100","#f5f5f5"),fg:se("--accent-600","#737373"),border:se("--accent-300","#d4d4d4")})):En(`${U()}:side-b:${ge}`)}),tt=async ge=>{if(!l.threadId||!we)throw new Error("Thread is not ready for messages");await we(ge),await He()},nt=async()=>{l.threadId&&await q()};return(ge,O)=>(t(),r("div",xu,[n("div",bu,[n("div",yu,[n("button",{onClick:O[0]||(O[0]=Ge(ee=>s("collapse"),["stop"])),type:"button",class:"-ml-1 flex 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 Messages pane","aria-label":"Collapse Messages pane"},[B(c(fn),{size:18,class:"shrink-0"}),O[6]||(O[6]=n("h2",{class:"text-base font-bold"},"Messages",-1)),e.threadId?(t(),j(dr,{key:0,connected:c(ue),error:c(K)},null,8,["connected","error"])):b("",!0)]),n("div",ku,[e.threadId?(t(),r("button",{key:0,onClick:Ge(Ve,["stop"]),type:"button",class:G(["inline-flex h-8 items-center gap-1.5 rounded-md bg-neutral-100 px-2 text-xs font-medium text-neutral-600 transition-colors hover:bg-neutral-200 hover:text-neutral-900 dark:bg-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-700 dark:hover:text-neutral-100",{"bg-neutral-200 text-neutral-900 dark:bg-neutral-700 dark:text-neutral-100":ce.value}]),title:"Toggle cost breakdown"},[n("span",_u,p(Le.value),1)],2)):b("",!0),e.threadId&&c(J).length>0?(t(),r("button",{key:1,onClick:I,type:"button",class:G(["p-1 hover:bg-neutral-100 dark:hover:bg-neutral-900 rounded transition-colors",{"bg-neutral-200 dark:bg-neutral-800":i.value}]),title:"Edit messages"},[B(c(Lr),{size:20})],2)):b("",!0),e.showCollapseButton!==!1?(t(),r("button",{key:2,onClick:O[1]||(O[1]=ee=>s("collapse")),type:"button",class:"p-1 hover:bg-neutral-100 dark:hover:bg-neutral-900 rounded transition-colors",title:"Collapse pane"},[B(c(Ja),{size:20})])):b("",!0)])])]),n("div",wu,[e.threadId&&ce.value&&!e.createThreadDraft?(t(),r("div",$u,[B(gu,{expanded:!0,loading:fe.value,"cost-data":De.value,"hide-header":"",onToggle:Ve},null,8,["loading","cost-data"])])):b("",!0),n("div",{ref_key:"messagesContainer",ref:me,class:G(["flex-1 min-h-0 overflow-y-auto overflow-x-hidden p-4 pb-28 space-y-4",e.createThreadDraft?"!p-0 !pb-0":""])},[e.createThreadDraft?(t(),j(vd,{key:0,inline:"","model-value":!0,"locked-agent-id":e.lockedAgentId,"onUpdate:modelValue":O[2]||(O[2]=ee=>{ee||s("cancelCreateThread")}),onThreadCreated:O[3]||(O[3]=ee=>s("threadCreated",ee))},null,8,["locked-agent-id"])):(t(),r(Ae,{key:1},[e.threadId?c(X)?(t(),r("div",Su,[B(Ze)])):c(ne)?(t(),r("div",Tu," Error loading messages: "+p(c(ne)),1)):(t(),r(Ae,{key:3},[e.threadId&&c(J).length===0?(t(),r("div",Iu," No messages yet ")):(t(),j(qi,{key:1,ref_key:"agentMessagesRef",ref:Se,messages:c(J),threadId:e.threadId,selectedMessageId:e.selectedMessageId,selectedLogId:e.selectedLogId,selectedEffectId:e.selectedEffectId,hoveredLogId:e.hoveredLogId,isEditMode:i.value,selectedForDelete:h.value,editedMessages:u.value,assistantAvatarSrc:Ce.value,userAvatarSrc:Ue.value,onMessageClick:O[4]||(O[4]=(ee,Oe,pe)=>s("messageClick",ee,Oe,pe)),onMessageHover:O[5]||(O[5]=ee=>s("messageHover",ee)),onSelectionChange:S,onMessageEdit:$},null,8,["messages","threadId","selectedMessageId","selectedLogId","selectedEffectId","hoveredLogId","isEditMode","selectedForDelete","editedMessages","assistantAvatarSrc","userAvatarSrc"]))],64)):(t(),r("div",Cu," Select a thread to view messages "))],64))],2),e.threadId&&i.value?(t(),r("div",Au,[Q.value?(t(),r("div",Eu,p(Q.value),1)):b("",!0),n("div",Lu,[n("button",{onClick:m,class:"px-4 py-2 rounded-lg font-medium text-sm transition-colors bg-neutral-200 text-black hover:bg-neutral-300 dark:bg-neutral-700 dark:text-white dark:hover:bg-neutral-600"}," Cancel "),n("button",{onClick:H,disabled:!V.value,class:G(["px-4 py-2 rounded-lg font-medium text-sm transition-colors",{"bg-red-600 text-white hover:bg-red-700":V.value&&y.value>0,"bg-black text-white hover:bg-neutral-800 dark:bg-white dark:text-black dark:hover:bg-neutral-200":V.value&&y.value===0,"bg-neutral-200 text-neutral-400 dark:bg-neutral-700 dark:text-neutral-500 cursor-not-allowed":!V.value}])},p(C.value),11,Ru)])])):e.threadId?(t(),j(Dd,{key:2,ref_key:"messageComposerRef",ref:Ie,attachments:c(Pe),"assistant-avatar-src":Ce.value,"assistant-avatar-seed":U(),"user-avatar-src":Ue.value,"side-a-label":Re.value,"side-b-label":Ke.value,"is-executing":c(P),"is-processing-files":Ee.value,"send-message":tt,"stop-thread":nt,"add-files":_e,"remove-attachment":c(qe),onSent:He},null,8,["attachments","assistant-avatar-src","assistant-avatar-seed","user-avatar-src","side-a-label","side-b-label","is-executing","is-processing-files","remove-attachment"])):b("",!0)])]))}});function Ia(e){return!!e&&typeof e=="object"}function pt(e){return typeof e=="string"?e:null}function xt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function at(e,o){return Object.prototype.hasOwnProperty.call(e,o)}function Du(e){if(!Ia(e))return null;const o=e.type,a=e.log_id;return typeof a!="string"||a.length===0?null:o==="log_queued_tools"?typeof e.queued_tools=="string"?{type:o,log_id:a,queued_tools:e.queued_tools}:null:o==="log_data"&&Ia(e.data)?{type:o,log_id:a,data:Fu(e.data)}:null}function Fu(e){const o={};if(at(e,"message_id")){const a=pt(e.message_id);a!==null&&(o.message_id=a)}if(at(e,"provider")){const a=pt(e.provider);a!==null&&(o.provider=a)}if(at(e,"actual_provider")&&(o.actual_provider=pt(e.actual_provider)),at(e,"model")){const a=pt(e.model);a!==null&&(o.model=a)}if(at(e,"model_name")&&(o.model_name=pt(e.model_name)),at(e,"prompt_name")&&(o.prompt_name=pt(e.prompt_name)),at(e,"tools_called")&&(o.tools_called=pt(e.tools_called)),at(e,"queued_tools")&&(o.queued_tools=pt(e.queued_tools)),at(e,"provider_tools")&&(o.provider_tools=pt(e.provider_tools)),at(e,"parent_log_id")&&(o.parent_log_id=pt(e.parent_log_id)),at(e,"retry_of_log_id")&&(o.retry_of_log_id=pt(e.retry_of_log_id)),at(e,"error")&&(o.error=pt(e.error)),at(e,"cost_total")&&(o.cost_total=xt(e.cost_total)),at(e,"input_tokens")&&(o.input_tokens=xt(e.input_tokens)),at(e,"cached_tokens")&&(o.cached_tokens=xt(e.cached_tokens)),at(e,"output_tokens")&&(o.output_tokens=xt(e.output_tokens)),at(e,"reasoning_tokens")&&(o.reasoning_tokens=xt(e.reasoning_tokens)),at(e,"total_tokens")&&(o.total_tokens=xt(e.total_tokens)),at(e,"latency_ms")&&(o.latency_ms=xt(e.latency_ms)),at(e,"time_to_first_token_ms")&&(o.time_to_first_token_ms=xt(e.time_to_first_token_ms)),at(e,"generation_ms")&&(o.generation_ms=xt(e.generation_ms)),at(e,"finish_reason")&&(o.finish_reason=pt(e.finish_reason)),at(e,"error_type")&&(o.error_type=pt(e.error_type)),at(e,"cost_input")&&(o.cost_input=xt(e.cost_input)),at(e,"cost_cached")&&(o.cost_cached=xt(e.cost_cached)),at(e,"cost_output")&&(o.cost_output=xt(e.cost_output)),at(e,"content")&&(o.content=pt(e.content)),at(e,"reasoning_content")&&(o.reasoning_content=pt(e.reasoning_content)),at(e,"is_complete")&&typeof e.is_complete=="boolean"&&(o.is_complete=e.is_complete),at(e,"created_at")){const a=xt(e.created_at);a!==null&&(o.created_at=a)}return o}function Pu(e,o){return{id:e,message_id:o.message_id??"",provider:o.provider??"",actual_provider:o.actual_provider??null,model:o.model??"",model_name:o.model_name??null,prompt_name:o.prompt_name??null,tools_called:o.tools_called??null,queued_tools:o.queued_tools??null,provider_tools:o.provider_tools??null,parent_log_id:o.parent_log_id??null,retry_of_log_id:o.retry_of_log_id??null,error:o.error??null,cost_total:o.cost_total??null,is_complete:o.is_complete??!1,created_at:o.created_at??0}}function Nu(e,o,a){if(o.type==="log_queued_tools")return{...e,queued_tools:o.queued_tools};const l=a.get(o.log_id);return l?{...e,queued_tools:l}:e}function zu(e,o){const a=new Map(e.pendingQueuedTools),l=e.realtimeLogs.findIndex(S=>S.id===o.log_id),s=l>=0?e.realtimeLogs[l]:null,i=e.httpLogs.find(S=>S.id===o.log_id)??null;if(o.type==="log_queued_tools"&&!s&&!i)return a.set(o.log_id,o.queued_tools),{...e,pendingQueuedTools:a};const h=s??i??Pu(o.log_id,o.type==="log_data"?o.data:{}),u=Nu(o.type==="log_data"?{...h,...o.data,id:o.log_id}:h,o,a);a.delete(o.log_id);const I=l>=0?e.realtimeLogs.map((S,$)=>$===l?u:S):[...e.realtimeLogs,u];return{...e,realtimeLogs:I,pendingQueuedTools:a}}function ju(e,o){const{limit:a=100,offset:l=0,order:s="desc",autoFetch:i=!0,enableWebSocket:h=!1}=o||{};T(()=>!!(typeof e=="string"?e:e?.value));const u=T(()=>{const Se=typeof e=="string"?e:e?.value;if(!Se)return"";const Ie=new URLSearchParams,re=typeof a=="number"?a:a.value,Z=typeof l=="number"?l:l.value,Q=typeof s=="string"?s:s.value;return Ie.append("limit",re.toString()),Ie.append("offset",Z.toString()),Ie.append("order",Q),Qe(`/api/threads/${Se}/logs?${Ie.toString()}`)}),{data:I,error:S,isFetching:$,isFinished:m,execute:y,abort:E}=Ot(u,{immediate:!1}).get().json();be([u,()=>i],([Se,Ie])=>{Se&&Ie&&y()},{immediate:!0});const C=T(()=>lr(S.value)?null:S.value),V=T(()=>I.value?.logs||[]),H=T(()=>I.value?.total||0),J=T(()=>I.value?.hasMore||!1),oe=g(null),X=g(!1),ne=g(null),ue=g([]),K=new Map;let P=0,R=null,W=null,q=!0,we=null;const Pe=3e4,te=3e4,qe=()=>{R&&(clearTimeout(R),R=null),W&&(clearInterval(W),W=null)},z=()=>{W&&clearInterval(W),W=setInterval(()=>{oe.value&&oe.value.readyState===WebSocket.OPEN&&oe.value.send("ping")},te)},he=()=>{if(!q||!h)return;const Se=Math.min(1e3*Math.pow(2,P),Pe);P++,Ht(),R=setTimeout(()=>{q&&ke()},Se)},ke=()=>{const Se=typeof e=="string"?e:e?.value;if(!Se||!h)return;oe.value&&(we=null,oe.value.close()),P===0&&(ue.value=[]);const Ie=window.location.protocol==="https:"?"wss:":"ws:",re=window.location.host,Z=la(`${Ie}//${re}${Qe(`/api/threads/${Se}/logs`)}`);try{const Q=new WebSocket(Z);oe.value=Q,we=Q,Q.onopen=()=>{we===Q&&(X.value=!0,ne.value=null,P=0,z(),Ht("Logs WebSocket","Connected"))},Q.onmessage=ce=>{if(we===Q&&ce.data!=="pong")try{const fe=Du(JSON.parse(ce.data));if(fe){const De=zu({realtimeLogs:ue.value,httpLogs:V.value,pendingQueuedTools:K},fe);ue.value=De.realtimeLogs,K.clear(),De.pendingQueuedTools.forEach((Ye,F)=>{K.set(F,Ye)})}}catch{ne.value="Failed to parse log update"}},Q.onerror=ce=>{we===Q&&(ne.value="WebSocket connection error")},Q.onclose=()=>{we===Q&&(X.value=!1,qe(),Ht("Logs WebSocket","Disconnected"),he())}}catch(Q){ne.value=Q instanceof Error?Q.message:"Failed to create WebSocket",he()}},Ee=()=>{q=!1,qe(),we=null,oe.value&&(oe.value.close(),oe.value=null),X.value=!1,P=0,ue.value=[],K.clear()},_e=()=>{q=!0,P=0,ke()};return Kt(()=>{Ee()}),{logs:T(()=>{if(!h)return V.value;const Se=new Map;V.value.forEach(Z=>Se.set(Z.id,Z)),ue.value.forEach(Z=>Se.set(Z.id,Z));const Ie=typeof s=="string"?s:s.value;return Array.from(Se.values()).sort((Z,Q)=>Ie==="desc"?Q.created_at-Z.created_at:Z.created_at-Q.created_at)}),total:H,hasMore:J,error:C,isFetching:$,isFinished:m,refetch:y,abort:E,wsConnected:X,wsError:ne,connectWebSocket:_e,disconnectWebSocket:Ee}}function Bu(e){if(!e)return null;try{const o=JSON.parse(e);return o.messages===void 0?null:JSON.stringify(o.messages)}catch{return null}}function Ou(e,o){const a=T(()=>{const I=e.value,S=o.value;return!I||!S?null:Qe(`/api/threads/${I}/logs/${S}`)}),{data:l,error:s,isFetching:i,execute:h}=Ot(a,{immediate:!1}).get().json();return be([e,o],([I,S])=>{I&&S&&h()},{immediate:!0}),{logDetails:T(()=>{const I=l.value;return I?I.message_history!=null?I:{...I,message_history:Bu(I.request_body)}:null}),error:s,isFetching:i,refetch:h}}function Vu(e){const o=new Set,a=new Map;for(const l of e){const s=l.cached_tokens;if(s==null||!l.prompt_name)continue;const i=`${l.prompt_name}::${l.model_name??l.model}`,h=a.get(i);h!==void 0&&s<h&&o.add(l.id),a.set(i,s)}return o}const qu={class:"min-h-0 flex-1 overflow-hidden"},Uu=["aria-valuenow","title"],Hu={class:"relative m-2 h-[calc(100%-1rem)] overflow-hidden rounded-lg border border-neutral-300 bg-white dark:border-neutral-700 dark:bg-neutral-900"},Wu=et({__name:"InspectorResizablePane",props:{heightPercent:{},storageKey:{},minMainHeight:{default:180},minDetailHeight:{default:260},title:{default:"Resize details"}},emits:["update:heightPercent"],setup(e,{emit:o}){const a=e,l=o,s=g(null),i=g(!1),h=(C,V,H)=>Math.min(H,Math.max(V,C)),u=C=>h(C,20,80),I=()=>{if(!a.storageKey||typeof window>"u")return;const C=window.localStorage.getItem(a.storageKey),V=C?Number.parseFloat(C):Number.NaN;Number.isFinite(V)&&l("update:heightPercent",u(V))},S=()=>{!a.storageKey||typeof window>"u"||window.localStorage.setItem(a.storageKey,a.heightPercent.toFixed(2))},$=C=>{if(!s.value)return;const V=s.value.getBoundingClientRect();if(V.height<=0)return;const H=V.bottom-C.clientY,J=a.minDetailHeight/V.height*100,oe=100-a.minMainHeight/V.height*100;l("update:heightPercent",h(H/V.height*100,Math.min(J,oe),Math.max(J,oe)))},m=()=>{i.value&&(i.value=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("pointermove",$),window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",m),S())},y=C=>{C.preventDefault(),C.currentTarget instanceof HTMLElement&&C.currentTarget.setPointerCapture(C.pointerId),i.value=!0,document.body.style.cursor="row-resize",document.body.style.userSelect="none",$(C),window.addEventListener("pointermove",$),window.addEventListener("pointerup",m),window.addEventListener("pointercancel",m)},E=C=>{const V=C.shiftKey?10:4;C.key==="ArrowUp"?(C.preventDefault(),l("update:heightPercent",u(a.heightPercent+V)),S()):C.key==="ArrowDown"&&(C.preventDefault(),l("update:heightPercent",u(a.heightPercent-V)),S())};return It(I),wt(m),(C,V)=>(t(),r("div",{ref_key:"root",ref:s,class:"flex h-full min-h-0 flex-col overflow-hidden"},[n("div",qu,[Ft(C.$slots,"main",{},void 0,!0)]),B(hn,{name:"inspector-slide-up"},{default:Fe(()=>[C.$slots.detail?(t(),r("div",{key:0,class:"relative shrink-0 overflow-hidden border-t border-neutral-300 bg-neutral-100 dark:border-neutral-700 dark:bg-neutral-950",style:gt({height:`${e.heightPercent}%`})},[n("div",{class:G(["absolute inset-x-0 top-0 z-20 h-2 -translate-y-1 cursor-row-resize transition-colors hover:bg-neutral-200/70 dark:hover:bg-neutral-800/70",i.value?"bg-neutral-200/70 dark:bg-neutral-800/70":""]),role:"separator","aria-orientation":"horizontal","aria-valuenow":Math.round(e.heightPercent),"aria-valuemin":"20","aria-valuemax":"80",tabindex:"0",title:e.title,onPointerdown:y,onKeydown:E},null,42,Uu),n("div",Hu,[Ft(C.$slots,"detail",{},void 0,!0)])],4)):b("",!0)]),_:3})],512))}}),Fn=vt(Wu,[["__scopeId","data-v-45799e53"]]),sn=new WeakMap,Ku=e=>1-Math.pow(1-e,3),Ju=()=>typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,Hn=(e,o,a)=>Math.min(Math.max(e,o),a),Rn=(e,o)=>{const a=o.duration??80,l=Math.max(0,e.scrollHeight-e.clientHeight),s=Math.max(0,e.scrollWidth-e.clientWidth),i=o.top===void 0?e.scrollTop:Hn(o.top,0,l),h=o.left===void 0?e.scrollLeft:Hn(o.left,0,s),u=sn.get(e);if(u!==void 0&&(window.cancelAnimationFrame(u),sn.delete(e)),a<=0||Ju()){e.scrollTo({top:i,left:h,behavior:"auto"});return}const I=e.scrollTop,S=e.scrollLeft,$=i-I,m=h-S;if(Math.abs($)<1&&Math.abs(m)<1){e.scrollTo({top:i,left:h,behavior:"auto"});return}const y=window.performance.now(),E=C=>{const V=Hn((C-y)/a,0,1),H=Ku(V);e.scrollTo({top:I+$*H,left:S+m*H,behavior:"auto"}),V<1?sn.set(e,window.requestAnimationFrame(E)):sn.delete(e)};sn.set(e,window.requestAnimationFrame(E))},Gu={class:"text-xs font-semibold"},Yu={key:0,class:"font-normal text-neutral-500 dark:text-neutral-400"},Qu={class:"flex items-center gap-2"},Xu={class:"text-neutral-500 text-xs"},Zu=et({__name:"CollapsibleSection",props:{title:{},subtitle:{},sectionId:{},expanded:{type:Boolean},scrollContainer:{},copyContent:{},stickyOffset:{}},emits:["toggle"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g(null),h=g(!1);let u=null,I=null;const S=()=>{u?.disconnect(),I?.disconnect(),u=null,I=null},$=()=>{Xe(()=>{if(!l.expanded||!i.value||!l.scrollContainer){h.value=!1;return}const C=l.scrollContainer.clientHeight;h.value=i.value.scrollHeight>C*2})},m=()=>{S(),!(typeof ResizeObserver>"u")&&(i.value&&(u=new ResizeObserver($),u.observe(i.value)),l.scrollContainer&&(I=new ResizeObserver($),I.observe(l.scrollContainer)))};be(()=>[l.expanded,l.scrollContainer],async([C])=>{await Xe(),m(),C?$():h.value=!1},{immediate:!0,flush:"post"}),It(async()=>{await Xe(),m(),$()}),wt(S);const y=()=>{if(i.value&&l.scrollContainer){const V=i.value.offsetTop-(l.stickyOffset??88);Rn(l.scrollContainer,{top:V})}},E=()=>{if(i.value&&l.scrollContainer){const C=i.value.offsetTop+i.value.offsetHeight,V=l.scrollContainer.clientHeight,H=C-V;Rn(l.scrollContainer,{top:H})}};return o({checkHeight:$,contentRef:i}),(C,V)=>(t(),r("div",null,[n("div",{class:"collapsible-sticky-header sticky z-[5] flex h-9 w-full cursor-pointer items-center justify-between rounded border border-neutral-300 bg-neutral-50 px-3 transition-colors hover:bg-neutral-100 dark:border-neutral-700 dark:bg-neutral-950 dark:hover:bg-neutral-950",onClick:V[1]||(V[1]=H=>s("toggle"))},[n("span",Gu,[rt(p(e.title)+" ",1),e.subtitle?(t(),r("span",Yu,"("+p(e.subtitle)+")",1)):b("",!0)]),n("div",Qu,[h.value&&e.expanded?(t(),r(Ae,{key:0},[n("button",{onClick:Ge(y,["stop"]),class:"text-[10px] text-neutral-500 hover:text-neutral-700 dark:hover:text-neutral-300"},"↑ Top"),n("button",{onClick:Ge(E,["stop"]),class:"text-[10px] text-neutral-500 hover:text-neutral-700 dark:hover:text-neutral-300"},"↓ Bottom")],64)):b("",!0),Ft(C.$slots,"actions",{},void 0,!0),e.copyContent?(t(),r("span",{key:1,class:"inline-flex",onClick:V[0]||(V[0]=Ge(()=>{},["stop"]))},[B(ia,{content:e.copyContent,variant:"ghost",size:"xs"},null,8,["content"])])):b("",!0),n("span",Xu,p(e.expanded?"▼":"▶"),1)])]),dt(n("div",{ref_key:"contentRef",ref:i,class:"border-x border-b border-neutral-300 dark:border-neutral-700 rounded-b"},[Ft(C.$slots,"default",{},void 0,!0)],512),[[_t,e.expanded]])]))}}),Lt=vt(Zu,[["__scopeId","data-v-634445ea"]]),ec=["width","height","aria-label"],tc=["stroke-dasharray"],Wn=2.5,nc=et({__name:"ContextWindowDonut",props:{pct:{},size:{default:20}},setup(e){const o=e,a=(20-Wn)/2,l=2*Math.PI*a,s=T(()=>Math.max(0,Math.min(100,o.pct))),i=T(()=>{const u=s.value/100*l;return`${s.value>0?Math.max(u,1.5):0} ${l}`}),h=T(()=>s.value>=90?"stroke-red-500 dark:stroke-red-400":s.value>=75?"stroke-amber-500 dark:stroke-amber-400":"stroke-blue-500 dark:stroke-blue-400");return(u,I)=>(t(),r("svg",{width:e.size,height:e.size,viewBox:"0 0 20 20",class:"shrink-0 -rotate-90",role:"img","aria-label":`${s.value}% of context window used`},[n("circle",{cx:"10",cy:"10",r:a,fill:"none","stroke-width":Wn,class:"stroke-neutral-200 dark:stroke-neutral-700"}),n("circle",{cx:"10",cy:"10",r:a,fill:"none","stroke-width":Wn,"stroke-linecap":"round","stroke-dasharray":i.value,class:G(h.value)},null,10,tc)],8,ec))}});function ra(e,o){if(!o)return e;const a=`${o}/`;return e.startsWith(a)?e.slice(a.length):e}function Aa(e,o){const a=o.model,l=o.model_name||o.model;if(!a&&!l)return null;const s=ra(l,o.provider);return e.find(i=>i.id===a)||e.find(i=>i.name===a)||e.find(i=>i.model===o.model)||e.find(i=>i.id===l)||e.find(i=>i.name===l)||e.find(i=>i.model===s)||null}function ac(e,o){if(!e||e<=0)return null;const a=o?.capabilities?.maxContextTokens;return!a||a<=0?null:{pct:Math.min(100,Math.round(e/a*100)),inputTokens:e,maxContextTokens:a}}const rc=new Set(["pending","processing","completed","failed","agent_canceled","user_canceled"]);function qt(e,o){return typeof e=="number"&&Number.isFinite(e)?e:o}function Ea(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function sc(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function oc(e){return typeof e=="string"&&rc.has(e)?e:"pending"}function lc(e){const o=e&&typeof e=="object"?e:{},l=(Array.isArray(o.effects)?o.effects:[]).filter(s=>!!s&&typeof s=="object").filter(s=>typeof s.id=="string"&&typeof s.name=="string").map(s=>({id:s.id,name:s.name,args:sc(s.args),scheduledAt:qt(s.scheduledAt,0),createdAt:qt(s.createdAt,0),status:oc(s.status),attempts:qt(s.attempts,0),error:typeof s.error=="string"?s.error:null,completedAt:Ea(s.completedAt),manualRun:s.manualRun===!0,manualRunAt:Ea(s.manualRunAt),replayedFrom:typeof s.replayedFrom=="string"?s.replayedFrom:null}));return{effects:l,total:qt(o.total,l.length),upcomingCount:qt(o.upcomingCount,l.filter(s=>s.status==="pending").length),limit:qt(o.limit,l.length),offset:qt(o.offset,0)}}function Mn(e){return!Number.isFinite(e)||e<=0?0:e>9999999999?Math.floor(e/1e3):e}function Rt(e){if(!e)return"Unknown";const o=Mn(e);return o?new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(o)):"Unknown"}function ic(e){const o=Math.abs(Math.trunc(e)),a=Math.max(1,Math.round(o/1e3));if(a<60)return`${a}s`;const l=Math.floor(a/60),s=a%60;if(l<60)return s>0?`${l}m ${s}s`:`${l}m`;const i=Math.floor(l/60),h=l%60;if(i<24)return h>0?`${i}h ${h}m`:`${i}h`;const u=Math.floor(i/24),I=i%24;return I>0?`${u}d ${I}h`:`${u}d`}function dc(e){if(!e.completedAt)return"";const o=Mn(e.scheduledAt),a=Mn(e.completedAt);if(!o||!a)return"";const l=a-o;if(l===0||Math.abs(l)<5e3)return"";const s=l>0?"+":"-",i=l>0?"late":"early";return`${s}${ic(l)} ${i}`}function uc(e,o=Date.now()){const a=Mn(e);if(!a)return"";const l=a-o;return l<=0?"Due now":l<6e4?`in ${Math.ceil(l/1e3)}s`:l<60*6e4?`in ${Math.ceil(l/6e4)}m`:l<1440*6e4?`in ${Math.ceil(l/(60*6e4))}h`:`in ${Math.ceil(l/(1440*6e4))}d`}function La(e){const o=JSON.stringify(e,null,2);return o===void 0?"{}":o}function cc(e){const o=Object.keys(e);if(o.length===0)return"No arguments";const a=JSON.stringify(e);return a?a.length>96?`${a.slice(0,93)}...`:a:`${o.length} ${o.length===1?"argument":"arguments"}`}function Qt(e){return e.status==="pending"||e.status==="processing"}function $n(e,o){return e<o?-1:e>o?1:0}function Nt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function fc(e,o){const a=Qt(e),l=Qt(o);return a!==l?a?-1:1:a&&l?$n(Nt(e.scheduledAt),Nt(o.scheduledAt))||$n(Nt(e.createdAt),Nt(o.createdAt))||e.id.localeCompare(o.id):$n(Nt(o.createdAt),Nt(e.createdAt))||$n(Nt(o.scheduledAt),Nt(e.scheduledAt))||e.id.localeCompare(o.id)}function pc(e){return[...e].sort(fc)}function Ra(e,o){return e.id===o.id}function Kn(e){return`'${e.replace(/'/g,"'\\''")}'`}function vc(e,o){return e.split(/\r?\n/).some(a=>a===o)}function hc(e){const o="AGENTBUILDER_JSON";let a=o,l=2;for(;vc(e,a);)a=`${o}_${l}`,l+=1;return a}function mc(e,o){const a=e.sdk?.toLowerCase(),l=hc(o),s={"Content-Type":"application/json",...e.headers??{}};a==="openrouter"?(s.Authorization=`Bearer ${e.api_key??""}`,s["HTTP-Referer"]="https://agentbuilder.local",s["X-Title"]="AgentBuilder"):a==="cloudflare"||a==="openai"||a==="cerebras"||a==="groq"||a==="xai"?s.Authorization=`Bearer ${e.api_key??""}`:a==="google"?s["x-goog-api-key"]=e.api_key??"":a==="anthropic"&&(s["x-api-key"]=e.api_key??"",s["anthropic-version"]=s["anthropic-version"]??"2023-06-01");const i=[`curl -i -sS -X POST ${Kn(e.endpoint)} \\`];for(const[u,I]of Object.entries(s))i.push(` -H ${Kn(`${u}: ${I}`)} \\`);i.push(` --data-binary @- <<'${l}'`);const h=`node -e ${Kn(["let s='';","process.stdin.on('data',c=>s+=c);","process.stdin.on('end',()=>{"," const m=s.match(/\\r?\\n\\r?\\n/);"," if(!m){process.stdout.write(s);return;}"," const head=s.slice(0,m.index);"," const body=s.slice(m.index+m[0].length).trim();"," process.stdout.write(head+'\\n\\n');"," try{process.stdout.write(JSON.stringify(JSON.parse(body),null,2)+'\\n');}"," catch{process.stdout.write(body+'\\n');}","});"].join(""))}`;return[`${i.join(`
4
+ `).replace(/\\t/g," ")}function Ve(v){const x=Re(v);return x.includes(`
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 He(v){const x=Re(v).trim();return x?/^\s*</.test(x)||/<\/[a-z][\s\S]*>/i.test(x)?"html":/^\s*[{[]/.test(x)&&F(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 ie(v,x,w){const Te=v.toLowerCase(),Y=Fe(w.path)||Fe(w.filePath)||Fe(w.filename)||Fe(w.name),Je=Ye(w.mimeType)||Ye(w.mime_type)||Ye(w.contentType)||Ye(w.content_type);return typeof x=="string"&&(Te.includes("content")||Te.includes("code")||Te.includes("source"))?Je||Y||He(x)||"text":typeof x!="string"||Array.isArray(x)||x&&typeof x=="object"?"json":He(x)||"text"}function de(v,x,w){if(Array.isArray(x)||x&&typeof x=="object")return!0;if(typeof x!="string")return!1;const Te=v.toLowerCase();return w!=="text"||x.length>120||Ve(x)||Te.includes("content")||Te.includes("body")||Te.includes("schema")||Te.includes("payload")}function ae(v,x){return typeof v!="string"?JSON.stringify(v,null,2):x==="json"?F(v)||v:Re(v)}function Me(v){const x=Q(v);return Object.entries(x).map(([w,Te])=>{const Y=ie(w,Te,x);return{key:w,language:Y,code:ae(Te,Y),isBlock:de(w,Te,Y)}})}function Ke(v){const x=ye(v);if(!x||typeof x.content!="string")return null;const w=Ye(x.mimeType)||Ye(x.mime_type)||Ye(x.contentType)||Ye(x.content_type)||Fe(x.path)||Fe(x.filePath)||Fe(x.name)||He(x.content)||"text";return{code:Re(x.content),language:w}}function U(v){const x=N(v),w=$e(x),Te=Ke(w);if(Te)return Te;if(w!==null)return{code:JSON.stringify(w,null,2),language:"json"};const Y=Re(x);return{code:Y,language:Y.includes("```")?"markdown":"text"}}function Ce(v){return Re(N(v))}function oe(v){return ee(v.items)?Oe(ee(v.items)||""):O(v)}function Ue(v){return v.type==="tool_call"?v.response_status==="failed"?"work-op-square--failed":v.response_status==="success"?"work-op-square--success":"work-op-square--pending":v.type==="content"?"work-op-square--success":"work-op-square--neutral"}function tt(v){if(v.type==="tool_call"){const x=v.tool_name||"Tool call";return v.response_status==="failed"?`${x} failed`:v.response_status==="success"?`${x} succeeded`:`${x} pending`}return v.type}function nt(v){return new Date(v/1e3).toLocaleTimeString()}function ge(v){const x=Math.round(v/1e6);if(x<1)return"< 1s";if(x<60)return`${x}s`;const w=Math.floor(x/60),Te=x%60;return`${w}m ${Te}s`}function O(v){if(v.status==="pending")return"...";if(!v.isComplete)return"Working...";let x;return v.request_sent_at&&v.response_completed_at?x=v.response_completed_at-v.request_sent_at:x=v.updated_at-v.created_at,`Worked for ${ge(x)}`}function ee(v){const x=v.filter(w=>w.type==="content");if(x.length===0){const w=v.filter(Te=>Te.type==="reasoning");return w.length>0?w[w.length-1].content:null}return x[x.length-1].content}function Oe(v){const w=v.trim().split(`
6
+ `)[0];return w.length>60?w.substring(0,60):w}function pe(v){return l.selectedMessageId===v.id?!0:l.selectedLogId?v.items.some(x=>x.log_id===l.selectedLogId||x.response_log_id===l.selectedLogId):!1}function D(v){return!!(l.selectedLogId&&(v.log_id===l.selectedLogId||v.response_log_id===l.selectedLogId))}function xe(v){return l.hoveredLogId?v.items.some(x=>x.log_id===l.hoveredLogId||x.response_log_id===l.hoveredLogId):!1}function Be(v){return!!(l.hoveredLogId&&(v.log_id===l.hoveredLogId||v.response_log_id===l.hoveredLogId))}function E(v){const x=[];for(const w of v.items)w.log_id&&x.push(w.log_id),w.response_log_id&&x.push(w.response_log_id);return x}function N(v){return v?v.trim():""}function Ie(v,x){if(v.type!=="text")return;const w=v.attachments;if(!w?.length)return;if(v.silent)return w;const Te=l.messages[x-1];if(!Te||Te.type!=="text"||!Te.silent||!(Te.content||"").trim().startsWith("Initial asset attachment path:"))return w;const Je=new Set((Te.attachments||[]).map(yt=>yt.path));if(Je.size===0)return w;const ct=w.filter(yt=>!Je.has(yt.path));return ct.length>0?ct:void 0}function re(v){return v.subagentThreadName||v.subagentTitle||v.subagentName||"Subagent"}function ze(v){return v.subagentId.slice(0,8)}function dt(v){return Ln(v.subagentName||v.subagentTitle||v.subagentId)}function d(v){return(v.subagentStatus||"running").toLowerCase()}function f(v){return ht(v)?"error":De(v)?"queued":bt(v)?"running":"complete"}function _(v){return ht(v)?"bg-red-50 text-red-700 ring-red-200 dark:bg-red-950/40 dark:text-red-300 dark:ring-red-900":bt(v)?"bg-blue-50 text-blue-700 ring-blue-200 dark:bg-blue-950/40 dark:text-blue-300 dark:ring-blue-900":De(v)?"bg-neutral-100 text-neutral-600 ring-neutral-200 dark:bg-neutral-800 dark:text-neutral-300 dark:ring-neutral-700":"bg-emerald-50 text-emerald-700 ring-emerald-200 dark:bg-emerald-950/40 dark:text-emerald-300 dark:ring-emerald-900"}function ve(v){return N(v.latestContent||"").split(`
7
+ `).find(Boolean)||"No activity yet"}function De(v){const x=d(v);return x==="pending"||x==="queued"}function ot(v){return v==="tool"?"Initialization":v==="user"?"Subagent":v==="assistant"?"Assistant":"System"}function it(v){return ht(v)?"Reported failure to parent":De(v)?"Queued":bt(v)?"Working":"Returned result to parent"}function ht(v){return v.subagentHasError===!0}function bt(v){if(ht(v)||De(v))return!1;const x=d(v);return x!=="idle"&&x!=="terminated"}function mn(v){if(v.type==="status")return!0;if(v.type!=="text"||v.role!=="system")return!1;if(en(v)!==null)return!0;const x=v.content||"";return x.includes("Execution stopped")?!0:/subagents?\s+started:/i.test(x)}function en(v){if(v.type!=="text"||v.role!=="system")return null;const x=v.metadata;return!S(x)||x.user_command!==!0?null:((v.content||"").split(`
8
+ `,1)[0]??"").replace(/^\$\s*/,"").trim()||"(command)"}function gn(v){const x=en(v);return x!==null?`User ran command: ${x}`:v.content||""}function xn(v){const x=v?.trim();return x?x.charAt(0).toUpperCase():"A"}function tn(v){return v.role==="assistant"?l.assistantAvatarSrc??null:v.role==="user"?l.userAvatarSrc??null:null}return(v,x)=>(t(),r("div",null,[(t(!0),r(Ee,null,We(e.messages,(w,Te)=>(t(),r("div",{key:w.id,ref_for:!0,ref:Y=>V(Te,Y),class:"flex items-center gap-2 pb-3",onMouseenter:Y=>te(Te),onMouseleave:Y=>qe(Te),onClick:Y=>e.isEditMode?i(w.id):z(Te)},[e.isEditMode&&w.role!=="system"?(t(),r("button",{key:0,onClick:Ge(Y=>i(w.id),["stop"]),class:G(["flex-shrink-0 w-6 h-6 rounded-full border-2 flex items-center justify-center transition-all",{"border-red-500 bg-red-500":e.selectedForDelete?.has(w.id),"border-green-500 bg-green-500":!e.selectedForDelete?.has(w.id)&&y(w.id),"border-neutral-400 dark:border-neutral-500 bg-transparent hover:border-neutral-500 dark:hover:border-neutral-400":!e.selectedForDelete?.has(w.id)&&!y(w.id)}])},[e.selectedForDelete?.has(w.id)?(t(),r("svg",gl,[...x[5]||(x[5]=[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.5 12.75l6 6 9-13.5"},null,-1)])])):y(w.id)?(t(),r("svg",xl,[...x[6]||(x[6]=[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125"},null,-1)])])):b("",!0)],10,ml)):b("",!0),n("div",{class:G(["flex-1 flex items-center gap-2 min-w-0",{"justify-start":w.type==="subagent"||w.type==="subagent_group"||w.role==="assistant","justify-end":w.type!=="subagent"&&w.type!=="subagent_group"&&w.role==="user","justify-center":w.type==="status"||w.role==="system","cursor-pointer":(ne(Te)||q(w))&&!e.isEditMode}])},[mn(w)?(t(),r("div",bl,p(gn(w)),1)):w.type==="text"?(t(),r("div",{key:1,class:G(["flex flex-col gap-2",{"w-full max-w-none items-start":w.role==="assistant","max-w-[72%] items-end":w.role==="user","max-w-[80%] items-center":w.role!=="assistant"&&w.role!=="user"}])},[n("div",{class:G(["message-text-frame",[Ne(w,Te),{"w-full":w.role==="assistant"}]])},[n("div",{class:G(["message-text-surface transition-all",[w.silent?"border-l-2 border-neutral-300 dark:border-neutral-700 pl-3.5 pr-4 py-2.5 text-[13px] leading-5 text-neutral-600 dark:text-neutral-400 min-h-[2.5rem]":w.role==="assistant"?"bg-transparent text-neutral-900 dark:text-neutral-100 rounded-2xl px-4 py-2.5 text-[15px] leading-7 min-h-[2.5rem]":w.role==="user"?"agents-surface-message agents-text-selected rounded-2xl px-4 py-2.5 text-[15px] leading-7 min-h-[2.5rem]":"bg-neutral-100 text-neutral-600 dark:bg-neutral-900 dark:text-neutral-400 text-[13px] leading-5 rounded-2xl px-4 py-2.5 min-h-[2.5rem]",{"opacity-60":w.isOptimistic},{"ring-2 ring-green-500 dark:ring-green-400":e.isEditMode&&y(w.id),"border border-dashed border-neutral-400 dark:border-neutral-500":e.isEditMode&&w.role!=="system"&&!y(w.id)}]])},[w.silent?(t(),r("div",yl," silent ")):b("",!0),e.isEditMode&&(w.content||e.isEditMode)?(t(),r("div",{key:1,class:G(["whitespace-pre-wrap break-words outline-none",w.silent?"text-[11px] leading-4":"text-[15px] leading-7"]),contenteditable:e.isEditMode&&w.role!=="system",onInput:Y=>h(Y,w.id),onClick:x[0]||(x[0]=Y=>e.isEditMode&&Y.stopPropagation())},p(N(w.content)),43,kl)):w.content?(t(),r("div",{key:2,class:G(["markdown-content break-words outline-none",w.silent?"text-[13px] leading-5":"text-[15px] leading-7"]),innerHTML:$(w.content)},null,10,_l)):b("",!0),!e.isEditMode&&m(w)?(t(),r("a",{key:3,href:m(w),target:"_blank",rel:"noopener noreferrer",class:"mt-2 inline-flex items-center gap-1.5 rounded-full bg-red-600 px-3.5 py-1.5 text-xs font-semibold text-white transition-colors hover:bg-red-700 dark:bg-red-500 dark:text-red-950 dark:hover:bg-red-400",onClick:x[1]||(x[1]=Ge(()=>{},["stop"]))},[...x[7]||(x[7]=[rt(" Add credits ",-1),n("svg",{class:"h-3 w-3",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},[n("path",{"fill-rule":"evenodd",d:"M4.25 5.5a.75.75 0 0 0-.75.75v8.5c0 .414.336.75.75.75h8.5a.75.75 0 0 0 .75-.75v-4a.75.75 0 0 1 1.5 0v4A2.25 2.25 0 0 1 12.75 17h-8.5A2.25 2.25 0 0 1 2 14.75v-8.5A2.25 2.25 0 0 1 4.25 4h5a.75.75 0 0 1 0 1.5h-5Z","clip-rule":"evenodd"}),n("path",{"fill-rule":"evenodd",d:"M6.194 12.753a.75.75 0 0 0 1.06.053L16.5 4.44v2.81a.75.75 0 0 0 1.5 0v-4.5a.75.75 0 0 0-.75-.75h-4.5a.75.75 0 0 0 0 1.5h2.553l-9.056 8.194a.75.75 0 0 0-.053 1.06Z","clip-rule":"evenodd"})],-1)])],8,wl)):w.status==="pending"?(t(),r("div",$l,[...x[8]||(x[8]=[n("span",{class:"typing-dot",style:{"animation-delay":"0ms"}},null,-1),n("span",{class:"typing-dot",style:{"animation-delay":"150ms"}},null,-1),n("span",{class:"typing-dot",style:{"animation-delay":"300ms"}},null,-1)])])):b("",!0)],2),w.status!=="pending"?(t(),r("div",{key:0,class:G(["text-[10px] mt-1 flex items-center gap-2 px-4",{"justify-start":w.role==="assistant","justify-end":w.role==="user","justify-center":w.role==="system"}])},[w.sideLabel?(t(),r("span",Cl,[tn(w)?(t(),j(pn,{key:0,icon:tn(w),seed:w.sideLabel,class:"h-4 w-4 shrink-0 rounded-[4px] object-cover"},null,8,["icon","seed"])):(t(),r("span",Sl,p(xn(w.sideLabel)),1)),n("span",{class:G(w.silent?"text-neutral-400 dark:text-neutral-500":"text-neutral-500 dark:text-neutral-400")},p(w.sideLabel),3)])):b("",!0),M(w)?(t(),r("button",{key:1,type:"button",class:"inline-flex cursor-pointer items-center gap-1 rounded px-0.5 text-neutral-500 transition-colors hover:text-neutral-900 dark:text-neutral-400 dark:hover:text-neutral-100",title:W(w),onClick:Ge(Y=>he(Te),["stop"])},[B(c(St),{size:11,class:"shrink-0"}),x[9]||(x[9]=n("span",null,"via Scheduled Effect",-1))],8,Tl)):b("",!0),n("span",{class:G(w.silent?"text-neutral-400 dark:text-neutral-500":"text-neutral-500 dark:text-neutral-400")},p(nt(w.created_at)),3)],2)):b("",!0)],2),Ie(w,Te)?.length&&e.threadId?(t(),r("div",Il,[(t(!0),r(Ee,null,We(Ie(w,Te),Y=>(t(),j(Hn,{key:Y.id,attachment:Y,threadId:e.threadId},null,8,["attachment","threadId"]))),128))])):b("",!0)],2)):w.type==="work"?(t(),r("div",{key:2,class:G(["w-full text-[13px] leading-5 transition-all rounded-xl bg-neutral-100 dark:bg-neutral-900/70 ring-1 ring-neutral-300/80 dark:ring-neutral-700",{"cursor-pointer":!e.isEditMode,"text-neutral-700 dark:text-neutral-300":!w.silent,"text-neutral-500 dark:text-neutral-400 opacity-90":w.silent,"agents-ring-selected ring-2":!e.isEditMode&&(pe(w)||xe(w))}]),onClick:Y=>!e.isEditMode&&(Se(w.id),E(w)[0]&&s("messageClick",w.id,E(w)[0])),onMouseenter:Y=>!e.isEditMode&&E(w)[0]&&s("messageHover",E(w)[0]),onMouseleave:x[4]||(x[4]=Y=>!e.isEditMode&&s("messageHover",null))},[ke.value.has(w.id)?(t(),r("div",Pl,[n("div",Nl,[B(c(Tt),{size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"}),n("span",zl,p(oe(w)),1),x[11]||(x[11]=n("span",{class:"text-neutral-400 dark:text-neutral-600"},"·",-1)),n("span",jl,p(w.items.length)+" op"+p(w.items.length!==1?"s":""),1),n("div",Bl,[(t(!0),r(Ee,null,We(w.items,Y=>(t(),r("span",{key:Y.id,class:G(["work-op-square",Ue(Y)]),title:tt(Y)},null,10,Ol))),128))])]),(t(!0),r(Ee,null,We(w.items,Y=>(t(),r("div",{key:Y.id},[Y.type==="tool_call"?(t(),r("div",Vl,[n("div",{onClick:Ge(Je=>{Ae(Y.id),Y.log_id&&s("messageClick",w.id,Y.log_id)},["stop"]),onMouseenter:Ge(Je=>Y.log_id&&s("messageHover",Y.log_id),["stop"]),onMouseleave:x[2]||(x[2]=Ge(Je=>s("messageHover",null),["stop"])),class:G(["flex items-center gap-2 cursor-pointer rounded-md hover:bg-neutral-100/70 dark:hover:bg-neutral-800/50 transition-colors min-w-0 -mx-1 px-1 py-0.5",{"ring-1 agents-ring-selected":D(Y)||Be(Y)}])},[Le.value.has(Y.id)?(t(),j(c(Tt),{key:1,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})):(t(),j(c(jt),{key:0,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})),n("span",{class:G(["work-op-square",Ue(Y)]),title:tt(Y),"aria-hidden":"true"},null,10,Ul),n("span",Hl,p(Y.tool_name),1),ce(Y.tool_arguments)?(t(),r("span",Wl,p(ce(Y.tool_arguments)),1)):b("",!0)],42,ql),Le.value.has(Y.id)?(t(),r("div",Kl,[Y.tool_arguments?(t(),r("div",Jl,[x[12]||(x[12]=n("div",{class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-400 dark:text-neutral-500 mb-1"},"Arguments",-1)),n("div",Gl,[(t(!0),r(Ee,null,We(Me(Y.tool_arguments),Je=>(t(),r("div",{key:Je.key,class:"grid grid-cols-[5.5rem_minmax(0,1fr)] gap-x-3 gap-y-1 py-1.5 first:pt-0 last:pb-0"},[n("div",Yl,p(Je.key),1),n("div",Ql,[Je.isBlock?(t(),j(zt,{key:0,code:Je.code,language:Je.language},null,8,["code","language"])):(t(),r("span",Xl,p(Je.code),1))])]))),128))])])):b("",!0),Y.response?(t(),r("div",Zl,[n("div",ei,p(Y.response_status==="failed"?"Error":"Response"),1),n("div",{class:G(["cursor-pointer rounded-md px-2.5 py-2 text-neutral-800 ring-1 ring-neutral-200/70 dark:text-neutral-200 dark:ring-neutral-800/70",{"bg-rose-50/70 text-rose-800 ring-rose-200/70 dark:bg-rose-950/30 dark:text-rose-200 dark:ring-rose-900/60":Y.response_status==="failed","bg-white dark:bg-neutral-950/60":Y.response_status!=="failed","ring-1 agents-ring-selected":e.selectedLogId&&Y.response_log_id===e.selectedLogId||e.hoveredLogId&&Y.response_log_id===e.hoveredLogId&&Y.response_log_id!==e.selectedLogId}]),onClick:Ge(Je=>Y.response_log_id&&s("messageClick",w.id,Y.response_log_id),["stop"]),onMouseenter:Ge(Je=>Y.response_log_id&&s("messageHover",Y.response_log_id),["stop"]),onMouseleave:x[3]||(x[3]=Ge(Je=>s("messageHover",null),["stop"]))},[Y.response_status==="failed"?(t(),r("pre",ni,p(Ce(Y.response)),1)):(t(),j(zt,{key:1,code:U(Y.response).code,language:U(Y.response).language},null,8,["code","language"]))],42,ti)])):b("",!0)])):b("",!0)])):Y.type==="reasoning"?(t(),r("div",ai,[n("button",{onClick:Ge(Je=>se(Y.id),["stop"]),class:"flex items-center gap-2 -mx-1 px-1 py-0.5 rounded-md hover:bg-neutral-100/70 dark:hover:bg-neutral-800/50 transition-colors"},[we.value.has(Y.id)?(t(),j(c(Tt),{key:1,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})):(t(),j(c(jt),{key:0,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})),x[13]||(x[13]=n("span",{class:"font-medium text-neutral-800 dark:text-neutral-100"},"Reasoning",-1))],8,ri),we.value.has(Y.id)?(t(),r("div",si,p(N(Y.content)),1)):b("",!0)])):Y.type==="content"?(t(),r("div",oi,p(N(Y.content)),1)):b("",!0)]))),128))])):(t(),r("div",El,[B(c(jt),{size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"}),ee(w.items)?(t(),r("span",Ll,p(Oe(ee(w.items)||"")),1)):(t(),r("span",Rl,p(O(w)),1)),x[10]||(x[10]=n("span",{class:"text-neutral-400 dark:text-neutral-600 flex-shrink-0"},"·",-1)),n("span",Ml,p(w.items.length)+" op"+p(w.items.length!==1?"s":""),1),n("div",Dl,[(t(!0),r(Ee,null,We(w.items,Y=>(t(),r("span",{key:Y.id,class:G(["work-op-square",Ue(Y)]),title:tt(Y)},null,10,Fl))),128))])]))],42,Al)):w.type==="subagent_group"?(t(),r("div",{key:3,class:G(["w-full rounded-xl border border-neutral-200 bg-white text-xs text-neutral-800 shadow-sm transition-all dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-100",{"border-dashed bg-transparent text-neutral-700 dark:text-neutral-200":w.silent,"ring-2 agents-ring-selected":!e.isEditMode&&(_e(Te,e.selectedLogId)||_e(Te,e.hoveredLogId))}])},[n("div",li,[n("div",ii,[x[14]||(x[14]=n("div",{class:"text-[10px] font-medium uppercase text-neutral-400"}," Subagent activity ",-1)),n("div",di,p(w.count)+" active profile"+p(w.count===1?"":"s"),1)]),n("span",ui,p(w.count),1)]),n("div",ci,[(t(!0),r(Ee,null,We(w.subagents,Y=>(t(),r("div",{key:Y.id,class:"px-3 py-2"},[n("button",{type:"button",class:"w-full rounded-lg px-1 py-1 text-left transition-colors hover:bg-neutral-50 dark:hover:bg-neutral-900/70",onClick:Ge(Je=>Z(Y.id),["stop"])},[n("div",pi,[n("img",{src:dt(Y),alt:"",class:"h-8 w-8 shrink-0 rounded-lg object-cover ring-1 ring-neutral-200 dark:ring-neutral-800"},null,8,vi),n("div",hi,[n("div",mi,[n("span",gi,p(re(Y)),1),n("span",{class:G(["shrink-0 rounded-full px-1.5 py-0.5 text-[10px] leading-none ring-1 ring-inset",_(Y)])},p(f(Y)),3)]),n("div",xi,p(it(Y))+" · ref "+p(ze(Y)),1)]),n("span",bi,p(Y.messageCount),1),me.value.has(Y.id)?(t(),j(c(Tt),{key:0,size:14,class:"shrink-0 text-neutral-400"})):(t(),j(c(jt),{key:1,size:14,class:"shrink-0 text-neutral-400"}))]),n("div",yi,p(ve(Y)),1)],8,fi),me.value.has(Y.id)?(t(),r("div",ki,[(t(!0),r(Ee,null,We(Y.messages,Je=>(t(),r("div",{key:Je.id,class:"rounded-md border border-neutral-200 bg-neutral-50 px-2 py-1.5 dark:border-neutral-800 dark:bg-neutral-900/60"},[n("div",_i,[n("span",wi,p(ot(Je.role)),1),n("span",null,p(nt(Je.created_at)),1),Je.silent?(t(),r("span",$i,"silent")):b("",!0)]),Je.content?(t(),r("div",{key:0,class:"markdown-content mt-0.5 break-words text-[11px] leading-4 text-neutral-700 dark:text-neutral-200",innerHTML:$(Je.content)},null,8,Ci)):b("",!0),Je.attachments?.length&&e.threadId?(t(),r("div",Si,[(t(!0),r(Ee,null,We(Je.attachments,ct=>(t(),j(Hn,{key:ct.id,attachment:ct,threadId:e.threadId},null,8,["attachment","threadId"]))),128))])):b("",!0)]))),128))])):b("",!0)]))),128))])],2)):w.type==="subagent"?(t(),r("div",{key:4,class:G(["w-full rounded-xl border border-neutral-200 bg-white px-3 py-3 text-xs text-neutral-800 shadow-sm transition-all dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-100",{"border-dashed bg-transparent text-neutral-700 dark:text-neutral-200":w.silent,"ring-2 agents-ring-selected":!e.isEditMode&&(_e(Te,e.selectedLogId)||_e(Te,e.hoveredLogId))}])},[n("button",{type:"button",class:"w-full rounded-lg text-left transition-colors hover:bg-neutral-50 dark:hover:bg-neutral-900/70",onClick:Ge(Y=>Z(w.id),["stop"])},[n("div",Ii,[n("img",{src:dt(w),alt:"",class:"h-9 w-9 shrink-0 rounded-lg object-cover ring-1 ring-neutral-200 dark:ring-neutral-800"},null,8,Ai),n("div",Ei,[n("div",Li,[n("span",Ri,p(re(w)),1),n("span",{class:G(["shrink-0 rounded-full px-1.5 py-0.5 text-[10px] leading-none ring-1 ring-inset",_(w)])},p(f(w)),3)]),n("div",Mi,p(it(w))+" · ref "+p(ze(w)),1)]),n("span",Di,p(w.messageCount),1),me.value.has(w.id)?(t(),j(c(Tt),{key:0,size:14,class:"shrink-0 text-neutral-400"})):(t(),j(c(jt),{key:1,size:14,class:"shrink-0 text-neutral-400"}))]),n("div",Fi,p(ve(w)),1)],8,Ti),me.value.has(w.id)?(t(),r("div",Pi,[(t(!0),r(Ee,null,We(w.messages,Y=>(t(),r("div",{key:Y.id,class:"rounded-md border border-neutral-200 bg-neutral-50 px-2 py-1.5 dark:border-neutral-800 dark:bg-neutral-900/60"},[n("div",Ni,[n("span",zi,p(ot(Y.role)),1),n("span",null,p(nt(Y.created_at)),1),Y.silent?(t(),r("span",ji,"silent")):b("",!0)]),Y.content?(t(),r("div",{key:0,class:"markdown-content mt-0.5 break-words text-[11px] leading-4 text-neutral-700 dark:text-neutral-200",innerHTML:$(Y.content)},null,8,Bi)):b("",!0),Y.attachments?.length&&e.threadId?(t(),r("div",Oi,[(t(!0),r(Ee,null,We(Y.attachments,Je=>(t(),j(Hn,{key:Je.id,attachment:Je,threadId:e.threadId},null,8,["attachment","threadId"]))),128))])):b("",!0)]))),128))])):b("",!0)],2)):b("",!0)],2)],40,hl))),128))]))}}),qi=vt(Vi,[["__scopeId","data-v-53df6ee5"]]),Ui=et({__name:"ThreadVariableForm",props:{modelValue:{},scanned:{default:()=>[]},disabled:{type:Boolean,default:!1},requireRequiredValues:{type:Boolean,default:!0},groupName:{default:"env"}},emits:["update:modelValue"],setup(e,{emit:o}){const a=e,l=o,s=h=>h&&typeof h=="object"&&!Array.isArray(h)?h:{},i=T({get:()=>s(a.modelValue),set:h=>l("update:modelValue",s(h))});return(h,u)=>{const I=Wt("FormKit");return t(),j(I,{type:"group",name:e.groupName,modelValue:i.value,"onUpdate:modelValue":u[1]||(u[1]=S=>i.value=S),"outer-class":"$reset",classes:{outer:"$remove:mb-4 mb-0"}},{default:Pe(()=>[B(ls,{modelValue:i.value,"onUpdate:modelValue":u[0]||(u[0]=S=>i.value=S),scanned:e.scanned,"allow-declaration-edit":!1,"allow-secret-values":!0,"allow-secret-declarations":!0,"require-required-values":e.requireRequiredValues,"show-custom-rows":!1,disabled:e.disabled,thin:""},null,8,["modelValue","scanned","require-required-values","disabled"])]),_:1},8,["name","modelValue"])}}}),Hi={key:0,class:"create-thread-inline-header flex h-12 shrink-0 items-center border-b border-neutral-300 px-7 dark:border-neutral-700"},Wi={class:"text-base font-bold"},Ki={class:"hidden"},Ji={class:"create-thread-scroll flex-1 overflow-y-auto p-6"},Gi={class:"space-y-4"},Yi={key:1},Qi={class:"px-3 py-2 rounded-lg border border-neutral-200 dark:border-neutral-700 bg-neutral-50 dark:bg-neutral-900 text-sm text-neutral-700 dark:text-neutral-300"},Xi={key:2},Zi={class:"flex items-center justify-between mb-1"},ed={key:0,class:"flex items-center gap-1.5 ml-auto"},td={key:0},nd={key:1},ad={key:2},rd={key:3,class:"space-y-4"},sd={key:4,class:"text-center text-sm text-neutral-500"},od={key:5,class:"space-y-3"},ld={key:6,class:"text-center text-sm text-neutral-500"},id={key:7,class:"create-thread-inline-actions flex flex-col items-end gap-2"},dd={class:"create-thread-action-buttons flex gap-2"},ud={key:0,class:"create-thread-footer p-6 border-t border-neutral-200 dark:border-neutral-700 flex-shrink-0"},cd={class:"create-thread-footer-row flex justify-between items-center"},fd={class:"create-thread-action-buttons flex gap-2"},Ta="__optional__",pd=et({__name:"CreateThreadModal",props:{modelValue:{type:Boolean},editThread:{},lockedAgentId:{},inline:{type:Boolean}},emits:["update:modelValue","thread-created","thread-updated"],setup(e,{emit:o}){const a=e,l=o,s=T(()=>!!a.editThread),i=g(""),h=g(!1),u=g(!1),I=g(""),S=g([]),$=g(!1),m=g({}),y=g(null),L=se=>se&&typeof se=="object"&&!Array.isArray(se)?se:{},C=se=>se==null?"":String(se),V=se=>C(se).split(",").map(Z=>Z.trim()).filter(Z=>Z.length>0),H=se=>{const Z=L(se),Q={};for(const[ce,fe]of Object.entries(Z)){if(ce.startsWith(Ta)||/^(text|checkbox)_\d+$/.test(ce))continue;const Fe=C(fe);Fe&&(Q[ce]=Fe)}for(const[ce,fe]of Object.entries(Z)){if(!ce.startsWith(Ta)||!Array.isArray(fe))continue;let Fe=0;for(const Ye of fe){const F=L(Ye);if(Object.values(F).some(ye=>C(ye).trim().length>0)){for(const[ye,Re]of Object.entries(F)){if(/^(text|checkbox)_\d+$/.test(ye))continue;const Ve=C(Re),He=Fe===0?ye:`${ye}__${Fe+1}`;if(Fe===0){Ve&&(Q[He]=Ve);continue}Q[He]=Ve}Fe+=1}}}return Q},J=(se,Z)=>{const Q=new Map;for(const fe of Z||[])Q.set(fe.property,fe.type==="secret"?"secret":"text");const ce={};for(const fe of Object.keys(se)){const Fe=fe.replace(/__\d+$/,"");ce[fe]=Q.get(Fe)||"secret"}return ce},le=se=>{const Z=new URL(Qe(`/api/variables/agents/${encodeURIComponent(se)}`),window.location.origin);return Z.searchParams.set("include_optional_disabled","1"),Z.toString()},X=()=>({include_subagents:!1,agent_id:s.value?a.editThread?.agent_id||"":a.lockedAgentId||"",tags_csv:s.value&&a.editThread?.tags?.join(", ")||"",data:{},env:{}}),ne=se=>{y.value=se},ue=se=>{const Z=L(se),Q=C(Z.agent_id),ce=!!Z.include_subagents;return i.value!==Q&&(i.value=Q),h.value!==ce&&(h.value=ce),""},{data:K,isFetching:P,execute:M}=Ot(Qe("/api/agents"),{immediate:!1}).json(),W=T(()=>{if(!K.value)return[];const se=K.value?.agents||[];return s.value||h.value?se:se.filter(Z=>Z.type!=="dual_ai")}),q=()=>W.value.map(se=>({value:se.id,label:se.title})),_e=T(()=>!a.lockedAgentId||!K.value?a.lockedAgentId||"":(K.value?.agents||[]).find(Q=>Q.id===a.lockedAgentId)?.title||a.lockedAgentId),Ne=T(()=>!i.value||!K.value?null:(K.value?.agents||[]).find(Z=>Z.id===i.value)||null),{data:te,isFetching:qe,execute:z}=Ot(T(()=>Ne.value?.side_a_agent_prompt?Qe(`/api/prompts/${encodeURIComponent(Ne.value.side_a_agent_prompt)}`):""),{immediate:!1}).json(),he=T(()=>{if(!te.value)return null;const Z=(te.value.prompt||te.value).required_schema;if(!Z)return null;try{return typeof Z=="string"?JSON.parse(Z):Z}catch{return null}}),ke=T(()=>{const se=he.value;return!se||!se.properties?[]:Object.entries(se.properties).map(([Z,Q])=>({name:Z,type:Array.isArray(Q.type)?Q.type[0]||"string":Q.type||"string",description:typeof Q.description=="string"?Q.description:"",required:se.required?.includes(Z)||!1,enum:Q.enum}))}),Le=T(()=>S.value.length>0),we=async se=>{if(!se){S.value=[];return}$.value=!0;try{const Z=await fetch(le(se));if(!Z.ok){S.value=[];return}const Q=await Z.json();S.value=Q.variables||[]}catch{S.value=[]}finally{$.value=!1}};be(i,async se=>{m.value={},se&&Ne.value?.side_a_agent_prompt?await z():te.value=null,se?await we(se):S.value=[]}),be([h,W,s],()=>{s.value||!i.value||W.value.some(Z=>Z.id===i.value)||(i.value="",y.value?.at("agent_id")?.input(""))});const me=()=>{i.value=s.value?a.editThread?.agent_id||"":a.lockedAgentId||"",h.value=!1,I.value="",m.value={},un(y),S.value=[],te.value=null,y.value?.reset(X())},Se=async se=>{u.value=!0,I.value="",un(y);const Z=L(se),Q=V(Z.tags_csv);try{if(s.value){const ye=await fetch(Qe(`/api/threads/${a.editThread.id}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tags:Q})});if(!ye.ok){const Re=await ye.json();dn(Re,y);return}l("thread-updated"),me(),l("update:modelValue",!1);return}const ce={agent_id:C(Z.agent_id),tags:Q.length>0?Q:void 0},fe=L(Z.data);Object.keys(fe).length>0&&(ce.data=fe);const Fe=H(Z.env);Object.keys(Fe).length>0&&(ce.env=Fe,ce.env_types=J(Fe,S.value));const Ye=await fetch(Qe("/api/threads"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ce)});if(!Ye.ok){const ye=await Ye.json();dn(ye,y);return}const $e=(await Ye.json()).threadId;if(!$e){dn({error:"Thread created but ID not found in response"},y);return}l("thread-created",$e),me(),l("update:modelValue",!1)}catch(ce){const fe=(ce instanceof Error?ce.message:"")||`Failed to ${s.value?"update":"create"} thread`;dn({error:fe},y)||(I.value=fe)}finally{u.value=!1}},Ae=()=>{me(),l("update:modelValue",!1)};return be(()=>a.modelValue,async se=>{se&&(a.lockedAgentId&&(h.value=!0),await M(),me(),a.lockedAgentId&&(i.value=a.lockedAgentId,await Xe(),y.value?.at("agent_id")?.input(a.lockedAgentId)))},{immediate:!0}),(se,Z)=>{const Q=Wt("FormKit");return e.modelValue?(t(),j(Mt(e.inline?"div":ar),{key:0,"model-value":e.modelValue,"onUpdate:modelValue":Z[1]||(Z[1]=ce=>se.$emit("update:modelValue",ce)),title:s.value?"Edit Thread":"Create New Thread",width:"max-w-3xl","content-padding":!1,class:G(["create-thread-shell",e.inline?"flex h-full min-h-0 flex-col bg-white dark:bg-neutral-950":""])},{default:Pe(()=>[B(c(oa),{config:c(la)},{default:Pe(()=>[e.inline?(t(),r("div",Hi,[n("h3",Wi,p(s.value?"Edit Thread":"Create New Thread"),1)])):b("",!0),B(Q,{type:"form",id:"create-thread-form",actions:!1,onSubmit:Se,onNode:ne,"form-class":"$reset flex-1 min-h-0 flex flex-col"},{default:Pe(({value:ce})=>[n("span",Ki,p(ue(ce)),1),n("div",Ji,[n("div",Gi,[I.value?(t(),j(c(tr),{key:0,variant:"error"},{default:Pe(()=>[rt(p(I.value),1)]),_:1})):b("",!0),e.lockedAgentId?(t(),r("div",Yi,[B(Q,{type:"hidden",name:"agent_id",value:e.lockedAgentId},null,8,["value"]),Z[2]||(Z[2]=n("label",{class:"block text-zinc-700 dark:text-zinc-300 text-xs font-bold mb-1"},"Agent",-1)),n("div",Qi,p(_e.value),1)])):(t(),r("div",Xi,[n("div",Zi,[Z[4]||(Z[4]=n("label",{class:"block text-zinc-700 dark:text-zinc-300 text-xs font-bold"}," Agent ",-1)),s.value?b("",!0):(t(),r("div",ed,[Z[3]||(Z[3]=n("span",{class:"text-[11px] text-neutral-500 dark:text-neutral-400"}," Include subagents ",-1)),B(Q,{type:"toggle",name:"include_subagents",value:!1,"on-value":!0,"off-value":!1,"on-value-label":"","off-value-label":"",disabled:c(P),classes:{outer:"$remove:mb-4 mb-0",wrapper:"$remove:items-center flex items-center",label:"$remove:hidden",inner:"h-4",track:"h-4 w-7 rounded-full",thumb:"h-3 w-3",valueLabel:"$remove:hidden"}},null,8,["disabled"])]))]),B(Q,{type:"selectSearch",name:"agent_id",value:i.value,options:q,disabled:c(P)||s.value,placeholder:"Select an agent...",validation:"required","validation-visibility":"submit"},null,8,["value","disabled"]),B(c(Bn),{class:"mt-1"},{default:Pe(()=>[s.value?(t(),r("span",td,"Agent cannot be changed after thread creation")):h.value?(t(),r("span",nd,"Choose which agent will handle this conversation (subagents included)")):(t(),r("span",ad,"Choose which agent will handle this conversation"))]),_:1})])),!s.value&&ke.value.length>0&&!c(qe)?(t(),r("div",rd,[Z[5]||(Z[5]=n("h4",{class:"text-sm font-medium text-neutral-700 dark:text-neutral-300"}," Required Information ",-1)),B(Q,{type:"group",name:"data","outer-class":"$reset",classes:{outer:"$remove:mb-4 mb-0"}},{default:Pe(()=>[(t(!0),r(Ee,null,We(ke.value,fe=>(t(),r("div",{key:fe.name,class:"space-y-2"},[fe.enum?(t(),j(Q,{key:0,type:"selectSearch",name:fe.name,label:fe.name,options:[{value:"",label:"Select..."},...fe.enum.map(Fe=>({value:Fe,label:Fe}))],validation:fe.required?"required":"","validation-visibility":"submit"},null,8,["name","label","options","validation"])):fe.type==="string"?(t(),j(Q,{key:1,type:"text",name:fe.name,label:fe.name,placeholder:fe.description,validation:fe.required?"required":"","validation-visibility":"submit"},null,8,["name","label","placeholder","validation"])):fe.type==="number"||fe.type==="integer"?(t(),j(Q,{key:2,type:"number",name:fe.name,label:fe.name,placeholder:fe.description,validation:fe.required?"required":"","validation-visibility":"submit"},null,8,["name","label","placeholder","validation"])):fe.type==="boolean"?(t(),j(Q,{key:3,type:"checkbox",name:fe.name,label:fe.name,validation:fe.required?"required":"","validation-visibility":"submit"},null,8,["name","label","validation"])):(t(),j(Q,{key:4,type:"textarea",name:fe.name,label:fe.name,placeholder:fe.description||`Enter ${fe.name} (JSON format)`,validation:fe.required?"required":"","validation-visibility":"submit",rows:3},null,8,["name","label","placeholder","validation"])),fe.description?(t(),j(c(Bn),{key:5,class:"mt-1"},{default:Pe(()=>[rt(p(fe.description),1)]),_:2},1024)):b("",!0)]))),128))]),_:1})])):b("",!0),!s.value&&c(qe)?(t(),r("div",sd," Loading agent requirements... ")):b("",!0),!s.value&&Le.value?(t(),r("div",od,[Z[6]||(Z[6]=n("h4",{class:"text-sm font-medium text-neutral-700 dark:text-neutral-300"}," Variables ",-1)),Z[7]||(Z[7]=n("p",{class:"text-xs text-neutral-500 dark:text-neutral-400"}," Required variables must be resolved before a new thread can be created. ",-1)),B(Ui,{modelValue:m.value,"onUpdate:modelValue":Z[0]||(Z[0]=fe=>m.value=fe),"group-name":"env",scanned:S.value,disabled:u.value,"require-required-values":!0},null,8,["modelValue","scanned","disabled"])])):b("",!0),!s.value&&$.value?(t(),r("div",ld," Scanning environment variables... ")):b("",!0),n("div",null,[B(Q,{type:"text",name:"tags_csv",value:s.value&&a.editThread?.tags?.join(", ")||"",label:"Tags",placeholder:"research, urgent, production"},null,8,["value"]),B(c(Bn),{class:"mt-1"},{default:Pe(()=>[...Z[8]||(Z[8]=[rt(" Comma-separated tags to help organize and search threads ",-1)])]),_:1})]),e.inline?(t(),r("div",id,[B(c(Xn),{node:y.value||void 0},null,8,["node"]),n("div",dd,[B(c(kn),{variant:"ghost",size:"sm",disabled:u.value,onClick:Ae},{default:Pe(()=>[...Z[9]||(Z[9]=[rt(" Cancel ",-1)])]),_:1},8,["disabled"]),B(c(kn),{variant:"primary",size:"sm",disabled:u.value||c(P),loading:u.value,type:"submit",form:"create-thread-form"},{default:Pe(()=>[...Z[10]||(Z[10]=[rt(" Create Thread ",-1)])]),_:1},8,["disabled","loading"])])])):b("",!0)])]),e.inline?b("",!0):(t(),r("div",ud,[n("div",cd,[B(c(Xn),{node:y.value||void 0},null,8,["node"]),n("div",fd,[B(c(kn),{variant:"ghost",size:"sm",disabled:u.value,onClick:Ae},{default:Pe(()=>[...Z[11]||(Z[11]=[rt(" Cancel ",-1)])]),_:1},8,["disabled"]),B(c(kn),{variant:"primary",size:"sm",disabled:u.value||c(P),loading:u.value,type:"submit",form:"create-thread-form"},{default:Pe(()=>[s.value?(t(),r(Ee,{key:0},[rt(p(u.value?"Updating...":"Update Thread"),1)],64)):(t(),r(Ee,{key:1},[rt(p(u.value?"Creating...":"Create Thread"),1)],64))]),_:1},8,["disabled","loading"])])])]))]),_:1})]),_:1},8,["config"])]),_:1},8,["model-value","title","class"])):b("",!0)}}}),vd=vt(pd,[["__scopeId","data-v-85821044"]]),hd=["accept"],md=["disabled"],gd=et({__name:"FileUpload",props:{isProcessing:{type:Boolean},accept:{},buttonClass:{}},emits:["filesSelected"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g(null),h=T(()=>l.accept||"image/*,.pdf,.txt,.md,.json,.csv");function u(){i.value?.click()}function I($){const m=$.target;m.files&&m.files.length>0&&(s("filesSelected",m.files),m.value="")}function S($){const m=$.clipboardData?.items;if(!m)return;const y=[];for(let L=0;L<m.length;L++){const C=m[L];if(C.kind==="file"){const V=C.getAsFile();V&&y.push(V)}}if(y.length>0){const L=new DataTransfer;y.forEach(C=>L.items.add(C)),s("filesSelected",L.files)}}return o({handlePaste:S}),($,m)=>(t(),r(Ee,null,[n("input",{ref_key:"fileInputRef",ref:i,type:"file",accept:h.value,multiple:"",class:"hidden",onChange:I},null,40,hd),n("button",{type:"button",onClick:u,class:G(["p-1.5 hover:bg-neutral-100 dark:hover:bg-neutral-800 rounded-lg transition-colors text-neutral-500 hover:text-neutral-700 dark:hover:text-neutral-300",[e.buttonClass,{"opacity-50 cursor-not-allowed":e.isProcessing}]]),disabled:e.isProcessing,title:"Attach files","aria-label":"Attach files"},[B(c(Ar),{size:18})],10,md)],64))}}),xd={class:"absolute bottom-0 left-4 right-4 z-20 pb-4 pt-8 min-w-0 overflow-hidden bg-gradient-to-t from-white via-white/95 to-white/0 dark:from-neutral-900 dark:via-neutral-900/95 dark:to-neutral-900/0"},bd={key:0,class:"mb-2 rounded-md border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700 dark:border-red-900/60 dark:bg-red-950/30 dark:text-red-300"},yd={key:1,class:"mb-2 flex flex-wrap gap-2"},kd={key:0,class:"w-16 h-16 rounded-lg overflow-hidden border border-neutral-200 dark:border-neutral-700 bg-neutral-100 dark:bg-neutral-800"},_d=["src","alt"],wd={key:1,class:"w-full h-full flex items-center justify-center"},$d={key:1,class:"h-16 px-3 rounded-lg border border-neutral-200 dark:border-neutral-700 bg-neutral-100 dark:bg-neutral-800 flex items-center gap-2"},Cd=["title"],Sd=["onClick"],Td=["title","aria-label"],Id=["src"],Ad=["disabled","placeholder"],Ed=["disabled"],Ld={key:0,xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"2",stroke:"currentColor",class:"w-4 h-4"},Rd={key:1,class:"w-4 h-4"},Md=et({__name:"MessageComposer",props:{attachments:{},assistantAvatarSrc:{},assistantAvatarSeed:{},userAvatarSrc:{},sideALabel:{},sideBLabel:{},isExecuting:{type:Boolean},isProcessingFiles:{type:Boolean},sendMessage:{type:Function},stopThread:{type:Function},addFiles:{type:Function},removeAttachment:{type:Function}},emits:["sent"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g(null),h=g(null),u=g(""),I=g("B"),S=g(!1),$=g(!1),m=g(null),y=T(()=>l.attachments.length>0),L=T(()=>I.value==="A"?l.sideALabel:l.sideBLabel),C=T(()=>`Message from ${L.value}...`),V=g(C.value);let H=null;const J=()=>{H&&(clearTimeout(H),H=null)};be(C,M=>{J(),V.value="";const W=q=>{V.value=M.slice(0,q),q<M.length&&(H=setTimeout(()=>W(q+1),16))};H=setTimeout(()=>W(1),20)},{immediate:!0}),wt(J);const le=(M=h.value)=>{if(!M){S.value=!1;return}const W=M.style.minHeight;M.style.minHeight="0px",M.style.height="auto";const q=M.scrollHeight,_e=Math.min(q,160);M.style.height=`${_e}px`,M.style.minHeight=W,S.value=q>52||u.value.includes(`
9
+ `)},X=M=>{le(M.target instanceof HTMLTextAreaElement?M.target:void 0)};be(u,async()=>{await Xe(),le()});const ne=async()=>{I.value=I.value==="A"?"B":"A",await Xe(),h.value?.focus()},ue=async()=>{if(!(u.value.trim().length>0)&&!y.value||$.value)return;m.value=null;const W=u.value,q=I.value==="A"?"assistant":"user";u.value="",S.value=!1,await Xe(),le(),$.value=!0;try{await l.sendMessage({role:q,content:W}),s("sent")}catch{m.value="Message could not be sent. Please try again."}finally{$.value=!1,await Xe(),h.value?.focus()}},K=M=>{M.key==="Enter"&&!M.shiftKey&&(M.preventDefault(),ue())},P=async()=>{try{m.value=null,await l.stopThread()}catch{m.value="Thread execution could not be stopped. Please try again."}};return o({focusInput:async()=>{await Xe(),h.value?.focus()}}),(M,W)=>(t(),r("div",xd,[m.value?(t(),r("div",bd,p(m.value),1)):b("",!0),e.attachments.length>0?(t(),r("div",yd,[(t(!0),r(Ee,null,We(e.attachments,q=>(t(),r("div",{key:q.id,class:"relative group"},[q.isImage?(t(),r("div",kd,[q.previewUrl?(t(),r("img",{key:0,src:q.previewUrl,alt:q.name,class:"w-full h-full object-cover"},null,8,_d)):(t(),r("div",wd,[...W[2]||(W[2]=[n("div",{class:"w-4 h-4 border-2 border-neutral-300 border-t-neutral-600 rounded-full animate-spin"},null,-1)])]))])):(t(),r("div",$d,[n("span",{class:"text-xs text-neutral-600 dark:text-neutral-300 max-w-[80px] truncate",title:q.name},p(q.name),9,Cd)])),n("button",{onClick:Ge(_e=>e.removeAttachment(q.id),["stop"]),class:"absolute -top-1 -right-1 w-4 h-4 rounded-full bg-neutral-600 dark:bg-neutral-500 text-white flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity hover:bg-red-500"},[...W[3]||(W[3]=[n("span",{class:"text-[10px] font-bold leading-none"},"x",-1)])],8,Sd)]))),128))])):b("",!0),n("div",{class:G(["mx-auto max-w-3xl rounded-[28px] border border-neutral-200 bg-white/95 p-2 backdrop-blur transition-[border-radius] dark:border-neutral-700 dark:bg-neutral-900/95",S.value?"grid grid-cols-[auto_auto_1fr_auto] grid-rows-[auto_auto] gap-x-2 gap-y-2":"flex items-end gap-2"])},[n("button",{onClick:ne,type:"button",class:G(["sender-avatar-switch relative h-8 w-9 shrink-0 self-center",S.value?"col-start-1 row-start-2":""]),title:`Sending as ${L.value}. Click to switch.`,"aria-label":`Sending as ${L.value}. Click to switch.`},[B(pn,{icon:e.assistantAvatarSrc,seed:e.assistantAvatarSeed??e.sideALabel,class:G(["sender-avatar rounded-lg border-2 border-white bg-white object-cover shadow-sm ring-1 ring-black/10 dark:border-neutral-900 dark:bg-neutral-900 dark:ring-white/15",I.value==="A"?"sender-avatar--front":"sender-avatar--back"])},null,8,["icon","seed","class"]),n("img",{src:e.userAvatarSrc,alt:"",class:G(["sender-avatar rounded-lg border-2 border-white bg-white object-cover shadow-sm ring-1 ring-black/10 dark:border-neutral-900 dark:bg-neutral-900 dark:ring-white/15",I.value==="B"?"sender-avatar--front":"sender-avatar--back"])},null,10,Id)],10,Td),n("div",{class:G(S.value?"col-start-2 row-start-2 self-center":"")},[B(gd,{ref_key:"fileUploadRef",ref:i,"is-processing":!1,"button-class":S.value?"":"-translate-y-[0.1875rem]",onFilesSelected:e.addFiles},null,8,["button-class","onFilesSelected"])],2),ut(n("textarea",{ref_key:"messageTextarea",ref:h,"onUpdate:modelValue":W[0]||(W[0]=q=>u.value=q),onKeydown:K,onPaste:W[1]||(W[1]=q=>i.value?.handlePaste(q)),disabled:$.value,placeholder:V.value,rows:"1",class:G(["resize-none bg-transparent text-sm text-black focus:outline-none disabled:opacity-50 dark:text-white",S.value?"col-span-4 row-start-1 min-h-24 w-full px-3 py-3":"min-h-9 flex-1 px-1 py-2"]),style:{"max-height":"160px"},onInput:X},null,42,Ad),[[Tn,u.value]]),e.isExecuting?(t(),r("button",{key:1,id:"stop-thread-button",onClick:P,class:G(["h-9 w-9 shrink-0 rounded-full flex items-center justify-center transition-all bg-red-600 text-white dark:bg-red-500 hover:bg-red-700 dark:hover:bg-red-600",S.value?"col-start-4 row-start-2 justify-self-end":""]),title:"Stop execution"},[...W[5]||(W[5]=[n("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"2",stroke:"currentColor",class:"w-4 h-4"},[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5.25 7.5A2.25 2.25 0 017.5 5.25h9a2.25 2.25 0 012.25 2.25v9a2.25 2.25 0 01-2.25 2.25h-9a2.25 2.25 0 01-2.25-2.25v-9z"})],-1)])],2)):(t(),r("button",{key:0,id:"send-message-button",onClick:ue,disabled:!u.value.trim()&&!y.value||$.value||e.isProcessingFiles,class:G(["h-9 w-9 shrink-0 rounded-full flex items-center justify-center transition-all",[S.value?"col-start-4 row-start-2 justify-self-end":"",{"bg-accent-600 text-white hover:bg-accent-700 dark:bg-accent-500 dark:hover:bg-accent-400":(u.value.trim()||y.value)&&!$.value&&!e.isProcessingFiles,"bg-neutral-200 text-neutral-400 dark:bg-neutral-700 dark:text-neutral-600":!u.value.trim()&&!y.value||$.value||e.isProcessingFiles}]]),title:"Send message (Enter)"},[$.value?(t(),r("div",Rd,[B(Ze)])):(t(),r("svg",Ld,[...W[4]||(W[4]=[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18"},null,-1)])]))],10,Ed))],2)]))}}),Dd=vt(Md,[["__scopeId","data-v-bd07533d"]]),Fd={class:"bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},Pd=["disabled"],Nd={key:1,class:"flex items-center gap-2 p-3 text-xs text-neutral-500 dark:text-neutral-400"},zd={class:"p-3 space-y-3"},jd={class:"flex flex-wrap gap-x-4 gap-y-1 text-xs"},Bd={class:"ml-1 font-mono font-semibold text-neutral-800 dark:text-neutral-100"},Od={class:"ml-1 font-mono text-neutral-600 dark:text-neutral-400"},Vd={key:0,class:"flex flex-wrap gap-x-4 gap-y-1 text-xs"},qd={class:"ml-1 font-mono text-neutral-600 dark:text-neutral-400"},Ud={class:"ml-1 font-mono text-neutral-600 dark:text-neutral-400"},Hd={class:"ml-1 font-mono text-neutral-600 dark:text-neutral-400"},Wd={key:0},Kd={class:"ml-1 font-mono text-neutral-600 dark:text-neutral-400"},Jd={key:1,class:"w-full text-[11px]"},Gd={class:"border-b border-neutral-200 dark:border-neutral-800"},Yd={key:0,class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},Qd={key:1,class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},Xd={key:2,class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},Zd=["title"],eu={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},tu={key:0,class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},nu={key:1,class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},au={key:2,class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},ru={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},su={key:2,class:"text-[10px] text-neutral-400 dark:text-neutral-500"},ou={key:3,class:"w-full text-[11px]"},lu={class:"border-b border-neutral-200 dark:border-neutral-800"},iu={key:0,class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},du={key:1,class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},uu={key:2,class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},cu=["title"],fu={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},pu={key:0,class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},vu={key:1,class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},hu={key:2,class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},mu={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},gu=et({__name:"ThreadUsageCostCard",props:{expanded:{type:Boolean},loading:{type:Boolean},costData:{},hideHeader:{type:Boolean}},emits:["toggle"],setup(e,{emit:o}){const a=e,l=o,s=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}),i=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumSignificantDigits:3}),h=m=>s.format(m),u=m=>m==null?"—":m===0?"$0":i.format(m),I=T(()=>{const m=a.costData;return m?(m.inputCost??0)>0||(m.cachedCost??0)>0||(m.outputCost??0)>0||(m.routerFeeCost??0)>0:!1}),S=m=>{if(m.isRoot)return"This thread";const y=m.agentName||"subagent";return m.threadName?`${y} · ${m.threadName}`:y},$=m=>(m.threads?.length??0)>1;return(m,y)=>(t(),r("div",Fd,[e.hideHeader?b("",!0):(t(),r("button",{key:0,onClick:y[0]||(y[0]=L=>l("toggle")),disabled:e.loading,type:"button",class:"w-full flex items-center gap-2 px-3 py-2.5 text-left hover:bg-neutral-50 dark:hover:bg-neutral-800 transition-colors disabled:opacity-50"},[B(c(Er),{size:14,class:"shrink-0 text-neutral-400"}),y[1]||(y[1]=n("span",{class:"flex-1 text-xs font-medium text-neutral-700 dark:text-neutral-200"},"Usage & Cost",-1)),e.loading?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(Tt),{key:1,size:14,class:G(["shrink-0 text-neutral-400 transition-transform duration-200",{"-rotate-180":e.expanded}])},null,8,["class"]))],8,Pd)),e.hideHeader&&e.loading?(t(),r("div",Nd,[B(Ze,{size:"xs"}),y[2]||(y[2]=n("span",null,"Loading cost breakdown...",-1))])):(t(),j(hn,{key:2,"enter-active-class":"transition-all duration-200 ease-out","enter-from-class":"opacity-0 max-h-0","enter-to-class":"opacity-100 max-h-[480px]","leave-active-class":"transition-all duration-150 ease-in","leave-from-class":"opacity-100 max-h-[480px]","leave-to-class":"opacity-0 max-h-0"},{default:Pe(()=>[(e.hideHeader||e.expanded)&&e.costData?(t(),r("div",{key:0,class:G(["overflow-hidden",{"border-t border-neutral-100 dark:border-neutral-800":!e.hideHeader}])},[n("div",zd,[n("div",jd,[n("div",null,[y[3]||(y[3]=n("span",{class:"text-neutral-500 dark:text-neutral-400"},"Total:",-1)),n("span",Bd,p(h(e.costData.totalCost)),1)]),n("div",null,[y[4]||(y[4]=n("span",{class:"text-neutral-500 dark:text-neutral-400"},"Per msg:",-1)),n("span",Od,p(h(e.costData.avgCostPerMessage)),1)])]),I.value?(t(),r("div",Vd,[n("div",null,[y[5]||(y[5]=n("span",{class:"text-neutral-500 dark:text-neutral-400"},"Input:",-1)),n("span",qd,p(u(e.costData.inputCost)),1)]),n("div",null,[y[6]||(y[6]=n("span",{class:"text-neutral-500 dark:text-neutral-400"},"Cached:",-1)),n("span",Ud,p(u(e.costData.cachedCost)),1)]),n("div",null,[y[7]||(y[7]=n("span",{class:"text-neutral-500 dark:text-neutral-400"},"Output:",-1)),n("span",Hd,p(u(e.costData.outputCost)),1)]),(e.costData.routerFeeCost??0)>0?(t(),r("div",Wd,[y[8]||(y[8]=n("span",{class:"text-neutral-500 dark:text-neutral-400"},"Router fee:",-1)),n("span",Kd,p(u(e.costData.routerFeeCost)),1)])):b("",!0)])):b("",!0),$(e.costData)?(t(),r("table",Jd,[n("thead",null,[n("tr",Gd,[y[9]||(y[9]=n("th",{class:"text-left py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Thread",-1)),y[10]||(y[10]=n("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px] w-10"},"Reqs",-1)),I.value?(t(),r("th",Yd,"In")):b("",!0),I.value?(t(),r("th",Qd,"Cached")):b("",!0),I.value?(t(),r("th",Xd,"Out")):b("",!0),y[11]||(y[11]=n("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Cost",-1))])]),n("tbody",null,[(t(!0),r(Ee,null,We(e.costData.threads,L=>(t(),r("tr",{key:L.threadId},[n("td",{class:"py-1.5 truncate max-w-[110px] text-neutral-700 dark:text-neutral-300",title:L.threadId},p(S(L)),9,Zd),n("td",eu,p(L.requestCount),1),I.value?(t(),r("td",tu,p(u(L.inputCost)),1)):b("",!0),I.value?(t(),r("td",nu,p(u(L.cachedCost)),1)):b("",!0),I.value?(t(),r("td",au,p(u(L.outputCost)),1)):b("",!0),n("td",ru,p(h(L.totalCost)),1)]))),128))])])):b("",!0),e.costData.truncated?(t(),r("p",su," Large subtree — some subagent threads were not included. ")):b("",!0),e.costData.modelBreakdown.length>0?(t(),r("table",ou,[n("thead",null,[n("tr",lu,[y[12]||(y[12]=n("th",{class:"text-left py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Model",-1)),y[13]||(y[13]=n("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px] w-10"},"Reqs",-1)),I.value?(t(),r("th",iu,"In")):b("",!0),I.value?(t(),r("th",du,"Cached")):b("",!0),I.value?(t(),r("th",uu,"Out")):b("",!0),y[14]||(y[14]=n("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Cost",-1))])]),n("tbody",null,[(t(!0),r(Ee,null,We(e.costData.modelBreakdown,L=>(t(),r("tr",{key:L.modelName},[n("td",{class:"py-1.5 truncate max-w-[110px] text-neutral-700 dark:text-neutral-300",title:L.modelName},p(L.modelName),9,cu),n("td",fu,p(L.requestCount),1),I.value?(t(),r("td",pu,p(u(L.inputCost)),1)):b("",!0),I.value?(t(),r("td",vu,p(u(L.cachedCost)),1)):b("",!0),I.value?(t(),r("td",hu,p(u(L.outputCost)),1)):b("",!0),n("td",mu,p(h(L.totalCost)),1)]))),128))])])):b("",!0)])],2)):b("",!0)]),_:1}))]))}}),xu={class:"flex flex-col h-full min-w-0 overflow-hidden"},bu={class:"pl-7 pr-4 border-b border-neutral-300 dark:border-neutral-700 h-12 flex items-center shrink-0"},yu={class:"flex items-center justify-between w-full"},ku={class:"flex items-center gap-2"},_u={class:"font-mono"},wu={class:"flex-1 min-h-0 flex flex-col overflow-hidden relative"},$u={key:0,class:"shrink-0 border-b border-neutral-200 bg-neutral-50 p-3 dark:border-neutral-800 dark:bg-neutral-950"},Cu={key:0,class:"text-neutral-500 dark:text-neutral-400 text-center py-8"},Su={key:1,class:"flex justify-center py-8"},Tu={key:2,class:"text-red-600 dark:text-red-400 text-center py-8"},Iu={key:0,class:"text-neutral-500 dark:text-neutral-400 text-center py-8"},Au={key:1,class:"p-3 bg-white dark:bg-neutral-900 border-t border-neutral-300 dark:border-neutral-700"},Eu={key:0,class:"mb-2 rounded-md border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700 dark:border-red-900/60 dark:bg-red-950/30 dark:text-red-300"},Lu={class:"flex items-center justify-end gap-2"},Ru=["disabled"],Mu=4e3,Rb=et({__name:"MessagesPane",props:{threadId:{},selectedMessageId:{},selectedLogId:{},selectedEffectId:{},hoveredLogId:{},showCollapseButton:{type:Boolean},createThreadDraft:{type:Boolean},lockedAgentId:{}},emits:["collapse","messageClick","messageHover","messageCountChanged","logsDeleted","cancelCreateThread","threadCreated","filesChanged"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g(!1),h=g(new Set),u=g(new Map),I=()=>{i.value=!i.value,i.value||(h.value=new Set,u.value=new Map)},S=(ge,O)=>{const ee=new Set(h.value);O?ee.add(ge):ee.delete(ge),h.value=ee},$=(ge,O)=>{const ee=new Map(u.value);ee.set(ge,O),u.value=ee},m=()=>{i.value=!1,h.value=new Set,u.value=new Map},y=T(()=>h.value.size),L=T(()=>{let ge=0;for(const[O]of u.value)h.value.has(O)||ge++;return ge}),C=T(()=>{const ge=y.value,O=L.value;return ge>0&&O>0?`Delete (${ge}), Update (${O})`:ge>0?`Delete (${ge})`:O>0?`Save changes (${O})`:"Delete"}),V=T(()=>y.value>0||L.value>0),H=async()=>{if(!l.threadId||!V.value)return;Q.value=null;const ge=[];for(const O of h.value){const ee=J.value.find(Oe=>Oe.id===O);ee&&"log_id"in ee&&ee.log_id&&ge.push(ee.log_id)}try{for(const[O,ee]of u.value)h.value.has(O)||await W(O,ee);for(const O of h.value)await M(O);ge.length>0&&s("logsDeleted",ge)}catch{Q.value="Message changes could not be applied. Please try again."}finally{m()}},{messages:J,threadInfo:le,isFetching:X,error:ne,wsConnected:ue,wsError:K,isExecuting:P,deleteMessageById:M,updateMessageContent:W,stopThread:q,sendMessage:_e,attachments:Ne,addAttachment:te,removeAttachment:qe}=rl(T(()=>l.threadId)),{thread:z}=ua(T(()=>l.threadId)),{theme:he}=is();be(()=>J.value.length,ge=>s("messageCountChanged",ge),{immediate:!0});const ke=T(()=>{const ge=[];for(const O of J.value){const ee=O,Oe=ee.attachments||[];for(const pe of Oe)pe.path&&ge.push(pe.path);if(typeof ee.content=="string")for(const pe of ee.content.matchAll(/\/attachments\/[^\s"'`),]+/g))ge.push(pe[0])}for(const O of Ne.value)O.path&&ge.push(O.path);return ge.sort().join(`
10
+ `)});be(ke,(ge,O)=>{ge&&ge!==O&&s("filesChanged")});const Le=T(()=>!1),we=ge=>{te(ge)},me=g(null),Se=g(null),Ae=g(null);o({scrollToLogId:ge=>Se.value&&me.value?Se.value.scrollToLogId(ge,me.value):!1,hasWorkblockForLogId:ge=>Se.value?Se.value.hasWorkblockForLogId(ge):!1,messageCount:T(()=>J.value.length),focusComposer:()=>Ae.value?.focusInput()});const Q=g(null),ce=g(!1),fe=g(!1),Fe=g(null),Ye=ge=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}).format(ge);let F=!1,$e=!1;async function ye(){if(!l.threadId){Fe.value=null;return}if(F){$e=!0;return}F=!0,fe.value=!0;try{const ge=await fetch(Qe(`/api/threads/${l.threadId}/cost`));if(!ge.ok)throw new Error("Failed to fetch cost breakdown");Fe.value=await ge.json()}catch{Fe.value=null,ce.value=!1}finally{fe.value=!1,F=!1,$e&&($e=!1,de())}}const Re=T(()=>fe.value&&!Fe.value?"...":Ye(Fe.value?.totalCost??0)),Ve=async()=>{ce.value=!ce.value,ce.value&&!Fe.value&&await ye()},He=async()=>{await Xe(),me.value&&(me.value.scrollTop=me.value.scrollHeight)};be(()=>J.value.length,async()=>{await He()}),be(()=>l.threadId,async ge=>{Fe.value=null,ce.value=!1,ge&&ye(),ge&&await He()});let ie=null;function de(){l.threadId&&(ie&&clearTimeout(ie),ie=setTimeout(()=>{ie=null,ye()},Mu))}be(()=>J.value.length,(ge,O)=>{O!==void 0&&l.threadId&&de()}),wt(()=>{ie&&clearTimeout(ie)}),be(X,async(ge,O)=>{O&&!ge&&await He()});const ae=ge=>{const O=le.value?.agent||z.value?.agent;if(!O)return"ai A";const ee=O.type;return ge==="A"&&O.side_a_label?O.side_a_label:ge==="B"&&O.side_b_label?O.side_b_label:ee==="ai_human"?ge==="A"?"ai":"human":ge==="A"?"ai A":"ai B"},Me=T(()=>ae("A")),Ke=T(()=>ae("B")),U=()=>{const ge=le.value?.agent||z.value?.agent;return ge?typeof ge.id=="string"?ge.id:typeof ge.name=="string"?ge.name:l.threadId||"thread":l.threadId||"thread"},Ce=T(()=>{const ge=le.value?.agent||z.value?.agent;if(!ge)return null;const O=typeof ge.icon=="string"?ge.icon:"",ee=typeof ge.id=="string"?ge.id:typeof ge.name=="string"?ge.name:"";return O||(ee?Ln(ee):null)}),oe=(ge,O)=>typeof window>"u"?O:window.getComputedStyle(document.documentElement).getPropertyValue(ge).trim()||O,Ue=T(()=>{const ge=ae("B");return ge.trim().toLowerCase()==="human"?(he.value,ds({bg:oe("--accent-100","#f5f5f5"),fg:oe("--accent-600","#737373"),border:oe("--accent-300","#d4d4d4")})):Ln(`${U()}:side-b:${ge}`)}),tt=async ge=>{if(!l.threadId||!_e)throw new Error("Thread is not ready for messages");await _e(ge),await He()},nt=async()=>{l.threadId&&await q()};return(ge,O)=>(t(),r("div",xu,[n("div",bu,[n("div",yu,[n("button",{onClick:O[0]||(O[0]=Ge(ee=>s("collapse"),["stop"])),type:"button",class:"-ml-1 flex 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 Messages pane","aria-label":"Collapse Messages pane"},[B(c(fn),{size:18,class:"shrink-0"}),O[6]||(O[6]=n("h2",{class:"text-base font-bold"},"Messages",-1)),e.threadId?(t(),j(dr,{key:0,connected:c(ue),error:c(K)},null,8,["connected","error"])):b("",!0)]),n("div",ku,[e.threadId?(t(),r("button",{key:0,onClick:Ge(Ve,["stop"]),type:"button",class:G(["inline-flex h-8 items-center gap-1.5 rounded-md bg-neutral-100 px-2 text-xs font-medium text-neutral-600 transition-colors hover:bg-neutral-200 hover:text-neutral-900 dark:bg-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-700 dark:hover:text-neutral-100",{"bg-neutral-200 text-neutral-900 dark:bg-neutral-700 dark:text-neutral-100":ce.value}]),title:"Toggle cost breakdown"},[n("span",_u,p(Re.value),1)],2)):b("",!0),e.threadId&&c(J).length>0?(t(),r("button",{key:1,onClick:I,type:"button",class:G(["p-1 hover:bg-neutral-100 dark:hover:bg-neutral-900 rounded transition-colors",{"bg-neutral-200 dark:bg-neutral-800":i.value}]),title:"Edit messages"},[B(c(Lr),{size:20})],2)):b("",!0),e.showCollapseButton!==!1?(t(),r("button",{key:2,onClick:O[1]||(O[1]=ee=>s("collapse")),type:"button",class:"p-1 hover:bg-neutral-100 dark:hover:bg-neutral-900 rounded transition-colors",title:"Collapse pane"},[B(c(Ja),{size:20})])):b("",!0)])])]),n("div",wu,[e.threadId&&ce.value&&!e.createThreadDraft?(t(),r("div",$u,[B(gu,{expanded:!0,loading:fe.value,"cost-data":Fe.value,"hide-header":"",onToggle:Ve},null,8,["loading","cost-data"])])):b("",!0),n("div",{ref_key:"messagesContainer",ref:me,class:G(["flex-1 min-h-0 overflow-y-auto overflow-x-hidden p-4 pb-28 space-y-4",e.createThreadDraft?"!p-0 !pb-0":""])},[e.createThreadDraft?(t(),j(vd,{key:0,inline:"","model-value":!0,"locked-agent-id":e.lockedAgentId,"onUpdate:modelValue":O[2]||(O[2]=ee=>{ee||s("cancelCreateThread")}),onThreadCreated:O[3]||(O[3]=ee=>s("threadCreated",ee))},null,8,["locked-agent-id"])):(t(),r(Ee,{key:1},[e.threadId?c(X)?(t(),r("div",Su,[B(Ze)])):c(ne)?(t(),r("div",Tu," Error loading messages: "+p(c(ne)),1)):(t(),r(Ee,{key:3},[e.threadId&&c(J).length===0?(t(),r("div",Iu," No messages yet ")):(t(),j(qi,{key:1,ref_key:"agentMessagesRef",ref:Se,messages:c(J),threadId:e.threadId,selectedMessageId:e.selectedMessageId,selectedLogId:e.selectedLogId,selectedEffectId:e.selectedEffectId,hoveredLogId:e.hoveredLogId,isEditMode:i.value,selectedForDelete:h.value,editedMessages:u.value,assistantAvatarSrc:Ce.value,userAvatarSrc:Ue.value,onMessageClick:O[4]||(O[4]=(ee,Oe,pe)=>s("messageClick",ee,Oe,pe)),onMessageHover:O[5]||(O[5]=ee=>s("messageHover",ee)),onSelectionChange:S,onMessageEdit:$},null,8,["messages","threadId","selectedMessageId","selectedLogId","selectedEffectId","hoveredLogId","isEditMode","selectedForDelete","editedMessages","assistantAvatarSrc","userAvatarSrc"]))],64)):(t(),r("div",Cu," Select a thread to view messages "))],64))],2),e.threadId&&i.value?(t(),r("div",Au,[Q.value?(t(),r("div",Eu,p(Q.value),1)):b("",!0),n("div",Lu,[n("button",{onClick:m,class:"px-4 py-2 rounded-lg font-medium text-sm transition-colors bg-neutral-200 text-black hover:bg-neutral-300 dark:bg-neutral-700 dark:text-white dark:hover:bg-neutral-600"}," Cancel "),n("button",{onClick:H,disabled:!V.value,class:G(["px-4 py-2 rounded-lg font-medium text-sm transition-colors",{"bg-red-600 text-white hover:bg-red-700":V.value&&y.value>0,"bg-black text-white hover:bg-neutral-800 dark:bg-white dark:text-black dark:hover:bg-neutral-200":V.value&&y.value===0,"bg-neutral-200 text-neutral-400 dark:bg-neutral-700 dark:text-neutral-500 cursor-not-allowed":!V.value}])},p(C.value),11,Ru)])])):e.threadId?(t(),j(Dd,{key:2,ref_key:"messageComposerRef",ref:Ae,attachments:c(Ne),"assistant-avatar-src":Ce.value,"assistant-avatar-seed":U(),"user-avatar-src":Ue.value,"side-a-label":Me.value,"side-b-label":Ke.value,"is-executing":c(P),"is-processing-files":Le.value,"send-message":tt,"stop-thread":nt,"add-files":we,"remove-attachment":c(qe),onSent:He},null,8,["attachments","assistant-avatar-src","assistant-avatar-seed","user-avatar-src","side-a-label","side-b-label","is-executing","is-processing-files","remove-attachment"])):b("",!0)])]))}});function Ia(e){return!!e&&typeof e=="object"}function pt(e){return typeof e=="string"?e:null}function xt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function at(e,o){return Object.prototype.hasOwnProperty.call(e,o)}function Du(e){if(!Ia(e))return null;const o=e.type,a=e.log_id;return typeof a!="string"||a.length===0?null:o==="log_queued_tools"?typeof e.queued_tools=="string"?{type:o,log_id:a,queued_tools:e.queued_tools}:null:o==="log_data"&&Ia(e.data)?{type:o,log_id:a,data:Fu(e.data)}:null}function Fu(e){const o={};if(at(e,"message_id")){const a=pt(e.message_id);a!==null&&(o.message_id=a)}if(at(e,"provider")){const a=pt(e.provider);a!==null&&(o.provider=a)}if(at(e,"actual_provider")&&(o.actual_provider=pt(e.actual_provider)),at(e,"model")){const a=pt(e.model);a!==null&&(o.model=a)}if(at(e,"model_name")&&(o.model_name=pt(e.model_name)),at(e,"prompt_name")&&(o.prompt_name=pt(e.prompt_name)),at(e,"tools_called")&&(o.tools_called=pt(e.tools_called)),at(e,"queued_tools")&&(o.queued_tools=pt(e.queued_tools)),at(e,"provider_tools")&&(o.provider_tools=pt(e.provider_tools)),at(e,"parent_log_id")&&(o.parent_log_id=pt(e.parent_log_id)),at(e,"retry_of_log_id")&&(o.retry_of_log_id=pt(e.retry_of_log_id)),at(e,"error")&&(o.error=pt(e.error)),at(e,"cost_total")&&(o.cost_total=xt(e.cost_total)),at(e,"input_tokens")&&(o.input_tokens=xt(e.input_tokens)),at(e,"cached_tokens")&&(o.cached_tokens=xt(e.cached_tokens)),at(e,"output_tokens")&&(o.output_tokens=xt(e.output_tokens)),at(e,"reasoning_tokens")&&(o.reasoning_tokens=xt(e.reasoning_tokens)),at(e,"total_tokens")&&(o.total_tokens=xt(e.total_tokens)),at(e,"latency_ms")&&(o.latency_ms=xt(e.latency_ms)),at(e,"time_to_first_token_ms")&&(o.time_to_first_token_ms=xt(e.time_to_first_token_ms)),at(e,"generation_ms")&&(o.generation_ms=xt(e.generation_ms)),at(e,"finish_reason")&&(o.finish_reason=pt(e.finish_reason)),at(e,"error_type")&&(o.error_type=pt(e.error_type)),at(e,"cost_input")&&(o.cost_input=xt(e.cost_input)),at(e,"cost_cached")&&(o.cost_cached=xt(e.cost_cached)),at(e,"cost_output")&&(o.cost_output=xt(e.cost_output)),at(e,"content")&&(o.content=pt(e.content)),at(e,"reasoning_content")&&(o.reasoning_content=pt(e.reasoning_content)),at(e,"is_complete")&&typeof e.is_complete=="boolean"&&(o.is_complete=e.is_complete),at(e,"created_at")){const a=xt(e.created_at);a!==null&&(o.created_at=a)}return o}function Pu(e,o){return{id:e,message_id:o.message_id??"",provider:o.provider??"",actual_provider:o.actual_provider??null,model:o.model??"",model_name:o.model_name??null,prompt_name:o.prompt_name??null,tools_called:o.tools_called??null,queued_tools:o.queued_tools??null,provider_tools:o.provider_tools??null,parent_log_id:o.parent_log_id??null,retry_of_log_id:o.retry_of_log_id??null,error:o.error??null,cost_total:o.cost_total??null,is_complete:o.is_complete??!1,created_at:o.created_at??0}}function Nu(e,o,a){if(o.type==="log_queued_tools")return{...e,queued_tools:o.queued_tools};const l=a.get(o.log_id);return l?{...e,queued_tools:l}:e}function zu(e,o){const a=new Map(e.pendingQueuedTools),l=e.realtimeLogs.findIndex(S=>S.id===o.log_id),s=l>=0?e.realtimeLogs[l]:null,i=e.httpLogs.find(S=>S.id===o.log_id)??null;if(o.type==="log_queued_tools"&&!s&&!i)return a.set(o.log_id,o.queued_tools),{...e,pendingQueuedTools:a};const h=s??i??Pu(o.log_id,o.type==="log_data"?o.data:{}),u=Nu(o.type==="log_data"?{...h,...o.data,id:o.log_id}:h,o,a);a.delete(o.log_id);const I=l>=0?e.realtimeLogs.map((S,$)=>$===l?u:S):[...e.realtimeLogs,u];return{...e,realtimeLogs:I,pendingQueuedTools:a}}function ju(e,o){const{limit:a=100,offset:l=0,order:s="desc",autoFetch:i=!0,enableWebSocket:h=!1}=o||{};T(()=>!!(typeof e=="string"?e:e?.value));const u=T(()=>{const Se=typeof e=="string"?e:e?.value;if(!Se)return"";const Ae=new URLSearchParams,se=typeof a=="number"?a:a.value,Z=typeof l=="number"?l:l.value,Q=typeof s=="string"?s:s.value;return Ae.append("limit",se.toString()),Ae.append("offset",Z.toString()),Ae.append("order",Q),Qe(`/api/threads/${Se}/logs?${Ae.toString()}`)}),{data:I,error:S,isFetching:$,isFinished:m,execute:y,abort:L}=Ot(u,{immediate:!1}).get().json();be([u,()=>i],([Se,Ae])=>{Se&&Ae&&y()},{immediate:!0});const C=T(()=>lr(S.value)?null:S.value),V=T(()=>I.value?.logs||[]),H=T(()=>I.value?.total||0),J=T(()=>I.value?.hasMore||!1),le=g(null),X=g(!1),ne=g(null),ue=g([]),K=new Map;let P=0,M=null,W=null,q=!0,_e=null;const Ne=3e4,te=3e4,qe=()=>{M&&(clearTimeout(M),M=null),W&&(clearInterval(W),W=null)},z=()=>{W&&clearInterval(W),W=setInterval(()=>{le.value&&le.value.readyState===WebSocket.OPEN&&le.value.send("ping")},te)},he=()=>{if(!q||!h)return;const Se=Math.min(1e3*Math.pow(2,P),Ne);P++,Ht(),M=setTimeout(()=>{q&&ke()},Se)},ke=()=>{const Se=typeof e=="string"?e:e?.value;if(!Se||!h)return;le.value&&(_e=null,le.value.close()),P===0&&(ue.value=[]);const Ae=window.location.protocol==="https:"?"wss:":"ws:",se=window.location.host,Z=ia(`${Ae}//${se}${Qe(`/api/threads/${Se}/logs`)}`);try{const Q=new WebSocket(Z);le.value=Q,_e=Q,Q.onopen=()=>{_e===Q&&(X.value=!0,ne.value=null,P=0,z(),Ht("Logs WebSocket","Connected"))},Q.onmessage=ce=>{if(_e===Q&&ce.data!=="pong")try{const fe=Du(JSON.parse(ce.data));if(fe){const Fe=zu({realtimeLogs:ue.value,httpLogs:V.value,pendingQueuedTools:K},fe);ue.value=Fe.realtimeLogs,K.clear(),Fe.pendingQueuedTools.forEach((Ye,F)=>{K.set(F,Ye)})}}catch{ne.value="Failed to parse log update"}},Q.onerror=ce=>{_e===Q&&(ne.value="WebSocket connection error")},Q.onclose=()=>{_e===Q&&(X.value=!1,qe(),Ht("Logs WebSocket","Disconnected"),he())}}catch(Q){ne.value=Q instanceof Error?Q.message:"Failed to create WebSocket",he()}},Le=()=>{q=!1,qe(),_e=null,le.value&&(le.value.close(),le.value=null),X.value=!1,P=0,ue.value=[],K.clear()},we=()=>{q=!0,P=0,ke()};return Kt(()=>{Le()}),{logs:T(()=>{if(!h)return V.value;const Se=new Map;V.value.forEach(Z=>Se.set(Z.id,Z)),ue.value.forEach(Z=>Se.set(Z.id,Z));const Ae=typeof s=="string"?s:s.value;return Array.from(Se.values()).sort((Z,Q)=>Ae==="desc"?Q.created_at-Z.created_at:Z.created_at-Q.created_at)}),total:H,hasMore:J,error:C,isFetching:$,isFinished:m,refetch:y,abort:L,wsConnected:X,wsError:ne,connectWebSocket:we,disconnectWebSocket:Le}}function Bu(e){if(!e)return null;try{const o=JSON.parse(e);return o.messages===void 0?null:JSON.stringify(o.messages)}catch{return null}}function Ou(e,o){const a=T(()=>{const I=e.value,S=o.value;return!I||!S?null:Qe(`/api/threads/${I}/logs/${S}`)}),{data:l,error:s,isFetching:i,execute:h}=Ot(a,{immediate:!1}).get().json();return be([e,o],([I,S])=>{I&&S&&h()},{immediate:!0}),{logDetails:T(()=>{const I=l.value;return I?I.message_history!=null?I:{...I,message_history:Bu(I.request_body)}:null}),error:s,isFetching:i,refetch:h}}function Vu(e){const o=new Set,a=new Map;for(const l of e){const s=l.cached_tokens;if(s==null||!l.prompt_name)continue;const i=`${l.prompt_name}::${l.model_name??l.model}`,h=a.get(i);h!==void 0&&s<h&&o.add(l.id),a.set(i,s)}return o}const qu={class:"min-h-0 flex-1 overflow-hidden"},Uu=["aria-valuenow","title"],Hu={class:"relative m-2 h-[calc(100%-1rem)] overflow-hidden rounded-lg border border-neutral-300 bg-white dark:border-neutral-700 dark:bg-neutral-900"},Wu=et({__name:"InspectorResizablePane",props:{heightPercent:{},storageKey:{},minMainHeight:{default:180},minDetailHeight:{default:260},title:{default:"Resize details"}},emits:["update:heightPercent"],setup(e,{emit:o}){const a=e,l=o,s=g(null),i=g(!1),h=(C,V,H)=>Math.min(H,Math.max(V,C)),u=C=>h(C,20,80),I=()=>{if(!a.storageKey||typeof window>"u")return;const C=window.localStorage.getItem(a.storageKey),V=C?Number.parseFloat(C):Number.NaN;Number.isFinite(V)&&l("update:heightPercent",u(V))},S=()=>{!a.storageKey||typeof window>"u"||window.localStorage.setItem(a.storageKey,a.heightPercent.toFixed(2))},$=C=>{if(!s.value)return;const V=s.value.getBoundingClientRect();if(V.height<=0)return;const H=V.bottom-C.clientY,J=a.minDetailHeight/V.height*100,le=100-a.minMainHeight/V.height*100;l("update:heightPercent",h(H/V.height*100,Math.min(J,le),Math.max(J,le)))},m=()=>{i.value&&(i.value=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("pointermove",$),window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",m),S())},y=C=>{C.preventDefault(),C.currentTarget instanceof HTMLElement&&C.currentTarget.setPointerCapture(C.pointerId),i.value=!0,document.body.style.cursor="row-resize",document.body.style.userSelect="none",$(C),window.addEventListener("pointermove",$),window.addEventListener("pointerup",m),window.addEventListener("pointercancel",m)},L=C=>{const V=C.shiftKey?10:4;C.key==="ArrowUp"?(C.preventDefault(),l("update:heightPercent",u(a.heightPercent+V)),S()):C.key==="ArrowDown"&&(C.preventDefault(),l("update:heightPercent",u(a.heightPercent-V)),S())};return It(I),wt(m),(C,V)=>(t(),r("div",{ref_key:"root",ref:s,class:"flex h-full min-h-0 flex-col overflow-hidden"},[n("div",qu,[Ft(C.$slots,"main",{},void 0,!0)]),B(hn,{name:"inspector-slide-up"},{default:Pe(()=>[C.$slots.detail?(t(),r("div",{key:0,class:"relative shrink-0 overflow-hidden border-t border-neutral-300 bg-neutral-100 dark:border-neutral-700 dark:bg-neutral-950",style:gt({height:`${e.heightPercent}%`})},[n("div",{class:G(["absolute inset-x-0 top-0 z-20 h-2 -translate-y-1 cursor-row-resize transition-colors hover:bg-neutral-200/70 dark:hover:bg-neutral-800/70",i.value?"bg-neutral-200/70 dark:bg-neutral-800/70":""]),role:"separator","aria-orientation":"horizontal","aria-valuenow":Math.round(e.heightPercent),"aria-valuemin":"20","aria-valuemax":"80",tabindex:"0",title:e.title,onPointerdown:y,onKeydown:L},null,42,Uu),n("div",Hu,[Ft(C.$slots,"detail",{},void 0,!0)])],4)):b("",!0)]),_:3})],512))}}),Pn=vt(Wu,[["__scopeId","data-v-45799e53"]]),sn=new WeakMap,Ku=e=>1-Math.pow(1-e,3),Ju=()=>typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,Wn=(e,o,a)=>Math.min(Math.max(e,o),a),Mn=(e,o)=>{const a=o.duration??80,l=Math.max(0,e.scrollHeight-e.clientHeight),s=Math.max(0,e.scrollWidth-e.clientWidth),i=o.top===void 0?e.scrollTop:Wn(o.top,0,l),h=o.left===void 0?e.scrollLeft:Wn(o.left,0,s),u=sn.get(e);if(u!==void 0&&(window.cancelAnimationFrame(u),sn.delete(e)),a<=0||Ju()){e.scrollTo({top:i,left:h,behavior:"auto"});return}const I=e.scrollTop,S=e.scrollLeft,$=i-I,m=h-S;if(Math.abs($)<1&&Math.abs(m)<1){e.scrollTo({top:i,left:h,behavior:"auto"});return}const y=window.performance.now(),L=C=>{const V=Wn((C-y)/a,0,1),H=Ku(V);e.scrollTo({top:I+$*H,left:S+m*H,behavior:"auto"}),V<1?sn.set(e,window.requestAnimationFrame(L)):sn.delete(e)};sn.set(e,window.requestAnimationFrame(L))},Gu={class:"text-xs font-semibold"},Yu={key:0,class:"font-normal text-neutral-500 dark:text-neutral-400"},Qu={class:"flex items-center gap-2"},Xu={class:"text-neutral-500 text-xs"},Zu=et({__name:"CollapsibleSection",props:{title:{},subtitle:{},sectionId:{},expanded:{type:Boolean},scrollContainer:{},copyContent:{},stickyOffset:{}},emits:["toggle"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g(null),h=g(!1);let u=null,I=null;const S=()=>{u?.disconnect(),I?.disconnect(),u=null,I=null},$=()=>{Xe(()=>{if(!l.expanded||!i.value||!l.scrollContainer){h.value=!1;return}const C=l.scrollContainer.clientHeight;h.value=i.value.scrollHeight>C*2})},m=()=>{S(),!(typeof ResizeObserver>"u")&&(i.value&&(u=new ResizeObserver($),u.observe(i.value)),l.scrollContainer&&(I=new ResizeObserver($),I.observe(l.scrollContainer)))};be(()=>[l.expanded,l.scrollContainer],async([C])=>{await Xe(),m(),C?$():h.value=!1},{immediate:!0,flush:"post"}),It(async()=>{await Xe(),m(),$()}),wt(S);const y=()=>{if(i.value&&l.scrollContainer){const V=i.value.offsetTop-(l.stickyOffset??88);Mn(l.scrollContainer,{top:V})}},L=()=>{if(i.value&&l.scrollContainer){const C=i.value.offsetTop+i.value.offsetHeight,V=l.scrollContainer.clientHeight,H=C-V;Mn(l.scrollContainer,{top:H})}};return o({checkHeight:$,contentRef:i}),(C,V)=>(t(),r("div",null,[n("div",{class:"collapsible-sticky-header sticky z-[5] flex h-9 w-full cursor-pointer items-center justify-between rounded border border-neutral-300 bg-neutral-50 px-3 transition-colors hover:bg-neutral-100 dark:border-neutral-700 dark:bg-neutral-950 dark:hover:bg-neutral-950",onClick:V[1]||(V[1]=H=>s("toggle"))},[n("span",Gu,[rt(p(e.title)+" ",1),e.subtitle?(t(),r("span",Yu,"("+p(e.subtitle)+")",1)):b("",!0)]),n("div",Qu,[h.value&&e.expanded?(t(),r(Ee,{key:0},[n("button",{onClick:Ge(y,["stop"]),class:"text-[10px] text-neutral-500 hover:text-neutral-700 dark:hover:text-neutral-300"},"↑ Top"),n("button",{onClick:Ge(L,["stop"]),class:"text-[10px] text-neutral-500 hover:text-neutral-700 dark:hover:text-neutral-300"},"↓ Bottom")],64)):b("",!0),Ft(C.$slots,"actions",{},void 0,!0),e.copyContent?(t(),r("span",{key:1,class:"inline-flex",onClick:V[0]||(V[0]=Ge(()=>{},["stop"]))},[B(da,{content:e.copyContent,variant:"ghost",size:"xs"},null,8,["content"])])):b("",!0),n("span",Xu,p(e.expanded?"▼":"▶"),1)])]),ut(n("div",{ref_key:"contentRef",ref:i,class:"border-x border-b border-neutral-300 dark:border-neutral-700 rounded-b"},[Ft(C.$slots,"default",{},void 0,!0)],512),[[_t,e.expanded]])]))}}),Lt=vt(Zu,[["__scopeId","data-v-634445ea"]]),ec=["width","height","aria-label"],tc=["stroke-dasharray"],Kn=2.5,nc=et({__name:"ContextWindowDonut",props:{pct:{},size:{default:20}},setup(e){const o=e,a=(20-Kn)/2,l=2*Math.PI*a,s=T(()=>Math.max(0,Math.min(100,o.pct))),i=T(()=>{const u=s.value/100*l;return`${s.value>0?Math.max(u,1.5):0} ${l}`}),h=T(()=>s.value>=90?"stroke-red-500 dark:stroke-red-400":s.value>=75?"stroke-amber-500 dark:stroke-amber-400":"stroke-blue-500 dark:stroke-blue-400");return(u,I)=>(t(),r("svg",{width:e.size,height:e.size,viewBox:"0 0 20 20",class:"shrink-0 -rotate-90",role:"img","aria-label":`${s.value}% of context window used`},[n("circle",{cx:"10",cy:"10",r:a,fill:"none","stroke-width":Kn,class:"stroke-neutral-200 dark:stroke-neutral-700"}),n("circle",{cx:"10",cy:"10",r:a,fill:"none","stroke-width":Kn,"stroke-linecap":"round","stroke-dasharray":i.value,class:G(h.value)},null,10,tc)],8,ec))}});function sa(e,o){if(!o)return e;const a=`${o}/`;return e.startsWith(a)?e.slice(a.length):e}function Aa(e,o){const a=o.model,l=o.model_name||o.model;if(!a&&!l)return null;const s=sa(l,o.provider);return e.find(i=>i.id===a)||e.find(i=>i.name===a)||e.find(i=>i.model===o.model)||e.find(i=>i.id===l)||e.find(i=>i.name===l)||e.find(i=>i.model===s)||null}function ac(e,o){if(!e||e<=0)return null;const a=o?.capabilities?.maxContextTokens;return!a||a<=0?null:{pct:Math.min(100,Math.round(e/a*100)),inputTokens:e,maxContextTokens:a}}const rc=new Set(["pending","processing","completed","failed","agent_canceled","user_canceled"]);function qt(e,o){return typeof e=="number"&&Number.isFinite(e)?e:o}function Ea(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function sc(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function oc(e){return typeof e=="string"&&rc.has(e)?e:"pending"}function lc(e){const o=e&&typeof e=="object"?e:{},l=(Array.isArray(o.effects)?o.effects:[]).filter(s=>!!s&&typeof s=="object").filter(s=>typeof s.id=="string"&&typeof s.name=="string").map(s=>({id:s.id,name:s.name,args:sc(s.args),scheduledAt:qt(s.scheduledAt,0),createdAt:qt(s.createdAt,0),status:oc(s.status),attempts:qt(s.attempts,0),error:typeof s.error=="string"?s.error:null,completedAt:Ea(s.completedAt),manualRun:s.manualRun===!0,manualRunAt:Ea(s.manualRunAt),replayedFrom:typeof s.replayedFrom=="string"?s.replayedFrom:null}));return{effects:l,total:qt(o.total,l.length),upcomingCount:qt(o.upcomingCount,l.filter(s=>s.status==="pending").length),limit:qt(o.limit,l.length),offset:qt(o.offset,0)}}function Dn(e){return!Number.isFinite(e)||e<=0?0:e>9999999999?Math.floor(e/1e3):e}function Rt(e){if(!e)return"Unknown";const o=Dn(e);return o?new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(o)):"Unknown"}function ic(e){const o=Math.abs(Math.trunc(e)),a=Math.max(1,Math.round(o/1e3));if(a<60)return`${a}s`;const l=Math.floor(a/60),s=a%60;if(l<60)return s>0?`${l}m ${s}s`:`${l}m`;const i=Math.floor(l/60),h=l%60;if(i<24)return h>0?`${i}h ${h}m`:`${i}h`;const u=Math.floor(i/24),I=i%24;return I>0?`${u}d ${I}h`:`${u}d`}function dc(e){if(!e.completedAt)return"";const o=Dn(e.scheduledAt),a=Dn(e.completedAt);if(!o||!a)return"";const l=a-o;if(l===0||Math.abs(l)<5e3)return"";const s=l>0?"+":"-",i=l>0?"late":"early";return`${s}${ic(l)} ${i}`}function uc(e,o=Date.now()){const a=Dn(e);if(!a)return"";const l=a-o;return l<=0?"Due now":l<6e4?`in ${Math.ceil(l/1e3)}s`:l<60*6e4?`in ${Math.ceil(l/6e4)}m`:l<1440*6e4?`in ${Math.ceil(l/(60*6e4))}h`:`in ${Math.ceil(l/(1440*6e4))}d`}function La(e){const o=JSON.stringify(e,null,2);return o===void 0?"{}":o}function cc(e){const o=Object.keys(e);if(o.length===0)return"No arguments";const a=JSON.stringify(e);return a?a.length>96?`${a.slice(0,93)}...`:a:`${o.length} ${o.length===1?"argument":"arguments"}`}function Qt(e){return e.status==="pending"||e.status==="processing"}function $n(e,o){return e<o?-1:e>o?1:0}function Nt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function fc(e,o){const a=Qt(e),l=Qt(o);return a!==l?a?-1:1:a&&l?$n(Nt(e.scheduledAt),Nt(o.scheduledAt))||$n(Nt(e.createdAt),Nt(o.createdAt))||e.id.localeCompare(o.id):$n(Nt(o.createdAt),Nt(e.createdAt))||$n(Nt(o.scheduledAt),Nt(e.scheduledAt))||e.id.localeCompare(o.id)}function pc(e){return[...e].sort(fc)}function Ra(e,o){return e.id===o.id}function Jn(e){return`'${e.replace(/'/g,"'\\''")}'`}function vc(e,o){return e.split(/\r?\n/).some(a=>a===o)}function hc(e){const o="AGENTBUILDER_JSON";let a=o,l=2;for(;vc(e,a);)a=`${o}_${l}`,l+=1;return a}function mc(e,o){const a=e.sdk?.toLowerCase(),l=hc(o),s={"Content-Type":"application/json",...e.headers??{}};a==="openrouter"?(s.Authorization=`Bearer ${e.api_key??""}`,s["HTTP-Referer"]="https://agentbuilder.local",s["X-Title"]="AgentBuilder"):a==="cloudflare"||a==="openai"||a==="cerebras"||a==="groq"||a==="xai"?s.Authorization=`Bearer ${e.api_key??""}`:a==="google"?s["x-goog-api-key"]=e.api_key??"":a==="anthropic"&&(s["x-api-key"]=e.api_key??"",s["anthropic-version"]=s["anthropic-version"]??"2023-06-01");const i=[`curl -i -sS -X POST ${Jn(e.endpoint)} \\`];for(const[u,I]of Object.entries(s))i.push(` -H ${Jn(`${u}: ${I}`)} \\`);i.push(` --data-binary @- <<'${l}'`);const h=`node -e ${Jn(["let s='';","process.stdin.on('data',c=>s+=c);","process.stdin.on('end',()=>{"," const m=s.match(/\\r?\\n\\r?\\n/);"," if(!m){process.stdout.write(s);return;}"," const head=s.slice(0,m.index);"," const body=s.slice(m.index+m[0].length).trim();"," process.stdout.write(head+'\\n\\n');"," try{process.stdout.write(JSON.stringify(JSON.parse(body),null,2)+'\\n');}"," catch{process.stdout.write(body+'\\n');}","});"].join(""))}`;return[`${i.join(`
11
11
  `)} | ${h}`,o,l].join(`
12
12
  `)}const gc="provider:";function xc(e){return e?.toLowerCase()==="openrouter"}function bc(e){if(e.actual_provider&&xc(e.provider))return{provider:"openrouter",model:`${gc}${e.actual_provider}`};const o=e.actual_provider||e.provider;return o?{provider:o}:null}function yc(e){const o=e.provider||e.actual_provider;if(!o)return null;const a=e.model_name||e.model||void 0;return a?{provider:o,model:a}:{provider:o}}function lt(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function Jt(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function Ma(e){if(!e)return"N/A";const o=Jt(e);return o===null?e:JSON.stringify(o,null,2)}function Zt(e){const o=Jt(e);return Array.isArray(o)?o:[]}function kc(e){const o=lt(Jt(e)),a=Array.isArray(o.choices)?o.choices:[],l=lt(a[0]),s=lt(l.message);return Array.isArray(s.tool_calls)?s.tool_calls:[]}function _c(e){const o=lt(Jt(e)),a=Array.isArray(o.choices)?o.choices:[],l=lt(a[0]),s=lt(l.message);return Array.isArray(s.reasoning_details)?s.reasoning_details:[]}function wc(e){const o=lt(Jt(e)),a=Array.isArray(o.choices)?o.choices:[],l=lt(a[0]),s=lt(l.message);return typeof s.content=="string"?s.content:""}function $c(e){const o=lt(Jt(e)),a=Array.isArray(o.choices)?o.choices:[],l=lt(a[0]),s=lt(l.message);return Array.isArray(s.images)?s.images:[]}function Cc(e){const o=new Map,a=Zt(e);for(const l of a){const s=lt(l),i=s.tool_call_id;typeof i=="string"&&o.set(i,{content:s.content,status:typeof s.status=="string"?s.status:void 0,tool_name:typeof s.tool_name=="string"?s.tool_name:void 0,timestamp:typeof s.timestamp=="number"?s.timestamp:void 0})}return o}function Da(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Sc(e){const o=[],a=new Set,l=Zt(e);for(const s of l){const i=lt(s),h=typeof i.id=="string"?i.id:null;if(!h||a.has(h))continue;const u=typeof i.name=="string"?i.name:null,I=Da(i.scheduledAt),S=Da(i.createdAt),$=typeof i.status=="string"?i.status:null;a.add(h),o.push({id:h,name:u,scheduledAt:I,createdAt:S,status:$,reference:{id:h,name:u}})}return o}function Tc(e){const o=lt(e);return typeof o.id=="string"&&(typeof o.type=="string"||typeof o.name=="string")&&typeof o.status=="string"}function Ic(e){return Zt(e).filter(Tc).map(o=>{const a=lt(o),l=o.name??o.type;return{...a,name:l,type:o.type??l,raw:a}})}function Ac(e){const o=[];for(const a of e.toolCalls){const l=lt(a),s=lt(l.function);o.push({id:typeof l.id=="string"?l.id:`tool-${o.length}`,name:typeof s.name=="string"?s.name:"Unknown",isProvider:!1,isQueued:!1,function:{name:typeof s.name=="string"?s.name:"Unknown",arguments:typeof s.arguments=="string"?s.arguments:void 0}})}for(const a of e.queuedTools){const l=lt(a),s=lt(l.function);o.push({id:typeof l.id=="string"?l.id:`queued-${o.length}`,name:typeof s.name=="string"?s.name:"Unknown",isProvider:!1,isQueued:!0,function:{name:typeof s.name=="string"?s.name:"Unknown",arguments:typeof s.arguments=="string"?s.arguments:void 0},queuedAt:typeof l.queued_at=="number"?l.queued_at:void 0})}for(const a of e.providerToolCalls){const l=a.name??a.type;o.push({id:a.id,name:l,isProvider:!0,isQueued:!1,providerType:l,status:a.status,rawProviderTool:a.raw,result:a.result,metadata:a.metadata})}return o}function Ec(e){if(e.rawProviderTool)return JSON.stringify(e.rawProviderTool,null,2);const o={id:e.id,name:e.name,type:e.providerType??e.name,status:e.status??"completed"};return e.result!==void 0&&(o.result=e.result),e.metadata!==void 0&&(o.metadata=e.metadata),JSON.stringify(o,null,2)}function Lc(e){return e?e.replace(/\\n/g,`
13
13
  `).replace(/\\t/g," ").replace(/\n{3,}/g,`
14
14
 
15
- `).trim():""}function Rc(e){const o=lt(Jt(e)),a=lt(o._metadata),l=lt(a.visionFiltering);if(l.enabled!==!0)return null;const s=Number(l.removedUserImageParts||0),i=Number(l.removedToolImageAttachments||0),h=s+i;return h>0?{removedUserImageParts:s,removedToolImageAttachments:i,totalRemoved:h}:null}function Mc(e){return{baseten:"Baseten",cloudflare:"Cloudflare",cerebras:"Cerebras",google:"Google",groq:"Groq",openai:"OpenAI",openrouter:"OpenRouter",xai:"xAI"}[e]||e.charAt(0).toUpperCase()+e.slice(1)}const pr=["baseten","cloudflare","cerebras","google","groq","openai","openrouter","xai"];function vr(e){return typeof e=="string"&&pr.includes(e)}function Dc(e){const o=e?.toLowerCase();return vr(o)?o:"standard"}const Fc={class:"flex flex-col gap-2 px-3 pt-3 pb-2 sm:flex-row sm:items-start sm:justify-between"},Pc={class:"flex min-w-0 flex-1 flex-wrap items-center gap-x-2 gap-y-1.5"},Nc={class:"flex shrink-0 items-center"},zc=["disabled"],jc=["disabled"],Bc={class:"min-w-32 flex-1 basis-36 truncate text-base font-semibold text-neutral-900 dark:text-neutral-100"},Oc={class:"hidden items-center gap-1 lg:flex"},Vc={key:0,class:"inline-flex items-center gap-1 rounded bg-neutral-100 py-0.5 pl-1 pr-1.5 font-mono text-[10px] uppercase tracking-wide text-neutral-600 dark:bg-neutral-800 dark:text-neutral-400"},qc=["src","alt"],Uc={key:1,class:"inline-flex items-center gap-1 rounded bg-neutral-100 py-0.5 pl-1 pr-1.5 font-mono text-[10px] text-neutral-600 dark:bg-neutral-800 dark:text-neutral-400"},Hc=["src","alt"],Wc={class:"flex shrink-0 items-center justify-end gap-2 self-end sm:self-start"},Kc=["disabled","title"],Jc={key:1},Gc={class:"flex flex-col gap-1.5 px-3 pb-2 sm:flex-row sm:items-center sm:justify-between"},Yc={class:"flex min-w-0 flex-wrap items-center gap-0.5"},Qc={class:"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 font-mono text-[11px] text-neutral-500 tabular-nums sm:justify-end dark:text-neutral-400"},Xc={class:"truncate"},Zc={class:"text-red-600 dark:text-red-400"},e0={class:"mb-3 grid grid-cols-2 gap-px overflow-hidden rounded-lg border border-neutral-200 bg-neutral-200 sm:grid-cols-4 dark:border-neutral-800 dark:bg-neutral-800"},t0={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},n0={class:"flex min-h-5 items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},a0={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},r0={key:1},s0={key:0,class:"text-[10px] font-normal text-neutral-400"},o0={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},l0={key:1,class:"font-mono text-[10px] tabular-nums text-neutral-400 dark:text-neutral-500"},i0={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},d0={class:"flex min-h-5 items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},u0={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},c0={key:1},f0={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},p0={key:1,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},v0={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},h0={class:"flex min-h-5 items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},m0={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},g0={key:1},x0={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},b0={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},y0={class:"flex min-h-5 items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},k0={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},_0={key:0},w0={key:1},$0={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},C0={key:0,class:"mb-3 border border-neutral-200 bg-white px-3 py-2 text-xs dark:border-neutral-800 dark:bg-neutral-900"},S0={class:"flex flex-wrap items-center gap-x-2 gap-y-1"},T0={key:0,class:"font-mono text-neutral-700 dark:text-neutral-200"},I0={key:1,class:"truncate font-mono text-[11px] text-neutral-400"},A0={key:1,class:"mb-3 border border-neutral-200 bg-white px-3 py-2 text-xs dark:border-neutral-800 dark:bg-neutral-900"},E0={class:"mb-2 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},L0={class:"space-y-1.5"},R0=["onClick"],M0={class:"flex min-w-0 items-baseline gap-2"},D0={class:"min-w-0 truncate font-mono text-xs font-medium text-neutral-800 dark:text-neutral-100"},F0={class:"truncate font-mono text-[11px] text-neutral-400"},P0={class:"mt-1 flex min-w-0 flex-wrap gap-x-3 gap-y-1 text-[11px] text-neutral-500 dark:text-neutral-400"},N0={key:0},z0={key:1,class:"min-w-0 truncate"},j0={key:2,class:"min-w-0 truncate"},B0={key:2,class:"mb-3 overflow-hidden rounded-lg border border-red-300 bg-red-50 dark:border-red-800 dark:bg-red-950/30"},O0={class:"flex items-start justify-between gap-3 border-b border-red-200 px-3 py-2 dark:border-red-900"},V0={class:"min-w-0"},q0={class:"text-[10px] font-semibold uppercase tracking-wide text-red-700 dark:text-red-300"},U0={class:"truncate text-sm font-semibold text-red-900 dark:text-red-100"},H0={key:0,class:"whitespace-pre-wrap break-words bg-white px-3 py-2 text-sm leading-relaxed text-red-900 dark:bg-black/30 dark:text-red-100"},W0={key:1,class:"border-t border-red-200 bg-white px-3 py-2 dark:border-red-900 dark:bg-black/30"},K0=["href"],J0={key:2,class:"border-t border-red-200 dark:border-red-900"},G0={class:"bg-white dark:bg-black/30"},Y0={key:1,class:"m-0 max-h-[400px] overflow-auto whitespace-pre-wrap break-words px-3 py-2 font-mono text-[11px] leading-relaxed text-red-900 dark:text-red-100"},Q0={key:3,class:"border-t border-red-200 dark:border-red-900"},X0={class:"cursor-pointer px-3 py-2 text-xs font-medium text-red-800 hover:bg-red-100/70 dark:text-red-200 dark:hover:bg-red-900/30"},Z0={key:0,class:"whitespace-pre-wrap break-words bg-white px-3 py-2 text-sm leading-relaxed text-red-900 dark:bg-black/30 dark:text-red-100"},ef={key:1,class:"border-t border-red-200 dark:border-red-900"},tf={class:"bg-white dark:bg-black/30"},nf={key:1,class:"m-0 max-h-[400px] overflow-auto whitespace-pre-wrap break-words px-3 py-2 font-mono text-[11px] leading-relaxed text-red-900 dark:text-red-100"},af={class:"log-details-tabs sticky top-[var(--logdetails-tabs-top)] z-10 -mx-3 mb-3 flex h-10 items-center gap-1 border-b border-neutral-200 bg-white/95 px-3 backdrop-blur dark:border-neutral-800 dark:bg-neutral-900/95"},rf={class:"space-y-2"},sf={class:"mb-2 flex flex-wrap items-center gap-2"},of=["value"],lf={key:1,class:"text-xs text-red-600 dark:text-red-400"},df={key:0,class:"mb-2 rounded border border-amber-300 dark:border-amber-700 bg-amber-50 dark:bg-amber-950/30 p-2"},uf={class:"mt-1 text-xs text-amber-700 dark:text-amber-300"},cf=["onClick"],ff={class:"font-mono"},pf={class:"text-neutral-500"},vf={class:"px-2 py-2 bg-white dark:bg-neutral-950 border-t border-neutral-200 dark:border-neutral-800"},hf={key:0,class:"text-xs text-neutral-600 dark:text-neutral-400 mb-2"},mf={class:"bg-white dark:bg-neutral-900"},gf={class:"space-y-2"},xf={key:0,class:"overflow-hidden rounded-md border border-amber-200 bg-amber-50/40 dark:border-amber-900/40 dark:bg-amber-950/20"},bf={class:"m-0 max-h-[280px] overflow-auto whitespace-pre-wrap break-words px-3 py-2 font-mono text-xs leading-relaxed text-amber-900/90 dark:text-amber-200/80"},yf={key:1,class:"overflow-hidden rounded-md border border-neutral-200 dark:border-neutral-800"},kf={class:"flex items-center gap-1.5 border-b border-neutral-200 px-3 py-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:border-neutral-800 dark:text-neutral-400"},_f={key:0,class:"log-details-pulse text-emerald-500"},wf={class:"m-0 max-h-[480px] overflow-auto whitespace-pre-wrap break-words bg-white px-3 py-2 font-mono text-xs leading-relaxed text-neutral-800 dark:bg-neutral-950 dark:text-neutral-200"},$f={class:"divide-y divide-neutral-200 bg-white dark:divide-neutral-800 dark:bg-neutral-950"},Cf=["onClick"],Sf={class:"flex min-w-0 items-center gap-2"},Tf={class:"truncate font-mono text-xs font-semibold text-neutral-900 dark:text-neutral-100"},If={class:"font-mono text-[10px] text-neutral-400 dark:text-neutral-500"},Af={class:"flex shrink-0 items-center gap-2"},Ef={key:0,class:"rounded bg-emerald-100 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300",title:"Programmatically called with state.queueTool()"},Lf={class:"text-[10px] text-neutral-400 dark:text-neutral-500"},Rf={class:"@container border-t border-neutral-200 bg-neutral-50/40 dark:border-neutral-800 dark:bg-neutral-950/40"},Mf={key:0,class:"grid grid-cols-1 @[640px]:grid-cols-2 @[640px]:divide-x divide-neutral-200 dark:divide-neutral-800"},Df={class:"px-3 py-2"},Ff={class:"mb-1 flex items-center gap-2 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},Pf={key:0,class:"font-mono normal-case tracking-normal text-emerald-600 dark:text-emerald-400"},Nf={class:"border-t border-neutral-200 px-3 py-2 @[640px]:border-t-0 dark:border-neutral-800"},zf={key:0,class:"m-0 max-h-[400px] overflow-auto whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed text-neutral-800 dark:text-neutral-200"},jf={key:1,class:"font-mono text-[11px] italic text-neutral-400 dark:text-neutral-500"},Bf={key:1,class:"px-3 py-2"},Of={class:"flex flex-wrap gap-2 bg-white px-3 py-2 dark:bg-neutral-950"},Vf=["src","alt"],qf={key:1,class:"flex h-[100px] w-[100px] items-center justify-center rounded-md bg-neutral-100 text-xs text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400"},Uf={class:"m-0 max-h-[480px] overflow-auto whitespace-pre-wrap break-words bg-white px-3 py-2 font-mono text-xs leading-relaxed text-neutral-800 dark:bg-neutral-950 dark:text-neutral-200"},Hf={class:"divide-y divide-neutral-200 bg-white dark:divide-neutral-800 dark:bg-neutral-950"},Wf={class:"mb-1.5 flex flex-wrap items-center gap-1.5 text-[10px]"},Kf={class:"rounded bg-purple-100 px-1.5 py-0.5 font-mono font-medium uppercase tracking-wide text-purple-700 dark:bg-purple-900/40 dark:text-purple-300"},Jf={key:0,class:"font-mono text-neutral-500 dark:text-neutral-400"},Gf={key:1,class:"text-neutral-500 dark:text-neutral-400"},Yf={key:2,class:"text-neutral-500 dark:text-neutral-400"},Qf={key:0,class:"whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-neutral-800 dark:text-neutral-200"},Xf={class:"whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-neutral-800 dark:text-neutral-200"},Zf={key:0,class:"mt-2 border-t border-neutral-200 pt-2 dark:border-neutral-800"},ep={class:"break-all font-mono text-[11px] text-neutral-700 dark:text-neutral-300"},tp={key:2,class:"break-all font-mono text-[11px] text-neutral-700 dark:text-neutral-300"},np={key:3,class:"m-0 overflow-x-auto whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed text-neutral-700 dark:text-neutral-300"},Gt="inline-flex h-6 w-6 items-center justify-center rounded text-neutral-400 transition-colors hover:bg-neutral-100 hover:text-neutral-900 dark:text-neutral-500 dark:hover:bg-neutral-800 dark:hover:text-neutral-100",ap=12,rp=40,sp=36,op=8,Fa="__agentbuilder_system_prompt_view__",lp=et({__name:"LogDetails",props:{log:{},threadId:{},hasPrevious:{type:Boolean},hasNext:{type:Boolean}},emits:["close","previous","next","effectClick"],setup(e,{emit:o}){const a=e,l=o,s=g("response"),i=g(new Set),h=g(new Set),{copying:u,copied:I,error:S,copy:$}=bs(),{activeSurface:m,openEditSurface:y}=us(),E=g(null),C=g(null),V=g(null),H=g(null),J=g(null),oe=g(null),X=g(null),ne=g(null),ue=g(60),K=g(100);let P=null;const R=()=>{const A=V.value?.offsetHeight;if(!A)return;const k=Math.max(0,Math.round(A-ap));ue.value=k,K.value=k+rp},W=()=>{P?.disconnect(),P=null,!(!V.value||typeof ResizeObserver>"u")&&(P=new ResizeObserver(R),P.observe(V.value))};It(async()=>{await Xe(),R(),W()}),wt(()=>{P?.disconnect(),P=null});const q=g(new Set(["system_prompt","request_body","tools","reasoning_content","reasoning_details"])),we=(A,k)=>A instanceof Error?A.message:k,Pe=A=>a.threadId?A.startsWith("data:")||A.startsWith("http")?A:Qe(`/api/threads/${a.threadId}/fs${A}`):null,te=T(()=>Zt(a.log.tools_schema)),qe=T(()=>kc(a.log.response_body)),z=T(()=>Cc(a.log.tool_results)),he=T(()=>_c(a.log.response_body)),ke=T(()=>Lc(a.log.reasoning_content)),Ee=T(()=>$c(a.log.response_body)),_e=T(()=>!a.log.is_complete),me=T(()=>a.log.is_complete?wc(a.log.response_body)||a.log.content||"":a.log.content??""),Se=T(()=>Ic(a.log.provider_tools)),Ie=T(()=>Zt(a.log.queued_tools)),re=T(()=>Ac({toolCalls:qe.value,queuedTools:Ie.value,providerToolCalls:Se.value})),Z=A=>{i.value.has(A)?i.value.delete(A):i.value.add(A)},Q=A=>{h.value.has(A)?h.value.delete(A):h.value.add(A)},ce=A=>{q.value.has(A)?q.value.delete(A):q.value.add(A)},fe=A=>!q.value.has(A),De=T(()=>Zt(a.log.errors)),Ye=T(()=>{const A=De.value.map(k=>{if(typeof k=="string")return{type:a.log.error_type||"error",message:k};if(!k||typeof k!="object")return{type:a.log.error_type||"error",message:String(k??"")};const L=k;return{type:typeof L.type=="string"?L.type:a.log.error_type||"error",message:typeof L.message=="string"?L.message:JSON.stringify(L)}}).filter(k=>k.message);return A.length>0?A:a.log.error?[{type:a.log.error_type||"error",message:a.log.error}]:[]}),F=A=>/\\[nrt"\\]/.test(A),$e=A=>{const k="__AGENTBUILDER_ESCAPED_BACKSLASH__";return A.replace(/\\\\/g,k).replace(/\\n/g,`
16
- `).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(new RegExp(k,"g"),"\\")},ye=A=>{const k=A.trim();if(!k.startsWith("{")&&!k.startsWith("["))return null;const L=k[0],ze=L==="{"?"}":"]";let st=0,kt=!1,Ct=!1;for(let mt=0;mt<k.length;mt++){const Pt=k[mt];if(Ct){Ct=!1;continue}if(kt){Pt==="\\"?Ct=!0:Pt==='"'&&(kt=!1);continue}if(Pt==='"'){kt=!0;continue}if(Pt===L)st++;else if(Pt===ze&&(st--,st===0)){const Vt=k.slice(0,mt+1);try{return{value:JSON.parse(Vt),rest:k.slice(mt+1)}}catch{return null}}}return null},Le=A=>{const k=A.indexOf(`
15
+ `).trim():""}function Rc(e){const o=lt(Jt(e)),a=lt(o._metadata),l=lt(a.visionFiltering);if(l.enabled!==!0)return null;const s=Number(l.removedUserImageParts||0),i=Number(l.removedToolImageAttachments||0),h=s+i;return h>0?{removedUserImageParts:s,removedToolImageAttachments:i,totalRemoved:h}:null}function Mc(e){return{baseten:"Baseten",cloudflare:"Cloudflare",cerebras:"Cerebras",google:"Google",groq:"Groq",openai:"OpenAI",openrouter:"OpenRouter",xai:"xAI"}[e]||e.charAt(0).toUpperCase()+e.slice(1)}const pr=["baseten","cloudflare","cerebras","google","groq","openai","openrouter","xai"];function vr(e){return typeof e=="string"&&pr.includes(e)}function Dc(e){const o=e?.toLowerCase();return vr(o)?o:"standard"}const Fc={class:"flex flex-col gap-2 px-3 pt-3 pb-2 sm:flex-row sm:items-start sm:justify-between"},Pc={class:"flex min-w-0 flex-1 flex-wrap items-center gap-x-2 gap-y-1.5"},Nc={class:"flex shrink-0 items-center"},zc=["disabled"],jc=["disabled"],Bc={class:"min-w-32 flex-1 basis-36 truncate text-base font-semibold text-neutral-900 dark:text-neutral-100"},Oc={class:"hidden items-center gap-1 lg:flex"},Vc={key:0,class:"inline-flex items-center gap-1 rounded bg-neutral-100 py-0.5 pl-1 pr-1.5 font-mono text-[10px] uppercase tracking-wide text-neutral-600 dark:bg-neutral-800 dark:text-neutral-400"},qc=["src","alt"],Uc={key:1,class:"inline-flex items-center gap-1 rounded bg-neutral-100 py-0.5 pl-1 pr-1.5 font-mono text-[10px] text-neutral-600 dark:bg-neutral-800 dark:text-neutral-400"},Hc=["src","alt"],Wc={class:"flex shrink-0 items-center justify-end gap-2 self-end sm:self-start"},Kc=["disabled","title"],Jc={key:1},Gc={class:"flex flex-col gap-1.5 px-3 pb-2 sm:flex-row sm:items-center sm:justify-between"},Yc={class:"flex min-w-0 flex-wrap items-center gap-0.5"},Qc={class:"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 font-mono text-[11px] text-neutral-500 tabular-nums sm:justify-end dark:text-neutral-400"},Xc={class:"truncate"},Zc={class:"text-red-600 dark:text-red-400"},e0={class:"mb-3 grid grid-cols-2 gap-px overflow-hidden rounded-lg border border-neutral-200 bg-neutral-200 sm:grid-cols-4 dark:border-neutral-800 dark:bg-neutral-800"},t0={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},n0={class:"flex min-h-5 items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},a0={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},r0={key:1},s0={key:0,class:"text-[10px] font-normal text-neutral-400"},o0={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},l0={key:1,class:"font-mono text-[10px] tabular-nums text-neutral-400 dark:text-neutral-500"},i0={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},d0={class:"flex min-h-5 items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},u0={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},c0={key:1},f0={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},p0={key:1,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},v0={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},h0={class:"flex min-h-5 items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},m0={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},g0={key:1},x0={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},b0={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},y0={class:"flex min-h-5 items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},k0={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},_0={key:0},w0={key:1},$0={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},C0={key:0,class:"mb-3 border border-neutral-200 bg-white px-3 py-2 text-xs dark:border-neutral-800 dark:bg-neutral-900"},S0={class:"flex flex-wrap items-center gap-x-2 gap-y-1"},T0={key:0,class:"font-mono text-neutral-700 dark:text-neutral-200"},I0={key:1,class:"truncate font-mono text-[11px] text-neutral-400"},A0={key:1,class:"mb-3 border border-neutral-200 bg-white px-3 py-2 text-xs dark:border-neutral-800 dark:bg-neutral-900"},E0={class:"mb-2 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},L0={class:"space-y-1.5"},R0=["onClick"],M0={class:"flex min-w-0 items-baseline gap-2"},D0={class:"min-w-0 truncate font-mono text-xs font-medium text-neutral-800 dark:text-neutral-100"},F0={class:"truncate font-mono text-[11px] text-neutral-400"},P0={class:"mt-1 flex min-w-0 flex-wrap gap-x-3 gap-y-1 text-[11px] text-neutral-500 dark:text-neutral-400"},N0={key:0},z0={key:1,class:"min-w-0 truncate"},j0={key:2,class:"min-w-0 truncate"},B0={key:2,class:"mb-3 overflow-hidden rounded-lg border border-red-300 bg-red-50 dark:border-red-800 dark:bg-red-950/30"},O0={class:"flex items-start justify-between gap-3 border-b border-red-200 px-3 py-2 dark:border-red-900"},V0={class:"min-w-0"},q0={class:"text-[10px] font-semibold uppercase tracking-wide text-red-700 dark:text-red-300"},U0={class:"truncate text-sm font-semibold text-red-900 dark:text-red-100"},H0={key:0,class:"whitespace-pre-wrap break-words bg-white px-3 py-2 text-sm leading-relaxed text-red-900 dark:bg-black/30 dark:text-red-100"},W0={key:1,class:"border-t border-red-200 bg-white px-3 py-2 dark:border-red-900 dark:bg-black/30"},K0=["href"],J0={key:2,class:"border-t border-red-200 dark:border-red-900"},G0={class:"bg-white dark:bg-black/30"},Y0={key:1,class:"m-0 max-h-[400px] overflow-auto whitespace-pre-wrap break-words px-3 py-2 font-mono text-[11px] leading-relaxed text-red-900 dark:text-red-100"},Q0={key:3,class:"border-t border-red-200 dark:border-red-900"},X0={class:"cursor-pointer px-3 py-2 text-xs font-medium text-red-800 hover:bg-red-100/70 dark:text-red-200 dark:hover:bg-red-900/30"},Z0={key:0,class:"whitespace-pre-wrap break-words bg-white px-3 py-2 text-sm leading-relaxed text-red-900 dark:bg-black/30 dark:text-red-100"},ef={key:1,class:"border-t border-red-200 dark:border-red-900"},tf={class:"bg-white dark:bg-black/30"},nf={key:1,class:"m-0 max-h-[400px] overflow-auto whitespace-pre-wrap break-words px-3 py-2 font-mono text-[11px] leading-relaxed text-red-900 dark:text-red-100"},af={class:"log-details-tabs sticky top-[var(--logdetails-tabs-top)] z-10 -mx-3 mb-3 flex h-10 items-center gap-1 border-b border-neutral-200 bg-white/95 px-3 backdrop-blur dark:border-neutral-800 dark:bg-neutral-900/95"},rf={class:"space-y-2"},sf={class:"mb-2 flex flex-wrap items-center gap-2"},of=["value"],lf={key:1,class:"text-xs text-red-600 dark:text-red-400"},df={key:0,class:"mb-2 rounded border border-amber-300 dark:border-amber-700 bg-amber-50 dark:bg-amber-950/30 p-2"},uf={class:"mt-1 text-xs text-amber-700 dark:text-amber-300"},cf=["onClick"],ff={class:"font-mono"},pf={class:"text-neutral-500"},vf={class:"px-2 py-2 bg-white dark:bg-neutral-950 border-t border-neutral-200 dark:border-neutral-800"},hf={key:0,class:"text-xs text-neutral-600 dark:text-neutral-400 mb-2"},mf={class:"bg-white dark:bg-neutral-900"},gf={class:"space-y-2"},xf={key:0,class:"overflow-hidden rounded-md border border-amber-200 bg-amber-50/40 dark:border-amber-900/40 dark:bg-amber-950/20"},bf={class:"m-0 max-h-[280px] overflow-auto whitespace-pre-wrap break-words px-3 py-2 font-mono text-xs leading-relaxed text-amber-900/90 dark:text-amber-200/80"},yf={key:1,class:"overflow-hidden rounded-md border border-neutral-200 dark:border-neutral-800"},kf={class:"flex items-center gap-1.5 border-b border-neutral-200 px-3 py-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:border-neutral-800 dark:text-neutral-400"},_f={key:0,class:"log-details-pulse text-emerald-500"},wf={class:"m-0 max-h-[480px] overflow-auto whitespace-pre-wrap break-words bg-white px-3 py-2 font-mono text-xs leading-relaxed text-neutral-800 dark:bg-neutral-950 dark:text-neutral-200"},$f={class:"divide-y divide-neutral-200 bg-white dark:divide-neutral-800 dark:bg-neutral-950"},Cf=["onClick"],Sf={class:"flex min-w-0 items-center gap-2"},Tf={class:"truncate font-mono text-xs font-semibold text-neutral-900 dark:text-neutral-100"},If={class:"font-mono text-[10px] text-neutral-400 dark:text-neutral-500"},Af={class:"flex shrink-0 items-center gap-2"},Ef={key:0,class:"rounded bg-emerald-100 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300",title:"Programmatically called with state.queueTool()"},Lf={class:"text-[10px] text-neutral-400 dark:text-neutral-500"},Rf={class:"@container border-t border-neutral-200 bg-neutral-50/40 dark:border-neutral-800 dark:bg-neutral-950/40"},Mf={key:0,class:"grid grid-cols-1 @[640px]:grid-cols-2 @[640px]:divide-x divide-neutral-200 dark:divide-neutral-800"},Df={class:"px-3 py-2"},Ff={class:"mb-1 flex items-center gap-2 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},Pf={key:0,class:"font-mono normal-case tracking-normal text-emerald-600 dark:text-emerald-400"},Nf={class:"border-t border-neutral-200 px-3 py-2 @[640px]:border-t-0 dark:border-neutral-800"},zf={key:0,class:"m-0 max-h-[400px] overflow-auto whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed text-neutral-800 dark:text-neutral-200"},jf={key:1,class:"font-mono text-[11px] italic text-neutral-400 dark:text-neutral-500"},Bf={key:1,class:"px-3 py-2"},Of={class:"flex flex-wrap gap-2 bg-white px-3 py-2 dark:bg-neutral-950"},Vf=["src","alt"],qf={key:1,class:"flex h-[100px] w-[100px] items-center justify-center rounded-md bg-neutral-100 text-xs text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400"},Uf={class:"m-0 max-h-[480px] overflow-auto whitespace-pre-wrap break-words bg-white px-3 py-2 font-mono text-xs leading-relaxed text-neutral-800 dark:bg-neutral-950 dark:text-neutral-200"},Hf={class:"divide-y divide-neutral-200 bg-white dark:divide-neutral-800 dark:bg-neutral-950"},Wf={class:"mb-1.5 flex flex-wrap items-center gap-1.5 text-[10px]"},Kf={class:"rounded bg-purple-100 px-1.5 py-0.5 font-mono font-medium uppercase tracking-wide text-purple-700 dark:bg-purple-900/40 dark:text-purple-300"},Jf={key:0,class:"font-mono text-neutral-500 dark:text-neutral-400"},Gf={key:1,class:"text-neutral-500 dark:text-neutral-400"},Yf={key:2,class:"text-neutral-500 dark:text-neutral-400"},Qf={key:0,class:"whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-neutral-800 dark:text-neutral-200"},Xf={class:"whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-neutral-800 dark:text-neutral-200"},Zf={key:0,class:"mt-2 border-t border-neutral-200 pt-2 dark:border-neutral-800"},ep={class:"break-all font-mono text-[11px] text-neutral-700 dark:text-neutral-300"},tp={key:2,class:"break-all font-mono text-[11px] text-neutral-700 dark:text-neutral-300"},np={key:3,class:"m-0 overflow-x-auto whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed text-neutral-700 dark:text-neutral-300"},Gt="inline-flex h-6 w-6 items-center justify-center rounded text-neutral-400 transition-colors hover:bg-neutral-100 hover:text-neutral-900 dark:text-neutral-500 dark:hover:bg-neutral-800 dark:hover:text-neutral-100",ap=12,rp=40,sp=36,op=8,Fa="__agentbuilder_system_prompt_view__",lp=et({__name:"LogDetails",props:{log:{},threadId:{},hasPrevious:{type:Boolean},hasNext:{type:Boolean}},emits:["close","previous","next","effectClick"],setup(e,{emit:o}){const a=e,l=o,s=g("response"),i=g(new Set),h=g(new Set),{copying:u,copied:I,error:S,copy:$}=bs(),{activeSurface:m,openEditSurface:y}=us(),L=g(null),C=g(null),V=g(null),H=g(null),J=g(null),le=g(null),X=g(null),ne=g(null),ue=g(60),K=g(100);let P=null;const M=()=>{const A=V.value?.offsetHeight;if(!A)return;const k=Math.max(0,Math.round(A-ap));ue.value=k,K.value=k+rp},W=()=>{P?.disconnect(),P=null,!(!V.value||typeof ResizeObserver>"u")&&(P=new ResizeObserver(M),P.observe(V.value))};It(async()=>{await Xe(),M(),W()}),wt(()=>{P?.disconnect(),P=null});const q=g(new Set(["system_prompt","request_body","tools","reasoning_content","reasoning_details"])),_e=(A,k)=>A instanceof Error?A.message:k,Ne=A=>a.threadId?A.startsWith("data:")||A.startsWith("http")?A:Qe(`/api/threads/${a.threadId}/fs${A}`):null,te=T(()=>Zt(a.log.tools_schema)),qe=T(()=>kc(a.log.response_body)),z=T(()=>Cc(a.log.tool_results)),he=T(()=>_c(a.log.response_body)),ke=T(()=>Lc(a.log.reasoning_content)),Le=T(()=>$c(a.log.response_body)),we=T(()=>!a.log.is_complete),me=T(()=>a.log.is_complete?wc(a.log.response_body)||a.log.content||"":a.log.content??""),Se=T(()=>Ic(a.log.provider_tools)),Ae=T(()=>Zt(a.log.queued_tools)),se=T(()=>Ac({toolCalls:qe.value,queuedTools:Ae.value,providerToolCalls:Se.value})),Z=A=>{i.value.has(A)?i.value.delete(A):i.value.add(A)},Q=A=>{h.value.has(A)?h.value.delete(A):h.value.add(A)},ce=A=>{q.value.has(A)?q.value.delete(A):q.value.add(A)},fe=A=>!q.value.has(A),Fe=T(()=>Zt(a.log.errors)),Ye=T(()=>{const A=Fe.value.map(k=>{if(typeof k=="string")return{type:a.log.error_type||"error",message:k};if(!k||typeof k!="object")return{type:a.log.error_type||"error",message:String(k??"")};const R=k;return{type:typeof R.type=="string"?R.type:a.log.error_type||"error",message:typeof R.message=="string"?R.message:JSON.stringify(R)}}).filter(k=>k.message);return A.length>0?A:a.log.error?[{type:a.log.error_type||"error",message:a.log.error}]:[]}),F=A=>/\\[nrt"\\]/.test(A),$e=A=>{const k="__AGENTBUILDER_ESCAPED_BACKSLASH__";return A.replace(/\\\\/g,k).replace(/\\n/g,`
16
+ `).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(new RegExp(k,"g"),"\\")},ye=A=>{const k=A.trim();if(!k.startsWith("{")&&!k.startsWith("["))return null;const R=k[0],je=R==="{"?"}":"]";let st=0,kt=!1,Ct=!1;for(let mt=0;mt<k.length;mt++){const Pt=k[mt];if(Ct){Ct=!1;continue}if(kt){Pt==="\\"?Ct=!0:Pt==='"'&&(kt=!1);continue}if(Pt==='"'){kt=!0;continue}if(Pt===R)st++;else if(Pt===je&&(st--,st===0)){const Vt=k.slice(0,mt+1);try{return{value:JSON.parse(Vt),rest:k.slice(mt+1)}}catch{return null}}}return null},Re=A=>{const k=A.indexOf(`
17
17
 
18
- Stack trace:`),L=A.indexOf(`
18
+ Stack trace:`),R=A.indexOf(`
19
19
 
20
- Error Details:`);let ze=A.length;return k>=0&&(ze=Math.min(ze,k)),L>=0&&(ze=Math.min(ze,L)),A.slice(0,ze)},Ve=A=>{let k=Le(A).trim(),L=!1;for(let Ct=0;Ct<5&&!(!k.startsWith("{")&&!k.startsWith("["));Ct++){const mt=ye(k);if(!mt||typeof mt.value!="object"||mt.value===null)break;const Pt=mt.value,Vt=Pt.error,Nn=typeof Vt=="object"&&Vt!==null?Vt.message:typeof Vt=="string"?Vt:Pt.message;if(typeof Nn!="string"||Nn.trim().length===0)break;L=!0,k=Nn.trim()}if(L)return k;const ze=F(A)?$e(A):A,st=Le(ze).trim(),kt=st.split(`
21
- `).find(Ct=>Ct.trim().length>0);return kt&&kt.length<600?kt.trim():st},He=A=>{if(!A)return{isJson:!1,text:""};const k=A.trim();if(k.startsWith("{")||k.startsWith("["))try{const ze=JSON.parse(k);if(ze&&typeof ze=="object")return{isJson:!0,text:JSON.stringify(ze,null,2)}}catch{}return{isJson:!1,text:F(A)?$e(A):A}},le=T(()=>Ye.value.map(A=>{const k=Ve(A.message),L=He(A.message),ze=L.text.trim().length>0&&L.text.trim()!==k.trim();return{...A,human:k,details:L,hasMoreDetails:ze}})),ie=T(()=>{for(const A of le.value){const k=fr(A.message);if(k)return k}return null}),ae=g("standard"),Re=g(null),Ke=g(!1),U=g(null);let Ce=0;const se=pr,Ue=()=>{ae.value=Dc(a.log.provider)},tt=async(A,k)=>{const L=++Ce;if(A==="standard"){Re.value=null,U.value=null,Ke.value=!1;return}if(!a.threadId||!k){U.value="Missing thread or log ID",Ke.value=!1;return}Ke.value=!0,U.value=null;try{const ze=await fetch(Qe(`/api/threads/${a.threadId}/logs/${k}/inspect/${A}`));if(!ze.ok){const st=await ze.json();throw new Error(st.error||"Failed to inspect")}if(L!==Ce)return;Re.value=await ze.json()}catch(ze){if(L!==Ce)return;U.value=we(ze,"Failed to fetch inspected request"),Re.value=null}finally{L===Ce&&(Ke.value=!1)}};be(()=>a.log.id,Ue,{immediate:!0}),be([()=>a.log.id,ae],async([A,k])=>{Re.value=null,U.value=null,await tt(k,A)},{immediate:!0}),be(s,async()=>{await Xe();const A=C.value,k=H.value;if(!A||!k)return;const L=A.getBoundingClientRect(),ze=k.getBoundingClientRect(),st=A.scrollTop+(ze.top-L.top)-K.value;A.scrollTop>st&&Rn(A,{top:st})});const nt=T(()=>{if(ae.value==="standard"||!Re.value)return a.log.message_history;const{body:A,messagesPath:k}=Re.value,L=k&&A?A[k]:A;return JSON.stringify(L,null,2)}),ge=A=>{if(!A)return null;try{return JSON.parse(A)}catch{return A}},O=A=>!!A&&typeof A=="object"&&!Array.isArray(A),ee=T(()=>{const A=ge(a.log.source_message_metadata);return O(A)?A:null}),Oe=T(()=>{const A=ee.value;if(!A)return null;const k=A.scheduledEffect;if(!O(k))return null;const L=typeof k.id=="string"?k.id:null,ze=typeof k.name=="string"?k.name:null;return L?{id:L,name:ze,reference:{id:L,name:ze}}:null}),pe=T(()=>Sc(a.log.scheduled_effects)),D=T(()=>{const A=ge(nt.value);return Array.isArray(A)?A.filter(k=>!!k&&typeof k=="object").map(k=>({role:typeof k.role=="string"?k.role:"message",raw:k})):[]}),xe=A=>A.role==="system"&&typeof A.raw.content=="string"&&typeof a.log.system_prompt=="string"&&A.raw.content.trim()===a.log.system_prompt.trim(),je=T(()=>D.value.some(A=>xe(A))),M=T(()=>D.value.length===0?nt.value:D.value.map(A=>{const k={...A.raw};return xe(A)&&(k.content=`[${Fa}]`),k})),N=T(()=>{const A=[];return je.value&&A.push({token:Fa,label:"view system prompt",action:"view-system-prompt"}),A}),Ne=A=>{A.action==="view-system-prompt"&&de()},de=async()=>{q.value.has("system_prompt")&&(q.value.delete("system_prompt"),q.value=new Set(q.value)),await Xe();const A=C.value,k=X.value?.contentRef;!A||!k||Rn(A,{top:k.offsetTop-K.value-sp-op})},Be=T(()=>ae.value==="standard"||!Re.value?a.log.request_body:JSON.stringify(Re.value.body,null,2)),ut=T(()=>ae.value==="standard"||!Re.value?null:`${ae.value} format`),d=T(()=>Rc(a.log.request_body));be(()=>a.log,()=>{Xe(()=>{R(),J.value?.checkHeight(),oe.value?.checkHeight(),X.value?.checkHeight(),ne.value?.checkHeight()})});const f=T(()=>a.log.error_type==="user_interrupted"||!a.log.error_type&&/interrupted by user|stopped by user/i.test(a.log.error??"")?{kind:"stopped",label:"Stopped",dot:"bg-neutral-400 dark:bg-neutral-500",text:"text-neutral-600 dark:text-neutral-300"}:a.log.error||Ye.value.length>0?{kind:"error",label:"Failed",dot:"bg-red-500",text:"text-red-700 dark:text-red-300"}:a.log.is_complete?{kind:"success",label:"Success",dot:"bg-emerald-500",text:"text-emerald-700 dark:text-emerald-300"}:{kind:"live",label:"Live",dot:"bg-amber-500",text:"text-amber-700 dark:text-amber-300"}),_=A=>A==null?null:A.toLocaleString("en-US"),ve=A=>A==null?null:`${A.toLocaleString("en-US")} ms`,Me=A=>A==null?null:`$${A.toFixed(6)}`,ot=T(()=>{const A=a.log.total_tokens;return!(A==null||A===0&&(a.log.error||Ye.value.length>0))}),it=T(()=>{const A=a.log.cost_total;return!(A==null||A===0&&(a.log.error||Ye.value.length>0))}),ht=T(()=>ot.value?a.log.total_tokens.toLocaleString("en-US"):null),bt=T(()=>{if(!ot.value)return null;const A=a.log.input_tokens??0,k=a.log.output_tokens??0;return`${A.toLocaleString()} in → ${k.toLocaleString()} out`}),mn=T(()=>{if(!ot.value)return null;const A=[],k=a.log.reasoning_tokens;k&&k>0&&A.push(`${k.toLocaleString()} reasoning`);const L=a.log.cached_tokens,ze=a.log.input_tokens;if(L&&L>0)if(ze&&ze>0){const st=Math.round(L/ze*100);A.push(`${L.toLocaleString()} cached (${st}%)`)}else A.push(`${L.toLocaleString()} cached`);return A.length>0?A.join(" · "):null}),en=T(()=>{if(!it.value)return null;const A=a.log.cost_input,k=a.log.cost_cached,L=a.log.cost_output;if(A==null||L==null)return null;const ze=[`$${A.toFixed(6)} in`];k!=null&&ze.push(`$${k.toFixed(6)} cached`),ze.push(`$${L.toFixed(6)} out`);const st=a.log.cost_router_fee;if(st!=null&&st>0){const kt=a.log.router_fee_percent;ze.push(kt?`$${st.toFixed(6)} router fee (${kt}%)`:`$${st.toFixed(6)} router fee`)}return ze.join(" · ")}),gn=T(()=>ve(a.log.time_to_first_token_ms)),xn=T(()=>{const A=a.log.generation_ms,k=a.log.output_tokens;if(!A||A<=0||k==null||k<=0)return null;const L=k/(A/1e3);return`${L>=10?Math.round(L):L.toFixed(1)} tok/s`}),tn=T(()=>ve(a.log.latency_ms)),v=A=>A?A.length>10?`${A.slice(0,8)}…`:A:"",x=T(()=>{const A=bc(a.log);if(!A)return null;const k=A.model?`?model=${encodeURIComponent(A.model)}`:"";return Qe(`/api/providers/${encodeURIComponent(A.provider)}/icon${k}`)}),w=T(()=>{const A=yc(a.log);return A?.model?Qe(`/api/providers/${encodeURIComponent(A.provider)}/icon?model=${encodeURIComponent(A.model)}`):null}),Te=(A,k,L)=>{if(!a.log.prompt_name)return;const ze=k.currentTarget;ze instanceof HTMLElement&&y({target:{entityType:"prompt",entityId:a.log.prompt_name,section:A,defaultToolTab:L},anchorEl:ze,threadId:a.threadId??null,showGlobalNotice:!0})},Y=(A,k)=>a.log.prompt_name?cs(m.value?.target,{entityType:"prompt",entityId:a.log.prompt_name,section:A,defaultToolTab:k}):!1,Je=async()=>{if(E.value)return E.value;const A=await fetch(Qe("/api/models"));if(!A.ok)return[];const k=await A.json();return E.value=k.models||[],E.value};It(()=>{Je().catch(()=>{})});const ct=T(()=>{const A=E.value;return A?ac(a.log.input_tokens,Aa(A,a.log)):null}),yt=T(()=>{const A=ct.value;return A?`${A.pct}% of context window — ${A.inputTokens.toLocaleString("en-US")} of ${A.maxContextTokens.toLocaleString("en-US")} tokens`:""}),nn=async A=>{const k=A.currentTarget;if(!(k instanceof HTMLElement))return;const L=a.log.model,ze=a.log.model_name||a.log.model;if(!L&&!ze)return;const st=a.log.provider,kt=ra(ze,st),Ct=await Je(),mt=Aa(Ct,a.log);y({target:{entityType:"model",entityId:mt?.id||mt?.name||L||ze},anchorEl:k,editData:mt||{id:L||ze,name:L||ze,model:kt,provider:st,provider_id:st},threadId:a.threadId??null,showGlobalNotice:!0})},$t=()=>{const A=m.value?.target;if(A?.entityType!=="model")return!1;const k=ra(a.log.model_name||a.log.model,a.log.provider);return[a.log.model,a.log.model_name,k].includes(A.entityId)},bn=()=>a.log.provider?.toLowerCase(),Pn=async()=>{const A=bn();if(!a.threadId||!a.log.id||!A||!vr(A))return null;try{const k=await fetch(Qe(`/api/threads/${a.threadId}/logs/${a.log.id}/inspect/${A}`));return k.ok?await k.json():null}catch{return null}},mr=(A,k)=>k?!A.includes("/v1/proxy/"):!1,gr=async()=>{try{if(!a.log.request_body||!a.log.model)throw new Error("Missing request data");const A=await fetch(Qe(`/api/models/${encodeURIComponent(a.log.model)}/curl-data`));if(!A.ok)throw new Error("Failed to fetch model data");const k=await A.json(),L=await Pn(),ze=L?.body?JSON.stringify(L.body,null,2):Ma(a.log.request_body),st=mr(k.endpoint,L?.metadata?.endpoint)&&L?.metadata?.endpoint||k.endpoint;await $(mc({...k,endpoint:st,headers:L?.metadata?.headers},ze))}catch(A){S.value=`Failed to copy cURL: ${we(A,"Unknown error")}`}};return(A,k)=>(t(),r("div",{ref_key:"scrollContainer",ref:C,class:"log-details-root h-full overflow-y-auto bg-white p-3 dark:bg-neutral-900",style:gt({"--logdetails-tabs-top":`${ue.value}px`,"--logdetails-sticky-stack":`${K.value}px`})},[n("div",{ref_key:"stickyHeaderRef",ref:V,class:"log-details-sticky-header sticky -top-3 z-20 -mx-3 -mt-3 mb-3 overflow-hidden rounded-t-lg border-b border-neutral-200 bg-white/95 backdrop-blur dark:border-neutral-800 dark:bg-neutral-900/95"},[n("div",Fc,[n("div",Pc,[n("div",Nc,[n("button",{onClick:k[0]||(k[0]=L=>l("previous")),disabled:!e.hasPrevious,class:"inline-flex h-7 w-7 items-center justify-center rounded-l border border-neutral-300 text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-900 disabled:opacity-30 dark:border-neutral-700 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100","aria-label":"Previous log",title:"Previous log"},[...k[23]||(k[23]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[n("polyline",{points:"15 18 9 12 15 6"})],-1)])],8,zc),n("button",{onClick:k[1]||(k[1]=L=>l("next")),disabled:!e.hasNext,class:"-ml-px inline-flex h-7 w-7 items-center justify-center rounded-r border border-neutral-300 text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-900 disabled:opacity-30 dark:border-neutral-700 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100","aria-label":"Next log",title:"Next log"},[...k[24]||(k[24]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[n("polyline",{points:"9 18 15 12 9 6"})],-1)])],8,jc)]),n("span",{class:G(["inline-flex shrink-0 items-center gap-1.5 rounded-full border border-neutral-200 bg-white px-2 py-0.5 text-[11px] font-medium dark:border-neutral-800 dark:bg-neutral-950",f.value.text])},[n("span",{class:G(["inline-block h-1.5 w-1.5 rounded-full",[f.value.dot,f.value.kind==="live"?"log-details-pulse":""]])},null,2),rt(" "+p(f.value.label),1)],2),n("h3",Bc,p(e.log.prompt_name||e.log.model_name||e.log.model),1),n("div",Oc,[e.log.actual_provider||e.log.provider?(t(),r("span",Vc,[x.value?(t(),r("img",{key:0,src:x.value,alt:e.log.actual_provider||e.log.provider||"provider",class:"h-3 w-3 shrink-0 rounded-[2px] object-contain"},null,8,qc)):b("",!0),n("span",null,p(e.log.actual_provider||e.log.provider),1)])):b("",!0),e.log.model_name||e.log.model?(t(),r("span",Uc,[w.value?(t(),r("img",{key:0,src:w.value,alt:e.log.model_name||e.log.model||"model",class:"h-3 w-3 shrink-0 rounded-[2px] object-contain"},null,8,Hc)):b("",!0),n("span",null,p(e.log.model_name||e.log.model),1),B(c(At),{content:"Model config",position:"bottom",disabled:$t()},{default:Fe(()=>[n("button",{type:"button",class:"-mr-0.5 inline-flex h-4 w-4 items-center justify-center rounded text-neutral-400 transition-colors hover:text-neutral-900 dark:text-neutral-500 dark:hover:text-neutral-100","aria-label":"Edit model config",onClick:k[2]||(k[2]=Ge(L=>nn(L),["stop"]))},[B(c(In),{size:12})])]),_:1},8,["disabled"])])):b("",!0)])]),n("div",Wc,[n("button",{onClick:gr,disabled:c(u)||!e.log.request_body,class:"rounded bg-neutral-900 px-3 py-1 text-xs font-medium text-white transition-opacity hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-neutral-100 dark:text-neutral-900",title:c(S)||(e.log.request_body?"Copy cURL command":"No request data available")},[c(u)?(t(),j(Ze,{key:0,size:"xs"})):(t(),r("span",Jc,p(c(I)?"Copied!":"Copy cURL"),1))],8,Kc),n("button",{onClick:k[3]||(k[3]=L=>l("close")),class:"inline-flex h-7 w-7 items-center justify-center rounded border border-neutral-300 text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-900 dark:border-neutral-700 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100","aria-label":"Close details",title:"Close"},[...k[25]||(k[25]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[n("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),n("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])])]),n("div",Gc,[n("div",Yc,[e.log.prompt_name?(t(),j(c(At),{key:0,content:"Prompt basics",position:"bottom",disabled:Y("basic")},{default:Fe(()=>[n("button",{type:"button",class:G(Gt),"aria-label":"Edit prompt basics",onClick:k[4]||(k[4]=Ge(L=>Te("basic",L),["stop"]))},[B(c(Qa),{size:14})])]),_:1},8,["disabled"])):b("",!0),e.log.prompt_name?(t(),j(c(At),{key:1,content:"Prompt text",position:"bottom",disabled:Y("prompt")},{default:Fe(()=>[n("button",{type:"button",class:G(Gt),"aria-label":"Edit prompt text",onClick:k[5]||(k[5]=Ge(L=>Te("prompt",L),["stop"]))},[B(c(fn),{size:14})])]),_:1},8,["disabled"])):b("",!0),e.log.prompt_name?(t(),j(c(At),{key:2,content:"Prompt config",position:"bottom",disabled:Y("behavior")},{default:Fe(()=>[n("button",{type:"button",class:G(Gt),"aria-label":"Edit prompt config",onClick:k[6]||(k[6]=Ge(L=>Te("behavior",L),["stop"]))},[B(c(Xa),{size:14})])]),_:1},8,["disabled"])):b("",!0),e.log.prompt_name?(t(),j(c(At),{key:3,content:"Prompt input schema",position:"bottom",disabled:Y("schema")},{default:Fe(()=>[n("button",{type:"button",class:G(Gt),"aria-label":"Edit input schema",onClick:k[7]||(k[7]=Ge(L=>Te("schema",L),["stop"]))},[B(c(Rr),{size:14})])]),_:1},8,["disabled"])):b("",!0),e.log.prompt_name?(t(),j(c(At),{key:4,content:"Prompt variables",position:"bottom",disabled:Y("variables")},{default:Fe(()=>[n("button",{type:"button",class:G(Gt),"aria-label":"Edit prompt variables",onClick:k[8]||(k[8]=Ge(L=>Te("variables",L),["stop"]))},[B(c(Mr),{size:14})])]),_:1},8,["disabled"])):b("",!0),e.log.prompt_name?(t(),j(c(At),{key:5,content:"Prompt tools",position:"bottom",disabled:Y("tools","functions")},{default:Fe(()=>[n("button",{type:"button",class:G(Gt),"aria-label":"Edit prompt tools",onClick:k[9]||(k[9]=Ge(L=>Te("tools",L,"functions"),["stop"]))},[B(c(Za),{size:14})])]),_:1},8,["disabled"])):b("",!0)]),n("div",Qc,[B(Ln,{timestamp:e.log.created_at},null,8,["timestamp"]),e.log.finish_reason?(t(),r(Ae,{key:0},[k[26]||(k[26]=n("span",{"aria-hidden":"true",class:"text-neutral-300 dark:text-neutral-700"},"·",-1)),n("span",null,"finish: "+p(e.log.finish_reason),1)],64)):b("",!0),e.log.id?(t(),r(Ae,{key:1},[k[27]||(k[27]=n("span",{"aria-hidden":"true",class:"text-neutral-300 dark:text-neutral-700"},"·",-1)),n("span",Xc,"log "+p(v(e.log.id)),1)],64)):b("",!0),c(S)?(t(),r(Ae,{key:2},[k[28]||(k[28]=n("span",{"aria-hidden":"true",class:"text-neutral-300 dark:text-neutral-700"},"·",-1)),n("span",Zc,p(c(S)),1)],64)):b("",!0)])])],512),n("div",e0,[n("div",t0,[n("div",n0,[B(c(Dr),{size:11,"stroke-width":2.25}),k[29]||(k[29]=n("span",null,"Performance",-1))]),n("div",a0,[!e.log.is_complete&&!e.log.time_to_first_token_ms?(t(),j(Ze,{key:0,size:"xs"})):(t(),r("span",r0,[rt(p(gn.value??"—"),1),gn.value?(t(),r("span",s0," latency")):b("",!0)]))]),xn.value?(t(),r("div",o0,p(xn.value),1)):b("",!0),tn.value?(t(),r("div",l0,p(tn.value)+" total ",1)):b("",!0)]),n("div",i0,[n("div",d0,[ct.value?(t(),j(c(At),{key:0,content:yt.value},{default:Fe(()=>[B(nc,{pct:ct.value.pct},null,8,["pct"])]),_:1},8,["content"])):(t(),j(c(Fr),{key:1,size:11,"stroke-width":2.25})),k[30]||(k[30]=n("span",null,"Tokens",-1))]),n("div",u0,[!e.log.is_complete&&!ot.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),r("span",c0,p(ht.value??"—"),1))]),bt.value?(t(),r("div",f0,p(bt.value),1)):b("",!0),mn.value?(t(),r("div",p0,p(mn.value),1)):b("",!0)]),n("div",v0,[n("div",h0,[B(c(Pr),{size:11,"stroke-width":2.25}),k[31]||(k[31]=n("span",null,"Cost",-1))]),n("div",m0,[!e.log.is_complete&&!it.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),r("span",g0,p(it.value?Me(e.log.cost_total):"—"),1))]),en.value?(t(),r("div",x0,p(en.value),1)):b("",!0)]),n("div",b0,[n("div",y0,[B(c(Nr),{size:11,"stroke-width":2.25}),k[32]||(k[32]=n("span",null,"Context",-1))]),n("div",k0,[e.log.message_history_length!==null&&e.log.message_history_length!==void 0?(t(),r("span",_0,p(_(e.log.message_history_length))+" msg ",1)):(t(),r("span",w0,"—"))]),te.value.length>0?(t(),r("div",$0,p(te.value.length)+" tool"+p(te.value.length===1?"":"s")+" available ",1)):b("",!0)])]),Oe.value?(t(),r("div",C0,[n("div",S0,[n("button",{type:"button",class:"inline-flex items-center gap-1 rounded px-1 py-0.5 text-neutral-600 transition-colors hover:bg-neutral-100 hover:text-neutral-950 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",title:"Open responsible scheduled effect",onClick:k[10]||(k[10]=L=>l("effectClick",Oe.value.reference))},[B(c(St),{size:12,class:"shrink-0"}),k[33]||(k[33]=n("span",null,"via Scheduled Effect",-1))]),Oe.value.name?(t(),r("span",T0,p(Oe.value.name),1)):b("",!0),Oe.value.id?(t(),r("span",I0,p(Oe.value.id),1)):b("",!0)])])):b("",!0),pe.value.length>0?(t(),r("div",A0,[n("div",E0,[B(c(St),{size:11,class:"shrink-0"}),n("span",null,p(pe.value.length===1?"Scheduled effect created":`${pe.value.length} scheduled effects created`),1)]),n("div",L0,[(t(!0),r(Ae,null,We(pe.value,L=>(t(),r("button",{key:L.id,type:"button",class:"block w-full rounded border border-transparent px-2 py-1.5 text-left transition-colors hover:border-neutral-200 hover:bg-neutral-50 dark:hover:border-neutral-800 dark:hover:bg-neutral-950",title:"Open scheduled effect",onClick:ze=>l("effectClick",L.reference)},[n("span",M0,[n("span",D0,p(L.name||"scheduled_effect"),1),n("span",F0,p(L.id),1)]),n("span",P0,[L.scheduledAt?(t(),r("span",N0,[k[34]||(k[34]=n("span",{class:"text-neutral-400 dark:text-neutral-500"},"scheduled",-1)),rt(" "+p(c(Rt)(L.scheduledAt)),1)])):b("",!0),L.createdAt?(t(),r("span",z0,[k[35]||(k[35]=n("span",{class:"text-neutral-400 dark:text-neutral-500"},"created",-1)),rt(" "+p(c(Rt)(L.createdAt)),1)])):b("",!0),L.status?(t(),r("span",j0,[k[36]||(k[36]=n("span",{class:"text-neutral-400 dark:text-neutral-500"},"status",-1)),rt(" "+p(L.status),1)])):b("",!0)])],8,R0))),128))])])):b("",!0),le.value.length>0?(t(),r("div",B0,[n("div",O0,[n("div",V0,[n("div",q0,p(le.value.length>1?`${le.value.length} errors`:"Error"),1),n("div",U0,p(le.value[0].type||"error"),1)]),le.value[0].human?(t(),j(ia,{key:0,content:le.value[0].human,variant:"ghost",size:"xs"},null,8,["content"])):b("",!0)]),le.value[0].human?(t(),r("p",H0,p(le.value[0].human),1)):b("",!0),ie.value?(t(),r("div",W0,[n("a",{href:ie.value,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1.5 rounded-full bg-red-600 px-3 py-1 text-xs font-semibold text-white transition-colors hover:bg-red-700 dark:bg-red-500 dark:hover:bg-red-400 dark:text-red-950"},[...k[37]||(k[37]=[rt(" Add credits ",-1),n("svg",{class:"h-3 w-3",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},[n("path",{"fill-rule":"evenodd",d:"M4.25 5.5a.75.75 0 0 0-.75.75v8.5c0 .414.336.75.75.75h8.5a.75.75 0 0 0 .75-.75v-4a.75.75 0 0 1 1.5 0v4A2.25 2.25 0 0 1 12.75 17h-8.5A2.25 2.25 0 0 1 2 14.75v-8.5A2.25 2.25 0 0 1 4.25 4h5a.75.75 0 0 1 0 1.5h-5Z","clip-rule":"evenodd"}),n("path",{"fill-rule":"evenodd",d:"M6.194 12.753a.75.75 0 0 0 1.06.053L16.5 4.44v2.81a.75.75 0 0 0 1.5 0v-4.5a.75.75 0 0 0-.75-.75h-4.5a.75.75 0 0 0 0 1.5h2.553l-9.056 8.194a.75.75 0 0 0-.053 1.06Z","clip-rule":"evenodd"})],-1)])],8,K0)])):b("",!0),le.value[0].hasMoreDetails?(t(),r("details",J0,[k[38]||(k[38]=n("summary",{class:"cursor-pointer px-3 py-1.5 text-[11px] font-medium text-neutral-500 hover:bg-red-100/40 hover:text-neutral-800 dark:text-neutral-400 dark:hover:bg-red-900/20 dark:hover:text-neutral-200"}," Show full details ",-1)),n("div",G0,[le.value[0].details.isJson?(t(),j(zt,{key:0,code:le.value[0].details.text,language:"json"},null,8,["code"])):(t(),r("pre",Y0,p(le.value[0].details.text),1))])])):b("",!0),le.value.length>1?(t(),r("div",Q0,[(t(!0),r(Ae,null,We(le.value.slice(1),(L,ze)=>(t(),r("details",{key:ze,class:"border-b border-red-200 last:border-b-0 dark:border-red-900"},[n("summary",X0,p(L.type),1),L.human?(t(),r("p",Z0,p(L.human),1)):b("",!0),L.hasMoreDetails?(t(),r("details",ef,[k[39]||(k[39]=n("summary",{class:"cursor-pointer px-3 py-1.5 text-[11px] font-medium text-neutral-500 hover:bg-red-100/40 hover:text-neutral-800 dark:text-neutral-400 dark:hover:bg-red-900/20 dark:hover:text-neutral-200"}," Show full details ",-1)),n("div",tf,[L.details.isJson?(t(),j(zt,{key:0,code:L.details.text,language:"json"},null,8,["code"])):(t(),r("pre",nf,p(L.details.text),1))])])):b("",!0)]))),128))])):b("",!0)])):b("",!0),n("div",af,[n("button",{onClick:k[11]||(k[11]=L=>s.value="request"),type:"button",class:G(["inline-flex h-7 items-center gap-1.5 rounded px-3 text-sm font-medium transition-colors",s.value==="request"?"bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-900":"text-neutral-500 hover:bg-neutral-100 hover:text-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100"])},[B(c(zr),{size:13,"stroke-width":2.25}),k[40]||(k[40]=n("span",null,"Request",-1))],2),n("button",{onClick:k[12]||(k[12]=L=>s.value="response"),type:"button",class:G(["inline-flex h-7 items-center gap-1.5 rounded px-3 text-sm font-medium transition-colors",s.value==="response"?"bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-900":"text-neutral-500 hover:bg-neutral-100 hover:text-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100"])},[B(c(jr),{size:13,"stroke-width":2.25}),k[41]||(k[41]=n("span",null,"Response",-1))],2)]),n("div",{ref_key:"tabContentRef",ref:H,class:"space-y-3"},[dt(n("div",rf,[n("div",sf,[k[43]||(k[43]=n("label",{for:"request-provider-view",class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"}," View as ",-1)),dt(n("select",{id:"request-provider-view","onUpdate:modelValue":k[13]||(k[13]=L=>ae.value=L),class:"h-8 min-w-[11rem] rounded border border-neutral-200 bg-white px-2 text-xs font-medium text-neutral-900 shadow-sm transition-colors hover:bg-neutral-50 focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 dark:border-neutral-800 dark:bg-neutral-900 dark:text-neutral-100 dark:hover:bg-neutral-800/60"},[k[42]||(k[42]=n("option",{value:"standard"},"Standard Agents",-1)),(t(!0),r(Ae,null,We(c(se),L=>(t(),r("option",{key:L,value:L},p(c(Mc)(L)),9,of))),128))],512),[[Ga,ae.value]]),Ke.value?(t(),j(Ze,{key:0,size:"xs"})):b("",!0),U.value?(t(),r("span",lf,p(U.value),1)):b("",!0)]),d.value?(t(),r("div",df,[k[44]||(k[44]=n("div",{class:"text-xs font-semibold text-amber-800 dark:text-amber-200"}," Vision Input Filtered For This Request ",-1)),n("div",uf," This model does not support image input. Removed "+p(d.value.removedUserImageParts)+" user image part(s) and "+p(d.value.removedToolImageAttachments)+" tool image attachment(s) before sending the request. Stored thread messages remain unchanged. ",1)])):b("",!0),te.value.length>0?(t(),j(Lt,{key:1,ref_key:"toolsSectionRef",ref:J,title:`Available Tools (${te.value.length})`,"section-id":"tools",expanded:fe("tools"),"scroll-container":C.value,"sticky-offset":K.value,onToggle:k[14]||(k[14]=L=>ce("tools"))},{default:Fe(()=>[(t(!0),r(Ae,null,We(te.value,(L,ze)=>(t(),r("div",{key:ze,class:"border-b border-neutral-200 dark:border-neutral-800 last:border-b-0"},[n("button",{onClick:st=>Z(ze),class:"w-full px-2 py-1.5 text-left hover:bg-neutral-50 dark:hover:bg-neutral-900 transition-colors flex items-center justify-between text-xs"},[n("span",ff,p(L.function?.name||L.name||"Unknown"),1),n("span",pf,p(i.value.has(ze)?"▼":"▶"),1)],8,cf),dt(n("div",vf,[L.function?.description||L.description?(t(),r("div",hf,p(L.function?.description||L.description),1)):b("",!0),B(zt,{code:JSON.stringify(L,null,2),language:"json"},null,8,["code"])],512),[[_t,i.value.has(ze)]])]))),128))]),_:1},8,["title","expanded","scroll-container","sticky-offset"])):b("",!0),e.log.message_history?(t(),j(Lt,{key:2,ref_key:"messagesSectionRef",ref:oe,title:`Messages (${e.log.message_history_length||0} messages)`,subtitle:ut.value,"section-id":"messages",expanded:fe("messages"),"scroll-container":C.value,"sticky-offset":K.value,"copy-content":nt.value,onToggle:k[15]||(k[15]=L=>ce("messages"))},{default:Fe(()=>[B(Bn,{json:M.value,"thread-id":e.threadId,actions:N.value,onAction:Ne},null,8,["json","thread-id","actions"])]),_:1},8,["title","subtitle","expanded","scroll-container","sticky-offset","copy-content"])):b("",!0),e.log.system_prompt?(t(),j(Lt,{key:3,ref_key:"systemPromptSectionRef",ref:X,title:"System Prompt","section-id":"system_prompt",expanded:fe("system_prompt"),"scroll-container":C.value,"sticky-offset":K.value,"copy-content":e.log.system_prompt,onToggle:k[16]||(k[16]=L=>ce("system_prompt"))},{default:Fe(()=>[n("div",mf,[B(zt,{code:e.log.system_prompt,language:"markdown"},null,8,["code"])])]),_:1},8,["expanded","scroll-container","sticky-offset","copy-content"])):b("",!0),e.log.request_body?(t(),j(Lt,{key:4,ref_key:"requestBodySectionRef",ref:ne,title:"Full Request Body",subtitle:ut.value,"section-id":"request_body",expanded:fe("request_body"),"scroll-container":C.value,"sticky-offset":K.value,"copy-content":Be.value,onToggle:k[17]||(k[17]=L=>ce("request_body"))},{default:Fe(()=>[B(Bn,{json:Be.value,"thread-id":e.threadId},null,8,["json","thread-id"])]),_:1},8,["subtitle","expanded","scroll-container","sticky-offset","copy-content"])):b("",!0)],512),[[_t,s.value==="request"]]),dt(n("div",gf,[_e.value&&e.log.reasoning_content?(t(),r("div",xf,[k[45]||(k[45]=n("div",{class:"flex items-center gap-1.5 border-b border-amber-200 px-3 py-1.5 text-[10px] font-medium uppercase tracking-wide text-amber-700 dark:border-amber-900/40 dark:text-amber-300"},[n("span",{class:"log-details-pulse"},"●"),n("span",null,"Thinking")],-1)),n("pre",bf,p(ke.value),1)])):b("",!0),me.value?(t(),r("div",yf,[n("div",kf,[_e.value?(t(),r("span",_f,"●")):b("",!0),k[46]||(k[46]=n("span",null,"Response",-1))]),n("pre",wf,p(me.value),1)])):b("",!0),re.value.length>0?(t(),j(Lt,{key:2,title:`Tools Called (${re.value.length})`,"section-id":"tools_called",expanded:fe("tools_called"),"scroll-container":C.value,"sticky-offset":K.value,onToggle:k[18]||(k[18]=L=>ce("tools_called"))},{default:Fe(()=>[n("div",$f,[(t(!0),r(Ae,null,We(re.value,L=>(t(),r("div",{key:L.id},[n("button",{onClick:ze=>Q(L.id),type:"button",class:"flex w-full items-center justify-between gap-3 px-3 py-2 text-left transition-colors hover:bg-neutral-50 dark:hover:bg-neutral-900"},[n("div",Sf,[n("span",Tf,p(L.name),1),n("span",If,p(v(L.id)),1)]),n("div",Af,[L.isQueued?(t(),r("span",Ef,"queued")):b("",!0),L.isProvider?(t(),j(c(At),{key:1,content:"Model tool call from the upstream provider's native response, before AgentBuilder normalization.",position:"top",wide:""},{default:Fe(()=>[...k[47]||(k[47]=[n("span",{class:"rounded bg-purple-100 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-purple-700 dark:bg-purple-900/30 dark:text-purple-300"},"provider",-1)])]),_:1})):b("",!0),L.isProvider&&L.status?(t(),r("span",{key:2,class:G(["text-[10px] font-medium uppercase tracking-wide",L.status==="completed"?"text-emerald-600 dark:text-emerald-400":L.status==="failed"?"text-red-600 dark:text-red-400":"text-amber-600 dark:text-amber-400"])},p(L.status),3)):b("",!0),L.isProvider?b("",!0):(t(),r("span",{key:3,class:G(["text-[10px] font-medium uppercase tracking-wide",z.value.has(L.id)?"text-emerald-600 dark:text-emerald-400":"text-neutral-400 dark:text-neutral-500"])},p(z.value.has(L.id)?"returned":"no result"),3)),n("span",Lf,p(h.value.has(L.id)?"▼":"▶"),1)])],8,Cf),dt(n("div",Rf,[L.isProvider?(t(),r("div",Bf,[k[51]||(k[51]=n("div",{class:"mb-1 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},"Provider payload",-1)),B(zt,{code:c(Ec)(L),language:"json"},null,8,["code"])])):(t(),r("div",Mf,[n("div",Df,[n("div",Ff,[k[49]||(k[49]=n("span",null,"Arguments",-1)),L.isQueued&&L.queuedAt?(t(),r("span",Pf,[k[48]||(k[48]=rt(" queued ",-1)),B(Ln,{timestamp:L.queuedAt},null,8,["timestamp"])])):b("",!0)]),B(zt,{code:c(Ma)(L.function?.arguments||"{}"),language:"json"},null,8,["code"])]),n("div",Nf,[k[50]||(k[50]=n("div",{class:"mb-1 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"}," Result ",-1)),z.value.has(L.id)?(t(),r("pre",zf,p(z.value.get(L.id)?.content||"No content"),1)):(t(),r("div",jf," no result captured "))])]))],512),[[_t,h.value.has(L.id)]])]))),128))])]),_:1},8,["title","expanded","scroll-container","sticky-offset"])):b("",!0),Ee.value.length>0?(t(),j(Lt,{key:3,title:`Generated Images (${Ee.value.length})`,subtitle:"returned by the model","section-id":"generated_images",expanded:fe("generated_images"),"scroll-container":C.value,"sticky-offset":K.value,onToggle:k[19]||(k[19]=L=>ce("generated_images"))},{default:Fe(()=>[n("div",Of,[(t(!0),r(Ae,null,We(Ee.value,(L,ze)=>(t(),r("div",{key:ze,class:"relative"},[L.image_url?.url?(t(),r("img",{key:0,src:Pe(L.image_url.url)||L.image_url.url,alt:`Generated image ${ze+1}`,class:"max-w-[300px] max-h-[300px] rounded-md ring-1 ring-neutral-200 object-contain dark:ring-neutral-800"},null,8,Vf)):(t(),r("div",qf," No URL "))]))),128))])]),_:1},8,["title","expanded","scroll-container","sticky-offset"])):b("",!0),e.log.reasoning_content&&!_e.value?(t(),j(Lt,{key:4,title:"Reasoning Content",subtitle:"internal trace · not shown to users","section-id":"reasoning_content",expanded:fe("reasoning_content"),"scroll-container":C.value,"sticky-offset":K.value,"copy-content":ke.value||e.log.reasoning_content,onToggle:k[20]||(k[20]=L=>ce("reasoning_content"))},{default:Fe(()=>[n("pre",Uf,p(ke.value),1)]),_:1},8,["expanded","scroll-container","sticky-offset","copy-content"])):b("",!0),he.value.length>0?(t(),j(Lt,{key:5,title:`Reasoning Details (${he.value.length} blocks)`,subtitle:"structured trace from provider","section-id":"reasoning_details",expanded:fe("reasoning_details"),"scroll-container":C.value,"sticky-offset":K.value,"copy-content":JSON.stringify(he.value,null,2),onToggle:k[21]||(k[21]=L=>ce("reasoning_details"))},{default:Fe(()=>[n("div",Hf,[(t(!0),r(Ae,null,We(he.value,(L,ze)=>(t(),r("div",{key:ze,class:"px-3 py-2"},[n("div",Wf,[n("span",Kf,p((L.type||"unknown").replace("reasoning.","")),1),L.id?(t(),r("span",Jf," id "+p(L.id),1)):b("",!0),L.format?(t(),r("span",Gf," · "+p(L.format),1)):b("",!0),L.index!==void 0?(t(),r("span",Yf," · index "+p(L.index),1)):b("",!0)]),L.type==="reasoning.summary"&&L.summary?(t(),r("div",Qf,p(L.summary),1)):L.type==="reasoning.text"&&L.text?(t(),r(Ae,{key:1},[n("div",Xf,p(L.text),1),L.signature?(t(),r("div",Zf,[k[52]||(k[52]=n("div",{class:"mb-0.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"}," Signature ",-1)),n("div",ep,p(L.signature),1)])):b("",!0)],64)):L.type==="reasoning.encrypted"&&L.data?(t(),r("div",tp,p(L.data),1)):(t(),r("pre",np,p(JSON.stringify(L,null,2)),1))]))),128))])]),_:1},8,["title","expanded","scroll-container","sticky-offset","copy-content"])):b("",!0),e.log.response_body?(t(),j(Lt,{key:6,title:"Full Response Body","section-id":"response_body",expanded:fe("response_body"),"scroll-container":C.value,"sticky-offset":K.value,"copy-content":e.log.response_body,onToggle:k[22]||(k[22]=L=>ce("response_body"))},{default:Fe(()=>[B(Bn,{json:e.log.response_body,"thread-id":e.threadId},null,8,["json","thread-id"])]),_:1},8,["expanded","scroll-container","sticky-offset","copy-content"])):b("",!0)],512),[[_t,s.value==="response"]])],512)],4))}}),ip=vt(lp,[["__scopeId","data-v-49e7c568"]]),dp={class:"min-w-full"},up=["disabled"],cp={key:1},fp={key:2},pp={key:3},vp={role:"table",class:"logs-grid w-full text-sm"},hp={role:"row",class:"logs-grid-row sticky top-0 z-20 bg-white after:absolute after:inset-x-0 after:bottom-0 after:h-px after:bg-neutral-300 dark:bg-black dark:after:bg-neutral-700"},mp=["aria-selected","onClick","onKeydown","onMouseenter"],gp={role:"cell",class:"whitespace-nowrap px-3 py-2 text-xs"},xp={class:"flex min-w-0 items-center gap-1 whitespace-nowrap"},bp={key:0,class:"text-neutral-400 dark:text-neutral-600 mr-1"},yp={key:3},kp={role:"cell",class:"whitespace-nowrap px-3 py-2"},_p={class:"flex min-w-0 items-center gap-2 whitespace-nowrap"},wp={key:0,class:"inline-flex text-neutral-500 dark:text-neutral-400",title:"Stopped by user"},$p={key:1,class:"text-red-600 dark:text-red-400",title:"Error"},Cp={class:"font-mono text-xs"},Sp={role:"cell",class:"whitespace-nowrap px-3 py-2 font-mono text-xs"},Tp={key:1,class:"inline-flex items-center gap-1"},Ip={key:0,class:"inline-flex shrink-0",title:"Cached tokens dropped vs the previous request for this prompt (prompt cache miss)","aria-label":"Cached tokens dropped vs the previous request for this prompt (prompt cache miss)"},Ap={key:1,class:"text-neutral-400"},Ep=["title"],Lp={class:"min-w-0 overflow-hidden text-ellipsis whitespace-nowrap"},Rp={key:0,class:"text-emerald-600 dark:text-emerald-400",title:"Programmatically called with state.queueTool()"},Mp={key:1},Dp={key:2},Fp={key:0,class:"shrink-0 rounded border border-neutral-200 bg-neutral-50 px-1 py-px text-[10px] font-medium text-neutral-500 dark:border-neutral-800 dark:bg-neutral-900 dark:text-neutral-400"},Pp=et({__name:"LogsTable",props:{logs:{},hasMore:{type:Boolean},isLoadingMore:{type:Boolean},isLoadingForLog:{type:Boolean},autoLoadEnabled:{type:Boolean},detailsOpen:{type:Boolean},selectedLogIdForDetails:{},selectedLogId:{},hoveredLogId:{},cacheDecreasedLogIds:{}},emits:["loadMore","selectLog","navigateLog","logHover","rowRef"],setup(e,{emit:o}){const a=e;function l(P){return P.error_type==="user_interrupted"?!0:!P.error_type&&/interrupted by user|stopped by user/i.test(P.error??"")}const s=o,i=g(null),h=g(0),u=g(null);let I=null,S=!1;const $=()=>{I?.disconnect(),I=null,S=!1;const P=u.value;if(!P||typeof IntersectionObserver>"u")return;const R=P.closest(".logs-list-container");R&&(I=new IntersectionObserver(W=>{S=W.some(q=>q.isIntersecting),S&&a.autoLoadEnabled&&!a.isLoadingMore&&s("loadMore")},{root:R,threshold:0}),I.observe(P))};be(u,()=>$()),be(()=>a.isLoadingMore,async(P,R)=>{!R||P||(await Xe(),S&&a.hasMore&&a.autoLoadEnabled&&s("loadMore"))}),wt(()=>{I?.disconnect(),I=null});let m=null,y=null;const E=new Map,C=P=>{if(!P)return[];try{const R=JSON.parse(P);return Array.isArray(R)?R:[]}catch{return[]}},V=P=>[...C(P.tools_called).map(R=>({name:R,isProgrammatic:!1})),...C(P.provider_tools).map(R=>({name:R.name||R.type||"provider_tool",isProgrammatic:!1})),...C(P.queued_tools).map(R=>({name:R.function?.name||"unknown",isProgrammatic:!0}))],H=P=>P==null?"—":`$${P.toFixed(6)}`,J=P=>P.map(R=>R.name).join(", "),oe=()=>y||(typeof document>"u"?null:(y=document.createElement("canvas").getContext("2d"),y&&(y.font="12px ui-sans-serif, system-ui, sans-serif"),y)),X=P=>{const R=E.get(P);if(R!==void 0)return R;const q=oe()?.measureText(P).width??P.length*7;return E.set(P,q),q},ne=(P,R)=>{const W=X(J(P)),q=P.filter(te=>te.isProgrammatic).length*14,we=R>0?X(`+${R} more`)+18:0,Pe=R>0?6:0;return W+q+we+Pe},ue=P=>{const R=J(P);if(P.length<=1)return{tools:P,hiddenCount:0,title:R};const W=h.value-24;if(W<=0)return{tools:P.slice(0,1),hiddenCount:P.length-1,title:R};for(let q=P.length;q>0;q-=1){const we=P.slice(0,q),Pe=P.length-q;if(ne(we,Pe)<=W)return{tools:we,hiddenCount:Pe,title:R}}return{tools:P.slice(0,1),hiddenCount:P.length-1,title:R}},K=()=>{h.value=i.value?.clientWidth??0};return It(async()=>{await Xe(),K(),typeof ResizeObserver<"u"&&i.value&&(m=new ResizeObserver(K),m.observe(i.value))}),wt(()=>{m?.disconnect(),m=null}),(P,R)=>(t(),r("div",dp,[e.hasMore?(t(),r("div",{key:0,ref_key:"loadOlderSentinelRef",ref:u,class:"border-b border-neutral-200 dark:border-neutral-800"},[n("button",{onClick:R[0]||(R[0]=W=>s("loadMore")),disabled:e.isLoadingMore||e.isLoadingForLog,type:"button",class:"w-full px-3 py-2 text-xs font-medium text-neutral-500 dark:text-neutral-400 hover:bg-neutral-100 dark:hover:bg-neutral-900 transition-colors disabled:cursor-not-allowed flex items-center justify-center gap-2"},[e.isLoadingMore||e.isLoadingForLog?(t(),j(Ze,{key:0,size:"xs"})):b("",!0),e.isLoadingForLog?(t(),r("span",cp,"Loading to find log...")):e.isLoadingMore?(t(),r("span",fp,"Loading older logs...")):(t(),r("span",pp,"Load older logs"))],8,up)],512)):b("",!0),n("div",vp,[n("div",hp,[R[2]||(R[2]=n("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Prompt ",-1)),R[3]||(R[3]=n("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Model ",-1)),R[4]||(R[4]=n("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Cost ",-1)),n("div",{ref_key:"toolsHeaderRef",ref:i,role:"columnheader",class:"min-w-0 whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Tools Called ",512),R[5]||(R[5]=n("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-right text-xs font-semibold"}," Called At ",-1))]),(t(!0),r(Ae,null,We(e.logs,W=>(t(),r("div",{key:W.id,ref_for:!0,ref:q=>s("rowRef",W.id,q),role:"row",tabindex:"0","aria-selected":e.selectedLogIdForDetails===W.id,class:G(["logs-grid-row logs-row logs-row-divider group relative cursor-pointer border-b transition-colors",{"last:border-b-0":e.detailsOpen,"logs-row-error":W.error&&!l(W),"logs-row-selected":e.selectedLogIdForDetails===W.id,"agents-surface-selected agents-text-selected agents-border-selected":e.selectedLogIdForDetails===W.id,"agents-surface-hover":e.selectedLogIdForDetails!==W.id&&(W.id===a.selectedLogId||W.id===a.hoveredLogId)}]),onClick:q=>s("selectLog",W),onKeydown:q=>s("navigateLog",q,W),onMouseenter:q=>s("logHover",W.id),onMouseleave:R[1]||(R[1]=q=>s("logHover",null))},[n("div",gp,[n("div",xp,[W.depth>0?(t(),r("span",bp,"└─")):b("",!0),W.retry_of_log_id?(t(),j(c(Br),{key:1,size:14,class:"text-neutral-500 dark:text-neutral-400 flex-shrink-0"})):b("",!0),!W.is_complete&&!W.prompt_name?(t(),j(Ze,{key:2,size:"xs"})):(t(),r("span",yp,p(W.prompt_name||"—"),1))])]),n("div",kp,[n("div",_p,[l(W)?(t(),r("span",wp,[B(c(Or),{size:12,class:"mt-0.5"})])):W.error?(t(),r("span",$p," ✕ ")):b("",!0),n("span",Cp,p(W.model_name||W.model),1)])]),n("div",Sp,[!W.is_complete&&(W.cost_total===null||W.cost_total===void 0)?(t(),j(Ze,{key:0,size:"xs"})):(t(),r("span",Tp,[rt(p(H(W.cost_total))+" ",1),e.cacheDecreasedLogIds?.has(W.id)?(t(),r("span",Ip,[B(c(Vr),{size:12,class:"text-amber-500 dark:text-amber-400"})])):b("",!0)]))]),n("div",{role:"cell",class:G(["min-w-0 overflow-hidden whitespace-nowrap px-3 py-2 text-xs",e.selectedLogIdForDetails===W.id?"text-neutral-800 dark:text-neutral-100":"text-neutral-600 dark:text-neutral-400"])},[!W.is_complete&&V(W).length===0?(t(),j(Ze,{key:0,size:"xs"})):V(W).length===0?(t(),r("span",Ap,"—")):(t(),r("span",{key:2,class:"flex min-w-0 items-center gap-1.5",title:ue(V(W)).title},[n("span",Lp,[(t(!0),r(Ae,null,We(ue(V(W)).tools,(q,we)=>(t(),r(Ae,{key:we},[q.isProgrammatic?(t(),r("span",Rp,[B(c(qr),{size:11,class:"inline-block -mt-0.5 mr-0.5"}),rt(p(q.name),1)])):(t(),r("span",Mp,p(q.name),1)),we<ue(V(W)).tools.length-1?(t(),r("span",Dp,", ")):b("",!0)],64))),128))]),ue(V(W)).hiddenCount>0?(t(),r("span",Fp," +"+p(ue(V(W)).hiddenCount)+" more ",1)):b("",!0)],8,Ep))],2),n("div",{role:"cell",class:G(["whitespace-nowrap px-3 py-2 text-right text-xs",e.selectedLogIdForDetails===W.id?"text-neutral-800 dark:text-neutral-100":"text-neutral-500 dark:text-neutral-500"])},[B(Ln,{timestamp:W.created_at},null,8,["timestamp"])],2)],42,mp))),128))])]))}}),Np=vt(Pp,[["__scopeId","data-v-80903677"]]),zp={key:0,class:"text-neutral-500 dark:text-neutral-400 text-center py-12"},jp={key:1,class:"flex justify-center py-12"},Bp={key:2,class:"text-red-600 dark:text-red-400 text-center py-12"},Op={key:3,class:"text-neutral-500 dark:text-neutral-400 text-center py-12"},Vp={key:0,class:"flex h-full flex-col items-center justify-center gap-3 text-neutral-500 dark:text-neutral-400"},qp={key:2,class:"absolute inset-0 flex items-center justify-center bg-white/20 pointer-events-none dark:bg-black/20"},Pa=20,Up=20,Na="agentbuilder.threads.logDetailsSplitPercent",za=50,Hp=600,Wp=et({__name:"LogsPane",props:{threadId:{},selectedLogId:{},hoveredLogId:{}},emits:["logClick","logHover","logsLoaded","effectClick"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g(0),h=g(Pa),{logs:u,hasMore:I,isFetching:S,error:$,connectWebSocket:m,disconnectWebSocket:y,refetch:E}=ju(T(()=>l.threadId),{limit:T(()=>h.value),offset:T(()=>i.value),enableWebSocket:!0,order:"desc"}),C=g([]),V=g(!0),H=g(null),J=g(null),oe=g(null),X=g(!1),ne=g(!1);let ue=null;const K=g(new Map),W=g(((D,xe,je)=>Math.min(je,Math.max(xe,D)))(((D,xe)=>{if(typeof window>"u")return xe;const je=window.localStorage.getItem(D),M=je?Number.parseFloat(je):Number.NaN;return Number.isFinite(M)?M:xe})(Na,55),35,70)),q=async()=>{await Xe(),J.value&&(tt(),J.value.scrollTop=J.value.scrollHeight)},we=()=>{const D=J.value;D&&(X.value||ue||(tt(),D.scrollTop=D.scrollHeight))};let Pe=null;const te=()=>{Pe?.disconnect(),!(typeof ResizeObserver>"u")&&Pe&&(J.value&&Pe.observe(J.value),oe.value&&Pe.observe(oe.value))};It(()=>{typeof ResizeObserver<"u"&&(Pe=new ResizeObserver(()=>we()),te())}),be([J,oe],()=>te()),wt(()=>{Pe?.disconnect(),Pe=null});const qe=g(null);be(u,async D=>{if(i.value===0){const xe=C.value.length;C.value=[...D].reverse(),V.value&&C.value.length>0?(await q(),V.value=!1):!X.value&&C.value.length>xe&&await q()}else{const xe=[...D].reverse(),je=new Map,M=C.value[0]?.created_at??Number.POSITIVE_INFINITY;C.value.forEach(de=>je.set(de.id,de)),xe.forEach(de=>je.set(de.id,de));const N=Array.from(je.values()).sort((de,Be)=>de.created_at-Be.created_at),Ne=N.filter(de=>de.created_at<M).length;if(C.value=N,ue&&Ne>0){const de=ue;ue=null,await Xe();const Be=J.value;Be&&(tt(),Be.scrollTop=de.scrollTop+(Be.scrollHeight-de.scrollHeight)),ne.value=!1}}},{deep:!0,immediate:!0}),be(S,(D,xe)=>{if(xe&&!D&&i.value===0&&l.threadId&&qe.value!==l.threadId&&C.value.length>0){qe.value=l.threadId;const je=C.value[C.value.length-1];s("logsLoaded",je?.id??null)}});const{logDetails:z,isFetching:he,refetch:ke}=Ou(T(()=>l.threadId),T(()=>H.value)),Ee=D=>({endpoint:null,request_body:null,request_headers:null,response_body:null,response_headers:null,status_code:null,reasoning_content:null,input_tokens:null,cached_tokens:null,output_tokens:null,reasoning_tokens:null,total_tokens:null,latency_ms:null,time_to_first_token_ms:null,generation_ms:null,finish_reason:null,error_type:null,cost_input:null,cost_cached:null,cost_output:null,cost_router_fee:null,router_fee_percent:null,message_history_length:null,tools_available:null,tools_schema:null,message_history:null,system_prompt:null,errors:null,tool_results:null,scheduled_effects:null,source_message_role:null,source_message_content:null,source_message_created_at:null,source_message_metadata:null,...D}),_e=T(()=>H.value?C.value.find(D=>D.id===H.value)??null:null),me=T(()=>{const D=_e.value;return D?z.value?{...z.value,...D}:Ee(D):null});be(()=>({id:_e.value?.id??null,isComplete:_e.value?.is_complete??!1}),(D,xe)=>{!D.id||!D.isComplete||xe?.id!==D.id||xe.isComplete||ke()});const Se=g(null);be(me,D=>{D?Se.value=D:H.value||(Se.value=null)},{immediate:!0});const Ie=T(()=>H.value?pe.value.findIndex(D=>D.id===H.value):-1),re=T(()=>Ie.value>0),Z=T(()=>Ie.value>=0&&Ie.value<pe.value.length-1),Q=()=>{if(re.value){const D=pe.value[Ie.value-1];F(D)}},ce=()=>{if(Z.value){const D=pe.value[Ie.value+1];F(D)}},fe=async D=>{await Xe(),K.value.get(D)?.focus({preventScroll:!0})},De=(D,xe)=>{const je=pe.value.findIndex(Ne=>Ne.id===xe.id);if(je<0)return;let M=je;if(D.key==="ArrowDown")M=Math.min(pe.value.length-1,je+1);else if(D.key==="ArrowUp")M=Math.max(0,je-1);else if(D.key==="Home")M=0;else if(D.key==="End")M=pe.value.length-1;else return;D.preventDefault();const N=pe.value[M];N&&(F(N),fe(N.id))},Ye=D=>{if(!J.value)return;const xe=K.value.get(D);if(!xe)return;const je=J.value,M=xe.getBoundingClientRect(),N=je.getBoundingClientRect(),Ne=je.querySelectorAll(".sticky");let de=0;Ne.forEach(d=>{de+=d.getBoundingClientRect().height}),de+=16;const Be=M.top<N.top+de,ut=M.bottom>N.bottom;Be?(tt(),je.scrollBy({top:M.top-N.top-de,behavior:"smooth"})):ut&&(tt(),je.scrollBy({top:M.bottom-N.bottom,behavior:"smooth"}))},F=D=>{s("logClick",D.id),H.value=D.id;const xe=C.value[C.value.length-1];xe&&xe.id!==D.id&&(X.value=!0)},$e=(D,xe)=>{xe?K.value.set(D,xe):K.value.delete(D)},ye=(D,xe)=>{$e(D,xe instanceof HTMLElement?xe:null)};be(H,async D=>{D&&(await Xe(),Ye(D))}),be(()=>l.selectedLogId,D=>{D&&(H.value=D)},{immediate:!0});const Le=D=>{H.value=D},Ve=async D=>{await Xe();const xe=K.value.get(D);if(xe&&J.value){const je=J.value,M=xe.getBoundingClientRect(),N=je.getBoundingClientRect(),Ne=je.querySelector("thead"),de=je.querySelector(":scope > div > div.sticky");let Be=0;Ne&&(Be+=Ne.getBoundingClientRect().height),de&&(Be+=de.getBoundingClientRect().height),Be+=40;const ut=M.top<N.top+Be,d=M.bottom>N.bottom;ut?(tt(),je.scrollBy({top:M.top-N.top-Be,behavior:"smooth"})):d&&(tt(),je.scrollBy({top:M.bottom-N.bottom,behavior:"smooth"}))}},He=D=>{if(D.length===0)return;const xe=new Set(D);C.value=C.value.filter(je=>!xe.has(je.id))},le=g(!1),ie=D=>C.value.some(xe=>xe.id===D),ae=D=>C.value.find(xe=>xe.id===D)??null,Re=(D,xe=3e3)=>new Promise(je=>{const M=be(()=>C.value.length,Ne=>{Ne!==D&&(clearTimeout(N),M(),je(!0))}),N=setTimeout(()=>{M(),je(!1)},xe)});o({scrollToLog:Ve,selectLogById:Le,removeLogsByIds:He,loadUntilLogId:async D=>{if(ie(D))return!0;if(!I.value)return!1;le.value=!0;const xe=100,je=50,M=h.value;try{let N=0;for(;I.value&&!ie(D)&&N<je;){N++;const Ne=C.value.length;if(i.value+=h.value,h.value=xe,await E(),!await Re(Ne))break}return ie(D)}finally{h.value=M,i.value=Math.max(0,C.value.length-M),le.value=!1}},hasLog:ie,getLog:ae,setLoadingForLog:D=>{le.value=D},waitForLogRow:async(D,xe=2e3)=>{const je=Date.now();for(;Date.now()-je<xe;){if(K.value.has(D))return!0;if(!pe.value.some(N=>N.id===D)){await Xe(),await new Promise(N=>setTimeout(N,16));continue}await Xe(),await new Promise(N=>setTimeout(N,16))}return!1}});const se=()=>{if(ne.value||!I.value||S.value)return;ne.value=!0;const D=J.value;ue={scrollHeight:D?.scrollHeight??0,scrollTop:D?.scrollTop??0},i.value+=h.value,h.value=Up};be(S,(D,xe)=>{xe&&!D&&ne.value&&setTimeout(()=>{ue&&(ue=null,ne.value=!1)},300)}),be(()=>l.threadId,async D=>{D?(y(),m()):y(),i.value=0,h.value=Pa,C.value=[],H.value=null,X.value=!1,V.value=!0,ue=null,ne.value=!1},{immediate:!0});let Ue=0;const tt=()=>{Ue=Date.now()},nt=D=>D.scrollHeight-D.scrollTop-D.clientHeight,ge=()=>{const D=J.value;if(D){if(nt(D)<za){X.value=!1;return}Date.now()-Ue>Hp&&(X.value=!0)}},O=D=>{D.deltaY<0&&(X.value=!0)},ee=()=>{const D=J.value;D&&nt(D)>=za&&(X.value=!0)},Oe=T(()=>Vu(C.value)),pe=T(()=>{const D=new Map,xe=new Map;C.value.forEach(N=>{D.set(N.id,N);const Ne=N.parent_log_id;Ne&&(xe.has(Ne)||xe.set(Ne,[]),xe.get(Ne).push(N))});const je=[],M=(N,Ne)=>{je.push({...N,depth:Ne}),(xe.get(N.id)||[]).forEach(Be=>{M(Be,Ne+1)})};return C.value.forEach(N=>{N.parent_log_id||M(N,0)}),je});return(D,xe)=>(t(),j(Fn,{"height-percent":W.value,"onUpdate:heightPercent":xe[3]||(xe[3]=je=>W.value=je),"storage-key":Na,title:"Resize logs and details"},Ut({main:Fe(()=>[n("div",{ref_key:"logsScrollContainer",ref:J,class:"logs-list-container h-full overflow-y-auto overflow-x-auto",onScroll:ge,onWheelPassive:O,onTouchmovePassive:ee},[e.threadId?c(S)&&i.value===0?(t(),r("div",jp,[B(Ze)])):c($)?(t(),r("div",Bp," Error loading logs: "+p(c($)),1)):C.value.length===0?(t(),r("div",Op," No logs yet ")):(t(),r("div",{key:4,ref_key:"logsContentRef",ref:oe},[B(Np,{logs:pe.value,"has-more":c(I),"is-loading-more":ne.value,"is-loading-for-log":le.value,"auto-load-enabled":!V.value&&!le.value,"cache-decreased-log-ids":Oe.value,"details-open":!!me.value,"selected-log-id-for-details":H.value,"selected-log-id":l.selectedLogId,"hovered-log-id":l.hoveredLogId,onLoadMore:se,onSelectLog:F,onNavigateLog:De,onLogHover:xe[0]||(xe[0]=je=>s("logHover",je)),onRowRef:ye},null,8,["logs","has-more","is-loading-more","is-loading-for-log","auto-load-enabled","cache-decreased-log-ids","details-open","selected-log-id-for-details","selected-log-id","hovered-log-id"])],512)):(t(),r("div",zp," Select a thread to view logs "))],544)]),_:2},[Se.value||le.value&&H.value?{name:"detail",fn:Fe(()=>[le.value&&!me.value?(t(),r("div",Vp,[B(Ze),xe[4]||(xe[4]=n("span",{class:"text-sm"},"Loading log...",-1))])):Se.value?(t(),j(ip,{key:1,log:Se.value,"thread-id":e.threadId,"has-previous":re.value,"has-next":Z.value,onClose:xe[1]||(xe[1]=je=>H.value=null),onPrevious:Q,onNext:ce,onEffectClick:xe[2]||(xe[2]=je=>s("effectClick",je))},null,8,["log","thread-id","has-previous","has-next"])):b("",!0),c(he)&&Se.value?(t(),r("div",qp,[B(Ze)])):b("",!0)]),key:"0"}:void 0]),1032,["height-percent"]))}}),Kp=vt(Wp,[["__scopeId","data-v-b7b53e83"]]),Jp={class:"code-editor flex min-h-0 flex-col"},Gp={key:0,class:"mt-1 text-sm text-red-500"},Yp=et({__name:"CodeEditor",props:{modelValue:{},language:{default:"plaintext"},readonly:{type:Boolean,default:!1},error:{default:null},rows:{},height:{},placeholder:{},minimap:{type:Boolean,default:!1},lineNumbers:{default:"on"},wordWrap:{default:"off"},formatOnBlur:{type:Boolean,default:!1},framed:{type:Boolean,default:!0}},emits:["update:modelValue","blur"],setup(e,{emit:o}){self.MonacoEnvironment={getWorker(X,ne){return ne==="json"?new ys:ne==="css"||ne==="scss"||ne==="less"?new ks:ne==="html"||ne==="handlebars"||ne==="razor"?new _s:ne==="typescript"||ne==="javascript"?new ws:new $s}};const a=e,l=o,s={bash:"shell",js:"javascript",md:"markdown",sh:"shell",text:"plaintext",ts:"typescript",txt:"plaintext"},i=g(null);let h=null,u=null,I=!1,S=!1;const $=T(()=>{const X=a.language?.trim().toLowerCase()||"plaintext";return s[X]??X}),m=T(()=>a.height?a.height:a.rows?`${a.rows*1.5}rem`:"100%"),y=()=>document.documentElement.classList.contains("dark"),E=()=>{S||(S=!0,rn.defineTheme("agentbuilder-light",{base:"vs",inherit:!0,rules:[{token:"comment",foreground:"6A737D",fontStyle:"italic"},{token:"keyword",foreground:"D73A49"},{token:"number",foreground:"005CC5"},{token:"regexp",foreground:"032F62"},{token:"string",foreground:"22863A"},{token:"type",foreground:"6F42C1"},{token:"delimiter",foreground:"24292F"},{token:"identifier",foreground:"24292F"},{token:"tag",foreground:"22863A"},{token:"attribute.name",foreground:"6F42C1"}],colors:{"editor.background":"#FFFFFF","editor.foreground":"#24292F","editorCursor.foreground":"#0969DA","editorIndentGuide.activeBackground1":"#8C959F","editorIndentGuide.background1":"#D0D7DE","editorLineNumber.activeForeground":"#0969DA","editorLineNumber.foreground":"#6E7781","editor.lineHighlightBackground":"#F6F8FA","editor.selectionBackground":"#0969DA33","editor.inactiveSelectionBackground":"#AFD0F366"}}),rn.defineTheme("agentbuilder-dark",{base:"vs-dark",inherit:!0,rules:[{token:"comment",foreground:"8B949E",fontStyle:"italic"},{token:"keyword",foreground:"FF7B72"},{token:"number",foreground:"79C0FF"},{token:"regexp",foreground:"A5D6FF"},{token:"string",foreground:"A5D6FF"},{token:"type",foreground:"D2A8FF"},{token:"delimiter",foreground:"C9D1D9"},{token:"identifier",foreground:"C9D1D9"},{token:"tag",foreground:"7EE787"},{token:"attribute.name",foreground:"D2A8FF"}],colors:{"editor.background":"#0D1117","editor.foreground":"#C9D1D9","editorCursor.foreground":"#58A6FF","editorIndentGuide.activeBackground1":"#6E7681","editorIndentGuide.background1":"#30363D","editorLineNumber.activeForeground":"#58A6FF","editorLineNumber.foreground":"#6E7681","editor.lineHighlightBackground":"#161B22","editor.selectionBackground":"#1F6FEB55","editor.inactiveSelectionBackground":"#1F6FEB33"}}))},C=()=>y()?"agentbuilder-dark":"agentbuilder-light",V=()=>({acceptSuggestionOnCommitCharacter:!0,automaticLayout:!0,bracketPairColorization:{enabled:!0},cursorBlinking:"smooth",detectIndentation:!1,fixedOverflowWidgets:!0,folding:!0,fontFamily:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace',fontSize:13,formatOnPaste:!0,formatOnType:!0,glyphMargin:!1,lineDecorationsWidth:8,lineHeight:21,lineNumbers:a.lineNumbers,lineNumbersMinChars:3,minimap:{enabled:a.minimap},padding:{top:10,bottom:10},placeholder:a.placeholder,quickSuggestions:{comments:"off",other:"on",strings:"on"},readOnly:a.readonly,renderLineHighlight:"line",scrollBeyondLastLine:!1,scrollbar:{horizontal:"auto",horizontalScrollbarSize:10,vertical:"auto",verticalScrollbarSize:10},smoothScrolling:!0,tabSize:2,wordWrap:a.wordWrap}),H=()=>{h&&rn.setTheme(C())},J=()=>{if(!(!h||a.readonly||$.value!=="json"))try{const X=h.getValue(),ne=JSON.stringify(JSON.parse(X),null,2);ne!==X&&(I=!0,h.setValue(ne),l("update:modelValue",ne),I=!1)}catch{}},oe=()=>{i.value&&(E(),h=rn.create(i.value,{value:a.modelValue||"",language:$.value,theme:C(),...V()}),i.value.__monacoEditor=h,h.onDidChangeModelContent(()=>{!I&&h&&l("update:modelValue",h.getValue())}),h.onDidBlurEditorText(()=>{l("blur"),a.formatOnBlur&&J()}))};return It(async()=>{await Xe(),oe(),u=new MutationObserver(H),u.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]})}),Kt(()=>{u?.disconnect(),u=null,i.value&&delete i.value.__monacoEditor,h?.dispose(),h=null}),be(()=>a.modelValue,X=>{h&&h.getValue()!==X&&(I=!0,h.setValue(X||""),I=!1)}),be($,X=>{const ne=h?.getModel();ne&&rn.setModelLanguage(ne,X)}),be(()=>[a.readonly,a.minimap,a.lineNumbers,a.wordWrap,a.placeholder,a.framed],()=>{h?.updateOptions(V())}),(X,ne)=>(t(),r("div",Jp,[n("div",{class:G(["min-h-0 flex-1 overflow-hidden bg-white dark:bg-neutral-950",[e.framed?"rounded border":"",e.framed&&e.error?"border-red-500":"",e.framed&&!e.error?"border-neutral-200 dark:border-neutral-800":""]]),style:gt({height:m.value})},[n("div",{ref_key:"containerRef",ref:i,class:"monaco-editor-container h-full w-full"},null,512)],6),e.error?(t(),r("div",Gp,p(e.error),1)):b("",!0)]))}}),ca=vt(Yp,[["__scopeId","data-v-12a765de"]]),Qp={class:"h-full min-h-0 overflow-hidden"},Xp={class:"flex h-full min-h-0 flex-col overflow-hidden"},Zp={class:"flex items-center gap-2 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},ev={class:"flex min-w-0 flex-1 items-center gap-2"},tv={class:"hidden shrink-0 text-xs tabular-nums text-neutral-500 sm:block"},nv=["disabled"],av={class:"min-h-0 flex-1 overflow-auto"},rv={key:0,class:"py-12 text-center text-sm text-neutral-500"},sv={key:1,class:"flex justify-center py-12"},ov={key:2,class:"py-12 text-center text-sm text-red-600 dark:text-red-400"},lv={key:3,class:"py-12 text-center text-sm text-neutral-500"},iv={key:4,class:"flex h-full min-h-0 flex-col"},dv={key:0,class:"border-b border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700 dark:border-red-900/70 dark:bg-red-950/30 dark:text-red-300"},uv={class:"min-h-0 flex-1 overflow-auto bg-white dark:bg-neutral-950"},cv={class:"w-full min-w-[70rem] table-fixed text-left text-xs"},fv={class:"divide-y divide-neutral-100 dark:divide-neutral-900"},pv={key:0,class:"text-[10px] font-semibold uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},vv={scope:"rowgroup",colspan:"8",class:"sticky top-[28px] z-[9] border-y border-neutral-200 bg-neutral-50/95 px-4 py-2 text-left font-semibold dark:border-neutral-800 dark:bg-neutral-900/95"},hv={class:"ml-1 rounded bg-neutral-200 px-1.5 py-0.5 text-[9px] text-neutral-600 dark:bg-neutral-800 dark:text-neutral-300"},mv=["aria-selected","onClick","onKeydown"],gv={class:"whitespace-nowrap px-4 py-2 align-middle"},xv={class:"flex items-center gap-1.5"},bv=["disabled","title","aria-label","onClick"],yv=["disabled","title","aria-label","onClick"],kv={key:2,class:"px-2 text-neutral-300 dark:text-neutral-700"},_v={class:"whitespace-nowrap px-4 py-2 align-middle"},wv={class:"min-w-0 px-3 py-2 align-middle"},$v={class:"truncate font-mono text-xs text-neutral-950 dark:text-neutral-100"},Cv=["title"],Sv={key:0,class:"mt-0.5 truncate text-[11px] font-medium text-neutral-500 dark:text-neutral-400"},Tv={key:1,class:"mt-1 inline-flex max-w-full items-center gap-1 rounded border border-accent-200/80 bg-accent-50/70 px-1.5 py-0.5 text-[10px] font-medium leading-none text-accent-700 dark:border-accent-900/70 dark:bg-accent-950/25 dark:text-accent-300"},Iv={class:"truncate"},Av={class:"whitespace-nowrap px-3 py-2 align-middle text-xs text-neutral-500 dark:text-neutral-400"},Ev={class:"whitespace-nowrap px-3 py-2 align-middle"},Lv={class:"text-xs font-medium text-neutral-800 dark:text-neutral-100"},Rv={key:0,class:"text-[11px] text-neutral-400"},Mv={class:"whitespace-nowrap px-3 py-2 align-middle text-xs text-neutral-500 dark:text-neutral-400"},Dv={class:"whitespace-nowrap px-3 py-2 text-right align-middle text-xs tabular-nums text-neutral-500"},Fv={class:"min-w-0 px-4 py-2 align-middle"},Pv=["title"],Nv={key:0,class:"mt-0.5 truncate text-[11px] text-red-600 dark:text-red-400"},zv=["disabled"],jv={class:"flex h-full min-h-0 flex-col overflow-hidden"},Bv={class:"flex items-center gap-3 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},Ov={class:"min-w-0 flex-1"},Vv={class:"truncate font-mono text-sm font-medium text-neutral-950 dark:text-neutral-100"},qv={class:"truncate text-[11px] text-neutral-500"},Uv={key:0,class:"mt-0.5 text-[11px] font-medium text-neutral-500 dark:text-neutral-400"},Hv={class:"flex shrink-0 items-center gap-2"},Wv=["disabled","title","aria-label"],Kv=["disabled","title","aria-label"],Jv={class:"grid shrink-0 grid-cols-2 gap-x-4 gap-y-2 border-b border-neutral-200 px-3 py-3 text-xs dark:border-neutral-800"},Gv={class:"mt-0.5 text-neutral-900 dark:text-neutral-100"},Yv={class:"mt-0.5 text-neutral-900 dark:text-neutral-100"},Qv={class:"mt-0.5 text-neutral-900 dark:text-neutral-100"},Xv={class:"mt-0.5 tabular-nums text-neutral-900 dark:text-neutral-100"},Zv={class:"mt-0.5"},eh={key:0,class:"inline-flex items-center gap-1 rounded border border-accent-200/80 bg-accent-50/80 px-1.5 py-0.5 text-[10px] font-medium text-accent-700 dark:border-accent-900/70 dark:bg-accent-950/30 dark:text-accent-300"},th={key:1,class:"text-neutral-900 dark:text-neutral-100"},nh={key:0,class:"mt-0.5 text-[11px] text-neutral-500 dark:text-neutral-400"},ah={key:0},rh={class:"mt-0.5 inline-flex max-w-full items-center gap-1 rounded border border-accent-200/80 bg-accent-50/70 px-1.5 py-0.5 text-[10px] font-medium text-accent-700 dark:border-accent-900/70 dark:bg-accent-950/25 dark:text-accent-300"},sh={class:"truncate font-mono"},oh={key:0,class:"border-b border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700 dark:border-red-900/70 dark:bg-red-950/30 dark:text-red-300"},lh={class:"flex min-h-0 flex-1 flex-col overflow-hidden"},ih={class:"flex items-start gap-2"},dh={class:"min-w-0"},uh={class:"font-medium text-neutral-950 dark:text-neutral-100"},ch={class:"mt-1 text-neutral-500 dark:text-neutral-400"},fh={class:"mt-1 truncate text-neutral-500 dark:text-neutral-400"},ph={class:"font-mono text-neutral-700 dark:text-neutral-200"},vh={class:"mt-1 truncate font-mono text-[11px] text-neutral-400"},hh={class:"mt-3 flex justify-end gap-2"},ja=100,mh=2500,gh="agentbuilder.threads.effectDetailSplitPercent",xh=260,bh=et({__name:"ThreadEffectsPane",props:{threadId:{},active:{type:Boolean,default:!0},selectedEffectId:{},selectedEffectRef:{}},emits:["count-changed"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g([]),h=g(0),u=g(0),I=g(!1),S=g(!1),$=g(null),m=g(null),y=g(Date.now()),E=g(null),C=g(50),V=g(new Map),H=g(null),J=g(null),oe=g(null),X=g("run"),ne=g(null),ue=g(null);let K=null,P=!1,R=0;const W=T(()=>i.value.length<h.value),q=T(()=>i.value.filter(Qt)),we=T(()=>i.value.filter(d=>!Qt(d))),Pe=T(()=>{const d=[];return q.value.length>0&&(d.push({type:"section",key:"section-upcoming",label:"Upcoming",count:q.value.length}),d.push(...q.value.map(f=>({type:"effect",key:f.id,effect:f})))),we.value.length>0&&(d.push({type:"section",key:"section-history",label:"History",count:we.value.length}),d.push(...we.value.map(f=>({type:"effect",key:f.id,effect:f})))),d}),te=T(()=>E.value?i.value.find(d=>d.id===E.value)??null:null),qe=T(()=>oe.value?i.value.find(d=>d.id===oe.value)??null:null),z=T(()=>ue.value?{top:`${ue.value.top}px`,left:`${ue.value.left}px`}:{}),he=T(()=>!!te.value),ke=T(()=>te.value?La(te.value.args):"{}"),Ee=T(()=>{if(!l.threadId)return"";if(h.value===0)return"No effects";const d=Math.max(h.value-u.value,we.value.length);return`${u.value} upcoming | ${d} history | ${i.value.length} of ${h.value}`});function _e(){return!!l.threadId&&l.active!==!1&&!I.value&&!S.value&&!P&&(typeof document>"u"||document.visibilityState==="visible")}function me(d){const f=d?i.value.find(_=>_.id===d):null;if(f){E.value=f.id;return}if(d){E.value=d;return}E.value&&i.value.some(_=>_.id===E.value)||(E.value=i.value[0]?.id??null)}function Se(d){E.value=d.id}function Ie(d,f){f instanceof HTMLElement?V.value.set(d,f):V.value.delete(d)}async function re(d){await Xe(),V.value.get(d)?.focus({preventScroll:!0})}async function Z(d){await Xe();const f=V.value.get(d);f?.scrollIntoView({block:"nearest"}),f?.focus({preventScroll:!0})}async function Q(d){E.value=d,me(d),await Z(d)}async function ce(d){if(d.id){await Q(d.id);return}const f=i.value.find(_=>Ra(_,d));f&&await Q(f.id)}function fe(d){if(d.id)return me(d.id),!0;const f=i.value.find(_=>Ra(_,d));return f?(me(f.id),!0):!1}function De(d,f){const _=i.value.findIndex(ot=>ot.id===f.id);if(_<0)return;let ve=_;if(d.key==="ArrowDown")ve=Math.min(i.value.length-1,_+1);else if(d.key==="ArrowUp")ve=Math.max(0,_-1);else if(d.key==="Home")ve=0;else if(d.key==="End")ve=i.value.length-1;else return;d.preventDefault();const Me=i.value[ve];Me&&(Se(Me),re(Me.id))}function Ye(d){switch(d){case"pending":return"Pending";case"processing":return"Running";case"completed":return"Completed";case"failed":return"Failed";case"agent_canceled":case"user_canceled":return"Cancelled"}}function F(d){switch(d){case"pending":return"bg-sky-50 text-sky-700 dark:bg-sky-950/40 dark:text-sky-300";case"processing":return"bg-amber-50 text-amber-700 dark:bg-amber-950/40 dark:text-amber-300";case"completed":return"bg-emerald-50 text-emerald-700 dark:bg-emerald-950/40 dark:text-emerald-300";case"failed":return"bg-red-50 text-red-700 dark:bg-red-950/40 dark:text-red-300";case"agent_canceled":return"bg-neutral-100 text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300";case"user_canceled":return"bg-red-50 text-red-700 dark:bg-red-950/40 dark:text-red-300"}}function $e(d){return Qt(d)?uc(d.scheduledAt,y.value):Rt(d.scheduledAt)}function ye(d){return Qt(d)?Rt(d.scheduledAt):""}function Le(d){return d.status==="pending"?"Not run":d.status==="processing"?"Running":He(d)?"-":Rt(d.completedAt)}function Ve(d){return d.split("-")[0]||d}function He(d){return d.status==="agent_canceled"||d.status==="user_canceled"}function le(d){return d.status==="agent_canceled"?"agent cancelled":d.status==="user_canceled"?"user cancelled":""}function ie(d){return d.replayedFrom?"Manual rerun":d.manualRun?"Manual run":""}function ae(d){return d.replayedFrom?`Manual rerun of ${Ve(d.replayedFrom)}`:d.manualRun?"Manual run":""}function Re(d){return He(d)?"":dc(d)}function Ke(d){const f=Re(d);return f.startsWith("-")?"text-sky-700 dark:text-sky-300":f.startsWith("+")?"text-orange-700 dark:text-orange-300":"text-neutral-500 dark:text-neutral-400"}function U(d){return d.status==="pending"?(d.scheduledAt>9999999999?Math.floor(d.scheduledAt/1e3):d.scheduledAt)<=y.value?"Complete overdue effect":"Run scheduled effect now":d.status==="completed"||d.status==="failed"||He(d)?"Replay effect":"Effect is running"}function Ce(d){return d.status==="pending"?(d.scheduledAt>9999999999?Math.floor(d.scheduledAt/1e3):d.scheduledAt)<=y.value?"Complete":"Run now":d.status==="completed"||d.status==="failed"||He(d)?"Replay":"Run"}function se(d){return d.status==="pending"||d.status==="completed"||d.status==="failed"||He(d)}function Ue(d){return d.status==="pending"}function tt(d){return Ue(d)?"Cancel scheduled effect":"Effect cannot be cancelled"}function nt(d){return X.value==="cancel"?tt(d):U(d)}function ge(d){return X.value==="cancel"?"Cancel effect":Ce(d)}function O(d){return X.value==="cancel"?"This will keep the effect in history as user cancelled.":d.status==="pending"?"This will execute the scheduled effect now for this thread.":"This will create a new immediate run linked back to this effect."}function ee(d,f){return oe.value===d.id&&X.value===f}function Oe(d){const f=d.getBoundingClientRect(),_=8,ve=Math.min(Math.max(f.right+_,_),Math.max(_,window.innerWidth-xh-_)),Me=Math.min(Math.max(f.top-_,_),Math.max(_,window.innerHeight-160));ue.value={top:Me,left:ve}}function pe(d,f,_="run"){if(!(_==="cancel"?Ue(d):se(d))||H.value)return;const Me=f.currentTarget;Me instanceof HTMLElement&&(D(),oe.value=d.id,X.value=_,Oe(Me),document.addEventListener("pointerdown",xe),document.addEventListener("keydown",je),window.addEventListener("resize",D),window.addEventListener("scroll",D,!0))}function D(){oe.value=null,X.value="run",ue.value=null,document.removeEventListener("pointerdown",xe),document.removeEventListener("keydown",je),window.removeEventListener("resize",D),window.removeEventListener("scroll",D,!0)}function xe(d){const f=d.target;f instanceof Node&&(ne.value?.contains(f)||D())}function je(d){d.key==="Escape"&&D()}async function M(d){if(!(!l.threadId||!se(d)||H.value)){D(),$.value=null,H.value=d.id,J.value="run";try{const f=await fetch(Qe(`/api/threads/${l.threadId}/effects/${d.id}/run`),{method:"POST"});if(!f.ok)throw new Error(await de(f,"Failed to run effect"));await Be()}catch(f){$.value=f instanceof Error?f.message:"Failed to run effect",await Be({quiet:!0})}finally{H.value=null,J.value=null}}}async function N(d){if(!(!l.threadId||!Ue(d)||H.value)){D(),$.value=null,H.value=d.id,J.value="cancel";try{const f=await fetch(Qe(`/api/threads/${l.threadId}/effects/${d.id}/cancel`),{method:"POST"});if(!f.ok)throw new Error(await de(f,"Failed to cancel effect"));await Be()}catch(f){$.value=f instanceof Error?f.message:"Failed to cancel effect",await Be({quiet:!0})}finally{H.value=null,J.value=null}}}async function Ne(d){if(X.value==="cancel"){await N(d);return}await M(d)}async function de(d,f){try{const _=await d.json();return typeof _.error=="string"?_.error:f}catch{return f}}async function Be(d={}){if(!l.threadId){i.value=[],h.value=0,u.value=0,E.value=null;return}const f=++R,_=d.append===!0,ve=d.quiet===!0;ve&&(P=!0),ve||(_?S.value=!0:I.value=!0),ve||(m.value=null),ve||($.value=null);const Me=new URLSearchParams,ot=Math.min(Math.max(i.value.length,ja),200);Me.set("limit",String(_?ja:ot)),Me.set("offset",String(_?i.value.length:0));try{const it=await fetch(Qe(`/api/threads/${l.threadId}/effects?${Me}`));if(!it.ok)throw new Error(await de(it,"Failed to load effects"));const ht=lc(await it.json());if(f!==R)return;i.value=pc(_?[...i.value,...ht.effects]:ht.effects),h.value=ht.total,u.value=ht.upcomingCount,y.value=Date.now(),l.selectedEffectRef?!ve&&l.active!==!1?await ce(l.selectedEffectRef):fe(l.selectedEffectRef):me(l.selectedEffectId||E.value)}catch(it){f===R&&(!ve||i.value.length===0)&&(m.value=it instanceof Error?it.message:"Failed to load effects")}finally{ve&&(P=!1),f===R&&!ve&&(I.value=!1,S.value=!1)}}const ut=()=>{_e()&&Be({quiet:!0})};return be(()=>l.threadId,()=>{i.value=[],h.value=0,u.value=0,E.value=null,m.value=null,$.value=null,D(),Be()},{immediate:!0}),be(()=>l.selectedEffectId,d=>{d&&Q(d)}),be(()=>l.selectedEffectRef,d=>{d&&ce(d)}),be(u,d=>s("count-changed",d),{immediate:!0}),be(()=>l.threadId,()=>{K&&clearInterval(K),K=null,l.threadId&&(K=setInterval(()=>{l.active!==!1&&(y.value=Date.now(),_e()&&Be({quiet:!0}))},mh))},{immediate:!0}),be(()=>l.active,d=>{if(!d){D();return}_e()&&Be({quiet:i.value.length>0})}),typeof document<"u"&&document.addEventListener("visibilitychange",ut),wt(()=>{K&&clearInterval(K),D(),typeof document<"u"&&document.removeEventListener("visibilitychange",ut)}),o({selectEffectById:Q,selectEffectByReference:ce}),(d,f)=>(t(),r("div",Qp,[B(Fn,{"height-percent":C.value,"onUpdate:heightPercent":f[4]||(f[4]=_=>C.value=_),"storage-key":gh,title:"Resize effects browser and detail"},Ut({main:Fe(()=>[n("div",Xp,[n("div",Zp,[n("div",ev,[B(c(St),{size:15,class:"shrink-0 text-neutral-400"}),f[7]||(f[7]=n("div",{class:"truncate text-sm font-medium text-neutral-900 dark:text-neutral-100"}," Effects ",-1))]),n("div",tv,p(Ee.value),1),n("button",{type:"button",class:"inline-flex h-8 w-8 items-center justify-center rounded text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-950 disabled:opacity-50 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",disabled:!e.threadId||I.value,title:"Refresh effects","aria-label":"Refresh effects",onClick:f[0]||(f[0]=_=>Be())},[I.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(Dn),{key:1,size:15}))],8,nv)]),n("div",av,[e.threadId?I.value&&i.value.length===0?(t(),r("div",sv,[B(Ze)])):m.value?(t(),r("div",ov,p(m.value),1)):i.value.length===0?(t(),r("div",lv,[B(c(St),{class:"mx-auto mb-2 h-8 w-8 opacity-40"}),f[8]||(f[8]=rt(" No effects scheduled or completed ",-1))])):(t(),r("div",iv,[$.value?(t(),r("div",dv,p($.value),1)):b("",!0),n("div",uv,[n("table",cv,[f[9]||(f[9]=n("colgroup",null,[n("col",{class:"w-24"}),n("col",{class:"w-28"}),n("col",{class:"w-56"}),n("col",{class:"w-36"}),n("col",{class:"w-40"}),n("col",{class:"w-36"}),n("col",{class:"w-20"}),n("col")],-1)),f[10]||(f[10]=n("thead",{class:"sticky top-0 z-10 border-b border-neutral-200 bg-neutral-50 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:border-neutral-800 dark:bg-neutral-900/60 dark:text-neutral-400"},[n("tr",null,[n("th",{scope:"col",class:"px-4 py-2 font-medium"}," Actions "),n("th",{scope:"col",class:"px-4 py-2 font-medium"},"Status"),n("th",{scope:"col",class:"px-3 py-2 font-medium"},"Effect"),n("th",{scope:"col",class:"px-3 py-2 font-medium"},"Created"),n("th",{scope:"col",class:"px-3 py-2 font-medium"}," Scheduled "),n("th",{scope:"col",class:"px-3 py-2 font-medium"}," Completed "),n("th",{scope:"col",class:"px-3 py-2 text-right font-medium"}," Attempts "),n("th",{scope:"col",class:"px-4 py-2 font-medium"}," Arguments ")])],-1)),n("tbody",fv,[(t(!0),r(Ae,null,We(Pe.value,_=>(t(),r(Ae,{key:_.key},[_.type==="section"?(t(),r("tr",pv,[n("th",vv,[n("span",null,p(_.label),1),n("span",hv,p(_.count),1)])])):(t(),r("tr",{key:1,ref_for:!0,ref:ve=>Ie(_.effect.id,ve),tabindex:"0","aria-selected":E.value===_.effect.id,class:G(["cursor-pointer transition-colors focus:outline-none",E.value===_.effect.id?"agents-surface-selected":"hover:bg-neutral-50 dark:hover:bg-neutral-900"]),onClick:ve=>Se(_.effect),onKeydown:[Bt(Ge(ve=>Se(_.effect),["prevent"]),["enter"]),Bt(Ge(ve=>Se(_.effect),["prevent"]),["space"]),ve=>De(ve,_.effect)]},[n("td",gv,[n("div",xv,[se(_.effect)?(t(),r("button",{key:0,type:"button",class:G(["inline-flex h-7 w-7 items-center justify-center rounded border border-neutral-300 bg-white text-neutral-950 transition-colors hover:border-neutral-400 hover:bg-neutral-50 disabled:cursor-not-allowed disabled:text-neutral-400 disabled:opacity-70 dark:border-black dark:bg-black dark:text-white dark:hover:border-neutral-950 dark:hover:bg-neutral-950 dark:disabled:text-neutral-600",{"ring-2 ring-black/10 dark:ring-white/20":ee(_.effect,"run")}]),disabled:!se(_.effect)||!!H.value,title:U(_.effect),"aria-label":U(_.effect),onClick:Ge(ve=>pe(_.effect,ve,"run"),["stop"])},[H.value===_.effect.id&&J.value==="run"?(t(),j(Ze,{key:0,size:"xs"})):_.effect.status==="completed"||_.effect.status==="failed"||He(_.effect)?(t(),j(c(an),{key:1,size:14})):(t(),j(c(Xn),{key:2,size:14}))],10,bv)):b("",!0),Ue(_.effect)?(t(),r("button",{key:1,type:"button",class:G(["inline-flex h-7 w-7 items-center justify-center rounded border border-red-200 bg-red-50 text-red-700 transition-colors hover:border-red-300 hover:bg-red-100 disabled:cursor-not-allowed disabled:opacity-60 dark:border-red-950 dark:bg-red-950/30 dark:text-red-300 dark:hover:border-red-900 dark:hover:bg-red-950/50",{"ring-2 ring-red-500/20":ee(_.effect,"cancel")}]),disabled:!!H.value,title:tt(_.effect),"aria-label":tt(_.effect),onClick:Ge(ve=>pe(_.effect,ve,"cancel"),["stop"])},[H.value===_.effect.id&&J.value==="cancel"?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(Dt),{key:1,size:14}))],10,yv)):b("",!0),!se(_.effect)&&!Ue(_.effect)?(t(),r("span",kv," - ")):b("",!0)])]),n("td",_v,[n("span",{class:G(["inline-flex rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",F(_.effect.status)])},p(Ye(_.effect.status)),3)]),n("td",wv,[n("div",$v,p(_.effect.name),1),n("div",{class:"truncate text-[11px] text-neutral-400",title:_.effect.id},p(Ve(_.effect.id)),9,Cv),le(_.effect)?(t(),r("div",Sv,p(le(_.effect)),1)):b("",!0),ae(_.effect)?(t(),r("div",Tv,[_.effect.replayedFrom?(t(),j(c(an),{key:0,size:10,class:"shrink-0"})):(t(),j(c(St),{key:1,size:10,class:"shrink-0"})),n("span",Iv,p(ae(_.effect)),1)])):b("",!0)]),n("td",Av,p(c(Rt)(_.effect.createdAt)),1),n("td",Ev,[n("div",Lv,p($e(_.effect)),1),ye(_.effect)?(t(),r("div",Rv,p(ye(_.effect)),1)):b("",!0)]),n("td",Mv,[n("div",null,p(Le(_.effect)),1),Re(_.effect)?(t(),r("div",{key:0,class:G(["mt-0.5 text-[11px] font-medium",Ke(_.effect)])},p(Re(_.effect)),3)):b("",!0)]),n("td",Dv,p(_.effect.attempts),1),n("td",Fv,[n("div",{class:"truncate font-mono text-[11px] text-neutral-500 dark:text-neutral-400",title:c(La)(_.effect.args)},p(c(cc)(_.effect.args)),9,Pv),_.effect.error?(t(),r("div",Nv,p(_.effect.error),1)):b("",!0)])],42,mv))],64))),128))])])]),W.value?(t(),r("button",{key:1,type:"button",class:"m-3 flex items-center justify-center gap-2 rounded border border-neutral-200 px-3 py-2 text-sm font-medium text-neutral-600 transition-colors hover:bg-neutral-50 disabled:opacity-50 dark:border-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-900",disabled:S.value,onClick:f[1]||(f[1]=_=>Be({append:!0}))},[S.value?(t(),j(Ze,{key:0,size:"xs"})):b("",!0),f[11]||(f[11]=n("span",null,"Load more",-1))],8,zv)):b("",!0)])):(t(),r("div",rv," Select a thread to view effects "))])])]),_:2},[he.value&&te.value?{name:"detail",fn:Fe(()=>[n("div",jv,[n("div",Bv,[B(c(St),{size:15,class:"shrink-0 text-neutral-400"}),n("div",Ov,[n("div",Vv,p(te.value.name),1),n("div",qv,p(te.value.id),1),le(te.value)?(t(),r("div",Uv,p(le(te.value)),1)):b("",!0)]),n("span",{class:G(["shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",F(te.value.status)])},p(Ye(te.value.status)),3),n("div",Hv,[se(te.value)?(t(),r("button",{key:0,type:"button",class:G(["inline-flex h-8 shrink-0 items-center gap-1.5 rounded border border-neutral-300 bg-white px-2 text-xs font-medium text-neutral-950 transition-colors hover:border-neutral-400 hover:bg-neutral-50 disabled:cursor-not-allowed disabled:text-neutral-400 disabled:opacity-70 dark:border-black dark:bg-black dark:text-white dark:hover:border-neutral-950 dark:hover:bg-neutral-950 dark:disabled:text-neutral-600",{"ring-2 ring-black/10 dark:ring-white/20":ee(te.value,"run")}]),disabled:!se(te.value)||!!H.value,title:U(te.value),"aria-label":U(te.value),onClick:f[2]||(f[2]=Ge(_=>pe(te.value,_,"run"),["stop"]))},[H.value===te.value.id&&J.value==="run"?(t(),j(Ze,{key:0,size:"xs"})):te.value.status==="completed"||te.value.status==="failed"||He(te.value)?(t(),j(c(an),{key:1,size:14})):(t(),j(c(Xn),{key:2,size:14})),n("span",null,p(Ce(te.value)),1)],10,Wv)):b("",!0),Ue(te.value)?(t(),r("button",{key:1,type:"button",class:G(["inline-flex h-8 shrink-0 items-center gap-1.5 rounded border border-red-200 bg-red-50 px-2 text-xs font-medium text-red-700 transition-colors hover:border-red-300 hover:bg-red-100 disabled:cursor-not-allowed disabled:opacity-60 dark:border-red-950 dark:bg-red-950/30 dark:text-red-300 dark:hover:border-red-900 dark:hover:bg-red-950/50",{"ring-2 ring-red-500/20":ee(te.value,"cancel")}]),disabled:!!H.value,title:tt(te.value),"aria-label":tt(te.value),onClick:f[3]||(f[3]=Ge(_=>pe(te.value,_,"cancel"),["stop"]))},[H.value===te.value.id&&J.value==="cancel"?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(Dt),{key:1,size:14})),f[12]||(f[12]=n("span",null,"Cancel",-1))],10,Kv)):b("",!0)])]),n("div",Jv,[n("div",null,[f[13]||(f[13]=n("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Created ",-1)),n("div",Gv,p(c(Rt)(te.value.createdAt)),1)]),n("div",null,[f[14]||(f[14]=n("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Scheduled ",-1)),n("div",Yv,p(c(Rt)(te.value.scheduledAt)),1)]),n("div",null,[f[15]||(f[15]=n("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Completed ",-1)),n("div",Qv,p(Le(te.value)),1),Re(te.value)?(t(),r("div",{key:0,class:G(["mt-0.5 text-[11px] font-medium",Ke(te.value)])},p(Re(te.value)),3)):b("",!0)]),n("div",null,[f[16]||(f[16]=n("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Attempts ",-1)),n("div",Xv,p(te.value.attempts),1)]),n("div",null,[f[17]||(f[17]=n("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Source ",-1)),n("div",Zv,[ie(te.value)?(t(),r("span",eh,[te.value.replayedFrom?(t(),j(c(an),{key:0,size:10,class:"shrink-0"})):(t(),j(c(St),{key:1,size:10,class:"shrink-0"})),rt(" "+p(ie(te.value)),1)])):(t(),r("span",th,"Automatic"))]),te.value.manualRunAt?(t(),r("div",nh,p(c(Rt)(te.value.manualRunAt)),1)):b("",!0)]),te.value.replayedFrom?(t(),r("div",ah,[f[18]||(f[18]=n("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Rerun Of ",-1)),n("div",rh,[B(c(an),{size:10,class:"shrink-0"}),n("span",sh,p(te.value.replayedFrom),1)])])):b("",!0)]),te.value.error?(t(),r("div",oh,p(te.value.error),1)):b("",!0),n("div",lh,[f[19]||(f[19]=n("div",{class:"border-b border-neutral-200 px-3 py-2 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:border-neutral-800"}," Arguments ",-1)),B(ca,{"model-value":ke.value,class:"min-h-0 flex-1",language:"json",readonly:"","word-wrap":"on",framed:!1},null,8,["model-value"])])])]),key:"0"}:void 0]),1032,["height-percent"]),(t(),j(Ur,{to:"body"},[e.active&&qe.value&&ue.value?(t(),r("div",{key:0,ref_key:"actionPopoverRef",ref:ne,class:"fixed z-[9999] w-[260px] border border-neutral-200 bg-white p-3 text-xs shadow-lg dark:border-neutral-800 dark:bg-neutral-950",style:gt(z.value),onClick:f[6]||(f[6]=Ge(()=>{},["stop"]))},[n("div",ih,[X.value==="cancel"?(t(),j(c(Dt),{key:0,size:14,class:"mt-0.5 shrink-0 text-red-600 dark:text-red-300"})):(t(),j(c(St),{key:1,size:14,class:"mt-0.5 shrink-0 text-amber-600 dark:text-amber-300"})),n("div",dh,[n("div",uh,p(nt(qe.value)),1),n("div",ch,p(O(qe.value)),1),n("div",fh,[n("span",ph,p(qe.value.name),1)]),n("div",vh,p(qe.value.id),1)])]),n("div",hh,[n("button",{type:"button",class:"rounded border border-neutral-200 px-2 py-1 text-neutral-600 transition-colors hover:bg-neutral-50 hover:text-neutral-950 dark:border-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-900 dark:hover:text-neutral-50",onClick:D},p(X.value==="cancel"?"Keep scheduled":"Cancel"),1),n("button",{type:"button",class:G(["rounded px-2 py-1 font-medium transition-opacity hover:opacity-85",X.value==="cancel"?"bg-red-600 text-white hover:opacity-85 dark:bg-red-500 dark:text-white":"bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-950"]),onClick:f[5]||(f[5]=_=>Ne(qe.value))},p(ge(qe.value)),3)])],4)):b("",!0)]))]))}}),yh={class:"flex h-full min-h-0 flex-col overflow-hidden"},kh={class:"flex items-center justify-between gap-3 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},_h={class:"min-w-0 flex items-center gap-1 overflow-hidden text-xs","aria-label":"File path"},wh=["onClick"],$h={class:"flex shrink-0 items-center gap-1"},Ch=["disabled"],Sh=["disabled"],Th={class:"min-h-0 flex-1 overflow-auto p-3"},Ih={key:0,class:"py-12 text-center text-sm text-neutral-500"},Ah={key:1,class:"flex justify-center py-12"},Eh={key:2,class:"py-12 text-center text-sm text-red-600 dark:text-red-400"},Lh={key:3,class:"py-12 text-center text-sm text-neutral-500"},Rh={key:4,class:"space-y-0.5"},Mh=["onClick","onDblclick","onKeydown"],Dh={key:1,class:"w-3 shrink-0"},Fh={key:3,class:"flex h-7 w-7 shrink-0 items-center justify-center overflow-hidden rounded border border-neutral-200 bg-neutral-100 dark:border-neutral-700 dark:bg-neutral-900"},Ph=["src","alt"],Nh={key:4,class:"flex h-7 w-7 shrink-0 items-center justify-center rounded border border-neutral-200 bg-neutral-100 dark:border-neutral-700 dark:bg-neutral-900"},zh={class:"min-w-0 flex-1 truncate"},jh={key:5,class:"text-[10px] text-neutral-400"},Bh={key:6,class:"text-[10px] text-neutral-400"},Oh={key:5,class:"grid grid-cols-[repeat(auto-fill,minmax(112px,1fr))] gap-3"},Vh=["onClick","onKeydown"],qh={class:"mb-2 flex aspect-square items-center justify-center overflow-hidden rounded bg-neutral-100 dark:bg-neutral-950"},Uh=["src","alt"],Hh={class:"truncate text-xs font-medium"},Wh={class:"mt-0.5 text-[10px] text-neutral-400"},Kh={class:"flex h-full min-h-0 flex-col overflow-hidden"},Jh={class:"flex items-center justify-between border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},Gh={class:"min-w-0"},Yh={class:"truncate text-sm font-semibold"},Qh={class:"truncate text-[11px] font-mono text-neutral-500"},Xh={class:"flex shrink-0 items-center gap-1.5"},Zh=["disabled"],em=["href","download"],tm={key:0,class:"grid grid-cols-[120px_minmax(0,1fr)] gap-2 text-sm"},nm={class:"font-mono"},am={class:"break-all font-mono"},rm={key:1,class:"flex h-full items-center justify-center"},sm={key:2,class:"text-sm text-red-600 dark:text-red-400"},om=["src","alt"],lm={key:0,class:"mb-3 rounded border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-red-900/70 dark:bg-red-950/30 dark:text-red-300"},im={key:5,class:"grid grid-cols-[120px_minmax(0,1fr)] gap-2 text-sm"},dm={class:"font-mono"},um={class:"font-mono"},cm={class:"break-all font-mono"},fm="agentbuilder.threads.filePreviewSplitPercent",pm=2500,vm=et({__name:"ThreadFilesPane",props:{threadId:{},path:{},refreshKey:{},active:{type:Boolean,default:!0}},emits:["update:path","count-changed"],setup(e,{emit:o}){const a=e,l=o,s=g([]),i=g(!1),h=g(!1),u=g(!1),I=g(null),S=g("tree"),$=g("/"),m=g(null),y=g(new Set(["/"])),E=g(!1),C=g(null),V=g(!1),H=g(null),J=g(""),oe=g(null),X=g(50),ne=g(null),ue=g(new Map);let K=null,P=!1;const R=d=>(d.startsWith("/")?d:`/${d}`).replace(/\/+/g,"/"),W=d=>d.replace(/^\/+/,"").split("/").map(f=>encodeURIComponent(f)).join("/"),q=(d,f="")=>{const _=typeof d=="string"?d:d.path;if(!a.threadId)return"";const ve=f?`?${f}`:"";return Qe(`/api/threads/${a.threadId}/fs/${W(_)}${ve}`)},we=d=>q(d),Pe=d=>{const f=d.name.toLowerCase();return f.endsWith(".vue")?"html":d.mimeType.includes("json")||f.endsWith(".json")?"json":f.endsWith(".md")||f.endsWith(".markdown")?"markdown":f.endsWith(".ts")||f.endsWith(".tsx")?"typescript":f.endsWith(".js")||f.endsWith(".jsx")?"javascript":f.endsWith(".css")?"css":f.endsWith(".scss")?"scss":f.endsWith(".html")?"html":f.endsWith(".yml")||f.endsWith(".yaml")?"yaml":f.endsWith(".sh")||f.endsWith(".bash")?"shell":f.endsWith(".py")?"python":f.endsWith(".xml")||d.mimeType.includes("xml")?"xml":"plaintext"},te=d=>{if(!d)return"0 B";const f=["B","KB","MB","GB"],_=Math.min(Math.floor(Math.log(d)/Math.log(1024)),f.length-1);return`${(d/1024**_).toFixed(_===0?0:1)} ${f[_]}`},qe=d=>`${d} ${d===1?"item":"items"}`,z=d=>d?.mimeType?.startsWith("image/"),he=new Set([".bash",".css",".html",".js",".jsx",".json",".md",".markdown",".py",".scss",".sh",".ts",".tsx",".txt",".vue",".xml",".yaml",".yml"]),ke=d=>{if(!d)return!1;const f=d.name.toLowerCase();return d.mimeType.startsWith("text/")||d.mimeType.includes("json")||d.mimeType.includes("xml")||d.mimeType.includes("javascript")||d.mimeType.includes("typescript")||[...he].some(_=>f.endsWith(_))},Ee=d=>d?z(d)?Ya:d.mimeType.startsWith("audio/")?Jr:d.mimeType.startsWith("video/")?Gr:ke(d)?d.mimeType.includes("json")||d.mimeType.includes("javascript")?Yr:Qa:Tn:Tn,_e=()=>{const d=new Set(["/"]);for(const f of s.value){const _=R(f.path).split("/").filter(Boolean);let ve="";for(const Me of _.slice(0,-1))ve+="/"+Me,d.add(ve)}return d},me=()=>{y.value=_e()},Se=async(d,f)=>{try{const _=await d.json();return typeof _.error=="string"?_.error:f}catch{return f}},Ie=d=>d?`${d.path}|${d.size}|${d.updatedAt??""}|${d.mimeType}`:"",re=async(d={})=>{if(!a.threadId){s.value=[];return}const f=d.quiet===!0;if(!(f&&P)){f?P=!0:(i.value=!0,I.value=null);try{const _=await fetch(Qe(`/api/threads/${a.threadId}/fs?find=**/*&type=file`));if(!_.ok)throw new Error("Failed to load files");const ve=await _.json();s.value=(ve.files||[]).filter(Me=>!Me.isDirectory).map(Me=>({...Me,path:R(Me.path)})).sort((Me,ot)=>z(Me)!==z(ot)?z(Me)?-1:1:Me.path.localeCompare(ot.path)),S.value==="tree"&&s.value.length>0&&!E.value&&(me(),E.value=!0)}catch(_){f||(I.value=_ instanceof Error?_.message:"Failed to load files")}finally{f?P=!1:i.value=!1}}},Z=T(()=>{const d={type:"directory",name:"",path:"/",children:[]},f=new Map([["/",d]]);for(const ve of s.value){const Me=R(ve.path).split("/").filter(Boolean);let ot=d,it="";for(const ht of Me.slice(0,-1)){it=`${it}/${ht}`;let bt=f.get(it);bt||(bt={type:"directory",name:ht,path:it,children:[]},f.set(it,bt),ot.children.push(bt)),ot=bt}ot.children.push({type:"file",name:ve.name||Me[Me.length-1],path:ve.path,file:ve,children:[]})}const _=ve=>{ve.children.sort((Me,ot)=>Me.type!==ot.type?Me.type==="directory"?-1:1:Me.name.localeCompare(ot.name)),ve.children.forEach(_)};return _(d),d}),Q=T(()=>{if($.value==="/")return Z.value;const d=$.value.split("/").filter(Boolean);let f=Z.value;for(const _ of d){const ve=f.children.find(Me=>Me.type==="directory"&&Me.name===_);if(!ve)return Z.value;f=ve}return f}),ce=T(()=>Q.value.children),fe=T(()=>[...ce.value].sort((d,f)=>d.type!==f.type?d.type==="file"?-1:1:d.file&&f.file&&z(d.file)!==z(f.file)?z(d.file)?-1:1:d.name.localeCompare(f.name))),De=T(()=>{const d=[],f=(_,ve)=>{for(const Me of _)d.push({node:Me,depth:ve}),Me.type==="directory"&&y.value.has(Me.path)&&f(Me.children,ve+1)};return f(Q.value.children,0),d}),Ye=T(()=>{if(S.value==="tree"){const d=$.value!=="/"?[{key:"__up__",kind:"up"}]:[];return d.push(...De.value.map(f=>({key:f.node.path,kind:"node",node:f.node}))),d}return fe.value.map(d=>({key:d.path,kind:"node",node:d}))}),F=T(()=>m.value?s.value.find(d=>d.path===m.value)??null:null),$e=T(()=>F.value?Pe(F.value):"plaintext"),ye=T(()=>Ie(F.value)),Le=T(()=>!!F.value&&C.value!==null&&ke(F.value)),Ve=T(()=>Le.value&&J.value!==(C.value??"")),He=T(()=>{const d=F.value;if(!d)return!1;const f=d.mimeType.toLowerCase();return z(d)||ke(d)||f==="application/pdf"||f.startsWith("audio/")||f.startsWith("video/")}),le=(d,f)=>{if(d.path===f)return d;for(const _ of d.children){const ve=le(_,f);if(ve)return ve}return null},ie=T(()=>{if(!m.value)return null;const d=le(Z.value,m.value);return d?.type==="directory"?d:null}),ae=T(()=>{const d=$.value.split("/").filter(Boolean),f=[{label:"Files",path:"/"}];let _="";for(const ve of d)_+=`/${ve}`,f.push({label:ve,path:_});return f}),Re=d=>{if(m.value=d.path,d.type==="directory"){$.value=d.path,y.value.add(d.path),y.value=new Set(y.value);return}},Ke=d=>{m.value=d.path,y.value.has(d.path)?y.value.delete(d.path):y.value.add(d.path),y.value=new Set(y.value)},U=async(d,f={})=>{const _=f.quiet===!0;if(!(Ve.value&&m.value===d.path)&&(_||(C.value=null,H.value=null,J.value=""),!!ke(d))){_||(V.value=!0);try{const ve=await fetch(q(d));if(!ve.ok)throw new Error("Failed to load preview");const Me=await ve.text();m.value===d.path&&!Ve.value&&(C.value=Me,J.value=Me,H.value=null)}catch(ve){_||(H.value=ve instanceof Error?ve.message:"Failed to load preview")}finally{_||(V.value=!1)}}},Ce=async()=>{!F.value||!ke(F.value)||Ve.value||await U(F.value,{quiet:!0})},se=()=>!!a.threadId&&a.active&&!Ve.value&&!h.value&&!u.value&&!i.value&&!P&&(typeof document>"u"||document.visibilityState==="visible"),Ue=async()=>{se()&&(await re({quiet:!0}),await Ce())},tt=()=>{se()&&Ue()},nt=d=>{const f=new TextEncoder().encode(d);let _="";for(const ve of f)_+=String.fromCharCode(ve);return btoa(_)},ge=()=>{J.value=C.value??"",oe.value=null},O=async()=>{const d=F.value;if(!(!d||!a.threadId)){u.value=!0,oe.value=null;try{const f=await fetch(q(d),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:nt(J.value),mimeType:d.mimeType||"text/plain"})});if(!f.ok)throw new Error(await Se(f,"Failed to save file"));C.value=J.value,await re({quiet:!0})}catch(f){oe.value=f instanceof Error?f.message:"Failed to save file"}finally{u.value=!1}}},ee=async d=>{const f=d.target;if(!(!a.threadId||!f.files?.length)){h.value=!0,I.value=null;try{for(const _ of Array.from(f.files)){const ve=$.value==="/"?`/${_.name}`:`${$.value}/${_.name}`;if(!(await fetch(q(ve),{method:"POST",headers:{"Content-Type":_.type||"application/octet-stream"},body:_})).ok)throw new Error(`Failed to upload ${_.name}`)}await re()}catch(_){I.value=_ instanceof Error?_.message:"Upload failed"}finally{h.value=!1,f.value=""}}},Oe=g(new Set);be(()=>a.threadId,()=>{$.value=R(a.path||"/"),m.value=null,C.value=null,H.value=null,J.value="",oe.value=null,y.value=new Set(["/"]),E.value=!1,Oe.value=new Set,re()},{immediate:!0}),be(s,d=>{l("count-changed",d.length)},{immediate:!0}),be(()=>a.refreshKey,()=>{a.threadId&&re()}),be(()=>a.active,d=>{d&&Ue()});const pe=g(!1),D=d=>{const f=d.lastIndexOf("/");return f<=0?"/":d.slice(0,f)},xe=d=>{const f=d.split("/").filter(Boolean);let _="";y.value.add("/");for(let ve=0;ve<f.length-1;ve++)_+="/"+f[ve],y.value.add(_);y.value=new Set(y.value)},je=()=>{const d=D($.value);$.value=d,m.value=d==="/"?null:d,y.value.add(d),y.value=new Set(y.value)},M=(d,f)=>{f instanceof HTMLElement?ue.value.set(d,f):ue.value.delete(d)},N=async d=>{await Xe(),ue.value.get(d)?.focus({preventScroll:!0})},Ne=d=>{d.kind==="node"&&Re(d.node)},de=(d,f)=>{const _=Ye.value,ve=_.findIndex(ot=>ot.key===d);if(ve<0)return;const Me=_[Math.min(_.length-1,Math.max(0,ve+f))];Me&&(Ne(Me),N(Me.key))},Be=d=>{const f=Ye.value,_=d==="start"?f[0]:f[f.length-1];_&&(Ne(_),N(_.key))},ut=(d,f)=>{if(d.key==="ArrowDown"){d.preventDefault(),de(f.key,1);return}if(d.key==="ArrowUp"){d.preventDefault(),de(f.key,-1);return}if(d.key==="Home"){d.preventDefault(),Be("start");return}if(d.key==="End"){d.preventDefault(),Be("end");return}S.value!=="tree"||f.kind!=="node"||f.node.type!=="directory"||(d.key==="ArrowRight"&&!y.value.has(f.node.path)?(d.preventDefault(),y.value.add(f.node.path),y.value=new Set(y.value)):d.key==="ArrowLeft"&&y.value.has(f.node.path)&&(d.preventDefault(),y.value.delete(f.node.path),y.value=new Set(y.value)))};return be([()=>a.path,s],async([d])=>{const f=R(d||"/");let _=s.value.find(Me=>Me.path===f&&!Me.isDirectory);const ve=f!=="/"&&/\.[a-z0-9]+$/i.test(f);if(!_&&ve&&d&&!Oe.value.has(f)&&(Oe.value.add(f),await re(),_=s.value.find(Me=>Me.path===f&&!Me.isDirectory)),_){const Me=S.value==="tree"?"/":D(f);m.value=f,xe(f),$.value!==Me&&(pe.value=!0,$.value=Me)}else $.value!==f&&(pe.value=!0,$.value=f)}),be(S,d=>{d==="tree"&&(s.value.length>0&&!E.value&&(me(),E.value=!0),F.value&&$.value!=="/"&&(xe(F.value.path),pe.value=!0,$.value="/"))}),be($,d=>{if(pe.value){pe.value=!1;return}l("update:path",R(d))}),be(m,()=>{C.value=null,H.value=null,J.value="",oe.value=null}),be(ye,()=>{const d=F.value;d?U(d):(J.value="",oe.value=null,C.value=null,H.value=null)}),be(ie,()=>{J.value="",oe.value=null,C.value=null,H.value=null}),K=setInterval(()=>{Ue()},pm),typeof document<"u"&&document.addEventListener("visibilitychange",tt),wt(()=>{K&&clearInterval(K),typeof document<"u"&&document.removeEventListener("visibilitychange",tt)}),(d,f)=>(t(),j(Fn,{"height-percent":X.value,"onUpdate:heightPercent":f[5]||(f[5]=_=>X.value=_),"storage-key":fm,title:"Resize files and preview"},Ut({main:Fe(()=>[n("div",yh,[n("div",kh,[n("nav",_h,[(t(!0),r(Ae,null,We(ae.value,(_,ve)=>(t(),r(Ae,{key:_.path},[ve>0?(t(),j(c(jt),{key:0,size:13,class:"shrink-0 text-neutral-300 dark:text-neutral-600"})):b("",!0),n("button",{type:"button",class:G(["min-w-0 truncate rounded border px-1.5 py-1 font-medium transition-colors",ve===ae.value.length-1?"border-transparent agents-surface-selected agents-text-selected shadow-sm":"border-transparent text-neutral-500 hover:bg-neutral-100 hover:text-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100"]),onClick:Me=>$.value=_.path},p(_.label),11,wh)],64))),128))]),n("div",$h,[n("button",{type:"button",class:G(["inline-flex h-7 w-7 items-center justify-center rounded border",S.value==="tree"?"border-transparent agents-surface-selected agents-text-selected":"border-transparent text-neutral-500 hover:bg-neutral-100 dark:hover:bg-neutral-800"]),title:"Tree view",onClick:f[0]||(f[0]=_=>S.value="tree")},[B(c(Hr),{size:15})],2),n("button",{type:"button",class:G(["inline-flex h-7 w-7 items-center justify-center rounded border",S.value==="grid"?"border-transparent agents-surface-selected agents-text-selected":"border-transparent text-neutral-500 hover:bg-neutral-100 dark:hover:bg-neutral-800"]),title:"Grid view",onClick:f[1]||(f[1]=_=>S.value="grid")},[B(c(Wr),{size:15})],2),n("button",{type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded text-neutral-500 hover:bg-neutral-100 hover:text-neutral-950 disabled:opacity-50 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",disabled:!e.threadId||i.value,title:"Refresh files",onClick:re},[i.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(Dn),{key:1,size:15}))],8,Ch),n("input",{ref_key:"fileInput",ref:ne,type:"file",multiple:"",class:"hidden",onChange:ee},null,544),n("button",{type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded text-neutral-500 hover:bg-neutral-100 hover:text-neutral-950 disabled:opacity-50 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",disabled:!e.threadId||h.value,title:"Upload files",onClick:f[2]||(f[2]=_=>ne.value?.click())},[h.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(Kr),{key:1,size:15}))],8,Sh)])]),n("div",Th,[e.threadId?i.value?(t(),r("div",Ah,[B(Ze)])):I.value?(t(),r("div",Eh,p(I.value),1)):s.value.length===0?(t(),r("div",Lh," No files yet ")):S.value==="tree"?(t(),r("div",Rh,[$.value!=="/"?(t(),r("button",{key:0,ref:_=>M("__up__",_),type:"button",class:"flex w-full items-center gap-2 rounded py-1.5 pr-2 text-left text-xs hover:bg-neutral-100 dark:hover:bg-neutral-800",style:{paddingLeft:"8px"},onClick:je,onKeydown:f[3]||(f[3]=_=>ut(_,{key:"__up__",kind:"up"}))},[f[6]||(f[6]=n("span",{class:"w-3 shrink-0"},null,-1)),B(c(zn),{size:15,class:"shrink-0 text-amber-500"}),f[7]||(f[7]=n("span",{class:"min-w-0 flex-1 font-mono"},"..",-1))],544)):b("",!0),(t(!0),r(Ae,null,We(De.value,_=>(t(),r("button",{key:_.node.path,ref_for:!0,ref:ve=>M(_.node.path,ve),type:"button",class:G(["flex w-full items-center gap-2 rounded py-1.5 pr-2 text-left text-xs",m.value===_.node.path?"agents-surface-selected agents-text-selected":"hover:bg-neutral-100 dark:hover:bg-neutral-800"]),style:gt({paddingLeft:`${8+_.depth*18}px`}),onClick:ve=>_.node.type==="directory"?Ke(_.node):Re(_.node),onDblclick:ve=>_.node.type==="directory"?Re(_.node):void 0,onKeydown:ve=>ut(ve,{key:_.node.path,kind:"node",node:_.node})},[_.node.type==="directory"?(t(),j(c(jt),{key:0,size:12,class:G(["shrink-0 text-neutral-400 transition-transform",y.value.has(_.node.path)?"rotate-90":""])},null,8,["class"])):(t(),r("span",Dh)),_.node.type==="directory"?(t(),j(c(zn),{key:2,size:15,class:"shrink-0 text-amber-500"})):_.node.file&&z(_.node.file)?(t(),r("span",Fh,[n("img",{src:we(_.node.file),alt:_.node.name,class:"h-full w-full object-cover",loading:"lazy"},null,8,Ph)])):(t(),r("span",Nh,[(t(),j(Mt(Ee(_.node.file)),{size:15,class:"text-neutral-500"}))])),n("span",zh,p(_.node.name),1),_.node.type==="directory"?(t(),r("span",jh,p(qe(_.node.children.length)),1)):(t(),r("span",Bh,p(te(_.node.file?.size||0)),1))],46,Mh))),128))])):(t(),r("div",Oh,[(t(!0),r(Ae,null,We(fe.value,_=>(t(),r("button",{key:_.path,ref_for:!0,ref:ve=>M(_.path,ve),type:"button",class:G(["group min-w-0 rounded-lg border p-2 text-left",m.value===_.path?"agents-border-selected agents-surface-selected":"border-neutral-200 bg-white hover:border-neutral-300 hover:bg-neutral-50 dark:border-neutral-800 dark:bg-neutral-900 dark:hover:border-neutral-700 dark:hover:bg-neutral-800"]),onClick:ve=>Re(_),onKeydown:ve=>ut(ve,{key:_.path,kind:"node",node:_})},[n("div",qh,[_.file&&z(_.file)?(t(),r("img",{key:0,src:we(_.file),alt:_.name,class:"h-full w-full object-cover",loading:"lazy"},null,8,Uh)):_.type==="directory"?(t(),j(c(zn),{key:1,size:28,class:"text-amber-500"})):(t(),j(Mt(Ee(_.file)),{key:2,size:28,class:"text-neutral-500"}))]),n("div",Hh,p(_.name),1),n("div",Wh,p(_.type==="directory"?qe(_.children.length):te(_.file?.size||0)),1)],42,Vh))),128))])):(t(),r("div",Ih," Select a thread to view files "))])])]),_:2},[F.value||ie.value?{name:"detail",fn:Fe(()=>[n("div",Kh,[n("div",Jh,[n("div",Gh,[n("div",Yh,p(F.value?.name||ie.value?.name||"Files"),1),n("div",Qh,p(F.value?.path||ie.value?.path),1)]),n("div",Xh,[F.value&&Le.value?(t(),r(Ae,{key:0},[n("button",{type:"button",class:"inline-flex h-8 items-center gap-1.5 rounded bg-neutral-900 px-2.5 text-sm font-medium text-white transition-colors hover:bg-neutral-700 disabled:opacity-50 dark:bg-neutral-100 dark:text-neutral-950 dark:hover:bg-neutral-300",disabled:u.value||!Ve.value,onClick:O},[u.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(er),{key:1,size:14})),f[8]||(f[8]=n("span",null,"Save",-1))],8,Zh),Ve.value?(t(),r("button",{key:0,type:"button",class:"inline-flex h-8 w-8 items-center justify-center rounded text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-950 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",title:"Cancel","aria-label":"Cancel file edit",onClick:ge},[B(c(Dt),{size:15})])):b("",!0)],64)):b("",!0),F.value?(t(),r("a",{key:1,href:q(F.value),target:"_blank",rel:"noopener noreferrer",download:He.value?void 0:F.value.name,class:"shrink-0 rounded border border-neutral-200 px-2 py-1 text-xs font-medium hover:bg-neutral-50 dark:border-neutral-700 dark:hover:bg-neutral-800"},p(He.value?"Open":"Download"),9,em)):b("",!0)])]),n("div",{class:G(["min-h-0 flex-1",C.value!==null&&!V.value&&!H.value&&!ie.value&&!z(F.value)?"flex flex-col overflow-hidden p-3":"overflow-auto p-3"])},[ie.value?(t(),r("dl",tm,[f[9]||(f[9]=n("dt",{class:"text-neutral-500"},"Type",-1)),f[10]||(f[10]=n("dd",{class:"font-mono"},"directory",-1)),f[11]||(f[11]=n("dt",{class:"text-neutral-500"},"Items",-1)),n("dd",nm,p(qe(ie.value.children.length)),1),f[12]||(f[12]=n("dt",{class:"text-neutral-500"},"Path",-1)),n("dd",am,p(ie.value.path),1)])):V.value?(t(),r("div",rm,[B(Ze)])):H.value?(t(),r("div",sm,p(H.value),1)):z(F.value)?(t(),r("img",{key:3,src:q(F.value),alt:F.value.name,class:"mx-auto max-h-full max-w-full rounded border border-neutral-200 object-contain dark:border-neutral-800"},null,8,om)):C.value!==null?(t(),r(Ae,{key:4},[oe.value?(t(),r("div",lm,p(oe.value),1)):b("",!0),Le.value?(t(),j(ca,{key:1,modelValue:J.value,"onUpdate:modelValue":f[4]||(f[4]=_=>J.value=_),language:$e.value,class:"min-h-[12rem] flex-1",framed:!1},null,8,["modelValue","language"])):b("",!0)],64)):(t(),r("dl",im,[f[13]||(f[13]=n("dt",{class:"text-neutral-500"},"Type",-1)),n("dd",dm,p(F.value.mimeType||"application/octet-stream"),1),f[14]||(f[14]=n("dt",{class:"text-neutral-500"},"Size",-1)),n("dd",um,p(te(F.value.size)),1),f[15]||(f[15]=n("dt",{class:"text-neutral-500"},"Path",-1)),n("dd",cm,p(F.value.path),1)]))],2)])]),key:"0"}:void 0]),1032,["height-percent"]))}});function hm(e){const o=e&&typeof e=="object"?e:{},a=Array.isArray(o.values)?o.values:[];return{values:a.filter(l=>!!l&&typeof l=="object").filter(l=>typeof l.key=="string").map(l=>({key:l.key,value:l.value,serialized:typeof l.serialized=="string"?l.serialized:hr(l.value),size:typeof l.size=="number"&&Number.isFinite(l.size)?l.size:0,updatedAt:typeof l.updatedAt=="number"&&Number.isFinite(l.updatedAt)?l.updatedAt:0,parseError:typeof l.parseError=="string"?l.parseError:void 0})),total:typeof o.total=="number"&&Number.isFinite(o.total)?o.total:a.length,limit:typeof o.limit=="number"&&Number.isFinite(o.limit)?o.limit:a.length,offset:typeof o.offset=="number"&&Number.isFinite(o.offset)?o.offset:0,search:typeof o.search=="string"?o.search:null}}function hr(e){const o=JSON.stringify(e,null,2);return o===void 0?"":o}function mm(e){try{const o=JSON.parse(e);return o===null?{ok:!1,error:"Use delete to remove a key"}:{ok:!0,value:o}}catch(o){return{ok:!1,error:o instanceof Error?o.message:"Invalid JSON"}}}function Jn(e,o){return o?"unknown":Array.isArray(e)?"array":typeof e=="string"?"string":typeof e=="number"?"number":typeof e=="boolean"?"boolean":e&&typeof e=="object"?"object":"unknown"}function gm(e,o){if(o)return"Stored value is not valid JSON";if(Array.isArray(e))return`${e.length} ${e.length===1?"item":"items"}`;if(typeof e=="string")return e.length>80?`${e.slice(0,77)}...`:e;if(typeof e=="number"||typeof e=="boolean")return String(e);if(e&&typeof e=="object"){const a=Object.keys(e).length;return`${a} ${a===1?"key":"keys"}`}return"Unknown"}function Ba(e){if(!Number.isFinite(e)||e<=0)return"0 B";const o=["B","KB","MB"],a=Math.min(Math.floor(Math.log(e)/Math.log(1024)),o.length-1);return`${(e/1024**a).toFixed(a===0?0:1)} ${o[a]}`}function Oa(e){if(!Number.isFinite(e)||e<=0)return"Unknown";const o=e>9999999999?Math.floor(e/1e3):e;return new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(o))}function xm(e,o,a){let l=null,s=0,i=0,h=!1;const u=4;let I=null,S=null;const $=3e4,m=3e4,y=()=>{I&&(clearTimeout(I),I=null),S&&(clearInterval(S),S=null)},E=()=>{if(y(),s=0,i=0,l){const H=l;l=null,H.close()}},C=()=>{if(!e.value||!o.value||i>=u)return;const H=Math.min(1e3*Math.pow(2,s),$);s++,I=setTimeout(()=>V(),H)},V=()=>{const H=e.value;if(!H||!o.value||typeof window>"u")return;if(h=!1,l){const X=l;l=null,X.close()}const J=window.location.protocol==="https:"?"wss:":"ws:",oe=la(`${J}//${window.location.host}${Qe(`/api/threads/${H}/logs`)}`);try{const X=new WebSocket(oe);l=X,X.onopen=()=>{l===X&&(s=0,i=0,h=!0,S&&clearInterval(S),S=setInterval(()=>{X.readyState===WebSocket.OPEN&&X.send("ping")},m))},X.onmessage=ne=>{if(!(l!==X||typeof ne.data!="string"||ne.data==="pong"))try{const ue=JSON.parse(ne.data);ue.type==="kv_data"&&typeof ue.key=="string"&&a({key:ue.key,deleted:ue.deleted===!0,updatedAt:typeof ue.updated_at=="number"?ue.updated_at:null})}catch{}},X.onclose=()=>{l===X&&(l=null,S&&(clearInterval(S),S=null),h||i++,C())},X.onerror=()=>{}}catch{Ht(),C()}};be([e,o],([H,J])=>{E(),H&&J&&V()},{immediate:!0}),Kt(E)}const bm={class:"flex h-full min-h-0 flex-col overflow-hidden"},ym={class:"flex items-center gap-2 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},km={class:"relative min-w-0 flex-1"},_m={class:"hidden shrink-0 text-xs tabular-nums text-neutral-500 sm:block"},wm=["disabled"],$m=["disabled"],Cm={class:"min-h-0 flex-1 overflow-auto"},Sm={key:0,class:"py-12 text-center text-sm text-neutral-500"},Tm={key:1,class:"flex justify-center py-12"},Im={key:2,class:"py-12 text-center text-sm text-red-600 dark:text-red-400"},Am={key:3,class:"py-12 text-center text-sm text-neutral-500"},Em={key:4,class:"flex min-h-full flex-col"},Lm={class:"min-h-0 flex-1 overflow-auto bg-white dark:bg-neutral-950"},Rm={class:"w-full min-w-[52rem] table-fixed text-left text-xs"},Mm={class:"divide-y divide-neutral-100 dark:divide-neutral-900"},Dm=["aria-selected","onClick","onKeydown"],Fm={class:"whitespace-nowrap px-4 py-2 align-middle"},Pm={class:"font-mono text-xs font-normal text-neutral-950 dark:text-neutral-100"},Nm={class:"min-w-0 px-3 py-2 align-middle"},zm={class:"truncate text-xs text-neutral-500 dark:text-neutral-400"},jm={class:"whitespace-nowrap px-3 py-2 align-middle"},Bm={class:"whitespace-nowrap px-3 py-2 text-right align-middle text-[11px] tabular-nums text-neutral-400"},Om={class:"whitespace-nowrap px-4 py-2 text-right align-middle text-[11px] text-neutral-400"},Vm=["disabled"],qm={class:"flex h-full min-h-0 flex-col overflow-hidden"},Um={class:"flex items-center justify-between gap-3 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},Hm={class:"min-w-0 flex-1"},Wm={key:0,class:"flex items-center gap-2"},Km={key:1,class:"mt-0.5 truncate text-[11px] text-neutral-500"},Jm={class:"flex shrink-0 items-center gap-1.5"},Gm=["disabled"],Ym=["disabled"],Qm={class:"flex min-h-0 flex-1 flex-col overflow-hidden p-3"},Xm={key:0,class:"mb-3 rounded border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-red-900/70 dark:bg-red-950/30 dark:text-red-300"},Zm="agentbuilder.threads.kvStoreDetailSplitPercent",Va=100,eg=2500,Yt=`{
20
+ Error Details:`);let je=A.length;return k>=0&&(je=Math.min(je,k)),R>=0&&(je=Math.min(je,R)),A.slice(0,je)},Ve=A=>{let k=Re(A).trim(),R=!1;for(let Ct=0;Ct<5&&!(!k.startsWith("{")&&!k.startsWith("["));Ct++){const mt=ye(k);if(!mt||typeof mt.value!="object"||mt.value===null)break;const Pt=mt.value,Vt=Pt.error,zn=typeof Vt=="object"&&Vt!==null?Vt.message:typeof Vt=="string"?Vt:Pt.message;if(typeof zn!="string"||zn.trim().length===0)break;R=!0,k=zn.trim()}if(R)return k;const je=F(A)?$e(A):A,st=Re(je).trim(),kt=st.split(`
21
+ `).find(Ct=>Ct.trim().length>0);return kt&&kt.length<600?kt.trim():st},He=A=>{if(!A)return{isJson:!1,text:""};const k=A.trim();if(k.startsWith("{")||k.startsWith("["))try{const je=JSON.parse(k);if(je&&typeof je=="object")return{isJson:!0,text:JSON.stringify(je,null,2)}}catch{}return{isJson:!1,text:F(A)?$e(A):A}},ie=T(()=>Ye.value.map(A=>{const k=Ve(A.message),R=He(A.message),je=R.text.trim().length>0&&R.text.trim()!==k.trim();return{...A,human:k,details:R,hasMoreDetails:je}})),de=T(()=>{for(const A of ie.value){const k=fr(A.message);if(k)return k}return null}),ae=g("standard"),Me=g(null),Ke=g(!1),U=g(null);let Ce=0;const oe=pr,Ue=()=>{ae.value=Dc(a.log.provider)},tt=async(A,k)=>{const R=++Ce;if(A==="standard"){Me.value=null,U.value=null,Ke.value=!1;return}if(!a.threadId||!k){U.value="Missing thread or log ID",Ke.value=!1;return}Ke.value=!0,U.value=null;try{const je=await fetch(Qe(`/api/threads/${a.threadId}/logs/${k}/inspect/${A}`));if(!je.ok){const st=await je.json();throw new Error(st.error||"Failed to inspect")}if(R!==Ce)return;Me.value=await je.json()}catch(je){if(R!==Ce)return;U.value=_e(je,"Failed to fetch inspected request"),Me.value=null}finally{R===Ce&&(Ke.value=!1)}};be(()=>a.log.id,Ue,{immediate:!0}),be([()=>a.log.id,ae],async([A,k])=>{Me.value=null,U.value=null,await tt(k,A)},{immediate:!0}),be(s,async()=>{await Xe();const A=C.value,k=H.value;if(!A||!k)return;const R=A.getBoundingClientRect(),je=k.getBoundingClientRect(),st=A.scrollTop+(je.top-R.top)-K.value;A.scrollTop>st&&Mn(A,{top:st})});const nt=T(()=>{if(ae.value==="standard"||!Me.value)return a.log.message_history;const{body:A,messagesPath:k}=Me.value,R=k&&A?A[k]:A;return JSON.stringify(R,null,2)}),ge=A=>{if(!A)return null;try{return JSON.parse(A)}catch{return A}},O=A=>!!A&&typeof A=="object"&&!Array.isArray(A),ee=T(()=>{const A=ge(a.log.source_message_metadata);return O(A)?A:null}),Oe=T(()=>{const A=ee.value;if(!A)return null;const k=A.scheduledEffect;if(!O(k))return null;const R=typeof k.id=="string"?k.id:null,je=typeof k.name=="string"?k.name:null;return R?{id:R,name:je,reference:{id:R,name:je}}:null}),pe=T(()=>Sc(a.log.scheduled_effects)),D=T(()=>{const A=ge(nt.value);return Array.isArray(A)?A.filter(k=>!!k&&typeof k=="object").map(k=>({role:typeof k.role=="string"?k.role:"message",raw:k})):[]}),xe=A=>A.role==="system"&&typeof A.raw.content=="string"&&typeof a.log.system_prompt=="string"&&A.raw.content.trim()===a.log.system_prompt.trim(),Be=T(()=>D.value.some(A=>xe(A))),E=T(()=>D.value.length===0?nt.value:D.value.map(A=>{const k={...A.raw};return xe(A)&&(k.content=`[${Fa}]`),k})),N=T(()=>{const A=[];return Be.value&&A.push({token:Fa,label:"view system prompt",action:"view-system-prompt"}),A}),Ie=A=>{A.action==="view-system-prompt"&&re()},re=async()=>{q.value.has("system_prompt")&&(q.value.delete("system_prompt"),q.value=new Set(q.value)),await Xe();const A=C.value,k=X.value?.contentRef;!A||!k||Mn(A,{top:k.offsetTop-K.value-sp-op})},ze=T(()=>ae.value==="standard"||!Me.value?a.log.request_body:JSON.stringify(Me.value.body,null,2)),dt=T(()=>ae.value==="standard"||!Me.value?null:`${ae.value} format`),d=T(()=>Rc(a.log.request_body));be(()=>a.log,()=>{Xe(()=>{M(),J.value?.checkHeight(),le.value?.checkHeight(),X.value?.checkHeight(),ne.value?.checkHeight()})});const f=T(()=>a.log.error_type==="user_interrupted"||!a.log.error_type&&/interrupted by user|stopped by user/i.test(a.log.error??"")?{kind:"stopped",label:"Stopped",dot:"bg-neutral-400 dark:bg-neutral-500",text:"text-neutral-600 dark:text-neutral-300"}:a.log.error||Ye.value.length>0?{kind:"error",label:"Failed",dot:"bg-red-500",text:"text-red-700 dark:text-red-300"}:a.log.is_complete?{kind:"success",label:"Success",dot:"bg-emerald-500",text:"text-emerald-700 dark:text-emerald-300"}:{kind:"live",label:"Live",dot:"bg-amber-500",text:"text-amber-700 dark:text-amber-300"}),_=A=>A==null?null:A.toLocaleString("en-US"),ve=A=>A==null?null:`${A.toLocaleString("en-US")} ms`,De=A=>A==null?null:`$${A.toFixed(6)}`,ot=T(()=>{const A=a.log.total_tokens;return!(A==null||A===0&&(a.log.error||Ye.value.length>0))}),it=T(()=>{const A=a.log.cost_total;return!(A==null||A===0&&(a.log.error||Ye.value.length>0))}),ht=T(()=>ot.value?a.log.total_tokens.toLocaleString("en-US"):null),bt=T(()=>{if(!ot.value)return null;const A=a.log.input_tokens??0,k=a.log.output_tokens??0;return`${A.toLocaleString()} in → ${k.toLocaleString()} out`}),mn=T(()=>{if(!ot.value)return null;const A=[],k=a.log.reasoning_tokens;k&&k>0&&A.push(`${k.toLocaleString()} reasoning`);const R=a.log.cached_tokens,je=a.log.input_tokens;if(R&&R>0)if(je&&je>0){const st=Math.round(R/je*100);A.push(`${R.toLocaleString()} cached (${st}%)`)}else A.push(`${R.toLocaleString()} cached`);return A.length>0?A.join(" · "):null}),en=T(()=>{if(!it.value)return null;const A=a.log.cost_input,k=a.log.cost_cached,R=a.log.cost_output;if(A==null||R==null)return null;const je=[`$${A.toFixed(6)} in`];k!=null&&je.push(`$${k.toFixed(6)} cached`),je.push(`$${R.toFixed(6)} out`);const st=a.log.cost_router_fee;if(st!=null&&st>0){const kt=a.log.router_fee_percent;je.push(kt?`$${st.toFixed(6)} router fee (${kt}%)`:`$${st.toFixed(6)} router fee`)}return je.join(" · ")}),gn=T(()=>ve(a.log.time_to_first_token_ms)),xn=T(()=>{const A=a.log.generation_ms,k=a.log.output_tokens;if(!A||A<=0||k==null||k<=0)return null;const R=k/(A/1e3);return`${R>=10?Math.round(R):R.toFixed(1)} tok/s`}),tn=T(()=>ve(a.log.latency_ms)),v=A=>A?A.length>10?`${A.slice(0,8)}…`:A:"",x=T(()=>{const A=bc(a.log);if(!A)return null;const k=A.model?`?model=${encodeURIComponent(A.model)}`:"";return Qe(`/api/providers/${encodeURIComponent(A.provider)}/icon${k}`)}),w=T(()=>{const A=yc(a.log);return A?.model?Qe(`/api/providers/${encodeURIComponent(A.provider)}/icon?model=${encodeURIComponent(A.model)}`):null}),Te=(A,k,R)=>{if(!a.log.prompt_name)return;const je=k.currentTarget;je instanceof HTMLElement&&y({target:{entityType:"prompt",entityId:a.log.prompt_name,section:A,defaultToolTab:R},anchorEl:je,threadId:a.threadId??null,showGlobalNotice:!0})},Y=(A,k)=>a.log.prompt_name?cs(m.value?.target,{entityType:"prompt",entityId:a.log.prompt_name,section:A,defaultToolTab:k}):!1,Je=async()=>{if(L.value)return L.value;const A=await fetch(Qe("/api/models"));if(!A.ok)return[];const k=await A.json();return L.value=k.models||[],L.value};It(()=>{Je().catch(()=>{})});const ct=T(()=>{const A=L.value;return A?ac(a.log.input_tokens,Aa(A,a.log)):null}),yt=T(()=>{const A=ct.value;return A?`${A.pct}% of context window — ${A.inputTokens.toLocaleString("en-US")} of ${A.maxContextTokens.toLocaleString("en-US")} tokens`:""}),nn=async A=>{const k=A.currentTarget;if(!(k instanceof HTMLElement))return;const R=a.log.model,je=a.log.model_name||a.log.model;if(!R&&!je)return;const st=a.log.provider,kt=sa(je,st),Ct=await Je(),mt=Aa(Ct,a.log);y({target:{entityType:"model",entityId:mt?.id||mt?.name||R||je},anchorEl:k,editData:mt||{id:R||je,name:R||je,model:kt,provider:st,provider_id:st},threadId:a.threadId??null,showGlobalNotice:!0})},$t=()=>{const A=m.value?.target;if(A?.entityType!=="model")return!1;const k=sa(a.log.model_name||a.log.model,a.log.provider);return[a.log.model,a.log.model_name,k].includes(A.entityId)},bn=()=>a.log.provider?.toLowerCase(),Nn=async()=>{const A=bn();if(!a.threadId||!a.log.id||!A||!vr(A))return null;try{const k=await fetch(Qe(`/api/threads/${a.threadId}/logs/${a.log.id}/inspect/${A}`));return k.ok?await k.json():null}catch{return null}},mr=(A,k)=>k?!A.includes("/v1/proxy/"):!1,gr=async()=>{try{if(!a.log.request_body||!a.log.model)throw new Error("Missing request data");const A=await fetch(Qe(`/api/models/${encodeURIComponent(a.log.model)}/curl-data`));if(!A.ok)throw new Error("Failed to fetch model data");const k=await A.json(),R=await Nn(),je=R?.body?JSON.stringify(R.body,null,2):Ma(a.log.request_body),st=mr(k.endpoint,R?.metadata?.endpoint)&&R?.metadata?.endpoint||k.endpoint;await $(mc({...k,endpoint:st,headers:R?.metadata?.headers},je))}catch(A){S.value=`Failed to copy cURL: ${_e(A,"Unknown error")}`}};return(A,k)=>(t(),r("div",{ref_key:"scrollContainer",ref:C,class:"log-details-root h-full overflow-y-auto bg-white p-3 dark:bg-neutral-900",style:gt({"--logdetails-tabs-top":`${ue.value}px`,"--logdetails-sticky-stack":`${K.value}px`})},[n("div",{ref_key:"stickyHeaderRef",ref:V,class:"log-details-sticky-header sticky -top-3 z-20 -mx-3 -mt-3 mb-3 overflow-hidden rounded-t-lg border-b border-neutral-200 bg-white/95 backdrop-blur dark:border-neutral-800 dark:bg-neutral-900/95"},[n("div",Fc,[n("div",Pc,[n("div",Nc,[n("button",{onClick:k[0]||(k[0]=R=>l("previous")),disabled:!e.hasPrevious,class:"inline-flex h-7 w-7 items-center justify-center rounded-l border border-neutral-300 text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-900 disabled:opacity-30 dark:border-neutral-700 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100","aria-label":"Previous log",title:"Previous log"},[...k[23]||(k[23]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[n("polyline",{points:"15 18 9 12 15 6"})],-1)])],8,zc),n("button",{onClick:k[1]||(k[1]=R=>l("next")),disabled:!e.hasNext,class:"-ml-px inline-flex h-7 w-7 items-center justify-center rounded-r border border-neutral-300 text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-900 disabled:opacity-30 dark:border-neutral-700 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100","aria-label":"Next log",title:"Next log"},[...k[24]||(k[24]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[n("polyline",{points:"9 18 15 12 9 6"})],-1)])],8,jc)]),n("span",{class:G(["inline-flex shrink-0 items-center gap-1.5 rounded-full border border-neutral-200 bg-white px-2 py-0.5 text-[11px] font-medium dark:border-neutral-800 dark:bg-neutral-950",f.value.text])},[n("span",{class:G(["inline-block h-1.5 w-1.5 rounded-full",[f.value.dot,f.value.kind==="live"?"log-details-pulse":""]])},null,2),rt(" "+p(f.value.label),1)],2),n("h3",Bc,p(e.log.prompt_name||e.log.model_name||e.log.model),1),n("div",Oc,[e.log.actual_provider||e.log.provider?(t(),r("span",Vc,[x.value?(t(),r("img",{key:0,src:x.value,alt:e.log.actual_provider||e.log.provider||"provider",class:"h-3 w-3 shrink-0 rounded-[2px] object-contain"},null,8,qc)):b("",!0),n("span",null,p(e.log.actual_provider||e.log.provider),1)])):b("",!0),e.log.model_name||e.log.model?(t(),r("span",Uc,[w.value?(t(),r("img",{key:0,src:w.value,alt:e.log.model_name||e.log.model||"model",class:"h-3 w-3 shrink-0 rounded-[2px] object-contain"},null,8,Hc)):b("",!0),n("span",null,p(e.log.model_name||e.log.model),1),B(c(At),{content:"Model config",position:"bottom",disabled:$t()},{default:Pe(()=>[n("button",{type:"button",class:"-mr-0.5 inline-flex h-4 w-4 items-center justify-center rounded text-neutral-400 transition-colors hover:text-neutral-900 dark:text-neutral-500 dark:hover:text-neutral-100","aria-label":"Edit model config",onClick:k[2]||(k[2]=Ge(R=>nn(R),["stop"]))},[B(c(An),{size:12})])]),_:1},8,["disabled"])])):b("",!0)])]),n("div",Wc,[n("button",{onClick:gr,disabled:c(u)||!e.log.request_body,class:"rounded bg-neutral-900 px-3 py-1 text-xs font-medium text-white transition-opacity hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-neutral-100 dark:text-neutral-900",title:c(S)||(e.log.request_body?"Copy cURL command":"No request data available")},[c(u)?(t(),j(Ze,{key:0,size:"xs"})):(t(),r("span",Jc,p(c(I)?"Copied!":"Copy cURL"),1))],8,Kc),n("button",{onClick:k[3]||(k[3]=R=>l("close")),class:"inline-flex h-7 w-7 items-center justify-center rounded border border-neutral-300 text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-900 dark:border-neutral-700 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100","aria-label":"Close details",title:"Close"},[...k[25]||(k[25]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[n("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),n("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])])]),n("div",Gc,[n("div",Yc,[e.log.prompt_name?(t(),j(c(At),{key:0,content:"Prompt basics",position:"bottom",disabled:Y("basic")},{default:Pe(()=>[n("button",{type:"button",class:G(Gt),"aria-label":"Edit prompt basics",onClick:k[4]||(k[4]=Ge(R=>Te("basic",R),["stop"]))},[B(c(Qa),{size:14})])]),_:1},8,["disabled"])):b("",!0),e.log.prompt_name?(t(),j(c(At),{key:1,content:"Prompt text",position:"bottom",disabled:Y("prompt")},{default:Pe(()=>[n("button",{type:"button",class:G(Gt),"aria-label":"Edit prompt text",onClick:k[5]||(k[5]=Ge(R=>Te("prompt",R),["stop"]))},[B(c(fn),{size:14})])]),_:1},8,["disabled"])):b("",!0),e.log.prompt_name?(t(),j(c(At),{key:2,content:"Prompt config",position:"bottom",disabled:Y("behavior")},{default:Pe(()=>[n("button",{type:"button",class:G(Gt),"aria-label":"Edit prompt config",onClick:k[6]||(k[6]=Ge(R=>Te("behavior",R),["stop"]))},[B(c(Xa),{size:14})])]),_:1},8,["disabled"])):b("",!0),e.log.prompt_name?(t(),j(c(At),{key:3,content:"Prompt input schema",position:"bottom",disabled:Y("schema")},{default:Pe(()=>[n("button",{type:"button",class:G(Gt),"aria-label":"Edit input schema",onClick:k[7]||(k[7]=Ge(R=>Te("schema",R),["stop"]))},[B(c(Rr),{size:14})])]),_:1},8,["disabled"])):b("",!0),e.log.prompt_name?(t(),j(c(At),{key:4,content:"Prompt variables",position:"bottom",disabled:Y("variables")},{default:Pe(()=>[n("button",{type:"button",class:G(Gt),"aria-label":"Edit prompt variables",onClick:k[8]||(k[8]=Ge(R=>Te("variables",R),["stop"]))},[B(c(Mr),{size:14})])]),_:1},8,["disabled"])):b("",!0),e.log.prompt_name?(t(),j(c(At),{key:5,content:"Prompt tools",position:"bottom",disabled:Y("tools","functions")},{default:Pe(()=>[n("button",{type:"button",class:G(Gt),"aria-label":"Edit prompt tools",onClick:k[9]||(k[9]=Ge(R=>Te("tools",R,"functions"),["stop"]))},[B(c(Za),{size:14})])]),_:1},8,["disabled"])):b("",!0)]),n("div",Qc,[B(Rn,{timestamp:e.log.created_at},null,8,["timestamp"]),e.log.finish_reason?(t(),r(Ee,{key:0},[k[26]||(k[26]=n("span",{"aria-hidden":"true",class:"text-neutral-300 dark:text-neutral-700"},"·",-1)),n("span",null,"finish: "+p(e.log.finish_reason),1)],64)):b("",!0),e.log.id?(t(),r(Ee,{key:1},[k[27]||(k[27]=n("span",{"aria-hidden":"true",class:"text-neutral-300 dark:text-neutral-700"},"·",-1)),n("span",Xc,"log "+p(v(e.log.id)),1)],64)):b("",!0),c(S)?(t(),r(Ee,{key:2},[k[28]||(k[28]=n("span",{"aria-hidden":"true",class:"text-neutral-300 dark:text-neutral-700"},"·",-1)),n("span",Zc,p(c(S)),1)],64)):b("",!0)])])],512),n("div",e0,[n("div",t0,[n("div",n0,[B(c(Dr),{size:11,"stroke-width":2.25}),k[29]||(k[29]=n("span",null,"Performance",-1))]),n("div",a0,[!e.log.is_complete&&!e.log.time_to_first_token_ms?(t(),j(Ze,{key:0,size:"xs"})):(t(),r("span",r0,[rt(p(gn.value??"—"),1),gn.value?(t(),r("span",s0," latency")):b("",!0)]))]),xn.value?(t(),r("div",o0,p(xn.value),1)):b("",!0),tn.value?(t(),r("div",l0,p(tn.value)+" total ",1)):b("",!0)]),n("div",i0,[n("div",d0,[ct.value?(t(),j(c(At),{key:0,content:yt.value},{default:Pe(()=>[B(nc,{pct:ct.value.pct},null,8,["pct"])]),_:1},8,["content"])):(t(),j(c(Fr),{key:1,size:11,"stroke-width":2.25})),k[30]||(k[30]=n("span",null,"Tokens",-1))]),n("div",u0,[!e.log.is_complete&&!ot.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),r("span",c0,p(ht.value??"—"),1))]),bt.value?(t(),r("div",f0,p(bt.value),1)):b("",!0),mn.value?(t(),r("div",p0,p(mn.value),1)):b("",!0)]),n("div",v0,[n("div",h0,[B(c(Pr),{size:11,"stroke-width":2.25}),k[31]||(k[31]=n("span",null,"Cost",-1))]),n("div",m0,[!e.log.is_complete&&!it.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),r("span",g0,p(it.value?De(e.log.cost_total):"—"),1))]),en.value?(t(),r("div",x0,p(en.value),1)):b("",!0)]),n("div",b0,[n("div",y0,[B(c(Nr),{size:11,"stroke-width":2.25}),k[32]||(k[32]=n("span",null,"Context",-1))]),n("div",k0,[e.log.message_history_length!==null&&e.log.message_history_length!==void 0?(t(),r("span",_0,p(_(e.log.message_history_length))+" msg ",1)):(t(),r("span",w0,"—"))]),te.value.length>0?(t(),r("div",$0,p(te.value.length)+" tool"+p(te.value.length===1?"":"s")+" available ",1)):b("",!0)])]),Oe.value?(t(),r("div",C0,[n("div",S0,[n("button",{type:"button",class:"inline-flex items-center gap-1 rounded px-1 py-0.5 text-neutral-600 transition-colors hover:bg-neutral-100 hover:text-neutral-950 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",title:"Open responsible scheduled effect",onClick:k[10]||(k[10]=R=>l("effectClick",Oe.value.reference))},[B(c(St),{size:12,class:"shrink-0"}),k[33]||(k[33]=n("span",null,"via Scheduled Effect",-1))]),Oe.value.name?(t(),r("span",T0,p(Oe.value.name),1)):b("",!0),Oe.value.id?(t(),r("span",I0,p(Oe.value.id),1)):b("",!0)])])):b("",!0),pe.value.length>0?(t(),r("div",A0,[n("div",E0,[B(c(St),{size:11,class:"shrink-0"}),n("span",null,p(pe.value.length===1?"Scheduled effect created":`${pe.value.length} scheduled effects created`),1)]),n("div",L0,[(t(!0),r(Ee,null,We(pe.value,R=>(t(),r("button",{key:R.id,type:"button",class:"block w-full rounded border border-transparent px-2 py-1.5 text-left transition-colors hover:border-neutral-200 hover:bg-neutral-50 dark:hover:border-neutral-800 dark:hover:bg-neutral-950",title:"Open scheduled effect",onClick:je=>l("effectClick",R.reference)},[n("span",M0,[n("span",D0,p(R.name||"scheduled_effect"),1),n("span",F0,p(R.id),1)]),n("span",P0,[R.scheduledAt?(t(),r("span",N0,[k[34]||(k[34]=n("span",{class:"text-neutral-400 dark:text-neutral-500"},"scheduled",-1)),rt(" "+p(c(Rt)(R.scheduledAt)),1)])):b("",!0),R.createdAt?(t(),r("span",z0,[k[35]||(k[35]=n("span",{class:"text-neutral-400 dark:text-neutral-500"},"created",-1)),rt(" "+p(c(Rt)(R.createdAt)),1)])):b("",!0),R.status?(t(),r("span",j0,[k[36]||(k[36]=n("span",{class:"text-neutral-400 dark:text-neutral-500"},"status",-1)),rt(" "+p(R.status),1)])):b("",!0)])],8,R0))),128))])])):b("",!0),ie.value.length>0?(t(),r("div",B0,[n("div",O0,[n("div",V0,[n("div",q0,p(ie.value.length>1?`${ie.value.length} errors`:"Error"),1),n("div",U0,p(ie.value[0].type||"error"),1)]),ie.value[0].human?(t(),j(da,{key:0,content:ie.value[0].human,variant:"ghost",size:"xs"},null,8,["content"])):b("",!0)]),ie.value[0].human?(t(),r("p",H0,p(ie.value[0].human),1)):b("",!0),de.value?(t(),r("div",W0,[n("a",{href:de.value,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1.5 rounded-full bg-red-600 px-3 py-1 text-xs font-semibold text-white transition-colors hover:bg-red-700 dark:bg-red-500 dark:hover:bg-red-400 dark:text-red-950"},[...k[37]||(k[37]=[rt(" Add credits ",-1),n("svg",{class:"h-3 w-3",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},[n("path",{"fill-rule":"evenodd",d:"M4.25 5.5a.75.75 0 0 0-.75.75v8.5c0 .414.336.75.75.75h8.5a.75.75 0 0 0 .75-.75v-4a.75.75 0 0 1 1.5 0v4A2.25 2.25 0 0 1 12.75 17h-8.5A2.25 2.25 0 0 1 2 14.75v-8.5A2.25 2.25 0 0 1 4.25 4h5a.75.75 0 0 1 0 1.5h-5Z","clip-rule":"evenodd"}),n("path",{"fill-rule":"evenodd",d:"M6.194 12.753a.75.75 0 0 0 1.06.053L16.5 4.44v2.81a.75.75 0 0 0 1.5 0v-4.5a.75.75 0 0 0-.75-.75h-4.5a.75.75 0 0 0 0 1.5h2.553l-9.056 8.194a.75.75 0 0 0-.053 1.06Z","clip-rule":"evenodd"})],-1)])],8,K0)])):b("",!0),ie.value[0].hasMoreDetails?(t(),r("details",J0,[k[38]||(k[38]=n("summary",{class:"cursor-pointer px-3 py-1.5 text-[11px] font-medium text-neutral-500 hover:bg-red-100/40 hover:text-neutral-800 dark:text-neutral-400 dark:hover:bg-red-900/20 dark:hover:text-neutral-200"}," Show full details ",-1)),n("div",G0,[ie.value[0].details.isJson?(t(),j(zt,{key:0,code:ie.value[0].details.text,language:"json"},null,8,["code"])):(t(),r("pre",Y0,p(ie.value[0].details.text),1))])])):b("",!0),ie.value.length>1?(t(),r("div",Q0,[(t(!0),r(Ee,null,We(ie.value.slice(1),(R,je)=>(t(),r("details",{key:je,class:"border-b border-red-200 last:border-b-0 dark:border-red-900"},[n("summary",X0,p(R.type),1),R.human?(t(),r("p",Z0,p(R.human),1)):b("",!0),R.hasMoreDetails?(t(),r("details",ef,[k[39]||(k[39]=n("summary",{class:"cursor-pointer px-3 py-1.5 text-[11px] font-medium text-neutral-500 hover:bg-red-100/40 hover:text-neutral-800 dark:text-neutral-400 dark:hover:bg-red-900/20 dark:hover:text-neutral-200"}," Show full details ",-1)),n("div",tf,[R.details.isJson?(t(),j(zt,{key:0,code:R.details.text,language:"json"},null,8,["code"])):(t(),r("pre",nf,p(R.details.text),1))])])):b("",!0)]))),128))])):b("",!0)])):b("",!0),n("div",af,[n("button",{onClick:k[11]||(k[11]=R=>s.value="request"),type:"button",class:G(["inline-flex h-7 items-center gap-1.5 rounded px-3 text-sm font-medium transition-colors",s.value==="request"?"bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-900":"text-neutral-500 hover:bg-neutral-100 hover:text-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100"])},[B(c(zr),{size:13,"stroke-width":2.25}),k[40]||(k[40]=n("span",null,"Request",-1))],2),n("button",{onClick:k[12]||(k[12]=R=>s.value="response"),type:"button",class:G(["inline-flex h-7 items-center gap-1.5 rounded px-3 text-sm font-medium transition-colors",s.value==="response"?"bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-900":"text-neutral-500 hover:bg-neutral-100 hover:text-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100"])},[B(c(jr),{size:13,"stroke-width":2.25}),k[41]||(k[41]=n("span",null,"Response",-1))],2)]),n("div",{ref_key:"tabContentRef",ref:H,class:"space-y-3"},[ut(n("div",rf,[n("div",sf,[k[43]||(k[43]=n("label",{for:"request-provider-view",class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"}," View as ",-1)),ut(n("select",{id:"request-provider-view","onUpdate:modelValue":k[13]||(k[13]=R=>ae.value=R),class:"h-8 min-w-[11rem] rounded border border-neutral-200 bg-white px-2 text-xs font-medium text-neutral-900 shadow-sm transition-colors hover:bg-neutral-50 focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 dark:border-neutral-800 dark:bg-neutral-900 dark:text-neutral-100 dark:hover:bg-neutral-800/60"},[k[42]||(k[42]=n("option",{value:"standard"},"Standard Agents",-1)),(t(!0),r(Ee,null,We(c(oe),R=>(t(),r("option",{key:R,value:R},p(c(Mc)(R)),9,of))),128))],512),[[Ga,ae.value]]),Ke.value?(t(),j(Ze,{key:0,size:"xs"})):b("",!0),U.value?(t(),r("span",lf,p(U.value),1)):b("",!0)]),d.value?(t(),r("div",df,[k[44]||(k[44]=n("div",{class:"text-xs font-semibold text-amber-800 dark:text-amber-200"}," Vision Input Filtered For This Request ",-1)),n("div",uf," This model does not support image input. Removed "+p(d.value.removedUserImageParts)+" user image part(s) and "+p(d.value.removedToolImageAttachments)+" tool image attachment(s) before sending the request. Stored thread messages remain unchanged. ",1)])):b("",!0),te.value.length>0?(t(),j(Lt,{key:1,ref_key:"toolsSectionRef",ref:J,title:`Available Tools (${te.value.length})`,"section-id":"tools",expanded:fe("tools"),"scroll-container":C.value,"sticky-offset":K.value,onToggle:k[14]||(k[14]=R=>ce("tools"))},{default:Pe(()=>[(t(!0),r(Ee,null,We(te.value,(R,je)=>(t(),r("div",{key:je,class:"border-b border-neutral-200 dark:border-neutral-800 last:border-b-0"},[n("button",{onClick:st=>Z(je),class:"w-full px-2 py-1.5 text-left hover:bg-neutral-50 dark:hover:bg-neutral-900 transition-colors flex items-center justify-between text-xs"},[n("span",ff,p(R.function?.name||R.name||"Unknown"),1),n("span",pf,p(i.value.has(je)?"▼":"▶"),1)],8,cf),ut(n("div",vf,[R.function?.description||R.description?(t(),r("div",hf,p(R.function?.description||R.description),1)):b("",!0),B(zt,{code:JSON.stringify(R,null,2),language:"json"},null,8,["code"])],512),[[_t,i.value.has(je)]])]))),128))]),_:1},8,["title","expanded","scroll-container","sticky-offset"])):b("",!0),e.log.message_history?(t(),j(Lt,{key:2,ref_key:"messagesSectionRef",ref:le,title:`Messages (${e.log.message_history_length||0} messages)`,subtitle:dt.value,"section-id":"messages",expanded:fe("messages"),"scroll-container":C.value,"sticky-offset":K.value,"copy-content":nt.value,onToggle:k[15]||(k[15]=R=>ce("messages"))},{default:Pe(()=>[B(On,{json:E.value,"thread-id":e.threadId,actions:N.value,onAction:Ie},null,8,["json","thread-id","actions"])]),_:1},8,["title","subtitle","expanded","scroll-container","sticky-offset","copy-content"])):b("",!0),e.log.system_prompt?(t(),j(Lt,{key:3,ref_key:"systemPromptSectionRef",ref:X,title:"System Prompt","section-id":"system_prompt",expanded:fe("system_prompt"),"scroll-container":C.value,"sticky-offset":K.value,"copy-content":e.log.system_prompt,onToggle:k[16]||(k[16]=R=>ce("system_prompt"))},{default:Pe(()=>[n("div",mf,[B(zt,{code:e.log.system_prompt,language:"markdown"},null,8,["code"])])]),_:1},8,["expanded","scroll-container","sticky-offset","copy-content"])):b("",!0),e.log.request_body?(t(),j(Lt,{key:4,ref_key:"requestBodySectionRef",ref:ne,title:"Full Request Body",subtitle:dt.value,"section-id":"request_body",expanded:fe("request_body"),"scroll-container":C.value,"sticky-offset":K.value,"copy-content":ze.value,onToggle:k[17]||(k[17]=R=>ce("request_body"))},{default:Pe(()=>[B(On,{json:ze.value,"thread-id":e.threadId},null,8,["json","thread-id"])]),_:1},8,["subtitle","expanded","scroll-container","sticky-offset","copy-content"])):b("",!0)],512),[[_t,s.value==="request"]]),ut(n("div",gf,[we.value&&e.log.reasoning_content?(t(),r("div",xf,[k[45]||(k[45]=n("div",{class:"flex items-center gap-1.5 border-b border-amber-200 px-3 py-1.5 text-[10px] font-medium uppercase tracking-wide text-amber-700 dark:border-amber-900/40 dark:text-amber-300"},[n("span",{class:"log-details-pulse"},"●"),n("span",null,"Thinking")],-1)),n("pre",bf,p(ke.value),1)])):b("",!0),me.value?(t(),r("div",yf,[n("div",kf,[we.value?(t(),r("span",_f,"●")):b("",!0),k[46]||(k[46]=n("span",null,"Response",-1))]),n("pre",wf,p(me.value),1)])):b("",!0),se.value.length>0?(t(),j(Lt,{key:2,title:`Tools Called (${se.value.length})`,"section-id":"tools_called",expanded:fe("tools_called"),"scroll-container":C.value,"sticky-offset":K.value,onToggle:k[18]||(k[18]=R=>ce("tools_called"))},{default:Pe(()=>[n("div",$f,[(t(!0),r(Ee,null,We(se.value,R=>(t(),r("div",{key:R.id},[n("button",{onClick:je=>Q(R.id),type:"button",class:"flex w-full items-center justify-between gap-3 px-3 py-2 text-left transition-colors hover:bg-neutral-50 dark:hover:bg-neutral-900"},[n("div",Sf,[n("span",Tf,p(R.name),1),n("span",If,p(v(R.id)),1)]),n("div",Af,[R.isQueued?(t(),r("span",Ef,"queued")):b("",!0),R.isProvider?(t(),j(c(At),{key:1,content:"Model tool call from the upstream provider's native response, before AgentBuilder normalization.",position:"top",wide:""},{default:Pe(()=>[...k[47]||(k[47]=[n("span",{class:"rounded bg-purple-100 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-purple-700 dark:bg-purple-900/30 dark:text-purple-300"},"provider",-1)])]),_:1})):b("",!0),R.isProvider&&R.status?(t(),r("span",{key:2,class:G(["text-[10px] font-medium uppercase tracking-wide",R.status==="completed"?"text-emerald-600 dark:text-emerald-400":R.status==="failed"?"text-red-600 dark:text-red-400":"text-amber-600 dark:text-amber-400"])},p(R.status),3)):b("",!0),R.isProvider?b("",!0):(t(),r("span",{key:3,class:G(["text-[10px] font-medium uppercase tracking-wide",z.value.has(R.id)?"text-emerald-600 dark:text-emerald-400":"text-neutral-400 dark:text-neutral-500"])},p(z.value.has(R.id)?"returned":"no result"),3)),n("span",Lf,p(h.value.has(R.id)?"▼":"▶"),1)])],8,Cf),ut(n("div",Rf,[R.isProvider?(t(),r("div",Bf,[k[51]||(k[51]=n("div",{class:"mb-1 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},"Provider payload",-1)),B(zt,{code:c(Ec)(R),language:"json"},null,8,["code"])])):(t(),r("div",Mf,[n("div",Df,[n("div",Ff,[k[49]||(k[49]=n("span",null,"Arguments",-1)),R.isQueued&&R.queuedAt?(t(),r("span",Pf,[k[48]||(k[48]=rt(" queued ",-1)),B(Rn,{timestamp:R.queuedAt},null,8,["timestamp"])])):b("",!0)]),B(zt,{code:c(Ma)(R.function?.arguments||"{}"),language:"json"},null,8,["code"])]),n("div",Nf,[k[50]||(k[50]=n("div",{class:"mb-1 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"}," Result ",-1)),z.value.has(R.id)?(t(),r("pre",zf,p(z.value.get(R.id)?.content||"No content"),1)):(t(),r("div",jf," no result captured "))])]))],512),[[_t,h.value.has(R.id)]])]))),128))])]),_:1},8,["title","expanded","scroll-container","sticky-offset"])):b("",!0),Le.value.length>0?(t(),j(Lt,{key:3,title:`Generated Images (${Le.value.length})`,subtitle:"returned by the model","section-id":"generated_images",expanded:fe("generated_images"),"scroll-container":C.value,"sticky-offset":K.value,onToggle:k[19]||(k[19]=R=>ce("generated_images"))},{default:Pe(()=>[n("div",Of,[(t(!0),r(Ee,null,We(Le.value,(R,je)=>(t(),r("div",{key:je,class:"relative"},[R.image_url?.url?(t(),r("img",{key:0,src:Ne(R.image_url.url)||R.image_url.url,alt:`Generated image ${je+1}`,class:"max-w-[300px] max-h-[300px] rounded-md ring-1 ring-neutral-200 object-contain dark:ring-neutral-800"},null,8,Vf)):(t(),r("div",qf," No URL "))]))),128))])]),_:1},8,["title","expanded","scroll-container","sticky-offset"])):b("",!0),e.log.reasoning_content&&!we.value?(t(),j(Lt,{key:4,title:"Reasoning Content",subtitle:"internal trace · not shown to users","section-id":"reasoning_content",expanded:fe("reasoning_content"),"scroll-container":C.value,"sticky-offset":K.value,"copy-content":ke.value||e.log.reasoning_content,onToggle:k[20]||(k[20]=R=>ce("reasoning_content"))},{default:Pe(()=>[n("pre",Uf,p(ke.value),1)]),_:1},8,["expanded","scroll-container","sticky-offset","copy-content"])):b("",!0),he.value.length>0?(t(),j(Lt,{key:5,title:`Reasoning Details (${he.value.length} blocks)`,subtitle:"structured trace from provider","section-id":"reasoning_details",expanded:fe("reasoning_details"),"scroll-container":C.value,"sticky-offset":K.value,"copy-content":JSON.stringify(he.value,null,2),onToggle:k[21]||(k[21]=R=>ce("reasoning_details"))},{default:Pe(()=>[n("div",Hf,[(t(!0),r(Ee,null,We(he.value,(R,je)=>(t(),r("div",{key:je,class:"px-3 py-2"},[n("div",Wf,[n("span",Kf,p((R.type||"unknown").replace("reasoning.","")),1),R.id?(t(),r("span",Jf," id "+p(R.id),1)):b("",!0),R.format?(t(),r("span",Gf," · "+p(R.format),1)):b("",!0),R.index!==void 0?(t(),r("span",Yf," · index "+p(R.index),1)):b("",!0)]),R.type==="reasoning.summary"&&R.summary?(t(),r("div",Qf,p(R.summary),1)):R.type==="reasoning.text"&&R.text?(t(),r(Ee,{key:1},[n("div",Xf,p(R.text),1),R.signature?(t(),r("div",Zf,[k[52]||(k[52]=n("div",{class:"mb-0.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"}," Signature ",-1)),n("div",ep,p(R.signature),1)])):b("",!0)],64)):R.type==="reasoning.encrypted"&&R.data?(t(),r("div",tp,p(R.data),1)):(t(),r("pre",np,p(JSON.stringify(R,null,2)),1))]))),128))])]),_:1},8,["title","expanded","scroll-container","sticky-offset","copy-content"])):b("",!0),e.log.response_body?(t(),j(Lt,{key:6,title:"Full Response Body","section-id":"response_body",expanded:fe("response_body"),"scroll-container":C.value,"sticky-offset":K.value,"copy-content":e.log.response_body,onToggle:k[22]||(k[22]=R=>ce("response_body"))},{default:Pe(()=>[B(On,{json:e.log.response_body,"thread-id":e.threadId},null,8,["json","thread-id"])]),_:1},8,["expanded","scroll-container","sticky-offset","copy-content"])):b("",!0)],512),[[_t,s.value==="response"]])],512)],4))}}),ip=vt(lp,[["__scopeId","data-v-49e7c568"]]),dp={class:"min-w-full"},up=["disabled"],cp={key:1},fp={key:2},pp={key:3},vp={role:"table",class:"logs-grid w-full text-sm"},hp={role:"row",class:"logs-grid-row sticky top-0 z-20 bg-white after:absolute after:inset-x-0 after:bottom-0 after:h-px after:bg-neutral-300 dark:bg-black dark:after:bg-neutral-700"},mp=["aria-selected","onClick","onKeydown","onMouseenter"],gp={role:"cell",class:"whitespace-nowrap px-3 py-2 text-xs"},xp={class:"flex min-w-0 items-center gap-1 whitespace-nowrap"},bp={key:0,class:"text-neutral-400 dark:text-neutral-600 mr-1"},yp={key:3},kp={role:"cell",class:"whitespace-nowrap px-3 py-2"},_p={class:"flex min-w-0 items-center gap-2 whitespace-nowrap"},wp={key:0,class:"inline-flex text-neutral-500 dark:text-neutral-400",title:"Stopped by user"},$p={key:1,class:"text-red-600 dark:text-red-400",title:"Error"},Cp={class:"font-mono text-xs"},Sp={role:"cell",class:"whitespace-nowrap px-3 py-2 font-mono text-xs"},Tp={key:1,class:"inline-flex items-center gap-1"},Ip={key:0,class:"inline-flex shrink-0",title:"Cached tokens dropped vs the previous request for this prompt (prompt cache miss)","aria-label":"Cached tokens dropped vs the previous request for this prompt (prompt cache miss)"},Ap={key:1,class:"text-neutral-400"},Ep=["title"],Lp={class:"min-w-0 overflow-hidden text-ellipsis whitespace-nowrap"},Rp={key:0,class:"text-emerald-600 dark:text-emerald-400",title:"Programmatically called with state.queueTool()"},Mp={key:1},Dp={key:2},Fp={key:0,class:"shrink-0 rounded border border-neutral-200 bg-neutral-50 px-1 py-px text-[10px] font-medium text-neutral-500 dark:border-neutral-800 dark:bg-neutral-900 dark:text-neutral-400"},Pp=et({__name:"LogsTable",props:{logs:{},hasMore:{type:Boolean},isLoadingMore:{type:Boolean},isLoadingForLog:{type:Boolean},autoLoadEnabled:{type:Boolean},detailsOpen:{type:Boolean},selectedLogIdForDetails:{},selectedLogId:{},hoveredLogId:{},cacheDecreasedLogIds:{}},emits:["loadMore","selectLog","navigateLog","logHover","rowRef"],setup(e,{emit:o}){const a=e;function l(P){return P.error_type==="user_interrupted"?!0:!P.error_type&&/interrupted by user|stopped by user/i.test(P.error??"")}const s=o,i=g(null),h=g(0),u=g(null);let I=null,S=!1;const $=()=>{I?.disconnect(),I=null,S=!1;const P=u.value;if(!P||typeof IntersectionObserver>"u")return;const M=P.closest(".logs-list-container");M&&(I=new IntersectionObserver(W=>{S=W.some(q=>q.isIntersecting),S&&a.autoLoadEnabled&&!a.isLoadingMore&&s("loadMore")},{root:M,threshold:0}),I.observe(P))};be(u,()=>$()),be(()=>a.isLoadingMore,async(P,M)=>{!M||P||(await Xe(),S&&a.hasMore&&a.autoLoadEnabled&&s("loadMore"))}),wt(()=>{I?.disconnect(),I=null});let m=null,y=null;const L=new Map,C=P=>{if(!P)return[];try{const M=JSON.parse(P);return Array.isArray(M)?M:[]}catch{return[]}},V=P=>[...C(P.tools_called).map(M=>({name:M,isProgrammatic:!1})),...C(P.provider_tools).map(M=>({name:M.name||M.type||"provider_tool",isProgrammatic:!1})),...C(P.queued_tools).map(M=>({name:M.function?.name||"unknown",isProgrammatic:!0}))],H=P=>P==null?"—":`$${P.toFixed(6)}`,J=P=>P.map(M=>M.name).join(", "),le=()=>y||(typeof document>"u"?null:(y=document.createElement("canvas").getContext("2d"),y&&(y.font="12px ui-sans-serif, system-ui, sans-serif"),y)),X=P=>{const M=L.get(P);if(M!==void 0)return M;const q=le()?.measureText(P).width??P.length*7;return L.set(P,q),q},ne=(P,M)=>{const W=X(J(P)),q=P.filter(te=>te.isProgrammatic).length*14,_e=M>0?X(`+${M} more`)+18:0,Ne=M>0?6:0;return W+q+_e+Ne},ue=P=>{const M=J(P);if(P.length<=1)return{tools:P,hiddenCount:0,title:M};const W=h.value-24;if(W<=0)return{tools:P.slice(0,1),hiddenCount:P.length-1,title:M};for(let q=P.length;q>0;q-=1){const _e=P.slice(0,q),Ne=P.length-q;if(ne(_e,Ne)<=W)return{tools:_e,hiddenCount:Ne,title:M}}return{tools:P.slice(0,1),hiddenCount:P.length-1,title:M}},K=()=>{h.value=i.value?.clientWidth??0};return It(async()=>{await Xe(),K(),typeof ResizeObserver<"u"&&i.value&&(m=new ResizeObserver(K),m.observe(i.value))}),wt(()=>{m?.disconnect(),m=null}),(P,M)=>(t(),r("div",dp,[e.hasMore?(t(),r("div",{key:0,ref_key:"loadOlderSentinelRef",ref:u,class:"border-b border-neutral-200 dark:border-neutral-800"},[n("button",{onClick:M[0]||(M[0]=W=>s("loadMore")),disabled:e.isLoadingMore||e.isLoadingForLog,type:"button",class:"w-full px-3 py-2 text-xs font-medium text-neutral-500 dark:text-neutral-400 hover:bg-neutral-100 dark:hover:bg-neutral-900 transition-colors disabled:cursor-not-allowed flex items-center justify-center gap-2"},[e.isLoadingMore||e.isLoadingForLog?(t(),j(Ze,{key:0,size:"xs"})):b("",!0),e.isLoadingForLog?(t(),r("span",cp,"Loading to find log...")):e.isLoadingMore?(t(),r("span",fp,"Loading older logs...")):(t(),r("span",pp,"Load older logs"))],8,up)],512)):b("",!0),n("div",vp,[n("div",hp,[M[2]||(M[2]=n("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Prompt ",-1)),M[3]||(M[3]=n("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Model ",-1)),M[4]||(M[4]=n("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Cost ",-1)),n("div",{ref_key:"toolsHeaderRef",ref:i,role:"columnheader",class:"min-w-0 whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Tools Called ",512),M[5]||(M[5]=n("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-right text-xs font-semibold"}," Called At ",-1))]),(t(!0),r(Ee,null,We(e.logs,W=>(t(),r("div",{key:W.id,ref_for:!0,ref:q=>s("rowRef",W.id,q),role:"row",tabindex:"0","aria-selected":e.selectedLogIdForDetails===W.id,class:G(["logs-grid-row logs-row logs-row-divider group relative cursor-pointer border-b transition-colors",{"last:border-b-0":e.detailsOpen,"logs-row-error":W.error&&!l(W),"logs-row-selected":e.selectedLogIdForDetails===W.id,"agents-surface-selected agents-text-selected agents-border-selected":e.selectedLogIdForDetails===W.id,"agents-surface-hover":e.selectedLogIdForDetails!==W.id&&(W.id===a.selectedLogId||W.id===a.hoveredLogId)}]),onClick:q=>s("selectLog",W),onKeydown:q=>s("navigateLog",q,W),onMouseenter:q=>s("logHover",W.id),onMouseleave:M[1]||(M[1]=q=>s("logHover",null))},[n("div",gp,[n("div",xp,[W.depth>0?(t(),r("span",bp,"└─")):b("",!0),W.retry_of_log_id?(t(),j(c(Br),{key:1,size:14,class:"text-neutral-500 dark:text-neutral-400 flex-shrink-0"})):b("",!0),!W.is_complete&&!W.prompt_name?(t(),j(Ze,{key:2,size:"xs"})):(t(),r("span",yp,p(W.prompt_name||"—"),1))])]),n("div",kp,[n("div",_p,[l(W)?(t(),r("span",wp,[B(c(Or),{size:12,class:"mt-0.5"})])):W.error?(t(),r("span",$p," ✕ ")):b("",!0),n("span",Cp,p(W.model_name||W.model),1)])]),n("div",Sp,[!W.is_complete&&(W.cost_total===null||W.cost_total===void 0)?(t(),j(Ze,{key:0,size:"xs"})):(t(),r("span",Tp,[rt(p(H(W.cost_total))+" ",1),e.cacheDecreasedLogIds?.has(W.id)?(t(),r("span",Ip,[B(c(Vr),{size:12,class:"text-amber-500 dark:text-amber-400"})])):b("",!0)]))]),n("div",{role:"cell",class:G(["min-w-0 overflow-hidden whitespace-nowrap px-3 py-2 text-xs",e.selectedLogIdForDetails===W.id?"text-neutral-800 dark:text-neutral-100":"text-neutral-600 dark:text-neutral-400"])},[!W.is_complete&&V(W).length===0?(t(),j(Ze,{key:0,size:"xs"})):V(W).length===0?(t(),r("span",Ap,"—")):(t(),r("span",{key:2,class:"flex min-w-0 items-center gap-1.5",title:ue(V(W)).title},[n("span",Lp,[(t(!0),r(Ee,null,We(ue(V(W)).tools,(q,_e)=>(t(),r(Ee,{key:_e},[q.isProgrammatic?(t(),r("span",Rp,[B(c(qr),{size:11,class:"inline-block -mt-0.5 mr-0.5"}),rt(p(q.name),1)])):(t(),r("span",Mp,p(q.name),1)),_e<ue(V(W)).tools.length-1?(t(),r("span",Dp,", ")):b("",!0)],64))),128))]),ue(V(W)).hiddenCount>0?(t(),r("span",Fp," +"+p(ue(V(W)).hiddenCount)+" more ",1)):b("",!0)],8,Ep))],2),n("div",{role:"cell",class:G(["whitespace-nowrap px-3 py-2 text-right text-xs",e.selectedLogIdForDetails===W.id?"text-neutral-800 dark:text-neutral-100":"text-neutral-500 dark:text-neutral-500"])},[B(Rn,{timestamp:W.created_at},null,8,["timestamp"])],2)],42,mp))),128))])]))}}),Np=vt(Pp,[["__scopeId","data-v-80903677"]]),zp={key:0,class:"text-neutral-500 dark:text-neutral-400 text-center py-12"},jp={key:1,class:"flex justify-center py-12"},Bp={key:2,class:"text-red-600 dark:text-red-400 text-center py-12"},Op={key:3,class:"text-neutral-500 dark:text-neutral-400 text-center py-12"},Vp={key:0,class:"flex h-full flex-col items-center justify-center gap-3 text-neutral-500 dark:text-neutral-400"},qp={key:2,class:"absolute inset-0 flex items-center justify-center bg-white/20 pointer-events-none dark:bg-black/20"},Pa=20,Up=20,Na="agentbuilder.threads.logDetailsSplitPercent",za=50,Hp=600,Wp=et({__name:"LogsPane",props:{threadId:{},selectedLogId:{},hoveredLogId:{}},emits:["logClick","logHover","logsLoaded","effectClick"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g(0),h=g(Pa),{logs:u,hasMore:I,isFetching:S,error:$,connectWebSocket:m,disconnectWebSocket:y,refetch:L}=ju(T(()=>l.threadId),{limit:T(()=>h.value),offset:T(()=>i.value),enableWebSocket:!0,order:"desc"}),C=g([]),V=g(!0),H=g(null),J=g(null),le=g(null),X=g(!1),ne=g(!1);let ue=null;const K=g(new Map),W=g(((D,xe,Be)=>Math.min(Be,Math.max(xe,D)))(((D,xe)=>{if(typeof window>"u")return xe;const Be=window.localStorage.getItem(D),E=Be?Number.parseFloat(Be):Number.NaN;return Number.isFinite(E)?E:xe})(Na,55),35,70)),q=async()=>{await Xe(),J.value&&(tt(),J.value.scrollTop=J.value.scrollHeight)},_e=()=>{const D=J.value;D&&(X.value||ue||(tt(),D.scrollTop=D.scrollHeight))};let Ne=null;const te=()=>{Ne?.disconnect(),!(typeof ResizeObserver>"u")&&Ne&&(J.value&&Ne.observe(J.value),le.value&&Ne.observe(le.value))};It(()=>{typeof ResizeObserver<"u"&&(Ne=new ResizeObserver(()=>_e()),te())}),be([J,le],()=>te()),wt(()=>{Ne?.disconnect(),Ne=null});const qe=g(null);be(u,async D=>{if(i.value===0){const xe=C.value.length;C.value=[...D].reverse(),V.value&&C.value.length>0?(await q(),V.value=!1):!X.value&&C.value.length>xe&&await q()}else{const xe=[...D].reverse(),Be=new Map,E=C.value[0]?.created_at??Number.POSITIVE_INFINITY;C.value.forEach(re=>Be.set(re.id,re)),xe.forEach(re=>Be.set(re.id,re));const N=Array.from(Be.values()).sort((re,ze)=>re.created_at-ze.created_at),Ie=N.filter(re=>re.created_at<E).length;if(C.value=N,ue&&Ie>0){const re=ue;ue=null,await Xe();const ze=J.value;ze&&(tt(),ze.scrollTop=re.scrollTop+(ze.scrollHeight-re.scrollHeight)),ne.value=!1}}},{deep:!0,immediate:!0}),be(S,(D,xe)=>{if(xe&&!D&&i.value===0&&l.threadId&&qe.value!==l.threadId&&C.value.length>0){qe.value=l.threadId;const Be=C.value[C.value.length-1];s("logsLoaded",Be?.id??null)}});const{logDetails:z,isFetching:he,refetch:ke}=Ou(T(()=>l.threadId),T(()=>H.value)),Le=D=>({endpoint:null,request_body:null,request_headers:null,response_body:null,response_headers:null,status_code:null,reasoning_content:null,input_tokens:null,cached_tokens:null,output_tokens:null,reasoning_tokens:null,total_tokens:null,latency_ms:null,time_to_first_token_ms:null,generation_ms:null,finish_reason:null,error_type:null,cost_input:null,cost_cached:null,cost_output:null,cost_router_fee:null,router_fee_percent:null,message_history_length:null,tools_available:null,tools_schema:null,message_history:null,system_prompt:null,errors:null,tool_results:null,scheduled_effects:null,source_message_role:null,source_message_content:null,source_message_created_at:null,source_message_metadata:null,...D}),we=T(()=>H.value?C.value.find(D=>D.id===H.value)??null:null),me=T(()=>{const D=we.value;return D?z.value?{...z.value,...D}:Le(D):null});be(()=>({id:we.value?.id??null,isComplete:we.value?.is_complete??!1}),(D,xe)=>{!D.id||!D.isComplete||xe?.id!==D.id||xe.isComplete||ke()});const Se=g(null);be(me,D=>{D?Se.value=D:H.value||(Se.value=null)},{immediate:!0});const Ae=T(()=>H.value?pe.value.findIndex(D=>D.id===H.value):-1),se=T(()=>Ae.value>0),Z=T(()=>Ae.value>=0&&Ae.value<pe.value.length-1),Q=()=>{if(se.value){const D=pe.value[Ae.value-1];F(D)}},ce=()=>{if(Z.value){const D=pe.value[Ae.value+1];F(D)}},fe=async D=>{await Xe(),K.value.get(D)?.focus({preventScroll:!0})},Fe=(D,xe)=>{const Be=pe.value.findIndex(Ie=>Ie.id===xe.id);if(Be<0)return;let E=Be;if(D.key==="ArrowDown")E=Math.min(pe.value.length-1,Be+1);else if(D.key==="ArrowUp")E=Math.max(0,Be-1);else if(D.key==="Home")E=0;else if(D.key==="End")E=pe.value.length-1;else return;D.preventDefault();const N=pe.value[E];N&&(F(N),fe(N.id))},Ye=D=>{if(!J.value)return;const xe=K.value.get(D);if(!xe)return;const Be=J.value,E=xe.getBoundingClientRect(),N=Be.getBoundingClientRect(),Ie=Be.querySelectorAll(".sticky");let re=0;Ie.forEach(d=>{re+=d.getBoundingClientRect().height}),re+=16;const ze=E.top<N.top+re,dt=E.bottom>N.bottom;ze?(tt(),Be.scrollBy({top:E.top-N.top-re,behavior:"smooth"})):dt&&(tt(),Be.scrollBy({top:E.bottom-N.bottom,behavior:"smooth"}))},F=D=>{s("logClick",D.id),H.value=D.id;const xe=C.value[C.value.length-1];xe&&xe.id!==D.id&&(X.value=!0)},$e=(D,xe)=>{xe?K.value.set(D,xe):K.value.delete(D)},ye=(D,xe)=>{$e(D,xe instanceof HTMLElement?xe:null)};be(H,async D=>{D&&(await Xe(),Ye(D))}),be(()=>l.selectedLogId,D=>{D&&(H.value=D)},{immediate:!0});const Re=D=>{H.value=D},Ve=async D=>{await Xe();const xe=K.value.get(D);if(xe&&J.value){const Be=J.value,E=xe.getBoundingClientRect(),N=Be.getBoundingClientRect(),Ie=Be.querySelector("thead"),re=Be.querySelector(":scope > div > div.sticky");let ze=0;Ie&&(ze+=Ie.getBoundingClientRect().height),re&&(ze+=re.getBoundingClientRect().height),ze+=40;const dt=E.top<N.top+ze,d=E.bottom>N.bottom;dt?(tt(),Be.scrollBy({top:E.top-N.top-ze,behavior:"smooth"})):d&&(tt(),Be.scrollBy({top:E.bottom-N.bottom,behavior:"smooth"}))}},He=D=>{if(D.length===0)return;const xe=new Set(D);C.value=C.value.filter(Be=>!xe.has(Be.id))},ie=g(!1),de=D=>C.value.some(xe=>xe.id===D),ae=D=>C.value.find(xe=>xe.id===D)??null,Me=(D,xe=3e3)=>new Promise(Be=>{const E=be(()=>C.value.length,Ie=>{Ie!==D&&(clearTimeout(N),E(),Be(!0))}),N=setTimeout(()=>{E(),Be(!1)},xe)});o({scrollToLog:Ve,selectLogById:Re,removeLogsByIds:He,loadUntilLogId:async D=>{if(de(D))return!0;if(!I.value)return!1;ie.value=!0;const xe=100,Be=50,E=h.value;try{let N=0;for(;I.value&&!de(D)&&N<Be;){N++;const Ie=C.value.length;if(i.value+=h.value,h.value=xe,await L(),!await Me(Ie))break}return de(D)}finally{h.value=E,i.value=Math.max(0,C.value.length-E),ie.value=!1}},hasLog:de,getLog:ae,setLoadingForLog:D=>{ie.value=D},waitForLogRow:async(D,xe=2e3)=>{const Be=Date.now();for(;Date.now()-Be<xe;){if(K.value.has(D))return!0;if(!pe.value.some(N=>N.id===D)){await Xe(),await new Promise(N=>setTimeout(N,16));continue}await Xe(),await new Promise(N=>setTimeout(N,16))}return!1}});const oe=()=>{if(ne.value||!I.value||S.value)return;ne.value=!0;const D=J.value;ue={scrollHeight:D?.scrollHeight??0,scrollTop:D?.scrollTop??0},i.value+=h.value,h.value=Up};be(S,(D,xe)=>{xe&&!D&&ne.value&&setTimeout(()=>{ue&&(ue=null,ne.value=!1)},300)}),be(()=>l.threadId,async D=>{D?(y(),m()):y(),i.value=0,h.value=Pa,C.value=[],H.value=null,X.value=!1,V.value=!0,ue=null,ne.value=!1},{immediate:!0});let Ue=0;const tt=()=>{Ue=Date.now()},nt=D=>D.scrollHeight-D.scrollTop-D.clientHeight,ge=()=>{const D=J.value;if(D){if(nt(D)<za){X.value=!1;return}Date.now()-Ue>Hp&&(X.value=!0)}},O=D=>{D.deltaY<0&&(X.value=!0)},ee=()=>{const D=J.value;D&&nt(D)>=za&&(X.value=!0)},Oe=T(()=>Vu(C.value)),pe=T(()=>{const D=new Map,xe=new Map;C.value.forEach(N=>{D.set(N.id,N);const Ie=N.parent_log_id;Ie&&(xe.has(Ie)||xe.set(Ie,[]),xe.get(Ie).push(N))});const Be=[],E=(N,Ie)=>{Be.push({...N,depth:Ie}),(xe.get(N.id)||[]).forEach(ze=>{E(ze,Ie+1)})};return C.value.forEach(N=>{N.parent_log_id||E(N,0)}),Be});return(D,xe)=>(t(),j(Pn,{"height-percent":W.value,"onUpdate:heightPercent":xe[3]||(xe[3]=Be=>W.value=Be),"storage-key":Na,title:"Resize logs and details"},Ut({main:Pe(()=>[n("div",{ref_key:"logsScrollContainer",ref:J,class:"logs-list-container h-full overflow-y-auto overflow-x-auto",onScroll:ge,onWheelPassive:O,onTouchmovePassive:ee},[e.threadId?c(S)&&i.value===0?(t(),r("div",jp,[B(Ze)])):c($)?(t(),r("div",Bp," Error loading logs: "+p(c($)),1)):C.value.length===0?(t(),r("div",Op," No logs yet ")):(t(),r("div",{key:4,ref_key:"logsContentRef",ref:le},[B(Np,{logs:pe.value,"has-more":c(I),"is-loading-more":ne.value,"is-loading-for-log":ie.value,"auto-load-enabled":!V.value&&!ie.value,"cache-decreased-log-ids":Oe.value,"details-open":!!me.value,"selected-log-id-for-details":H.value,"selected-log-id":l.selectedLogId,"hovered-log-id":l.hoveredLogId,onLoadMore:oe,onSelectLog:F,onNavigateLog:Fe,onLogHover:xe[0]||(xe[0]=Be=>s("logHover",Be)),onRowRef:ye},null,8,["logs","has-more","is-loading-more","is-loading-for-log","auto-load-enabled","cache-decreased-log-ids","details-open","selected-log-id-for-details","selected-log-id","hovered-log-id"])],512)):(t(),r("div",zp," Select a thread to view logs "))],544)]),_:2},[Se.value||ie.value&&H.value?{name:"detail",fn:Pe(()=>[ie.value&&!me.value?(t(),r("div",Vp,[B(Ze),xe[4]||(xe[4]=n("span",{class:"text-sm"},"Loading log...",-1))])):Se.value?(t(),j(ip,{key:1,log:Se.value,"thread-id":e.threadId,"has-previous":se.value,"has-next":Z.value,onClose:xe[1]||(xe[1]=Be=>H.value=null),onPrevious:Q,onNext:ce,onEffectClick:xe[2]||(xe[2]=Be=>s("effectClick",Be))},null,8,["log","thread-id","has-previous","has-next"])):b("",!0),c(he)&&Se.value?(t(),r("div",qp,[B(Ze)])):b("",!0)]),key:"0"}:void 0]),1032,["height-percent"]))}}),Kp=vt(Wp,[["__scopeId","data-v-b7b53e83"]]),Jp={class:"code-editor flex min-h-0 flex-col"},Gp={key:0,class:"mt-1 text-sm text-red-500"},Yp=et({__name:"CodeEditor",props:{modelValue:{},language:{default:"plaintext"},readonly:{type:Boolean,default:!1},error:{default:null},rows:{},height:{},placeholder:{},minimap:{type:Boolean,default:!1},lineNumbers:{default:"on"},wordWrap:{default:"off"},formatOnBlur:{type:Boolean,default:!1},framed:{type:Boolean,default:!0}},emits:["update:modelValue","blur"],setup(e,{emit:o}){self.MonacoEnvironment={getWorker(X,ne){return ne==="json"?new ys:ne==="css"||ne==="scss"||ne==="less"?new ks:ne==="html"||ne==="handlebars"||ne==="razor"?new _s:ne==="typescript"||ne==="javascript"?new ws:new $s}};const a=e,l=o,s={bash:"shell",js:"javascript",md:"markdown",sh:"shell",text:"plaintext",ts:"typescript",txt:"plaintext"},i=g(null);let h=null,u=null,I=!1,S=!1;const $=T(()=>{const X=a.language?.trim().toLowerCase()||"plaintext";return s[X]??X}),m=T(()=>a.height?a.height:a.rows?`${a.rows*1.5}rem`:"100%"),y=()=>document.documentElement.classList.contains("dark"),L=()=>{S||(S=!0,rn.defineTheme("agentbuilder-light",{base:"vs",inherit:!0,rules:[{token:"comment",foreground:"6A737D",fontStyle:"italic"},{token:"keyword",foreground:"D73A49"},{token:"number",foreground:"005CC5"},{token:"regexp",foreground:"032F62"},{token:"string",foreground:"22863A"},{token:"type",foreground:"6F42C1"},{token:"delimiter",foreground:"24292F"},{token:"identifier",foreground:"24292F"},{token:"tag",foreground:"22863A"},{token:"attribute.name",foreground:"6F42C1"}],colors:{"editor.background":"#FFFFFF","editor.foreground":"#24292F","editorCursor.foreground":"#0969DA","editorIndentGuide.activeBackground1":"#8C959F","editorIndentGuide.background1":"#D0D7DE","editorLineNumber.activeForeground":"#0969DA","editorLineNumber.foreground":"#6E7781","editor.lineHighlightBackground":"#F6F8FA","editor.selectionBackground":"#0969DA33","editor.inactiveSelectionBackground":"#AFD0F366"}}),rn.defineTheme("agentbuilder-dark",{base:"vs-dark",inherit:!0,rules:[{token:"comment",foreground:"8B949E",fontStyle:"italic"},{token:"keyword",foreground:"FF7B72"},{token:"number",foreground:"79C0FF"},{token:"regexp",foreground:"A5D6FF"},{token:"string",foreground:"A5D6FF"},{token:"type",foreground:"D2A8FF"},{token:"delimiter",foreground:"C9D1D9"},{token:"identifier",foreground:"C9D1D9"},{token:"tag",foreground:"7EE787"},{token:"attribute.name",foreground:"D2A8FF"}],colors:{"editor.background":"#0D1117","editor.foreground":"#C9D1D9","editorCursor.foreground":"#58A6FF","editorIndentGuide.activeBackground1":"#6E7681","editorIndentGuide.background1":"#30363D","editorLineNumber.activeForeground":"#58A6FF","editorLineNumber.foreground":"#6E7681","editor.lineHighlightBackground":"#161B22","editor.selectionBackground":"#1F6FEB55","editor.inactiveSelectionBackground":"#1F6FEB33"}}))},C=()=>y()?"agentbuilder-dark":"agentbuilder-light",V=()=>({acceptSuggestionOnCommitCharacter:!0,automaticLayout:!0,bracketPairColorization:{enabled:!0},cursorBlinking:"smooth",detectIndentation:!1,fixedOverflowWidgets:!0,folding:!0,fontFamily:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace',fontSize:13,formatOnPaste:!0,formatOnType:!0,glyphMargin:!1,lineDecorationsWidth:8,lineHeight:21,lineNumbers:a.lineNumbers,lineNumbersMinChars:3,minimap:{enabled:a.minimap},padding:{top:10,bottom:10},placeholder:a.placeholder,quickSuggestions:{comments:"off",other:"on",strings:"on"},readOnly:a.readonly,renderLineHighlight:"line",scrollBeyondLastLine:!1,scrollbar:{horizontal:"auto",horizontalScrollbarSize:10,vertical:"auto",verticalScrollbarSize:10},smoothScrolling:!0,tabSize:2,wordWrap:a.wordWrap}),H=()=>{h&&rn.setTheme(C())},J=()=>{if(!(!h||a.readonly||$.value!=="json"))try{const X=h.getValue(),ne=JSON.stringify(JSON.parse(X),null,2);ne!==X&&(I=!0,h.setValue(ne),l("update:modelValue",ne),I=!1)}catch{}},le=()=>{i.value&&(L(),h=rn.create(i.value,{value:a.modelValue||"",language:$.value,theme:C(),...V()}),i.value.__monacoEditor=h,h.onDidChangeModelContent(()=>{!I&&h&&l("update:modelValue",h.getValue())}),h.onDidBlurEditorText(()=>{l("blur"),a.formatOnBlur&&J()}))};return It(async()=>{await Xe(),le(),u=new MutationObserver(H),u.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]})}),Kt(()=>{u?.disconnect(),u=null,i.value&&delete i.value.__monacoEditor,h?.dispose(),h=null}),be(()=>a.modelValue,X=>{h&&h.getValue()!==X&&(I=!0,h.setValue(X||""),I=!1)}),be($,X=>{const ne=h?.getModel();ne&&rn.setModelLanguage(ne,X)}),be(()=>[a.readonly,a.minimap,a.lineNumbers,a.wordWrap,a.placeholder,a.framed],()=>{h?.updateOptions(V())}),(X,ne)=>(t(),r("div",Jp,[n("div",{class:G(["min-h-0 flex-1 overflow-hidden bg-white dark:bg-neutral-950",[e.framed?"rounded border":"",e.framed&&e.error?"border-red-500":"",e.framed&&!e.error?"border-neutral-200 dark:border-neutral-800":""]]),style:gt({height:m.value})},[n("div",{ref_key:"containerRef",ref:i,class:"monaco-editor-container h-full w-full"},null,512)],6),e.error?(t(),r("div",Gp,p(e.error),1)):b("",!0)]))}}),fa=vt(Yp,[["__scopeId","data-v-12a765de"]]),Qp={class:"h-full min-h-0 overflow-hidden"},Xp={class:"flex h-full min-h-0 flex-col overflow-hidden"},Zp={class:"flex items-center gap-2 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},ev={class:"flex min-w-0 flex-1 items-center gap-2"},tv={class:"hidden shrink-0 text-xs tabular-nums text-neutral-500 sm:block"},nv=["disabled"],av={class:"min-h-0 flex-1 overflow-auto"},rv={key:0,class:"py-12 text-center text-sm text-neutral-500"},sv={key:1,class:"flex justify-center py-12"},ov={key:2,class:"py-12 text-center text-sm text-red-600 dark:text-red-400"},lv={key:3,class:"py-12 text-center text-sm text-neutral-500"},iv={key:4,class:"flex h-full min-h-0 flex-col"},dv={key:0,class:"border-b border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700 dark:border-red-900/70 dark:bg-red-950/30 dark:text-red-300"},uv={class:"min-h-0 flex-1 overflow-auto bg-white dark:bg-neutral-950"},cv={class:"w-full min-w-[70rem] table-fixed text-left text-xs"},fv={class:"divide-y divide-neutral-100 dark:divide-neutral-900"},pv={key:0,class:"text-[10px] font-semibold uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},vv={scope:"rowgroup",colspan:"8",class:"sticky top-[28px] z-[9] border-y border-neutral-200 bg-neutral-50/95 px-4 py-2 text-left font-semibold dark:border-neutral-800 dark:bg-neutral-900/95"},hv={class:"ml-1 rounded bg-neutral-200 px-1.5 py-0.5 text-[9px] text-neutral-600 dark:bg-neutral-800 dark:text-neutral-300"},mv=["aria-selected","onClick","onKeydown"],gv={class:"whitespace-nowrap px-4 py-2 align-middle"},xv={class:"flex items-center gap-1.5"},bv=["disabled","title","aria-label","onClick"],yv=["disabled","title","aria-label","onClick"],kv={key:2,class:"px-2 text-neutral-300 dark:text-neutral-700"},_v={class:"whitespace-nowrap px-4 py-2 align-middle"},wv={class:"min-w-0 px-3 py-2 align-middle"},$v={class:"truncate font-mono text-xs text-neutral-950 dark:text-neutral-100"},Cv=["title"],Sv={key:0,class:"mt-0.5 truncate text-[11px] font-medium text-neutral-500 dark:text-neutral-400"},Tv={key:1,class:"mt-1 inline-flex max-w-full items-center gap-1 rounded border border-accent-200/80 bg-accent-50/70 px-1.5 py-0.5 text-[10px] font-medium leading-none text-accent-700 dark:border-accent-900/70 dark:bg-accent-950/25 dark:text-accent-300"},Iv={class:"truncate"},Av={class:"whitespace-nowrap px-3 py-2 align-middle text-xs text-neutral-500 dark:text-neutral-400"},Ev={class:"whitespace-nowrap px-3 py-2 align-middle"},Lv={class:"text-xs font-medium text-neutral-800 dark:text-neutral-100"},Rv={key:0,class:"text-[11px] text-neutral-400"},Mv={class:"whitespace-nowrap px-3 py-2 align-middle text-xs text-neutral-500 dark:text-neutral-400"},Dv={class:"whitespace-nowrap px-3 py-2 text-right align-middle text-xs tabular-nums text-neutral-500"},Fv={class:"min-w-0 px-4 py-2 align-middle"},Pv=["title"],Nv={key:0,class:"mt-0.5 truncate text-[11px] text-red-600 dark:text-red-400"},zv=["disabled"],jv={class:"flex h-full min-h-0 flex-col overflow-hidden"},Bv={class:"flex items-center gap-3 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},Ov={class:"min-w-0 flex-1"},Vv={class:"truncate font-mono text-sm font-medium text-neutral-950 dark:text-neutral-100"},qv={class:"truncate text-[11px] text-neutral-500"},Uv={key:0,class:"mt-0.5 text-[11px] font-medium text-neutral-500 dark:text-neutral-400"},Hv={class:"flex shrink-0 items-center gap-2"},Wv=["disabled","title","aria-label"],Kv=["disabled","title","aria-label"],Jv={class:"grid shrink-0 grid-cols-2 gap-x-4 gap-y-2 border-b border-neutral-200 px-3 py-3 text-xs dark:border-neutral-800"},Gv={class:"mt-0.5 text-neutral-900 dark:text-neutral-100"},Yv={class:"mt-0.5 text-neutral-900 dark:text-neutral-100"},Qv={class:"mt-0.5 text-neutral-900 dark:text-neutral-100"},Xv={class:"mt-0.5 tabular-nums text-neutral-900 dark:text-neutral-100"},Zv={class:"mt-0.5"},eh={key:0,class:"inline-flex items-center gap-1 rounded border border-accent-200/80 bg-accent-50/80 px-1.5 py-0.5 text-[10px] font-medium text-accent-700 dark:border-accent-900/70 dark:bg-accent-950/30 dark:text-accent-300"},th={key:1,class:"text-neutral-900 dark:text-neutral-100"},nh={key:0,class:"mt-0.5 text-[11px] text-neutral-500 dark:text-neutral-400"},ah={key:0},rh={class:"mt-0.5 inline-flex max-w-full items-center gap-1 rounded border border-accent-200/80 bg-accent-50/70 px-1.5 py-0.5 text-[10px] font-medium text-accent-700 dark:border-accent-900/70 dark:bg-accent-950/25 dark:text-accent-300"},sh={class:"truncate font-mono"},oh={key:0,class:"border-b border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700 dark:border-red-900/70 dark:bg-red-950/30 dark:text-red-300"},lh={class:"flex min-h-0 flex-1 flex-col overflow-hidden"},ih={class:"flex items-start gap-2"},dh={class:"min-w-0"},uh={class:"font-medium text-neutral-950 dark:text-neutral-100"},ch={class:"mt-1 text-neutral-500 dark:text-neutral-400"},fh={class:"mt-1 truncate text-neutral-500 dark:text-neutral-400"},ph={class:"font-mono text-neutral-700 dark:text-neutral-200"},vh={class:"mt-1 truncate font-mono text-[11px] text-neutral-400"},hh={class:"mt-3 flex justify-end gap-2"},ja=100,mh=2500,gh="agentbuilder.threads.effectDetailSplitPercent",xh=260,bh=et({__name:"ThreadEffectsPane",props:{threadId:{},active:{type:Boolean,default:!0},selectedEffectId:{},selectedEffectRef:{}},emits:["count-changed"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g([]),h=g(0),u=g(0),I=g(!1),S=g(!1),$=g(null),m=g(null),y=g(Date.now()),L=g(null),C=g(50),V=g(new Map),H=g(null),J=g(null),le=g(null),X=g("run"),ne=g(null),ue=g(null);let K=null,P=!1,M=0;const W=T(()=>i.value.length<h.value),q=T(()=>i.value.filter(Qt)),_e=T(()=>i.value.filter(d=>!Qt(d))),Ne=T(()=>{const d=[];return q.value.length>0&&(d.push({type:"section",key:"section-upcoming",label:"Upcoming",count:q.value.length}),d.push(...q.value.map(f=>({type:"effect",key:f.id,effect:f})))),_e.value.length>0&&(d.push({type:"section",key:"section-history",label:"History",count:_e.value.length}),d.push(..._e.value.map(f=>({type:"effect",key:f.id,effect:f})))),d}),te=T(()=>L.value?i.value.find(d=>d.id===L.value)??null:null),qe=T(()=>le.value?i.value.find(d=>d.id===le.value)??null:null),z=T(()=>ue.value?{top:`${ue.value.top}px`,left:`${ue.value.left}px`}:{}),he=T(()=>!!te.value),ke=T(()=>te.value?La(te.value.args):"{}"),Le=T(()=>{if(!l.threadId)return"";if(h.value===0)return"No effects";const d=Math.max(h.value-u.value,_e.value.length);return`${u.value} upcoming | ${d} history | ${i.value.length} of ${h.value}`});function we(){return!!l.threadId&&l.active!==!1&&!I.value&&!S.value&&!P&&(typeof document>"u"||document.visibilityState==="visible")}function me(d){const f=d?i.value.find(_=>_.id===d):null;if(f){L.value=f.id;return}if(d){L.value=d;return}L.value&&i.value.some(_=>_.id===L.value)||(L.value=i.value[0]?.id??null)}function Se(d){L.value=d.id}function Ae(d,f){f instanceof HTMLElement?V.value.set(d,f):V.value.delete(d)}async function se(d){await Xe(),V.value.get(d)?.focus({preventScroll:!0})}async function Z(d){await Xe();const f=V.value.get(d);f?.scrollIntoView({block:"nearest"}),f?.focus({preventScroll:!0})}async function Q(d){L.value=d,me(d),await Z(d)}async function ce(d){if(d.id){await Q(d.id);return}const f=i.value.find(_=>Ra(_,d));f&&await Q(f.id)}function fe(d){if(d.id)return me(d.id),!0;const f=i.value.find(_=>Ra(_,d));return f?(me(f.id),!0):!1}function Fe(d,f){const _=i.value.findIndex(ot=>ot.id===f.id);if(_<0)return;let ve=_;if(d.key==="ArrowDown")ve=Math.min(i.value.length-1,_+1);else if(d.key==="ArrowUp")ve=Math.max(0,_-1);else if(d.key==="Home")ve=0;else if(d.key==="End")ve=i.value.length-1;else return;d.preventDefault();const De=i.value[ve];De&&(Se(De),se(De.id))}function Ye(d){switch(d){case"pending":return"Pending";case"processing":return"Running";case"completed":return"Completed";case"failed":return"Failed";case"agent_canceled":case"user_canceled":return"Cancelled"}}function F(d){switch(d){case"pending":return"bg-sky-50 text-sky-700 dark:bg-sky-950/40 dark:text-sky-300";case"processing":return"bg-amber-50 text-amber-700 dark:bg-amber-950/40 dark:text-amber-300";case"completed":return"bg-emerald-50 text-emerald-700 dark:bg-emerald-950/40 dark:text-emerald-300";case"failed":return"bg-red-50 text-red-700 dark:bg-red-950/40 dark:text-red-300";case"agent_canceled":return"bg-neutral-100 text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300";case"user_canceled":return"bg-red-50 text-red-700 dark:bg-red-950/40 dark:text-red-300"}}function $e(d){return Qt(d)?uc(d.scheduledAt,y.value):Rt(d.scheduledAt)}function ye(d){return Qt(d)?Rt(d.scheduledAt):""}function Re(d){return d.status==="pending"?"Not run":d.status==="processing"?"Running":He(d)?"-":Rt(d.completedAt)}function Ve(d){return d.split("-")[0]||d}function He(d){return d.status==="agent_canceled"||d.status==="user_canceled"}function ie(d){return d.status==="agent_canceled"?"agent cancelled":d.status==="user_canceled"?"user cancelled":""}function de(d){return d.replayedFrom?"Manual rerun":d.manualRun?"Manual run":""}function ae(d){return d.replayedFrom?`Manual rerun of ${Ve(d.replayedFrom)}`:d.manualRun?"Manual run":""}function Me(d){return He(d)?"":dc(d)}function Ke(d){const f=Me(d);return f.startsWith("-")?"text-sky-700 dark:text-sky-300":f.startsWith("+")?"text-orange-700 dark:text-orange-300":"text-neutral-500 dark:text-neutral-400"}function U(d){return d.status==="pending"?(d.scheduledAt>9999999999?Math.floor(d.scheduledAt/1e3):d.scheduledAt)<=y.value?"Complete overdue effect":"Run scheduled effect now":d.status==="completed"||d.status==="failed"||He(d)?"Replay effect":"Effect is running"}function Ce(d){return d.status==="pending"?(d.scheduledAt>9999999999?Math.floor(d.scheduledAt/1e3):d.scheduledAt)<=y.value?"Complete":"Run now":d.status==="completed"||d.status==="failed"||He(d)?"Replay":"Run"}function oe(d){return d.status==="pending"||d.status==="completed"||d.status==="failed"||He(d)}function Ue(d){return d.status==="pending"}function tt(d){return Ue(d)?"Cancel scheduled effect":"Effect cannot be cancelled"}function nt(d){return X.value==="cancel"?tt(d):U(d)}function ge(d){return X.value==="cancel"?"Cancel effect":Ce(d)}function O(d){return X.value==="cancel"?"This will keep the effect in history as user cancelled.":d.status==="pending"?"This will execute the scheduled effect now for this thread.":"This will create a new immediate run linked back to this effect."}function ee(d,f){return le.value===d.id&&X.value===f}function Oe(d){const f=d.getBoundingClientRect(),_=8,ve=Math.min(Math.max(f.right+_,_),Math.max(_,window.innerWidth-xh-_)),De=Math.min(Math.max(f.top-_,_),Math.max(_,window.innerHeight-160));ue.value={top:De,left:ve}}function pe(d,f,_="run"){if(!(_==="cancel"?Ue(d):oe(d))||H.value)return;const De=f.currentTarget;De instanceof HTMLElement&&(D(),le.value=d.id,X.value=_,Oe(De),document.addEventListener("pointerdown",xe),document.addEventListener("keydown",Be),window.addEventListener("resize",D),window.addEventListener("scroll",D,!0))}function D(){le.value=null,X.value="run",ue.value=null,document.removeEventListener("pointerdown",xe),document.removeEventListener("keydown",Be),window.removeEventListener("resize",D),window.removeEventListener("scroll",D,!0)}function xe(d){const f=d.target;f instanceof Node&&(ne.value?.contains(f)||D())}function Be(d){d.key==="Escape"&&D()}async function E(d){if(!(!l.threadId||!oe(d)||H.value)){D(),$.value=null,H.value=d.id,J.value="run";try{const f=await fetch(Qe(`/api/threads/${l.threadId}/effects/${d.id}/run`),{method:"POST"});if(!f.ok)throw new Error(await re(f,"Failed to run effect"));await ze()}catch(f){$.value=f instanceof Error?f.message:"Failed to run effect",await ze({quiet:!0})}finally{H.value=null,J.value=null}}}async function N(d){if(!(!l.threadId||!Ue(d)||H.value)){D(),$.value=null,H.value=d.id,J.value="cancel";try{const f=await fetch(Qe(`/api/threads/${l.threadId}/effects/${d.id}/cancel`),{method:"POST"});if(!f.ok)throw new Error(await re(f,"Failed to cancel effect"));await ze()}catch(f){$.value=f instanceof Error?f.message:"Failed to cancel effect",await ze({quiet:!0})}finally{H.value=null,J.value=null}}}async function Ie(d){if(X.value==="cancel"){await N(d);return}await E(d)}async function re(d,f){try{const _=await d.json();return typeof _.error=="string"?_.error:f}catch{return f}}async function ze(d={}){if(!l.threadId){i.value=[],h.value=0,u.value=0,L.value=null;return}const f=++M,_=d.append===!0,ve=d.quiet===!0;ve&&(P=!0),ve||(_?S.value=!0:I.value=!0),ve||(m.value=null),ve||($.value=null);const De=new URLSearchParams,ot=Math.min(Math.max(i.value.length,ja),200);De.set("limit",String(_?ja:ot)),De.set("offset",String(_?i.value.length:0));try{const it=await fetch(Qe(`/api/threads/${l.threadId}/effects?${De}`));if(!it.ok)throw new Error(await re(it,"Failed to load effects"));const ht=lc(await it.json());if(f!==M)return;i.value=pc(_?[...i.value,...ht.effects]:ht.effects),h.value=ht.total,u.value=ht.upcomingCount,y.value=Date.now(),l.selectedEffectRef?!ve&&l.active!==!1?await ce(l.selectedEffectRef):fe(l.selectedEffectRef):me(l.selectedEffectId||L.value)}catch(it){f===M&&(!ve||i.value.length===0)&&(m.value=it instanceof Error?it.message:"Failed to load effects")}finally{ve&&(P=!1),f===M&&!ve&&(I.value=!1,S.value=!1)}}const dt=()=>{we()&&ze({quiet:!0})};return be(()=>l.threadId,()=>{i.value=[],h.value=0,u.value=0,L.value=null,m.value=null,$.value=null,D(),ze()},{immediate:!0}),be(()=>l.selectedEffectId,d=>{d&&Q(d)}),be(()=>l.selectedEffectRef,d=>{d&&ce(d)}),be(u,d=>s("count-changed",d),{immediate:!0}),be(()=>l.threadId,()=>{K&&clearInterval(K),K=null,l.threadId&&(K=setInterval(()=>{l.active!==!1&&(y.value=Date.now(),we()&&ze({quiet:!0}))},mh))},{immediate:!0}),be(()=>l.active,d=>{if(!d){D();return}we()&&ze({quiet:i.value.length>0})}),typeof document<"u"&&document.addEventListener("visibilitychange",dt),wt(()=>{K&&clearInterval(K),D(),typeof document<"u"&&document.removeEventListener("visibilitychange",dt)}),o({selectEffectById:Q,selectEffectByReference:ce}),(d,f)=>(t(),r("div",Qp,[B(Pn,{"height-percent":C.value,"onUpdate:heightPercent":f[4]||(f[4]=_=>C.value=_),"storage-key":gh,title:"Resize effects browser and detail"},Ut({main:Pe(()=>[n("div",Xp,[n("div",Zp,[n("div",ev,[B(c(St),{size:15,class:"shrink-0 text-neutral-400"}),f[7]||(f[7]=n("div",{class:"truncate text-sm font-medium text-neutral-900 dark:text-neutral-100"}," Effects ",-1))]),n("div",tv,p(Le.value),1),n("button",{type:"button",class:"inline-flex h-8 w-8 items-center justify-center rounded text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-950 disabled:opacity-50 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",disabled:!e.threadId||I.value,title:"Refresh effects","aria-label":"Refresh effects",onClick:f[0]||(f[0]=_=>ze())},[I.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(Fn),{key:1,size:15}))],8,nv)]),n("div",av,[e.threadId?I.value&&i.value.length===0?(t(),r("div",sv,[B(Ze)])):m.value?(t(),r("div",ov,p(m.value),1)):i.value.length===0?(t(),r("div",lv,[B(c(St),{class:"mx-auto mb-2 h-8 w-8 opacity-40"}),f[8]||(f[8]=rt(" No effects scheduled or completed ",-1))])):(t(),r("div",iv,[$.value?(t(),r("div",dv,p($.value),1)):b("",!0),n("div",uv,[n("table",cv,[f[9]||(f[9]=n("colgroup",null,[n("col",{class:"w-24"}),n("col",{class:"w-28"}),n("col",{class:"w-56"}),n("col",{class:"w-36"}),n("col",{class:"w-40"}),n("col",{class:"w-36"}),n("col",{class:"w-20"}),n("col")],-1)),f[10]||(f[10]=n("thead",{class:"sticky top-0 z-10 border-b border-neutral-200 bg-neutral-50 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:border-neutral-800 dark:bg-neutral-900/60 dark:text-neutral-400"},[n("tr",null,[n("th",{scope:"col",class:"px-4 py-2 font-medium"}," Actions "),n("th",{scope:"col",class:"px-4 py-2 font-medium"},"Status"),n("th",{scope:"col",class:"px-3 py-2 font-medium"},"Effect"),n("th",{scope:"col",class:"px-3 py-2 font-medium"},"Created"),n("th",{scope:"col",class:"px-3 py-2 font-medium"}," Scheduled "),n("th",{scope:"col",class:"px-3 py-2 font-medium"}," Completed "),n("th",{scope:"col",class:"px-3 py-2 text-right font-medium"}," Attempts "),n("th",{scope:"col",class:"px-4 py-2 font-medium"}," Arguments ")])],-1)),n("tbody",fv,[(t(!0),r(Ee,null,We(Ne.value,_=>(t(),r(Ee,{key:_.key},[_.type==="section"?(t(),r("tr",pv,[n("th",vv,[n("span",null,p(_.label),1),n("span",hv,p(_.count),1)])])):(t(),r("tr",{key:1,ref_for:!0,ref:ve=>Ae(_.effect.id,ve),tabindex:"0","aria-selected":L.value===_.effect.id,class:G(["cursor-pointer transition-colors focus:outline-none",L.value===_.effect.id?"agents-surface-selected":"hover:bg-neutral-50 dark:hover:bg-neutral-900"]),onClick:ve=>Se(_.effect),onKeydown:[Bt(Ge(ve=>Se(_.effect),["prevent"]),["enter"]),Bt(Ge(ve=>Se(_.effect),["prevent"]),["space"]),ve=>Fe(ve,_.effect)]},[n("td",gv,[n("div",xv,[oe(_.effect)?(t(),r("button",{key:0,type:"button",class:G(["inline-flex h-7 w-7 items-center justify-center rounded border border-neutral-300 bg-white text-neutral-950 transition-colors hover:border-neutral-400 hover:bg-neutral-50 disabled:cursor-not-allowed disabled:text-neutral-400 disabled:opacity-70 dark:border-black dark:bg-black dark:text-white dark:hover:border-neutral-950 dark:hover:bg-neutral-950 dark:disabled:text-neutral-600",{"ring-2 ring-black/10 dark:ring-white/20":ee(_.effect,"run")}]),disabled:!oe(_.effect)||!!H.value,title:U(_.effect),"aria-label":U(_.effect),onClick:Ge(ve=>pe(_.effect,ve,"run"),["stop"])},[H.value===_.effect.id&&J.value==="run"?(t(),j(Ze,{key:0,size:"xs"})):_.effect.status==="completed"||_.effect.status==="failed"||He(_.effect)?(t(),j(c(an),{key:1,size:14})):(t(),j(c(Zn),{key:2,size:14}))],10,bv)):b("",!0),Ue(_.effect)?(t(),r("button",{key:1,type:"button",class:G(["inline-flex h-7 w-7 items-center justify-center rounded border border-red-200 bg-red-50 text-red-700 transition-colors hover:border-red-300 hover:bg-red-100 disabled:cursor-not-allowed disabled:opacity-60 dark:border-red-950 dark:bg-red-950/30 dark:text-red-300 dark:hover:border-red-900 dark:hover:bg-red-950/50",{"ring-2 ring-red-500/20":ee(_.effect,"cancel")}]),disabled:!!H.value,title:tt(_.effect),"aria-label":tt(_.effect),onClick:Ge(ve=>pe(_.effect,ve,"cancel"),["stop"])},[H.value===_.effect.id&&J.value==="cancel"?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(Dt),{key:1,size:14}))],10,yv)):b("",!0),!oe(_.effect)&&!Ue(_.effect)?(t(),r("span",kv," - ")):b("",!0)])]),n("td",_v,[n("span",{class:G(["inline-flex rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",F(_.effect.status)])},p(Ye(_.effect.status)),3)]),n("td",wv,[n("div",$v,p(_.effect.name),1),n("div",{class:"truncate text-[11px] text-neutral-400",title:_.effect.id},p(Ve(_.effect.id)),9,Cv),ie(_.effect)?(t(),r("div",Sv,p(ie(_.effect)),1)):b("",!0),ae(_.effect)?(t(),r("div",Tv,[_.effect.replayedFrom?(t(),j(c(an),{key:0,size:10,class:"shrink-0"})):(t(),j(c(St),{key:1,size:10,class:"shrink-0"})),n("span",Iv,p(ae(_.effect)),1)])):b("",!0)]),n("td",Av,p(c(Rt)(_.effect.createdAt)),1),n("td",Ev,[n("div",Lv,p($e(_.effect)),1),ye(_.effect)?(t(),r("div",Rv,p(ye(_.effect)),1)):b("",!0)]),n("td",Mv,[n("div",null,p(Re(_.effect)),1),Me(_.effect)?(t(),r("div",{key:0,class:G(["mt-0.5 text-[11px] font-medium",Ke(_.effect)])},p(Me(_.effect)),3)):b("",!0)]),n("td",Dv,p(_.effect.attempts),1),n("td",Fv,[n("div",{class:"truncate font-mono text-[11px] text-neutral-500 dark:text-neutral-400",title:c(La)(_.effect.args)},p(c(cc)(_.effect.args)),9,Pv),_.effect.error?(t(),r("div",Nv,p(_.effect.error),1)):b("",!0)])],42,mv))],64))),128))])])]),W.value?(t(),r("button",{key:1,type:"button",class:"m-3 flex items-center justify-center gap-2 rounded border border-neutral-200 px-3 py-2 text-sm font-medium text-neutral-600 transition-colors hover:bg-neutral-50 disabled:opacity-50 dark:border-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-900",disabled:S.value,onClick:f[1]||(f[1]=_=>ze({append:!0}))},[S.value?(t(),j(Ze,{key:0,size:"xs"})):b("",!0),f[11]||(f[11]=n("span",null,"Load more",-1))],8,zv)):b("",!0)])):(t(),r("div",rv," Select a thread to view effects "))])])]),_:2},[he.value&&te.value?{name:"detail",fn:Pe(()=>[n("div",jv,[n("div",Bv,[B(c(St),{size:15,class:"shrink-0 text-neutral-400"}),n("div",Ov,[n("div",Vv,p(te.value.name),1),n("div",qv,p(te.value.id),1),ie(te.value)?(t(),r("div",Uv,p(ie(te.value)),1)):b("",!0)]),n("span",{class:G(["shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",F(te.value.status)])},p(Ye(te.value.status)),3),n("div",Hv,[oe(te.value)?(t(),r("button",{key:0,type:"button",class:G(["inline-flex h-8 shrink-0 items-center gap-1.5 rounded border border-neutral-300 bg-white px-2 text-xs font-medium text-neutral-950 transition-colors hover:border-neutral-400 hover:bg-neutral-50 disabled:cursor-not-allowed disabled:text-neutral-400 disabled:opacity-70 dark:border-black dark:bg-black dark:text-white dark:hover:border-neutral-950 dark:hover:bg-neutral-950 dark:disabled:text-neutral-600",{"ring-2 ring-black/10 dark:ring-white/20":ee(te.value,"run")}]),disabled:!oe(te.value)||!!H.value,title:U(te.value),"aria-label":U(te.value),onClick:f[2]||(f[2]=Ge(_=>pe(te.value,_,"run"),["stop"]))},[H.value===te.value.id&&J.value==="run"?(t(),j(Ze,{key:0,size:"xs"})):te.value.status==="completed"||te.value.status==="failed"||He(te.value)?(t(),j(c(an),{key:1,size:14})):(t(),j(c(Zn),{key:2,size:14})),n("span",null,p(Ce(te.value)),1)],10,Wv)):b("",!0),Ue(te.value)?(t(),r("button",{key:1,type:"button",class:G(["inline-flex h-8 shrink-0 items-center gap-1.5 rounded border border-red-200 bg-red-50 px-2 text-xs font-medium text-red-700 transition-colors hover:border-red-300 hover:bg-red-100 disabled:cursor-not-allowed disabled:opacity-60 dark:border-red-950 dark:bg-red-950/30 dark:text-red-300 dark:hover:border-red-900 dark:hover:bg-red-950/50",{"ring-2 ring-red-500/20":ee(te.value,"cancel")}]),disabled:!!H.value,title:tt(te.value),"aria-label":tt(te.value),onClick:f[3]||(f[3]=Ge(_=>pe(te.value,_,"cancel"),["stop"]))},[H.value===te.value.id&&J.value==="cancel"?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(Dt),{key:1,size:14})),f[12]||(f[12]=n("span",null,"Cancel",-1))],10,Kv)):b("",!0)])]),n("div",Jv,[n("div",null,[f[13]||(f[13]=n("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Created ",-1)),n("div",Gv,p(c(Rt)(te.value.createdAt)),1)]),n("div",null,[f[14]||(f[14]=n("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Scheduled ",-1)),n("div",Yv,p(c(Rt)(te.value.scheduledAt)),1)]),n("div",null,[f[15]||(f[15]=n("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Completed ",-1)),n("div",Qv,p(Re(te.value)),1),Me(te.value)?(t(),r("div",{key:0,class:G(["mt-0.5 text-[11px] font-medium",Ke(te.value)])},p(Me(te.value)),3)):b("",!0)]),n("div",null,[f[16]||(f[16]=n("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Attempts ",-1)),n("div",Xv,p(te.value.attempts),1)]),n("div",null,[f[17]||(f[17]=n("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Source ",-1)),n("div",Zv,[de(te.value)?(t(),r("span",eh,[te.value.replayedFrom?(t(),j(c(an),{key:0,size:10,class:"shrink-0"})):(t(),j(c(St),{key:1,size:10,class:"shrink-0"})),rt(" "+p(de(te.value)),1)])):(t(),r("span",th,"Automatic"))]),te.value.manualRunAt?(t(),r("div",nh,p(c(Rt)(te.value.manualRunAt)),1)):b("",!0)]),te.value.replayedFrom?(t(),r("div",ah,[f[18]||(f[18]=n("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Rerun Of ",-1)),n("div",rh,[B(c(an),{size:10,class:"shrink-0"}),n("span",sh,p(te.value.replayedFrom),1)])])):b("",!0)]),te.value.error?(t(),r("div",oh,p(te.value.error),1)):b("",!0),n("div",lh,[f[19]||(f[19]=n("div",{class:"border-b border-neutral-200 px-3 py-2 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:border-neutral-800"}," Arguments ",-1)),B(fa,{"model-value":ke.value,class:"min-h-0 flex-1",language:"json",readonly:"","word-wrap":"on",framed:!1},null,8,["model-value"])])])]),key:"0"}:void 0]),1032,["height-percent"]),(t(),j(Ur,{to:"body"},[e.active&&qe.value&&ue.value?(t(),r("div",{key:0,ref_key:"actionPopoverRef",ref:ne,class:"fixed z-[9999] w-[260px] border border-neutral-200 bg-white p-3 text-xs shadow-lg dark:border-neutral-800 dark:bg-neutral-950",style:gt(z.value),onClick:f[6]||(f[6]=Ge(()=>{},["stop"]))},[n("div",ih,[X.value==="cancel"?(t(),j(c(Dt),{key:0,size:14,class:"mt-0.5 shrink-0 text-red-600 dark:text-red-300"})):(t(),j(c(St),{key:1,size:14,class:"mt-0.5 shrink-0 text-amber-600 dark:text-amber-300"})),n("div",dh,[n("div",uh,p(nt(qe.value)),1),n("div",ch,p(O(qe.value)),1),n("div",fh,[n("span",ph,p(qe.value.name),1)]),n("div",vh,p(qe.value.id),1)])]),n("div",hh,[n("button",{type:"button",class:"rounded border border-neutral-200 px-2 py-1 text-neutral-600 transition-colors hover:bg-neutral-50 hover:text-neutral-950 dark:border-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-900 dark:hover:text-neutral-50",onClick:D},p(X.value==="cancel"?"Keep scheduled":"Cancel"),1),n("button",{type:"button",class:G(["rounded px-2 py-1 font-medium transition-opacity hover:opacity-85",X.value==="cancel"?"bg-red-600 text-white hover:opacity-85 dark:bg-red-500 dark:text-white":"bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-950"]),onClick:f[5]||(f[5]=_=>Ie(qe.value))},p(ge(qe.value)),3)])],4)):b("",!0)]))]))}}),yh={class:"flex h-full min-h-0 flex-col overflow-hidden"},kh={class:"flex items-center justify-between gap-3 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},_h={class:"min-w-0 flex items-center gap-1 overflow-hidden text-xs","aria-label":"File path"},wh=["onClick"],$h={class:"flex shrink-0 items-center gap-1"},Ch=["disabled"],Sh=["disabled"],Th={class:"min-h-0 flex-1 overflow-auto p-3"},Ih={key:0,class:"py-12 text-center text-sm text-neutral-500"},Ah={key:1,class:"flex justify-center py-12"},Eh={key:2,class:"py-12 text-center text-sm text-red-600 dark:text-red-400"},Lh={key:3,class:"py-12 text-center text-sm text-neutral-500"},Rh={key:4,class:"space-y-0.5"},Mh=["onClick","onDblclick","onKeydown"],Dh={key:1,class:"w-3 shrink-0"},Fh={key:3,class:"flex h-7 w-7 shrink-0 items-center justify-center overflow-hidden rounded border border-neutral-200 bg-neutral-100 dark:border-neutral-700 dark:bg-neutral-900"},Ph=["src","alt"],Nh={key:4,class:"flex h-7 w-7 shrink-0 items-center justify-center rounded border border-neutral-200 bg-neutral-100 dark:border-neutral-700 dark:bg-neutral-900"},zh={class:"min-w-0 flex-1 truncate"},jh={key:5,class:"text-[10px] text-neutral-400"},Bh={key:6,class:"text-[10px] text-neutral-400"},Oh={key:5,class:"grid grid-cols-[repeat(auto-fill,minmax(112px,1fr))] gap-3"},Vh=["onClick","onKeydown"],qh={class:"mb-2 flex aspect-square items-center justify-center overflow-hidden rounded bg-neutral-100 dark:bg-neutral-950"},Uh=["src","alt"],Hh={class:"truncate text-xs font-medium"},Wh={class:"mt-0.5 text-[10px] text-neutral-400"},Kh={class:"flex h-full min-h-0 flex-col overflow-hidden"},Jh={class:"flex items-center justify-between border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},Gh={class:"min-w-0"},Yh={class:"truncate text-sm font-semibold"},Qh={class:"truncate text-[11px] font-mono text-neutral-500"},Xh={class:"flex shrink-0 items-center gap-1.5"},Zh=["disabled"],em=["href","download"],tm={key:0,class:"grid grid-cols-[120px_minmax(0,1fr)] gap-2 text-sm"},nm={class:"font-mono"},am={class:"break-all font-mono"},rm={key:1,class:"flex h-full items-center justify-center"},sm={key:2,class:"text-sm text-red-600 dark:text-red-400"},om=["src","alt"],lm={key:0,class:"mb-3 rounded border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-red-900/70 dark:bg-red-950/30 dark:text-red-300"},im={key:5,class:"grid grid-cols-[120px_minmax(0,1fr)] gap-2 text-sm"},dm={class:"font-mono"},um={class:"font-mono"},cm={class:"break-all font-mono"},fm="agentbuilder.threads.filePreviewSplitPercent",pm=2500,vm=et({__name:"ThreadFilesPane",props:{threadId:{},path:{},refreshKey:{},active:{type:Boolean,default:!0}},emits:["update:path","count-changed"],setup(e,{emit:o}){const a=e,l=o,s=g([]),i=g(!1),h=g(!1),u=g(!1),I=g(null),S=g("tree"),$=g("/"),m=g(null),y=g(new Set(["/"])),L=g(!1),C=g(null),V=g(!1),H=g(null),J=g(""),le=g(null),X=g(50),ne=g(null),ue=g(new Map);let K=null,P=!1;const M=d=>(d.startsWith("/")?d:`/${d}`).replace(/\/+/g,"/"),W=d=>d.replace(/^\/+/,"").split("/").map(f=>encodeURIComponent(f)).join("/"),q=(d,f="")=>{const _=typeof d=="string"?d:d.path;if(!a.threadId)return"";const ve=f?`?${f}`:"";return Qe(`/api/threads/${a.threadId}/fs/${W(_)}${ve}`)},_e=d=>q(d),Ne=d=>{const f=d.name.toLowerCase();return f.endsWith(".vue")?"html":d.mimeType.includes("json")||f.endsWith(".json")?"json":f.endsWith(".md")||f.endsWith(".markdown")?"markdown":f.endsWith(".ts")||f.endsWith(".tsx")?"typescript":f.endsWith(".js")||f.endsWith(".jsx")?"javascript":f.endsWith(".css")?"css":f.endsWith(".scss")?"scss":f.endsWith(".html")?"html":f.endsWith(".yml")||f.endsWith(".yaml")?"yaml":f.endsWith(".sh")||f.endsWith(".bash")?"shell":f.endsWith(".py")?"python":f.endsWith(".xml")||d.mimeType.includes("xml")?"xml":"plaintext"},te=d=>{if(!d)return"0 B";const f=["B","KB","MB","GB"],_=Math.min(Math.floor(Math.log(d)/Math.log(1024)),f.length-1);return`${(d/1024**_).toFixed(_===0?0:1)} ${f[_]}`},qe=d=>`${d} ${d===1?"item":"items"}`,z=d=>d?.mimeType?.startsWith("image/"),he=new Set([".bash",".css",".html",".js",".jsx",".json",".md",".markdown",".py",".scss",".sh",".ts",".tsx",".txt",".vue",".xml",".yaml",".yml"]),ke=d=>{if(!d)return!1;const f=d.name.toLowerCase();return d.mimeType.startsWith("text/")||d.mimeType.includes("json")||d.mimeType.includes("xml")||d.mimeType.includes("javascript")||d.mimeType.includes("typescript")||[...he].some(_=>f.endsWith(_))},Le=d=>d?z(d)?Ya:d.mimeType.startsWith("audio/")?Jr:d.mimeType.startsWith("video/")?Gr:ke(d)?d.mimeType.includes("json")||d.mimeType.includes("javascript")?Yr:Qa:In:In,we=()=>{const d=new Set(["/"]);for(const f of s.value){const _=M(f.path).split("/").filter(Boolean);let ve="";for(const De of _.slice(0,-1))ve+="/"+De,d.add(ve)}return d},me=()=>{y.value=we()},Se=async(d,f)=>{try{const _=await d.json();return typeof _.error=="string"?_.error:f}catch{return f}},Ae=d=>d?`${d.path}|${d.size}|${d.updatedAt??""}|${d.mimeType}`:"",se=async(d={})=>{if(!a.threadId){s.value=[];return}const f=d.quiet===!0;if(!(f&&P)){f?P=!0:(i.value=!0,I.value=null);try{const _=await fetch(Qe(`/api/threads/${a.threadId}/fs?find=**/*&type=file`));if(!_.ok)throw new Error("Failed to load files");const ve=await _.json();s.value=(ve.files||[]).filter(De=>!De.isDirectory).map(De=>({...De,path:M(De.path)})).sort((De,ot)=>z(De)!==z(ot)?z(De)?-1:1:De.path.localeCompare(ot.path)),S.value==="tree"&&s.value.length>0&&!L.value&&(me(),L.value=!0)}catch(_){f||(I.value=_ instanceof Error?_.message:"Failed to load files")}finally{f?P=!1:i.value=!1}}},Z=T(()=>{const d={type:"directory",name:"",path:"/",children:[]},f=new Map([["/",d]]);for(const ve of s.value){const De=M(ve.path).split("/").filter(Boolean);let ot=d,it="";for(const ht of De.slice(0,-1)){it=`${it}/${ht}`;let bt=f.get(it);bt||(bt={type:"directory",name:ht,path:it,children:[]},f.set(it,bt),ot.children.push(bt)),ot=bt}ot.children.push({type:"file",name:ve.name||De[De.length-1],path:ve.path,file:ve,children:[]})}const _=ve=>{ve.children.sort((De,ot)=>De.type!==ot.type?De.type==="directory"?-1:1:De.name.localeCompare(ot.name)),ve.children.forEach(_)};return _(d),d}),Q=T(()=>{if($.value==="/")return Z.value;const d=$.value.split("/").filter(Boolean);let f=Z.value;for(const _ of d){const ve=f.children.find(De=>De.type==="directory"&&De.name===_);if(!ve)return Z.value;f=ve}return f}),ce=T(()=>Q.value.children),fe=T(()=>[...ce.value].sort((d,f)=>d.type!==f.type?d.type==="file"?-1:1:d.file&&f.file&&z(d.file)!==z(f.file)?z(d.file)?-1:1:d.name.localeCompare(f.name))),Fe=T(()=>{const d=[],f=(_,ve)=>{for(const De of _)d.push({node:De,depth:ve}),De.type==="directory"&&y.value.has(De.path)&&f(De.children,ve+1)};return f(Q.value.children,0),d}),Ye=T(()=>{if(S.value==="tree"){const d=$.value!=="/"?[{key:"__up__",kind:"up"}]:[];return d.push(...Fe.value.map(f=>({key:f.node.path,kind:"node",node:f.node}))),d}return fe.value.map(d=>({key:d.path,kind:"node",node:d}))}),F=T(()=>m.value?s.value.find(d=>d.path===m.value)??null:null),$e=T(()=>F.value?Ne(F.value):"plaintext"),ye=T(()=>Ae(F.value)),Re=T(()=>!!F.value&&C.value!==null&&ke(F.value)),Ve=T(()=>Re.value&&J.value!==(C.value??"")),He=T(()=>{const d=F.value;if(!d)return!1;const f=d.mimeType.toLowerCase();return z(d)||ke(d)||f==="application/pdf"||f.startsWith("audio/")||f.startsWith("video/")}),ie=(d,f)=>{if(d.path===f)return d;for(const _ of d.children){const ve=ie(_,f);if(ve)return ve}return null},de=T(()=>{if(!m.value)return null;const d=ie(Z.value,m.value);return d?.type==="directory"?d:null}),ae=T(()=>{const d=$.value.split("/").filter(Boolean),f=[{label:"Files",path:"/"}];let _="";for(const ve of d)_+=`/${ve}`,f.push({label:ve,path:_});return f}),Me=d=>{if(m.value=d.path,d.type==="directory"){$.value=d.path,y.value.add(d.path),y.value=new Set(y.value);return}},Ke=d=>{m.value=d.path,y.value.has(d.path)?y.value.delete(d.path):y.value.add(d.path),y.value=new Set(y.value)},U=async(d,f={})=>{const _=f.quiet===!0;if(!(Ve.value&&m.value===d.path)&&(_||(C.value=null,H.value=null,J.value=""),!!ke(d))){_||(V.value=!0);try{const ve=await fetch(q(d));if(!ve.ok)throw new Error("Failed to load preview");const De=await ve.text();m.value===d.path&&!Ve.value&&(C.value=De,J.value=De,H.value=null)}catch(ve){_||(H.value=ve instanceof Error?ve.message:"Failed to load preview")}finally{_||(V.value=!1)}}},Ce=async()=>{!F.value||!ke(F.value)||Ve.value||await U(F.value,{quiet:!0})},oe=()=>!!a.threadId&&a.active&&!Ve.value&&!h.value&&!u.value&&!i.value&&!P&&(typeof document>"u"||document.visibilityState==="visible"),Ue=async()=>{oe()&&(await se({quiet:!0}),await Ce())},tt=()=>{oe()&&Ue()},nt=d=>{const f=new TextEncoder().encode(d);let _="";for(const ve of f)_+=String.fromCharCode(ve);return btoa(_)},ge=()=>{J.value=C.value??"",le.value=null},O=async()=>{const d=F.value;if(!(!d||!a.threadId)){u.value=!0,le.value=null;try{const f=await fetch(q(d),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:nt(J.value),mimeType:d.mimeType||"text/plain"})});if(!f.ok)throw new Error(await Se(f,"Failed to save file"));C.value=J.value,await se({quiet:!0})}catch(f){le.value=f instanceof Error?f.message:"Failed to save file"}finally{u.value=!1}}},ee=async d=>{const f=d.target;if(!(!a.threadId||!f.files?.length)){h.value=!0,I.value=null;try{for(const _ of Array.from(f.files)){const ve=$.value==="/"?`/${_.name}`:`${$.value}/${_.name}`;if(!(await fetch(q(ve),{method:"POST",headers:{"Content-Type":_.type||"application/octet-stream"},body:_})).ok)throw new Error(`Failed to upload ${_.name}`)}await se()}catch(_){I.value=_ instanceof Error?_.message:"Upload failed"}finally{h.value=!1,f.value=""}}},Oe=g(new Set);be(()=>a.threadId,()=>{$.value=M(a.path||"/"),m.value=null,C.value=null,H.value=null,J.value="",le.value=null,y.value=new Set(["/"]),L.value=!1,Oe.value=new Set,se()},{immediate:!0}),be(s,d=>{l("count-changed",d.length)},{immediate:!0}),be(()=>a.refreshKey,()=>{a.threadId&&se()}),be(()=>a.active,d=>{d&&Ue()});const pe=g(!1),D=d=>{const f=d.lastIndexOf("/");return f<=0?"/":d.slice(0,f)},xe=d=>{const f=d.split("/").filter(Boolean);let _="";y.value.add("/");for(let ve=0;ve<f.length-1;ve++)_+="/"+f[ve],y.value.add(_);y.value=new Set(y.value)},Be=()=>{const d=D($.value);$.value=d,m.value=d==="/"?null:d,y.value.add(d),y.value=new Set(y.value)},E=(d,f)=>{f instanceof HTMLElement?ue.value.set(d,f):ue.value.delete(d)},N=async d=>{await Xe(),ue.value.get(d)?.focus({preventScroll:!0})},Ie=d=>{d.kind==="node"&&Me(d.node)},re=(d,f)=>{const _=Ye.value,ve=_.findIndex(ot=>ot.key===d);if(ve<0)return;const De=_[Math.min(_.length-1,Math.max(0,ve+f))];De&&(Ie(De),N(De.key))},ze=d=>{const f=Ye.value,_=d==="start"?f[0]:f[f.length-1];_&&(Ie(_),N(_.key))},dt=(d,f)=>{if(d.key==="ArrowDown"){d.preventDefault(),re(f.key,1);return}if(d.key==="ArrowUp"){d.preventDefault(),re(f.key,-1);return}if(d.key==="Home"){d.preventDefault(),ze("start");return}if(d.key==="End"){d.preventDefault(),ze("end");return}S.value!=="tree"||f.kind!=="node"||f.node.type!=="directory"||(d.key==="ArrowRight"&&!y.value.has(f.node.path)?(d.preventDefault(),y.value.add(f.node.path),y.value=new Set(y.value)):d.key==="ArrowLeft"&&y.value.has(f.node.path)&&(d.preventDefault(),y.value.delete(f.node.path),y.value=new Set(y.value)))};return be([()=>a.path,s],async([d])=>{const f=M(d||"/");let _=s.value.find(De=>De.path===f&&!De.isDirectory);const ve=f!=="/"&&/\.[a-z0-9]+$/i.test(f);if(!_&&ve&&d&&!Oe.value.has(f)&&(Oe.value.add(f),await se(),_=s.value.find(De=>De.path===f&&!De.isDirectory)),_){const De=S.value==="tree"?"/":D(f);m.value=f,xe(f),$.value!==De&&(pe.value=!0,$.value=De)}else $.value!==f&&(pe.value=!0,$.value=f)}),be(S,d=>{d==="tree"&&(s.value.length>0&&!L.value&&(me(),L.value=!0),F.value&&$.value!=="/"&&(xe(F.value.path),pe.value=!0,$.value="/"))}),be($,d=>{if(pe.value){pe.value=!1;return}l("update:path",M(d))}),be(m,()=>{C.value=null,H.value=null,J.value="",le.value=null}),be(ye,()=>{const d=F.value;d?U(d):(J.value="",le.value=null,C.value=null,H.value=null)}),be(de,()=>{J.value="",le.value=null,C.value=null,H.value=null}),K=setInterval(()=>{Ue()},pm),typeof document<"u"&&document.addEventListener("visibilitychange",tt),wt(()=>{K&&clearInterval(K),typeof document<"u"&&document.removeEventListener("visibilitychange",tt)}),(d,f)=>(t(),j(Pn,{"height-percent":X.value,"onUpdate:heightPercent":f[5]||(f[5]=_=>X.value=_),"storage-key":fm,title:"Resize files and preview"},Ut({main:Pe(()=>[n("div",yh,[n("div",kh,[n("nav",_h,[(t(!0),r(Ee,null,We(ae.value,(_,ve)=>(t(),r(Ee,{key:_.path},[ve>0?(t(),j(c(jt),{key:0,size:13,class:"shrink-0 text-neutral-300 dark:text-neutral-600"})):b("",!0),n("button",{type:"button",class:G(["min-w-0 truncate rounded border px-1.5 py-1 font-medium transition-colors",ve===ae.value.length-1?"border-transparent agents-surface-selected agents-text-selected shadow-sm":"border-transparent text-neutral-500 hover:bg-neutral-100 hover:text-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100"]),onClick:De=>$.value=_.path},p(_.label),11,wh)],64))),128))]),n("div",$h,[n("button",{type:"button",class:G(["inline-flex h-7 w-7 items-center justify-center rounded border",S.value==="tree"?"border-transparent agents-surface-selected agents-text-selected":"border-transparent text-neutral-500 hover:bg-neutral-100 dark:hover:bg-neutral-800"]),title:"Tree view",onClick:f[0]||(f[0]=_=>S.value="tree")},[B(c(Hr),{size:15})],2),n("button",{type:"button",class:G(["inline-flex h-7 w-7 items-center justify-center rounded border",S.value==="grid"?"border-transparent agents-surface-selected agents-text-selected":"border-transparent text-neutral-500 hover:bg-neutral-100 dark:hover:bg-neutral-800"]),title:"Grid view",onClick:f[1]||(f[1]=_=>S.value="grid")},[B(c(Wr),{size:15})],2),n("button",{type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded text-neutral-500 hover:bg-neutral-100 hover:text-neutral-950 disabled:opacity-50 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",disabled:!e.threadId||i.value,title:"Refresh files",onClick:se},[i.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(Fn),{key:1,size:15}))],8,Ch),n("input",{ref_key:"fileInput",ref:ne,type:"file",multiple:"",class:"hidden",onChange:ee},null,544),n("button",{type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded text-neutral-500 hover:bg-neutral-100 hover:text-neutral-950 disabled:opacity-50 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",disabled:!e.threadId||h.value,title:"Upload files",onClick:f[2]||(f[2]=_=>ne.value?.click())},[h.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(Kr),{key:1,size:15}))],8,Sh)])]),n("div",Th,[e.threadId?i.value?(t(),r("div",Ah,[B(Ze)])):I.value?(t(),r("div",Eh,p(I.value),1)):s.value.length===0?(t(),r("div",Lh," No files yet ")):S.value==="tree"?(t(),r("div",Rh,[$.value!=="/"?(t(),r("button",{key:0,ref:_=>E("__up__",_),type:"button",class:"flex w-full items-center gap-2 rounded py-1.5 pr-2 text-left text-xs hover:bg-neutral-100 dark:hover:bg-neutral-800",style:{paddingLeft:"8px"},onClick:Be,onKeydown:f[3]||(f[3]=_=>dt(_,{key:"__up__",kind:"up"}))},[f[6]||(f[6]=n("span",{class:"w-3 shrink-0"},null,-1)),B(c(jn),{size:15,class:"shrink-0 text-amber-500"}),f[7]||(f[7]=n("span",{class:"min-w-0 flex-1 font-mono"},"..",-1))],544)):b("",!0),(t(!0),r(Ee,null,We(Fe.value,_=>(t(),r("button",{key:_.node.path,ref_for:!0,ref:ve=>E(_.node.path,ve),type:"button",class:G(["flex w-full items-center gap-2 rounded py-1.5 pr-2 text-left text-xs",m.value===_.node.path?"agents-surface-selected agents-text-selected":"hover:bg-neutral-100 dark:hover:bg-neutral-800"]),style:gt({paddingLeft:`${8+_.depth*18}px`}),onClick:ve=>_.node.type==="directory"?Ke(_.node):Me(_.node),onDblclick:ve=>_.node.type==="directory"?Me(_.node):void 0,onKeydown:ve=>dt(ve,{key:_.node.path,kind:"node",node:_.node})},[_.node.type==="directory"?(t(),j(c(jt),{key:0,size:12,class:G(["shrink-0 text-neutral-400 transition-transform",y.value.has(_.node.path)?"rotate-90":""])},null,8,["class"])):(t(),r("span",Dh)),_.node.type==="directory"?(t(),j(c(jn),{key:2,size:15,class:"shrink-0 text-amber-500"})):_.node.file&&z(_.node.file)?(t(),r("span",Fh,[n("img",{src:_e(_.node.file),alt:_.node.name,class:"h-full w-full object-cover",loading:"lazy"},null,8,Ph)])):(t(),r("span",Nh,[(t(),j(Mt(Le(_.node.file)),{size:15,class:"text-neutral-500"}))])),n("span",zh,p(_.node.name),1),_.node.type==="directory"?(t(),r("span",jh,p(qe(_.node.children.length)),1)):(t(),r("span",Bh,p(te(_.node.file?.size||0)),1))],46,Mh))),128))])):(t(),r("div",Oh,[(t(!0),r(Ee,null,We(fe.value,_=>(t(),r("button",{key:_.path,ref_for:!0,ref:ve=>E(_.path,ve),type:"button",class:G(["group min-w-0 rounded-lg border p-2 text-left",m.value===_.path?"agents-border-selected agents-surface-selected":"border-neutral-200 bg-white hover:border-neutral-300 hover:bg-neutral-50 dark:border-neutral-800 dark:bg-neutral-900 dark:hover:border-neutral-700 dark:hover:bg-neutral-800"]),onClick:ve=>Me(_),onKeydown:ve=>dt(ve,{key:_.path,kind:"node",node:_})},[n("div",qh,[_.file&&z(_.file)?(t(),r("img",{key:0,src:_e(_.file),alt:_.name,class:"h-full w-full object-cover",loading:"lazy"},null,8,Uh)):_.type==="directory"?(t(),j(c(jn),{key:1,size:28,class:"text-amber-500"})):(t(),j(Mt(Le(_.file)),{key:2,size:28,class:"text-neutral-500"}))]),n("div",Hh,p(_.name),1),n("div",Wh,p(_.type==="directory"?qe(_.children.length):te(_.file?.size||0)),1)],42,Vh))),128))])):(t(),r("div",Ih," Select a thread to view files "))])])]),_:2},[F.value||de.value?{name:"detail",fn:Pe(()=>[n("div",Kh,[n("div",Jh,[n("div",Gh,[n("div",Yh,p(F.value?.name||de.value?.name||"Files"),1),n("div",Qh,p(F.value?.path||de.value?.path),1)]),n("div",Xh,[F.value&&Re.value?(t(),r(Ee,{key:0},[n("button",{type:"button",class:"inline-flex h-8 items-center gap-1.5 rounded bg-neutral-900 px-2.5 text-sm font-medium text-white transition-colors hover:bg-neutral-700 disabled:opacity-50 dark:bg-neutral-100 dark:text-neutral-950 dark:hover:bg-neutral-300",disabled:u.value||!Ve.value,onClick:O},[u.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(er),{key:1,size:14})),f[8]||(f[8]=n("span",null,"Save",-1))],8,Zh),Ve.value?(t(),r("button",{key:0,type:"button",class:"inline-flex h-8 w-8 items-center justify-center rounded text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-950 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",title:"Cancel","aria-label":"Cancel file edit",onClick:ge},[B(c(Dt),{size:15})])):b("",!0)],64)):b("",!0),F.value?(t(),r("a",{key:1,href:q(F.value),target:"_blank",rel:"noopener noreferrer",download:He.value?void 0:F.value.name,class:"shrink-0 rounded border border-neutral-200 px-2 py-1 text-xs font-medium hover:bg-neutral-50 dark:border-neutral-700 dark:hover:bg-neutral-800"},p(He.value?"Open":"Download"),9,em)):b("",!0)])]),n("div",{class:G(["min-h-0 flex-1",C.value!==null&&!V.value&&!H.value&&!de.value&&!z(F.value)?"flex flex-col overflow-hidden p-3":"overflow-auto p-3"])},[de.value?(t(),r("dl",tm,[f[9]||(f[9]=n("dt",{class:"text-neutral-500"},"Type",-1)),f[10]||(f[10]=n("dd",{class:"font-mono"},"directory",-1)),f[11]||(f[11]=n("dt",{class:"text-neutral-500"},"Items",-1)),n("dd",nm,p(qe(de.value.children.length)),1),f[12]||(f[12]=n("dt",{class:"text-neutral-500"},"Path",-1)),n("dd",am,p(de.value.path),1)])):V.value?(t(),r("div",rm,[B(Ze)])):H.value?(t(),r("div",sm,p(H.value),1)):z(F.value)?(t(),r("img",{key:3,src:q(F.value),alt:F.value.name,class:"mx-auto max-h-full max-w-full rounded border border-neutral-200 object-contain dark:border-neutral-800"},null,8,om)):C.value!==null?(t(),r(Ee,{key:4},[le.value?(t(),r("div",lm,p(le.value),1)):b("",!0),Re.value?(t(),j(fa,{key:1,modelValue:J.value,"onUpdate:modelValue":f[4]||(f[4]=_=>J.value=_),language:$e.value,class:"min-h-[12rem] flex-1",framed:!1},null,8,["modelValue","language"])):b("",!0)],64)):(t(),r("dl",im,[f[13]||(f[13]=n("dt",{class:"text-neutral-500"},"Type",-1)),n("dd",dm,p(F.value.mimeType||"application/octet-stream"),1),f[14]||(f[14]=n("dt",{class:"text-neutral-500"},"Size",-1)),n("dd",um,p(te(F.value.size)),1),f[15]||(f[15]=n("dt",{class:"text-neutral-500"},"Path",-1)),n("dd",cm,p(F.value.path),1)]))],2)])]),key:"0"}:void 0]),1032,["height-percent"]))}});function hm(e){const o=e&&typeof e=="object"?e:{},a=Array.isArray(o.values)?o.values:[];return{values:a.filter(l=>!!l&&typeof l=="object").filter(l=>typeof l.key=="string").map(l=>({key:l.key,value:l.value,serialized:typeof l.serialized=="string"?l.serialized:hr(l.value),size:typeof l.size=="number"&&Number.isFinite(l.size)?l.size:0,updatedAt:typeof l.updatedAt=="number"&&Number.isFinite(l.updatedAt)?l.updatedAt:0,parseError:typeof l.parseError=="string"?l.parseError:void 0})),total:typeof o.total=="number"&&Number.isFinite(o.total)?o.total:a.length,limit:typeof o.limit=="number"&&Number.isFinite(o.limit)?o.limit:a.length,offset:typeof o.offset=="number"&&Number.isFinite(o.offset)?o.offset:0,search:typeof o.search=="string"?o.search:null}}function hr(e){const o=JSON.stringify(e,null,2);return o===void 0?"":o}function mm(e){try{const o=JSON.parse(e);return o===null?{ok:!1,error:"Use delete to remove a key"}:{ok:!0,value:o}}catch(o){return{ok:!1,error:o instanceof Error?o.message:"Invalid JSON"}}}function Gn(e,o){return o?"unknown":Array.isArray(e)?"array":typeof e=="string"?"string":typeof e=="number"?"number":typeof e=="boolean"?"boolean":e&&typeof e=="object"?"object":"unknown"}function gm(e,o){if(o)return"Stored value is not valid JSON";if(Array.isArray(e))return`${e.length} ${e.length===1?"item":"items"}`;if(typeof e=="string")return e.length>80?`${e.slice(0,77)}...`:e;if(typeof e=="number"||typeof e=="boolean")return String(e);if(e&&typeof e=="object"){const a=Object.keys(e).length;return`${a} ${a===1?"key":"keys"}`}return"Unknown"}function Ba(e){if(!Number.isFinite(e)||e<=0)return"0 B";const o=["B","KB","MB"],a=Math.min(Math.floor(Math.log(e)/Math.log(1024)),o.length-1);return`${(e/1024**a).toFixed(a===0?0:1)} ${o[a]}`}function Oa(e){if(!Number.isFinite(e)||e<=0)return"Unknown";const o=e>9999999999?Math.floor(e/1e3):e;return new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(o))}function xm(e,o,a){let l=null,s=0,i=0,h=!1;const u=4;let I=null,S=null;const $=3e4,m=3e4,y=()=>{I&&(clearTimeout(I),I=null),S&&(clearInterval(S),S=null)},L=()=>{if(y(),s=0,i=0,l){const H=l;l=null,H.close()}},C=()=>{if(!e.value||!o.value||i>=u)return;const H=Math.min(1e3*Math.pow(2,s),$);s++,I=setTimeout(()=>V(),H)},V=()=>{const H=e.value;if(!H||!o.value||typeof window>"u")return;if(h=!1,l){const X=l;l=null,X.close()}const J=window.location.protocol==="https:"?"wss:":"ws:",le=ia(`${J}//${window.location.host}${Qe(`/api/threads/${H}/logs`)}`);try{const X=new WebSocket(le);l=X,X.onopen=()=>{l===X&&(s=0,i=0,h=!0,S&&clearInterval(S),S=setInterval(()=>{X.readyState===WebSocket.OPEN&&X.send("ping")},m))},X.onmessage=ne=>{if(!(l!==X||typeof ne.data!="string"||ne.data==="pong"))try{const ue=JSON.parse(ne.data);ue.type==="kv_data"&&typeof ue.key=="string"&&a({key:ue.key,deleted:ue.deleted===!0,updatedAt:typeof ue.updated_at=="number"?ue.updated_at:null})}catch{}},X.onclose=()=>{l===X&&(l=null,S&&(clearInterval(S),S=null),h||i++,C())},X.onerror=()=>{}}catch{Ht(),C()}};be([e,o],([H,J])=>{L(),H&&J&&V()},{immediate:!0}),Kt(L)}const bm={class:"flex h-full min-h-0 flex-col overflow-hidden"},ym={class:"flex items-center gap-2 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},km={class:"relative min-w-0 flex-1"},_m={class:"hidden shrink-0 text-xs tabular-nums text-neutral-500 sm:block"},wm=["disabled"],$m=["disabled"],Cm={class:"min-h-0 flex-1 overflow-auto"},Sm={key:0,class:"py-12 text-center text-sm text-neutral-500"},Tm={key:1,class:"flex justify-center py-12"},Im={key:2,class:"py-12 text-center text-sm text-red-600 dark:text-red-400"},Am={key:3,class:"py-12 text-center text-sm text-neutral-500"},Em={key:4,class:"flex min-h-full flex-col"},Lm={class:"min-h-0 flex-1 overflow-auto bg-white dark:bg-neutral-950"},Rm={class:"w-full min-w-[52rem] table-fixed text-left text-xs"},Mm={class:"divide-y divide-neutral-100 dark:divide-neutral-900"},Dm=["aria-selected","onClick","onKeydown"],Fm={class:"whitespace-nowrap px-4 py-2 align-middle"},Pm={class:"font-mono text-xs font-normal text-neutral-950 dark:text-neutral-100"},Nm={class:"min-w-0 px-3 py-2 align-middle"},zm={class:"truncate text-xs text-neutral-500 dark:text-neutral-400"},jm={class:"whitespace-nowrap px-3 py-2 align-middle"},Bm={class:"whitespace-nowrap px-3 py-2 text-right align-middle text-[11px] tabular-nums text-neutral-400"},Om={class:"whitespace-nowrap px-4 py-2 text-right align-middle text-[11px] text-neutral-400"},Vm=["disabled"],qm={class:"flex h-full min-h-0 flex-col overflow-hidden"},Um={class:"flex items-center justify-between gap-3 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},Hm={class:"min-w-0 flex-1"},Wm={key:0,class:"flex items-center gap-2"},Km={key:1,class:"mt-0.5 truncate text-[11px] text-neutral-500"},Jm={class:"flex shrink-0 items-center gap-1.5"},Gm=["disabled"],Ym=["disabled"],Qm={class:"flex min-h-0 flex-1 flex-col overflow-hidden p-3"},Xm={key:0,class:"mb-3 rounded border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-red-900/70 dark:bg-red-950/30 dark:text-red-300"},Zm="agentbuilder.threads.kvStoreDetailSplitPercent",Va=100,eg=2500,Yt=`{
22
22
 
23
- }`,tg=et({__name:"ThreadKvStorePane",props:{threadId:{},active:{type:Boolean,default:!0}},emits:["count-changed"],setup(e,{emit:o}){const a=e,l=o,s=g([]),i=g(0),h=g(""),u=g(!1),I=g(!1),S=g(!1),$=g(!1),m=g(null),y=g(null),E=g(null),C=g("view"),V=g(""),H=g(Yt),J=g(null),oe=g(Yt),X=g(50),ne=g(new Map);let ue=null,K=null,P=!1,R=0;const W=()=>{Ie()&&re({preferredKey:E.value,quiet:!0})},q=T(()=>E.value?s.value.find(le=>le.key===E.value)??null:null),we=T(()=>s.value.length<i.value),Pe=T(()=>{const le=s.value.length;return a.threadId?i.value===0?h.value.trim()?"No matches":"No values":`${le} of ${i.value}`:""}),te=T(()=>Jn(q.value?.value,q.value?.parseError)),qe=T(()=>q.value?.parseError?"text":"json"),z=T(()=>C.value==="create"),he=T(()=>z.value||!!q.value),ke=T(()=>he.value&&(V.value!==(J.value??"")||H.value!==oe.value)),Ee=T(()=>!ke.value&&q.value?.parseError?q.value.parseError:null);function _e(le){switch(le){case"object":return"bg-sky-50 text-sky-700 dark:bg-sky-950/40 dark:text-sky-300";case"array":return"bg-violet-50 text-violet-700 dark:bg-violet-950/40 dark:text-violet-300";case"string":return"bg-emerald-50 text-emerald-700 dark:bg-emerald-950/40 dark:text-emerald-300";case"number":return"bg-amber-50 text-amber-700 dark:bg-amber-950/40 dark:text-amber-300";case"boolean":return"bg-pink-50 text-pink-700 dark:bg-pink-950/40 dark:text-pink-300";default:return"bg-red-50 text-red-700 dark:bg-red-950/40 dark:text-red-300"}}async function me(le,ie){try{const ae=await le.json();return typeof ae.error=="string"?ae.error:ie}catch{return ie}}function Se(le){if(z.value||ke.value)return;const ie=le?s.value.find(ae=>ae.key===le):null;if(ie){E.value=ie.key;return}E.value&&s.value.some(ae=>ae.key===E.value)||(E.value=s.value[0]?.key??null)}function Ie(){return!!a.threadId&&a.active&&!z.value&&!ke.value&&!u.value&&!I.value&&!S.value&&!$.value&&!P&&(typeof document>"u"||document.visibilityState==="visible")}async function re(le={}){if(!a.threadId){s.value=[],i.value=0,E.value=null;return}const ie=++R,ae=le.append===!0,Re=le.quiet===!0;Re&&(P=!0),Re||(ae?I.value=!0:u.value=!0),Re||(m.value=null);const Ke=new URLSearchParams,U=Math.min(Math.max(s.value.length,Va),200);Ke.set("limit",String(ae?Va:U)),Ke.set("offset",String(ae?s.value.length:0));const Ce=h.value.trim();Ce&&Ke.set("search",Ce);try{const se=await fetch(Qe(`/api/threads/${a.threadId}/kv?${Ke}`));if(!se.ok)throw new Error(await me(se,"Failed to load key-value store"));const Ue=hm(await se.json());if(ie!==R)return;s.value=ae?[...s.value,...Ue.values]:Ue.values,i.value=Ue.total,Se(le.preferredKey)}catch(se){ie===R&&(!Re||s.value.length===0)&&(m.value=se instanceof Error?se.message:"Failed to load key-value store")}finally{Re&&(P=!1),ie===R&&!Re&&(u.value=!1,I.value=!1)}}function Z(){ue&&clearTimeout(ue),ue=setTimeout(()=>{re()},250)}function Q(le){E.value=le.key,C.value="view",y.value=null,fe(le)}function ce(){J.value=null,oe.value=Yt,V.value="",H.value=Yt}function fe(le){if(!le){ce();return}const ie=le.parseError?le.serialized:hr(le.value);J.value=le.key,oe.value=ie,V.value=le.key,H.value=ie,y.value=null}function De(le,ie){ie instanceof HTMLElement?ne.value.set(le,ie):ne.value.delete(le)}async function Ye(le){await Xe(),ne.value.get(le)?.focus({preventScroll:!0})}function F(le,ie){const ae=s.value.findIndex(U=>U.key===ie.key);if(ae<0)return;let Re=ae;if(le.key==="ArrowDown")Re=Math.min(s.value.length-1,ae+1);else if(le.key==="ArrowUp")Re=Math.max(0,ae-1);else if(le.key==="Home")Re=0;else if(le.key==="End")Re=s.value.length-1;else return;le.preventDefault();const Ke=s.value[Re];Ke&&(Q(Ke),Ye(Ke.key))}function $e(){E.value=null,J.value=null,oe.value=Yt,V.value="",H.value=Yt,y.value=null,C.value="create"}function ye(){if(y.value=null,z.value){C.value="view",Se();return}fe(q.value)}async function Le(){if(!a.threadId)return;const le=V.value;if(!le.trim()){y.value="Key is required";return}const ie=mm(H.value);if(!ie.ok){y.value=ie.error;return}S.value=!0,y.value=null;try{const ae=await fetch(Qe(`/api/threads/${a.threadId}/kv`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:le,value:ie.value,previousKey:z.value?void 0:J.value})});if(!ae.ok)throw new Error(await me(ae,"Failed to save value"));E.value=le,C.value="view",await re({preferredKey:le})}catch(ae){y.value=ae instanceof Error?ae.message:"Failed to save value"}finally{S.value=!1}}async function Ve(){if(!a.threadId||!q.value)return;const le=q.value.key;if(window.confirm(`Delete ${le}?`)){$.value=!0,m.value=null;try{const ie=new URLSearchParams({key:le}),ae=await fetch(Qe(`/api/threads/${a.threadId}/kv?${ie}`),{method:"DELETE"});if(!ae.ok)throw new Error(await me(ae,"Failed to delete value"));E.value=null,C.value="view",ce(),await re()}catch(ie){m.value=ie instanceof Error?ie.message:"Failed to delete value"}finally{$.value=!1}}}be(()=>a.threadId,()=>{h.value="",C.value="view",y.value=null,ce(),re()},{immediate:!0}),be(h,Z),be(i,le=>{h.value.trim()||l("count-changed",le)},{immediate:!0}),be(q,le=>{z.value||ke.value||fe(le)}),be(()=>[a.threadId,a.active],()=>{K&&clearInterval(K),K=null,!(!a.threadId||!a.active)&&(K=setInterval(()=>{Ie()&&re({preferredKey:E.value,quiet:!0})},eg))},{immediate:!0});let He=null;return xm(T(()=>a.threadId),T(()=>a.active),()=>{He||(He=setTimeout(()=>{He=null,Ie()&&re({preferredKey:E.value,quiet:!0})},150))}),typeof document<"u"&&document.addEventListener("visibilitychange",W),wt(()=>{ue&&clearTimeout(ue),K&&clearInterval(K),He&&clearTimeout(He),typeof document<"u"&&document.removeEventListener("visibilitychange",W)}),(le,ie)=>(t(),j(Fn,{"height-percent":X.value,"onUpdate:heightPercent":ie[6]||(ie[6]=ae=>X.value=ae),"storage-key":Zm,title:"Resize key-value browser and detail"},Ut({main:Fe(()=>[n("div",bm,[n("div",ym,[n("div",km,[B(c(Yn),{size:14,class:"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-neutral-400"}),dt(n("input",{"onUpdate:modelValue":ie[0]||(ie[0]=ae=>h.value=ae),type:"search",class:"h-8 w-full rounded border border-neutral-300 bg-white pl-7 pr-2 text-sm outline-none focus:border-accent-500 focus:ring-1 focus:ring-accent-500 dark:border-neutral-700 dark:bg-neutral-950",placeholder:"Search keys and values",onKeydown:ie[1]||(ie[1]=Bt(Ge(ae=>re(),["prevent"]),["enter"]))},null,544),[[Sn,h.value]])]),n("div",_m,p(Pe.value),1),n("button",{type:"button",class:"inline-flex h-8 w-8 items-center justify-center rounded text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-950 disabled:opacity-50 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",disabled:!e.threadId||u.value,title:"Refresh values","aria-label":"Refresh values",onClick:ie[2]||(ie[2]=ae=>re())},[u.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(Dn),{key:1,size:15}))],8,wm),n("button",{type:"button",class:"inline-flex h-8 items-center gap-1.5 rounded bg-neutral-900 px-2.5 text-sm font-medium text-white transition-colors hover:bg-neutral-700 disabled:opacity-50 dark:bg-neutral-100 dark:text-neutral-950 dark:hover:bg-neutral-300",disabled:!e.threadId,onClick:$e},[B(c(Ka),{size:15}),ie[7]||(ie[7]=n("span",null,"New",-1))],8,$m)]),n("div",Cm,[e.threadId?u.value&&s.value.length===0?(t(),r("div",Tm,[B(Ze)])):m.value?(t(),r("div",Im,p(m.value),1)):s.value.length===0?(t(),r("div",Am,[B(c(fa),{class:"mx-auto mb-2 h-8 w-8 opacity-40"}),rt(" "+p(h.value.trim()?"No matching values":"No stored values"),1)])):(t(),r("div",Em,[n("div",Lm,[n("table",Rm,[ie[8]||(ie[8]=n("colgroup",null,[n("col",{class:"w-[23rem]"}),n("col"),n("col",{class:"w-24"}),n("col",{class:"w-20"}),n("col",{class:"w-32"})],-1)),ie[9]||(ie[9]=n("thead",{class:"sticky top-0 z-10 border-b border-neutral-200 bg-neutral-50 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:border-neutral-800 dark:bg-neutral-900/60 dark:text-neutral-400"},[n("tr",null,[n("th",{scope:"col",class:"px-4 py-2 font-medium"},"Key"),n("th",{scope:"col",class:"px-3 py-2 font-medium"},"Value"),n("th",{scope:"col",class:"px-3 py-2 text-left font-medium"},"Type"),n("th",{scope:"col",class:"px-3 py-2 text-right font-medium"},"Size"),n("th",{scope:"col",class:"px-4 py-2 text-right font-medium"},"Updated")])],-1)),n("tbody",Mm,[(t(!0),r(Ae,null,We(s.value,ae=>(t(),r("tr",{key:ae.key,ref_for:!0,ref:Re=>De(ae.key,Re),tabindex:"0","aria-selected":E.value===ae.key,class:G(["cursor-pointer transition-colors focus:outline-none",E.value===ae.key?"agents-surface-selected":"hover:bg-neutral-50 dark:hover:bg-neutral-900"]),onClick:Re=>Q(ae),onKeydown:[Bt(Ge(Re=>Q(ae),["prevent"]),["enter"]),Bt(Ge(Re=>Q(ae),["prevent"]),["space"]),Re=>F(Re,ae)]},[n("td",Fm,[n("div",Pm,p(ae.key),1)]),n("td",Nm,[n("div",zm,p(c(gm)(ae.value,ae.parseError)),1)]),n("td",jm,[n("span",{class:G(["inline-flex rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",_e(c(Jn)(ae.value,ae.parseError))])},p(c(Jn)(ae.value,ae.parseError)),3)]),n("td",Bm,p(c(Ba)(ae.size)),1),n("td",Om,p(c(Oa)(ae.updatedAt)),1)],42,Dm))),128))])])]),we.value?(t(),r("button",{key:0,type:"button",class:"m-3 flex items-center justify-center gap-2 rounded border border-neutral-200 px-3 py-2 text-sm font-medium text-neutral-600 transition-colors hover:bg-neutral-50 disabled:opacity-50 dark:border-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-900",disabled:I.value,onClick:ie[3]||(ie[3]=ae=>re({append:!0}))},[I.value?(t(),j(Ze,{key:0,size:"xs"})):b("",!0),ie[10]||(ie[10]=n("span",null,"Load more",-1))],8,Vm)):b("",!0)])):(t(),r("div",Sm," Select a thread to view its key-value store "))])])]),_:2},[he.value?{name:"detail",fn:Fe(()=>[n("div",qm,[n("div",Um,[n("div",Hm,[he.value?(t(),r("div",Wm,[B(c(fa),{size:15,class:"shrink-0 text-neutral-400"}),dt(n("input",{"onUpdate:modelValue":ie[4]||(ie[4]=ae=>V.value=ae),type:"text",class:"h-8 min-w-0 flex-1 rounded border border-neutral-300 bg-white px-2 font-mono text-sm outline-none focus:border-accent-500 focus:ring-1 focus:ring-accent-500 dark:border-neutral-700 dark:bg-neutral-950",placeholder:"key"},null,512),[[Sn,V.value]]),q.value?(t(),r("span",{key:0,class:G(["shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",_e(te.value)])},p(te.value),3)):b("",!0)])):b("",!0),q.value?(t(),r("div",Km,p(c(Ba)(q.value.size))+" | "+p(c(Oa)(q.value.updatedAt)),1)):b("",!0)]),n("div",Jm,[he.value?(t(),r(Ae,{key:0},[n("button",{type:"button",class:"inline-flex h-8 items-center gap-1.5 rounded bg-neutral-900 px-2.5 text-sm font-medium text-white transition-colors hover:bg-neutral-700 disabled:opacity-50 dark:bg-neutral-100 dark:text-neutral-950 dark:hover:bg-neutral-300",disabled:S.value||!ke.value,onClick:Le},[S.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(er),{key:1,size:14})),ie[11]||(ie[11]=n("span",null,"Save",-1))],8,Gm),ke.value?(t(),r("button",{key:0,type:"button",class:"inline-flex h-8 w-8 items-center justify-center rounded text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-950 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",title:"Cancel","aria-label":"Cancel",onClick:ye},[B(c(Dt),{size:15})])):b("",!0),q.value?(t(),j(ia,{key:1,content:H.value,variant:"ghost",size:"xs"},null,8,["content"])):b("",!0),q.value?(t(),r("button",{key:2,type:"button",class:"inline-flex h-8 w-8 items-center justify-center rounded text-red-600 transition-colors hover:bg-red-50 disabled:opacity-50 dark:text-red-400 dark:hover:bg-red-950/30",disabled:$.value,title:"Delete value","aria-label":"Delete value",onClick:Ve},[$.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(An),{key:1,size:15}))],8,Ym)):b("",!0)],64)):b("",!0)])]),n("div",Qm,[y.value?(t(),r("div",Xm,p(y.value),1)):b("",!0),he.value?(t(),j(ca,{key:1,modelValue:H.value,"onUpdate:modelValue":ie[5]||(ie[5]=ae=>H.value=ae),class:"min-h-0 flex-1",language:qe.value,error:Ee.value,"word-wrap":"on","format-on-blur":"",framed:!1,placeholder:"{\\n \\n}"},null,8,["modelValue","language","error"])):b("",!0)])])]),key:"0"}:void 0]),1032,["height-percent"]))}}),ng=["onClick"],ag=["value","placeholder","disabled"],rg=et({__name:"TagInput",props:{modelValue:{},placeholder:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(e,{emit:o}){const a=e,l=o,s=g(""),i=g(null),h=m=>{const y=m.trim().toLowerCase();y&&!a.modelValue.includes(y)&&l("update:modelValue",[...a.modelValue,y]),s.value="",Xe(()=>i.value?.focus())},u=m=>{const y=[...a.modelValue];y.splice(m,1),l("update:modelValue",y)},I=m=>{const y=m.target.value;if(y.includes(",")){const E=y.split(",");E.forEach((C,V)=>{V<E.length-1?h(C):s.value=C})}else s.value=y},S=m=>{m.key==="Enter"?(m.preventDefault(),h(s.value)):m.key==="Backspace"&&!s.value&&a.modelValue.length>0&&u(a.modelValue.length-1)},$=()=>{i.value?.focus()};return(m,y)=>(t(),r("div",{class:G(["flex flex-wrap items-center gap-1.5 min-h-[32px] px-2 py-1.5 bg-white dark:bg-neutral-950 border border-neutral-200 dark:border-neutral-800 rounded-md cursor-text focus-within:ring-2 focus-within:ring-accent-500/20 focus-within:border-accent-500 transition-colors",{"opacity-50 cursor-not-allowed":e.disabled}]),onClick:$},[(t(!0),r(Ae,null,We(e.modelValue,(E,C)=>(t(),r("span",{key:E,class:"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium bg-accent-100 dark:bg-accent-900/30 text-accent-700 dark:text-accent-300 rounded"},[rt(p(E)+" ",1),e.disabled?b("",!0):(t(),r("button",{key:0,type:"button",onClick:Ge(V=>u(C),["stop"]),class:"hover:text-accent-900 dark:hover:text-accent-100 transition-colors"},[B(c(Dt),{size:12})],8,ng))]))),128)),n("input",{ref_key:"inputRef",ref:i,type:"text",value:s.value,placeholder:e.modelValue.length===0?e.placeholder:"",disabled:e.disabled,class:"flex-1 min-w-[60px] bg-transparent border-none outline-none text-xs text-neutral-900 dark:text-neutral-100 placeholder:text-neutral-400 disabled:cursor-not-allowed",onInput:I,onKeydown:S},null,40,ag)],2))}}),sg={class:"thread-basic-info-card bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},og={class:"p-3 space-y-2"},lg={class:"text-[10px] text-neutral-500 dark:text-neutral-400"},ig=["title"],dg={class:"flex-1 text-[11px] font-mono text-neutral-600 dark:text-neutral-400 truncate"},ug={class:"thread-basic-info-row flex items-center gap-2"},cg={class:"thread-basic-info-control flex-1 flex items-center gap-1.5"},fg={key:1,class:"text-xs text-neutral-700 dark:text-neutral-200"},pg={class:"text-[9px] px-1.5 py-0.5 rounded bg-neutral-100 dark:bg-neutral-800 text-neutral-500 dark:text-neutral-400 uppercase tracking-wide shrink-0"},vg={class:"thread-basic-info-row flex items-start gap-2"},hg=et({__name:"ThreadBasicInfoCard",props:{thread:{},copiedId:{type:Boolean},isAiHumanAgent:{type:Boolean},localAgentId:{},agentOptions:{},isFetchingAgents:{type:Boolean},isSavingAgent:{type:Boolean},localTags:{},isSavingTags:{type:Boolean}},emits:["copyId","agentChange","tagsChange"],setup(e,{emit:o}){const a=o,l=s=>new Date(s*1e3).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});return(s,i)=>{const h=Wt("FormKit");return t(),r("div",sg,[n("div",og,[n("div",lg,[i[3]||(i[3]=n("span",{class:"font-medium uppercase tracking-wide"},"Created",-1)),i[4]||(i[4]=n("span",{class:"mx-1"},"·",-1)),rt(" "+p(l(e.thread.created_at)),1)]),n("div",{class:"flex items-center gap-1 px-2 py-1.5 bg-neutral-50 dark:bg-neutral-950 rounded border border-neutral-200 dark:border-neutral-800 cursor-pointer hover:border-neutral-300 dark:hover:border-neutral-700 transition-colors group",onClick:i[0]||(i[0]=u=>a("copyId")),title:e.copiedId?"Copied!":"Click to copy"},[n("code",dg,p(e.thread.id),1),n("span",{class:G(["shrink-0 transition-colors",e.copiedId?"text-green-600 dark:text-green-400":"text-neutral-400 group-hover:text-neutral-600 dark:group-hover:text-neutral-300"])},[e.copiedId?(t(),j(c(Ha),{key:0,size:12})):(t(),j(c(Qr),{key:1,size:12}))],2)],8,ig),n("div",ug,[i[5]||(i[5]=n("label",{class:"thread-basic-info-label shrink-0 text-[10px] font-medium text-neutral-500 dark:text-neutral-400 uppercase tracking-wide w-10"},"Agent",-1)),n("div",cg,[e.isAiHumanAgent?(t(),j(h,{key:0,type:"selectSearch","model-value":e.localAgentId,options:e.agentOptions,loading:e.isFetchingAgents||e.isSavingAgent,disabled:e.isSavingAgent,size:"sm",placeholder:"Select...","outer-class":"!mb-0 flex-1",onInput:i[1]||(i[1]=u=>a("agentChange",String(u)))},null,8,["model-value","options","loading","disabled"])):(t(),r("span",fg,p(e.thread.agent.title),1)),n("span",pg,p(e.thread.agent.type.replace("_"," ")),1)])]),n("div",vg,[i[6]||(i[6]=n("label",{class:"thread-basic-info-label shrink-0 text-[10px] font-medium text-neutral-500 dark:text-neutral-400 uppercase tracking-wide w-10 pt-2"},"Tags",-1)),B(rg,{"model-value":e.localTags,"onUpdate:modelValue":i[2]||(i[2]=u=>a("tagsChange",u)),disabled:e.isSavingTags,placeholder:"Add tags...",class:"flex-1"},null,8,["model-value","disabled"])])])])}}}),mg=vt(hg,[["__scopeId","data-v-b2c0cfd1"]]),gg={class:"thread-dev-tools-card bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},xg={key:0,class:"overflow-hidden border-t border-neutral-100 dark:border-neutral-800"},bg={class:"p-3 space-y-3"},yg={class:"thread-dev-tools-action-row flex items-center gap-2"},kg=["value"],_g=["disabled"],wg={class:"pt-2 border-t border-neutral-100 dark:border-neutral-800"},$g=["disabled"],Cg=et({__name:"ThreadDeveloperToolsCard",props:{expanded:{type:Boolean},isDualAiAgent:{type:Boolean},selectedSide:{},isContinuing:{type:Boolean},isDeleting:{type:Boolean}},emits:["toggle","updateSelectedSide","continueExecution","deleteThread"],setup(e,{emit:o}){const a=o;return(l,s)=>(t(),r("div",gg,[n("button",{onClick:s[0]||(s[0]=i=>a("toggle")),type:"button",class:"w-full flex items-center gap-2 px-3 py-2.5 text-left hover:bg-neutral-50 dark:hover:bg-neutral-800 transition-colors"},[B(c(Za),{size:14,class:"shrink-0 text-neutral-400"}),s[4]||(s[4]=n("span",{class:"flex-1 text-xs font-medium text-neutral-700 dark:text-neutral-200"},"Developer Tools",-1)),B(c(Tt),{size:14,class:G(["shrink-0 text-neutral-400 transition-transform duration-200",{"-rotate-180":e.expanded}])},null,8,["class"])]),B(hn,{"enter-active-class":"transition-all duration-200 ease-out","enter-from-class":"opacity-0 max-h-0","enter-to-class":"opacity-100 max-h-[150px]","leave-active-class":"transition-all duration-150 ease-in","leave-from-class":"opacity-100 max-h-[150px]","leave-to-class":"opacity-0 max-h-0"},{default:Fe(()=>[e.expanded?(t(),r("div",xg,[n("div",bg,[n("div",yg,[e.isDualAiAgent?(t(),r("select",{key:0,value:e.selectedSide,class:"text-xs px-2 py-1.5 border border-neutral-200 dark:border-neutral-700 rounded bg-white dark:bg-neutral-800 text-neutral-700 dark:text-neutral-300",onChange:s[1]||(s[1]=i=>a("updateSelectedSide",i.target.value))},[...s[5]||(s[5]=[n("option",{value:"a"},"Side A",-1),n("option",{value:"b"},"Side B",-1)])],40,kg)):b("",!0),n("button",{onClick:s[2]||(s[2]=i=>a("continueExecution")),disabled:e.isContinuing,class:"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium bg-neutral-800 dark:bg-neutral-200 text-white dark:text-neutral-900 rounded hover:bg-neutral-700 dark:hover:bg-neutral-300 transition-colors disabled:opacity-50"},[B(c(Xn),{size:12}),n("span",null,p(e.isContinuing?"Running...":"Continue"),1)],8,_g),s[6]||(s[6]=n("span",{class:"thread-dev-tools-hint text-[10px] text-neutral-500 dark:text-neutral-400"},"Resume without new message",-1))]),n("div",wg,[n("button",{onClick:s[3]||(s[3]=i=>a("deleteThread")),disabled:e.isDeleting,class:"flex items-center gap-1.5 text-xs font-medium text-red-600 dark:text-red-400 hover:text-red-700 dark:hover:text-red-300 transition-colors disabled:opacity-50"},[B(c(An),{size:12}),n("span",null,p(e.isDeleting?"Deleting...":"Delete Thread"),1)],8,$g)])])])):b("",!0)]),_:1})]))}}),Sg=vt(Cg,[["__scopeId","data-v-e5ac7740"]]),Tg=new Set(["healthy","observing","recovered","parked","idle","unreachable"]);function Ig(e){if(!e||typeof e!="object")return{available:!1,armed:!1,checkins:[]};const o=e,a=Array.isArray(o.history)?o.history:[],l=[];for(const s of a){if(!s||typeof s!="object")continue;const i=s,h=typeof i.at=="number"&&Number.isFinite(i.at)?i.at:null,u=typeof i.verdict=="string"&&Tg.has(i.verdict)?i.verdict:null;h===null||u===null||l.push({at:h,verdict:u,action:typeof i.action=="string"?i.action:"",executing:typeof i.executing=="boolean"?i.executing:null,incompleteLogs:typeof i.incompleteLogs=="number"?i.incompleteLogs:null,silenceMs:typeof i.silenceMs=="number"?i.silenceMs:null,probeMs:typeof i.probeMs=="number"?i.probeMs:0,error:typeof i.error=="string"?i.error:void 0})}return{available:!0,armed:o.armed===!0,checkins:l}}function Ag(e){switch(e){case"healthy":return"healthy";case"observing":return"observing";case"recovered":return"recovered";case"parked":return"parked";case"idle":return"stood down";case"unreachable":return"unreachable"}}function Eg(e){switch(e){case"healthy":return"bg-emerald-50 text-emerald-700 dark:bg-emerald-950/40 dark:text-emerald-300";case"recovered":return"bg-sky-50 text-sky-700 dark:bg-sky-950/40 dark:text-sky-300";case"observing":return"bg-amber-50 text-amber-700 dark:bg-amber-950/40 dark:text-amber-300";case"parked":case"unreachable":return"bg-red-50 text-red-700 dark:bg-red-950/40 dark:text-red-300";case"idle":return"bg-neutral-100 text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300"}}function Lg(e){const o=new Date(e);if(Number.isNaN(o.getTime()))return"—";const a=l=>String(l).padStart(2,"0");return`${a(o.getHours())}:${a(o.getMinutes())}:${a(o.getSeconds())}`}const Rg={class:"thread-watchdog-card bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},Mg={class:"w-full flex items-center gap-2 px-3 py-2.5"},Dg={class:"px-3 pb-3"},Fg={key:0,class:"text-[11px] text-neutral-400 dark:text-neutral-500"},Pg={key:1,class:"text-[11px] text-neutral-400 dark:text-neutral-500"},Ng={key:0,class:"text-[11px] text-neutral-400 dark:text-neutral-500"},zg={key:1,class:"space-y-1"},jg=["title"],Bg={class:"shrink-0 tabular-nums text-neutral-400 dark:text-neutral-500"},Og={class:"min-w-0 truncate text-neutral-600 dark:text-neutral-300"},Vg={class:"mt-2.5 flex items-center gap-2"},qg=["disabled"],Ug={key:2,class:"mt-1.5 text-[11px] text-red-600 dark:text-red-400"},Hg=5,Wg=et({__name:"ThreadWatchdogCard",props:{watchdog:{},isChecking:{type:Boolean},checkError:{}},emits:["runCheck"],setup(e,{emit:o}){const a=o;return(l,s)=>(t(),r("div",Rg,[n("div",Mg,[B(c(Xr),{size:14,class:"shrink-0 text-neutral-400"}),s[1]||(s[1]=n("span",{class:"flex-1 text-xs font-medium text-neutral-700 dark:text-neutral-200"},"Watchdog",-1)),e.watchdog?.available?(t(),r("span",{key:0,class:G(["inline-flex rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",e.watchdog.armed?"bg-emerald-50 text-emerald-700 dark:bg-emerald-950/40 dark:text-emerald-300":"bg-neutral-100 text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300"])},p(e.watchdog.armed?"armed":"standing by"),3)):b("",!0)]),n("div",Dg,[e.watchdog?e.watchdog.available?(t(),r(Ae,{key:2},[e.watchdog.checkins.length===0?(t(),r("p",Ng," No check-ins yet — the watchdog arms when the thread executes. ")):(t(),r("ul",zg,[(t(!0),r(Ae,null,We(e.watchdog.checkins.slice(0,Hg),i=>(t(),r("li",{key:i.at,class:"flex items-baseline gap-2 text-[11px]",title:i.error},[n("span",Bg,p(c(Lg)(i.at)),1),n("span",{class:G(["shrink-0 inline-flex rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",c(Eg)(i.verdict)])},p(c(Ag)(i.verdict)),3),n("span",Og,p(i.action),1)],8,jg))),128))])),n("div",Vg,[n("button",{onClick:s[0]||(s[0]=i=>a("runCheck")),disabled:e.isChecking,type:"button",class:"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium bg-neutral-800 dark:bg-neutral-200 text-white dark:text-neutral-900 rounded hover:bg-neutral-700 dark:hover:bg-neutral-300 transition-colors disabled:opacity-50"},[B(c(Dn),{size:12,class:G({"animate-spin":e.isChecking})},null,8,["class"]),n("span",null,p(e.isChecking?"Checking...":"Run check now"),1)],8,qg),s[2]||(s[2]=n("span",{class:"text-[10px] text-neutral-400 dark:text-neutral-500"}," Finalizes lost requests and resumes a stuck thread. Safe when healthy. ",-1))]),e.checkError?(t(),r("p",Ug,p(e.checkError),1)):b("",!0)],64)):(t(),r("p",Pg," Not available on this deployment (requires builder 0.26+). ")):(t(),r("p",Fg," Loading watchdog state… "))])]))}}),Kg={key:0,class:"flex justify-center py-6"},Jg={key:1,class:"text-red-600 dark:text-red-400 text-center py-4 text-xs"},Gg={class:"thread-settings-variables-card bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},Yg={key:0,class:"text-xs text-neutral-500 dark:text-neutral-400"},Qg={key:1,class:"space-y-2"},Xg={class:"thread-settings-variable-name min-w-0 flex items-center gap-1.5"},Zg=["title"],ex={key:0,class:"shrink-0 rounded bg-red-100 px-1 py-0.5 text-[8px] uppercase tracking-wide text-red-700 dark:bg-red-900 dark:text-red-300"},tx=["disabled","onClick","title"],nx=["disabled","onClick"],ax={key:1,class:"h-7 w-7"},rx={class:"mt-3 border-t border-neutral-100 dark:border-neutral-800 pt-3 space-y-2"},sx=["disabled","onClick","title"],ox=["disabled","onClick"],lx=["disabled"],ix=["disabled"],dx={key:1},ux={key:0,class:"text-[10px] text-red-600 dark:text-red-400"},qa="**********",cx=et({__name:"MetadataSlidePane",props:{threadId:{},show:{type:Boolean},embedded:{type:Boolean}},emits:["close","threadDeleted","editThread","threadUpdated"],setup(e,{emit:o}){const a=e,l=o,{thread:s,isFetching:i,error:h,refetch:u}=da(T(()=>a.threadId)),{agents:I,isFetching:S}=ir(),$=g(!1),m=g(!1),y=g(!1),E=g(!1),C=g(!!a.embedded),V=g(!1),H=g("a"),J=g(!1),oe=g(!1);let X=null,ne=0;const ue=()=>({id:`new-env-${ne++}`,name:"",value:"",secret:!0}),K=g([]),P=g({}),R=g({}),W=g({}),q=g({}),we=g({}),Pe=g([ue()]),te=g(null),qe=g(null),z=g(null),he=g(""),ke=g([]),Ee=g(!1),_e=(O,ee)=>O instanceof Error?O.message:ee,me=(O,ee)=>{dn(ee?{error:O,fieldErrors:ee}:{error:O},z)||(qe.value=O)},Se=T(()=>I.value?I.value.filter(O=>O.type==="ai_human").map(O=>({value:O.id,label:O.title})):[]),Ie=T(()=>s.value?.agent.type==="ai_human"),re=T(()=>s.value?.agent.type==="dual_ai"),Z=T(()=>K.value.filter(O=>!we.value[O.property])),Q=async()=>{s.value&&(await navigator.clipboard.writeText(s.value.id),J.value=!0,X&&clearTimeout(X),X=setTimeout(()=>{J.value=!1,X=null},2e3))};Kt(()=>{X&&clearTimeout(X)});const ce=async O=>{if(!(!a.threadId||!O||O===s.value?.agent.id)){y.value=!0;try{const ee=await fetch(Qe(`/api/threads/${a.threadId}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent_id:O})});if(!ee.ok){const Oe=await ee.json();throw new Error(Oe.error||"Failed to update agent")}await u(),l("threadUpdated")}catch{he.value=s.value?.agent.id||""}finally{y.value=!1}}},fe=async O=>{if(a.threadId){ke.value=O,Ee.value=!0,E.value=!0;try{const ee=await fetch(Qe(`/api/threads/${a.threadId}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tags:O})});if(!ee.ok){const Oe=await ee.json();throw new Error(Oe.error||"Failed to update tags")}l("threadUpdated")}catch{ke.value=s.value?.tags||[]}finally{E.value=!1,Ee.value=!1}}},De=()=>{a.embedded&&(C.value=!0)},Ye=O=>O.defined?(O.defined.type==="agent"||O.defined.type==="prompt")&&O.defined.name?`${O.defined.type}:${O.defined.name}`:O.defined.type==="account"?"user":O.defined.type:"missing",F=O=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(O.trim()),$e=(O={})=>({outer:"$remove:mb-4 $remove:mb-3.5 !mb-0 min-w-0",wrapper:"$remove:flex-1 flex min-w-0",inner:"$reset min-w-0",input:["$reset block h-8 w-full min-w-0 rounded border border-neutral-200 bg-white px-2 py-1.5 text-xs text-neutral-700 placeholder:text-neutral-400 disabled:opacity-60 dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-200",O.mono?"font-mono":""].filter(Boolean).join(" "),help:"$remove:hidden hidden",messages:"$remove:formkit-messages hidden"}),ye=O=>{const ee={},Oe={};for(const pe of O)ee[pe.property]=pe.type==="secret"&&pe.defined?qa:pe.value??"",Oe[pe.property]=pe.type==="secret";P.value=ee,R.value=Oe,W.value={},q.value={},we.value={}},Le=O=>{R.value={...R.value,[O]:!R.value[O]},q.value={...q.value,[O]:!0}},Ve=O=>{W.value={...W.value,[O]:!0}},He=O=>{we.value={...we.value,[O]:!0},qe.value=null,un(z)},le=()=>{Pe.value=[...Pe.value,ue()]},ie=O=>{const ee=Pe.value.filter(Oe=>Oe.id!==O);Pe.value=ee.length>0?ee:[ue()]},ae=async()=>{if(!a.threadId||!s.value?.agent?.id){K.value=[],ye([]);return}oe.value=!0;try{const O=await fetch(Qe(`/api/variables/agents/${encodeURIComponent(s.value.agent.id)}?thread_id=${encodeURIComponent(a.threadId)}`));if(!O.ok){K.value=[];return}const ee=await O.json();K.value=ee.variables||[],ye(K.value)}catch{K.value=[],ye([])}finally{oe.value=!1}},Re=async(O,ee=[],Oe={})=>{if(!a.threadId)return;qe.value=null;const pe=await fetch(Qe(`/api/threads/${a.threadId}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({env_patch:O,env_type_patch:Oe,env_delete:ee})});if(!pe.ok){const D=await pe.json().catch(()=>({}));throw new Error(D.error||"Failed to update variable")}await u(),await ae(),l("threadUpdated")},Ke=async()=>{if(te.value)return;const O={},ee={},Oe=Object.keys(we.value).filter(D=>we.value[D]);for(const D of Z.value){if(!W.value[D.property]&&!q.value[D.property])continue;if(!F(D.property)){me(`Invalid env name: ${D.property}`,{[`env_${D.property}`]:`Invalid env name: ${D.property}`});return}const xe=P.value[D.property]??"";xe!==qa&&(O[D.property]=xe),(q.value[D.property]||W.value[D.property])&&(ee[D.property]=R.value[D.property]?"secret":"text")}const pe=new Set;for(const D of Pe.value){const xe=D.name.trim(),je=D.value.length>0;if(!(!xe&&!je)){if(!xe||!F(xe)){me("Use a valid env name like WEATHER_API_KEY",{[`${D.id}_name`]:"Use a valid env name like WEATHER_API_KEY"});return}if(pe.has(xe)){me(`Duplicate env name: ${xe}`,{[`${D.id}_name`]:`Duplicate env name: ${xe}`});return}pe.add(xe),O[xe]=D.value,ee[xe]=D.secret?"secret":"text"}}if(Object.keys(O).length===0&&Object.keys(ee).length===0&&Oe.length===0){me("No env changes to save");return}te.value="__all__";try{await Re(O,Oe,ee),Pe.value=[ue()]}catch(D){me(_e(D,"Failed to save variables"))}finally{te.value=null}},U=g(null),Ce=g(!1),se=g(null),Ue=async()=>{if(a.threadId)try{const O=await fetch(Qe(`/api/threads/${a.threadId}/diagnostics`));if(!O.ok){U.value={available:!1,armed:!1,checkins:[]};return}const ee=await O.json();U.value=Ig(ee?.watchdog??null)}catch{U.value={available:!1,armed:!1,checkins:[]}}},tt=async()=>{if(!(!a.threadId||Ce.value)){Ce.value=!0,se.value=null;try{const O=await fetch(Qe(`/api/threads/${a.threadId}/revive`),{method:"POST"});if(!O.ok){const ee=await O.json().catch(()=>null);throw new Error(ee?.error||"Watchdog check failed")}}catch(O){se.value=_e(O,"Watchdog check failed")}finally{Ce.value=!1,await Ue()}}},nt=async()=>{if(a.threadId){V.value=!0;try{const O=await fetch(Qe(`/api/threads/${a.threadId}/continue`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({side:H.value})});if(!O.ok){const ee=await O.json();throw new Error(ee.error||"Failed to continue execution")}}catch{H.value="a"}finally{V.value=!1}}},ge=async()=>{if(a.threadId){m.value=!0;try{const O=await fetch(Qe(`/api/threads/${a.threadId}`),{method:"DELETE"});if(!O.ok){const ee=await O.json();throw new Error(ee.error||"Failed to delete thread")}l("threadDeleted",a.threadId)}catch{$.value=!1}finally{m.value=!1}}};return be(()=>s.value,O=>{O&&(he.value=O.agent.id,Ee.value||(ke.value=O.tags||[]))},{immediate:!0}),be(()=>a.show,O=>{O?(ae(),Ue(),De()):(C.value=!1,K.value=[],P.value={},R.value={},W.value={},q.value={},we.value={},Pe.value=[ue()],qe.value=null,un(z),oe.value=!1,U.value=null,se.value=null)},{immediate:!0}),be(()=>a.threadId,()=>{C.value=!1,K.value=[],P.value={},R.value={},W.value={},q.value={},we.value={},Pe.value=[ue()],qe.value=null,un(z),U.value=null,se.value=null,a.show&&(ae(),Ue(),De())}),be(()=>s.value?.agent?.id,()=>{a.show&&(ae(),De())}),(O,ee)=>{const Oe=Wt("FormKit");return t(),j(hn,{"enter-active-class":e.embedded?"":"transition-all duration-300 ease-out","enter-from-class":e.embedded?"":"max-h-0 opacity-0","enter-to-class":e.embedded?"":"max-h-[500px] opacity-100","leave-active-class":e.embedded?"":"transition-all duration-200 ease-in","leave-from-class":e.embedded?"":"max-h-[500px] opacity-100","leave-to-class":e.embedded?"":"max-h-0 opacity-0"},{default:Fe(()=>[e.show&&e.threadId?(t(),r("div",{key:0,class:G(["thread-settings-pane",e.embedded?"h-full overflow-y-auto bg-neutral-100 dark:bg-neutral-950":"overflow-hidden bg-neutral-100 dark:bg-neutral-950"])},[n("div",{class:G(["thread-settings-layout",e.embedded?"grid grid-cols-1 gap-3 p-3":"max-h-[500px] overflow-y-auto p-3 space-y-3"])},[c(i)?(t(),r("div",Kg,[B(Ze)])):c(h)?(t(),r("div",Jg," Error: "+p(c(h)),1)):c(s)?(t(),r(Ae,{key:2},[B(mg,{thread:c(s),"copied-id":J.value,"is-ai-human-agent":Ie.value,"local-agent-id":he.value,"agent-options":Se.value,"is-fetching-agents":c(S),"is-saving-agent":y.value,"local-tags":ke.value,"is-saving-tags":E.value,onCopyId:Q,onAgentChange:ce,onTagsChange:fe},null,8,["thread","copied-id","is-ai-human-agent","local-agent-id","agent-options","is-fetching-agents","is-saving-agent","local-tags","is-saving-tags"]),n("div",Gg,[ee[5]||(ee[5]=n("div",{class:"px-3 py-2.5 border-b border-neutral-100 dark:border-neutral-800"},[n("div",{class:"text-xs font-medium text-neutral-700 dark:text-neutral-200"}," Variables ")],-1)),B(Oe,{type:"form",id:"thread-variable-form",actions:!1,disabled:te.value!==null,onSubmit:Ke,onNode:ee[0]||(ee[0]=pe=>z.value=pe),"form-class":"$reset p-3"},{default:Fe(()=>[B(c(Qn),{node:z.value||void 0},null,8,["node"]),oe.value?(t(),r("div",Yg," Loading variables... ")):b("",!0),!oe.value&&Z.value.length>0?(t(),r("div",Qg,[(t(!0),r(Ae,null,We(Z.value,pe=>(t(),r("div",{key:pe.property,class:"thread-settings-variable-row grid grid-cols-[minmax(90px,1fr)_minmax(0,1.6fr)_auto_auto] items-center gap-1.5"},[n("div",Xg,[n("span",{class:"truncate text-[11px] font-mono text-neutral-700 dark:text-neutral-200",title:`${pe.property} (${Ye(pe)})`},p(pe.property),9,Zg),pe.required?(t(),r("span",ex," req ")):b("",!0)]),B(Oe,{type:R.value[pe.property]?"password":"text",name:`env_${pe.property}`,modelValue:P.value[pe.property],"onUpdate:modelValue":D=>P.value[pe.property]=D,placeholder:"Value",disabled:te.value!==null,"outer-class":"$reset mb-0",classes:$e(),onInput:D=>Ve(pe.property)},null,8,["type","name","modelValue","onUpdate:modelValue","disabled","classes","onInput"]),n("button",{type:"button",class:G(["inline-flex h-7 w-7 shrink-0 items-center justify-center rounded hover:bg-neutral-50 disabled:opacity-50 dark:hover:bg-neutral-800",R.value[pe.property]?"text-neutral-950 dark:text-neutral-50":"text-neutral-300 dark:text-neutral-600"]),disabled:te.value!==null,onClick:D=>Le(pe.property),title:R.value[pe.property]?"Treat as secret":"Treat as text"},[R.value[pe.property]?(t(),j(c(pa),{key:0,size:13})):(t(),j(c(va),{key:1,size:13}))],10,tx),pe.defined&&pe.defined.type==="thread"?(t(),r("button",{key:0,type:"button",class:"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded text-neutral-300 hover:bg-red-50 hover:text-red-600 disabled:opacity-50 dark:text-neutral-600 dark:hover:bg-red-950 dark:hover:text-red-400",disabled:te.value!==null,onClick:D=>He(pe.property),title:"Remove env"},[B(c(An),{size:13})],8,nx)):(t(),r("div",ax))]))),128))])):b("",!0),n("div",rx,[(t(!0),r(Ae,null,We(Pe.value,pe=>(t(),r("div",{key:pe.id,class:"thread-settings-new-env-row grid grid-cols-[minmax(90px,1fr)_minmax(0,1.6fr)_auto_auto] items-center gap-1.5"},[B(Oe,{type:"text",name:`${pe.id}_name`,modelValue:pe.name,"onUpdate:modelValue":D=>pe.name=D,placeholder:"FOOBAR",disabled:te.value!==null,validation:"envName","validation-visibility":"submit","outer-class":"$reset mb-0",classes:$e({mono:!0}),onKeydown:Bt(Ge(Ke,["prevent"]),["enter"])},null,8,["name","modelValue","onUpdate:modelValue","disabled","classes","onKeydown"]),B(Oe,{type:pe.secret?"password":"text",name:`${pe.id}_value`,modelValue:pe.value,"onUpdate:modelValue":D=>pe.value=D,placeholder:"Value",disabled:te.value!==null,"outer-class":"$reset mb-0",classes:$e(),onKeydown:Bt(Ge(Ke,["prevent"]),["enter"])},null,8,["type","name","modelValue","onUpdate:modelValue","disabled","classes","onKeydown"]),n("button",{type:"button",class:G(["inline-flex h-7 w-7 shrink-0 items-center justify-center rounded hover:bg-neutral-50 disabled:opacity-50 dark:hover:bg-neutral-800",pe.secret?"text-neutral-950 dark:text-neutral-50":"text-neutral-300 dark:text-neutral-600"]),disabled:te.value!==null,onClick:D=>pe.secret=!pe.secret,title:pe.secret?"Treat as secret":"Treat as text"},[pe.secret?(t(),j(c(pa),{key:0,size:13})):(t(),j(c(va),{key:1,size:13}))],10,sx),n("button",{type:"button",class:"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded text-neutral-300 hover:bg-red-50 hover:text-red-600 disabled:opacity-50 dark:text-neutral-600 dark:hover:bg-red-950 dark:hover:text-red-400",disabled:te.value!==null,onClick:D=>ie(pe.id),title:"Remove new row"},[B(c(An),{size:13})],8,ox)]))),128)),n("button",{type:"button",class:"text-[11px] font-medium text-neutral-500 hover:text-neutral-800 disabled:opacity-50 dark:text-neutral-400 dark:hover:text-neutral-200",disabled:te.value!==null,onClick:le}," Add another env ",8,lx),n("button",{type:"submit",form:"thread-variable-form",class:"inline-flex w-full items-center justify-center rounded border border-neutral-200 px-2 py-1.5 text-[11px] font-medium text-neutral-600 hover:bg-neutral-50 disabled:opacity-50 dark:border-neutral-700 dark:text-neutral-300 dark:hover:bg-neutral-800",disabled:te.value!==null},[te.value==="__all__"?(t(),j(Ze,{key:0,size:"xs"})):(t(),r("span",dx,"Save envs"))],8,ix),qe.value?(t(),r("p",ux,p(qe.value),1)):b("",!0)])]),_:1},8,["disabled"])]),B(Wg,{watchdog:U.value,"is-checking":Ce.value,"check-error":se.value,onRunCheck:tt},null,8,["watchdog","is-checking","check-error"]),B(Sg,{expanded:C.value,"is-dual-ai-agent":re.value,"selected-side":H.value,"is-continuing":V.value,"is-deleting":m.value,onToggle:ee[1]||(ee[1]=pe=>C.value=!C.value),onUpdateSelectedSide:ee[2]||(ee[2]=pe=>H.value=pe),onContinueExecution:nt,onDeleteThread:ee[3]||(ee[3]=pe=>$.value=!0)},null,8,["expanded","is-dual-ai-agent","selected-side","is-continuing","is-deleting"])],64)):b("",!0)],2),B(Cs,{modelValue:$.value,"onUpdate:modelValue":ee[4]||(ee[4]=pe=>$.value=pe),title:"Delete Thread?",message:"This will permanently delete all messages, logs, and associated data. This action cannot be undone.","confirm-text":"Delete","cancel-text":"Cancel",onConfirm:ge},null,8,["modelValue"])],2)):b("",!0)]),_:1},8,["enter-active-class","enter-from-class","enter-to-class","leave-active-class","leave-from-class","leave-to-class"])}}}),fx=vt(cx,[["__scopeId","data-v-a3e80d3e"]]),px={class:"relative -ml-3 flex min-w-0 w-72 shrink-0 self-stretch border-r border-neutral-200 dark:border-neutral-800"},vx={key:1,class:"flex h-5 w-5 shrink-0 items-center justify-center"},hx={class:"min-w-0 flex-1"},mx={class:"block truncate font-medium text-neutral-900 dark:text-neutral-100"},gx={class:"block truncate text-[10px] leading-tight text-neutral-500 dark:text-neutral-400"},xx={key:1,class:"absolute left-0 top-full z-30 w-[22rem] overflow-hidden rounded-b-lg border border-neutral-200 bg-white shadow-xl dark:border-neutral-700 dark:bg-neutral-900"},bx={class:"flex items-center justify-end border-b border-neutral-100 px-1 py-1 dark:border-neutral-800"},yx={class:"max-h-[min(30rem,70vh)] overflow-y-auto py-1.5 text-[12px]"},kx={key:0,class:"flex items-center gap-2 px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},_x={key:1,class:"px-3 py-3 text-xs text-red-600 dark:text-red-400"},wx={key:2,class:"px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},$x=["onClick"],Cx={key:1,class:"relative z-[1] mt-px flex h-5 w-5 shrink-0 items-center justify-center"},Sx={class:"relative z-[1] min-w-0 flex-1"},Tx={class:"block truncate text-xs font-medium"},Ix={class:"block truncate text-[10px] leading-tight text-neutral-500 dark:text-neutral-400"},Gn=et({__name:"ThreadAgentConfigurationSelector",props:{nodes:{},selectedNode:{},pinned:{type:Boolean},loading:{type:Boolean},error:{},baseIndentPx:{},levelIndentPx:{}},emits:["select","pin","unpin"],setup(e,{emit:o}){const a=e,l=o,s=g(!1);function i(S){return S?.kind==="subprompt"?"text-fuchsia-600 dark:text-fuchsia-400":"text-sky-600 dark:text-sky-400"}function h(S){l("select",S),s.value=!1}function u(){a.pinned||(s.value=!s.value)}function I(){l("pin"),s.value=!1}return(S,$)=>(t(),r("div",px,[n("button",{type:"button",class:G(["flex h-full min-w-0 w-full items-center gap-2 bg-transparent px-3 py-1.5 text-left text-xs transition-colors hover:bg-accent-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent-500 dark:hover:bg-accent-950/30",e.pinned?"cursor-default":""]),onClick:u,onKeydown:$[0]||($[0]=Bt(Ge(m=>s.value=!1,["stop"]),["escape"]))},[e.selectedNode?.avatarSrc?(t(),j(pn,{key:0,icon:e.selectedNode.avatarSrc,seed:e.selectedNode.avatarSeed??e.selectedNode.label,class:"h-5 w-5 shrink-0 rounded object-cover ring-1 ring-black/10 dark:ring-white/15"},null,8,["icon","seed"])):(t(),r("span",vx,[e.selectedNode?.kind==="model"?(t(),j(c(In),{key:0,size:15,class:"text-violet-600 dark:text-violet-400"})):(t(),j(c(fn),{key:1,size:15,class:G(i(e.selectedNode))},null,8,["class"]))])),n("span",hx,[n("span",mx,p(e.selectedNode?.label||"Agent Configuration"),1),n("span",gx,p(e.selectedNode?.subtitle||"Select configuration item"),1)]),e.pinned?b("",!0):(t(),j(c(Tt),{key:2,size:14,class:G(["shrink-0 text-neutral-400",s.value?"rotate-180":""])},null,8,["class"]))],34),e.pinned?(t(),r("button",{key:0,type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded-md text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100",title:"Unpin configuration tree",onClick:$[1]||($[1]=m=>l("unpin"))},[B(c(Zn),{size:14})])):b("",!0),s.value&&!e.pinned?(t(),r("div",xx,[n("div",bx,[n("button",{type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded-md text-neutral-500 transition-colors hover:bg-accent-50 hover:text-accent-900 dark:text-neutral-400 dark:hover:bg-accent-950/30 dark:hover:text-accent-100",title:"Pin as sidebar",onClick:I},[B(c(Zn),{size:14})])]),n("div",yx,[e.loading?(t(),r("div",kx,[B(Ze,{size:"xs"}),$[2]||($[2]=n("span",null,"Loading configuration...",-1))])):e.error?(t(),r("div",_x,p(e.error),1)):e.nodes.length===0?(t(),r("div",wx," No agent configuration available. ")):(t(!0),r(Ae,{key:3},We(e.nodes,({node:m,depth:y})=>(t(),r("button",{key:m.key,type:"button",class:G(["group relative flex w-full items-start gap-1.5 px-2 py-1.5 text-left leading-tight transition-colors",e.selectedNode?.key===m.key?"bg-accent-50 text-accent-900 hover:bg-accent-100 dark:bg-accent-950/30 dark:text-accent-100 dark:hover:bg-accent-900/40":"text-neutral-700 hover:bg-accent-50 hover:text-accent-900 dark:text-neutral-300 dark:hover:bg-accent-950/30 dark:hover:text-accent-100"]),style:gt({paddingLeft:`${e.baseIndentPx+y*e.levelIndentPx}px`}),onClick:E=>h(m.key)},[(t(!0),r(Ae,null,We(y,E=>(t(),r("span",{key:E,"aria-hidden":"true",class:"pointer-events-none absolute inset-y-0 w-px bg-neutral-200 dark:bg-neutral-800",style:gt({left:`${e.baseIndentPx+(E-1)*e.levelIndentPx}px`})},null,4))),128)),m.avatarSrc?(t(),j(pn,{key:0,icon:m.avatarSrc,seed:m.avatarSeed??m.label,class:"relative z-[1] mt-px h-5 w-5 shrink-0 rounded object-cover ring-1 ring-black/10 dark:ring-white/15"},null,8,["icon","seed"])):(t(),r("span",Cx,[m.kind==="model"?(t(),j(c(In),{key:0,size:15,class:"text-violet-600 dark:text-violet-400"})):(t(),j(c(fn),{key:1,size:15,class:G(i(m))},null,8,["class"]))])),n("span",Sx,[n("span",Tx,p(m.label),1),n("span",Ix,p(m.subtitle),1)])],14,$x))),128))])])):b("",!0)]))}}),Ax={class:"h-full min-h-0 min-w-0 overflow-hidden bg-neutral-100 dark:bg-neutral-950"},Ex={key:1,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},Lx=et({__name:"ThreadAgentSettingsPane",props:{agentId:{},agentName:{},agentTitle:{},active:{type:Boolean}},emits:["saved"],setup(e,{emit:o}){const a=e,l=o,{saving:s,apiError:i,saveAgent:h}=fs(),u=g(null),I=T(()=>a.agentId?{id:a.agentId,name:a.agentName||a.agentId,title:a.agentTitle||a.agentName||a.agentId}:null);async function S($){if(!a.agentId)return;(await h({mode:"edit",data:$,editingId:a.agentId,formNode:u.value?.formNode})).ok&&(await u.value?.markSaveSucceeded(),l("saved",$))}return be(()=>a.active,$=>{$===!1&&u.value?.resetSaveSuccess()}),($,m)=>(t(),r("div",Ax,[I.value?(t(),j(Us,{key:0,ref_key:"agentModalRef",ref:u,"model-value":!0,"edit-agent":I.value,mode:"edit",inline:"","inline-global-notice":"","inline-accent-tabs":"",saving:c(s),"api-error":c(i),onSave:S},{"nav-leading":Fe(()=>[Ft($.$slots,"nav-leading")]),_:3},8,["edit-agent","saving","api-error"])):(t(),r("div",Ex," No agent configured "))]))}}),Rx={class:"flex h-full min-h-0 min-w-0 flex-col overflow-hidden bg-neutral-100 dark:bg-neutral-950"},Mx={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"},Dx={key:0,class:"min-w-0 flex-1"},Fx={key:1,class:"min-h-0 min-w-0 flex-1"},Px={key:2,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},Nx=et({__name:"ThreadModelSettingsPane",props:{modelId:{},modelName:{},modelProvider:{},modelActual:{},model:{},active:{type:Boolean}},emits:["saved"],setup(e,{emit:o}){const a=e,l=o,{saving:s,saveModel:i}=ps(),h=g(null),u=g(null),I=["basics","capabilities","fallbacks"],{activeTab:S,scrollToSection:$}=rr(u,I),m=[{id:"basics",label:"Basic",icon:ea},{id:"capabilities",label:"Capabilities",icon:vs},{id:"fallbacks",label:"Fallback Models",icon:hs}],y=T(()=>a.modelId?{id:a.model?.id||a.modelId,name:a.model?.name||a.modelName||a.modelId,provider:a.model?.provider||a.modelProvider||"",model:a.model?.model||a.modelActual||a.modelId,fallbacks:a.model?.fallbacks,capabilities:a.model?.capabilities,providerTools:a.model?.providerTools}:null);async function E(V){!y.value?.id||!(await i({mode:"edit",data:V,editingId:y.value.id,formNode:h.value?.formNode})).ok||(h.value?.markCurrentPayloadClean?.(),l("saved"))}function C(V){u.value=V}return be(()=>a.active,()=>{h.value?.markCurrentPayloadClean?.()}),(V,H)=>(t(),r("div",Rx,[y.value||V.$slots["nav-leading"]?(t(),r("nav",Mx,[Ft(V.$slots,"nav-leading"),y.value?(t(),r("div",Dx,[B(c(sr),{tabs:m,"active-tab":c(S),"accent-active":"",orientation:"horizontal",onSelect:c($)},null,8,["active-tab","onSelect"])])):b("",!0)])):b("",!0),y.value?(t(),r("div",Fx,[B(c(sa),{config:c(oa)},{default:Fe(()=>[B(ms,{ref_key:"modelPaneRef",ref:h,"edit-model":y.value,mode:"edit",saving:c(s),"show-global-notice":"",page:"","body-ref":C,onSave:E},null,8,["edit-model","saving"])]),_:1},8,["config"])])):b("",!0),y.value?b("",!0):(t(),r("div",Px," No model configured "))]))}}),zx={class:"h-full min-h-0 min-w-0 overflow-hidden bg-neutral-100 dark:bg-neutral-950"},jx={key:1,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},Bx=et({__name:"ThreadPromptSettingsPane",props:{promptName:{},active:{type:Boolean}},emits:["saved"],setup(e,{emit:o}){const a=e,l=o,{saving:s,apiError:i,savePrompt:h}=gs(),u=g(0),I=g(0),S=T(()=>a.promptName?{id:a.promptName,name:a.promptName}:null);async function $(m){if(!a.promptName)return;(await h({mode:"edit",data:m,editingId:a.promptName})).ok&&(u.value+=1,l("saved"))}return be(()=>a.active,m=>{m===!1&&(I.value+=1)}),(m,y)=>(t(),r("div",zx,[S.value?(t(),j(Ts,{key:0,"model-value":!0,"edit-prompt":S.value,mode:"edit",inline:"","inline-global-notice":"","inline-accent-tabs":"","save-success-key":u.value,"reset-success-key":I.value,saving:c(s),"api-error":c(i),onSave:$},{"nav-leading":Fe(()=>[Ft(m.$slots,"nav-leading")]),_:3},8,["edit-prompt","save-success-key","reset-success-key","saving","api-error"])):(t(),r("div",jx," No prompt configured "))]))}}),Ox={class:"flex h-full min-h-0 flex-col overflow-hidden bg-neutral-100 dark:bg-neutral-950"},Vx={class:"flex min-h-0 min-w-0 flex-1"},qx={key:0,class:"flex h-full w-64 shrink-0 flex-col border-r border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900"},Ux={class:"flex h-8 shrink-0 items-center justify-end border-b border-neutral-200 px-1 dark:border-neutral-800"},Hx={class:"min-h-0 flex-1 overflow-y-auto py-1.5 text-[12px]"},Wx={key:0,class:"flex items-center gap-2 px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},Kx={key:1,class:"px-3 py-3 text-xs text-red-600 dark:text-red-400"},Jx={key:2,class:"px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},Gx=["onClick"],Yx={key:1,class:"relative z-[1] mt-px flex h-5 w-5 shrink-0 items-center justify-center"},Qx={class:"relative z-[1] min-w-0 flex-1"},Xx={class:"block truncate text-xs font-medium"},Zx={class:"block truncate text-[10px] leading-tight text-neutral-500 dark:text-neutral-400"},eb={class:"min-w-0 flex-1 overflow-hidden"},tb={key:3,class:"flex h-full items-center justify-center gap-2 text-sm text-neutral-500 dark:text-neutral-400"},nb={key:4,class:"flex h-full items-center justify-center text-sm text-red-600 dark:text-red-400"},ab={key:5,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},Ua=5,on=7,ln=9,rb=et({__name:"ThreadAgentConfigurationPane",props:{agentId:{},agentName:{},agentTitle:{},agentType:{},sideAPromptName:{},sideBPromptName:{},active:{type:Boolean}},emits:["agentSaved","saved"],setup(e,{emit:o}){const a=e,l=o,s=g(null),i=g(null),h=g(!1),u=g(null),I=g({}),S=g({}),$=new Map,m=new Map,y=Zr("agentbuilder.threadAgentConfiguration.pinnedTree",!1);let E=0;const C=T(()=>a.agentName||a.agentId||null),V=T(()=>!s.value||!i.value?null:R(s.value,i.value)),H=T(()=>V.value?P(V.value):null),J=T(()=>{if(!s.value)return[];const F=[],$e=(ye,Le)=>{F.push({node:ye,depth:Le});for(const Ve of ye.children)$e(Ve,Le+1)};return $e(s.value,0),F}),oe=T(()=>{const F=V.value;return!F||!K(F)?null:F}),X=T(()=>{const F=V.value;return!F||!F.promptName||F.kind!=="prompt"&&F.kind!=="subprompt"?null:F}),ne=T(()=>{const F=V.value;return!F||F.kind!=="model"||!F.modelId?null:F}),ue=T(()=>V.value||s.value);function K(F){return F.kind==="agent"||F.kind==="handoff"||F.kind==="subagent"}function P(F){return F.kind==="model"?`model:${F.modelId||F.modelName}`:F.promptName?`prompt:${F.promptName}`:`agent:${F.agentName||F.agentId}`}function R(F,$e){if(F.key===$e)return F;for(const ye of F.children){const Le=R(ye,$e);if(Le)return Le}return null}function W(F,$e){if(P(F)===$e)return F;for(const ye of F.children){const Le=W(ye,$e);if(Le)return Le}return null}async function q(){if(!(Object.keys(I.value).length>0))try{I.value=await cn("/tools")}catch{I.value={}}}async function we(){if(!(Object.keys(S.value).length>0))try{const F=await cn("/models"),$e={};for(const ye of F.models||[])$e[ye.id]=ye,$e[ye.name]=ye;S.value=$e}catch{S.value={}}}async function Pe(F){if($.has(F))return $.get(F)??null;try{const $e=await cn(`/agents/${encodeURIComponent(F)}`);return $.set(F,$e.agent),$e.agent}catch{return $.set(F,null),null}}async function te(F){if(m.has(F))return m.get(F)??null;const $e=await As(F);return m.set(F,$e),$e}function qe(F){const $e=I.value[F.name]?.type;return $e==="prompt"?"subprompt":$e==="handoff"?"handoff":$e==="subagent"||$e==="agent"?"subagent":null}function z(F){if(!F)return null;const $e=S.value[F];return $e||Object.values(S.value).find(ye=>ye.name===F)||null}function he(F,$e){if(!F.model_id)return null;const ye=z(F.model_id),Le=ye?.provider||F.model_provider||null,Ve=ye?.model||null,He=[Le,Ve].filter(Boolean).join(" · ");return{key:`${$e}/model:${ye?.id||F.model_id}`,kind:"model",label:ye?.name||F.model_name||F.model_id,subtitle:He||"Model",model:ye,modelId:ye?.id||F.model_id,modelName:ye?.name||F.model_name||F.model_id,modelProvider:Le||void 0,modelActual:Ve||F.model_id,children:[]}}async function ke(F,$e,ye,Le,Ve,He,le){const ie=await Pe(F),ae=ie?.name||F,Re=ie?.id||F,Ke=ie?.title||le||ae,U={key:`${ye}/agent:${ae}`,kind:$e,label:Ke,subtitle:$e==="agent"?"Agent":$e==="handoff"?"Handoff agent":"Sub-agent",agentId:Re,agentName:ae,agentTitle:Ke,avatarSrc:ie?.icon||En(ae),avatarSeed:ae,children:[]};if(Le>=Ua)return U;if(Ve.has(ae))return U.subtitle=`${U.subtitle} · already shown`,U;const Ce=new Set(Ve).add(ae),se=Ee(ie,$e==="agent");return U.children=(await Promise.all(se.map((Ue,tt)=>_e(Ue.name,"prompt",`${U.key}/prompt:${tt}:${Ue.name}`,Le+1,Ce,new Set(He),Ue.label)))).filter(Ue=>!!Ue),U}function Ee(F,$e){if(F){const Le=[];return F.side_a_agent_prompt&&Le.push({name:F.side_a_agent_prompt,label:`${F.side_a_label||"Side A"} prompt`}),F.type==="dual_ai"&&F.side_b_agent_prompt&&Le.push({name:F.side_b_agent_prompt,label:`${F.side_b_label||"Side B"} prompt`}),Le}if(!$e)return[];const ye=[];return a.sideAPromptName&&ye.push({name:a.sideAPromptName,label:"Side A prompt"}),a.agentType==="dual_ai"&&a.sideBPromptName&&ye.push({name:a.sideBPromptName,label:"Side B prompt"}),ye}async function _e(F,$e,ye,Le,Ve,He,le){const ie=await te(F),ae={key:ye,kind:$e,label:ie?.name||F,subtitle:$e==="subprompt"?"Subprompt":le,promptName:ie?.name||F,children:[]};if(Le>=Ua||!ie)return ae;if(He.has(ie.name))return ae.subtitle=`${ae.subtitle} · already shown`,ae;const Re=new Set(He).add(ie.name),Ke=[],U=he(ie,ae.key);U&&Ke.push(U);for(const Ce of ie.tools||[]){const se=qe(Ce);if(se)if(se==="subprompt"){const Ue=await _e(Ce.name,"subprompt",`${ae.key}/subprompt:${Ce.name}`,Le+1,new Set(Ve),Re,"Subprompt");Ue&&Ke.push(Ue)}else Ke.push(await ke(Ce.name,se,`${ae.key}/${se}:${Ce.name}`,Le+1,new Set(Ve),Re))}return ae.children=Ke,ae}async function me(){const F=C.value;if(!a.active||!F)return;const $e=++E,ye=H.value;h.value=!0,u.value=null;try{await Promise.all([q(),we()]);const Le=await ke(F,"agent","root",0,new Set,new Set,a.agentTitle);if($e!==E)return;s.value=Le;const Ve=ye?W(Le,ye):null;i.value=Ve?.key||Le.key}catch{$e===E&&(s.value=null,i.value=null,u.value="Agent configuration could not be loaded.")}finally{$e===E&&(h.value=!1)}}function Se(F){i.value=F.key}function Ie(F){i.value=F}function re(F){return F.kind==="subprompt"?"text-fuchsia-600 dark:text-fuchsia-400":"text-sky-600 dark:text-sky-400"}function Z(F){return F.kind==="model"?"text-violet-600 dark:text-violet-400":re(F)}function Q(){y.value=!0}function ce(){y.value=!1}function fe(F){V.value?.key===s.value?.key&&l("agentSaved",F),l("saved"),me()}function De(){l("saved"),me()}function Ye(){S.value={},l("saved"),me()}return be(()=>[a.active,a.agentId,a.agentName,a.sideAPromptName,a.sideBPromptName],()=>{a.active&&me()},{immediate:!0}),(F,$e)=>(t(),r("div",Ox,[n("div",Vx,[c(y)?(t(),r("aside",qx,[n("div",Ux,[n("button",{type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded-md text-accent-700 transition-colors hover:bg-accent-50 hover:text-accent-900 dark:text-accent-300 dark:hover:bg-accent-950/30 dark:hover:text-accent-100",title:"Unpin configuration tree",onClick:ce},[B(c(Zn),{size:14})])]),n("div",Hx,[h.value?(t(),r("div",Wx,[B(Ze,{size:"xs"}),$e[0]||($e[0]=n("span",null,"Loading configuration...",-1))])):u.value?(t(),r("div",Kx,p(u.value),1)):J.value.length===0?(t(),r("div",Jx," No agent configuration available. ")):(t(!0),r(Ae,{key:3},We(J.value,({node:ye,depth:Le})=>(t(),r("button",{key:ye.key,type:"button",class:G(["group relative flex w-full items-start gap-1.5 px-2 py-1.5 text-left leading-tight transition-colors",i.value===ye.key?"bg-accent-50 text-accent-900 hover:bg-accent-100 dark:bg-accent-950/30 dark:text-accent-100 dark:hover:bg-accent-900/40":"text-neutral-700 hover:bg-accent-50 hover:text-accent-900 dark:text-neutral-300 dark:hover:bg-accent-950/30 dark:hover:text-accent-100"]),style:gt({paddingLeft:`${on+Le*ln}px`}),onClick:Ve=>Se(ye)},[(t(!0),r(Ae,null,We(Le,Ve=>(t(),r("span",{key:Ve,"aria-hidden":"true",class:"pointer-events-none absolute inset-y-0 w-px bg-neutral-200 dark:bg-neutral-800",style:gt({left:`${on+(Ve-1)*ln}px`})},null,4))),128)),ye.avatarSrc?(t(),j(pn,{key:0,icon:ye.avatarSrc,seed:ye.avatarSeed??ye.label,class:"relative z-[1] mt-px h-5 w-5 shrink-0 rounded object-cover ring-1 ring-black/10 dark:ring-white/15"},null,8,["icon","seed"])):(t(),r("span",Yx,[ye.kind==="model"?(t(),j(c(In),{key:0,size:15,class:"text-violet-600 dark:text-violet-400"})):(t(),j(c(fn),{key:1,size:15,class:G(Z(ye))},null,8,["class"]))])),n("span",Qx,[n("span",Xx,p(ye.label),1),n("span",Zx,p(ye.subtitle),1)])],14,Gx))),128))])])):b("",!0),n("section",eb,[oe.value?(t(),j(Lx,{key:oe.value.key,class:"h-full","agent-id":oe.value.agentId||oe.value.agentName||null,"agent-name":oe.value.agentName,"agent-title":oe.value.agentTitle,active:e.active,onSaved:fe},Ut({_:2},[c(y)?void 0:{name:"nav-leading",fn:Fe(()=>[B(Gn,{nodes:J.value,"selected-node":ue.value,pinned:c(y),loading:h.value,error:u.value,"base-indent-px":on,"level-indent-px":ln,onSelect:Ie,onPin:Q,onUnpin:ce},null,8,["nodes","selected-node","pinned","loading","error"])]),key:"0"}]),1032,["agent-id","agent-name","agent-title","active"])):X.value?(t(),j(Bx,{key:X.value.key,class:"h-full","prompt-name":X.value.promptName||null,active:e.active,onSaved:De},Ut({_:2},[c(y)?void 0:{name:"nav-leading",fn:Fe(()=>[B(Gn,{nodes:J.value,"selected-node":ue.value,pinned:c(y),loading:h.value,error:u.value,"base-indent-px":on,"level-indent-px":ln,onSelect:Ie,onPin:Q,onUnpin:ce},null,8,["nodes","selected-node","pinned","loading","error"])]),key:"0"}]),1032,["prompt-name","active"])):ne.value?(t(),j(Nx,{key:ne.value.key,class:"h-full","model-id":ne.value.modelId||null,"model-name":ne.value.modelName,"model-provider":ne.value.modelProvider,"model-actual":ne.value.modelActual,model:ne.value.model||null,active:e.active,onSaved:Ye},Ut({_:2},[c(y)?void 0:{name:"nav-leading",fn:Fe(()=>[B(Gn,{nodes:J.value,"selected-node":ue.value,pinned:c(y),loading:h.value,error:u.value,"base-indent-px":on,"level-indent-px":ln,onSelect:Ie,onPin:Q,onUnpin:ce},null,8,["nodes","selected-node","pinned","loading","error"])]),key:"0"}]),1032,["model-id","model-name","model-provider","model-actual","model","active"])):h.value?(t(),r("div",tb,[B(Ze,{size:"xs"}),$e[1]||($e[1]=n("span",null,"Loading configuration...",-1))])):u.value?(t(),r("div",nb,p(u.value),1)):(t(),r("div",ab," Select an item to edit. "))])])]))}}),sb={class:"flex h-full min-h-0 flex-col overflow-hidden"},ob={class:"flex h-12 shrink-0 items-center justify-between border-b border-neutral-300 px-4 dark:border-neutral-700"},lb=["id","aria-selected","aria-controls","onClick"],ib={class:"min-w-0 max-w-[11rem] truncate"},db=["aria-expanded"],ub={key:0,class:"absolute right-0 top-full z-50 mt-1"},cb={class:"min-w-0 truncate"},fb={key:0,class:"ml-auto inline-flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full bg-neutral-100 px-1 text-[10px] font-semibold leading-none tabular-nums text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400"},pb={class:"pointer-events-none absolute -left-[9999px] top-0 flex h-8 items-center gap-1 opacity-0"},vb={class:"max-w-[11rem] truncate"},hb={key:0,class:"inline-flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full px-1 text-[10px] font-semibold leading-none tabular-nums"},mb={type:"button",tabindex:"-1",class:"inline-flex h-8 w-8 items-center justify-center rounded-md"},gb={class:"min-h-0 flex-1 overflow-hidden"},Mb=et({__name:"ThreadInspectorPane",props:{threadId:{},agentId:{},agentName:{},agentTitle:{},agentType:{},sideAPromptName:{},sideBPromptName:{},selectedLogId:{},selectedEffectId:{},selectedEffectRef:{},hoveredLogId:{},activeTab:{},filePath:{},filesRefreshKey:{}},emits:["logClick","logHover","logsLoaded","threadDeleted","editThread","threadUpdated","update:activeTab","update:filePath"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g(l.activeTab??"logs"),h=g(null),u=g(null),{thread:I,refetch:S}=da(T(()=>l.threadId)),$=g(),m=g(),y=g(),E=g(0),C=g(0),V=g(0),H=T(()=>I.value?.agent?.type||l.agentType||null),J=T(()=>I.value?.agent?.id||l.agentId||null),oe=T(()=>I.value?.agent?.name||l.agentName||J.value||null),X=T(()=>y.value!==void 0?y.value:I.value?.agent?.title||l.agentTitle||oe.value||null),ne=T(()=>$.value!==void 0?$.value:I.value?.agent?.side_a_agent_prompt||l.sideAPromptName||null),ue=T(()=>m.value!==void 0?m.value:I.value?.agent?.side_b_agent_prompt||l.sideBPromptName||null),K=T(()=>{const U=[{id:"logs",label:"Logs",icon:es},{id:"files",label:"Files",icon:Tn,count:E.value},{id:"kv",label:"KV Store",icon:ts,count:C.value},{id:"effects",label:"Effects",icon:St,count:V.value}];return J.value&&U.push({id:"config",label:"Agent Configuration",icon:Wa}),U.push({id:"info",label:"Thread Settings",icon:Xa}),U}),P=g({}),R=g({}),W=g(null),q=g(null),we=g(null),Pe=g(0),te=g({}),qe=g(36),z=g({left:0,width:0}),he=g(!1);let ke=null;const Ee=U=>(U.id==="files"||U.id==="kv"||U.id==="effects")&&typeof U.count=="number"&&U.count>0,_e=U=>U>99?"99+":String(U),me=(U,Ce)=>{Ce instanceof HTMLButtonElement?P.value[U]=Ce:delete P.value[U]},Se=(U,Ce)=>{Ce instanceof HTMLButtonElement?R.value[U]=Ce:delete R.value[U]},Ie=U=>{const Ce=U instanceof HTMLButtonElement?U:null;q.value=Ce},re=()=>{const U={};for(const Ce of K.value){const se=R.value[Ce.id];se&&(U[Ce.id]=Math.ceil(se.getBoundingClientRect().width))}te.value=U,q.value&&(qe.value=Math.ceil(q.value.getBoundingClientRect().width))},Z=()=>{Pe.value=Math.floor(W.value?.getBoundingClientRect().width??0)},Q=()=>{Z(),re(),Xe(ye)},ce=T(()=>{const U=K.value,Ce=Pe.value;if(!Ce)return U;const se=4;if(U.reduce((ee,Oe)=>ee+(te.value[Oe.id]??88),0)+Math.max(0,U.length-1)*se<=Ce)return U;const tt=Math.max(0,Ce-qe.value-se),nt=[];let ge=0;for(const ee of U){const Oe=te.value[ee.id]??88,pe=ge+Oe+(nt.length>0?se:0);pe<=tt&&(nt.push(ee.id),ge=pe)}if(!nt.includes(i.value)&&U.some(ee=>ee.id===i.value)){const ee=te.value[i.value]??88;for(;nt.length>0&&ge+ee+(nt.length>0?se:0)>tt;){const Oe=nt.pop();if(!Oe)break;ge-=(te.value[Oe]??88)+(nt.length>0?se:0)}nt.push(i.value)}const O=new Set(nt);return U.filter(ee=>O.has(ee.id))}),fe=T(()=>{const U=new Set(ce.value.map(Ce=>Ce.id));return K.value.filter(Ce=>!U.has(Ce.id))}),De=()=>{he.value=!1},Ye=()=>{he.value=!he.value},F=U=>{if(!he.value)return;const Ce=U.target;we.value?.contains(Ce)||De()},$e=U=>{U.key==="Escape"&&he.value&&(De(),q.value?.focus())},ye=()=>{const U=P.value[i.value];if(!U||!ce.value.some(Ce=>Ce.id===i.value)){z.value={left:0,width:0};return}z.value={left:U.offsetLeft,width:U.offsetWidth}},Le=U=>(Ke("logs"),U()),Ve=U=>(Ke("effects"),U()),He=U=>{const Ce=typeof U.title=="string"?U.title:null,se=typeof U.side_a_agent_prompt=="string"?U.side_a_agent_prompt:null,Ue=typeof U.side_b_agent_prompt=="string"?U.side_b_agent_prompt:null;y.value=Ce,$.value=se,m.value=Ue,l.threadId&&S(),s("threadUpdated")},le=U=>{E.value=U},ie=U=>{C.value=U},ae=U=>{V.value=U},Re=U=>{Ve(()=>u.value?.selectEffectByReference(U))},Ke=U=>{K.value.some(Ce=>Ce.id===U)||(U="logs"),i.value=U,De(),Xe(ye),s("update:activeTab",U)};return be(()=>l.activeTab,U=>{U&&U!==i.value&&(i.value=U),Xe(ye)}),be(K,U=>{U.some(Ce=>Ce.id===i.value)?Xe(Q):Ke("logs")}),be(()=>J.value,()=>{y.value=void 0,$.value=void 0,m.value=void 0}),be(()=>l.threadId,()=>{E.value=0,C.value=0,V.value=0}),be(ce,()=>{Xe(ye)}),be(fe,U=>{U.length===0&&De()}),It(()=>{Xe(Q),W.value&&(ke=new ResizeObserver(Q),ke.observe(W.value)),window.addEventListener("resize",Q),document.addEventListener("pointerdown",F),document.addEventListener("keydown",$e)}),wt(()=>{ke?.disconnect(),window.removeEventListener("resize",Q),document.removeEventListener("pointerdown",F),document.removeEventListener("keydown",$e)}),o({scrollToLog:U=>Le(()=>h.value?.scrollToLog(U)),selectLogById:U=>Le(()=>h.value?.selectLogById(U)),removeLogsByIds:U=>h.value?.removeLogsByIds(U),loadUntilLogId:U=>Le(()=>h.value?.loadUntilLogId(U)),hasLog:U=>h.value?.hasLog(U)??!1,getLog:U=>h.value?.getLog(U)??null,setLoadingForLog:U=>Le(()=>h.value?.setLoadingForLog(U)),waitForLogRow:U=>Le(()=>h.value?.waitForLogRow(U)),selectEffectById:U=>Ve(()=>u.value?.selectEffectById(U)),selectEffectByReference:U=>Ve(()=>u.value?.selectEffectByReference(U))}),(U,Ce)=>(t(),r("div",sb,[n("div",ob,[n("div",{ref_key:"tabListRef",ref:W,class:"relative flex h-8 min-w-0 flex-1 items-center gap-1 overflow-visible",role:"tablist","aria-label":"Thread inspector"},[n("div",{class:G(["pointer-events-none absolute bottom-0 top-0 rounded-md bg-neutral-900 dark:bg-neutral-100 transition-transform duration-300 ease-out",z.value.width>0?"opacity-100":"opacity-0"]),style:gt({width:`${z.value.width}px`,transform:`translateX(${z.value.left}px)`})},null,6),(t(!0),r(Ae,null,We(ce.value,se=>(t(),r("button",{key:se.id,ref_for:!0,ref:Ue=>me(se.id,Ue),id:`thread-inspector-tab-${se.id}`,type:"button",role:"tab","aria-selected":i.value===se.id,"aria-controls":`thread-inspector-panel-${se.id}`,class:G(["relative z-10 inline-flex h-8 min-w-0 shrink items-center justify-center gap-1.5 rounded-md px-2.5 text-sm font-medium transition-colors",i.value===se.id?"text-white dark:text-neutral-900":"text-neutral-500 hover:text-neutral-900 dark:text-neutral-400 dark:hover:text-neutral-100"]),onClick:Ue=>Ke(se.id)},[(t(),j(Mt(se.icon),{size:15,class:"shrink-0"})),n("span",ib,p(se.label),1),Ee(se)?(t(),r("span",{key:0,class:G(["inline-flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full px-1 text-[10px] font-semibold leading-none tabular-nums",i.value===se.id?"bg-white/20 text-current dark:bg-black/10":"bg-neutral-100 text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400"])},p(_e(se.count??0)),3)):b("",!0)],10,lb))),128)),fe.value.length>0?(t(),r("div",{key:0,ref_key:"overflowRootRef",ref:we,class:"relative z-20 shrink-0"},[n("button",{ref:Ie,type:"button",class:G(["inline-flex h-8 w-8 items-center justify-center rounded-md text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100",he.value?"bg-neutral-100 text-neutral-900 dark:bg-neutral-800 dark:text-neutral-100":""]),"aria-label":"More inspector tabs","aria-expanded":he.value,"aria-haspopup":"menu",onClick:Ge(Ye,["stop"])},[B(c(ha),{size:17})],10,db),he.value?(t(),r("div",ub,[B(c(nr),{width:"w-56",shadow:{offsetX:4,offsetY:4,intensity:.32}},{default:Fe(()=>[(t(!0),r(Ae,null,We(fe.value,se=>(t(),j(c(Is),{key:se.id,active:i.value===se.id,onClick:Ue=>Ke(se.id)},{default:Fe(()=>[(t(),j(Mt(se.icon),{class:"h-4 w-4 shrink-0 text-neutral-500 dark:text-neutral-400"})),n("span",cb,p(se.label),1),Ee(se)?(t(),r("span",fb,p(_e(se.count??0)),1)):b("",!0)]),_:2},1032,["active","onClick"]))),128))]),_:1})])):b("",!0)],512)):b("",!0),n("div",pb,[(t(!0),r(Ae,null,We(K.value,se=>(t(),r("button",{key:`measure-${se.id}`,ref_for:!0,ref:Ue=>Se(se.id,Ue),type:"button",tabindex:"-1",class:"inline-flex h-8 shrink-0 items-center justify-center gap-1.5 rounded-md px-2.5 text-sm font-medium"},[(t(),j(Mt(se.icon),{size:15,class:"shrink-0"})),n("span",vb,p(se.label),1),Ee(se)?(t(),r("span",hb,p(_e(se.count??0)),1)):b("",!0)]))),128)),n("button",mb,[B(c(ha),{size:17})])])],512)]),n("div",gb,[dt(B(Kp,{id:"thread-inspector-panel-logs",role:"tabpanel","aria-labelledby":"thread-inspector-tab-logs",ref_key:"logsPaneRef",ref:h,class:"h-full","thread-id":e.threadId,"selected-log-id":e.selectedLogId,"hovered-log-id":e.hoveredLogId,onLogClick:Ce[0]||(Ce[0]=se=>s("logClick",se)),onLogHover:Ce[1]||(Ce[1]=se=>s("logHover",se)),onLogsLoaded:Ce[2]||(Ce[2]=se=>s("logsLoaded",se)),onEffectClick:Re},null,8,["thread-id","selected-log-id","hovered-log-id"]),[[_t,i.value==="logs"]]),dt(B(vm,{id:"thread-inspector-panel-files",role:"tabpanel","aria-labelledby":"thread-inspector-tab-files",class:"h-full","thread-id":e.threadId,path:e.filePath,"refresh-key":e.filesRefreshKey,active:i.value==="files","onUpdate:path":Ce[3]||(Ce[3]=se=>s("update:filePath",se)),onCountChanged:le},null,8,["thread-id","path","refresh-key","active"]),[[_t,i.value==="files"]]),dt(B(tg,{id:"thread-inspector-panel-kv",role:"tabpanel","aria-labelledby":"thread-inspector-tab-kv",class:"h-full","thread-id":e.threadId,active:i.value==="kv",onCountChanged:ie},null,8,["thread-id","active"]),[[_t,i.value==="kv"]]),dt(B(bh,{id:"thread-inspector-panel-effects",role:"tabpanel","aria-labelledby":"thread-inspector-tab-effects",ref_key:"effectsPaneRef",ref:u,class:"h-full","thread-id":e.threadId,active:i.value==="effects","selected-effect-id":e.selectedEffectId,"selected-effect-ref":e.selectedEffectRef,onCountChanged:ae},null,8,["thread-id","active","selected-effect-id","selected-effect-ref"]),[[_t,i.value==="effects"]]),dt(B(fx,{id:"thread-inspector-panel-info",role:"tabpanel","aria-labelledby":"thread-inspector-tab-info",class:"h-full","thread-id":e.threadId,show:i.value==="info",embedded:"",onThreadDeleted:Ce[4]||(Ce[4]=se=>s("threadDeleted",se)),onEditThread:Ce[5]||(Ce[5]=se=>s("editThread")),onThreadUpdated:Ce[6]||(Ce[6]=se=>s("threadUpdated"))},null,8,["thread-id","show"]),[[_t,i.value==="info"]]),J.value?dt((t(),j(rb,{key:0,id:"thread-inspector-panel-config",role:"tabpanel","aria-labelledby":"thread-inspector-tab-config",class:"h-full","agent-id":J.value,"agent-name":oe.value,"agent-title":X.value,"agent-type":H.value,"side-a-prompt-name":ne.value,"side-b-prompt-name":ue.value,active:i.value==="config",onAgentSaved:He,onSaved:Ce[7]||(Ce[7]=se=>s("threadUpdated"))},null,8,["agent-id","agent-name","agent-title","agent-type","side-a-prompt-name","side-b-prompt-name","active"])),[[_t,i.value==="config"]]):b("",!0)])]))}});export{Us as A,vd as C,Lb as T,Rb as _,As as a,Eb as b,Fs as c,Ib as d,or as e,cn as f,Ls as g,Mb as h,Ht as i,Ab as s,da as u};
23
+ }`,tg=et({__name:"ThreadKvStorePane",props:{threadId:{},active:{type:Boolean,default:!0}},emits:["count-changed"],setup(e,{emit:o}){const a=e,l=o,s=g([]),i=g(0),h=g(""),u=g(!1),I=g(!1),S=g(!1),$=g(!1),m=g(null),y=g(null),L=g(null),C=g("view"),V=g(""),H=g(Yt),J=g(null),le=g(Yt),X=g(50),ne=g(new Map);let ue=null,K=null,P=!1,M=0;const W=()=>{Ae()&&se({preferredKey:L.value,quiet:!0})},q=T(()=>L.value?s.value.find(ie=>ie.key===L.value)??null:null),_e=T(()=>s.value.length<i.value),Ne=T(()=>{const ie=s.value.length;return a.threadId?i.value===0?h.value.trim()?"No matches":"No values":`${ie} of ${i.value}`:""}),te=T(()=>Gn(q.value?.value,q.value?.parseError)),qe=T(()=>q.value?.parseError?"text":"json"),z=T(()=>C.value==="create"),he=T(()=>z.value||!!q.value),ke=T(()=>he.value&&(V.value!==(J.value??"")||H.value!==le.value)),Le=T(()=>!ke.value&&q.value?.parseError?q.value.parseError:null);function we(ie){switch(ie){case"object":return"bg-sky-50 text-sky-700 dark:bg-sky-950/40 dark:text-sky-300";case"array":return"bg-violet-50 text-violet-700 dark:bg-violet-950/40 dark:text-violet-300";case"string":return"bg-emerald-50 text-emerald-700 dark:bg-emerald-950/40 dark:text-emerald-300";case"number":return"bg-amber-50 text-amber-700 dark:bg-amber-950/40 dark:text-amber-300";case"boolean":return"bg-pink-50 text-pink-700 dark:bg-pink-950/40 dark:text-pink-300";default:return"bg-red-50 text-red-700 dark:bg-red-950/40 dark:text-red-300"}}async function me(ie,de){try{const ae=await ie.json();return typeof ae.error=="string"?ae.error:de}catch{return de}}function Se(ie){if(z.value||ke.value)return;const de=ie?s.value.find(ae=>ae.key===ie):null;if(de){L.value=de.key;return}L.value&&s.value.some(ae=>ae.key===L.value)||(L.value=s.value[0]?.key??null)}function Ae(){return!!a.threadId&&a.active&&!z.value&&!ke.value&&!u.value&&!I.value&&!S.value&&!$.value&&!P&&(typeof document>"u"||document.visibilityState==="visible")}async function se(ie={}){if(!a.threadId){s.value=[],i.value=0,L.value=null;return}const de=++M,ae=ie.append===!0,Me=ie.quiet===!0;Me&&(P=!0),Me||(ae?I.value=!0:u.value=!0),Me||(m.value=null);const Ke=new URLSearchParams,U=Math.min(Math.max(s.value.length,Va),200);Ke.set("limit",String(ae?Va:U)),Ke.set("offset",String(ae?s.value.length:0));const Ce=h.value.trim();Ce&&Ke.set("search",Ce);try{const oe=await fetch(Qe(`/api/threads/${a.threadId}/kv?${Ke}`));if(!oe.ok)throw new Error(await me(oe,"Failed to load key-value store"));const Ue=hm(await oe.json());if(de!==M)return;s.value=ae?[...s.value,...Ue.values]:Ue.values,i.value=Ue.total,Se(ie.preferredKey)}catch(oe){de===M&&(!Me||s.value.length===0)&&(m.value=oe instanceof Error?oe.message:"Failed to load key-value store")}finally{Me&&(P=!1),de===M&&!Me&&(u.value=!1,I.value=!1)}}function Z(){ue&&clearTimeout(ue),ue=setTimeout(()=>{se()},250)}function Q(ie){L.value=ie.key,C.value="view",y.value=null,fe(ie)}function ce(){J.value=null,le.value=Yt,V.value="",H.value=Yt}function fe(ie){if(!ie){ce();return}const de=ie.parseError?ie.serialized:hr(ie.value);J.value=ie.key,le.value=de,V.value=ie.key,H.value=de,y.value=null}function Fe(ie,de){de instanceof HTMLElement?ne.value.set(ie,de):ne.value.delete(ie)}async function Ye(ie){await Xe(),ne.value.get(ie)?.focus({preventScroll:!0})}function F(ie,de){const ae=s.value.findIndex(U=>U.key===de.key);if(ae<0)return;let Me=ae;if(ie.key==="ArrowDown")Me=Math.min(s.value.length-1,ae+1);else if(ie.key==="ArrowUp")Me=Math.max(0,ae-1);else if(ie.key==="Home")Me=0;else if(ie.key==="End")Me=s.value.length-1;else return;ie.preventDefault();const Ke=s.value[Me];Ke&&(Q(Ke),Ye(Ke.key))}function $e(){L.value=null,J.value=null,le.value=Yt,V.value="",H.value=Yt,y.value=null,C.value="create"}function ye(){if(y.value=null,z.value){C.value="view",Se();return}fe(q.value)}async function Re(){if(!a.threadId)return;const ie=V.value;if(!ie.trim()){y.value="Key is required";return}const de=mm(H.value);if(!de.ok){y.value=de.error;return}S.value=!0,y.value=null;try{const ae=await fetch(Qe(`/api/threads/${a.threadId}/kv`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:ie,value:de.value,previousKey:z.value?void 0:J.value})});if(!ae.ok)throw new Error(await me(ae,"Failed to save value"));L.value=ie,C.value="view",await se({preferredKey:ie})}catch(ae){y.value=ae instanceof Error?ae.message:"Failed to save value"}finally{S.value=!1}}async function Ve(){if(!a.threadId||!q.value)return;const ie=q.value.key;if(window.confirm(`Delete ${ie}?`)){$.value=!0,m.value=null;try{const de=new URLSearchParams({key:ie}),ae=await fetch(Qe(`/api/threads/${a.threadId}/kv?${de}`),{method:"DELETE"});if(!ae.ok)throw new Error(await me(ae,"Failed to delete value"));L.value=null,C.value="view",ce(),await se()}catch(de){m.value=de instanceof Error?de.message:"Failed to delete value"}finally{$.value=!1}}}be(()=>a.threadId,()=>{h.value="",C.value="view",y.value=null,ce(),se()},{immediate:!0}),be(h,Z),be(i,ie=>{h.value.trim()||l("count-changed",ie)},{immediate:!0}),be(q,ie=>{z.value||ke.value||fe(ie)}),be(()=>[a.threadId,a.active],()=>{K&&clearInterval(K),K=null,!(!a.threadId||!a.active)&&(K=setInterval(()=>{Ae()&&se({preferredKey:L.value,quiet:!0})},eg))},{immediate:!0});let He=null;return xm(T(()=>a.threadId),T(()=>a.active),()=>{He||(He=setTimeout(()=>{He=null,Ae()&&se({preferredKey:L.value,quiet:!0})},150))}),typeof document<"u"&&document.addEventListener("visibilitychange",W),wt(()=>{ue&&clearTimeout(ue),K&&clearInterval(K),He&&clearTimeout(He),typeof document<"u"&&document.removeEventListener("visibilitychange",W)}),(ie,de)=>(t(),j(Pn,{"height-percent":X.value,"onUpdate:heightPercent":de[6]||(de[6]=ae=>X.value=ae),"storage-key":Zm,title:"Resize key-value browser and detail"},Ut({main:Pe(()=>[n("div",bm,[n("div",ym,[n("div",km,[B(c(Qn),{size:14,class:"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-neutral-400"}),ut(n("input",{"onUpdate:modelValue":de[0]||(de[0]=ae=>h.value=ae),type:"search",class:"h-8 w-full rounded border border-neutral-300 bg-white pl-7 pr-2 text-sm outline-none focus:border-accent-500 focus:ring-1 focus:ring-accent-500 dark:border-neutral-700 dark:bg-neutral-950",placeholder:"Search keys and values",onKeydown:de[1]||(de[1]=Bt(Ge(ae=>se(),["prevent"]),["enter"]))},null,544),[[Tn,h.value]])]),n("div",_m,p(Ne.value),1),n("button",{type:"button",class:"inline-flex h-8 w-8 items-center justify-center rounded text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-950 disabled:opacity-50 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",disabled:!e.threadId||u.value,title:"Refresh values","aria-label":"Refresh values",onClick:de[2]||(de[2]=ae=>se())},[u.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(Fn),{key:1,size:15}))],8,wm),n("button",{type:"button",class:"inline-flex h-8 items-center gap-1.5 rounded bg-neutral-900 px-2.5 text-sm font-medium text-white transition-colors hover:bg-neutral-700 disabled:opacity-50 dark:bg-neutral-100 dark:text-neutral-950 dark:hover:bg-neutral-300",disabled:!e.threadId,onClick:$e},[B(c(Ka),{size:15}),de[7]||(de[7]=n("span",null,"New",-1))],8,$m)]),n("div",Cm,[e.threadId?u.value&&s.value.length===0?(t(),r("div",Tm,[B(Ze)])):m.value?(t(),r("div",Im,p(m.value),1)):s.value.length===0?(t(),r("div",Am,[B(c(pa),{class:"mx-auto mb-2 h-8 w-8 opacity-40"}),rt(" "+p(h.value.trim()?"No matching values":"No stored values"),1)])):(t(),r("div",Em,[n("div",Lm,[n("table",Rm,[de[8]||(de[8]=n("colgroup",null,[n("col",{class:"w-[23rem]"}),n("col"),n("col",{class:"w-24"}),n("col",{class:"w-20"}),n("col",{class:"w-32"})],-1)),de[9]||(de[9]=n("thead",{class:"sticky top-0 z-10 border-b border-neutral-200 bg-neutral-50 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:border-neutral-800 dark:bg-neutral-900/60 dark:text-neutral-400"},[n("tr",null,[n("th",{scope:"col",class:"px-4 py-2 font-medium"},"Key"),n("th",{scope:"col",class:"px-3 py-2 font-medium"},"Value"),n("th",{scope:"col",class:"px-3 py-2 text-left font-medium"},"Type"),n("th",{scope:"col",class:"px-3 py-2 text-right font-medium"},"Size"),n("th",{scope:"col",class:"px-4 py-2 text-right font-medium"},"Updated")])],-1)),n("tbody",Mm,[(t(!0),r(Ee,null,We(s.value,ae=>(t(),r("tr",{key:ae.key,ref_for:!0,ref:Me=>Fe(ae.key,Me),tabindex:"0","aria-selected":L.value===ae.key,class:G(["cursor-pointer transition-colors focus:outline-none",L.value===ae.key?"agents-surface-selected":"hover:bg-neutral-50 dark:hover:bg-neutral-900"]),onClick:Me=>Q(ae),onKeydown:[Bt(Ge(Me=>Q(ae),["prevent"]),["enter"]),Bt(Ge(Me=>Q(ae),["prevent"]),["space"]),Me=>F(Me,ae)]},[n("td",Fm,[n("div",Pm,p(ae.key),1)]),n("td",Nm,[n("div",zm,p(c(gm)(ae.value,ae.parseError)),1)]),n("td",jm,[n("span",{class:G(["inline-flex rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",we(c(Gn)(ae.value,ae.parseError))])},p(c(Gn)(ae.value,ae.parseError)),3)]),n("td",Bm,p(c(Ba)(ae.size)),1),n("td",Om,p(c(Oa)(ae.updatedAt)),1)],42,Dm))),128))])])]),_e.value?(t(),r("button",{key:0,type:"button",class:"m-3 flex items-center justify-center gap-2 rounded border border-neutral-200 px-3 py-2 text-sm font-medium text-neutral-600 transition-colors hover:bg-neutral-50 disabled:opacity-50 dark:border-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-900",disabled:I.value,onClick:de[3]||(de[3]=ae=>se({append:!0}))},[I.value?(t(),j(Ze,{key:0,size:"xs"})):b("",!0),de[10]||(de[10]=n("span",null,"Load more",-1))],8,Vm)):b("",!0)])):(t(),r("div",Sm," Select a thread to view its key-value store "))])])]),_:2},[he.value?{name:"detail",fn:Pe(()=>[n("div",qm,[n("div",Um,[n("div",Hm,[he.value?(t(),r("div",Wm,[B(c(pa),{size:15,class:"shrink-0 text-neutral-400"}),ut(n("input",{"onUpdate:modelValue":de[4]||(de[4]=ae=>V.value=ae),type:"text",class:"h-8 min-w-0 flex-1 rounded border border-neutral-300 bg-white px-2 font-mono text-sm outline-none focus:border-accent-500 focus:ring-1 focus:ring-accent-500 dark:border-neutral-700 dark:bg-neutral-950",placeholder:"key"},null,512),[[Tn,V.value]]),q.value?(t(),r("span",{key:0,class:G(["shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",we(te.value)])},p(te.value),3)):b("",!0)])):b("",!0),q.value?(t(),r("div",Km,p(c(Ba)(q.value.size))+" | "+p(c(Oa)(q.value.updatedAt)),1)):b("",!0)]),n("div",Jm,[he.value?(t(),r(Ee,{key:0},[n("button",{type:"button",class:"inline-flex h-8 items-center gap-1.5 rounded bg-neutral-900 px-2.5 text-sm font-medium text-white transition-colors hover:bg-neutral-700 disabled:opacity-50 dark:bg-neutral-100 dark:text-neutral-950 dark:hover:bg-neutral-300",disabled:S.value||!ke.value,onClick:Re},[S.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(er),{key:1,size:14})),de[11]||(de[11]=n("span",null,"Save",-1))],8,Gm),ke.value?(t(),r("button",{key:0,type:"button",class:"inline-flex h-8 w-8 items-center justify-center rounded text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-950 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",title:"Cancel","aria-label":"Cancel",onClick:ye},[B(c(Dt),{size:15})])):b("",!0),q.value?(t(),j(da,{key:1,content:H.value,variant:"ghost",size:"xs"},null,8,["content"])):b("",!0),q.value?(t(),r("button",{key:2,type:"button",class:"inline-flex h-8 w-8 items-center justify-center rounded text-red-600 transition-colors hover:bg-red-50 disabled:opacity-50 dark:text-red-400 dark:hover:bg-red-950/30",disabled:$.value,title:"Delete value","aria-label":"Delete value",onClick:Ve},[$.value?(t(),j(Ze,{key:0,size:"xs"})):(t(),j(c(En),{key:1,size:15}))],8,Ym)):b("",!0)],64)):b("",!0)])]),n("div",Qm,[y.value?(t(),r("div",Xm,p(y.value),1)):b("",!0),he.value?(t(),j(fa,{key:1,modelValue:H.value,"onUpdate:modelValue":de[5]||(de[5]=ae=>H.value=ae),class:"min-h-0 flex-1",language:qe.value,error:Le.value,"word-wrap":"on","format-on-blur":"",framed:!1,placeholder:"{\\n \\n}"},null,8,["modelValue","language","error"])):b("",!0)])])]),key:"0"}:void 0]),1032,["height-percent"]))}}),ng=["onClick"],ag=["value","placeholder","disabled"],rg=et({__name:"TagInput",props:{modelValue:{},placeholder:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(e,{emit:o}){const a=e,l=o,s=g(""),i=g(null),h=m=>{const y=m.trim().toLowerCase();y&&!a.modelValue.includes(y)&&l("update:modelValue",[...a.modelValue,y]),s.value="",Xe(()=>i.value?.focus())},u=m=>{const y=[...a.modelValue];y.splice(m,1),l("update:modelValue",y)},I=m=>{const y=m.target.value;if(y.includes(",")){const L=y.split(",");L.forEach((C,V)=>{V<L.length-1?h(C):s.value=C})}else s.value=y},S=m=>{m.key==="Enter"?(m.preventDefault(),h(s.value)):m.key==="Backspace"&&!s.value&&a.modelValue.length>0&&u(a.modelValue.length-1)},$=()=>{i.value?.focus()};return(m,y)=>(t(),r("div",{class:G(["flex flex-wrap items-center gap-1.5 min-h-[32px] px-2 py-1.5 bg-white dark:bg-neutral-950 border border-neutral-200 dark:border-neutral-800 rounded-md cursor-text focus-within:ring-2 focus-within:ring-accent-500/20 focus-within:border-accent-500 transition-colors",{"opacity-50 cursor-not-allowed":e.disabled}]),onClick:$},[(t(!0),r(Ee,null,We(e.modelValue,(L,C)=>(t(),r("span",{key:L,class:"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium bg-accent-100 dark:bg-accent-900/30 text-accent-700 dark:text-accent-300 rounded"},[rt(p(L)+" ",1),e.disabled?b("",!0):(t(),r("button",{key:0,type:"button",onClick:Ge(V=>u(C),["stop"]),class:"hover:text-accent-900 dark:hover:text-accent-100 transition-colors"},[B(c(Dt),{size:12})],8,ng))]))),128)),n("input",{ref_key:"inputRef",ref:i,type:"text",value:s.value,placeholder:e.modelValue.length===0?e.placeholder:"",disabled:e.disabled,class:"flex-1 min-w-[60px] bg-transparent border-none outline-none text-xs text-neutral-900 dark:text-neutral-100 placeholder:text-neutral-400 disabled:cursor-not-allowed",onInput:I,onKeydown:S},null,40,ag)],2))}}),sg={class:"thread-basic-info-card bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},og={class:"p-3 space-y-2"},lg={class:"text-[10px] text-neutral-500 dark:text-neutral-400"},ig=["title"],dg={class:"flex-1 text-[11px] font-mono text-neutral-600 dark:text-neutral-400 truncate"},ug={class:"thread-basic-info-row flex items-center gap-2"},cg={class:"thread-basic-info-control flex-1 flex items-center gap-1.5"},fg={key:1,class:"text-xs text-neutral-700 dark:text-neutral-200"},pg={class:"text-[9px] px-1.5 py-0.5 rounded bg-neutral-100 dark:bg-neutral-800 text-neutral-500 dark:text-neutral-400 uppercase tracking-wide shrink-0"},vg={class:"thread-basic-info-row flex items-start gap-2"},hg=et({__name:"ThreadBasicInfoCard",props:{thread:{},copiedId:{type:Boolean},isAiHumanAgent:{type:Boolean},localAgentId:{},agentOptions:{},isFetchingAgents:{type:Boolean},isSavingAgent:{type:Boolean},localTags:{},isSavingTags:{type:Boolean}},emits:["copyId","agentChange","tagsChange"],setup(e,{emit:o}){const a=o,l=s=>new Date(s*1e3).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});return(s,i)=>{const h=Wt("FormKit");return t(),r("div",sg,[n("div",og,[n("div",lg,[i[3]||(i[3]=n("span",{class:"font-medium uppercase tracking-wide"},"Created",-1)),i[4]||(i[4]=n("span",{class:"mx-1"},"·",-1)),rt(" "+p(l(e.thread.created_at)),1)]),n("div",{class:"flex items-center gap-1 px-2 py-1.5 bg-neutral-50 dark:bg-neutral-950 rounded border border-neutral-200 dark:border-neutral-800 cursor-pointer hover:border-neutral-300 dark:hover:border-neutral-700 transition-colors group",onClick:i[0]||(i[0]=u=>a("copyId")),title:e.copiedId?"Copied!":"Click to copy"},[n("code",dg,p(e.thread.id),1),n("span",{class:G(["shrink-0 transition-colors",e.copiedId?"text-green-600 dark:text-green-400":"text-neutral-400 group-hover:text-neutral-600 dark:group-hover:text-neutral-300"])},[e.copiedId?(t(),j(c(Ha),{key:0,size:12})):(t(),j(c(Qr),{key:1,size:12}))],2)],8,ig),n("div",ug,[i[5]||(i[5]=n("label",{class:"thread-basic-info-label shrink-0 text-[10px] font-medium text-neutral-500 dark:text-neutral-400 uppercase tracking-wide w-10"},"Agent",-1)),n("div",cg,[e.isAiHumanAgent?(t(),j(h,{key:0,type:"selectSearch","model-value":e.localAgentId,options:e.agentOptions,loading:e.isFetchingAgents||e.isSavingAgent,disabled:e.isSavingAgent,size:"sm",placeholder:"Select...","outer-class":"!mb-0 flex-1",onInput:i[1]||(i[1]=u=>a("agentChange",String(u)))},null,8,["model-value","options","loading","disabled"])):(t(),r("span",fg,p(e.thread.agent.title),1)),n("span",pg,p(e.thread.agent.type.replace("_"," ")),1)])]),n("div",vg,[i[6]||(i[6]=n("label",{class:"thread-basic-info-label shrink-0 text-[10px] font-medium text-neutral-500 dark:text-neutral-400 uppercase tracking-wide w-10 pt-2"},"Tags",-1)),B(rg,{"model-value":e.localTags,"onUpdate:modelValue":i[2]||(i[2]=u=>a("tagsChange",u)),disabled:e.isSavingTags,placeholder:"Add tags...",class:"flex-1"},null,8,["model-value","disabled"])])])])}}}),mg=vt(hg,[["__scopeId","data-v-b2c0cfd1"]]),gg={class:"thread-dev-tools-card bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},xg={key:0,class:"overflow-hidden border-t border-neutral-100 dark:border-neutral-800"},bg={class:"p-3 space-y-3"},yg={class:"thread-dev-tools-action-row flex items-center gap-2"},kg=["value"],_g=["disabled"],wg={class:"pt-2 border-t border-neutral-100 dark:border-neutral-800"},$g=["disabled"],Cg=et({__name:"ThreadDeveloperToolsCard",props:{expanded:{type:Boolean},isDualAiAgent:{type:Boolean},selectedSide:{},isContinuing:{type:Boolean},isDeleting:{type:Boolean}},emits:["toggle","updateSelectedSide","continueExecution","deleteThread"],setup(e,{emit:o}){const a=o;return(l,s)=>(t(),r("div",gg,[n("button",{onClick:s[0]||(s[0]=i=>a("toggle")),type:"button",class:"w-full flex items-center gap-2 px-3 py-2.5 text-left hover:bg-neutral-50 dark:hover:bg-neutral-800 transition-colors"},[B(c(Za),{size:14,class:"shrink-0 text-neutral-400"}),s[4]||(s[4]=n("span",{class:"flex-1 text-xs font-medium text-neutral-700 dark:text-neutral-200"},"Developer Tools",-1)),B(c(Tt),{size:14,class:G(["shrink-0 text-neutral-400 transition-transform duration-200",{"-rotate-180":e.expanded}])},null,8,["class"])]),B(hn,{"enter-active-class":"transition-all duration-200 ease-out","enter-from-class":"opacity-0 max-h-0","enter-to-class":"opacity-100 max-h-[150px]","leave-active-class":"transition-all duration-150 ease-in","leave-from-class":"opacity-100 max-h-[150px]","leave-to-class":"opacity-0 max-h-0"},{default:Pe(()=>[e.expanded?(t(),r("div",xg,[n("div",bg,[n("div",yg,[e.isDualAiAgent?(t(),r("select",{key:0,value:e.selectedSide,class:"text-xs px-2 py-1.5 border border-neutral-200 dark:border-neutral-700 rounded bg-white dark:bg-neutral-800 text-neutral-700 dark:text-neutral-300",onChange:s[1]||(s[1]=i=>a("updateSelectedSide",i.target.value))},[...s[5]||(s[5]=[n("option",{value:"a"},"Side A",-1),n("option",{value:"b"},"Side B",-1)])],40,kg)):b("",!0),n("button",{onClick:s[2]||(s[2]=i=>a("continueExecution")),disabled:e.isContinuing,class:"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium bg-neutral-800 dark:bg-neutral-200 text-white dark:text-neutral-900 rounded hover:bg-neutral-700 dark:hover:bg-neutral-300 transition-colors disabled:opacity-50"},[B(c(Zn),{size:12}),n("span",null,p(e.isContinuing?"Running...":"Continue"),1)],8,_g),s[6]||(s[6]=n("span",{class:"thread-dev-tools-hint text-[10px] text-neutral-500 dark:text-neutral-400"},"Resume without new message",-1))]),n("div",wg,[n("button",{onClick:s[3]||(s[3]=i=>a("deleteThread")),disabled:e.isDeleting,class:"flex items-center gap-1.5 text-xs font-medium text-red-600 dark:text-red-400 hover:text-red-700 dark:hover:text-red-300 transition-colors disabled:opacity-50"},[B(c(En),{size:12}),n("span",null,p(e.isDeleting?"Deleting...":"Delete Thread"),1)],8,$g)])])])):b("",!0)]),_:1})]))}}),Sg=vt(Cg,[["__scopeId","data-v-e5ac7740"]]),Tg=new Set(["healthy","observing","recovered","parked","idle","unreachable"]);function Ig(e){if(!e||typeof e!="object")return{available:!1,armed:!1,checkins:[]};const o=e,a=Array.isArray(o.history)?o.history:[],l=[];for(const s of a){if(!s||typeof s!="object")continue;const i=s,h=typeof i.at=="number"&&Number.isFinite(i.at)?i.at:null,u=typeof i.verdict=="string"&&Tg.has(i.verdict)?i.verdict:null;h===null||u===null||l.push({at:h,verdict:u,action:typeof i.action=="string"?i.action:"",executing:typeof i.executing=="boolean"?i.executing:null,incompleteLogs:typeof i.incompleteLogs=="number"?i.incompleteLogs:null,silenceMs:typeof i.silenceMs=="number"?i.silenceMs:null,probeMs:typeof i.probeMs=="number"?i.probeMs:0,error:typeof i.error=="string"?i.error:void 0})}return{available:!0,armed:o.armed===!0,checkins:l}}function Ag(e){switch(e){case"healthy":return"healthy";case"observing":return"observing";case"recovered":return"recovered";case"parked":return"parked";case"idle":return"stood down";case"unreachable":return"unreachable"}}function Eg(e){switch(e){case"healthy":return"bg-emerald-50 text-emerald-700 dark:bg-emerald-950/40 dark:text-emerald-300";case"recovered":return"bg-sky-50 text-sky-700 dark:bg-sky-950/40 dark:text-sky-300";case"observing":return"bg-amber-50 text-amber-700 dark:bg-amber-950/40 dark:text-amber-300";case"parked":case"unreachable":return"bg-red-50 text-red-700 dark:bg-red-950/40 dark:text-red-300";case"idle":return"bg-neutral-100 text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300"}}function Lg(e){const o=new Date(e);if(Number.isNaN(o.getTime()))return"—";const a=l=>String(l).padStart(2,"0");return`${a(o.getHours())}:${a(o.getMinutes())}:${a(o.getSeconds())}`}const Rg={class:"thread-watchdog-card bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},Mg={class:"w-full flex items-center gap-2 px-3 py-2.5"},Dg={class:"px-3 pb-3"},Fg={key:0,class:"text-[11px] text-neutral-400 dark:text-neutral-500"},Pg={key:1,class:"text-[11px] text-neutral-400 dark:text-neutral-500"},Ng={key:0,class:"text-[11px] text-neutral-400 dark:text-neutral-500"},zg={key:1,class:"space-y-1"},jg=["title"],Bg={class:"shrink-0 tabular-nums text-neutral-400 dark:text-neutral-500"},Og={class:"min-w-0 truncate text-neutral-600 dark:text-neutral-300"},Vg={class:"mt-2.5 flex items-center gap-2"},qg=["disabled"],Ug={key:2,class:"mt-1.5 text-[11px] text-red-600 dark:text-red-400"},Hg=5,Wg=et({__name:"ThreadWatchdogCard",props:{watchdog:{},isChecking:{type:Boolean},checkError:{}},emits:["runCheck"],setup(e,{emit:o}){const a=o;return(l,s)=>(t(),r("div",Rg,[n("div",Mg,[B(c(Xr),{size:14,class:"shrink-0 text-neutral-400"}),s[1]||(s[1]=n("span",{class:"flex-1 text-xs font-medium text-neutral-700 dark:text-neutral-200"},"Watchdog",-1)),e.watchdog?.available?(t(),r("span",{key:0,class:G(["inline-flex rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",e.watchdog.armed?"bg-emerald-50 text-emerald-700 dark:bg-emerald-950/40 dark:text-emerald-300":"bg-neutral-100 text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300"])},p(e.watchdog.armed?"armed":"standing by"),3)):b("",!0)]),n("div",Dg,[e.watchdog?e.watchdog.available?(t(),r(Ee,{key:2},[e.watchdog.checkins.length===0?(t(),r("p",Ng," No check-ins yet — the watchdog arms when the thread executes. ")):(t(),r("ul",zg,[(t(!0),r(Ee,null,We(e.watchdog.checkins.slice(0,Hg),i=>(t(),r("li",{key:i.at,class:"flex items-baseline gap-2 text-[11px]",title:i.error},[n("span",Bg,p(c(Lg)(i.at)),1),n("span",{class:G(["shrink-0 inline-flex rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",c(Eg)(i.verdict)])},p(c(Ag)(i.verdict)),3),n("span",Og,p(i.action),1)],8,jg))),128))])),n("div",Vg,[n("button",{onClick:s[0]||(s[0]=i=>a("runCheck")),disabled:e.isChecking,type:"button",class:"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium bg-neutral-800 dark:bg-neutral-200 text-white dark:text-neutral-900 rounded hover:bg-neutral-700 dark:hover:bg-neutral-300 transition-colors disabled:opacity-50"},[B(c(Fn),{size:12,class:G({"animate-spin":e.isChecking})},null,8,["class"]),n("span",null,p(e.isChecking?"Checking...":"Run check now"),1)],8,qg),s[2]||(s[2]=n("span",{class:"text-[10px] text-neutral-400 dark:text-neutral-500"}," Finalizes lost requests and resumes a stuck thread. Safe when healthy. ",-1))]),e.checkError?(t(),r("p",Ug,p(e.checkError),1)):b("",!0)],64)):(t(),r("p",Pg," Not available on this deployment (requires builder 0.26+). ")):(t(),r("p",Fg," Loading watchdog state… "))])]))}}),Kg={key:0,class:"flex justify-center py-6"},Jg={key:1,class:"text-red-600 dark:text-red-400 text-center py-4 text-xs"},Gg={class:"thread-settings-variables-card bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},Yg={key:0,class:"text-xs text-neutral-500 dark:text-neutral-400"},Qg={key:1,class:"space-y-2"},Xg={class:"thread-settings-variable-name min-w-0 flex items-center gap-1.5"},Zg=["title"],ex={key:0,class:"shrink-0 rounded bg-red-100 px-1 py-0.5 text-[8px] uppercase tracking-wide text-red-700 dark:bg-red-900 dark:text-red-300"},tx=["disabled","onClick","title"],nx=["disabled","onClick"],ax={key:1,class:"h-7 w-7"},rx={class:"mt-3 border-t border-neutral-100 dark:border-neutral-800 pt-3 space-y-2"},sx=["disabled","onClick","title"],ox=["disabled","onClick"],lx=["disabled"],ix=["disabled"],dx={key:1},ux={key:0,class:"text-[10px] text-red-600 dark:text-red-400"},qa="**********",cx=et({__name:"MetadataSlidePane",props:{threadId:{},show:{type:Boolean},embedded:{type:Boolean}},emits:["close","threadDeleted","editThread","threadUpdated"],setup(e,{emit:o}){const a=e,l=o,{thread:s,isFetching:i,error:h,refetch:u}=ua(T(()=>a.threadId)),{agents:I,isFetching:S}=ir(),$=g(!1),m=g(!1),y=g(!1),L=g(!1),C=g(!!a.embedded),V=g(!1),H=g("a"),J=g(!1),le=g(!1);let X=null,ne=0;const ue=()=>({id:`new-env-${ne++}`,name:"",value:"",secret:!0}),K=g([]),P=g({}),M=g({}),W=g({}),q=g({}),_e=g({}),Ne=g([ue()]),te=g(null),qe=g(null),z=g(null),he=g(""),ke=g([]),Le=g(!1),we=(O,ee)=>O instanceof Error?O.message:ee,me=(O,ee)=>{dn(ee?{error:O,fieldErrors:ee}:{error:O},z)||(qe.value=O)},Se=T(()=>I.value?I.value.filter(O=>O.type==="ai_human").map(O=>({value:O.id,label:O.title})):[]),Ae=T(()=>s.value?.agent.type==="ai_human"),se=T(()=>s.value?.agent.type==="dual_ai"),Z=T(()=>K.value.filter(O=>!_e.value[O.property])),Q=async()=>{s.value&&(await navigator.clipboard.writeText(s.value.id),J.value=!0,X&&clearTimeout(X),X=setTimeout(()=>{J.value=!1,X=null},2e3))};Kt(()=>{X&&clearTimeout(X)});const ce=async O=>{if(!(!a.threadId||!O||O===s.value?.agent.id)){y.value=!0;try{const ee=await fetch(Qe(`/api/threads/${a.threadId}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent_id:O})});if(!ee.ok){const Oe=await ee.json();throw new Error(Oe.error||"Failed to update agent")}await u(),l("threadUpdated")}catch{he.value=s.value?.agent.id||""}finally{y.value=!1}}},fe=async O=>{if(a.threadId){ke.value=O,Le.value=!0,L.value=!0;try{const ee=await fetch(Qe(`/api/threads/${a.threadId}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tags:O})});if(!ee.ok){const Oe=await ee.json();throw new Error(Oe.error||"Failed to update tags")}l("threadUpdated")}catch{ke.value=s.value?.tags||[]}finally{L.value=!1,Le.value=!1}}},Fe=()=>{a.embedded&&(C.value=!0)},Ye=O=>O.defined?(O.defined.type==="agent"||O.defined.type==="prompt")&&O.defined.name?`${O.defined.type}:${O.defined.name}`:O.defined.type==="account"?"user":O.defined.type:"missing",F=O=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(O.trim()),$e=(O={})=>({outer:"$remove:mb-4 $remove:mb-3.5 !mb-0 min-w-0",wrapper:"$remove:flex-1 flex min-w-0",inner:"$reset min-w-0",input:["$reset block h-8 w-full min-w-0 rounded border border-neutral-200 bg-white px-2 py-1.5 text-xs text-neutral-700 placeholder:text-neutral-400 disabled:opacity-60 dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-200",O.mono?"font-mono":""].filter(Boolean).join(" "),help:"$remove:hidden hidden",messages:"$remove:formkit-messages hidden"}),ye=O=>{const ee={},Oe={};for(const pe of O)ee[pe.property]=pe.type==="secret"&&pe.defined?qa:pe.value??"",Oe[pe.property]=pe.type==="secret";P.value=ee,M.value=Oe,W.value={},q.value={},_e.value={}},Re=O=>{M.value={...M.value,[O]:!M.value[O]},q.value={...q.value,[O]:!0}},Ve=O=>{W.value={...W.value,[O]:!0}},He=O=>{_e.value={..._e.value,[O]:!0},qe.value=null,un(z)},ie=()=>{Ne.value=[...Ne.value,ue()]},de=O=>{const ee=Ne.value.filter(Oe=>Oe.id!==O);Ne.value=ee.length>0?ee:[ue()]},ae=async()=>{if(!a.threadId||!s.value?.agent?.id){K.value=[],ye([]);return}le.value=!0;try{const O=await fetch(Qe(`/api/variables/agents/${encodeURIComponent(s.value.agent.id)}?thread_id=${encodeURIComponent(a.threadId)}`));if(!O.ok){K.value=[];return}const ee=await O.json();K.value=ee.variables||[],ye(K.value)}catch{K.value=[],ye([])}finally{le.value=!1}},Me=async(O,ee=[],Oe={})=>{if(!a.threadId)return;qe.value=null;const pe=await fetch(Qe(`/api/threads/${a.threadId}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({env_patch:O,env_type_patch:Oe,env_delete:ee})});if(!pe.ok){const D=await pe.json().catch(()=>({}));throw new Error(D.error||"Failed to update variable")}await u(),await ae(),l("threadUpdated")},Ke=async()=>{if(te.value)return;const O={},ee={},Oe=Object.keys(_e.value).filter(D=>_e.value[D]);for(const D of Z.value){if(!W.value[D.property]&&!q.value[D.property])continue;if(!F(D.property)){me(`Invalid env name: ${D.property}`,{[`env_${D.property}`]:`Invalid env name: ${D.property}`});return}const xe=P.value[D.property]??"";xe!==qa&&(O[D.property]=xe),(q.value[D.property]||W.value[D.property])&&(ee[D.property]=M.value[D.property]?"secret":"text")}const pe=new Set;for(const D of Ne.value){const xe=D.name.trim(),Be=D.value.length>0;if(!(!xe&&!Be)){if(!xe||!F(xe)){me("Use a valid env name like WEATHER_API_KEY",{[`${D.id}_name`]:"Use a valid env name like WEATHER_API_KEY"});return}if(pe.has(xe)){me(`Duplicate env name: ${xe}`,{[`${D.id}_name`]:`Duplicate env name: ${xe}`});return}pe.add(xe),O[xe]=D.value,ee[xe]=D.secret?"secret":"text"}}if(Object.keys(O).length===0&&Object.keys(ee).length===0&&Oe.length===0){me("No env changes to save");return}te.value="__all__";try{await Me(O,Oe,ee),Ne.value=[ue()]}catch(D){me(we(D,"Failed to save variables"))}finally{te.value=null}},U=g(null),Ce=g(!1),oe=g(null),Ue=async()=>{if(a.threadId)try{const O=await fetch(Qe(`/api/threads/${a.threadId}/diagnostics`));if(!O.ok){U.value={available:!1,armed:!1,checkins:[]};return}const ee=await O.json();U.value=Ig(ee?.watchdog??null)}catch{U.value={available:!1,armed:!1,checkins:[]}}},tt=async()=>{if(!(!a.threadId||Ce.value)){Ce.value=!0,oe.value=null;try{const O=await fetch(Qe(`/api/threads/${a.threadId}/revive`),{method:"POST"});if(!O.ok){const ee=await O.json().catch(()=>null);throw new Error(ee?.error||"Watchdog check failed")}}catch(O){oe.value=we(O,"Watchdog check failed")}finally{Ce.value=!1,await Ue()}}},nt=async()=>{if(a.threadId){V.value=!0;try{const O=await fetch(Qe(`/api/threads/${a.threadId}/continue`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({side:H.value})});if(!O.ok){const ee=await O.json();throw new Error(ee.error||"Failed to continue execution")}}catch{H.value="a"}finally{V.value=!1}}},ge=async()=>{if(a.threadId){m.value=!0;try{const O=await fetch(Qe(`/api/threads/${a.threadId}`),{method:"DELETE"});if(!O.ok){const ee=await O.json();throw new Error(ee.error||"Failed to delete thread")}l("threadDeleted",a.threadId)}catch{$.value=!1}finally{m.value=!1}}};return be(()=>s.value,O=>{O&&(he.value=O.agent.id,Le.value||(ke.value=O.tags||[]))},{immediate:!0}),be(()=>a.show,O=>{O?(ae(),Ue(),Fe()):(C.value=!1,K.value=[],P.value={},M.value={},W.value={},q.value={},_e.value={},Ne.value=[ue()],qe.value=null,un(z),le.value=!1,U.value=null,oe.value=null)},{immediate:!0}),be(()=>a.threadId,()=>{C.value=!1,K.value=[],P.value={},M.value={},W.value={},q.value={},_e.value={},Ne.value=[ue()],qe.value=null,un(z),U.value=null,oe.value=null,a.show&&(ae(),Ue(),Fe())}),be(()=>s.value?.agent?.id,()=>{a.show&&(ae(),Fe())}),(O,ee)=>{const Oe=Wt("FormKit");return t(),j(hn,{"enter-active-class":e.embedded?"":"transition-all duration-300 ease-out","enter-from-class":e.embedded?"":"max-h-0 opacity-0","enter-to-class":e.embedded?"":"max-h-[500px] opacity-100","leave-active-class":e.embedded?"":"transition-all duration-200 ease-in","leave-from-class":e.embedded?"":"max-h-[500px] opacity-100","leave-to-class":e.embedded?"":"max-h-0 opacity-0"},{default:Pe(()=>[e.show&&e.threadId?(t(),r("div",{key:0,class:G(["thread-settings-pane",e.embedded?"h-full overflow-y-auto bg-neutral-100 dark:bg-neutral-950":"overflow-hidden bg-neutral-100 dark:bg-neutral-950"])},[n("div",{class:G(["thread-settings-layout",e.embedded?"grid grid-cols-1 gap-3 p-3":"max-h-[500px] overflow-y-auto p-3 space-y-3"])},[c(i)?(t(),r("div",Kg,[B(Ze)])):c(h)?(t(),r("div",Jg," Error: "+p(c(h)),1)):c(s)?(t(),r(Ee,{key:2},[B(mg,{thread:c(s),"copied-id":J.value,"is-ai-human-agent":Ae.value,"local-agent-id":he.value,"agent-options":Se.value,"is-fetching-agents":c(S),"is-saving-agent":y.value,"local-tags":ke.value,"is-saving-tags":L.value,onCopyId:Q,onAgentChange:ce,onTagsChange:fe},null,8,["thread","copied-id","is-ai-human-agent","local-agent-id","agent-options","is-fetching-agents","is-saving-agent","local-tags","is-saving-tags"]),n("div",Gg,[ee[5]||(ee[5]=n("div",{class:"px-3 py-2.5 border-b border-neutral-100 dark:border-neutral-800"},[n("div",{class:"text-xs font-medium text-neutral-700 dark:text-neutral-200"}," Variables ")],-1)),B(Oe,{type:"form",id:"thread-variable-form",actions:!1,disabled:te.value!==null,onSubmit:Ke,onNode:ee[0]||(ee[0]=pe=>z.value=pe),"form-class":"$reset p-3"},{default:Pe(()=>[B(c(Xn),{node:z.value||void 0},null,8,["node"]),le.value?(t(),r("div",Yg," Loading variables... ")):b("",!0),!le.value&&Z.value.length>0?(t(),r("div",Qg,[(t(!0),r(Ee,null,We(Z.value,pe=>(t(),r("div",{key:pe.property,class:"thread-settings-variable-row grid grid-cols-[minmax(90px,1fr)_minmax(0,1.6fr)_auto_auto] items-center gap-1.5"},[n("div",Xg,[n("span",{class:"truncate text-[11px] font-mono text-neutral-700 dark:text-neutral-200",title:`${pe.property} (${Ye(pe)})`},p(pe.property),9,Zg),pe.required?(t(),r("span",ex," req ")):b("",!0)]),B(Oe,{type:M.value[pe.property]?"password":"text",name:`env_${pe.property}`,modelValue:P.value[pe.property],"onUpdate:modelValue":D=>P.value[pe.property]=D,placeholder:"Value",disabled:te.value!==null,"outer-class":"$reset mb-0",classes:$e(),onInput:D=>Ve(pe.property)},null,8,["type","name","modelValue","onUpdate:modelValue","disabled","classes","onInput"]),n("button",{type:"button",class:G(["inline-flex h-7 w-7 shrink-0 items-center justify-center rounded hover:bg-neutral-50 disabled:opacity-50 dark:hover:bg-neutral-800",M.value[pe.property]?"text-neutral-950 dark:text-neutral-50":"text-neutral-300 dark:text-neutral-600"]),disabled:te.value!==null,onClick:D=>Re(pe.property),title:M.value[pe.property]?"Treat as secret":"Treat as text"},[M.value[pe.property]?(t(),j(c(va),{key:0,size:13})):(t(),j(c(ha),{key:1,size:13}))],10,tx),pe.defined&&pe.defined.type==="thread"?(t(),r("button",{key:0,type:"button",class:"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded text-neutral-300 hover:bg-red-50 hover:text-red-600 disabled:opacity-50 dark:text-neutral-600 dark:hover:bg-red-950 dark:hover:text-red-400",disabled:te.value!==null,onClick:D=>He(pe.property),title:"Remove env"},[B(c(En),{size:13})],8,nx)):(t(),r("div",ax))]))),128))])):b("",!0),n("div",rx,[(t(!0),r(Ee,null,We(Ne.value,pe=>(t(),r("div",{key:pe.id,class:"thread-settings-new-env-row grid grid-cols-[minmax(90px,1fr)_minmax(0,1.6fr)_auto_auto] items-center gap-1.5"},[B(Oe,{type:"text",name:`${pe.id}_name`,modelValue:pe.name,"onUpdate:modelValue":D=>pe.name=D,placeholder:"FOOBAR",disabled:te.value!==null,validation:"envName","validation-visibility":"submit","outer-class":"$reset mb-0",classes:$e({mono:!0}),onKeydown:Bt(Ge(Ke,["prevent"]),["enter"])},null,8,["name","modelValue","onUpdate:modelValue","disabled","classes","onKeydown"]),B(Oe,{type:pe.secret?"password":"text",name:`${pe.id}_value`,modelValue:pe.value,"onUpdate:modelValue":D=>pe.value=D,placeholder:"Value",disabled:te.value!==null,"outer-class":"$reset mb-0",classes:$e(),onKeydown:Bt(Ge(Ke,["prevent"]),["enter"])},null,8,["type","name","modelValue","onUpdate:modelValue","disabled","classes","onKeydown"]),n("button",{type:"button",class:G(["inline-flex h-7 w-7 shrink-0 items-center justify-center rounded hover:bg-neutral-50 disabled:opacity-50 dark:hover:bg-neutral-800",pe.secret?"text-neutral-950 dark:text-neutral-50":"text-neutral-300 dark:text-neutral-600"]),disabled:te.value!==null,onClick:D=>pe.secret=!pe.secret,title:pe.secret?"Treat as secret":"Treat as text"},[pe.secret?(t(),j(c(va),{key:0,size:13})):(t(),j(c(ha),{key:1,size:13}))],10,sx),n("button",{type:"button",class:"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded text-neutral-300 hover:bg-red-50 hover:text-red-600 disabled:opacity-50 dark:text-neutral-600 dark:hover:bg-red-950 dark:hover:text-red-400",disabled:te.value!==null,onClick:D=>de(pe.id),title:"Remove new row"},[B(c(En),{size:13})],8,ox)]))),128)),n("button",{type:"button",class:"text-[11px] font-medium text-neutral-500 hover:text-neutral-800 disabled:opacity-50 dark:text-neutral-400 dark:hover:text-neutral-200",disabled:te.value!==null,onClick:ie}," Add another env ",8,lx),n("button",{type:"submit",form:"thread-variable-form",class:"inline-flex w-full items-center justify-center rounded border border-neutral-200 px-2 py-1.5 text-[11px] font-medium text-neutral-600 hover:bg-neutral-50 disabled:opacity-50 dark:border-neutral-700 dark:text-neutral-300 dark:hover:bg-neutral-800",disabled:te.value!==null},[te.value==="__all__"?(t(),j(Ze,{key:0,size:"xs"})):(t(),r("span",dx,"Save envs"))],8,ix),qe.value?(t(),r("p",ux,p(qe.value),1)):b("",!0)])]),_:1},8,["disabled"])]),B(Wg,{watchdog:U.value,"is-checking":Ce.value,"check-error":oe.value,onRunCheck:tt},null,8,["watchdog","is-checking","check-error"]),B(Sg,{expanded:C.value,"is-dual-ai-agent":se.value,"selected-side":H.value,"is-continuing":V.value,"is-deleting":m.value,onToggle:ee[1]||(ee[1]=pe=>C.value=!C.value),onUpdateSelectedSide:ee[2]||(ee[2]=pe=>H.value=pe),onContinueExecution:nt,onDeleteThread:ee[3]||(ee[3]=pe=>$.value=!0)},null,8,["expanded","is-dual-ai-agent","selected-side","is-continuing","is-deleting"])],64)):b("",!0)],2),B(Cs,{modelValue:$.value,"onUpdate:modelValue":ee[4]||(ee[4]=pe=>$.value=pe),title:"Delete Thread?",message:"This will permanently delete all messages, logs, and associated data. This action cannot be undone.","confirm-text":"Delete","cancel-text":"Cancel",onConfirm:ge},null,8,["modelValue"])],2)):b("",!0)]),_:1},8,["enter-active-class","enter-from-class","enter-to-class","leave-active-class","leave-from-class","leave-to-class"])}}}),fx=vt(cx,[["__scopeId","data-v-a3e80d3e"]]),px={class:"relative -ml-3 flex min-w-0 w-72 shrink-0 self-stretch border-r border-neutral-200 dark:border-neutral-800"},vx={key:1,class:"flex h-5 w-5 shrink-0 items-center justify-center"},hx={class:"min-w-0 flex-1"},mx={class:"block truncate font-medium text-neutral-900 dark:text-neutral-100"},gx={class:"block truncate text-[10px] leading-tight text-neutral-500 dark:text-neutral-400"},xx={key:1,class:"absolute left-0 top-full z-30 w-[22rem] overflow-hidden rounded-b-lg border border-neutral-200 bg-white shadow-xl dark:border-neutral-700 dark:bg-neutral-900"},bx={class:"flex items-center justify-end border-b border-neutral-100 px-1 py-1 dark:border-neutral-800"},yx={class:"max-h-[min(30rem,70vh)] overflow-y-auto py-1.5 text-[12px]"},kx={key:0,class:"flex items-center gap-2 px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},_x={key:1,class:"px-3 py-3 text-xs text-red-600 dark:text-red-400"},wx={key:2,class:"px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},$x=["onClick"],Cx={key:1,class:"relative z-[1] mt-px flex h-5 w-5 shrink-0 items-center justify-center"},Sx={class:"relative z-[1] min-w-0 flex-1"},Tx={class:"block truncate text-xs font-medium"},Ix={class:"block truncate text-[10px] leading-tight text-neutral-500 dark:text-neutral-400"},Yn=et({__name:"ThreadAgentConfigurationSelector",props:{nodes:{},selectedNode:{},pinned:{type:Boolean},loading:{type:Boolean},error:{},baseIndentPx:{},levelIndentPx:{}},emits:["select","pin","unpin"],setup(e,{emit:o}){const a=e,l=o,s=g(!1);function i(S){return S?.kind==="subprompt"?"text-fuchsia-600 dark:text-fuchsia-400":"text-sky-600 dark:text-sky-400"}function h(S){l("select",S),s.value=!1}function u(){a.pinned||(s.value=!s.value)}function I(){l("pin"),s.value=!1}return(S,$)=>(t(),r("div",px,[n("button",{type:"button",class:G(["flex h-full min-w-0 w-full items-center gap-2 bg-transparent px-3 py-1.5 text-left text-xs transition-colors hover:bg-accent-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent-500 dark:hover:bg-accent-950/30",e.pinned?"cursor-default":""]),onClick:u,onKeydown:$[0]||($[0]=Bt(Ge(m=>s.value=!1,["stop"]),["escape"]))},[e.selectedNode?.avatarSrc?(t(),j(pn,{key:0,icon:e.selectedNode.avatarSrc,seed:e.selectedNode.avatarSeed??e.selectedNode.label,class:"h-5 w-5 shrink-0 rounded object-cover ring-1 ring-black/10 dark:ring-white/15"},null,8,["icon","seed"])):(t(),r("span",vx,[e.selectedNode?.kind==="model"?(t(),j(c(An),{key:0,size:15,class:"text-violet-600 dark:text-violet-400"})):(t(),j(c(fn),{key:1,size:15,class:G(i(e.selectedNode))},null,8,["class"]))])),n("span",hx,[n("span",mx,p(e.selectedNode?.label||"Agent Configuration"),1),n("span",gx,p(e.selectedNode?.subtitle||"Select configuration item"),1)]),e.pinned?b("",!0):(t(),j(c(Tt),{key:2,size:14,class:G(["shrink-0 text-neutral-400",s.value?"rotate-180":""])},null,8,["class"]))],34),e.pinned?(t(),r("button",{key:0,type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded-md text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100",title:"Unpin configuration tree",onClick:$[1]||($[1]=m=>l("unpin"))},[B(c(ea),{size:14})])):b("",!0),s.value&&!e.pinned?(t(),r("div",xx,[n("div",bx,[n("button",{type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded-md text-neutral-500 transition-colors hover:bg-accent-50 hover:text-accent-900 dark:text-neutral-400 dark:hover:bg-accent-950/30 dark:hover:text-accent-100",title:"Pin as sidebar",onClick:I},[B(c(ea),{size:14})])]),n("div",yx,[e.loading?(t(),r("div",kx,[B(Ze,{size:"xs"}),$[2]||($[2]=n("span",null,"Loading configuration...",-1))])):e.error?(t(),r("div",_x,p(e.error),1)):e.nodes.length===0?(t(),r("div",wx," No agent configuration available. ")):(t(!0),r(Ee,{key:3},We(e.nodes,({node:m,depth:y})=>(t(),r("button",{key:m.key,type:"button",class:G(["group relative flex w-full items-start gap-1.5 px-2 py-1.5 text-left leading-tight transition-colors",e.selectedNode?.key===m.key?"bg-accent-50 text-accent-900 hover:bg-accent-100 dark:bg-accent-950/30 dark:text-accent-100 dark:hover:bg-accent-900/40":"text-neutral-700 hover:bg-accent-50 hover:text-accent-900 dark:text-neutral-300 dark:hover:bg-accent-950/30 dark:hover:text-accent-100"]),style:gt({paddingLeft:`${e.baseIndentPx+y*e.levelIndentPx}px`}),onClick:L=>h(m.key)},[(t(!0),r(Ee,null,We(y,L=>(t(),r("span",{key:L,"aria-hidden":"true",class:"pointer-events-none absolute inset-y-0 w-px bg-neutral-200 dark:bg-neutral-800",style:gt({left:`${e.baseIndentPx+(L-1)*e.levelIndentPx}px`})},null,4))),128)),m.avatarSrc?(t(),j(pn,{key:0,icon:m.avatarSrc,seed:m.avatarSeed??m.label,class:"relative z-[1] mt-px h-5 w-5 shrink-0 rounded object-cover ring-1 ring-black/10 dark:ring-white/15"},null,8,["icon","seed"])):(t(),r("span",Cx,[m.kind==="model"?(t(),j(c(An),{key:0,size:15,class:"text-violet-600 dark:text-violet-400"})):(t(),j(c(fn),{key:1,size:15,class:G(i(m))},null,8,["class"]))])),n("span",Sx,[n("span",Tx,p(m.label),1),n("span",Ix,p(m.subtitle),1)])],14,$x))),128))])])):b("",!0)]))}}),Ax={class:"h-full min-h-0 min-w-0 overflow-hidden bg-neutral-100 dark:bg-neutral-950"},Ex={key:1,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},Lx=et({__name:"ThreadAgentSettingsPane",props:{agentId:{},agentName:{},agentTitle:{},active:{type:Boolean}},emits:["saved"],setup(e,{emit:o}){const a=e,l=o,{saving:s,apiError:i,saveAgent:h}=fs(),u=g(null),I=T(()=>a.agentId?{id:a.agentId,name:a.agentName||a.agentId,title:a.agentTitle||a.agentName||a.agentId}:null);async function S($){if(!a.agentId)return;(await h({mode:"edit",data:$,editingId:a.agentId,formNode:u.value?.formNode})).ok&&(await u.value?.markSaveSucceeded(),l("saved",$))}return be(()=>a.active,$=>{$===!1&&u.value?.resetSaveSuccess()}),($,m)=>(t(),r("div",Ax,[I.value?(t(),j(Us,{key:0,ref_key:"agentModalRef",ref:u,"model-value":!0,"edit-agent":I.value,mode:"edit",inline:"","inline-global-notice":"","inline-accent-tabs":"",saving:c(s),"api-error":c(i),onSave:S},{"nav-leading":Pe(()=>[Ft($.$slots,"nav-leading")]),_:3},8,["edit-agent","saving","api-error"])):(t(),r("div",Ex," No agent configured "))]))}}),Rx={class:"flex h-full min-h-0 min-w-0 flex-col overflow-hidden bg-neutral-100 dark:bg-neutral-950"},Mx={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"},Dx={key:0,class:"min-w-0 flex-1"},Fx={key:1,class:"min-h-0 min-w-0 flex-1"},Px={key:2,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},Nx=et({__name:"ThreadModelSettingsPane",props:{modelId:{},modelName:{},modelProvider:{},modelActual:{},model:{},active:{type:Boolean}},emits:["saved"],setup(e,{emit:o}){const a=e,l=o,{saving:s,saveModel:i}=ps(),h=g(null),u=g(null),I=["basics","capabilities","fallbacks"],{activeTab:S,scrollToSection:$}=rr(u,I),m=[{id:"basics",label:"Basic",icon:ta},{id:"capabilities",label:"Capabilities",icon:vs},{id:"fallbacks",label:"Fallback Models",icon:hs}],y=T(()=>a.modelId?{id:a.model?.id||a.modelId,name:a.model?.name||a.modelName||a.modelId,provider:a.model?.provider||a.modelProvider||"",model:a.model?.model||a.modelActual||a.modelId,fallbacks:a.model?.fallbacks,capabilities:a.model?.capabilities,providerTools:a.model?.providerTools}:null);async function L(V){!y.value?.id||!(await i({mode:"edit",data:V,editingId:y.value.id,formNode:h.value?.formNode})).ok||(h.value?.markCurrentPayloadClean?.(),l("saved"))}function C(V){u.value=V}return be(()=>a.active,()=>{h.value?.markCurrentPayloadClean?.()}),(V,H)=>(t(),r("div",Rx,[y.value||V.$slots["nav-leading"]?(t(),r("nav",Mx,[Ft(V.$slots,"nav-leading"),y.value?(t(),r("div",Dx,[B(c(sr),{tabs:m,"active-tab":c(S),"accent-active":"",orientation:"horizontal",onSelect:c($)},null,8,["active-tab","onSelect"])])):b("",!0)])):b("",!0),y.value?(t(),r("div",Fx,[B(c(oa),{config:c(la)},{default:Pe(()=>[B(ms,{ref_key:"modelPaneRef",ref:h,"edit-model":y.value,mode:"edit",saving:c(s),"show-global-notice":"",page:"","body-ref":C,onSave:L},null,8,["edit-model","saving"])]),_:1},8,["config"])])):b("",!0),y.value?b("",!0):(t(),r("div",Px," No model configured "))]))}}),zx={class:"h-full min-h-0 min-w-0 overflow-hidden bg-neutral-100 dark:bg-neutral-950"},jx={key:1,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},Bx=et({__name:"ThreadPromptSettingsPane",props:{promptName:{},active:{type:Boolean}},emits:["saved"],setup(e,{emit:o}){const a=e,l=o,{saving:s,apiError:i,savePrompt:h}=gs(),u=g(0),I=g(0),S=T(()=>a.promptName?{id:a.promptName,name:a.promptName}:null);async function $(m){if(!a.promptName)return;(await h({mode:"edit",data:m,editingId:a.promptName})).ok&&(u.value+=1,l("saved"))}return be(()=>a.active,m=>{m===!1&&(I.value+=1)}),(m,y)=>(t(),r("div",zx,[S.value?(t(),j(Ts,{key:0,"model-value":!0,"edit-prompt":S.value,mode:"edit",inline:"","inline-global-notice":"","inline-accent-tabs":"","save-success-key":u.value,"reset-success-key":I.value,saving:c(s),"api-error":c(i),onSave:$},{"nav-leading":Pe(()=>[Ft(m.$slots,"nav-leading")]),_:3},8,["edit-prompt","save-success-key","reset-success-key","saving","api-error"])):(t(),r("div",jx," No prompt configured "))]))}}),Ox={class:"flex h-full min-h-0 flex-col overflow-hidden bg-neutral-100 dark:bg-neutral-950"},Vx={class:"flex min-h-0 min-w-0 flex-1"},qx={key:0,class:"flex h-full w-64 shrink-0 flex-col border-r border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900"},Ux={class:"flex h-8 shrink-0 items-center justify-end border-b border-neutral-200 px-1 dark:border-neutral-800"},Hx={class:"min-h-0 flex-1 overflow-y-auto py-1.5 text-[12px]"},Wx={key:0,class:"flex items-center gap-2 px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},Kx={key:1,class:"px-3 py-3 text-xs text-red-600 dark:text-red-400"},Jx={key:2,class:"px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},Gx=["onClick"],Yx={key:1,class:"relative z-[1] mt-px flex h-5 w-5 shrink-0 items-center justify-center"},Qx={class:"relative z-[1] min-w-0 flex-1"},Xx={class:"block truncate text-xs font-medium"},Zx={class:"block truncate text-[10px] leading-tight text-neutral-500 dark:text-neutral-400"},eb={class:"min-w-0 flex-1 overflow-hidden"},tb={key:3,class:"flex h-full items-center justify-center gap-2 text-sm text-neutral-500 dark:text-neutral-400"},nb={key:4,class:"flex h-full items-center justify-center text-sm text-red-600 dark:text-red-400"},ab={key:5,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},Ua=5,on=7,ln=9,rb=et({__name:"ThreadAgentConfigurationPane",props:{agentId:{},agentName:{},agentTitle:{},agentType:{},sideAPromptName:{},sideBPromptName:{},active:{type:Boolean}},emits:["agentSaved","saved"],setup(e,{emit:o}){const a=e,l=o,s=g(null),i=g(null),h=g(!1),u=g(null),I=g({}),S=g({}),$=new Map,m=new Map,y=Zr("agentbuilder.threadAgentConfiguration.pinnedTree",!1);let L=0;const C=T(()=>a.agentName||a.agentId||null),V=T(()=>!s.value||!i.value?null:M(s.value,i.value)),H=T(()=>V.value?P(V.value):null),J=T(()=>{if(!s.value)return[];const F=[],$e=(ye,Re)=>{F.push({node:ye,depth:Re});for(const Ve of ye.children)$e(Ve,Re+1)};return $e(s.value,0),F}),le=T(()=>{const F=V.value;return!F||!K(F)?null:F}),X=T(()=>{const F=V.value;return!F||!F.promptName||F.kind!=="prompt"&&F.kind!=="subprompt"?null:F}),ne=T(()=>{const F=V.value;return!F||F.kind!=="model"||!F.modelId?null:F}),ue=T(()=>V.value||s.value);function K(F){return F.kind==="agent"||F.kind==="handoff"||F.kind==="subagent"}function P(F){return F.kind==="model"?`model:${F.modelId||F.modelName}`:F.promptName?`prompt:${F.promptName}`:`agent:${F.agentName||F.agentId}`}function M(F,$e){if(F.key===$e)return F;for(const ye of F.children){const Re=M(ye,$e);if(Re)return Re}return null}function W(F,$e){if(P(F)===$e)return F;for(const ye of F.children){const Re=W(ye,$e);if(Re)return Re}return null}async function q(){if(!(Object.keys(I.value).length>0))try{I.value=await cn("/tools")}catch{I.value={}}}async function _e(){if(!(Object.keys(S.value).length>0))try{const F=await cn("/models"),$e={};for(const ye of F.models||[])$e[ye.id]=ye,$e[ye.name]=ye;S.value=$e}catch{S.value={}}}async function Ne(F){if($.has(F))return $.get(F)??null;try{const $e=await cn(`/agents/${encodeURIComponent(F)}`);return $.set(F,$e.agent),$e.agent}catch{return $.set(F,null),null}}async function te(F){if(m.has(F))return m.get(F)??null;const $e=await As(F);return m.set(F,$e),$e}function qe(F){const $e=I.value[F.name]?.type;return $e==="prompt"?"subprompt":$e==="handoff"?"handoff":$e==="subagent"||$e==="agent"?"subagent":null}function z(F){if(!F)return null;const $e=S.value[F];return $e||Object.values(S.value).find(ye=>ye.name===F)||null}function he(F,$e){if(!F.model_id)return null;const ye=z(F.model_id),Re=ye?.provider||F.model_provider||null,Ve=ye?.model||null,He=[Re,Ve].filter(Boolean).join(" · ");return{key:`${$e}/model:${ye?.id||F.model_id}`,kind:"model",label:ye?.name||F.model_name||F.model_id,subtitle:He||"Model",model:ye,modelId:ye?.id||F.model_id,modelName:ye?.name||F.model_name||F.model_id,modelProvider:Re||void 0,modelActual:Ve||F.model_id,children:[]}}async function ke(F,$e,ye,Re,Ve,He,ie){const de=await Ne(F),ae=de?.name||F,Me=de?.id||F,Ke=de?.title||ie||ae,U={key:`${ye}/agent:${ae}`,kind:$e,label:Ke,subtitle:$e==="agent"?"Agent":$e==="handoff"?"Handoff agent":"Sub-agent",agentId:Me,agentName:ae,agentTitle:Ke,avatarSrc:de?.icon||Ln(ae),avatarSeed:ae,children:[]};if(Re>=Ua)return U;if(Ve.has(ae))return U.subtitle=`${U.subtitle} · already shown`,U;const Ce=new Set(Ve).add(ae),oe=Le(de,$e==="agent");return U.children=(await Promise.all(oe.map((Ue,tt)=>we(Ue.name,"prompt",`${U.key}/prompt:${tt}:${Ue.name}`,Re+1,Ce,new Set(He),Ue.label)))).filter(Ue=>!!Ue),U}function Le(F,$e){if(F){const Re=[];return F.side_a_agent_prompt&&Re.push({name:F.side_a_agent_prompt,label:`${F.side_a_label||"Side A"} prompt`}),F.type==="dual_ai"&&F.side_b_agent_prompt&&Re.push({name:F.side_b_agent_prompt,label:`${F.side_b_label||"Side B"} prompt`}),Re}if(!$e)return[];const ye=[];return a.sideAPromptName&&ye.push({name:a.sideAPromptName,label:"Side A prompt"}),a.agentType==="dual_ai"&&a.sideBPromptName&&ye.push({name:a.sideBPromptName,label:"Side B prompt"}),ye}async function we(F,$e,ye,Re,Ve,He,ie){const de=await te(F),ae={key:ye,kind:$e,label:de?.name||F,subtitle:$e==="subprompt"?"Subprompt":ie,promptName:de?.name||F,children:[]};if(Re>=Ua||!de)return ae;if(He.has(de.name))return ae.subtitle=`${ae.subtitle} · already shown`,ae;const Me=new Set(He).add(de.name),Ke=[],U=he(de,ae.key);U&&Ke.push(U);for(const Ce of de.tools||[]){const oe=qe(Ce);if(oe)if(oe==="subprompt"){const Ue=await we(Ce.name,"subprompt",`${ae.key}/subprompt:${Ce.name}`,Re+1,new Set(Ve),Me,"Subprompt");Ue&&Ke.push(Ue)}else Ke.push(await ke(Ce.name,oe,`${ae.key}/${oe}:${Ce.name}`,Re+1,new Set(Ve),Me))}return ae.children=Ke,ae}async function me(){const F=C.value;if(!a.active||!F)return;const $e=++L,ye=H.value;h.value=!0,u.value=null;try{await Promise.all([q(),_e()]);const Re=await ke(F,"agent","root",0,new Set,new Set,a.agentTitle);if($e!==L)return;s.value=Re;const Ve=ye?W(Re,ye):null;i.value=Ve?.key||Re.key}catch{$e===L&&(s.value=null,i.value=null,u.value="Agent configuration could not be loaded.")}finally{$e===L&&(h.value=!1)}}function Se(F){i.value=F.key}function Ae(F){i.value=F}function se(F){return F.kind==="subprompt"?"text-fuchsia-600 dark:text-fuchsia-400":"text-sky-600 dark:text-sky-400"}function Z(F){return F.kind==="model"?"text-violet-600 dark:text-violet-400":se(F)}function Q(){y.value=!0}function ce(){y.value=!1}function fe(F){V.value?.key===s.value?.key&&l("agentSaved",F),l("saved"),me()}function Fe(){l("saved"),me()}function Ye(){S.value={},l("saved"),me()}return be(()=>[a.active,a.agentId,a.agentName,a.sideAPromptName,a.sideBPromptName],()=>{a.active&&me()},{immediate:!0}),(F,$e)=>(t(),r("div",Ox,[n("div",Vx,[c(y)?(t(),r("aside",qx,[n("div",Ux,[n("button",{type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded-md text-accent-700 transition-colors hover:bg-accent-50 hover:text-accent-900 dark:text-accent-300 dark:hover:bg-accent-950/30 dark:hover:text-accent-100",title:"Unpin configuration tree",onClick:ce},[B(c(ea),{size:14})])]),n("div",Hx,[h.value?(t(),r("div",Wx,[B(Ze,{size:"xs"}),$e[0]||($e[0]=n("span",null,"Loading configuration...",-1))])):u.value?(t(),r("div",Kx,p(u.value),1)):J.value.length===0?(t(),r("div",Jx," No agent configuration available. ")):(t(!0),r(Ee,{key:3},We(J.value,({node:ye,depth:Re})=>(t(),r("button",{key:ye.key,type:"button",class:G(["group relative flex w-full items-start gap-1.5 px-2 py-1.5 text-left leading-tight transition-colors",i.value===ye.key?"bg-accent-50 text-accent-900 hover:bg-accent-100 dark:bg-accent-950/30 dark:text-accent-100 dark:hover:bg-accent-900/40":"text-neutral-700 hover:bg-accent-50 hover:text-accent-900 dark:text-neutral-300 dark:hover:bg-accent-950/30 dark:hover:text-accent-100"]),style:gt({paddingLeft:`${on+Re*ln}px`}),onClick:Ve=>Se(ye)},[(t(!0),r(Ee,null,We(Re,Ve=>(t(),r("span",{key:Ve,"aria-hidden":"true",class:"pointer-events-none absolute inset-y-0 w-px bg-neutral-200 dark:bg-neutral-800",style:gt({left:`${on+(Ve-1)*ln}px`})},null,4))),128)),ye.avatarSrc?(t(),j(pn,{key:0,icon:ye.avatarSrc,seed:ye.avatarSeed??ye.label,class:"relative z-[1] mt-px h-5 w-5 shrink-0 rounded object-cover ring-1 ring-black/10 dark:ring-white/15"},null,8,["icon","seed"])):(t(),r("span",Yx,[ye.kind==="model"?(t(),j(c(An),{key:0,size:15,class:"text-violet-600 dark:text-violet-400"})):(t(),j(c(fn),{key:1,size:15,class:G(Z(ye))},null,8,["class"]))])),n("span",Qx,[n("span",Xx,p(ye.label),1),n("span",Zx,p(ye.subtitle),1)])],14,Gx))),128))])])):b("",!0),n("section",eb,[le.value?(t(),j(Lx,{key:le.value.key,class:"h-full","agent-id":le.value.agentId||le.value.agentName||null,"agent-name":le.value.agentName,"agent-title":le.value.agentTitle,active:e.active,onSaved:fe},Ut({_:2},[c(y)?void 0:{name:"nav-leading",fn:Pe(()=>[B(Yn,{nodes:J.value,"selected-node":ue.value,pinned:c(y),loading:h.value,error:u.value,"base-indent-px":on,"level-indent-px":ln,onSelect:Ae,onPin:Q,onUnpin:ce},null,8,["nodes","selected-node","pinned","loading","error"])]),key:"0"}]),1032,["agent-id","agent-name","agent-title","active"])):X.value?(t(),j(Bx,{key:X.value.key,class:"h-full","prompt-name":X.value.promptName||null,active:e.active,onSaved:Fe},Ut({_:2},[c(y)?void 0:{name:"nav-leading",fn:Pe(()=>[B(Yn,{nodes:J.value,"selected-node":ue.value,pinned:c(y),loading:h.value,error:u.value,"base-indent-px":on,"level-indent-px":ln,onSelect:Ae,onPin:Q,onUnpin:ce},null,8,["nodes","selected-node","pinned","loading","error"])]),key:"0"}]),1032,["prompt-name","active"])):ne.value?(t(),j(Nx,{key:ne.value.key,class:"h-full","model-id":ne.value.modelId||null,"model-name":ne.value.modelName,"model-provider":ne.value.modelProvider,"model-actual":ne.value.modelActual,model:ne.value.model||null,active:e.active,onSaved:Ye},Ut({_:2},[c(y)?void 0:{name:"nav-leading",fn:Pe(()=>[B(Yn,{nodes:J.value,"selected-node":ue.value,pinned:c(y),loading:h.value,error:u.value,"base-indent-px":on,"level-indent-px":ln,onSelect:Ae,onPin:Q,onUnpin:ce},null,8,["nodes","selected-node","pinned","loading","error"])]),key:"0"}]),1032,["model-id","model-name","model-provider","model-actual","model","active"])):h.value?(t(),r("div",tb,[B(Ze,{size:"xs"}),$e[1]||($e[1]=n("span",null,"Loading configuration...",-1))])):u.value?(t(),r("div",nb,p(u.value),1)):(t(),r("div",ab," Select an item to edit. "))])])]))}}),sb={class:"flex h-full min-h-0 flex-col overflow-hidden"},ob={class:"flex h-12 shrink-0 items-center justify-between border-b border-neutral-300 px-4 dark:border-neutral-700"},lb=["id","aria-selected","aria-controls","onClick"],ib={class:"min-w-0 max-w-[11rem] truncate"},db=["aria-expanded"],ub={key:0,class:"absolute right-0 top-full z-50 mt-1"},cb={class:"min-w-0 truncate"},fb={key:0,class:"ml-auto inline-flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full bg-neutral-100 px-1 text-[10px] font-semibold leading-none tabular-nums text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400"},pb={class:"pointer-events-none absolute -left-[9999px] top-0 flex h-8 items-center gap-1 opacity-0"},vb={class:"max-w-[11rem] truncate"},hb={key:0,class:"inline-flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full px-1 text-[10px] font-semibold leading-none tabular-nums"},mb={type:"button",tabindex:"-1",class:"inline-flex h-8 w-8 items-center justify-center rounded-md"},gb={class:"min-h-0 flex-1 overflow-hidden"},Mb=et({__name:"ThreadInspectorPane",props:{threadId:{},agentId:{},agentName:{},agentTitle:{},agentType:{},sideAPromptName:{},sideBPromptName:{},selectedLogId:{},selectedEffectId:{},selectedEffectRef:{},hoveredLogId:{},activeTab:{},filePath:{},filesRefreshKey:{}},emits:["logClick","logHover","logsLoaded","threadDeleted","editThread","threadUpdated","update:activeTab","update:filePath"],setup(e,{expose:o,emit:a}){const l=e,s=a,i=g(l.activeTab??"logs"),h=g(null),u=g(null),{thread:I,refetch:S}=ua(T(()=>l.threadId)),$=g(),m=g(),y=g(),L=g(0),C=g(0),V=g(0),H=T(()=>I.value?.agent?.type||l.agentType||null),J=T(()=>I.value?.agent?.id||l.agentId||null),le=T(()=>I.value?.agent?.name||l.agentName||J.value||null),X=T(()=>y.value!==void 0?y.value:I.value?.agent?.title||l.agentTitle||le.value||null),ne=T(()=>$.value!==void 0?$.value:I.value?.agent?.side_a_agent_prompt||l.sideAPromptName||null),ue=T(()=>m.value!==void 0?m.value:I.value?.agent?.side_b_agent_prompt||l.sideBPromptName||null),K=T(()=>{const U=[{id:"logs",label:"Logs",icon:es},{id:"files",label:"Files",icon:In,count:L.value},{id:"kv",label:"KV Store",icon:ts,count:C.value},{id:"effects",label:"Effects",icon:St,count:V.value}];return J.value&&U.push({id:"config",label:"Agent Configuration",icon:Wa}),U.push({id:"info",label:"Thread Settings",icon:Xa}),U}),P=g({}),M=g({}),W=g(null),q=g(null),_e=g(null),Ne=g(0),te=g({}),qe=g(36),z=g({left:0,width:0}),he=g(!1);let ke=null;const Le=U=>(U.id==="files"||U.id==="kv"||U.id==="effects")&&typeof U.count=="number"&&U.count>0,we=U=>U>99?"99+":String(U),me=(U,Ce)=>{Ce instanceof HTMLButtonElement?P.value[U]=Ce:delete P.value[U]},Se=(U,Ce)=>{Ce instanceof HTMLButtonElement?M.value[U]=Ce:delete M.value[U]},Ae=U=>{const Ce=U instanceof HTMLButtonElement?U:null;q.value=Ce},se=()=>{const U={};for(const Ce of K.value){const oe=M.value[Ce.id];oe&&(U[Ce.id]=Math.ceil(oe.getBoundingClientRect().width))}te.value=U,q.value&&(qe.value=Math.ceil(q.value.getBoundingClientRect().width))},Z=()=>{Ne.value=Math.floor(W.value?.getBoundingClientRect().width??0)},Q=()=>{Z(),se(),Xe(ye)},ce=T(()=>{const U=K.value,Ce=Ne.value;if(!Ce)return U;const oe=4;if(U.reduce((ee,Oe)=>ee+(te.value[Oe.id]??88),0)+Math.max(0,U.length-1)*oe<=Ce)return U;const tt=Math.max(0,Ce-qe.value-oe),nt=[];let ge=0;for(const ee of U){const Oe=te.value[ee.id]??88,pe=ge+Oe+(nt.length>0?oe:0);pe<=tt&&(nt.push(ee.id),ge=pe)}if(!nt.includes(i.value)&&U.some(ee=>ee.id===i.value)){const ee=te.value[i.value]??88;for(;nt.length>0&&ge+ee+(nt.length>0?oe:0)>tt;){const Oe=nt.pop();if(!Oe)break;ge-=(te.value[Oe]??88)+(nt.length>0?oe:0)}nt.push(i.value)}const O=new Set(nt);return U.filter(ee=>O.has(ee.id))}),fe=T(()=>{const U=new Set(ce.value.map(Ce=>Ce.id));return K.value.filter(Ce=>!U.has(Ce.id))}),Fe=()=>{he.value=!1},Ye=()=>{he.value=!he.value},F=U=>{if(!he.value)return;const Ce=U.target;_e.value?.contains(Ce)||Fe()},$e=U=>{U.key==="Escape"&&he.value&&(Fe(),q.value?.focus())},ye=()=>{const U=P.value[i.value];if(!U||!ce.value.some(Ce=>Ce.id===i.value)){z.value={left:0,width:0};return}z.value={left:U.offsetLeft,width:U.offsetWidth}},Re=U=>(Ke("logs"),U()),Ve=U=>(Ke("effects"),U()),He=U=>{const Ce=typeof U.title=="string"?U.title:null,oe=typeof U.side_a_agent_prompt=="string"?U.side_a_agent_prompt:null,Ue=typeof U.side_b_agent_prompt=="string"?U.side_b_agent_prompt:null;y.value=Ce,$.value=oe,m.value=Ue,l.threadId&&S(),s("threadUpdated")},ie=U=>{L.value=U},de=U=>{C.value=U},ae=U=>{V.value=U},Me=U=>{Ve(()=>u.value?.selectEffectByReference(U))},Ke=U=>{K.value.some(Ce=>Ce.id===U)||(U="logs"),i.value=U,Fe(),Xe(ye),s("update:activeTab",U)};return be(()=>l.activeTab,U=>{U&&U!==i.value&&(i.value=U),Xe(ye)}),be(K,U=>{U.some(Ce=>Ce.id===i.value)?Xe(Q):Ke("logs")}),be(()=>J.value,()=>{y.value=void 0,$.value=void 0,m.value=void 0}),be(()=>l.threadId,()=>{L.value=0,C.value=0,V.value=0}),be(ce,()=>{Xe(ye)}),be(fe,U=>{U.length===0&&Fe()}),It(()=>{Xe(Q),W.value&&(ke=new ResizeObserver(Q),ke.observe(W.value)),window.addEventListener("resize",Q),document.addEventListener("pointerdown",F),document.addEventListener("keydown",$e)}),wt(()=>{ke?.disconnect(),window.removeEventListener("resize",Q),document.removeEventListener("pointerdown",F),document.removeEventListener("keydown",$e)}),o({scrollToLog:U=>Re(()=>h.value?.scrollToLog(U)),selectLogById:U=>Re(()=>h.value?.selectLogById(U)),removeLogsByIds:U=>h.value?.removeLogsByIds(U),loadUntilLogId:U=>Re(()=>h.value?.loadUntilLogId(U)),hasLog:U=>h.value?.hasLog(U)??!1,getLog:U=>h.value?.getLog(U)??null,setLoadingForLog:U=>Re(()=>h.value?.setLoadingForLog(U)),waitForLogRow:U=>Re(()=>h.value?.waitForLogRow(U)),selectEffectById:U=>Ve(()=>u.value?.selectEffectById(U)),selectEffectByReference:U=>Ve(()=>u.value?.selectEffectByReference(U))}),(U,Ce)=>(t(),r("div",sb,[n("div",ob,[n("div",{ref_key:"tabListRef",ref:W,class:"relative flex h-8 min-w-0 flex-1 items-center gap-1 overflow-visible",role:"tablist","aria-label":"Thread inspector"},[n("div",{class:G(["pointer-events-none absolute bottom-0 top-0 rounded-md bg-neutral-900 dark:bg-neutral-100 transition-transform duration-300 ease-out",z.value.width>0?"opacity-100":"opacity-0"]),style:gt({width:`${z.value.width}px`,transform:`translateX(${z.value.left}px)`})},null,6),(t(!0),r(Ee,null,We(ce.value,oe=>(t(),r("button",{key:oe.id,ref_for:!0,ref:Ue=>me(oe.id,Ue),id:`thread-inspector-tab-${oe.id}`,type:"button",role:"tab","aria-selected":i.value===oe.id,"aria-controls":`thread-inspector-panel-${oe.id}`,class:G(["relative z-10 inline-flex h-8 min-w-0 shrink items-center justify-center gap-1.5 rounded-md px-2.5 text-sm font-medium transition-colors",i.value===oe.id?"text-white dark:text-neutral-900":"text-neutral-500 hover:text-neutral-900 dark:text-neutral-400 dark:hover:text-neutral-100"]),onClick:Ue=>Ke(oe.id)},[(t(),j(Mt(oe.icon),{size:15,class:"shrink-0"})),n("span",ib,p(oe.label),1),Le(oe)?(t(),r("span",{key:0,class:G(["inline-flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full px-1 text-[10px] font-semibold leading-none tabular-nums",i.value===oe.id?"bg-white/20 text-current dark:bg-black/10":"bg-neutral-100 text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400"])},p(we(oe.count??0)),3)):b("",!0)],10,lb))),128)),fe.value.length>0?(t(),r("div",{key:0,ref_key:"overflowRootRef",ref:_e,class:"relative z-20 shrink-0"},[n("button",{ref:Ae,type:"button",class:G(["inline-flex h-8 w-8 items-center justify-center rounded-md text-neutral-500 transition-colors hover:bg-neutral-100 hover:text-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800 dark:hover:text-neutral-100",he.value?"bg-neutral-100 text-neutral-900 dark:bg-neutral-800 dark:text-neutral-100":""]),"aria-label":"More inspector tabs","aria-expanded":he.value,"aria-haspopup":"menu",onClick:Ge(Ye,["stop"])},[B(c(ma),{size:17})],10,db),he.value?(t(),r("div",ub,[B(c(nr),{width:"w-56",shadow:{offsetX:4,offsetY:4,intensity:.32}},{default:Pe(()=>[(t(!0),r(Ee,null,We(fe.value,oe=>(t(),j(c(Is),{key:oe.id,active:i.value===oe.id,onClick:Ue=>Ke(oe.id)},{default:Pe(()=>[(t(),j(Mt(oe.icon),{class:"h-4 w-4 shrink-0 text-neutral-500 dark:text-neutral-400"})),n("span",cb,p(oe.label),1),Le(oe)?(t(),r("span",fb,p(we(oe.count??0)),1)):b("",!0)]),_:2},1032,["active","onClick"]))),128))]),_:1})])):b("",!0)],512)):b("",!0),n("div",pb,[(t(!0),r(Ee,null,We(K.value,oe=>(t(),r("button",{key:`measure-${oe.id}`,ref_for:!0,ref:Ue=>Se(oe.id,Ue),type:"button",tabindex:"-1",class:"inline-flex h-8 shrink-0 items-center justify-center gap-1.5 rounded-md px-2.5 text-sm font-medium"},[(t(),j(Mt(oe.icon),{size:15,class:"shrink-0"})),n("span",vb,p(oe.label),1),Le(oe)?(t(),r("span",hb,p(we(oe.count??0)),1)):b("",!0)]))),128)),n("button",mb,[B(c(ma),{size:17})])])],512)]),n("div",gb,[ut(B(Kp,{id:"thread-inspector-panel-logs",role:"tabpanel","aria-labelledby":"thread-inspector-tab-logs",ref_key:"logsPaneRef",ref:h,class:"h-full","thread-id":e.threadId,"selected-log-id":e.selectedLogId,"hovered-log-id":e.hoveredLogId,onLogClick:Ce[0]||(Ce[0]=oe=>s("logClick",oe)),onLogHover:Ce[1]||(Ce[1]=oe=>s("logHover",oe)),onLogsLoaded:Ce[2]||(Ce[2]=oe=>s("logsLoaded",oe)),onEffectClick:Me},null,8,["thread-id","selected-log-id","hovered-log-id"]),[[_t,i.value==="logs"]]),ut(B(vm,{id:"thread-inspector-panel-files",role:"tabpanel","aria-labelledby":"thread-inspector-tab-files",class:"h-full","thread-id":e.threadId,path:e.filePath,"refresh-key":e.filesRefreshKey,active:i.value==="files","onUpdate:path":Ce[3]||(Ce[3]=oe=>s("update:filePath",oe)),onCountChanged:ie},null,8,["thread-id","path","refresh-key","active"]),[[_t,i.value==="files"]]),ut(B(tg,{id:"thread-inspector-panel-kv",role:"tabpanel","aria-labelledby":"thread-inspector-tab-kv",class:"h-full","thread-id":e.threadId,active:i.value==="kv",onCountChanged:de},null,8,["thread-id","active"]),[[_t,i.value==="kv"]]),ut(B(bh,{id:"thread-inspector-panel-effects",role:"tabpanel","aria-labelledby":"thread-inspector-tab-effects",ref_key:"effectsPaneRef",ref:u,class:"h-full","thread-id":e.threadId,active:i.value==="effects","selected-effect-id":e.selectedEffectId,"selected-effect-ref":e.selectedEffectRef,onCountChanged:ae},null,8,["thread-id","active","selected-effect-id","selected-effect-ref"]),[[_t,i.value==="effects"]]),ut(B(fx,{id:"thread-inspector-panel-info",role:"tabpanel","aria-labelledby":"thread-inspector-tab-info",class:"h-full","thread-id":e.threadId,show:i.value==="info",embedded:"",onThreadDeleted:Ce[4]||(Ce[4]=oe=>s("threadDeleted",oe)),onEditThread:Ce[5]||(Ce[5]=oe=>s("editThread")),onThreadUpdated:Ce[6]||(Ce[6]=oe=>s("threadUpdated"))},null,8,["thread-id","show"]),[[_t,i.value==="info"]]),J.value?ut((t(),j(rb,{key:0,id:"thread-inspector-panel-config",role:"tabpanel","aria-labelledby":"thread-inspector-tab-config",class:"h-full","agent-id":J.value,"agent-name":le.value,"agent-title":X.value,"agent-type":H.value,"side-a-prompt-name":ne.value,"side-b-prompt-name":ue.value,active:i.value==="config",onAgentSaved:He,onSaved:Ce[7]||(Ce[7]=oe=>s("threadUpdated"))},null,8,["agent-id","agent-name","agent-title","agent-type","side-a-prompt-name","side-b-prompt-name","active"])),[[_t,i.value==="config"]]):b("",!0)])]))}});export{Us as A,vd as C,Lb as T,Rb as _,As as a,Eb as b,Fs as c,Ib as d,or as e,cn as f,Ls as g,Mb as h,Ht as i,Ab as s,ua as u};