@standardagents/builder 0.15.0 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/built-in-routes.js +1650 -502
- package/dist/built-in-routes.js.map +1 -1
- package/dist/client/ApiKeysView.js +1 -1
- package/dist/client/CenteredContentView.js +1 -1
- package/dist/client/CompositionView.js +5 -5
- package/dist/client/ConfirmDialog.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/client/CopyButton.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/client/DataTable.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/client/JsonViewer.js +1 -1
- package/dist/client/LoginView.js +1 -1
- package/dist/client/Modal.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/client/ModelModal.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/client/ModelsView.js +1 -1
- package/dist/client/PromptEditView.js +1 -1
- package/dist/client/PromptModal.js +1 -1
- package/dist/client/PromptsView.js +1 -1
- package/dist/client/ProvidersView.js +2 -2
- package/dist/client/ThreadInspectorPane.vue_vue_type_script_setup_true_lang.js +19 -19
- package/dist/client/ToolsView.js +1 -1
- package/dist/client/UsersView.js +1 -1
- package/dist/client/VariablesView.js +1 -0
- package/dist/client/assets/CompositionView.css +1 -1
- package/dist/client/assets/ThreadInspectorPane.css +1 -1
- package/dist/client/assets/VariablesView.css +1 -0
- package/dist/client/assets/index.css +1 -1
- package/dist/client/index.js +6 -6
- package/dist/{index-D6_KjpVv.d.ts → index-BwqQtJ4r.d.ts} +47 -0
- package/dist/index.d.ts +116 -4
- package/dist/index.js +1547 -706
- package/dist/index.js.map +1 -1
- package/dist/plugin.js +548 -372
- package/dist/plugin.js.map +1 -1
- package/dist/test.d.ts +1 -1
- package/package.json +5 -5
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["syntax.js","vendor.js","vue.js","formkit.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{d as Ue,z as O,e as n,k as Ae,g as Lt,m as ee,B as At,c as I,an as Vt,w as be,r as b,O as qt,a5 as Ja,ao as Ga,J as f,a4 as Un,C as Ya,D as Qa,b as r,f as t,q as T,j,s as Ge,u as v,h as Be,a as Ht,Z as on,o as Nt,ap as Xa,aq as Et,ag as wt,F as _e,l as Pe,K as Ne,n as pt,ar as Ia,as as Aa,ah as Pt,at as Za,au as er,av as Nn,aw as Ea,ax as La,x as rt,ay as xn,az as tr,X as nr,Y as ar,aA as Ma,y as ht,aB as bn,aC as _t,_ as jn,aD as rr,a3 as Mt,aE as sr,am as ln,aF as lr,aG as yn,aH as Ra,aI as Da,aJ as or,al as ir,aK as Fa,aL as dr,aM as ur,aN as cr,aO as fr,aP as pr,aQ as vr,aR as mr,aS as gr,L as Ot,aT as Xt,aU as Bn,aV as Wn,P as zt,H as hr,aW as Pa,aX as xr,aY as br,aZ as yr,a_ as An,a$ as kr,b0 as _r,b1 as wr,b2 as Xn,b3 as kn,b4 as $r,b5 as Zn,b6 as ea,b7 as On,W as Cr,b8 as Sr,b9 as Tr,ba as ta}from"./vue.js";import{G as Ir,a as He,H as Kn,J as Ar,K as Vn,I as cn,j as na,L as aa,B as za,M as Er,N as ra,O as Lr,k as st,P as Na,Q as ja,A as qe,R as Mr,h as _n,S as En,_ as fn,d as rn,e as an,U as Rr,V as Dr,u as Fr,z as Rt,o as Pr,v as zr,x as Nr,y as jr,W as Br,X as Or,w as Vr}from"./index.js";import{e as sa}from"./vendor.js";import{_ as Ba}from"./Modal.vue_vue_type_script_setup_true_lang.js";import{_ as Jn,u as qr}from"./CopyButton.vue_vue_type_script_setup_true_lang.js";import{_ as at,W as Hr,a as Ur,b as Wr,c as Kr,d as Jr,e as Zt}from"./monaco.js";import{J as Ln}from"./JsonViewer.js";import{_ as Gr}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang.js";import{u as Oa,_ as Va,b as pn,c as Yr,P as Qr}from"./PromptModal.js";const Xr=Ue({__name:"UiMenuItem",props:{active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},as:{default:"button"}},emits:["click"],setup(e,{emit:i}){const a=e,s=i;function l(o){a.disabled||s("click",o)}return(o,m)=>(n(),O(At(e.as),{type:e.as==="button"?"button":void 0,disabled:e.as==="button"?e.disabled:void 0,onClick:l,class:ee(["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:Ae(()=>[Lt(o.$slots,"default")]),_:3},8,["type","disabled","class"]))}});async function sn(e){const i=await Ir(e);if(!i.ok)throw new Error(`Request failed for ${e}`);return i.json()}async function Zr(e){if(!e)return null;try{return(await sn(`/prompts/${encodeURIComponent(e)}`)).prompt}catch{return null}}async function Uh(e){if(!e)return null;try{return await sn(`/tools/${encodeURIComponent(e)}`)}catch{return null}}function es(e){const i=e?.env??e?.tenvs;return!i||typeof i!="object"?{}:i}function qa(e){return Object.keys(es(e)).filter(i=>i.trim().length>0)}function ts(e){const i=e?.variables||[],a=new Map;for(const s of i){const l=s.name?.trim();l&&a.set(l,{...s,name:l})}for(const s of qa(e))a.has(s)||a.set(s,{name:s,type:"text",required:!1,description:"Default value set on this prompt."});return Array.from(a.values())}function Wh(e){return e?!e.packed&&e.id===e.name:!1}function ns(e,i){return i?.type?i.type:e.startsWith("provider:")?"provider":e.startsWith("mcp:")?"mcp":"unknown"}function as(e){return e.startsWith("provider:")?e.slice(9):e.startsWith("mcp:")?e.slice(4):e}function rs(e,i){if(!e)return null;const a=i[e];if(a)return a;for(const s of Object.values(i))if(s.name===e)return s;return null}function ss(e,i,a={}){const s=i[e.name],l=s?.model;return{name:e.name,displayName:as(e.name),kind:ns(e.name,s),description:s?.description||"",variables:s?.variables||[],model:l,resolvedModel:rs(l,a),config:e}}function Kh(e,i,a,s){const l=i==="b"&&e.type!=="dual_ai",o=i==="a"?e.side_a_label||"Side A":e.side_b_label||(l?"Human":"Side B"),m=i==="a"?e.side_a_agent_prompt:e.side_b_agent_prompt,h=i==="a"?e.side_a_stop_on_response:e.side_b_stop_on_response,M=i==="a"?e.side_a_stop_tool:e.side_b_stop_tool,F=i==="a"?e.side_a_max_steps:e.side_b_max_steps,k=[i==="a"?e.side_a_session_stop_tool:e.side_b_session_stop_tool,i==="a"?e.side_a_session_fail_tool:e.side_b_session_fail_tool,i==="a"?e.side_a_session_status_tool:e.side_b_session_status_tool].filter(V=>!!V),x=(a?.tools||[]).map(V=>ss(V,s.toolsCatalog,s.models)),L=x.filter(V=>V.kind==="handoff"||V.kind==="subagent");return{id:i,agentName:e.name,label:o,mode:l?"human":"ai",promptName:m||null,stopOnResponse:h,stopTool:M,maxSteps:F,sessionStopTool:i==="a"?e.side_a_session_stop_tool:e.side_b_session_stop_tool,sessionTools:k,prompt:a,model:a&&s.models[a.model_id]||null,tools:x,hooks:(a?.hooks||[]).map(V=>s.hooks[V]||{id:V,hook:"unknown"}),variables:ts(a),variableEnvNames:qa(a),outgoingAgents:L}}function ls(e){const{limit:i=50,offset:a=0,agentId:s=null,userId:l=null,search:o=null,startDate:m=null,endDate:h=null,autoFetch:M=!0}=e||{},F=I(()=>{const E=new URLSearchParams,B=typeof i=="number"?i:i.value,re=typeof a=="number"?a:a.value,J=typeof s=="string"?s:s?.value,Q=typeof l=="string"?l:l?.value,H=typeof o=="string"?o:o?.value,me=typeof m=="number"?m:m?.value,Z=typeof h=="number"?h:h?.value;return E.append("limit",B.toString()),E.append("offset",re.toString()),J&&(E.append("agent_id",J),E.append("include_children","1")),Q&&E.append("user_id",Q),H&&E.append("search",H),me&&E.append("startDate",me.toString()),Z&&E.append("endDate",Z.toString()),He(`/api/threads?${E.toString()}`)}),{data:k,error:x,isFetching:L,isFinished:V,execute:R,abort:W}=Vt(F,{immediate:M,refetch:!0}).get().json(),K=I(()=>k.value?.threads||[]),G=I(()=>k.value?.total||0),w=I(()=>k.value?.hasMore||!1);return{threads:K,total:G,hasMore:w,error:x,isFetching:L,isFinished:V,refetch:R,abort:W}}function Gn(e){const i=I(()=>{const F=typeof e=="string"?e:e?.value;return F?He(`/api/threads/${F}`):""}),{data:a,error:s,isFetching:l,isFinished:o,execute:m,abort:h}=Vt(i,{immediate:!1,refetch:!0}).get().json();return be(i,F=>{F?m():(h(),a.value=null)},{immediate:!0}),{thread:I(()=>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),error:s,isFetching:l,isFinished:o,refetch:m,abort:h}}const os={key:0,class:"flex min-h-[500px] items-center justify-center"},is={class:"flex min-h-0 min-w-0 flex-1 flex-col"},ds={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"},us={class:"min-w-0 flex-1"},cs={class:"edit-sections-query"},fs=Ue({__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:i,emit:a}){const s=e,l=a,o=I(()=>s.mode==="edit"),m=I(()=>!!s.surfaceSection),h=I(()=>s.inline&&s.inlineFlatSections),M=I(()=>s.inline||m.value),F=I(()=>M.value?{config:Kn}:{}),k=I(()=>o.value&&(s.editAgent?.id||s.editAgent?.name)||""),x=Ar(()=>k.value,{autoload:!1}),L=b(null),V=["basics","side-a","side-b","variables"],{activeTab:R,scrollToSection:W}=Oa(L,V),K=I(()=>[{id:"basics",label:"Basics",icon:Vn},{id:"side-a",label:"Side A",icon:cn},{id:"side-b",label:"Side B",icon:x.agentType.value==="ai_human"?na:cn},{id:"variables",label:"Variables",icon:aa}]),G=b(!1),w=b(!1),E=b(null);let B=0;const re=I(()=>JSON.stringify({name:x.name.value,title:x.title.value,agentType:x.agentType.value,exposeAsTool:x.exposeAsTool.value,toolDescription:x.toolDescription.value,maxSessionTurns:x.maxSessionTurns.value,sideALabel:x.sideALabel.value,sideAAgentPrompt:x.sideAAgentPrompt.value,sideAStopOnResponse:x.sideAStopOnResponse.value,sideAStopOnToolCall:x.sideAStopOnToolCall.value,sideAStopTool:x.sideAStopTool.value,sideAStopToolResponseProperty:x.sideAStopToolResponseProperty.value,sideAManualStopCondition:x.sideAManualStopCondition.value,sideAMaxSteps:x.sideAMaxSteps.value,sideAEndConversationTool:x.sideAEndConversationTool.value,sideBLabel:x.sideBLabel.value,sideBAgentPrompt:x.sideBAgentPrompt.value,sideBStopOnResponse:x.sideBStopOnResponse.value,sideBStopOnToolCall:x.sideBStopOnToolCall.value,sideBStopTool:x.sideBStopTool.value,sideBStopToolResponseProperty:x.sideBStopToolResponseProperty.value,sideBMaxSteps:x.sideBMaxSteps.value,sideBEndConversationTool:x.sideBEndConversationTool.value,agentEnv:x.agentEnv.value})),J=I(()=>w.value?"Saved":s.inline&&o.value?"Save Agent Changes":o.value?"Update Agent":"Create Agent"),Q=I(()=>s.saving||s.inline&&!G.value),H=I(()=>m.value||s.inline?{class:s.inline?"flex h-full min-w-0 flex-col":"min-w-0"}:{modelValue:s.modelValue,title:o.value?"Edit Agent":"Create Agent",width:"max-w-5xl",contentPadding:!1});function me(){w.value=!1,E.value=null}function Z(){Be().then(()=>{G.value=!!x.formNode.value?.context?.state.dirty})}function Me(ve){x.handleFormNode(ve),ve.on("commit",Z),ve.on("reset",Z),ve.on("message-added",Z),ve.on("message-updated",Z),ve.on("message-removed",Z),Z()}async function De(){const ve=++B;await Be();const he=x.formNode.value;if(!he||ve!==B){G.value=!1;return}await he.settled,he.reset(he.value),await Be(),ve===B&&(G.value=!1)}async function se(){await De(),w.value=!0,E.value=re.value}async function Fe(){me(),x.resetForm(),await Be(),o.value&&k.value?await x.load():await x.loadPrerequisites(),await De()}async function N(){const ve=await x.prepareSubmit();ve&&l("save",ve)}function de(){x.resetForm(),me(),l("update:modelValue",!1)}async function oe(){me(),await Fe()}function ye(ve){return!s.surfaceSection||s.surfaceSection===ve}return be(()=>s.modelValue,async ve=>{ve?await Fe():(B+=1,x.resetForm(),me(),G.value=!1)},{immediate:!0}),be(()=>k.value,async(ve,he)=>{!s.modelValue||ve===he||await Fe()}),be(re,ve=>{w.value&&E.value!==null&&ve!==E.value&&me()}),be(G,ve=>{ve&&me()}),i({formNode:x.formNode,markSaveSucceeded:se,markCurrentFormCleanAfterSettle:De,resetSaveSuccess:me}),(ve,he)=>{const Le=qt("FormKit");return n(),O(At(e.inline||m.value?"div":Ba),Ja(H.value,Ga(e.inline||m.value?void 0:{"update:modelValue":ae=>ve.$emit("update:modelValue",ae)})),{default:Ae(()=>[(n(),O(At(M.value?f(Un):"div"),Ya(Qa(F.value)),{default:Ae(()=>[f(x).isLoading.value?(n(),r("div",os,[...he[0]||(he[0]=[t("span",{class:"text-neutral-500"},"Loading agent data...",-1)])])):(n(),O(Le,{key:1,type:"form",id:"agent-form",actions:!1,disabled:e.readonly||e.saving,onSubmit:N,onNode:Me,"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:Ae(()=>[t("div",is,[m.value?T("",!0):(n(),r("nav",ds,[Lt(ve.$slots,"nav-leading",{},void 0,!0),t("div",us,[j(f(Va),{tabs:K.value,"active-tab":f(R),"accent-active":e.inlineAccentTabs,orientation:"horizontal",onSelect:f(W)},null,8,["tabs","active-tab","accent-active","onSelect"])])])),t("div",{ref_key:"contentRef",ref:L,class:ee(["min-h-0 flex-1 overflow-y-auto",m.value?"p-5":h.value?"bg-neutral-100 dark:bg-neutral-950":"bg-neutral-100 p-5 dark:bg-neutral-950"])},[t("div",cs,[e.inlineGlobalNotice?(n(),r("div",{key:0,class:ee(["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",h.value?"mx-5 mb-4 mt-5":"mb-4"])}," Changes here are global and will affect all new messages across all threads. ",2)):T("",!0),t("div",{class:ee([h.value?"space-y-4 pb-5":"space-y-4","edit-sections-stack"])},[e.apiError?(n(),O(f(za),{key:0,variant:"error"},{default:Ae(()=>[Ge(v(e.apiError),1)]),_:1})):T("",!0),ye("identity")?(n(),O(f(pn),{key:1,id:"section-basics",title:"Basics",icon:f(Vn),flat:h.value},{default:Ae(()=>[j(Er,{form:f(x),"is-edit-mode":o.value},null,8,["form","is-edit-mode"])]),_:1},8,["icon","flat"])):T("",!0),ye("side-a")?(n(),O(f(pn),{key:2,id:"section-side-a",title:"Side A (AI)",icon:f(cn),flat:h.value},{default:Ae(()=>[j(ra,{form:f(x),side:"a"},null,8,["form"])]),_:1},8,["icon","flat"])):T("",!0),ye("side-b")?(n(),O(f(pn),{key:3,id:"section-side-b",title:f(x).agentType.value==="ai_human"?"Side B (Human)":"Side B (AI)",icon:f(x).agentType.value==="ai_human"?f(na):f(cn),flat:h.value},{default:Ae(()=>[j(ra,{form:f(x),side:"b"},null,8,["form"])]),_:1},8,["title","icon","flat"])):T("",!0),ye("variables")?(n(),O(f(pn),{key:4,id:"section-variables",title:"Variables",icon:f(aa),flat:h.value},{default:Ae(()=>[j(Lr,{form:f(x),readonly:e.readonly},null,8,["form","readonly"])]),_:1},8,["icon","flat"])):T("",!0)],2)])],2)]),m.value?T("",!0):(n(),O(Yr,{key:0,"form-id":"agent-form","form-node":f(x).formNode.value,readonly:e.readonly,inline:e.inline,saving:e.saving,dirty:G.value,"save-succeeded":w.value,"save-label":J.value,"save-disabled":Q.value,"cancel-label":e.readonly?"Close":"Cancel",onCancel:de,onDiscard:oe},null,8,["form-node","readonly","inline","saving","dirty","save-succeeded","save-label","save-disabled","cancel-label"]))]),_:3},8,["disabled"]))]),_:3},16))]),_:3},16)}}}),ps=st(fs,[["__scopeId","data-v-e47eeb63"]]);function Ha(){const e=He("/api/agents"),{data:i,error:a,isFetching:s,isFinished:l,execute:o}=Vt(e,{immediate:!0}).get().json();return{agents:I(()=>i.value?.agents||[]),error:a,isFetching:s,isFinished:l,refetch:o}}function Jt(e,i,...a){}function Yn(e){return!!e&&typeof e=="object"}function wn(e){return typeof e=="string"?e:null}function vs(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function ms(e){if(Yn(e)&&!(typeof e.name!="string"||typeof e.title!="string"||typeof e.type!="string"))return{name:e.name,title:e.title,type:e.type,description:wn(e.description)??void 0,icon:wn(e.icon)??void 0}}function gs(e){return!Yn(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:wn(e.user_id),tags:Array.isArray(e.tags)?e.tags.filter(i=>typeof i=="string"):null,parent:wn(e.parent),terminated:vs(e.terminated),created_at:e.created_at,agent:ms(e.agent)}}function hs(e){if(!Yn(e))return null;if(e.type==="thread_deleted")return typeof e.threadId=="string"?{type:e.type,threadId:e.threadId}:null;if(e.type==="thread_created"||e.type==="thread_updated"){const i=gs(e.thread);return i?{type:e.type,thread:i}:null}return null}function xs(e){const{autoConnect:i=!0,onEvent:a}=e||{},s=b(null),l=b(!1),o=b(null);let m=0,h=null,M=null,F=!0,k=null;const x=3e4,L=3e4,V=()=>{h&&(clearTimeout(h),h=null),M&&(clearInterval(M),M=null)},R=()=>{M&&clearInterval(M),M=setInterval(()=>{s.value&&s.value.readyState===WebSocket.OPEN&&s.value.send("ping")},L)},W=()=>{if(!F)return;const E=Math.min(1e3*Math.pow(2,m),x);m++,Jt(),h=setTimeout(()=>{F&&K()},E)},K=()=>{s.value&&(k=null,s.value.close());const E=window.location.protocol==="https:"?"wss:":"ws:",B=window.location.host,re=Na(`${E}//${B}${He("/api/events")}`);try{const J=new WebSocket(re);s.value=J,k=J,J.onopen=()=>{k===J&&(l.value=!0,o.value=null,m=0,R(),Jt("AgentBuilderEvents","WebSocket connected"))},J.onmessage=Q=>{if(k===J)try{if(typeof Q.data=="string"&&Q.data==="pong")return;const H=hs(JSON.parse(Q.data));H&&a&&a(H)}catch{o.value="Failed to parse event update"}},J.onerror=Q=>{k===J&&(o.value="WebSocket connection error")},J.onclose=()=>{k===J&&(l.value=!1,V(),Jt("AgentBuilderEvents","WebSocket disconnected"),W())}}catch(J){o.value=J instanceof Error?J.message:"Failed to create WebSocket",W()}},G=()=>{F=!0,m=0,K()},w=()=>{F=!1,V(),k=null,s.value&&(s.value.close(),s.value=null),l.value=!1,m=0};return i&&G(),Ht(()=>{w()}),{wsConnected:l,wsError:o,connect:G,disconnect:w}}const bs={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"},ks={key:1,class:"inline-block w-2 h-2 rounded-full bg-neutral-400 dark:bg-neutral-600"},_s={key:0},ws={key:1},Ua=Ue({__name:"StatusDot",props:{connected:{type:Boolean},error:{type:Boolean}},setup(e){const i=b(!1),a=b(null);return(s,l)=>(n(),r("div",bs,[t("span",{class:"p-0.5 cursor-default outline-none",tabindex:"-1",onMouseenter:l[0]||(l[0]=o=>i.value=!0),onMouseleave:l[1]||(l[1]=o=>i.value=!1)},[e.connected?(n(),r("span",ys)):(n(),r("span",ks))],32),j(on,{"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:Ae(()=>[i.value?(n(),r("div",{key:0,ref_key:"popoverRef",ref:a,class:ee(["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?(n(),r("span",_s,"Live - Connected")):(n(),r("span",ws,"Offline"))],2)):T("",!0)]),_:1})]))}}),$s={class:"relative min-w-0"},Cs={class:"truncate flex-1 text-left"},Ss={key:0},Ts=["onClick"],Is={class:"border-t border-neutral-200 dark:border-neutral-700"},As={class:"flex items-center justify-between"},Es={class:"space-y-4 date-filter-inputs"},Ls=Ue({__name:"DateFilterDropdown",props:{startDate:{},endDate:{}},emits:["update:startDate","update:endDate"],setup(e,{emit:i}){const a=e,s=i,l=b(!1),o=b(!1),m=b(null),h=b(null),M=b(""),F=b(""),k=[{label:"All time",value:"all",getRange:()=>({startDate:null,endDate:null})},{label:"Today",value:"today",getRange:()=>{const Q=new Date,H=new Date(Q.getFullYear(),Q.getMonth(),Q.getDate());return{startDate:Math.floor(H.getTime()/1e3),endDate:null}}},{label:"Last 3 days",value:"3days",getRange:()=>{const Q=new Date,H=new Date(Q.getFullYear(),Q.getMonth(),Q.getDate()-2);return{startDate:Math.floor(H.getTime()/1e3),endDate:null}}},{label:"Last 7 days",value:"7days",getRange:()=>{const Q=new Date,H=new Date(Q.getFullYear(),Q.getMonth(),Q.getDate()-6);return{startDate:Math.floor(H.getTime()/1e3),endDate:null}}},{label:"Last 30 days",value:"30days",getRange:()=>{const Q=new Date,H=new Date(Q.getFullYear(),Q.getMonth(),Q.getDate()-29);return{startDate:Math.floor(H.getTime()/1e3),endDate:null}}}],x=I(()=>{if(!a.startDate&&!a.endDate)return"all";for(const Q of k){const H=Q.getRange();if(H.startDate===a.startDate&&H.endDate===a.endDate)return Q.value}return"custom"}),L=I(()=>{if(!a.startDate&&!a.endDate)return"All time";const Q=k.find(me=>me.value===x.value);if(Q&&x.value!=="custom")return Q.label;const H=me=>new Date(me*1e3).toLocaleDateString("en-US",{month:"short",day:"numeric"});return a.startDate&&a.endDate?`${H(a.startDate)} - ${H(a.endDate)}`:a.startDate?`From ${H(a.startDate)}`:a.endDate?`Until ${H(a.endDate)}`:"Custom"}),V=I(()=>a.startDate!==null||a.endDate!==null);function R(){if(!m.value||!h.value)return;const Q=m.value.getBoundingClientRect();h.value.style.position="fixed",h.value.style.top=`${Q.bottom+8}px`,h.value.style.left=`${Q.left}px`;const H=o.value?280:180;h.value.style.minWidth=`${Q.width}px`,h.value.style.maxWidth=`${Math.max(Q.width,H)}px`,h.value.style.width="auto",h.value.style.margin="0"}function W(){l.value?K():(l.value=!0,Be(()=>{if(h.value&&(h.value.setAttribute("popover","auto"),h.value.addEventListener("toggle",G),"showPopover"in h.value))try{h.value.showPopover()}catch{}R()}))}function K(){if(h.value){if("hidePopover"in h.value)try{h.value.hidePopover()}catch{}h.value.removeEventListener("toggle",G)}l.value=!1,o.value=!1}function G(Q){Q.target===h.value&&(l.value=Q.newState==="open",l.value&&R())}function w(Q){const H=Q.getRange();s("update:startDate",H.startDate),s("update:endDate",H.endDate),K()}function E(){const Q=M.value?Math.floor(new Date(M.value).getTime()/1e3):null,H=F.value?Math.floor(new Date(F.value+"T23:59:59").getTime()/1e3):null;s("update:startDate",Q),s("update:endDate",H),K()}function B(Q){Q.stopPropagation(),s("update:startDate",null),s("update:endDate",null)}const re=Q=>{const H=Q.target;h.value&&!h.value.contains(H)&&m.value&&!m.value.contains(H)&&K()},J=Q=>{Q.key==="Escape"&&l.value&&(K(),m.value?.focus())};return Nt(()=>{document.addEventListener("click",re),document.addEventListener("keydown",J),window.addEventListener("resize",R),window.addEventListener("scroll",R,!0)}),Ht(()=>{document.removeEventListener("click",re),document.removeEventListener("keydown",J),window.removeEventListener("resize",R),window.removeEventListener("scroll",R,!0)}),be(o,Q=>{Q&&(a.startDate&&(M.value=new Date(a.startDate*1e3).toISOString().split("T")[0]),a.endDate?F.value=new Date(a.endDate*1e3).toISOString().split("T")[0]:F.value=new Date().toISOString().split("T")[0]),Be(R)}),(Q,H)=>{const me=qt("FormKit");return n(),r("div",$s,[t("button",{ref_key:"triggerRef",ref:m,type:"button",onClick:W,class:ee(["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",[V.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"]])},[j(f(Xa),{size:14,class:"shrink-0 text-zinc-400"}),t("span",Cs,v(L.value),1),V.value?(n(),O(f(Et),{key:0,size:14,class:"shrink-0 text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-200",onClick:B})):(n(),O(f(wt),{key:1,size:14,class:ee(["shrink-0 text-zinc-400",l.value?"rotate-180":""])},null,8,["class"]))],2),l.value?(n(),r("div",{key:0,ref_key:"popoverRef",ref:h,class:"dropdown-popover z-[9999]"},[j(f(ja),{"max-height":o.value?void 0:"max-h-48",shadow:!1},{default:Ae(()=>[o.value?(n(),r("div",{key:1,class:"p-2.5 space-y-2.5",onClick:H[4]||(H[4]=Ne(()=>{},["stop"]))},[t("div",As,[H[6]||(H[6]=t("span",{class:"text-xs font-medium"},"Custom range",-1)),t("button",{type:"button",onClick:H[1]||(H[1]=Ne(Z=>o.value=!1,["stop"])),class:"text-[10px] text-neutral-500 hover:text-black dark:hover:text-white"}," ← Back ")]),t("div",Es,[j(me,{modelValue:M.value,"onUpdate:modelValue":H[2]||(H[2]=Z=>M.value=Z),type:"datepicker",label:"From","picker-only":"",popover:"",format:"MMM D, YYYY","value-format":"YYYY-MM-DD",sequence:["day"]},null,8,["modelValue"]),j(me,{modelValue:F.value,"onUpdate:modelValue":H[3]||(H[3]=Z=>F.value=Z),type:"datepicker",label:"To","picker-only":"",popover:"",format:"MMM D, YYYY","value-format":"YYYY-MM-DD",sequence:["day"]},null,8,["modelValue"])]),t("button",{type:"button",onClick:E,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 ")])):(n(),r("div",Ss,[(n(),r(_e,null,Pe(k,Z=>t("button",{key:Z.value,type:"button",onClick:Me=>w(Z),class:ee(["w-full px-2.5 py-1.5 text-left text-xs agents-surface-hover transition-colors flex items-center gap-2",x.value===Z.value?"agents-surface-selected agents-text-selected":""])},[t("span",{class:ee(["w-1.5 h-1.5 rounded-full border border-accent-500",x.value===Z.value?"bg-accent-500":""])},null,2),Ge(" "+v(Z.label),1)],10,Ts)),64)),t("div",Is,[t("button",{type:"button",onClick:H[0]||(H[0]=Ne(Z=>o.value=!0,["stop"])),class:ee(["w-full px-2.5 py-1.5 text-left text-xs agents-surface-hover transition-colors flex items-center gap-2",x.value==="custom"?"agents-surface-selected agents-text-selected":""])},[t("span",{class:ee(["w-1.5 h-1.5 rounded-full border border-accent-500",x.value==="custom"?"bg-accent-500":""])},null,2),H[5]||(H[5]=Ge(" Custom range... ",-1))],2)])]))]),_:1},8,["max-height"])],512)):T("",!0)])}}}),Ms=st(Ls,[["__scopeId","data-v-753faf78"]]);function Rs(e){const a=Date.now()*1e3-e,s=Math.floor(a/1e6);if(s<60)return s===1?"1 second ago":`${s} seconds ago`;const l=Math.floor(s/60);if(l<60)return l===1?"1 minute ago":`${l} minutes ago`;const o=Math.floor(l/60);if(o<24)return o===1?"1 hour ago":`${o} hours ago`;const m=Math.floor(o/24);if(m<30)return m===1?"1 day ago":`${m} days ago`;const h=Math.floor(m/30);if(h<12)return h===1?"1 month ago":`${h} months ago`;const M=Math.floor(h/12);return M===1?"1 year ago":`${M} years ago`}function Ds(e){const i=b("");let a=null;const s=()=>typeof e=="function"?e():typeof e=="number"?e:e.value,l=()=>{const o=s();i.value=Rs(o);const h=Date.now()*1e3-o,M=Math.floor(h/1e6);a!==null&&(clearInterval(a),a=null),M<60?a=setInterval(l,1e3):M<3600?a=setInterval(l,6e4):M<86400&&(a=setInterval(l,6e5))};return l(),Ht(()=>{a!==null&&clearInterval(a)}),i}const $n=Ue({__name:"TimeAgo",props:{timestamp:{}},setup(e){const i=e,a=Ds(()=>i.timestamp);return(s,l)=>(n(),r("span",null,v(f(a)),1))}}),qn="name:",la=["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"],gn=(e,i)=>i.created_at-e.created_at,hn=(e,i)=>`${e}::${i}`,Wa=e=>{const i=e.tags.find(s=>s.startsWith(qn));if(!i)return null;const a=i.slice(qn.length).trim();return a.length>0?a:null},St=e=>e.tags.filter(i=>!i.startsWith(qn)),Fs=e=>Wa(e)||e.agent.title||e.agent.name,Ps=e=>e.id.startsWith("__draft_")?"--------":e.id.slice(0,8),Mn=e=>Wa(e)?e.agent.title||e.agent.name:null,oa=e=>Array.from({length:Math.min(Math.max(e,0),6)},(i,a)=>12+a*8),ia=e=>la[e%la.length],da=e=>({left:`${e}px`}),zs=(e,i)=>{if(e.length===0)return[];const a=new Map(e.map(k=>[k.id,k])),s=new Map,l=[];for(const k of e){const x=k.parent;if(x&&a.has(x)){const L=s.get(x)??[];L.push(k),s.set(x,L);continue}l.push(k)}l.sort(gn);for(const k of s.values())k.sort(gn);const o=[],m=new Set,h=k=>{if(m.has(k.id))return;m.add(k.id);const x=s.get(k.id);if(x)for(const L of x)h(L)},M=(k,x,L)=>{if(m.has(k.id))return;m.add(k.id),o.push({kind:"thread",thread:k,depth:x,isNested:x>0,clusterId:L});const V=s.get(k.id);if(!V)return;const R=new Map;for(const W of V){const K=W.agent_id||W.agent?.name||W.id,G=R.get(K);G?G.push(W):R.set(K,[W])}for(const[W,K]of R.entries()){if(K.length>1){const G=hn(k.id,W),w=i(G);if(o.push({kind:"directory",key:G,depth:x+1,label:K[0]?.agent?.title||K[0]?.agent?.name||W,count:K.length,open:w,clusterId:L}),!w){for(const E of K)h(E);continue}for(const E of K)M(E,x+2,L);continue}M(K[0],x+1,L)}};for(const k of l)M(k,0,k.id);const F=e.filter(k=>!m.has(k.id)).sort(gn);for(const k of F)M(k,k.parent?1:0,k.parent??k.id);return o},Ns=["id","onClick"],js={key:1,class:"space-y-0.5"},Bs={key:0,class:"flex flex-wrap gap-1 min-w-0"},Os={key:2,class:"flex items-center gap-1"},Vs={key:0,class:"text-[10px] text-neutral-400"},qs=["onClick"],Hs={class:"flex items-center gap-2"},Us=Ue({__name:"ThreadListRows",props:{rows:{},selectedThreadId:{},clusterHasNestedRows:{},isThreadFlashing:{type:Function},isDirectoryFlashing:{type:Function},hasRowTopGap:{type:Function},hasRowBottomBorder:{type:Function}},emits:["selectThread","toggleDirectory"],setup(e,{emit:i}){const a=i;return(s,l)=>(n(!0),r(_e,null,Pe(e.rows,(o,m)=>(n(),r(_e,{key:o.kind==="thread"?o.thread.id:o.key},[o.kind==="thread"?(n(),r("button",{key:0,id:`thread-${o.thread.id}`,class:ee(["w-full text-left cursor-pointer rounded-lg px-3 transition-colors relative",[o.isNested?e.selectedThreadId===o.thread.id?"py-1.5":"py-1.5 bg-neutral-50/40 dark:bg-neutral-900/20":"py-2",e.hasRowTopGap(m)?"mt-1":"",e.hasRowBottomBorder(m)&&e.clusterHasNestedRows[o.clusterId]?"mb-1":"",o.thread.terminated?"opacity-50 text-neutral-500 dark:text-neutral-500":"",e.selectedThreadId===o.thread.id?"agents-surface-selected":"agents-surface-hover"]]),style:pt(o.depth>0?{paddingLeft:`${12+Math.min(o.depth,6)*8}px`}:void 0),onClick:h=>a("selectThread",o.thread.id)},[(n(!0),r(_e,null,Pe(f(oa)(o.depth),(h,M)=>(n(),r("span",{key:`thread-line-${M}`,class:ee(["pointer-events-none absolute inset-y-1 w-px rounded-full",f(ia)(M)]),style:pt(f(da)(h)),"aria-hidden":"true"},null,6))),128)),t("div",{class:ee(["flex items-center gap-2",!o.isNested||f(St)(o.thread).length>0||f(Mn)(o.thread)?"mb-0.5":""])},[o.thread.terminated?(n(),O(f(Ia),{key:0,size:12,class:"shrink-0 text-neutral-500 dark:text-neutral-400"})):T("",!0),t("span",{class:ee(["font-medium truncate flex-1 min-w-0",[e.selectedThreadId===o.thread.id?"agents-text-selected":"",e.isThreadFlashing(o.thread.id)?"thread-list-green-flash":""]])},v(f(Fs)(o.thread)),3),t("span",{class:ee(["flex-shrink-0 text-[10px]",e.selectedThreadId===o.thread.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},[j($n,{timestamp:o.thread.created_at*1e6},null,8,["timestamp"])],2)],2),f(Mn)(o.thread)?(n(),r("div",{key:0,class:ee(["mb-0.5 truncate text-[10px]",e.selectedThreadId===o.thread.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},v(f(Mn)(o.thread)),3)):T("",!0),o.isNested?f(St)(o.thread).length>0?(n(),r("div",Os,[(n(!0),r(_e,null,Pe(f(St)(o.thread).slice(0,3),h=>(n(),r("span",{key:h,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"},v(h),1))),128)),f(St)(o.thread).length>3?(n(),r("span",Vs," +"+v(f(St)(o.thread).length-3),1)):T("",!0)])):T("",!0):(n(),r("div",js,[t("span",{class:ee(["block max-w-[80px] truncate font-mono text-[10px]",e.selectedThreadId===o.thread.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},v(f(Ps)(o.thread)),3),f(St)(o.thread).length>0?(n(),r("div",Bs,[(n(!0),r(_e,null,Pe(f(St)(o.thread).slice(0,3),h=>(n(),r("span",{key:h,class:ee(["inline-block px-1.5 py-0.5 rounded text-[10px] truncate max-w-[60px]",e.selectedThreadId===o.thread.id?"agents-surface-selected-strong agents-text-selected":"bg-neutral-200 dark:bg-neutral-800 text-neutral-600 dark:text-neutral-400"])},v(h),3))),128)),f(St)(o.thread).length>3?(n(),r("span",{key:0,class:ee(["text-[10px]",e.selectedThreadId===o.thread.id?"agents-text-selected-muted":"text-neutral-400"])}," +"+v(f(St)(o.thread).length-3),3)):T("",!0)])):T("",!0)]))],14,Ns)):(n(),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:pt({paddingLeft:`${12+Math.min(o.depth,6)*8}px`}),onClick:h=>a("toggleDirectory",o.key)},[(n(!0),r(_e,null,Pe(f(oa)(o.depth),(h,M)=>(n(),r("span",{key:`directory-line-${M}`,class:ee(["pointer-events-none absolute inset-y-1 w-px rounded-full",f(ia)(M)]),style:pt(f(da)(h)),"aria-hidden":"true"},null,6))),128)),t("div",Hs,[j(f(Aa),{size:13,class:"text-neutral-500 dark:text-neutral-400 shrink-0"}),t("span",{class:ee(["truncate flex-1 min-w-0 text-[11px] font-medium text-neutral-600 dark:text-neutral-300",e.isDirectoryFlashing(o.key)?"thread-list-green-flash":""])},v(o.label)+" ("+v(o.count)+") ",3),o.open?(n(),O(f(wt),{key:0,size:14,class:"text-neutral-500 dark:text-neutral-400 shrink-0"})):(n(),O(f(Pt),{key:1,size:14,class:"text-neutral-500 dark:text-neutral-400 shrink-0"}))])],12,qs))],64))),128))}}),Ws=st(Us,[["__scopeId","data-v-1e5bebfe"]]),Ks={class:"flex flex-col flex-1 min-h-0 overflow-visible"},Js={class:"px-3 border-b border-neutral-300 dark:border-neutral-700 h-12 flex items-center shrink-0"},Gs={class:"flex items-center justify-between w-full"},Ys={key:0,class:"text-xs font-mono text-neutral-500 dark:text-neutral-400"},Qs={class:"flex items-center gap-1"},Xs=["title","aria-label","aria-pressed"],Zs={key:0,class:"px-3 py-2 border-b border-neutral-200 dark:border-neutral-800 shrink-0 space-y-2"},el={class:"relative"},tl={class:"flex items-center gap-2 w-full"},nl={key:0,class:"flex-1 min-w-0"},al={key:0,class:"p-4 flex justify-center"},rl={key:1,class:"p-4 text-red-600 dark:text-red-400"},sl={key:2,class:"text-neutral-500 dark:text-neutral-400 text-center py-12"},ll={key:1,class:"text-base"},ol={key:3,class:"px-2 py-2"},il={key:0,class:"p-3 flex justify-center"},dl={key:1,class:"p-3 text-center text-[10px] text-neutral-400 dark:text-neutral-500"},ul=50,ua=1800,Jh=Ue({__name:"ThreadListPane",props:{selectedThreadId:{},optimisticThread:{},agentId:{},showCollapseButton:{type:Boolean}},emits:["selectThread","collapse","createThread","threadsLoaded"],setup(e,{expose:i,emit:a}){const s=e,l=a,o=b(""),m=b(null),h=b(!1),M=b(null),F=b(null),k=b(null),x=b(!1),L=I(()=>s.agentId!=null);be(()=>s.agentId,c=>{c!=null&&(F.value=c),x.value=!1},{immediate:!0});const V=b(null),{agents:R,isFetching:W}=Ha(),K=I(()=>R.value.map(c=>({value:c.name,label:c.title||c.name}))),G=b(0),w=b([]),E=b(!1),B=b(!1),re=tr(c=>{m.value=c||null},300);be(o,c=>{re(c)});const J=I(()=>{let c=0;return m.value&&c++,F.value&&!L.value&&c++,(k.value||V.value)&&c++,c});function Q(){o.value="",m.value=null,L.value||(F.value=null),k.value=null,V.value=null}async function H(){h.value=!0,await Be(),M.value?.focus(),M.value?.select()}function me(){Q(),h.value=!1}function Z(){h.value?me():H()}const{threads:Me,hasMore:De,isFetching:se,isFinished:Fe,error:N,refetch:de}=ls({limit:ul,offset:G,search:m,agentId:F,startDate:k,endDate:V}),oe=b([]),ye=b(new Set);be([m,F,k,V],()=>{G.value=0,w.value=[],oe.value=[],ye.value.clear(),E.value=!1,B.value=!1}),be(Me,c=>{if(G.value===0)w.value=[...c];else{const S=new Set(w.value.map(X=>X.id)),q=c.filter(X=>!S.has(X.id));w.value=[...w.value,...q],B.value=!0}E.value=!1});const ve=b({}),he=b({}),Le=b({}),ae=new Set,Y=c=>ve.value[c]??!1,ce=c=>{ve.value[c]=!Y(c)},ne=c=>{he.value[c]=!0;const S=setTimeout(()=>{delete he.value[c],ae.delete(S)},ua);ae.add(S)},le=c=>{Le.value[c]=!0;const S=setTimeout(()=>{delete Le.value[c],ae.delete(S)},ua);ae.add(S)};Ht(()=>{ae.forEach(c=>clearTimeout(c)),ae.clear()});const Ie=c=>he.value[c]===!0,Re=c=>Le.value[c]===!0,We=c=>{if(F.value&&c.agent_id!==F.value&&!c.parent||k.value&&c.created_at<k.value||V.value&&c.created_at>V.value)return!1;if(m.value){const S=m.value.toLowerCase(),q=c.id.toLowerCase().includes(S),X=c.tags.some(Ee=>Ee.toLowerCase().includes(S));if(!q&&!X)return!1}return!0},P=I(()=>{const c=w.value.filter(Ee=>!ye.value.has(Ee.id)),S=new Set(c.map(Ee=>Ee.id)),X=[...oe.value.filter(Ee=>!S.has(Ee.id)&&!ye.value.has(Ee.id)),...c];return s.optimisticThread&&!X.some(Ee=>Ee.id===s.optimisticThread?.id)&&X.unshift(s.optimisticThread),X.sort(gn)}),xe=I(()=>P.value.filter(c=>!c.parent).length),fe=I(()=>zs(P.value,Y)),we=c=>{const S=fe.value[c],q=fe.value[c+1];return S?q?S.clusterId!==q.clusterId:!0:!1},Te=c=>{const S=fe.value[c],q=fe.value[c-1];if(!S||!q||S.clusterId!==q.clusterId)return!1;const X=S.kind==="directory"||S.kind==="thread"&&S.isNested,Ee=q.kind==="thread"&&!q.isNested;return X&&Ee},pe=I(()=>{const c={};for(const S of fe.value)if(!c[S.clusterId]){if(S.kind==="directory"){c[S.clusterId]=!0;continue}if(S.kind==="thread"&&S.isNested){c[S.clusterId]=!0;continue}c[S.clusterId]=!1}return c}),ge=b(null);function ie(){E.value||se.value||!De.value||(E.value=!0,G.value=w.value.length)}const{arrivedState:Ce}=Za(ge,{offset:{bottom:100}});be(()=>Ce.bottom,c=>{c&&De.value&&!se.value&&!E.value&&ie()});const je=c=>{const S=R.value.find(X=>X.name===c.agent_name),q=c.agent;return{id:c.id,agent_id:c.agent_name,user_id:c.user_id,tags:c.tags||[],parent:c.parent??null,terminated:c.terminated??null,created_at:c.created_at,agent:{name:c.agent_name,title:q?.title||S?.title,type:q?.type||S?.type||"ai_human"}}},Oe=async c=>{if(c.type==="thread_created"){const S=je(c.thread);if(!We(S))return;if(S.parent)if(P.value.filter(X=>X.parent===S.parent&&X.agent_id===S.agent_id).length+1>1){const X=hn(S.parent,S.agent_id);le(X),Y(X)&&ne(S.id)}else ne(S.id);oe.value.unshift(S)}else if(c.type==="thread_updated"){const S=je(c.thread),q=P.value.find(Ke=>Ke.id===S.id);if(!We(S)){oe.value=oe.value.filter(Ke=>Ke.id!==S.id),w.value=w.value.filter(Ke=>Ke.id!==S.id);return}ye.value.delete(S.id);const X=oe.value.findIndex(Ke=>Ke.id===S.id);X>=0&&(oe.value[X]=S);const Ee=w.value.findIndex(Ke=>Ke.id===S.id);if(Ee>=0?w.value[Ee]=S:X===-1&&oe.value.unshift(S),!!S.terminated&&!q?.terminated)if(S.parent)if((P.value.filter(Je=>Je.parent===S.parent&&Je.agent_id===S.agent_id).length||1)>1){const Je=hn(S.parent,S.agent_id);le(Je),Y(Je)&&ne(S.id)}else ne(S.id);else ne(S.id)}else c.type==="thread_deleted"&&(ye.value.add(c.threadId),oe.value=oe.value.filter(S=>S.id!==c.threadId))},{wsConnected:U,wsError:z}=xs({onEvent:Oe});be(()=>G.value,c=>{c===0&&(oe.value=[])}),be(()=>[s.selectedThreadId,P.value],([c,S])=>{if(!c||S.length===0)return;const q=new Map(S.map(Ee=>[Ee.id,Ee]));let X=q.get(c);for(;X&&X.parent;){const Ee=hn(X.parent,X.agent_id);ve.value[Ee]=!0,X=q.get(X.parent)}},{immediate:!0}),be(()=>({rows:fe.value,finished:Fe.value}),({rows:c,finished:S})=>{const q=c.find(X=>X.kind==="thread");S&&!x.value&&(x.value=!0,l("threadsLoaded",q?.thread.id??null,P.value.map(X=>X.id)))},{immediate:!0}),i({refetch:de});const u=c=>{l("selectThread",c)};return(c,S)=>{const q=qt("FormKit");return n(),r("div",Ks,[t("div",Js,[t("div",Gs,[t("button",{onClick:S[0]||(S[0]=Ne(X=>l("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 Threads pane","aria-label":"Collapse Threads pane"},[j(f(er),{size:18,class:"shrink-0"}),S[8]||(S[8]=t("h2",{class:"text-base font-bold"},"Threads",-1)),!f(se)&&xe.value>0?(n(),r("span",Ys," ("+v(xe.value)+") ",1)):T("",!0),j(Ua,{connected:f(U),error:f(z)},null,8,["connected","error"])]),t("div",Qs,[t("button",{type:"button",class:ee(["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",h.value?"agents-border-selected agents-text-selected bg-white dark:bg-neutral-950":""]),title:h.value?"Hide search":"Search threads","aria-label":h.value?"Hide search":"Search threads","aria-pressed":h.value,onClick:Ne(Z,["stop"])},[j(f(Nn),{size:16})],10,Xs),t("button",{onClick:S[1]||(S[1]=X=>l("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"},[j(f(Ea),{size:16})]),e.showCollapseButton!==!1?(n(),r("button",{key:0,onClick:S[2]||(S[2]=X=>l("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"},[j(f(La),{size:17})])):T("",!0)])])]),h.value||J.value>0?(n(),r("div",Zs,[t("div",el,[j(f(Nn),{size:14,class:"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-neutral-400"}),rt(t("input",{ref_key:"threadSearchInputRef",ref:M,"onUpdate:modelValue":S[3]||(S[3]=X=>o.value=X),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),[[xn,o.value]]),o.value?(n(),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:S[4]||(S[4]=X=>{o.value="",m.value=null,H()})},[j(f(Et),{size:13})])):T("",!0)]),t("div",tl,[L.value?T("",!0):(n(),r("div",nl,[j(q,{type:"selectSearch",size:"sm","active-highlight":"",value:F.value||"",options:K.value,placeholder:"All agents","search-placeholder":"Search agents...",loading:f(W),onInput:S[5]||(S[5]=X=>F.value=X||null)},null,8,["value","options","loading"])])),j(Ms,{startDate:k.value,"onUpdate:startDate":S[6]||(S[6]=X=>k.value=X),endDate:V.value,"onUpdate:endDate":S[7]||(S[7]=X=>V.value=X),class:ee(L.value?"w-full":"flex-1 min-w-0")},null,8,["startDate","endDate","class"]),J.value>0?(n(),r("button",{key:1,onClick:Q,type:"button",class:"text-[10px] font-mono text-neutral-400 hover:text-neutral-900 dark:hover:text-neutral-100 transition-colors whitespace-nowrap"}," Clear ")):(n(),r("button",{key:2,onClick:me,type:"button",class:"text-[10px] font-mono text-neutral-400 hover:text-neutral-900 dark:hover:text-neutral-100 transition-colors whitespace-nowrap"}," Close "))])])):T("",!0),t("div",{ref_key:"scrollContainerRef",ref:ge,class:"flex-1 overflow-y-auto text-xs min-h-0"},[f(se)&&w.value.length===0?(n(),r("div",al,[j(qe)])):f(N)?(n(),r("div",rl," Error: "+v(f(N)),1)):fe.value.length===0?(n(),r("div",sl,[J.value>0?(n(),r(_e,{key:0},[S[9]||(S[9]=t("p",{class:"text-base mb-2"},"No matching threads",-1)),t("button",{onClick:Q,type:"button",class:"text-xs text-accent-600 dark:text-accent-400 hover:underline"}," Clear filters ")],64)):(n(),r("p",ll,"No threads found"))])):(n(),r("div",ol,[j(Ws,{rows:fe.value,"selected-thread-id":e.selectedThreadId,"cluster-has-nested-rows":pe.value,"is-thread-flashing":Ie,"is-directory-flashing":Re,"has-row-top-gap":Te,"has-row-bottom-border":we,onSelectThread:u,onToggleDirectory:ce},null,8,["rows","selected-thread-id","cluster-has-nested-rows"]),E.value||f(se)&&w.value.length>0?(n(),r("div",il,[j(qe)])):B.value&&!f(De)&&fe.value.length>0?(n(),r("div",dl," All "+v(xe.value)+" threads loaded ",1)):T("",!0)]))],512)])}}});function Hn(e){return!!e&&typeof e=="object"}function cl(e){if(Hn(e)&&!Array.isArray(e))return e;if(typeof e=="string")try{const i=JSON.parse(e);return Hn(i)&&!Array.isArray(i)?i:void 0}catch{return}}function fl(e){const i=b(null),a=b(!1),s=b(null);let l=null;try{l=Mr()}catch{}const o=l?.messages??b([]),m=I(()=>l?.groupedMessages?.value?l.groupedMessages.value:l?.workblocks?.value?l.workblocks.value:o.value),h=I(()=>l?.status.value==="connected"),M=b(null);l?.loading??b(!1);const F=I(()=>o.value.some(N=>N.status==="pending"));function k(N){if(!i.value?.agent)return null;const de=i.value.agent,oe=N==="assistant"?"A":"B";return oe==="A"&&de.side_a_label?de.side_a_label:oe==="B"&&de.side_b_label?de.side_b_label:null}function x(N){const de=N.path??"",oe=N.name??de.split("/").pop()??"attachment";return{id:N.id||`att-${de||oe||Math.random().toString(36).slice(2)}`,type:"file",path:de,name:oe,mimeType:N.mimeType||N.mediaType||"application/octet-stream",width:N.width,height:N.height,description:N.description}}function L(N){if(N){if(Array.isArray(N))return N.length>0?N.map(x):void 0;try{const de=JSON.parse(N);return Array.isArray(de)&&de.length>0?de.filter(Hn).map(x):void 0}catch{return}}}function V(N,de){const oe=[];N.reasoning_content&&oe.push({id:`${N.id}-reasoning`,type:"reasoning",content:N.reasoning_content,created_at:N.created_at}),N.content&&oe.push({id:`${N.id}-content`,type:"content",content:N.content,created_at:N.created_at});const ye=N.workItems.filter(Y=>Y.type==="tool_call"),ve=N.workItems.filter(Y=>Y.type==="tool_result"),he=new Map;for(const Y of ve)Y.tool_call_id&&he.set(Y.tool_call_id,Y);for(const Y of ye){const ce=Y.tool_call_id||Y.id,ne=he.get(ce);let le="pending";if(ne){const Ie=(ne.content||"").toLowerCase(),Re=Ie.includes("failed")||Ie.includes("error"),We=Ie.length<500;le=ne.status==="error"||Re&&We?"failed":"success"}oe.push({id:Y.id,type:"tool_call",content:Y.name||"",created_at:N.created_at,tool_name:Y.name,tool_call_id:ce,tool_arguments:Y.content||void 0,response:ne?.content||null,response_status:le,response_log_id:null,log_id:null})}const Le=oe.some(Y=>Y.type==="tool_call"&&Y.response_status==="pending"),ae=N.status!=="pending"&&!Le;return{type:"work",id:N.id,role:"assistant",items:oe,created_at:N.created_at,updated_at:N.updated_at??N.response_completed_at??N.created_at,request_sent_at:N.request_sent_at??N.created_at,response_completed_at:N.response_completed_at??(ae?N.updated_at??N.created_at:null),isComplete:ae,sideLabel:k("assistant"),status:N.status}}function R(N){return N==="assistant"?"assistant":"user"}function W(N){for(let de=N.length-1;de>=0;de--){const oe=(N[de].content||"").trim();if(oe.length>0)return oe}return""}function K(N){const de=new Set,oe=[];for(const ye of N){const ve=L(ye.attachments);if(ve?.length)for(const he of ve)de.has(he.path)||(de.add(he.path),oe.push(he))}return oe.length>0?oe:void 0}function G(N){if(!N)return!1;if(N.tool_status==="error"||N.status==="failed")return!0;const de=(N.content||"").toLowerCase();return de?de.includes("failed to execute tool")||de.includes("has reported a failure")||de.includes("execution stopped before completion"):!1}function w(N){const de=N.messages||[],oe=de[de.length-1],ye=oe?R(oe.role):"assistant",ve=oe?.log_id??null,he=(N.subagent_status||"").toLowerCase(),Le=G(oe)||he.includes("error")||he.includes("failed"),ae=W(de),Y=K(de),ce=de.filter(ne=>{const le=L(ne.attachments);return!!ne.content||!!ne.status||!!(le&&le.length>0)}).map(ne=>({id:ne.id,role:ne.role,content:ne.content||"",created_at:ne.created_at,silent:ne.silent,attachments:L(ne.attachments)}));return{type:"subagent",id:N.id,role:ye,created_at:N.created_at,updated_at:N.updated_at,subagentId:N.subagent_id,subagentName:N.subagent_name??null,subagentTitle:N.subagent_title??null,subagentThreadName:N.subagent_thread_name??null,subagentStatus:N.subagent_status??null,subagentHasError:Le,subagentResumable:N.subagent_resumable??null,subagentBlocking:N.subagent_blocking??null,messages:ce,messageCount:de.length,latestContent:ae,attachments:Y,log_id:ve,sideLabel:k(ye),silent:de.length>0&&de.every(ne=>!!ne.silent)}}function E(N){const de=(N.subagents||[]).map(ye=>w(ye)),oe=de.reduce((ye,ve)=>ye?ve.updated_at>ye.updated_at?ve:ye:ve,null);return{type:"subagent_group",id:N.id,role:oe?.role??"assistant",created_at:N.created_at,updated_at:N.updated_at,subagents:de,count:de.length,log_id:oe?.log_id??null,sideLabel:oe?.sideLabel??k("assistant"),silent:de.every(ye=>!!ye.silent)}}function B(N){return{type:"status",id:N.id,role:"system",content:N.content,created_at:N.created_at,statusKind:N.status_kind??null,subagentId:N.subagent_id??null}}const re=I(()=>{const N=[],oe=m.value.filter(ve=>(ve.depth??0)===0);let ye=[];for(let ve=0;ve<oe.length;ve++){const he=oe[ve];if(N[N.length-1]?.role,"type"in he&&he.type==="workblock"){const le=V(he);N.push(le),he.attachments&&he.attachments.length>0&&ye.push(...he.attachments.map(x));continue}if("type"in he&&he.type==="subagent_block"){ye=[],N.push(w(he));continue}if("type"in he&&he.type==="subagent_group_block"){ye=[],N.push(E(he));continue}if("type"in he&&he.type==="status"){ye=[],N.push(B(he));continue}const ae=he,Y=ae.role;if(ae.role==="tool")continue;const ce=L(ae.attachments);let ne;if((ye.length>0||ce)&&(ne=[...ye,...ce||[]],ye=[]),ae.content||Y==="system"||ae.status==="pending"||ne?.length){const le={type:"text",id:ae.id,role:Y,content:ae.content||"",attachments:ne?.length?ne:void 0,created_at:ae.created_at,log_id:ae.log_id||null,sideLabel:k(Y),isOptimistic:ae.isOptimistic,status:ae.status,silent:ae.silent,metadata:cl(ae.metadata)};N.push(le)}}return N});async function J(){if(!e.value){i.value=null;return}try{const N=await fetch(He(`/api/threads/${e.value}`));N.ok&&(i.value=await N.json())}catch{i.value=null}}async function Q(N){if(e.value){if(l?.deleteMessage){await l.deleteMessage(N);return}try{if(!(await fetch(He(`/api/threads/${e.value}/messages/${N}`),{method:"DELETE"})).ok)throw new Error("Failed to delete message")}catch(de){throw de}}}async function H(N,de){if(e.value)try{if(!(await fetch(He(`/api/threads/${e.value}/messages/${N}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:de})})).ok)throw new Error("Failed to update message")}catch(oe){throw oe}}be(e,async N=>{N?(a.value=!0,await J(),a.value=!1):i.value=null},{immediate:!0});const me=l?.sendMessage,Z=l?.stopExecution,Me=l?.attachments??b([]),De=l?.addAttachment??(()=>{}),se=l?.removeAttachment??(()=>{}),Fe=l?.clearAttachments??(()=>{});return{messages:re,threadInfo:i,isFetching:a,error:s,wsConnected:h,wsError:M,isExecuting:F,sendMessage:me,stopThread:Z,attachments:Me,addAttachment:De,removeAttachment:se,clearAttachments:Fe,deleteMessageById:Q,updateMessageContent:H}}const Rn="__shiki_highlighter__";let vn=null;async function pl(){return typeof window<"u"&&window[Rn]?window[Rn]:vn||(vn=Promise.all([at(()=>import("./syntax.js").then(e=>e.d),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.e),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.f),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.g),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.i),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.k),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.l),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.m),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.n),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.s),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.o),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.p),__vite__mapDeps([0,1])),at(()=>import("./vue.js").then(e=>e.bb),__vite__mapDeps([2,3,1,0])),at(()=>import("./syntax.js").then(e=>e.y),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.q),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.r),__vite__mapDeps([0,1]))]).then(async([{createHighlighterCore:e},{createJavaScriptRegexEngine:i},a,s,l,o,m,h,M,F,k,x,L,V,R,W])=>{const K=await e({themes:[R.default,W.default],langs:[a.default,s.default,l.default,o.default,m.default,h.default,M.default,F.default,k.default,x.default,L.default,V.default],engine:i()});return typeof window<"u"&&(window[Rn]=K),K}),vn)}const vl={class:"code-block"},ml={key:0,class:"text-xs text-neutral-500 p-2"},gl=["innerHTML"],Ft=Ue({__name:"CodeBlock",props:{code:{},language:{}},setup(e){const i=e,a=b(""),s=b(!0),l={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"},o=new Set(["bash","css","html","javascript","jsx","json","markdown","shellscript","tsx","typescript","vue","yaml"]),m=k=>{const x=k?.trim().toLowerCase()||"text";return l[x]??x},h=k=>k.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),M=k=>`<pre class="shiki shiki-text"><code>${h(k)}</code></pre>`,F=async()=>{const k=i.code??"";if(!k){a.value='<pre class="shiki"><code></code></pre>',s.value=!1;return}try{const x=await pl(),L=m(i.language);o.has(L)?a.value=x.codeToHtml(k,{lang:L,themes:{light:"github-light",dark:"github-dark"}}):a.value=M(k)}catch{a.value=M(k)}finally{s.value=!1}};return Nt(()=>{F()}),be(()=>i.code,()=>{F()}),be(()=>i.language,()=>{F()}),(k,x)=>(n(),r("div",vl,[s.value?(n(),r("div",ml,"Loading...")):(n(),r("div",{key:1,innerHTML:a.value,class:"code-content"},null,8,gl))]))}}),hl={key:0,class:"absolute inset-0 flex items-center justify-center bg-neutral-100 dark:bg-neutral-800"},xl={key:1,class:"absolute inset-0 flex items-center justify-center bg-neutral-100 dark:bg-neutral-800 text-neutral-400"},bl=["src","alt"],yl={key:2,class:"pointer-events-none absolute inset-0 flex items-center justify-center bg-black/0 group-hover:bg-black/35 transition-colors"},kl={class:"text-xs text-neutral-600 dark:text-neutral-300 truncate max-w-[100px]"},Dn=Ue({__name:"FileAttachment",props:{attachment:{},threadId:{},showRemove:{type:Boolean}},emits:["remove"],setup(e,{emit:i}){const a=nr(),s=ar(),l=e,o=i,m=b(!0),h=b(!1),M=I(()=>l.attachment.mimeType.startsWith("image/")),F=I(()=>!!l.attachment.thumbnailBase64),k=I(()=>{if(!l.threadId||!l.attachment.path)return"";const K=l.attachment.path.startsWith("/")?l.attachment.path.slice(1):l.attachment.path;return He(`/api/threads/${l.threadId}/fs/${K}`)}),x=I(()=>M.value?l.attachment.thumbnailBase64?`data:image/webp;base64,${l.attachment.thumbnailBase64}`:k.value:"");function L(){m.value=!1,h.value=!1}function V(){m.value=!1,h.value=!0}function R(){o("remove",l.attachment.id)}function W(){if(!l.attachment.path){k.value&&window.open(k.value,"_blank");return}a.replace({query:{...s.query,inspector:"files",filePath:l.attachment.path},hash:s.hash})}return(K,G)=>(n(),r("div",{class:ee(["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]":M.value,"px-2.5 py-1.5":!M.value,"cursor-pointer":M.value&&k.value}]),onClick:G[0]||(G[0]=w=>M.value&&k.value?W():void 0)},[M.value?(n(),r(_e,{key:0},[m.value&&!h.value&&!F.value?(n(),r("div",hl,[...G[1]||(G[1]=[t("div",{class:"w-4 h-4 border-2 border-neutral-300 border-t-neutral-600 rounded-full animate-spin"},null,-1)])])):T("",!0),h.value&&!F.value?(n(),r("div",xl,[j(f(Ma),{size:24})])):T("",!0),rt(t("img",{src:x.value||k.value,alt:e.attachment.name,class:"w-full h-full object-cover",onLoad:L,onError:V},null,40,bl),[[ht,!m.value&&!h.value||F.value]]),k.value?(n(),r("div",yl,[...G[2]||(G[2]=[t("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)])])):T("",!0)],64)):(n(),r(_e,{key:1},[j(f(bn),{size:14,class:"text-neutral-500 mr-1 flex-shrink-0"}),t("span",kl,v(e.attachment.name),1)],64)),e.showRemove?(n(),r("button",{key:2,onClick:Ne(R,["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"},[j(f(Et),{size:10})])):T("",!0)],2))}}),_l=["onMouseenter","onMouseleave","onClick"],wl=["onClick"],$l={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"},Cl={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"},Sl={key:0,class:"w-full text-center text-xs text-neutral-400 dark:text-neutral-500 py-1"},Tl={key:0,class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-400 dark:text-neutral-500 leading-none mb-1"},Il=["contenteditable","onInput"],Al=["innerHTML"],El={key:3,class:"inline-flex items-center gap-1 rounded-full bg-neutral-100 dark:bg-neutral-800/60 px-3 py-2"},Ll={key:0,class:"inline-flex items-center gap-1.5"},Ml=["src"],Rl={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"},Dl=["title","onClick"],Fl={key:0,class:"flex flex-wrap gap-2 px-4"},Pl=["onClick","onMouseenter"],zl={key:0,class:"flex items-center gap-2 px-4 py-2 min-w-0"},Nl={key:0,class:"truncate text-neutral-700 dark:text-neutral-300 min-w-0"},jl={key:1,class:"truncate text-neutral-600 dark:text-neutral-400 min-w-0"},Bl={class:"text-neutral-500 dark:text-neutral-400 flex-shrink-0"},Ol={class:"work-op-strip","aria-label":"Operation statuses"},Vl=["title"],ql={key:1,class:"px-4 py-2 space-y-2.5"},Hl={class:"flex items-center gap-2"},Ul={class:"min-w-0 truncate text-neutral-700 dark:text-neutral-300"},Wl={class:"shrink-0 text-neutral-500 dark:text-neutral-400"},Kl={class:"work-op-strip","aria-label":"Operation statuses"},Jl=["title"],Gl={key:0,class:"space-y-1"},Yl=["onClick","onMouseenter"],Ql=["title"],Xl={class:"font-mono font-medium text-neutral-800 dark:text-neutral-100 flex-shrink-0"},Zl={key:2,class:"text-neutral-500 dark:text-neutral-400 truncate flex-1 min-w-0"},eo={key:0,class:"pl-5 mt-2 space-y-3"},to={key:0},no={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"},ao={class:"pt-1 font-mono text-[12px] text-neutral-500 dark:text-neutral-500"},ro={class:"min-w-0"},so={key:1,class:"break-words text-neutral-800 dark:text-neutral-200"},lo={key:1},oo={class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-400 dark:text-neutral-500 mb-1"},io=["onClick","onMouseenter"],uo={key:0,class:"m-0 whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed"},co={key:1},fo=["onClick"],po={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"},vo={key:2,class:"pl-5 pb-1 break-words text-neutral-600 dark:text-neutral-400"},mo={class:"flex items-center justify-between gap-3 border-b border-neutral-100 px-3 py-2 dark:border-neutral-900"},go={class:"min-w-0"},ho={class:"truncate text-[12px] font-medium text-neutral-800 dark:text-neutral-100"},xo={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"},bo={class:"divide-y divide-neutral-100 dark:divide-neutral-900"},yo=["onClick"],ko={class:"flex items-center gap-3"},_o=["src"],wo={class:"min-w-0 flex-1"},$o={class:"flex items-center gap-2"},Co={class:"truncate text-[13px] font-medium text-neutral-900 dark:text-neutral-50"},So={class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},To={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"},Io={class:"ml-11 mt-1 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Ao={key:0,class:"ml-12 mt-1.5 space-y-1.5 border-l border-neutral-200 pl-2.5 dark:border-neutral-800"},Eo={class:"flex items-center gap-2 text-[10px] text-neutral-500 dark:text-neutral-400"},Lo={class:"font-medium uppercase text-neutral-600 dark:text-neutral-300"},Mo={key:0,class:"italic"},Ro=["innerHTML"],Do={key:1,class:"mt-2 flex flex-wrap gap-2"},Fo=["onClick"],Po={class:"flex items-center gap-3"},zo=["src"],No={class:"min-w-0 flex-1"},jo={class:"flex items-center gap-2"},Bo={class:"truncate text-[13px] font-medium text-neutral-900 dark:text-neutral-50"},Oo={class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Vo={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"},qo={class:"ml-12 mt-1 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Ho={key:0,class:"ml-12 mt-2 space-y-1.5 border-l border-neutral-200 pl-2.5 dark:border-neutral-800"},Uo={class:"flex items-center gap-2 text-[10px] text-neutral-500 dark:text-neutral-400"},Wo={class:"font-medium uppercase text-neutral-600 dark:text-neutral-300"},Ko={key:0,class:"italic"},Jo=["innerHTML"],Go={key:1,class:"mt-2 flex flex-wrap gap-2"},Yo=Ue({__name:"AgentMessages",props:{messages:{},threadId:{},selectedMessageId:{},selectedLogId:{},selectedEffectId:{},hoveredLogId:{},isEditMode:{type:Boolean},selectedForDelete:{},editedMessages:{},assistantAvatarSrc:{},userAvatarSrc:{}},emits:["messageClick","messageHover","selectionChange","messageEdit"],setup(e,{expose:i,emit:a}){const s=e,l=a;sa.setOptions({gfm:!0,breaks:!0});function o(g){const y=s.selectedForDelete?.has(g)??!1;l("selectionChange",g,!y)}function m(g,y){const ke=g.target.innerText;l("messageEdit",y,ke)}function h(g){return g.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function M(g){if(typeof window>"u"||typeof DOMParser>"u")return g.replace(/<script[\s\S]*?>[\s\S]*?<\/script>/gi,"").replace(/\son\w+="[^"]*"/gi,"").replace(/\s(href|src)="javascript:[^"]*"/gi,"");const y=new DOMParser().parseFromString(g,"text/html"),C=["script","style","iframe","object","embed"];for(const ke of C)y.querySelectorAll(ke).forEach(te=>te.remove());return y.body.querySelectorAll("*").forEach(ke=>{for(const te of Array.from(ke.attributes)){const ze=te.name.toLowerCase(),ot=te.value.trim().toLowerCase();(ze.startsWith("on")||ze==="style"||(ze==="href"||ze==="src")&&(ot.startsWith("javascript:")||ot.startsWith("data:text/html")))&&ke.removeAttribute(te.name)}}),y.body.innerHTML}function F(g){return!!g&&typeof g=="object"&&!Array.isArray(g)}function k(g){const y=h(lt(g||"")),C=sa.parse(y,{async:!1});return M(C)}function x(g){return s.editedMessages?.has(g)??!1}const L=b(new Map);function V(g,y){y?L.value.set(g,y):L.value.delete(g)}function R(g,y){V(g,y instanceof HTMLElement?y:null)}function W(g){const y=s.messages.findIndex(C=>C.log_id===g);if(y<=0)return-1;for(let C=y-1;C>=0;C--){const ke=s.messages[C];if(ke.role==="user")return C;if(ke.role==="assistant"&&ke.log_id)break}return-1}function K(g){for(let y=0;y<s.messages.length;y++){const C=s.messages[y];if(C.log_id===g||C.type==="work"&&C.items&&C.items.some(ze=>ze.log_id===g||ze.response_log_id===g))return y}return-1}function G(g,y){const ke=K(g);if(ke===-1)return!1;const te=L.value.get(ke);if(!te)return!1;const ze=s.messages[ke];let ot=null;if(ze.role==="assistant"&&ze.log_id){const $=W(ze.log_id);ot=$!==-1?L.value.get($):null}const mt=y.getBoundingClientRect(),A=te.getBoundingClientRect();if(A.top<mt.top){const $e=(ot||te).getBoundingClientRect().top-mt.top-10;y.scrollBy({top:$e,behavior:"smooth"})}else if(A.bottom>mt.bottom){const $=A.bottom-mt.bottom+10;y.scrollBy({top:$,behavior:"smooth"})}else if(ot){const $=ot.getBoundingClientRect();if($.top<mt.top){const D=$.top-mt.top-10;y.scrollBy({top:D,behavior:"smooth"})}}return!0}function w(g){for(const y of s.messages){if(y.type!=="work")continue;if(y.items.some(te=>te.log_id===g||te.response_log_id===g))return!0}return!1}i({scrollToLogId:G,hasWorkblockForLogId:w});function E(g){const y=s.messages[g];if(y.log_id)return y.log_id;if(y.role==="user")for(let C=g+1;C<s.messages.length;C++){const ke=s.messages[C];if(ke.log_id)return ke.log_id;if(ke.role==="user")break}return null}function B(g){if(g.type!=="text")return null;const y=g.metadata;if(!F(y))return null;const C=y.scheduledEffect;return F(C)?C:null}function re(g){const y=B(g);return typeof y?.id=="string"?y.id:null}function J(g){const y=B(g);return typeof y?.name=="string"?y.name:null}function Q(g){return re(g)!==null}function H(g){const y=re(g),C=J(g);return C&&y?`${C} (${y})`:C||"Scheduled effect"}function me(g){if(g.type!=="text")return null;const y=B(g),C=typeof y?.id=="string"?y.id:null;return C?{id:C,name:typeof y?.name=="string"?y.name:null}:null}function Z(g,y){return y?E(g)===y:!1}function Me(g,y){if(s.isEditMode||g.silent||g.role==="user"&&!Q(g))return"";const C=re(g),ke=!!E(y)||Q(g);return Z(y,s.selectedLogId??null)||C&&C===s.selectedEffectId?"message-log-state message-log-state--selected":E(y)&&Z(y,s.hoveredLogId??null)?"message-log-state message-log-state--hovered":ke?"message-log-state":""}function De(g){const y=E(g);y&&l("messageHover",y)}function se(g){E(g)&&l("messageHover",null)}function Fe(g){const y=s.messages[g],C=E(g),ke=me(y);(C||ke)&&l("messageClick",y.id,C,ke)}function N(g){const y=s.messages[g],C=me(y);C&&l("messageClick",y.id,E(g),C)}const de=b(new Set),oe=b(new Set),ye=b(new Set),ve=b(new Set);function he(g){de.value.has(g)?de.value.delete(g):de.value.add(g)}function Le(g){oe.value.has(g)?oe.value.delete(g):oe.value.add(g)}function ae(g){ye.value.has(g)?ye.value.delete(g):ye.value.add(g)}function Y(g){ve.value.has(g)?ve.value.delete(g):ve.value.add(g)}function ce(g){if(!g)return{};try{const y=JSON.parse(g);return y&&typeof y=="object"&&!Array.isArray(y)?y:{raw:y}}catch{return{raw:g}}}function ne(g){if(!g)return null;const y=ce(g),C=Object.keys(y);if(C.length===0)return null;const ke=y[C[0]];return typeof ke=="string"?Ve(fe(ke)):JSON.stringify(ke)}const le={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 Ie(g){if(typeof g!="string")return null;const y=g.split("?")[0]?.split("#")[0]?.split(".").pop()?.toLowerCase();return y?le[y]??null:null}function Re(g){if(typeof g!="string")return null;const y=g.toLowerCase();return y.includes("json")?"json":y.includes("typescript")?"typescript":y.includes("javascript")?"javascript":y.includes("html")?"html":y.includes("css")?"css":y.includes("markdown")?"markdown":y.includes("yaml")||y.includes("yml")?"yaml":y.includes("shell")||y.includes("bash")?"bash":null}function We(g){try{return JSON.stringify(JSON.parse(g),null,2)}catch{return null}}function P(g){try{return JSON.parse(g)}catch{return null}}function xe(g){return g&&typeof g=="object"&&!Array.isArray(g)?g:null}function fe(g){return g.replace(/\\r\\n/g,`
|
|
2
|
+
import{d as We,z as N,e as n,k as Ee,g as Lt,m as ee,B as At,c as A,an as Vt,w as he,r as x,O as qt,a5 as Ja,ao as Ga,J as f,a4 as Un,C as Ya,D as Qa,b as r,f as t,q as S,j as z,s as Ge,u as m,h as Be,a as Ht,Z as on,o as zt,ap as Xa,aq as Et,ag as _t,F as $e,l as Ne,K as ze,n as vt,ar as Ia,as as Aa,ah as Pt,at as Za,au as er,av as zn,aw as Ea,ax as La,x as rt,ay as xn,az as tr,X as nr,Y as ar,aA as Ma,y as ht,aB as bn,aC as wt,_ as jn,aD as rr,a3 as Mt,aE as sr,am as ln,aF as lr,aG as yn,aH as Ra,aI as Da,aJ as or,al as ir,aK as Fa,aL as dr,aM as ur,aN as cr,aO as fr,aP as vr,aQ as pr,aR as gr,aS as mr,L as Ot,aT as Xt,aU as Bn,aV as Wn,P as Nt,H as hr,aW as Pa,aX as xr,aY as br,aZ as yr,a_ as An,a$ as kr,b0 as wr,b1 as _r,b2 as Xn,b3 as kn,b4 as $r,b5 as Zn,b6 as ea,b7 as On,W as Cr,b8 as Sr,b9 as Tr,ba as ta}from"./vue.js";import{H as Ir,a as He,J as Kn,K as Ar,L as Vn,I as cn,k as na,M as aa,C as Na,N as Er,O as ra,P as Lr,m as dt,Q as za,R as ja,B as qe,S as Mr,h as wn,V as Rr,U as En,_ as fn,d as rn,e as an,W as Dr,X as Fr,u as Pr,A as Rt,p as Nr,w as zr,y as jr,z as Br,Y as Or,Z as Vr,x as qr}from"./index.js";import{e as sa}from"./vendor.js";import{_ as Ba}from"./Modal.vue_vue_type_script_setup_true_lang.js";import{_ as Jn,u as Hr}from"./CopyButton.vue_vue_type_script_setup_true_lang.js";import{_ as at,W as Ur,a as Wr,b as Kr,c as Jr,d as Gr,e as Zt}from"./monaco.js";import{J as Ln}from"./JsonViewer.js";import{_ as Yr}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang.js";import{u as Oa,_ as Va,b as vn,c as Qr,P as Xr}from"./PromptModal.js";const Zr=We({__name:"UiMenuItem",props:{active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},as:{default:"button"}},emits:["click"],setup(e,{emit:i}){const a=e,s=i;function l(o){a.disabled||s("click",o)}return(o,p)=>(n(),N(At(e.as),{type:e.as==="button"?"button":void 0,disabled:e.as==="button"?e.disabled:void 0,onClick:l,class:ee(["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:Ee(()=>[Lt(o.$slots,"default")]),_:3},8,["type","disabled","class"]))}});async function sn(e){const i=await Ir(e);if(!i.ok)throw new Error(`Request failed for ${e}`);return i.json()}async function es(e){if(!e)return null;try{return(await sn(`/prompts/${encodeURIComponent(e)}`)).prompt}catch{return null}}async function Th(e){if(!e)return null;try{return await sn(`/tools/${encodeURIComponent(e)}`)}catch{return null}}function ts(e){const i=e?.env??e?.tenvs;return!i||typeof i!="object"?{}:i}function qa(e){return Object.keys(ts(e)).filter(i=>i.trim().length>0)}function ns(e){const i=e?.variables||[],a=new Map;for(const s of i){const l=s.name?.trim();l&&a.set(l,{...s,name:l})}for(const s of qa(e))a.has(s)||a.set(s,{name:s,type:"text",required:!1,description:"Default value set on this prompt."});return Array.from(a.values())}function Ih(e){return e?!e.packed&&e.id===e.name:!1}function as(e,i){return i?.type?i.type:e.startsWith("provider:")?"provider":e.startsWith("mcp:")?"mcp":"unknown"}function rs(e){return e.startsWith("provider:")?e.slice(9):e.startsWith("mcp:")?e.slice(4):e}function ss(e,i){if(!e)return null;const a=i[e];if(a)return a;for(const s of Object.values(i))if(s.name===e)return s;return null}function ls(e,i,a={}){const s=i[e.name],l=s?.model;return{name:e.name,displayName:rs(e.name),kind:as(e.name,s),description:s?.description||"",variables:s?.variables||[],model:l,resolvedModel:ss(l,a),config:e}}function Ah(e,i,a,s){const l=i==="b"&&e.type!=="dual_ai",o=i==="a"?e.side_a_label||"Side A":e.side_b_label||(l?"Human":"Side B"),p=i==="a"?e.side_a_agent_prompt:e.side_b_agent_prompt,h=i==="a"?e.side_a_stop_on_response:e.side_b_stop_on_response,L=i==="a"?e.side_a_stop_tool:e.side_b_stop_tool,M=i==="a"?e.side_a_max_steps:e.side_b_max_steps,w=[i==="a"?e.side_a_session_stop_tool:e.side_b_session_stop_tool,i==="a"?e.side_a_session_fail_tool:e.side_b_session_fail_tool,i==="a"?e.side_a_session_status_tool:e.side_b_session_status_tool].filter(B=>!!B),y=(a?.tools||[]).map(B=>ls(B,s.toolsCatalog,s.models)),T=y.filter(B=>B.kind==="handoff"||B.kind==="subagent");return{id:i,agentName:e.name,label:o,mode:l?"human":"ai",promptName:p||null,stopOnResponse:h,stopTool:L,maxSteps:M,sessionStopTool:i==="a"?e.side_a_session_stop_tool:e.side_b_session_stop_tool,sessionTools:w,prompt:a,model:a&&s.models[a.model_id]||null,tools:y,hooks:(a?.hooks||[]).map(B=>s.hooks[B]||{id:B,hook:"unknown"}),variables:ns(a),variableEnvNames:qa(a),outgoingAgents:T}}function os(e){const{limit:i=50,offset:a=0,agentId:s=null,userId:l=null,search:o=null,startDate:p=null,endDate:h=null,autoFetch:L=!0}=e||{},M=A(()=>{const j=new URLSearchParams,J=typeof i=="number"?i:i.value,ve=typeof a=="number"?a:a.value,ae=typeof s=="string"?s:s?.value,Q=typeof l=="string"?l:l?.value,W=typeof o=="string"?o:o?.value,fe=typeof p=="number"?p:p?.value,X=typeof h=="number"?h:h?.value;return j.append("limit",J.toString()),j.append("offset",ve.toString()),ae&&(j.append("agent_id",ae),j.append("include_children","1")),Q&&j.append("user_id",Q),W&&j.append("search",W),fe&&j.append("startDate",fe.toString()),X&&j.append("endDate",X.toString()),He(`/api/threads?${j.toString()}`)}),{data:w,error:y,isFetching:T,isFinished:B,execute:E,abort:H}=Vt(M,{immediate:L,refetch:!0}).get().json(),U=A(()=>w.value?.threads||[]),G=A(()=>w.value?.total||0),q=A(()=>w.value?.hasMore||!1);return{threads:U,total:G,hasMore:q,error:y,isFetching:T,isFinished:B,refetch:E,abort:H}}function Gn(e){const i=A(()=>{const M=typeof e=="string"?e:e?.value;return M?He(`/api/threads/${M}`):""}),{data:a,error:s,isFetching:l,isFinished:o,execute:p,abort:h}=Vt(i,{immediate:!1,refetch:!0}).get().json();return he(i,M=>{M?p():(h(),a.value=null)},{immediate:!0}),{thread:A(()=>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),error:s,isFetching:l,isFinished:o,refetch:p,abort:h}}const is={key:0,class:"flex min-h-[500px] items-center justify-center"},ds={class:"flex min-h-0 min-w-0 flex-1 flex-col"},us={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"},cs={class:"min-w-0 flex-1"},fs={class:"edit-sections-query"},vs=We({__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:i,emit:a}){const s=e,l=a,o=A(()=>s.mode==="edit"),p=A(()=>!!s.surfaceSection),h=A(()=>s.inline&&s.inlineFlatSections),L=A(()=>s.inline||p.value),M=A(()=>L.value?{config:Kn}:{}),w=A(()=>o.value&&(s.editAgent?.id||s.editAgent?.name)||""),y=Ar(()=>w.value,{autoload:!1}),T=x(null),B=["basics","side-a","side-b","variables"],{activeTab:E,scrollToSection:H}=Oa(T,B),U=A(()=>[{id:"basics",label:"Basics",icon:Vn},{id:"side-a",label:"Side A",icon:cn},{id:"side-b",label:"Side B",icon:y.agentType.value==="ai_human"?na:cn},{id:"variables",label:"Variables",icon:aa}]),G=x(!1),q=x(!1),j=x(null);let J=0;const ve=A(()=>JSON.stringify({name:y.name.value,title:y.title.value,agentType:y.agentType.value,exposeAsTool:y.exposeAsTool.value,toolDescription:y.toolDescription.value,maxSessionTurns:y.maxSessionTurns.value,sideALabel:y.sideALabel.value,sideAAgentPrompt:y.sideAAgentPrompt.value,sideAStopOnResponse:y.sideAStopOnResponse.value,sideAStopOnToolCall:y.sideAStopOnToolCall.value,sideAStopTool:y.sideAStopTool.value,sideAStopToolResponseProperty:y.sideAStopToolResponseProperty.value,sideAManualStopCondition:y.sideAManualStopCondition.value,sideAMaxSteps:y.sideAMaxSteps.value,sideAEndConversationTool:y.sideAEndConversationTool.value,sideBLabel:y.sideBLabel.value,sideBAgentPrompt:y.sideBAgentPrompt.value,sideBStopOnResponse:y.sideBStopOnResponse.value,sideBStopOnToolCall:y.sideBStopOnToolCall.value,sideBStopTool:y.sideBStopTool.value,sideBStopToolResponseProperty:y.sideBStopToolResponseProperty.value,sideBMaxSteps:y.sideBMaxSteps.value,sideBEndConversationTool:y.sideBEndConversationTool.value,agentEnv:y.agentEnv.value})),ae=A(()=>q.value?"Saved":s.inline&&o.value?"Save Agent Changes":o.value?"Update Agent":"Create Agent"),Q=A(()=>s.saving||s.inline&&!G.value),W=A(()=>p.value||s.inline?{class:s.inline?"flex h-full min-w-0 flex-col":"min-w-0"}:{modelValue:s.modelValue,title:o.value?"Edit Agent":"Create Agent",width:"max-w-5xl",contentPadding:!1});function fe(){q.value=!1,j.value=null}function X(){Be().then(()=>{G.value=!!y.formNode.value?.context?.state.dirty})}function Re(me){y.handleFormNode(me),me.on("commit",X),me.on("reset",X),me.on("message-added",X),me.on("message-updated",X),me.on("message-removed",X),X()}async function Fe(){const me=++J;await Be();const pe=y.formNode.value;if(!pe||me!==J){G.value=!1;return}await pe.settled,pe.reset(pe.value),await Be(),me===J&&(G.value=!1)}async function re(){await Fe(),q.value=!0,j.value=ve.value}async function De(){fe(),y.resetForm(),await Be(),o.value&&w.value?await y.load():await y.loadPrerequisites(),await Fe()}async function P(){const me=await y.prepareSubmit();me&&l("save",me)}function de(){y.resetForm(),fe(),l("update:modelValue",!1)}async function le(){fe(),await De()}function ye(me){return!s.surfaceSection||s.surfaceSection===me}return he(()=>s.modelValue,async me=>{me?await De():(J+=1,y.resetForm(),fe(),G.value=!1)},{immediate:!0}),he(()=>w.value,async(me,pe)=>{!s.modelValue||me===pe||await De()}),he(ve,me=>{q.value&&j.value!==null&&me!==j.value&&fe()}),he(G,me=>{me&&fe()}),i({formNode:y.formNode,markSaveSucceeded:re,markCurrentFormCleanAfterSettle:Fe,resetSaveSuccess:fe}),(me,pe)=>{const Me=qt("FormKit");return n(),N(At(e.inline||p.value?"div":Ba),Ja(W.value,Ga(e.inline||p.value?void 0:{"update:modelValue":Ce=>me.$emit("update:modelValue",Ce)})),{default:Ee(()=>[(n(),N(At(L.value?f(Un):"div"),Ya(Qa(M.value)),{default:Ee(()=>[f(y).isLoading.value?(n(),r("div",is,[...pe[0]||(pe[0]=[t("span",{class:"text-neutral-500"},"Loading agent data...",-1)])])):(n(),N(Me,{key:1,type:"form",id:"agent-form",actions:!1,disabled:e.readonly||e.saving,onSubmit:P,onNode:Re,"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:Ee(()=>[t("div",ds,[p.value?S("",!0):(n(),r("nav",us,[Lt(me.$slots,"nav-leading",{},void 0,!0),t("div",cs,[z(f(Va),{tabs:U.value,"active-tab":f(E),"accent-active":e.inlineAccentTabs,orientation:"horizontal",onSelect:f(H)},null,8,["tabs","active-tab","accent-active","onSelect"])])])),t("div",{ref_key:"contentRef",ref:T,class:ee(["min-h-0 flex-1 overflow-y-auto",p.value?"p-5":h.value?"bg-neutral-100 dark:bg-neutral-950":"bg-neutral-100 p-5 dark:bg-neutral-950"])},[t("div",fs,[e.inlineGlobalNotice?(n(),r("div",{key:0,class:ee(["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",h.value?"mx-5 mb-4 mt-5":"mb-4"])}," Changes here are global and will affect all new messages across all threads. ",2)):S("",!0),t("div",{class:ee([h.value?"space-y-4 pb-5":"space-y-4","edit-sections-stack"])},[e.apiError?(n(),N(f(Na),{key:0,variant:"error"},{default:Ee(()=>[Ge(m(e.apiError),1)]),_:1})):S("",!0),ye("identity")?(n(),N(f(vn),{key:1,id:"section-basics",title:"Basics",icon:f(Vn),flat:h.value},{default:Ee(()=>[z(Er,{form:f(y),"is-edit-mode":o.value},null,8,["form","is-edit-mode"])]),_:1},8,["icon","flat"])):S("",!0),ye("side-a")?(n(),N(f(vn),{key:2,id:"section-side-a",title:"Side A (AI)",icon:f(cn),flat:h.value},{default:Ee(()=>[z(ra,{form:f(y),side:"a"},null,8,["form"])]),_:1},8,["icon","flat"])):S("",!0),ye("side-b")?(n(),N(f(vn),{key:3,id:"section-side-b",title:f(y).agentType.value==="ai_human"?"Side B (Human)":"Side B (AI)",icon:f(y).agentType.value==="ai_human"?f(na):f(cn),flat:h.value},{default:Ee(()=>[z(ra,{form:f(y),side:"b"},null,8,["form"])]),_:1},8,["title","icon","flat"])):S("",!0),ye("variables")?(n(),N(f(vn),{key:4,id:"section-variables",title:"Variables",icon:f(aa),flat:h.value},{default:Ee(()=>[z(Lr,{form:f(y),readonly:e.readonly},null,8,["form","readonly"])]),_:1},8,["icon","flat"])):S("",!0)],2)])],2)]),p.value?S("",!0):(n(),N(Qr,{key:0,"form-id":"agent-form","form-node":f(y).formNode.value,readonly:e.readonly,inline:e.inline,saving:e.saving,dirty:G.value,"save-succeeded":q.value,"save-label":ae.value,"save-disabled":Q.value,"cancel-label":e.readonly?"Close":"Cancel",onCancel:de,onDiscard:le},null,8,["form-node","readonly","inline","saving","dirty","save-succeeded","save-label","save-disabled","cancel-label"]))]),_:3},8,["disabled"]))]),_:3},16))]),_:3},16)}}}),ps=dt(vs,[["__scopeId","data-v-e47eeb63"]]);function Ha(){const e=He("/api/agents"),{data:i,error:a,isFetching:s,isFinished:l,execute:o}=Vt(e,{immediate:!0}).get().json();return{agents:A(()=>i.value?.agents||[]),error:a,isFetching:s,isFinished:l,refetch:o}}function Jt(e,i,...a){}function Yn(e){return!!e&&typeof e=="object"}function _n(e){return typeof e=="string"?e:null}function gs(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function ms(e){if(Yn(e)&&!(typeof e.name!="string"||typeof e.title!="string"||typeof e.type!="string"))return{name:e.name,title:e.title,type:e.type,description:_n(e.description)??void 0,icon:_n(e.icon)??void 0}}function hs(e){return!Yn(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:_n(e.user_id),tags:Array.isArray(e.tags)?e.tags.filter(i=>typeof i=="string"):null,parent:_n(e.parent),terminated:gs(e.terminated),created_at:e.created_at,agent:ms(e.agent)}}function xs(e){if(!Yn(e))return null;if(e.type==="thread_deleted")return typeof e.threadId=="string"?{type:e.type,threadId:e.threadId}:null;if(e.type==="thread_created"||e.type==="thread_updated"){const i=hs(e.thread);return i?{type:e.type,thread:i}:null}return null}function bs(e){const{autoConnect:i=!0,onEvent:a}=e||{},s=x(null),l=x(!1),o=x(null);let p=0,h=null,L=null,M=!0,w=null;const y=3e4,T=3e4,B=()=>{h&&(clearTimeout(h),h=null),L&&(clearInterval(L),L=null)},E=()=>{L&&clearInterval(L),L=setInterval(()=>{s.value&&s.value.readyState===WebSocket.OPEN&&s.value.send("ping")},T)},H=()=>{if(!M)return;const j=Math.min(1e3*Math.pow(2,p),y);p++,Jt(),h=setTimeout(()=>{M&&U()},j)},U=()=>{s.value&&(w=null,s.value.close());const j=window.location.protocol==="https:"?"wss:":"ws:",J=window.location.host,ve=za(`${j}//${J}${He("/api/events")}`);try{const ae=new WebSocket(ve);s.value=ae,w=ae,ae.onopen=()=>{w===ae&&(l.value=!0,o.value=null,p=0,E(),Jt("AgentBuilderEvents","WebSocket connected"))},ae.onmessage=Q=>{if(w===ae)try{if(typeof Q.data=="string"&&Q.data==="pong")return;const W=xs(JSON.parse(Q.data));W&&a&&a(W)}catch{o.value="Failed to parse event update"}},ae.onerror=Q=>{w===ae&&(o.value="WebSocket connection error")},ae.onclose=()=>{w===ae&&(l.value=!1,B(),Jt("AgentBuilderEvents","WebSocket disconnected"),H())}}catch(ae){o.value=ae instanceof Error?ae.message:"Failed to create WebSocket",H()}},G=()=>{M=!0,p=0,U()},q=()=>{M=!1,B(),w=null,s.value&&(s.value.close(),s.value=null),l.value=!1,p=0};return i&&G(),Ht(()=>{q()}),{wsConnected:l,wsError:o,connect:G,disconnect:q}}const ys={class:"relative inline-flex items-center"},ks={key:0,class:"inline-block w-2 h-2 rounded-full bg-green-500 dark:bg-green-400"},ws={key:1,class:"inline-block w-2 h-2 rounded-full bg-neutral-400 dark:bg-neutral-600"},_s={key:0},$s={key:1},Ua=We({__name:"StatusDot",props:{connected:{type:Boolean},error:{type:Boolean}},setup(e){const i=x(!1),a=x(null);return(s,l)=>(n(),r("div",ys,[t("span",{class:"p-0.5 cursor-default outline-none",tabindex:"-1",onMouseenter:l[0]||(l[0]=o=>i.value=!0),onMouseleave:l[1]||(l[1]=o=>i.value=!1)},[e.connected?(n(),r("span",ks)):(n(),r("span",ws))],32),z(on,{"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:Ee(()=>[i.value?(n(),r("div",{key:0,ref_key:"popoverRef",ref:a,class:ee(["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?(n(),r("span",_s,"Live - Connected")):(n(),r("span",$s,"Offline"))],2)):S("",!0)]),_:1})]))}}),Cs={class:"relative min-w-0"},Ss={class:"truncate flex-1 text-left"},Ts={key:0},Is=["onClick"],As={class:"border-t border-neutral-200 dark:border-neutral-700"},Es={class:"flex items-center justify-between"},Ls={class:"space-y-4 date-filter-inputs"},Ms=We({__name:"DateFilterDropdown",props:{startDate:{},endDate:{}},emits:["update:startDate","update:endDate"],setup(e,{emit:i}){const a=e,s=i,l=x(!1),o=x(!1),p=x(null),h=x(null),L=x(""),M=x(""),w=[{label:"All time",value:"all",getRange:()=>({startDate:null,endDate:null})},{label:"Today",value:"today",getRange:()=>{const Q=new Date,W=new Date(Q.getFullYear(),Q.getMonth(),Q.getDate());return{startDate:Math.floor(W.getTime()/1e3),endDate:null}}},{label:"Last 3 days",value:"3days",getRange:()=>{const Q=new Date,W=new Date(Q.getFullYear(),Q.getMonth(),Q.getDate()-2);return{startDate:Math.floor(W.getTime()/1e3),endDate:null}}},{label:"Last 7 days",value:"7days",getRange:()=>{const Q=new Date,W=new Date(Q.getFullYear(),Q.getMonth(),Q.getDate()-6);return{startDate:Math.floor(W.getTime()/1e3),endDate:null}}},{label:"Last 30 days",value:"30days",getRange:()=>{const Q=new Date,W=new Date(Q.getFullYear(),Q.getMonth(),Q.getDate()-29);return{startDate:Math.floor(W.getTime()/1e3),endDate:null}}}],y=A(()=>{if(!a.startDate&&!a.endDate)return"all";for(const Q of w){const W=Q.getRange();if(W.startDate===a.startDate&&W.endDate===a.endDate)return Q.value}return"custom"}),T=A(()=>{if(!a.startDate&&!a.endDate)return"All time";const Q=w.find(fe=>fe.value===y.value);if(Q&&y.value!=="custom")return Q.label;const W=fe=>new Date(fe*1e3).toLocaleDateString("en-US",{month:"short",day:"numeric"});return a.startDate&&a.endDate?`${W(a.startDate)} - ${W(a.endDate)}`:a.startDate?`From ${W(a.startDate)}`:a.endDate?`Until ${W(a.endDate)}`:"Custom"}),B=A(()=>a.startDate!==null||a.endDate!==null);function E(){if(!p.value||!h.value)return;const Q=p.value.getBoundingClientRect();h.value.style.position="fixed",h.value.style.top=`${Q.bottom+8}px`,h.value.style.left=`${Q.left}px`;const W=o.value?280:180;h.value.style.minWidth=`${Q.width}px`,h.value.style.maxWidth=`${Math.max(Q.width,W)}px`,h.value.style.width="auto",h.value.style.margin="0"}function H(){l.value?U():(l.value=!0,Be(()=>{if(h.value&&(h.value.setAttribute("popover","auto"),h.value.addEventListener("toggle",G),"showPopover"in h.value))try{h.value.showPopover()}catch{}E()}))}function U(){if(h.value){if("hidePopover"in h.value)try{h.value.hidePopover()}catch{}h.value.removeEventListener("toggle",G)}l.value=!1,o.value=!1}function G(Q){Q.target===h.value&&(l.value=Q.newState==="open",l.value&&E())}function q(Q){const W=Q.getRange();s("update:startDate",W.startDate),s("update:endDate",W.endDate),U()}function j(){const Q=L.value?Math.floor(new Date(L.value).getTime()/1e3):null,W=M.value?Math.floor(new Date(M.value+"T23:59:59").getTime()/1e3):null;s("update:startDate",Q),s("update:endDate",W),U()}function J(Q){Q.stopPropagation(),s("update:startDate",null),s("update:endDate",null)}const ve=Q=>{const W=Q.target;h.value&&!h.value.contains(W)&&p.value&&!p.value.contains(W)&&U()},ae=Q=>{Q.key==="Escape"&&l.value&&(U(),p.value?.focus())};return zt(()=>{document.addEventListener("click",ve),document.addEventListener("keydown",ae),window.addEventListener("resize",E),window.addEventListener("scroll",E,!0)}),Ht(()=>{document.removeEventListener("click",ve),document.removeEventListener("keydown",ae),window.removeEventListener("resize",E),window.removeEventListener("scroll",E,!0)}),he(o,Q=>{Q&&(a.startDate&&(L.value=new Date(a.startDate*1e3).toISOString().split("T")[0]),a.endDate?M.value=new Date(a.endDate*1e3).toISOString().split("T")[0]:M.value=new Date().toISOString().split("T")[0]),Be(E)}),(Q,W)=>{const fe=qt("FormKit");return n(),r("div",Cs,[t("button",{ref_key:"triggerRef",ref:p,type:"button",onClick:H,class:ee(["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",[B.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"]])},[z(f(Xa),{size:14,class:"shrink-0 text-zinc-400"}),t("span",Ss,m(T.value),1),B.value?(n(),N(f(Et),{key:0,size:14,class:"shrink-0 text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-200",onClick:J})):(n(),N(f(_t),{key:1,size:14,class:ee(["shrink-0 text-zinc-400",l.value?"rotate-180":""])},null,8,["class"]))],2),l.value?(n(),r("div",{key:0,ref_key:"popoverRef",ref:h,class:"dropdown-popover z-[9999]"},[z(f(ja),{"max-height":o.value?void 0:"max-h-48",shadow:!1},{default:Ee(()=>[o.value?(n(),r("div",{key:1,class:"p-2.5 space-y-2.5",onClick:W[4]||(W[4]=ze(()=>{},["stop"]))},[t("div",Es,[W[6]||(W[6]=t("span",{class:"text-xs font-medium"},"Custom range",-1)),t("button",{type:"button",onClick:W[1]||(W[1]=ze(X=>o.value=!1,["stop"])),class:"text-[10px] text-neutral-500 hover:text-black dark:hover:text-white"}," ← Back ")]),t("div",Ls,[z(fe,{modelValue:L.value,"onUpdate:modelValue":W[2]||(W[2]=X=>L.value=X),type:"datepicker",label:"From","picker-only":"",popover:"",format:"MMM D, YYYY","value-format":"YYYY-MM-DD",sequence:["day"]},null,8,["modelValue"]),z(fe,{modelValue:M.value,"onUpdate:modelValue":W[3]||(W[3]=X=>M.value=X),type:"datepicker",label:"To","picker-only":"",popover:"",format:"MMM D, YYYY","value-format":"YYYY-MM-DD",sequence:["day"]},null,8,["modelValue"])]),t("button",{type:"button",onClick:j,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 ")])):(n(),r("div",Ts,[(n(),r($e,null,Ne(w,X=>t("button",{key:X.value,type:"button",onClick:Re=>q(X),class:ee(["w-full px-2.5 py-1.5 text-left text-xs agents-surface-hover transition-colors flex items-center gap-2",y.value===X.value?"agents-surface-selected agents-text-selected":""])},[t("span",{class:ee(["w-1.5 h-1.5 rounded-full border border-accent-500",y.value===X.value?"bg-accent-500":""])},null,2),Ge(" "+m(X.label),1)],10,Is)),64)),t("div",As,[t("button",{type:"button",onClick:W[0]||(W[0]=ze(X=>o.value=!0,["stop"])),class:ee(["w-full px-2.5 py-1.5 text-left text-xs agents-surface-hover transition-colors flex items-center gap-2",y.value==="custom"?"agents-surface-selected agents-text-selected":""])},[t("span",{class:ee(["w-1.5 h-1.5 rounded-full border border-accent-500",y.value==="custom"?"bg-accent-500":""])},null,2),W[5]||(W[5]=Ge(" Custom range... ",-1))],2)])]))]),_:1},8,["max-height"])],512)):S("",!0)])}}}),Rs=dt(Ms,[["__scopeId","data-v-753faf78"]]);function Ds(e){const a=Date.now()*1e3-e,s=Math.floor(a/1e6);if(s<60)return s===1?"1 second ago":`${s} seconds ago`;const l=Math.floor(s/60);if(l<60)return l===1?"1 minute ago":`${l} minutes ago`;const o=Math.floor(l/60);if(o<24)return o===1?"1 hour ago":`${o} hours ago`;const p=Math.floor(o/24);if(p<30)return p===1?"1 day ago":`${p} days ago`;const h=Math.floor(p/30);if(h<12)return h===1?"1 month ago":`${h} months ago`;const L=Math.floor(h/12);return L===1?"1 year ago":`${L} years ago`}function Fs(e){const i=x("");let a=null;const s=()=>typeof e=="function"?e():typeof e=="number"?e:e.value,l=()=>{const o=s();i.value=Ds(o);const h=Date.now()*1e3-o,L=Math.floor(h/1e6);a!==null&&(clearInterval(a),a=null),L<60?a=setInterval(l,1e3):L<3600?a=setInterval(l,6e4):L<86400&&(a=setInterval(l,6e5))};return l(),Ht(()=>{a!==null&&clearInterval(a)}),i}const $n=We({__name:"TimeAgo",props:{timestamp:{}},setup(e){const i=e,a=Fs(()=>i.timestamp);return(s,l)=>(n(),r("span",null,m(f(a)),1))}}),qn="name:",la=["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"],mn=(e,i)=>i.created_at-e.created_at,hn=(e,i)=>`${e}::${i}`,Wa=e=>{const i=e.tags.find(s=>s.startsWith(qn));if(!i)return null;const a=i.slice(qn.length).trim();return a.length>0?a:null},St=e=>e.tags.filter(i=>!i.startsWith(qn)),Ps=e=>Wa(e)||e.agent.title||e.agent.name,Ns=e=>e.id.startsWith("__draft_")?"--------":e.id.slice(0,8),Mn=e=>Wa(e)?e.agent.title||e.agent.name:null,oa=e=>Array.from({length:Math.min(Math.max(e,0),6)},(i,a)=>12+a*8),ia=e=>la[e%la.length],da=e=>({left:`${e}px`}),zs=(e,i)=>{if(e.length===0)return[];const a=new Map(e.map(w=>[w.id,w])),s=new Map,l=[];for(const w of e){const y=w.parent;if(y&&a.has(y)){const T=s.get(y)??[];T.push(w),s.set(y,T);continue}l.push(w)}l.sort(mn);for(const w of s.values())w.sort(mn);const o=[],p=new Set,h=w=>{if(p.has(w.id))return;p.add(w.id);const y=s.get(w.id);if(y)for(const T of y)h(T)},L=(w,y,T)=>{if(p.has(w.id))return;p.add(w.id),o.push({kind:"thread",thread:w,depth:y,isNested:y>0,clusterId:T});const B=s.get(w.id);if(!B)return;const E=new Map;for(const H of B){const U=H.agent_id||H.agent?.name||H.id,G=E.get(U);G?G.push(H):E.set(U,[H])}for(const[H,U]of E.entries()){if(U.length>1){const G=hn(w.id,H),q=i(G);if(o.push({kind:"directory",key:G,depth:y+1,label:U[0]?.agent?.title||U[0]?.agent?.name||H,count:U.length,open:q,clusterId:T}),!q){for(const j of U)h(j);continue}for(const j of U)L(j,y+2,T);continue}L(U[0],y+1,T)}};for(const w of l)L(w,0,w.id);const M=e.filter(w=>!p.has(w.id)).sort(mn);for(const w of M)L(w,w.parent?1:0,w.parent??w.id);return o},js=["id","onClick"],Bs={key:1,class:"space-y-0.5"},Os={key:0,class:"flex flex-wrap gap-1 min-w-0"},Vs={key:2,class:"flex items-center gap-1"},qs={key:0,class:"text-[10px] text-neutral-400"},Hs=["onClick"],Us={class:"flex items-center gap-2"},Ws=We({__name:"ThreadListRows",props:{rows:{},selectedThreadId:{},clusterHasNestedRows:{},isThreadFlashing:{type:Function},isDirectoryFlashing:{type:Function},hasRowTopGap:{type:Function},hasRowBottomBorder:{type:Function}},emits:["selectThread","toggleDirectory"],setup(e,{emit:i}){const a=i;return(s,l)=>(n(!0),r($e,null,Ne(e.rows,(o,p)=>(n(),r($e,{key:o.kind==="thread"?o.thread.id:o.key},[o.kind==="thread"?(n(),r("button",{key:0,id:`thread-${o.thread.id}`,class:ee(["w-full text-left cursor-pointer rounded-lg px-3 transition-colors relative",[o.isNested?e.selectedThreadId===o.thread.id?"py-1.5":"py-1.5 bg-neutral-50/40 dark:bg-neutral-900/20":"py-2",e.hasRowTopGap(p)?"mt-1":"",e.hasRowBottomBorder(p)&&e.clusterHasNestedRows[o.clusterId]?"mb-1":"",o.thread.terminated?"opacity-50 text-neutral-500 dark:text-neutral-500":"",e.selectedThreadId===o.thread.id?"agents-surface-selected":"agents-surface-hover"]]),style:vt(o.depth>0?{paddingLeft:`${12+Math.min(o.depth,6)*8}px`}:void 0),onClick:h=>a("selectThread",o.thread.id)},[(n(!0),r($e,null,Ne(f(oa)(o.depth),(h,L)=>(n(),r("span",{key:`thread-line-${L}`,class:ee(["pointer-events-none absolute inset-y-1 w-px rounded-full",f(ia)(L)]),style:vt(f(da)(h)),"aria-hidden":"true"},null,6))),128)),t("div",{class:ee(["flex items-center gap-2",!o.isNested||f(St)(o.thread).length>0||f(Mn)(o.thread)?"mb-0.5":""])},[o.thread.terminated?(n(),N(f(Ia),{key:0,size:12,class:"shrink-0 text-neutral-500 dark:text-neutral-400"})):S("",!0),t("span",{class:ee(["font-medium truncate flex-1 min-w-0",[e.selectedThreadId===o.thread.id?"agents-text-selected":"",e.isThreadFlashing(o.thread.id)?"thread-list-green-flash":""]])},m(f(Ps)(o.thread)),3),t("span",{class:ee(["flex-shrink-0 text-[10px]",e.selectedThreadId===o.thread.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},[z($n,{timestamp:o.thread.created_at*1e6},null,8,["timestamp"])],2)],2),f(Mn)(o.thread)?(n(),r("div",{key:0,class:ee(["mb-0.5 truncate text-[10px]",e.selectedThreadId===o.thread.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},m(f(Mn)(o.thread)),3)):S("",!0),o.isNested?f(St)(o.thread).length>0?(n(),r("div",Vs,[(n(!0),r($e,null,Ne(f(St)(o.thread).slice(0,3),h=>(n(),r("span",{key:h,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"},m(h),1))),128)),f(St)(o.thread).length>3?(n(),r("span",qs," +"+m(f(St)(o.thread).length-3),1)):S("",!0)])):S("",!0):(n(),r("div",Bs,[t("span",{class:ee(["block max-w-[80px] truncate font-mono text-[10px]",e.selectedThreadId===o.thread.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},m(f(Ns)(o.thread)),3),f(St)(o.thread).length>0?(n(),r("div",Os,[(n(!0),r($e,null,Ne(f(St)(o.thread).slice(0,3),h=>(n(),r("span",{key:h,class:ee(["inline-block px-1.5 py-0.5 rounded text-[10px] truncate max-w-[60px]",e.selectedThreadId===o.thread.id?"agents-surface-selected-strong agents-text-selected":"bg-neutral-200 dark:bg-neutral-800 text-neutral-600 dark:text-neutral-400"])},m(h),3))),128)),f(St)(o.thread).length>3?(n(),r("span",{key:0,class:ee(["text-[10px]",e.selectedThreadId===o.thread.id?"agents-text-selected-muted":"text-neutral-400"])}," +"+m(f(St)(o.thread).length-3),3)):S("",!0)])):S("",!0)]))],14,js)):(n(),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:vt({paddingLeft:`${12+Math.min(o.depth,6)*8}px`}),onClick:h=>a("toggleDirectory",o.key)},[(n(!0),r($e,null,Ne(f(oa)(o.depth),(h,L)=>(n(),r("span",{key:`directory-line-${L}`,class:ee(["pointer-events-none absolute inset-y-1 w-px rounded-full",f(ia)(L)]),style:vt(f(da)(h)),"aria-hidden":"true"},null,6))),128)),t("div",Us,[z(f(Aa),{size:13,class:"text-neutral-500 dark:text-neutral-400 shrink-0"}),t("span",{class:ee(["truncate flex-1 min-w-0 text-[11px] font-medium text-neutral-600 dark:text-neutral-300",e.isDirectoryFlashing(o.key)?"thread-list-green-flash":""])},m(o.label)+" ("+m(o.count)+") ",3),o.open?(n(),N(f(_t),{key:0,size:14,class:"text-neutral-500 dark:text-neutral-400 shrink-0"})):(n(),N(f(Pt),{key:1,size:14,class:"text-neutral-500 dark:text-neutral-400 shrink-0"}))])],12,Hs))],64))),128))}}),Ks=dt(Ws,[["__scopeId","data-v-1e5bebfe"]]),Js={class:"flex flex-col flex-1 min-h-0 overflow-visible"},Gs={class:"px-3 border-b border-neutral-300 dark:border-neutral-700 h-12 flex items-center shrink-0"},Ys={class:"flex items-center justify-between w-full"},Qs={key:0,class:"text-xs font-mono text-neutral-500 dark:text-neutral-400"},Xs={class:"flex items-center gap-1"},Zs=["title","aria-label","aria-pressed"],el={key:0,class:"px-3 py-2 border-b border-neutral-200 dark:border-neutral-800 shrink-0 space-y-2"},tl={class:"relative"},nl={class:"flex items-center gap-2 w-full"},al={key:0,class:"flex-1 min-w-0"},rl={key:0,class:"p-4 flex justify-center"},sl={key:1,class:"p-4 text-red-600 dark:text-red-400"},ll={key:2,class:"text-neutral-500 dark:text-neutral-400 text-center py-12"},ol={key:1,class:"text-base"},il={key:3,class:"px-2 py-2"},dl={key:0,class:"p-3 flex justify-center"},ul={key:1,class:"p-3 text-center text-[10px] text-neutral-400 dark:text-neutral-500"},cl=50,ua=1800,Eh=We({__name:"ThreadListPane",props:{selectedThreadId:{},optimisticThread:{},agentId:{},showCollapseButton:{type:Boolean}},emits:["selectThread","collapse","createThread","threadsLoaded"],setup(e,{expose:i,emit:a}){const s=e,l=a,o=x(""),p=x(null),h=x(!1),L=x(null),M=x(null),w=x(null),y=x(!1),T=A(()=>s.agentId!=null);he(()=>s.agentId,c=>{c!=null&&(M.value=c),y.value=!1},{immediate:!0});const B=x(null),{agents:E,isFetching:H}=Ha(),U=A(()=>E.value.map(c=>({value:c.name,label:c.title||c.name}))),G=x(0),q=x([]),j=x(!1),J=x(!1),ve=tr(c=>{p.value=c||null},300);he(o,c=>{ve(c)});const ae=A(()=>{let c=0;return p.value&&c++,M.value&&!T.value&&c++,(w.value||B.value)&&c++,c});function Q(){o.value="",p.value=null,T.value||(M.value=null),w.value=null,B.value=null}async function W(){h.value=!0,await Be(),L.value?.focus(),L.value?.select()}function fe(){Q(),h.value=!1}function X(){h.value?fe():W()}const{threads:Re,hasMore:Fe,isFetching:re,isFinished:De,error:P,refetch:de}=os({limit:cl,offset:G,search:p,agentId:M,startDate:w,endDate:B}),le=x([]),ye=x(new Set);he([p,M,w,B],()=>{G.value=0,q.value=[],le.value=[],ye.value.clear(),j.value=!1,J.value=!1}),he(Re,c=>{if(G.value===0)q.value=[...c];else{const C=new Set(q.value.map(Y=>Y.id)),O=c.filter(Y=>!C.has(Y.id));q.value=[...q.value,...O],J.value=!0}j.value=!1});const me=x({}),pe=x({}),Me=x({}),Ce=new Set,ne=c=>me.value[c]??!1,Z=c=>{me.value[c]=!ne(c)},K=c=>{pe.value[c]=!0;const C=setTimeout(()=>{delete pe.value[c],Ce.delete(C)},ua);Ce.add(C)},xe=c=>{Me.value[c]=!0;const C=setTimeout(()=>{delete Me.value[c],Ce.delete(C)},ua);Ce.add(C)};Ht(()=>{Ce.forEach(c=>clearTimeout(c)),Ce.clear()});const ue=c=>pe.value[c]===!0,Se=c=>Me.value[c]===!0,Ue=c=>{if(M.value&&c.agent_id!==M.value&&!c.parent||w.value&&c.created_at<w.value||B.value&&c.created_at>B.value)return!1;if(p.value){const C=p.value.toLowerCase(),O=c.id.toLowerCase().includes(C),Y=c.tags.some(Le=>Le.toLowerCase().includes(C));if(!O&&!Y)return!1}return!0},D=A(()=>{const c=q.value.filter(Le=>!ye.value.has(Le.id)),C=new Set(c.map(Le=>Le.id)),Y=[...le.value.filter(Le=>!C.has(Le.id)&&!ye.value.has(Le.id)),...c];return s.optimisticThread&&!Y.some(Le=>Le.id===s.optimisticThread?.id)&&Y.unshift(s.optimisticThread),Y.sort(mn)}),be=A(()=>D.value.filter(c=>!c.parent).length),se=A(()=>zs(D.value,ne)),we=c=>{const C=se.value[c],O=se.value[c+1];return C?O?C.clusterId!==O.clusterId:!0:!1},Te=c=>{const C=se.value[c],O=se.value[c-1];if(!C||!O||C.clusterId!==O.clusterId)return!1;const Y=C.kind==="directory"||C.kind==="thread"&&C.isNested,Le=O.kind==="thread"&&!O.isNested;return Y&&Le},ce=A(()=>{const c={};for(const C of se.value)if(!c[C.clusterId]){if(C.kind==="directory"){c[C.clusterId]=!0;continue}if(C.kind==="thread"&&C.isNested){c[C.clusterId]=!0;continue}c[C.clusterId]=!1}return c}),ge=x(null);function oe(){j.value||re.value||!Fe.value||(j.value=!0,G.value=q.value.length)}const{arrivedState:Ie}=Za(ge,{offset:{bottom:100}});he(()=>Ie.bottom,c=>{c&&Fe.value&&!re.value&&!j.value&&oe()});const je=c=>{const C=E.value.find(Y=>Y.name===c.agent_name),O=c.agent;return{id:c.id,agent_id:c.agent_name,user_id:c.user_id,tags:c.tags||[],parent:c.parent??null,terminated:c.terminated??null,created_at:c.created_at,agent:{name:c.agent_name,title:O?.title||C?.title,type:O?.type||C?.type||"ai_human"}}},Oe=async c=>{if(c.type==="thread_created"){const C=je(c.thread);if(!Ue(C))return;if(C.parent)if(D.value.filter(Y=>Y.parent===C.parent&&Y.agent_id===C.agent_id).length+1>1){const Y=hn(C.parent,C.agent_id);xe(Y),ne(Y)&&K(C.id)}else K(C.id);le.value.unshift(C)}else if(c.type==="thread_updated"){const C=je(c.thread),O=D.value.find(Ke=>Ke.id===C.id);if(!Ue(C)){le.value=le.value.filter(Ke=>Ke.id!==C.id),q.value=q.value.filter(Ke=>Ke.id!==C.id);return}ye.value.delete(C.id);const Y=le.value.findIndex(Ke=>Ke.id===C.id);Y>=0&&(le.value[Y]=C);const Le=q.value.findIndex(Ke=>Ke.id===C.id);if(Le>=0?q.value[Le]=C:Y===-1&&le.value.unshift(C),!!C.terminated&&!O?.terminated)if(C.parent)if((D.value.filter(Je=>Je.parent===C.parent&&Je.agent_id===C.agent_id).length||1)>1){const Je=hn(C.parent,C.agent_id);xe(Je),ne(Je)&&K(C.id)}else K(C.id);else K(C.id)}else c.type==="thread_deleted"&&(ye.value.add(c.threadId),le.value=le.value.filter(C=>C.id!==c.threadId))},{wsConnected:V,wsError:F}=bs({onEvent:Oe});he(()=>G.value,c=>{c===0&&(le.value=[])}),he(()=>[s.selectedThreadId,D.value],([c,C])=>{if(!c||C.length===0)return;const O=new Map(C.map(Le=>[Le.id,Le]));let Y=O.get(c);for(;Y&&Y.parent;){const Le=hn(Y.parent,Y.agent_id);me.value[Le]=!0,Y=O.get(Y.parent)}},{immediate:!0}),he(()=>({rows:se.value,finished:De.value}),({rows:c,finished:C})=>{const O=c.find(Y=>Y.kind==="thread");C&&!y.value&&(y.value=!0,l("threadsLoaded",O?.thread.id??null,D.value.map(Y=>Y.id)))},{immediate:!0}),i({refetch:de});const u=c=>{l("selectThread",c)};return(c,C)=>{const O=qt("FormKit");return n(),r("div",Js,[t("div",Gs,[t("div",Ys,[t("button",{onClick:C[0]||(C[0]=ze(Y=>l("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 Threads pane","aria-label":"Collapse Threads pane"},[z(f(er),{size:18,class:"shrink-0"}),C[8]||(C[8]=t("h2",{class:"text-base font-bold"},"Threads",-1)),!f(re)&&be.value>0?(n(),r("span",Qs," ("+m(be.value)+") ",1)):S("",!0),z(Ua,{connected:f(V),error:f(F)},null,8,["connected","error"])]),t("div",Xs,[t("button",{type:"button",class:ee(["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",h.value?"agents-border-selected agents-text-selected bg-white dark:bg-neutral-950":""]),title:h.value?"Hide search":"Search threads","aria-label":h.value?"Hide search":"Search threads","aria-pressed":h.value,onClick:ze(X,["stop"])},[z(f(zn),{size:16})],10,Zs),t("button",{onClick:C[1]||(C[1]=Y=>l("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"},[z(f(Ea),{size:16})]),e.showCollapseButton!==!1?(n(),r("button",{key:0,onClick:C[2]||(C[2]=Y=>l("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"},[z(f(La),{size:17})])):S("",!0)])])]),h.value||ae.value>0?(n(),r("div",el,[t("div",tl,[z(f(zn),{size:14,class:"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-neutral-400"}),rt(t("input",{ref_key:"threadSearchInputRef",ref:L,"onUpdate:modelValue":C[3]||(C[3]=Y=>o.value=Y),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),[[xn,o.value]]),o.value?(n(),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:C[4]||(C[4]=Y=>{o.value="",p.value=null,W()})},[z(f(Et),{size:13})])):S("",!0)]),t("div",nl,[T.value?S("",!0):(n(),r("div",al,[z(O,{type:"selectSearch",size:"sm","active-highlight":"",value:M.value||"",options:U.value,placeholder:"All agents","search-placeholder":"Search agents...",loading:f(H),onInput:C[5]||(C[5]=Y=>M.value=Y||null)},null,8,["value","options","loading"])])),z(Rs,{startDate:w.value,"onUpdate:startDate":C[6]||(C[6]=Y=>w.value=Y),endDate:B.value,"onUpdate:endDate":C[7]||(C[7]=Y=>B.value=Y),class:ee(T.value?"w-full":"flex-1 min-w-0")},null,8,["startDate","endDate","class"]),ae.value>0?(n(),r("button",{key:1,onClick:Q,type:"button",class:"text-[10px] font-mono text-neutral-400 hover:text-neutral-900 dark:hover:text-neutral-100 transition-colors whitespace-nowrap"}," Clear ")):(n(),r("button",{key:2,onClick:fe,type:"button",class:"text-[10px] font-mono text-neutral-400 hover:text-neutral-900 dark:hover:text-neutral-100 transition-colors whitespace-nowrap"}," Close "))])])):S("",!0),t("div",{ref_key:"scrollContainerRef",ref:ge,class:"flex-1 overflow-y-auto text-xs min-h-0"},[f(re)&&q.value.length===0?(n(),r("div",rl,[z(qe)])):f(P)?(n(),r("div",sl," Error: "+m(f(P)),1)):se.value.length===0?(n(),r("div",ll,[ae.value>0?(n(),r($e,{key:0},[C[9]||(C[9]=t("p",{class:"text-base mb-2"},"No matching threads",-1)),t("button",{onClick:Q,type:"button",class:"text-xs text-accent-600 dark:text-accent-400 hover:underline"}," Clear filters ")],64)):(n(),r("p",ol,"No threads found"))])):(n(),r("div",il,[z(Ks,{rows:se.value,"selected-thread-id":e.selectedThreadId,"cluster-has-nested-rows":ce.value,"is-thread-flashing":ue,"is-directory-flashing":Se,"has-row-top-gap":Te,"has-row-bottom-border":we,onSelectThread:u,onToggleDirectory:Z},null,8,["rows","selected-thread-id","cluster-has-nested-rows"]),j.value||f(re)&&q.value.length>0?(n(),r("div",dl,[z(qe)])):J.value&&!f(Fe)&&se.value.length>0?(n(),r("div",ul," All "+m(be.value)+" threads loaded ",1)):S("",!0)]))],512)])}}});function Hn(e){return!!e&&typeof e=="object"}function fl(e){if(Hn(e)&&!Array.isArray(e))return e;if(typeof e=="string")try{const i=JSON.parse(e);return Hn(i)&&!Array.isArray(i)?i:void 0}catch{return}}function vl(e){const i=x(null),a=x(!1),s=x(null);let l=null;try{l=Mr()}catch{}const o=l?.messages??x([]),p=A(()=>l?.groupedMessages?.value?l.groupedMessages.value:l?.workblocks?.value?l.workblocks.value:o.value),h=A(()=>l?.status.value==="connected"),L=x(null);l?.loading??x(!1);const M=A(()=>o.value.some(P=>P.status==="pending"));function w(P){if(!i.value?.agent)return null;const de=i.value.agent,le=P==="assistant"?"A":"B";return le==="A"&&de.side_a_label?de.side_a_label:le==="B"&&de.side_b_label?de.side_b_label:null}function y(P){const de=P.path??"",le=P.name??de.split("/").pop()??"attachment";return{id:P.id||`att-${de||le||Math.random().toString(36).slice(2)}`,type:"file",path:de,name:le,mimeType:P.mimeType||P.mediaType||"application/octet-stream",width:P.width,height:P.height,description:P.description}}function T(P){if(P){if(Array.isArray(P))return P.length>0?P.map(y):void 0;try{const de=JSON.parse(P);return Array.isArray(de)&&de.length>0?de.filter(Hn).map(y):void 0}catch{return}}}function B(P,de){const le=[];P.reasoning_content&&le.push({id:`${P.id}-reasoning`,type:"reasoning",content:P.reasoning_content,created_at:P.created_at}),P.content&&le.push({id:`${P.id}-content`,type:"content",content:P.content,created_at:P.created_at});const ye=P.workItems.filter(ne=>ne.type==="tool_call"),me=P.workItems.filter(ne=>ne.type==="tool_result"),pe=new Map;for(const ne of me)ne.tool_call_id&&pe.set(ne.tool_call_id,ne);for(const ne of ye){const Z=ne.tool_call_id||ne.id,K=pe.get(Z);let xe="pending";if(K){const ue=(K.content||"").toLowerCase(),Se=ue.includes("failed")||ue.includes("error"),Ue=ue.length<500;xe=K.status==="error"||Se&&Ue?"failed":"success"}le.push({id:ne.id,type:"tool_call",content:ne.name||"",created_at:P.created_at,tool_name:ne.name,tool_call_id:Z,tool_arguments:ne.content||void 0,response:K?.content||null,response_status:xe,response_log_id:null,log_id:null})}const Me=le.some(ne=>ne.type==="tool_call"&&ne.response_status==="pending"),Ce=P.status!=="pending"&&!Me;return{type:"work",id:P.id,role:"assistant",items:le,created_at:P.created_at,updated_at:P.updated_at??P.response_completed_at??P.created_at,request_sent_at:P.request_sent_at??P.created_at,response_completed_at:P.response_completed_at??(Ce?P.updated_at??P.created_at:null),isComplete:Ce,sideLabel:w("assistant"),status:P.status}}function E(P){return P==="assistant"?"assistant":"user"}function H(P){for(let de=P.length-1;de>=0;de--){const le=(P[de].content||"").trim();if(le.length>0)return le}return""}function U(P){const de=new Set,le=[];for(const ye of P){const me=T(ye.attachments);if(me?.length)for(const pe of me)de.has(pe.path)||(de.add(pe.path),le.push(pe))}return le.length>0?le:void 0}function G(P){if(!P)return!1;if(P.tool_status==="error"||P.status==="failed")return!0;const de=(P.content||"").toLowerCase();return de?de.includes("failed to execute tool")||de.includes("has reported a failure")||de.includes("execution stopped before completion"):!1}function q(P){const de=P.messages||[],le=de[de.length-1],ye=le?E(le.role):"assistant",me=le?.log_id??null,pe=(P.subagent_status||"").toLowerCase(),Me=G(le)||pe.includes("error")||pe.includes("failed"),Ce=H(de),ne=U(de),Z=de.filter(K=>{const xe=T(K.attachments);return!!K.content||!!K.status||!!(xe&&xe.length>0)}).map(K=>({id:K.id,role:K.role,content:K.content||"",created_at:K.created_at,silent:K.silent,attachments:T(K.attachments)}));return{type:"subagent",id:P.id,role:ye,created_at:P.created_at,updated_at:P.updated_at,subagentId:P.subagent_id,subagentName:P.subagent_name??null,subagentTitle:P.subagent_title??null,subagentThreadName:P.subagent_thread_name??null,subagentStatus:P.subagent_status??null,subagentHasError:Me,subagentResumable:P.subagent_resumable??null,subagentBlocking:P.subagent_blocking??null,messages:Z,messageCount:de.length,latestContent:Ce,attachments:ne,log_id:me,sideLabel:w(ye),silent:de.length>0&&de.every(K=>!!K.silent)}}function j(P){const de=(P.subagents||[]).map(ye=>q(ye)),le=de.reduce((ye,me)=>ye?me.updated_at>ye.updated_at?me:ye:me,null);return{type:"subagent_group",id:P.id,role:le?.role??"assistant",created_at:P.created_at,updated_at:P.updated_at,subagents:de,count:de.length,log_id:le?.log_id??null,sideLabel:le?.sideLabel??w("assistant"),silent:de.every(ye=>!!ye.silent)}}function J(P){return{type:"status",id:P.id,role:"system",content:P.content,created_at:P.created_at,statusKind:P.status_kind??null,subagentId:P.subagent_id??null}}const ve=A(()=>{const P=[],le=p.value.filter(me=>(me.depth??0)===0);let ye=[];for(let me=0;me<le.length;me++){const pe=le[me];if(P[P.length-1]?.role,"type"in pe&&pe.type==="workblock"){const xe=B(pe);P.push(xe),pe.attachments&&pe.attachments.length>0&&ye.push(...pe.attachments.map(y));continue}if("type"in pe&&pe.type==="subagent_block"){ye=[],P.push(q(pe));continue}if("type"in pe&&pe.type==="subagent_group_block"){ye=[],P.push(j(pe));continue}if("type"in pe&&pe.type==="status"){ye=[],P.push(J(pe));continue}const Ce=pe,ne=Ce.role;if(Ce.role==="tool")continue;const Z=T(Ce.attachments);let K;if((ye.length>0||Z)&&(K=[...ye,...Z||[]],ye=[]),Ce.content||ne==="system"||Ce.status==="pending"||K?.length){const xe={type:"text",id:Ce.id,role:ne,content:Ce.content||"",attachments:K?.length?K:void 0,created_at:Ce.created_at,log_id:Ce.log_id||null,sideLabel:w(ne),isOptimistic:Ce.isOptimistic,status:Ce.status,silent:Ce.silent,metadata:fl(Ce.metadata)};P.push(xe)}}return P});async function ae(){if(!e.value){i.value=null;return}try{const P=await fetch(He(`/api/threads/${e.value}`));P.ok&&(i.value=await P.json())}catch{i.value=null}}async function Q(P){if(e.value){if(l?.deleteMessage){await l.deleteMessage(P);return}try{if(!(await fetch(He(`/api/threads/${e.value}/messages/${P}`),{method:"DELETE"})).ok)throw new Error("Failed to delete message")}catch(de){throw de}}}async function W(P,de){if(e.value)try{if(!(await fetch(He(`/api/threads/${e.value}/messages/${P}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:de})})).ok)throw new Error("Failed to update message")}catch(le){throw le}}he(e,async P=>{P?(a.value=!0,await ae(),a.value=!1):i.value=null},{immediate:!0});const fe=l?.sendMessage,X=l?.stopExecution,Re=l?.attachments??x([]),Fe=l?.addAttachment??(()=>{}),re=l?.removeAttachment??(()=>{}),De=l?.clearAttachments??(()=>{});return{messages:ve,threadInfo:i,isFetching:a,error:s,wsConnected:h,wsError:L,isExecuting:M,sendMessage:fe,stopThread:X,attachments:Re,addAttachment:Fe,removeAttachment:re,clearAttachments:De,deleteMessageById:Q,updateMessageContent:W}}const Rn="__shiki_highlighter__";let pn=null;async function pl(){return typeof window<"u"&&window[Rn]?window[Rn]:pn||(pn=Promise.all([at(()=>import("./syntax.js").then(e=>e.d),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.e),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.f),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.g),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.i),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.k),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.l),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.m),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.n),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.s),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.o),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.p),__vite__mapDeps([0,1])),at(()=>import("./vue.js").then(e=>e.bb),__vite__mapDeps([2,3,1,0])),at(()=>import("./syntax.js").then(e=>e.y),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.q),__vite__mapDeps([0,1])),at(()=>import("./syntax.js").then(e=>e.r),__vite__mapDeps([0,1]))]).then(async([{createHighlighterCore:e},{createJavaScriptRegexEngine:i},a,s,l,o,p,h,L,M,w,y,T,B,E,H])=>{const U=await e({themes:[E.default,H.default],langs:[a.default,s.default,l.default,o.default,p.default,h.default,L.default,M.default,w.default,y.default,T.default,B.default],engine:i()});return typeof window<"u"&&(window[Rn]=U),U}),pn)}const gl={class:"code-block"},ml={key:0,class:"text-xs text-neutral-500 p-2"},hl=["innerHTML"],Ft=We({__name:"CodeBlock",props:{code:{},language:{}},setup(e){const i=e,a=x(""),s=x(!0),l={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"},o=new Set(["bash","css","html","javascript","jsx","json","markdown","shellscript","tsx","typescript","vue","yaml"]),p=w=>{const y=w?.trim().toLowerCase()||"text";return l[y]??y},h=w=>w.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),L=w=>`<pre class="shiki shiki-text"><code>${h(w)}</code></pre>`,M=async()=>{const w=i.code??"";if(!w){a.value='<pre class="shiki"><code></code></pre>',s.value=!1;return}try{const y=await pl(),T=p(i.language);o.has(T)?a.value=y.codeToHtml(w,{lang:T,themes:{light:"github-light",dark:"github-dark"}}):a.value=L(w)}catch{a.value=L(w)}finally{s.value=!1}};return zt(()=>{M()}),he(()=>i.code,()=>{M()}),he(()=>i.language,()=>{M()}),(w,y)=>(n(),r("div",gl,[s.value?(n(),r("div",ml,"Loading...")):(n(),r("div",{key:1,innerHTML:a.value,class:"code-content"},null,8,hl))]))}}),xl={key:0,class:"absolute inset-0 flex items-center justify-center bg-neutral-100 dark:bg-neutral-800"},bl={key:1,class:"absolute inset-0 flex items-center justify-center bg-neutral-100 dark:bg-neutral-800 text-neutral-400"},yl=["src","alt"],kl={key:2,class:"pointer-events-none absolute inset-0 flex items-center justify-center bg-black/0 group-hover:bg-black/35 transition-colors"},wl={class:"text-xs text-neutral-600 dark:text-neutral-300 truncate max-w-[100px]"},Dn=We({__name:"FileAttachment",props:{attachment:{},threadId:{},showRemove:{type:Boolean}},emits:["remove"],setup(e,{emit:i}){const a=nr(),s=ar(),l=e,o=i,p=x(!0),h=x(!1),L=A(()=>l.attachment.mimeType.startsWith("image/")),M=A(()=>!!l.attachment.thumbnailBase64),w=A(()=>{if(!l.threadId||!l.attachment.path)return"";const U=l.attachment.path.startsWith("/")?l.attachment.path.slice(1):l.attachment.path;return He(`/api/threads/${l.threadId}/fs/${U}`)}),y=A(()=>L.value?l.attachment.thumbnailBase64?`data:image/webp;base64,${l.attachment.thumbnailBase64}`:w.value:"");function T(){p.value=!1,h.value=!1}function B(){p.value=!1,h.value=!0}function E(){o("remove",l.attachment.id)}function H(){if(!l.attachment.path){w.value&&window.open(w.value,"_blank");return}a.replace({query:{...s.query,inspector:"files",filePath:l.attachment.path},hash:s.hash})}return(U,G)=>(n(),r("div",{class:ee(["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]":L.value,"px-2.5 py-1.5":!L.value,"cursor-pointer":L.value&&w.value}]),onClick:G[0]||(G[0]=q=>L.value&&w.value?H():void 0)},[L.value?(n(),r($e,{key:0},[p.value&&!h.value&&!M.value?(n(),r("div",xl,[...G[1]||(G[1]=[t("div",{class:"w-4 h-4 border-2 border-neutral-300 border-t-neutral-600 rounded-full animate-spin"},null,-1)])])):S("",!0),h.value&&!M.value?(n(),r("div",bl,[z(f(Ma),{size:24})])):S("",!0),rt(t("img",{src:y.value||w.value,alt:e.attachment.name,class:"w-full h-full object-cover",onLoad:T,onError:B},null,40,yl),[[ht,!p.value&&!h.value||M.value]]),w.value?(n(),r("div",kl,[...G[2]||(G[2]=[t("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)])])):S("",!0)],64)):(n(),r($e,{key:1},[z(f(bn),{size:14,class:"text-neutral-500 mr-1 flex-shrink-0"}),t("span",wl,m(e.attachment.name),1)],64)),e.showRemove?(n(),r("button",{key:2,onClick:ze(E,["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"},[z(f(Et),{size:10})])):S("",!0)],2))}}),_l=["onMouseenter","onMouseleave","onClick"],$l=["onClick"],Cl={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"},Sl={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"},Tl={key:0,class:"w-full text-center text-xs text-neutral-400 dark:text-neutral-500 py-1"},Il={key:0,class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-400 dark:text-neutral-500 leading-none mb-1"},Al=["contenteditable","onInput"],El=["innerHTML"],Ll={key:3,class:"inline-flex items-center gap-1 rounded-full bg-neutral-100 dark:bg-neutral-800/60 px-3 py-2"},Ml={key:0,class:"inline-flex items-center gap-1.5"},Rl=["src"],Dl={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"},Fl=["title","onClick"],Pl={key:0,class:"flex flex-wrap gap-2 px-4"},Nl=["onClick","onMouseenter"],zl={key:0,class:"flex items-center gap-2 px-4 py-2 min-w-0"},jl={key:0,class:"truncate text-neutral-700 dark:text-neutral-300 min-w-0"},Bl={key:1,class:"truncate text-neutral-600 dark:text-neutral-400 min-w-0"},Ol={class:"text-neutral-500 dark:text-neutral-400 flex-shrink-0"},Vl={class:"work-op-strip","aria-label":"Operation statuses"},ql=["title"],Hl={key:1,class:"px-4 py-2 space-y-2.5"},Ul={class:"flex items-center gap-2"},Wl={class:"min-w-0 truncate text-neutral-700 dark:text-neutral-300"},Kl={class:"shrink-0 text-neutral-500 dark:text-neutral-400"},Jl={class:"work-op-strip","aria-label":"Operation statuses"},Gl=["title"],Yl={key:0,class:"space-y-1"},Ql=["onClick","onMouseenter"],Xl=["title"],Zl={class:"font-mono font-medium text-neutral-800 dark:text-neutral-100 flex-shrink-0"},eo={key:2,class:"text-neutral-500 dark:text-neutral-400 truncate flex-1 min-w-0"},to={key:0,class:"pl-5 mt-2 space-y-3"},no={key:0},ao={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"},ro={class:"pt-1 font-mono text-[12px] text-neutral-500 dark:text-neutral-500"},so={class:"min-w-0"},lo={key:1,class:"break-words text-neutral-800 dark:text-neutral-200"},oo={key:1},io={class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-400 dark:text-neutral-500 mb-1"},uo=["onClick","onMouseenter"],co={key:0,class:"m-0 whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed"},fo={key:1},vo=["onClick"],po={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"},go={key:2,class:"pl-5 pb-1 break-words text-neutral-600 dark:text-neutral-400"},mo={class:"flex items-center justify-between gap-3 border-b border-neutral-100 px-3 py-2 dark:border-neutral-900"},ho={class:"min-w-0"},xo={class:"truncate text-[12px] font-medium text-neutral-800 dark:text-neutral-100"},bo={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"},yo={class:"divide-y divide-neutral-100 dark:divide-neutral-900"},ko=["onClick"],wo={class:"flex items-center gap-3"},_o=["src"],$o={class:"min-w-0 flex-1"},Co={class:"flex items-center gap-2"},So={class:"truncate text-[13px] font-medium text-neutral-900 dark:text-neutral-50"},To={class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Io={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"},Ao={class:"ml-11 mt-1 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Eo={key:0,class:"ml-12 mt-1.5 space-y-1.5 border-l border-neutral-200 pl-2.5 dark:border-neutral-800"},Lo={class:"flex items-center gap-2 text-[10px] text-neutral-500 dark:text-neutral-400"},Mo={class:"font-medium uppercase text-neutral-600 dark:text-neutral-300"},Ro={key:0,class:"italic"},Do=["innerHTML"],Fo={key:1,class:"mt-2 flex flex-wrap gap-2"},Po=["onClick"],No={class:"flex items-center gap-3"},zo=["src"],jo={class:"min-w-0 flex-1"},Bo={class:"flex items-center gap-2"},Oo={class:"truncate text-[13px] font-medium text-neutral-900 dark:text-neutral-50"},Vo={class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},qo={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"},Ho={class:"ml-12 mt-1 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Uo={key:0,class:"ml-12 mt-2 space-y-1.5 border-l border-neutral-200 pl-2.5 dark:border-neutral-800"},Wo={class:"flex items-center gap-2 text-[10px] text-neutral-500 dark:text-neutral-400"},Ko={class:"font-medium uppercase text-neutral-600 dark:text-neutral-300"},Jo={key:0,class:"italic"},Go=["innerHTML"],Yo={key:1,class:"mt-2 flex flex-wrap gap-2"},Qo=We({__name:"AgentMessages",props:{messages:{},threadId:{},selectedMessageId:{},selectedLogId:{},selectedEffectId:{},hoveredLogId:{},isEditMode:{type:Boolean},selectedForDelete:{},editedMessages:{},assistantAvatarSrc:{},userAvatarSrc:{}},emits:["messageClick","messageHover","selectionChange","messageEdit"],setup(e,{expose:i,emit:a}){const s=e,l=a;sa.setOptions({gfm:!0,breaks:!0});function o(g){const b=s.selectedForDelete?.has(g)??!1;l("selectionChange",g,!b)}function p(g,b){const ke=g.target.innerText;l("messageEdit",b,ke)}function h(g){return g.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function L(g){if(typeof window>"u"||typeof DOMParser>"u")return g.replace(/<script[\s\S]*?>[\s\S]*?<\/script>/gi,"").replace(/\son\w+="[^"]*"/gi,"").replace(/\s(href|src)="javascript:[^"]*"/gi,"");const b=new DOMParser().parseFromString(g,"text/html"),$=["script","style","iframe","object","embed"];for(const ke of $)b.querySelectorAll(ke).forEach(te=>te.remove());return b.body.querySelectorAll("*").forEach(ke=>{for(const te of Array.from(ke.attributes)){const Pe=te.name.toLowerCase(),lt=te.value.trim().toLowerCase();(Pe.startsWith("on")||Pe==="style"||(Pe==="href"||Pe==="src")&&(lt.startsWith("javascript:")||lt.startsWith("data:text/html")))&&ke.removeAttribute(te.name)}}),b.body.innerHTML}function M(g){return!!g&&typeof g=="object"&&!Array.isArray(g)}function w(g){const b=h(st(g||"")),$=sa.parse(b,{async:!1});return L($)}function y(g){return s.editedMessages?.has(g)??!1}const T=x(new Map);function B(g,b){b?T.value.set(g,b):T.value.delete(g)}function E(g,b){B(g,b instanceof HTMLElement?b:null)}function H(g){const b=s.messages.findIndex($=>$.log_id===g);if(b<=0)return-1;for(let $=b-1;$>=0;$--){const ke=s.messages[$];if(ke.role==="user")return $;if(ke.role==="assistant"&&ke.log_id)break}return-1}function U(g){for(let b=0;b<s.messages.length;b++){const $=s.messages[b];if($.log_id===g||$.type==="work"&&$.items&&$.items.some(Pe=>Pe.log_id===g||Pe.response_log_id===g))return b}return-1}function G(g,b){const ke=U(g);if(ke===-1)return!1;const te=T.value.get(ke);if(!te)return!1;const Pe=s.messages[ke];let lt=null;if(Pe.role==="assistant"&&Pe.log_id){const _=H(Pe.log_id);lt=_!==-1?T.value.get(_):null}const gt=b.getBoundingClientRect(),I=te.getBoundingClientRect();if(I.top<gt.top){const _e=(lt||te).getBoundingClientRect().top-gt.top-10;b.scrollBy({top:_e,behavior:"smooth"})}else if(I.bottom>gt.bottom){const _=I.bottom-gt.bottom+10;b.scrollBy({top:_,behavior:"smooth"})}else if(lt){const _=lt.getBoundingClientRect();if(_.top<gt.top){const R=_.top-gt.top-10;b.scrollBy({top:R,behavior:"smooth"})}}return!0}function q(g){for(const b of s.messages){if(b.type!=="work")continue;if(b.items.some(te=>te.log_id===g||te.response_log_id===g))return!0}return!1}i({scrollToLogId:G,hasWorkblockForLogId:q});function j(g){const b=s.messages[g];if(b.log_id)return b.log_id;if(b.role==="user")for(let $=g+1;$<s.messages.length;$++){const ke=s.messages[$];if(ke.log_id)return ke.log_id;if(ke.role==="user")break}return null}function J(g){if(g.type!=="text")return null;const b=g.metadata;if(!M(b))return null;const $=b.scheduledEffect;return M($)?$:null}function ve(g){const b=J(g);return typeof b?.id=="string"?b.id:null}function ae(g){const b=J(g);return typeof b?.name=="string"?b.name:null}function Q(g){return ve(g)!==null}function W(g){const b=ve(g),$=ae(g);return $&&b?`${$} (${b})`:$||"Scheduled effect"}function fe(g){if(g.type!=="text")return null;const b=J(g),$=typeof b?.id=="string"?b.id:null;return $?{id:$,name:typeof b?.name=="string"?b.name:null}:null}function X(g,b){return b?j(g)===b:!1}function Re(g,b){if(s.isEditMode||g.silent||g.role==="user"&&!Q(g))return"";const $=ve(g),ke=!!j(b)||Q(g);return X(b,s.selectedLogId??null)||$&&$===s.selectedEffectId?"message-log-state message-log-state--selected":j(b)&&X(b,s.hoveredLogId??null)?"message-log-state message-log-state--hovered":ke?"message-log-state":""}function Fe(g){const b=j(g);b&&l("messageHover",b)}function re(g){j(g)&&l("messageHover",null)}function De(g){const b=s.messages[g],$=j(g),ke=fe(b);($||ke)&&l("messageClick",b.id,$,ke)}function P(g){const b=s.messages[g],$=fe(b);$&&l("messageClick",b.id,j(g),$)}const de=x(new Set),le=x(new Set),ye=x(new Set),me=x(new Set);function pe(g){de.value.has(g)?de.value.delete(g):de.value.add(g)}function Me(g){le.value.has(g)?le.value.delete(g):le.value.add(g)}function Ce(g){ye.value.has(g)?ye.value.delete(g):ye.value.add(g)}function ne(g){me.value.has(g)?me.value.delete(g):me.value.add(g)}function Z(g){if(!g)return{};try{const b=JSON.parse(g);return b&&typeof b=="object"&&!Array.isArray(b)?b:{raw:b}}catch{return{raw:g}}}function K(g){if(!g)return null;const b=Z(g),$=Object.keys(b);if($.length===0)return null;const ke=b[$[0]];return typeof ke=="string"?Ve(se(ke)):JSON.stringify(ke)}const xe={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 ue(g){if(typeof g!="string")return null;const b=g.split("?")[0]?.split("#")[0]?.split(".").pop()?.toLowerCase();return b?xe[b]??null:null}function Se(g){if(typeof g!="string")return null;const b=g.toLowerCase();return b.includes("json")?"json":b.includes("typescript")?"typescript":b.includes("javascript")?"javascript":b.includes("html")?"html":b.includes("css")?"css":b.includes("markdown")?"markdown":b.includes("yaml")||b.includes("yml")?"yaml":b.includes("shell")||b.includes("bash")?"bash":null}function Ue(g){try{return JSON.stringify(JSON.parse(g),null,2)}catch{return null}}function D(g){try{return JSON.parse(g)}catch{return null}}function be(g){return g&&typeof g=="object"&&!Array.isArray(g)?g:null}function se(g){return g.replace(/\\r\\n/g,`
|
|
3
3
|
`).replace(/\\n/g,`
|
|
4
|
-
`).replace(/\\t/g," ")}function we(g){const
|
|
5
|
-
`)||/(^|\s)(import|export|const|let|function|async|return|class|interface|type)\s/.test(
|
|
6
|
-
`)[0];return
|
|
7
|
-
`).find(Boolean)||"No activity yet"}function Se(g){const y=d(g);return y==="pending"||y==="queued"}function Xe(g){return g==="tool"?"Initialization":g==="user"?"Subagent":g==="assistant"?"Assistant":"System"}function nt(g){const y=g.subagentResumable===!0?"resumable":g.subagentResumable===!1?"non-resumable":"resumable?",C=g.subagentBlocking===!0?"blocking":g.subagentBlocking===!1?"non-blocking":"blocking?";return`${y} · ${C}`}function ct(g){return g.subagentHasError===!0}function bt(g){if(ct(g)||Se(g))return!1;const y=d(g);return y!=="idle"&&y!=="terminated"}function dn(g){if(g.type==="status")return!0;if(g.type!=="text"||g.role!=="system")return!1;const y=g.content||"";return y.includes("Execution stopped")?!0:/subagents?\s+started:/i.test(y)}function un(g){const y=g?.trim();return y?y.charAt(0).toUpperCase():"A"}function Qt(g){return g.role==="assistant"?s.assistantAvatarSrc??null:g.role==="user"?s.userAvatarSrc??null:null}return(g,y)=>(n(),r("div",null,[(n(!0),r(_e,null,Pe(e.messages,(C,ke)=>(n(),r("div",{key:C.id,ref_for:!0,ref:te=>R(ke,te),class:"flex items-center gap-2 pb-3",onMouseenter:te=>De(ke),onMouseleave:te=>se(ke),onClick:te=>e.isEditMode?o(C.id):Fe(ke)},[e.isEditMode&&C.role!=="system"?(n(),r("button",{key:0,onClick:Ne(te=>o(C.id),["stop"]),class:ee(["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(C.id),"border-green-500 bg-green-500":!e.selectedForDelete?.has(C.id)&&x(C.id),"border-neutral-400 dark:border-neutral-500 bg-transparent hover:border-neutral-500 dark:hover:border-neutral-400":!e.selectedForDelete?.has(C.id)&&!x(C.id)}])},[e.selectedForDelete?.has(C.id)?(n(),r("svg",$l,[...y[4]||(y[4]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.5 12.75l6 6 9-13.5"},null,-1)])])):x(C.id)?(n(),r("svg",Cl,[...y[5]||(y[5]=[t("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)])])):T("",!0)],10,wl)):T("",!0),t("div",{class:ee(["flex-1 flex items-center gap-2 min-w-0",{"justify-start":C.type==="subagent"||C.type==="subagent_group"||C.role==="assistant","justify-end":C.type!=="subagent"&&C.type!=="subagent_group"&&C.role==="user","justify-center":C.type==="status"||C.role==="system","cursor-pointer":(E(ke)||me(C))&&!e.isEditMode}])},[dn(C)?(n(),r("div",Sl,v(C.content),1)):C.type==="text"?(n(),r("div",{key:1,class:ee(["flex flex-col gap-2",{"w-full max-w-none items-start":C.role==="assistant","max-w-[72%] items-end":C.role==="user","max-w-[80%] items-center":C.role!=="assistant"&&C.role!=="user"}])},[t("div",{class:ee(["message-text-frame",[Me(C,ke),{"w-full":C.role==="assistant"}]])},[t("div",{class:ee(["message-text-surface transition-all",[C.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]":C.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]":C.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":C.isOptimistic},{"ring-2 ring-green-500 dark:ring-green-400":e.isEditMode&&x(C.id),"border border-dashed border-neutral-400 dark:border-neutral-500":e.isEditMode&&C.role!=="system"&&!x(C.id)}]])},[C.silent?(n(),r("div",Tl," silent ")):T("",!0),e.isEditMode&&(C.content||e.isEditMode)?(n(),r("div",{key:1,class:ee(["whitespace-pre-wrap break-words outline-none",C.silent?"text-[11px] leading-4":"text-[15px] leading-7"]),contenteditable:e.isEditMode&&C.role!=="system",onInput:te=>m(te,C.id),onClick:y[0]||(y[0]=te=>e.isEditMode&&te.stopPropagation())},v(lt(C.content)),43,Il)):C.content?(n(),r("div",{key:2,class:ee(["markdown-content break-words outline-none",C.silent?"text-[13px] leading-5":"text-[15px] leading-7"]),innerHTML:k(C.content)},null,10,Al)):C.status==="pending"?(n(),r("div",El,[...y[6]||(y[6]=[t("span",{class:"typing-dot",style:{"animation-delay":"0ms"}},null,-1),t("span",{class:"typing-dot",style:{"animation-delay":"150ms"}},null,-1),t("span",{class:"typing-dot",style:{"animation-delay":"300ms"}},null,-1)])])):T("",!0)],2),C.status!=="pending"?(n(),r("div",{key:0,class:ee(["text-[10px] mt-1 flex items-center gap-2 px-4",{"justify-start":C.role==="assistant","justify-end":C.role==="user","justify-center":C.role==="system"}])},[C.sideLabel?(n(),r("span",Ll,[Qt(C)?(n(),r("img",{key:0,src:Qt(C)||void 0,alt:"",class:"h-4 w-4 shrink-0 rounded-[4px] object-cover"},null,8,Ml)):(n(),r("span",Rl,v(un(C.sideLabel)),1)),t("span",{class:ee(C.silent?"text-neutral-400 dark:text-neutral-500":"text-neutral-500 dark:text-neutral-400")},v(C.sideLabel),3)])):T("",!0),Q(C)?(n(),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:H(C),onClick:Ne(te=>N(ke),["stop"])},[j(f(_t),{size:11,class:"shrink-0"}),y[7]||(y[7]=t("span",null,"via Scheduled Effect",-1))],8,Dl)):T("",!0),t("span",{class:ee(C.silent?"text-neutral-400 dark:text-neutral-500":"text-neutral-500 dark:text-neutral-400")},v(S(C.created_at)),3)],2)):T("",!0)],2),Ct(C,ke)?.length&&e.threadId?(n(),r("div",Fl,[(n(!0),r(_e,null,Pe(Ct(C,ke),te=>(n(),O(Dn,{key:te.id,attachment:te,threadId:e.threadId},null,8,["attachment","threadId"]))),128))])):T("",!0)],2)):C.type==="work"?(n(),r("div",{key:2,class:ee(["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":!C.silent,"text-neutral-500 dark:text-neutral-400 opacity-90":C.silent,"agents-ring-selected ring-2":!e.isEditMode&&(Ke(C)||Ye(C))}]),onClick:te=>!e.isEditMode&&(he(C.id),xt(C)[0]&&l("messageClick",C.id,xt(C)[0])),onMouseenter:te=>!e.isEditMode&&xt(C)[0]&&l("messageHover",xt(C)[0]),onMouseleave:y[3]||(y[3]=te=>!e.isEditMode&&l("messageHover",null))},[de.value.has(C.id)?(n(),r("div",ql,[t("div",Hl,[j(f(wt),{size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"}),t("span",Ul,v(z(C)),1),y[9]||(y[9]=t("span",{class:"text-neutral-400 dark:text-neutral-600"},"·",-1)),t("span",Wl,v(C.items.length)+" op"+v(C.items.length!==1?"s":""),1),t("div",Kl,[(n(!0),r(_e,null,Pe(C.items,te=>(n(),r("span",{key:te.id,class:ee(["work-op-square",u(te)]),title:c(te)},null,10,Jl))),128))])]),(n(!0),r(_e,null,Pe(C.items,te=>(n(),r("div",{key:te.id},[te.type==="tool_call"?(n(),r("div",Gl,[t("div",{onClick:Ne(ze=>{Le(te.id),te.log_id&&l("messageClick",C.id,te.log_id)},["stop"]),onMouseenter:Ne(ze=>te.log_id&&l("messageHover",te.log_id),["stop"]),onMouseleave:y[1]||(y[1]=Ne(ze=>l("messageHover",null),["stop"])),class:ee(["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":Je(te)||$t(te)}])},[oe.value.has(te.id)?(n(),O(f(wt),{key:1,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})):(n(),O(f(Pt),{key:0,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})),t("span",{class:ee(["work-op-square",u(te)]),title:c(te),"aria-hidden":"true"},null,10,Ql),t("span",Xl,v(te.tool_name),1),ne(te.tool_arguments)?(n(),r("span",Zl,v(ne(te.tool_arguments)),1)):T("",!0)],42,Yl),oe.value.has(te.id)?(n(),r("div",eo,[te.tool_arguments?(n(),r("div",to,[y[10]||(y[10]=t("div",{class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-400 dark:text-neutral-500 mb-1"},"Arguments",-1)),t("div",no,[(n(!0),r(_e,null,Pe(Ce(te.tool_arguments),ze=>(n(),r("div",{key:ze.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"},[t("div",ao,v(ze.key),1),t("div",ro,[ze.isBlock?(n(),O(Ft,{key:0,code:ze.code,language:ze.language},null,8,["code","language"])):(n(),r("span",so,v(ze.code),1))])]))),128))])])):T("",!0),te.response?(n(),r("div",lo,[t("div",oo,v(te.response_status==="failed"?"Error":"Response"),1),t("div",{class:ee(["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":te.response_status==="failed","bg-white dark:bg-neutral-950/60":te.response_status!=="failed","ring-1 agents-ring-selected":e.selectedLogId&&te.response_log_id===e.selectedLogId||e.hoveredLogId&&te.response_log_id===e.hoveredLogId&&te.response_log_id!==e.selectedLogId}]),onClick:Ne(ze=>te.response_log_id&&l("messageClick",C.id,te.response_log_id),["stop"]),onMouseenter:Ne(ze=>te.response_log_id&&l("messageHover",te.response_log_id),["stop"]),onMouseleave:y[2]||(y[2]=Ne(ze=>l("messageHover",null),["stop"]))},[te.response_status==="failed"?(n(),r("pre",uo,v(U(te.response)),1)):(n(),O(Ft,{key:1,code:Oe(te.response).code,language:Oe(te.response).language},null,8,["code","language"]))],42,io)])):T("",!0)])):T("",!0)])):te.type==="reasoning"?(n(),r("div",co,[t("button",{onClick:Ne(ze=>ae(te.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"},[ye.value.has(te.id)?(n(),O(f(wt),{key:1,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})):(n(),O(f(Pt),{key:0,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})),y[11]||(y[11]=t("span",{class:"font-medium text-neutral-800 dark:text-neutral-100"},"Reasoning",-1))],8,fo),ye.value.has(te.id)?(n(),r("div",po,v(lt(te.content)),1)):T("",!0)])):te.type==="content"?(n(),r("div",vo,v(lt(te.content)),1)):T("",!0)]))),128))])):(n(),r("div",zl,[j(f(Pt),{size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"}),Ee(C.items)?(n(),r("span",Nl,v(Ve(Ee(C.items)||"")),1)):(n(),r("span",jl,v(X(C)),1)),y[8]||(y[8]=t("span",{class:"text-neutral-400 dark:text-neutral-600 flex-shrink-0"},"·",-1)),t("span",Bl,v(C.items.length)+" op"+v(C.items.length!==1?"s":""),1),t("div",Ol,[(n(!0),r(_e,null,Pe(C.items,te=>(n(),r("span",{key:te.id,class:ee(["work-op-square",u(te)]),title:c(te)},null,10,Vl))),128))])]))],42,Pl)):C.type==="subagent_group"?(n(),r("div",{key:3,class:ee(["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":C.silent,"ring-2 agents-ring-selected":!e.isEditMode&&(Z(ke,e.selectedLogId)||Z(ke,e.hoveredLogId))}])},[t("div",mo,[t("div",go,[y[12]||(y[12]=t("div",{class:"text-[10px] font-medium uppercase text-neutral-400"}," Subagent activity ",-1)),t("div",ho,v(C.count)+" active profile"+v(C.count===1?"":"s"),1)]),t("span",xo,v(C.count),1)]),t("div",bo,[(n(!0),r(_e,null,Pe(C.subagents,te=>(n(),r("div",{key:te.id,class:"px-3 py-2"},[t("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:Ne(ze=>Y(te.id),["stop"])},[t("div",ko,[t("img",{src:ut(te),alt:"",class:"h-8 w-8 shrink-0 rounded-lg object-cover ring-1 ring-neutral-200 dark:ring-neutral-800"},null,8,_o),t("div",wo,[t("div",$o,[t("span",Co,v(yt(te)),1),t("span",{class:ee(["shrink-0 rounded-full px-1.5 py-0.5 text-[10px] leading-none ring-1 ring-inset",_(te)])},v(p(te)),3)]),t("div",So,v(vt(te))+" · "+v(nt(te))+" · ref "+v(Qe(te)),1)]),t("span",To,v(te.messageCount),1),ve.value.has(te.id)?(n(),O(f(wt),{key:0,size:14,class:"shrink-0 text-neutral-400"})):(n(),O(f(Pt),{key:1,size:14,class:"shrink-0 text-neutral-400"}))]),t("div",Io,v(ue(te)),1)],8,yo),ve.value.has(te.id)?(n(),r("div",Ao,[(n(!0),r(_e,null,Pe(te.messages,ze=>(n(),r("div",{key:ze.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"},[t("div",Eo,[t("span",Lo,v(Xe(ze.role)),1),t("span",null,v(S(ze.created_at)),1),ze.silent?(n(),r("span",Mo,"silent")):T("",!0)]),ze.content?(n(),r("div",{key:0,class:"markdown-content mt-0.5 break-words text-[11px] leading-4 text-neutral-700 dark:text-neutral-200",innerHTML:k(ze.content)},null,8,Ro)):T("",!0),ze.attachments?.length&&e.threadId?(n(),r("div",Do,[(n(!0),r(_e,null,Pe(ze.attachments,ot=>(n(),O(Dn,{key:ot.id,attachment:ot,threadId:e.threadId},null,8,["attachment","threadId"]))),128))])):T("",!0)]))),128))])):T("",!0)]))),128))])],2)):C.type==="subagent"?(n(),r("div",{key:4,class:ee(["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":C.silent,"ring-2 agents-ring-selected":!e.isEditMode&&(Z(ke,e.selectedLogId)||Z(ke,e.hoveredLogId))}])},[t("button",{type:"button",class:"w-full rounded-lg text-left transition-colors hover:bg-neutral-50 dark:hover:bg-neutral-900/70",onClick:Ne(te=>Y(C.id),["stop"])},[t("div",Po,[t("img",{src:ut(C),alt:"",class:"h-9 w-9 shrink-0 rounded-lg object-cover ring-1 ring-neutral-200 dark:ring-neutral-800"},null,8,zo),t("div",No,[t("div",jo,[t("span",Bo,v(yt(C)),1),t("span",{class:ee(["shrink-0 rounded-full px-1.5 py-0.5 text-[10px] leading-none ring-1 ring-inset",_(C)])},v(p(C)),3)]),t("div",Oo,v(vt(C))+" · "+v(nt(C))+" · ref "+v(Qe(C)),1)]),t("span",Vo,v(C.messageCount),1),ve.value.has(C.id)?(n(),O(f(wt),{key:0,size:14,class:"shrink-0 text-neutral-400"})):(n(),O(f(Pt),{key:1,size:14,class:"shrink-0 text-neutral-400"}))]),t("div",qo,v(ue(C)),1)],8,Fo),ve.value.has(C.id)?(n(),r("div",Ho,[(n(!0),r(_e,null,Pe(C.messages,te=>(n(),r("div",{key:te.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"},[t("div",Uo,[t("span",Wo,v(Xe(te.role)),1),t("span",null,v(S(te.created_at)),1),te.silent?(n(),r("span",Ko,"silent")):T("",!0)]),te.content?(n(),r("div",{key:0,class:"markdown-content mt-0.5 break-words text-[11px] leading-4 text-neutral-700 dark:text-neutral-200",innerHTML:k(te.content)},null,8,Jo)):T("",!0),te.attachments?.length&&e.threadId?(n(),r("div",Go,[(n(!0),r(_e,null,Pe(te.attachments,ze=>(n(),O(Dn,{key:ze.id,attachment:ze,threadId:e.threadId},null,8,["attachment","threadId"]))),128))])):T("",!0)]))),128))])):T("",!0)],2)):T("",!0)],2)],40,_l))),128))]))}}),Qo=st(Yo,[["__scopeId","data-v-523b9d96"]]),Xo={class:"thread-variable-form space-y-3"},Zo=["data-variable-property"],ei={class:"thread-variable-grid grid gap-2 items-start"},ti={class:"thread-variable-cell min-h-[34px] rounded border border-zinc-200 bg-zinc-100 px-3 py-2 text-sm font-mono text-neutral-700 dark:border-zinc-700 dark:bg-zinc-700/40 dark:text-neutral-200"},ni={class:"thread-variable-cell min-h-[34px] rounded border border-zinc-200 bg-zinc-100 px-3 py-2 text-sm text-neutral-700 dark:border-zinc-700 dark:bg-zinc-700/40 dark:text-neutral-200"},ai={class:"thread-variable-value min-w-0"},ri={class:"thread-variable-required h-[34px] w-full flex items-center justify-center text-[10px] uppercase tracking-wide text-neutral-500"},si={class:"text-xs text-neutral-400 dark:text-neutral-500 px-1"},li=["data-enabler-property"],oi={class:"text-[11px] text-neutral-500 dark:text-neutral-400"},ii={key:0,class:"text-[11px] text-neutral-500 dark:text-neutral-400"},di={class:"space-y-2"},ui={class:"text-xs text-neutral-500 dark:text-neutral-400"},ci={class:"thread-variable-grid thread-variable-grid--optional grid gap-2 items-start"},fi={class:"thread-variable-cell min-h-[34px] rounded border border-zinc-200 bg-zinc-100 px-3 py-2 text-sm font-mono text-neutral-700 dark:border-zinc-700 dark:bg-zinc-700/40 dark:text-neutral-200"},pi={class:"thread-variable-cell min-h-[34px] rounded border border-zinc-200 bg-zinc-100 px-3 py-2 text-sm text-neutral-700 dark:border-zinc-700 dark:bg-zinc-700/40 dark:text-neutral-200"},vi={class:"thread-variable-value min-w-0"},mi={class:"text-xs text-neutral-400 dark:text-neutral-500 px-1"},gi=Ue({__name:"ThreadVariableForm",props:{scanned:{default:()=>[]},disabled:{type:Boolean,default:!1},requireRequiredValues:{type:Boolean,default:!0},groupName:{default:"env"}},setup(e){const i=e,a=I(()=>(i.scanned||[]).map(w=>({...w,type:w.type==="secret"?"secret":"text",required:!!w.required,description:w.description||"",optionalOnly:!!w.optionalOnly,optionalBranches:Array.isArray(w.optionalBranches)?w.optionalBranches.filter(E=>E?.gate&&E?.tool):void 0}))),s=I(()=>{const w=new Map;for(const E of a.value)w.set(E.property,E);return w}),l=w=>{if(!w.optionalOnly)return null;const E=w.optionalBranches?.[0];return E?.gate?E.gate:null},o=I(()=>{const w=new Map;for(const E of a.value){const B=l(E);B&&(w.has(B)||w.set(B,[]),w.get(B).push(E))}for(const E of w.values())E.sort((B,re)=>B.property.localeCompare(re.property));return w}),m=I(()=>a.value.filter(w=>!l(w))),h=w=>{const E=o.value.get(w)||[],B=[];for(const re of E){const J=re.optionalBranches||[];for(const Q of J)Q.gate===w&&typeof Q.maxInstances=="number"&&Q.maxInstances>0&&B.push(Q.maxInstances)}if(B.length!==0)return Math.min(...B)},M=w=>{if(w==null)return!1;const E=String(w).trim().toLowerCase();return E==="true"||E==="1"||E==="yes"},F=w=>w&&typeof w=="object"&&!Array.isArray(w)?w:{},k=(w,E)=>{const re=F(E)[w];if(re!=null&&String(re).trim()!=="")return String(re);const J=s.value.get(w);return J?.value!==void 0&&J.value!==null?String(J.value):""},x=(w,E)=>M(k(w,E)),L=w=>`__optional__${w}`,V=w=>!o.value.has(w.property)||w.value===void 0||w.value===null?"":String(w.value),R=w=>w.name==="local"?`this ${w.type}`:`the ${w.name} ${w.type}`,W=w=>w.length===0?"":w.length===1?w[0]:w.length===2?`${w[0]} and ${w[1]}`:`${w.slice(0,-1).join(", ")}, and ${w[w.length-1]}`,K=w=>(w.type==="agent"||w.type==="prompt")&&w.name?`the ${w.name} ${w.type}`:w.type==="thread"?"the thread":w.type==="account"?"the account":w.type==="instance"?"the instance":`the ${w.type}`,G=w=>{const E=w.required?"Required by":"Requested by",B=w.declared.length?W(w.declared.map(R)):"this configuration";return w.defined?`${E} ${B}, value provided by ${K(w.defined)}.`:`${E} ${B}.`};return(w,E)=>{const B=qt("FormKit");return n(),O(B,{type:"group",name:e.groupName,"outer-class":"$reset",classes:{outer:"$remove:mb-4 mb-0"}},{default:Ae(({value:re})=>[t("div",Xo,[E[1]||(E[1]=t("div",{class:"thread-variable-grid thread-variable-grid--header grid gap-2 px-1 text-xs font-medium text-neutral-500 dark:text-neutral-400"},[t("span",null,"Name"),t("span",null,"Type"),t("span",null,"Value"),t("span",{class:"text-center text-[10px] leading-none tracking-tight self-center"},"Required")],-1)),(n(!0),r(_e,null,Pe(m.value,J=>(n(),r("div",{key:J.property,class:"space-y-1","data-variable-property":J.property},[t("div",ei,[t("div",ti,v(J.property),1),t("div",ni,v(J.type),1),t("div",ai,[j(B,{name:J.property,type:J.type==="secret"?"password":"text",value:V(J),placeholder:J.description||"Enter value...",disabled:e.disabled,validation:e.requireRequiredValues&&J.required&&!J.defined?"required":"","validation-label":"Value","validation-visibility":"submit","outer-class":"$reset",classes:{outer:"$remove:mb-4 group mb-0 min-w-0",wrapper:"$remove:flex-1 flex-1 min-w-0",inner:e.disabled?"!bg-zinc-100 dark:!bg-zinc-700/40 !cursor-not-allowed":""}},null,8,["name","type","value","placeholder","disabled","validation","classes"])]),t("div",ri,v(J.required?"yes":"no"),1)]),t("p",si,v(G(J)),1),(o.value.get(J.property)||[]).length>0&&x(J.property,re)?(n(),r("div",{key:0,class:"ml-5 space-y-2","data-enabler-property":J.property},[t("p",oi,[E[0]||(E[0]=Ge(" Optional branch enabled by ",-1)),t("code",null,v(J.property),1)]),typeof h(J.property)=="number"?(n(),r("p",ii," Max instances: "+v(h(J.property)),1)):T("",!0),j(B,{type:"repeater",name:L(J.property),min:1,max:h(J.property),"add-label":"Add instance","remove-icon":"close","add-attrs":{outerClass:"$reset m-0 inline-flex",wrapperClass:"$reset m-0 inline-flex",inputClass:"inline-flex w-auto min-w-0 py-1 px-2 text-sm font-medium rounded-sm border border-accent-500/50 text-accent-500 hover:bg-accent-500/10 hover:border-accent-400 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent-400 disabled:opacity-50",helpClass:"$remove:hidden",messagesClass:"$remove:hidden"},"insert-control":!1,"up-control":!1,"down-control":!1,"remove-control":!0,"outer-class":"$reset",classes:{outer:"$remove:mb-4 mb-0",wrapper:"$remove",fieldset:"$remove:border-0 p-0 m-0 min-w-0",legend:"$remove:hidden",content:"$remove:p-5 $remove:space-y-2 p-0 space-y-2",item:"$remove:bg-white $remove:border $remove:border-zinc-200 $remove:rounded-sm $remove:dark:border-zinc-700 $remove:dark:bg-transparent $remove:mb-2 mb-0 border border-neutral-200 dark:border-neutral-700 bg-transparent rounded-sm p-2",controls:"$reset m-0 h-full self-stretch flex items-center justify-end list-none p-0 bg-transparent border-0",remove:"$reset list-none m-0 ml-2 p-0 h-full flex items-center justify-center",removeControl:"$reset inline-flex h-5 w-5 items-center justify-center rounded text-neutral-500 dark:text-white/70 hover:text-red-500 dark:hover:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/30 disabled:opacity-50 disabled:hidden",removeIcon:"$reset h-3.5 w-3.5",controlLabel:"$reset hidden",addButton:"$reset mt-1 inline-flex",help:"$remove:hidden",messages:"$remove:formkit-messages hidden"}},{default:Ae(({index:Q})=>[t("div",di,[t("p",ui," Instance "+v(Number(Q)+1),1),(n(!0),r(_e,null,Pe(o.value.get(J.property)||[],H=>(n(),r("div",{key:`${J.property}-${H.property}-${Q}`,class:"space-y-1"},[t("div",ci,[t("div",fi,v(H.property),1),t("div",pi,v(H.type),1),t("div",vi,[j(B,{name:H.property,type:H.type==="secret"?"password":"text",placeholder:H.description||"Enter value...",disabled:e.disabled,validation:e.requireRequiredValues&&H.required?"required":"","validation-label":"Value","validation-visibility":"submit","outer-class":"$reset",classes:{outer:"$remove:mb-4 group mb-0 min-w-0",wrapper:"$remove:flex-1 flex-1 min-w-0",inner:e.disabled?"!bg-zinc-100 dark:!bg-zinc-700/40 !cursor-not-allowed":""}},null,8,["name","type","placeholder","disabled","validation","classes"])])]),t("p",mi,v(G(H)),1)]))),128))])]),_:2},1032,["name","max"])],8,li)):T("",!0)],8,Zo))),128))])]),_:1},8,["name"])}}}),hi=st(gi,[["__scopeId","data-v-ff3756a6"]]),xi={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"},bi={class:"text-base font-bold"},yi={class:"hidden"},ki={class:"create-thread-scroll flex-1 overflow-y-auto p-6"},_i={class:"space-y-4"},wi={key:1},$i={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"},Ci={key:2},Si={class:"flex items-center justify-between mb-1"},Ti={key:0,class:"flex items-center gap-1.5 ml-auto"},Ii={key:0},Ai={key:1},Ei={key:2},Li={key:3,class:"space-y-4"},Mi={key:4,class:"text-center text-sm text-neutral-500"},Ri={key:5,class:"space-y-3"},Di={key:6,class:"text-center text-sm text-neutral-500"},Fi={key:7,class:"create-thread-inline-actions flex flex-col items-end gap-2"},Pi={class:"create-thread-action-buttons flex gap-2"},zi={key:0,class:"create-thread-footer p-6 border-t border-neutral-200 dark:border-neutral-700 flex-shrink-0"},Ni={class:"create-thread-footer-row flex justify-between items-center"},ji={class:"create-thread-action-buttons flex gap-2"},ca="__optional__",Bi=Ue({__name:"CreateThreadModal",props:{modelValue:{type:Boolean},editThread:{},lockedAgentId:{},inline:{type:Boolean}},emits:["update:modelValue","thread-created","thread-updated"],setup(e,{emit:i}){const a=e,s=i,l=I(()=>!!a.editThread),o=b(""),m=b(!1),h=b(!1),M=b(""),F=b([]),k=b(!1),x=b(null),L=ae=>ae&&typeof ae=="object"&&!Array.isArray(ae)?ae:{},V=ae=>ae==null?"":String(ae),R=ae=>V(ae).split(",").map(Y=>Y.trim()).filter(Y=>Y.length>0),W=ae=>{const Y=L(ae),ce={};for(const[ne,le]of Object.entries(Y)){if(ne.startsWith(ca)||/^(text|checkbox)_\d+$/.test(ne))continue;const Ie=V(le);Ie&&(ce[ne]=Ie)}for(const[ne,le]of Object.entries(Y)){if(!ne.startsWith(ca)||!Array.isArray(le))continue;let Ie=0;for(const Re of le){const We=L(Re);if(Object.values(We).some(xe=>V(xe).trim().length>0)){for(const[xe,fe]of Object.entries(We)){if(/^(text|checkbox)_\d+$/.test(xe))continue;const we=V(fe),Te=Ie===0?xe:`${xe}__${Ie+1}`;if(Ie===0){we&&(ce[Te]=we);continue}ce[Te]=we}Ie+=1}}}return ce},K=(ae,Y)=>{const ce=new Map;for(const le of Y||[])ce.set(le.property,le.type==="secret"?"secret":"text");const ne={};for(const le of Object.keys(ae)){const Ie=le.replace(/__\d+$/,"");ne[le]=ce.get(Ie)||"secret"}return ne},G=ae=>{const Y=new URL(He(`/api/variables/agents/${encodeURIComponent(ae)}`),window.location.origin);return Y.searchParams.set("include_optional_disabled","1"),Y.toString()},w=()=>({include_subagents:!1,agent_id:l.value?a.editThread?.agent_id||"":a.lockedAgentId||"",tags_csv:l.value&&a.editThread?.tags?.join(", ")||"",data:{},env:{}}),E=ae=>{x.value=ae},B=ae=>{const Y=L(ae),ce=V(Y.agent_id),ne=!!Y.include_subagents;return o.value!==ce&&(o.value=ce),m.value!==ne&&(m.value=ne),""},{data:re,isFetching:J,execute:Q}=Vt(He("/api/agents"),{immediate:!1}).json(),H=I(()=>{if(!re.value)return[];const ae=re.value?.agents||[];return l.value||m.value?ae:ae.filter(Y=>Y.type!=="dual_ai")}),me=()=>H.value.map(ae=>({value:ae.id,label:ae.title})),Z=I(()=>!a.lockedAgentId||!re.value?a.lockedAgentId||"":(re.value?.agents||[]).find(ce=>ce.id===a.lockedAgentId)?.title||a.lockedAgentId),Me=I(()=>!o.value||!re.value?null:(re.value?.agents||[]).find(Y=>Y.id===o.value)||null),{data:De,isFetching:se,execute:Fe}=Vt(I(()=>Me.value?.side_a_agent_prompt?He(`/api/prompts/${encodeURIComponent(Me.value.side_a_agent_prompt)}`):""),{immediate:!1}).json(),N=I(()=>{if(!De.value)return null;const Y=(De.value.prompt||De.value).required_schema;if(!Y)return null;try{return typeof Y=="string"?JSON.parse(Y):Y}catch{return null}}),de=I(()=>{const ae=N.value;return!ae||!ae.properties?[]:Object.entries(ae.properties).map(([Y,ce])=>({name:Y,type:Array.isArray(ce.type)?ce.type[0]||"string":ce.type||"string",description:typeof ce.description=="string"?ce.description:"",required:ae.required?.includes(Y)||!1,enum:ce.enum}))}),oe=I(()=>F.value.length>0),ye=async ae=>{if(!ae){F.value=[];return}k.value=!0;try{const Y=await fetch(G(ae));if(!Y.ok){F.value=[];return}const ce=await Y.json();F.value=ce.variables||[]}catch{F.value=[]}finally{k.value=!1}};be(o,async ae=>{ae&&Me.value?.side_a_agent_prompt?await Fe():De.value=null,ae?await ye(ae):F.value=[]}),be([m,H,l],()=>{l.value||!o.value||H.value.some(Y=>Y.id===o.value)||(o.value="",x.value?.at("agent_id")?.input(""))});const ve=()=>{o.value=l.value?a.editThread?.agent_id||"":a.lockedAgentId||"",m.value=!1,M.value="",rn(x),F.value=[],De.value=null,x.value?.reset(w())},he=async ae=>{h.value=!0,M.value="",rn(x);const Y=L(ae),ce=R(Y.tags_csv);try{if(l.value){const xe=await fetch(He(`/api/threads/${a.editThread.id}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tags:ce})});if(!xe.ok){const fe=await xe.json();an(fe,x);return}s("thread-updated"),ve(),s("update:modelValue",!1);return}const ne={agent_id:V(Y.agent_id),tags:ce.length>0?ce:void 0},le=L(Y.data);Object.keys(le).length>0&&(ne.data=le);const Ie=W(Y.env);Object.keys(Ie).length>0&&(ne.env=Ie,ne.env_types=K(Ie,F.value));const Re=await fetch(He("/api/threads"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ne)});if(!Re.ok){const xe=await Re.json();an(xe,x);return}const P=(await Re.json()).threadId;if(!P){an({error:"Thread created but ID not found in response"},x);return}s("thread-created",P),ve(),s("update:modelValue",!1)}catch(ne){const le=(ne instanceof Error?ne.message:"")||`Failed to ${l.value?"update":"create"} thread`;an({error:le},x)||(M.value=le)}finally{h.value=!1}},Le=()=>{ve(),s("update:modelValue",!1)};return be(()=>a.modelValue,async ae=>{ae&&(a.lockedAgentId&&(m.value=!0),await Q(),ve(),a.lockedAgentId&&(o.value=a.lockedAgentId,await Be(),x.value?.at("agent_id")?.input(a.lockedAgentId)))},{immediate:!0}),(ae,Y)=>{const ce=qt("FormKit");return e.modelValue?(n(),O(At(e.inline?"div":Ba),{key:0,"model-value":e.modelValue,"onUpdate:modelValue":Y[0]||(Y[0]=ne=>ae.$emit("update:modelValue",ne)),title:l.value?"Edit Thread":"Create New Thread",width:"max-w-3xl","content-padding":!1,class:ee(["create-thread-shell",e.inline?"flex h-full min-h-0 flex-col bg-white dark:bg-neutral-950":""])},{default:Ae(()=>[j(f(Un),{config:f(Kn)},{default:Ae(()=>[e.inline?(n(),r("div",xi,[t("h3",bi,v(l.value?"Edit Thread":"Create New Thread"),1)])):T("",!0),j(ce,{type:"form",id:"create-thread-form",actions:!1,onSubmit:he,onNode:E,"form-class":"$reset flex-1 min-h-0 flex flex-col"},{default:Ae(({value:ne})=>[t("span",yi,v(B(ne)),1),t("div",ki,[t("div",_i,[M.value?(n(),O(f(za),{key:0,variant:"error"},{default:Ae(()=>[Ge(v(M.value),1)]),_:1})):T("",!0),e.lockedAgentId?(n(),r("div",wi,[j(ce,{type:"hidden",name:"agent_id",value:e.lockedAgentId},null,8,["value"]),Y[1]||(Y[1]=t("label",{class:"block text-zinc-700 dark:text-zinc-300 text-xs font-bold mb-1"},"Agent",-1)),t("div",$i,v(Z.value),1)])):(n(),r("div",Ci,[t("div",Si,[Y[3]||(Y[3]=t("label",{class:"block text-zinc-700 dark:text-zinc-300 text-xs font-bold"}," Agent ",-1)),l.value?T("",!0):(n(),r("div",Ti,[Y[2]||(Y[2]=t("span",{class:"text-[11px] text-neutral-500 dark:text-neutral-400"}," Include subagents ",-1)),j(ce,{type:"toggle",name:"include_subagents",value:!1,"on-value":!0,"off-value":!1,"on-value-label":"","off-value-label":"",disabled:f(J),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"])]))]),j(ce,{type:"selectSearch",name:"agent_id",value:o.value,options:me,disabled:f(J)||l.value,placeholder:"Select an agent...",validation:"required","validation-visibility":"submit"},null,8,["value","disabled"]),j(f(En),{class:"mt-1"},{default:Ae(()=>[l.value?(n(),r("span",Ii,"Agent cannot be changed after thread creation")):m.value?(n(),r("span",Ai,"Choose which agent will handle this conversation (subagents included)")):(n(),r("span",Ei,"Choose which agent will handle this conversation"))]),_:1})])),!l.value&&de.value.length>0&&!f(se)?(n(),r("div",Li,[Y[4]||(Y[4]=t("h4",{class:"text-sm font-medium text-neutral-700 dark:text-neutral-300"}," Required Information ",-1)),j(ce,{type:"group",name:"data","outer-class":"$reset",classes:{outer:"$remove:mb-4 mb-0"}},{default:Ae(()=>[(n(!0),r(_e,null,Pe(de.value,le=>(n(),r("div",{key:le.name,class:"space-y-2"},[le.enum?(n(),O(ce,{key:0,type:"selectSearch",name:le.name,label:le.name,options:[{value:"",label:"Select..."},...le.enum.map(Ie=>({value:Ie,label:Ie}))],validation:le.required?"required":"","validation-visibility":"submit"},null,8,["name","label","options","validation"])):le.type==="string"?(n(),O(ce,{key:1,type:"text",name:le.name,label:le.name,placeholder:le.description,validation:le.required?"required":"","validation-visibility":"submit"},null,8,["name","label","placeholder","validation"])):le.type==="number"||le.type==="integer"?(n(),O(ce,{key:2,type:"number",name:le.name,label:le.name,placeholder:le.description,validation:le.required?"required":"","validation-visibility":"submit"},null,8,["name","label","placeholder","validation"])):le.type==="boolean"?(n(),O(ce,{key:3,type:"checkbox",name:le.name,label:le.name,validation:le.required?"required":"","validation-visibility":"submit"},null,8,["name","label","validation"])):(n(),O(ce,{key:4,type:"textarea",name:le.name,label:le.name,placeholder:le.description||`Enter ${le.name} (JSON format)`,validation:le.required?"required":"","validation-visibility":"submit",rows:3},null,8,["name","label","placeholder","validation"])),le.description?(n(),O(f(En),{key:5,class:"mt-1"},{default:Ae(()=>[Ge(v(le.description),1)]),_:2},1024)):T("",!0)]))),128))]),_:1})])):T("",!0),!l.value&&f(se)?(n(),r("div",Mi," Loading agent requirements... ")):T("",!0),!l.value&&oe.value?(n(),r("div",Ri,[Y[5]||(Y[5]=t("h4",{class:"text-sm font-medium text-neutral-700 dark:text-neutral-300"}," Variables ",-1)),Y[6]||(Y[6]=t("p",{class:"text-xs text-neutral-500 dark:text-neutral-400"}," Required variables must be resolved before a new thread can be created. ",-1)),j(hi,{"group-name":"env",scanned:F.value,disabled:h.value,"require-required-values":!0},null,8,["scanned","disabled"])])):T("",!0),!l.value&&k.value?(n(),r("div",Di," Scanning environment variables... ")):T("",!0),t("div",null,[j(ce,{type:"text",name:"tags_csv",value:l.value&&a.editThread?.tags?.join(", ")||"",label:"Tags",placeholder:"research, urgent, production"},null,8,["value"]),j(f(En),{class:"mt-1"},{default:Ae(()=>[...Y[7]||(Y[7]=[Ge(" Comma-separated tags to help organize and search threads ",-1)])]),_:1})]),e.inline?(n(),r("div",Fi,[j(f(jn),{node:x.value||void 0},null,8,["node"]),t("div",Pi,[j(f(fn),{variant:"ghost",size:"sm",disabled:h.value,onClick:Le},{default:Ae(()=>[...Y[8]||(Y[8]=[Ge(" Cancel ",-1)])]),_:1},8,["disabled"]),j(f(fn),{variant:"primary",size:"sm",disabled:h.value||f(J),loading:h.value,type:"submit",form:"create-thread-form"},{default:Ae(()=>[...Y[9]||(Y[9]=[Ge(" Create Thread ",-1)])]),_:1},8,["disabled","loading"])])])):T("",!0)])]),e.inline?T("",!0):(n(),r("div",zi,[t("div",Ni,[j(f(jn),{node:x.value||void 0},null,8,["node"]),t("div",ji,[j(f(fn),{variant:"ghost",size:"sm",disabled:h.value,onClick:Le},{default:Ae(()=>[...Y[10]||(Y[10]=[Ge(" Cancel ",-1)])]),_:1},8,["disabled"]),j(f(fn),{variant:"primary",size:"sm",disabled:h.value||f(J),loading:h.value,type:"submit",form:"create-thread-form"},{default:Ae(()=>[l.value?(n(),r(_e,{key:0},[Ge(v(h.value?"Updating...":"Update Thread"),1)],64)):(n(),r(_e,{key:1},[Ge(v(h.value?"Creating...":"Create Thread"),1)],64))]),_:1},8,["disabled","loading"])])])]))]),_:1})]),_:1},8,["config"])]),_:1},8,["model-value","title","class"])):T("",!0)}}}),Oi=st(Bi,[["__scopeId","data-v-5e8c2a22"]]),Vi=["accept"],qi=["disabled"],Hi=Ue({__name:"FileUpload",props:{isProcessing:{type:Boolean},accept:{},buttonClass:{}},emits:["filesSelected"],setup(e,{expose:i,emit:a}){const s=e,l=a,o=b(null),m=I(()=>s.accept||"image/*,.pdf,.txt,.md,.json,.csv");function h(){o.value?.click()}function M(k){const x=k.target;x.files&&x.files.length>0&&(l("filesSelected",x.files),x.value="")}function F(k){const x=k.clipboardData?.items;if(!x)return;const L=[];for(let V=0;V<x.length;V++){const R=x[V];if(R.kind==="file"){const W=R.getAsFile();W&&L.push(W)}}if(L.length>0){const V=new DataTransfer;L.forEach(R=>V.items.add(R)),l("filesSelected",V.files)}}return i({handlePaste:F}),(k,x)=>(n(),r(_e,null,[t("input",{ref_key:"fileInputRef",ref:o,type:"file",accept:m.value,multiple:"",class:"hidden",onChange:M},null,40,Vi),t("button",{type:"button",onClick:h,class:ee(["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"},[j(f(rr),{size:18})],10,qi)],64))}}),Ui={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"},Wi={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"},Ki={key:1,class:"mb-2 flex flex-wrap gap-2"},Ji={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"},Gi=["src","alt"],Yi={key:1,class:"w-full h-full flex items-center justify-center"},Qi={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"},Xi=["title"],Zi=["onClick"],ed=["title","aria-label"],td=["src"],nd=["src"],ad=["disabled","placeholder"],rd=["disabled"],sd={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"},ld={key:1,class:"w-4 h-4"},od=Ue({__name:"MessageComposer",props:{attachments:{},assistantAvatarSrc:{},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:i,emit:a}){const s=e,l=a,o=b(null),m=b(null),h=b(""),M=b("B"),F=b(!1),k=b(!1),x=b(null),L=I(()=>s.attachments.length>0),V=I(()=>M.value==="A"?s.sideALabel:s.sideBLabel),R=I(()=>`Message from ${V.value}...`),W=b(R.value);let K=null;const G=()=>{K&&(clearTimeout(K),K=null)};be(R,H=>{G(),W.value="";const me=Z=>{W.value=H.slice(0,Z),Z<H.length&&(K=setTimeout(()=>me(Z+1),16))};K=setTimeout(()=>me(1),20)},{immediate:!0}),Mt(G);const w=(H=m.value)=>{if(!H){F.value=!1;return}const me=H.style.minHeight;H.style.minHeight="0px",H.style.height="auto";const Z=H.scrollHeight,Me=Math.min(Z,160);H.style.height=`${Me}px`,H.style.minHeight=me,F.value=Z>52||h.value.includes(`
|
|
8
|
-
`)},E=H=>{w(H.target instanceof HTMLTextAreaElement?H.target:void 0)};be(h,async()=>{await Be(),w()});const B=async()=>{M.value=M.value==="A"?"B":"A",await Be(),m.value?.focus()},re=async()=>{if(!(h.value.trim().length>0)&&!L.value||k.value)return;x.value=null;const me=h.value,Z=M.value==="A"?"assistant":"user";h.value="",F.value=!1,await Be(),w(),k.value=!0;try{await s.sendMessage({role:Z,content:me}),l("sent")}catch{x.value="Message could not be sent. Please try again."}finally{k.value=!1,await Be(),m.value?.focus()}},J=H=>{H.key==="Enter"&&!H.shiftKey&&(H.preventDefault(),re())},Q=async()=>{try{x.value=null,await s.stopThread()}catch{x.value="Thread execution could not be stopped. Please try again."}};return i({focusInput:async()=>{await Be(),m.value?.focus()}}),(H,me)=>(n(),r("div",Ui,[x.value?(n(),r("div",Wi,v(x.value),1)):T("",!0),e.attachments.length>0?(n(),r("div",Ki,[(n(!0),r(_e,null,Pe(e.attachments,Z=>(n(),r("div",{key:Z.id,class:"relative group"},[Z.isImage?(n(),r("div",Ji,[Z.previewUrl?(n(),r("img",{key:0,src:Z.previewUrl,alt:Z.name,class:"w-full h-full object-cover"},null,8,Gi)):(n(),r("div",Yi,[...me[2]||(me[2]=[t("div",{class:"w-4 h-4 border-2 border-neutral-300 border-t-neutral-600 rounded-full animate-spin"},null,-1)])]))])):(n(),r("div",Qi,[t("span",{class:"text-xs text-neutral-600 dark:text-neutral-300 max-w-[80px] truncate",title:Z.name},v(Z.name),9,Xi)])),t("button",{onClick:Ne(Me=>e.removeAttachment(Z.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"},[...me[3]||(me[3]=[t("span",{class:"text-[10px] font-bold leading-none"},"x",-1)])],8,Zi)]))),128))])):T("",!0),t("div",{class:ee(["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",F.value?"grid grid-cols-[auto_auto_1fr_auto] grid-rows-[auto_auto] gap-x-2 gap-y-2":"flex items-end gap-2"])},[t("button",{onClick:B,type:"button",class:ee(["sender-avatar-switch relative h-8 w-9 shrink-0 self-center",F.value?"col-start-1 row-start-2":""]),title:`Sending as ${V.value}. Click to switch.`,"aria-label":`Sending as ${V.value}. Click to switch.`},[t("img",{src:e.assistantAvatarSrc||void 0,alt:"",class:ee(["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",M.value==="A"?"sender-avatar--front":"sender-avatar--back"])},null,10,td),t("img",{src:e.userAvatarSrc,alt:"",class:ee(["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",M.value==="B"?"sender-avatar--front":"sender-avatar--back"])},null,10,nd)],10,ed),t("div",{class:ee(F.value?"col-start-2 row-start-2 self-center":"")},[j(Hi,{ref_key:"fileUploadRef",ref:o,"is-processing":!1,"button-class":F.value?"":"-translate-y-[0.1875rem]",onFilesSelected:e.addFiles},null,8,["button-class","onFilesSelected"])],2),rt(t("textarea",{ref_key:"messageTextarea",ref:m,"onUpdate:modelValue":me[0]||(me[0]=Z=>h.value=Z),onKeydown:J,onPaste:me[1]||(me[1]=Z=>o.value?.handlePaste(Z)),disabled:k.value,placeholder:W.value,rows:"1",class:ee(["resize-none bg-transparent text-sm text-black focus:outline-none disabled:opacity-50 dark:text-white",F.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:E},null,42,ad),[[xn,h.value]]),e.isExecuting?(n(),r("button",{key:1,id:"stop-thread-button",onClick:Q,class:ee(["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",F.value?"col-start-4 row-start-2 justify-self-end":""]),title:"Stop execution"},[...me[5]||(me[5]=[t("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"},[t("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)):(n(),r("button",{key:0,id:"send-message-button",onClick:re,disabled:!h.value.trim()&&!L.value||k.value||e.isProcessingFiles,class:ee(["h-9 w-9 shrink-0 rounded-full flex items-center justify-center transition-all",[F.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":(h.value.trim()||L.value)&&!k.value&&!e.isProcessingFiles,"bg-neutral-200 text-neutral-400 dark:bg-neutral-700 dark:text-neutral-600":!h.value.trim()&&!L.value||k.value||e.isProcessingFiles}]]),title:"Send message (Enter)"},[k.value?(n(),r("div",ld,[j(qe)])):(n(),r("svg",sd,[...me[4]||(me[4]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18"},null,-1)])]))],10,rd))],2)]))}}),id=st(od,[["__scopeId","data-v-2bd82445"]]),dd={class:"bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},ud=["disabled"],cd={key:1,class:"flex items-center gap-2 p-3 text-xs text-neutral-500 dark:text-neutral-400"},fd={key:2,class:"p-3 space-y-3"},pd={class:"flex gap-4 text-xs"},vd={class:"ml-1 font-mono font-semibold text-neutral-800 dark:text-neutral-100"},md={class:"ml-1 font-mono text-neutral-600 dark:text-neutral-400"},gd={key:0,class:"w-full text-[11px]"},hd=["title"],xd={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},bd={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},yd={key:0,class:"overflow-hidden border-t border-neutral-100 dark:border-neutral-800"},kd={class:"p-3 space-y-3"},_d={class:"flex gap-4 text-xs"},wd={class:"ml-1 font-mono font-semibold text-neutral-800 dark:text-neutral-100"},$d={class:"ml-1 font-mono text-neutral-600 dark:text-neutral-400"},Cd={key:0,class:"w-full text-[11px]"},Sd=["title"],Td={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},Id={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},Ad=Ue({__name:"ThreadUsageCostCard",props:{expanded:{type:Boolean},loading:{type:Boolean},costData:{},hideHeader:{type:Boolean}},emits:["toggle"],setup(e,{emit:i}){const a=i,s=l=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}).format(l);return(l,o)=>(n(),r("div",dd,[e.hideHeader?T("",!0):(n(),r("button",{key:0,onClick:o[0]||(o[0]=m=>a("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"},[j(f(sr),{size:14,class:"shrink-0 text-neutral-400"}),o[1]||(o[1]=t("span",{class:"flex-1 text-xs font-medium text-neutral-700 dark:text-neutral-200"},"Usage & Cost",-1)),e.loading?(n(),O(qe,{key:0,size:"xs"})):(n(),O(f(wt),{key:1,size:14,class:ee(["shrink-0 text-neutral-400 transition-transform duration-200",{"-rotate-180":e.expanded}])},null,8,["class"]))],8,ud)),e.hideHeader&&e.loading?(n(),r("div",cd,[j(qe,{size:"xs"}),o[2]||(o[2]=t("span",null,"Loading cost breakdown...",-1))])):e.hideHeader&&e.costData?(n(),r("div",fd,[t("div",pd,[t("div",null,[o[3]||(o[3]=t("span",{class:"text-neutral-500 dark:text-neutral-400"},"Total:",-1)),t("span",vd,v(s(e.costData.totalCost)),1)]),t("div",null,[o[4]||(o[4]=t("span",{class:"text-neutral-500 dark:text-neutral-400"},"Per msg:",-1)),t("span",md,v(s(e.costData.avgCostPerMessage)),1)])]),e.costData.modelBreakdown.length>0?(n(),r("table",gd,[o[5]||(o[5]=t("thead",null,[t("tr",{class:"border-b border-neutral-200 dark:border-neutral-800"},[t("th",{class:"text-left py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Model"),t("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px] w-14"},"Reqs"),t("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Cost")])],-1)),t("tbody",null,[(n(!0),r(_e,null,Pe(e.costData.modelBreakdown,m=>(n(),r("tr",{key:m.modelName},[t("td",{class:"py-1.5 truncate max-w-[120px] text-neutral-700 dark:text-neutral-300",title:m.modelName},v(m.modelName),9,hd),t("td",xd,v(m.requestCount),1),t("td",bd,v(s(m.totalCost)),1)]))),128))])])):T("",!0)])):(n(),O(on,{key:3,"enter-active-class":"transition-all duration-200 ease-out","enter-from-class":"opacity-0 max-h-0","enter-to-class":"opacity-100 max-h-[250px]","leave-active-class":"transition-all duration-150 ease-in","leave-from-class":"opacity-100 max-h-[250px]","leave-to-class":"opacity-0 max-h-0"},{default:Ae(()=>[e.expanded&&e.costData?(n(),r("div",yd,[t("div",kd,[t("div",_d,[t("div",null,[o[6]||(o[6]=t("span",{class:"text-neutral-500 dark:text-neutral-400"},"Total:",-1)),t("span",wd,v(s(e.costData.totalCost)),1)]),t("div",null,[o[7]||(o[7]=t("span",{class:"text-neutral-500 dark:text-neutral-400"},"Per msg:",-1)),t("span",$d,v(s(e.costData.avgCostPerMessage)),1)])]),e.costData.modelBreakdown.length>0?(n(),r("table",Cd,[o[8]||(o[8]=t("thead",null,[t("tr",{class:"border-b border-neutral-200 dark:border-neutral-800"},[t("th",{class:"text-left py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Model"),t("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px] w-14"},"Reqs"),t("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Cost")])],-1)),t("tbody",null,[(n(!0),r(_e,null,Pe(e.costData.modelBreakdown,m=>(n(),r("tr",{key:m.modelName},[t("td",{class:"py-1.5 truncate max-w-[120px] text-neutral-700 dark:text-neutral-300",title:m.modelName},v(m.modelName),9,Sd),t("td",Td,v(m.requestCount),1),t("td",Id,v(s(m.totalCost)),1)]))),128))])])):T("",!0)])])):T("",!0)]),_:1}))]))}}),Ed={class:"flex flex-col h-full min-w-0 overflow-hidden"},Ld={class:"pl-7 pr-4 border-b border-neutral-300 dark:border-neutral-700 h-12 flex items-center shrink-0"},Md={class:"flex items-center justify-between w-full"},Rd={class:"flex items-center gap-2"},Dd={class:"font-mono"},Fd={class:"flex-1 min-h-0 flex flex-col overflow-hidden relative"},Pd={key:0,class:"shrink-0 border-b border-neutral-200 bg-neutral-50 p-3 dark:border-neutral-800 dark:bg-neutral-950"},zd={key:0,class:"text-neutral-500 dark:text-neutral-400 text-center py-8"},Nd={key:1,class:"flex justify-center py-8"},jd={key:2,class:"text-red-600 dark:text-red-400 text-center py-8"},Bd={key:0,class:"text-neutral-500 dark:text-neutral-400 text-center py-8"},Od={key:1,class:"p-3 bg-white dark:bg-neutral-900 border-t border-neutral-300 dark:border-neutral-700"},Vd={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"},qd={class:"flex items-center justify-end gap-2"},Hd=["disabled"],Gh=Ue({__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:i,emit:a}){const s=e,l=a,o=b(!1),m=b(new Set),h=b(new Map),M=()=>{o.value=!o.value,o.value||(m.value=new Set,h.value=new Map)},F=(u,c)=>{const S=new Set(m.value);c?S.add(u):S.delete(u),m.value=S},k=(u,c)=>{const S=new Map(h.value);S.set(u,c),h.value=S},x=()=>{o.value=!1,m.value=new Set,h.value=new Map},L=I(()=>m.value.size),V=I(()=>{let u=0;for(const[c]of h.value)m.value.has(c)||u++;return u}),R=I(()=>{const u=L.value,c=V.value;return u>0&&c>0?`Delete (${u}), Update (${c})`:u>0?`Delete (${u})`:c>0?`Save changes (${c})`:"Delete"}),W=I(()=>L.value>0||V.value>0),K=async()=>{if(!s.threadId||!W.value)return;ne.value=null;const u=[];for(const c of m.value){const S=G.value.find(q=>q.id===c);S&&"log_id"in S&&S.log_id&&u.push(S.log_id)}try{for(const[c,S]of h.value)m.value.has(c)||await me(c,S);for(const c of m.value)await H(c);u.length>0&&l("logsDeleted",u)}catch{ne.value="Message changes could not be applied. Please try again."}finally{x()}},{messages:G,threadInfo:w,isFetching:E,error:B,wsConnected:re,wsError:J,isExecuting:Q,deleteMessageById:H,updateMessageContent:me,stopThread:Z,sendMessage:Me,attachments:De,addAttachment:se,removeAttachment:Fe}=fl(I(()=>s.threadId)),{thread:N}=Gn(I(()=>s.threadId)),{theme:de}=Rr();be(()=>G.value.length,u=>l("messageCountChanged",u),{immediate:!0});const oe=I(()=>{const u=[];for(const c of G.value){const S=c,q=S.attachments||[];for(const X of q)X.path&&u.push(X.path);if(typeof S.content=="string")for(const X of S.content.matchAll(/\/attachments\/[^\s"'`),]+/g))u.push(X[0])}for(const c of De.value)c.path&&u.push(c.path);return u.sort().join(`
|
|
9
|
-
`)});be(oe,(u,c)=>{u&&u!==c&&l("filesChanged")});const ye=I(()=>!1),ve=u=>{se(u)},he=b(null),Le=b(null),ae=b(null);i({scrollToLogId:u=>Le.value&&he.value?Le.value.scrollToLogId(u,he.value):!1,hasWorkblockForLogId:u=>Le.value?Le.value.hasWorkblockForLogId(u):!1,messageCount:I(()=>G.value.length),focusComposer:()=>ae.value?.focusInput()});const ne=b(null),le=b(!1),Ie=b(!1),Re=b(null),We=u=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}).format(u);async function P(){if(!s.threadId){Re.value=null;return}Ie.value=!0;try{const u=await fetch(He(`/api/threads/${s.threadId}/cost`));if(!u.ok)throw new Error("Failed to fetch cost breakdown");Re.value=await u.json()}catch{Re.value=null,le.value=!1}finally{Ie.value=!1}}const xe=I(()=>Ie.value&&!Re.value?"...":We(Re.value?.totalCost??0)),fe=async()=>{le.value=!le.value,le.value&&!Re.value&&await P()},we=async()=>{await Be(),he.value&&(he.value.scrollTop=he.value.scrollHeight)};be(()=>G.value.length,async()=>{await we()}),be(()=>s.threadId,async u=>{Re.value=null,le.value=!1,u&&P(),u&&await we()}),be(()=>G.value.length,()=>{s.threadId&&P()},{immediate:!0}),be(E,async(u,c)=>{c&&!u&&await we()});const Te=u=>{const c=w.value?.agent||N.value?.agent;if(!c)return"ai A";const S=c.type;return u==="A"&&c.side_a_label?c.side_a_label:u==="B"&&c.side_b_label?c.side_b_label:S==="ai_human"?u==="A"?"ai":"human":u==="A"?"ai A":"ai B"},pe=I(()=>Te("A")),ge=I(()=>Te("B")),ie=()=>{const u=w.value?.agent||N.value?.agent;return u?typeof u.id=="string"?u.id:typeof u.name=="string"?u.name:s.threadId||"thread":s.threadId||"thread"},Ce=I(()=>{const u=w.value?.agent||N.value?.agent;if(!u)return null;const c=typeof u.icon=="string"?u.icon:"",S=typeof u.id=="string"?u.id:typeof u.name=="string"?u.name:"";return c||(S?_n(S):null)}),je=(u,c)=>typeof window>"u"?c:window.getComputedStyle(document.documentElement).getPropertyValue(u).trim()||c,Oe=I(()=>{const u=Te("B");return u.trim().toLowerCase()==="human"?(de.value,Dr({bg:je("--accent-100","#f5f5f5"),fg:je("--accent-600","#737373"),border:je("--accent-300","#d4d4d4")})):_n(`${ie()}:side-b:${u}`)}),U=async u=>{if(!s.threadId||!Me)throw new Error("Thread is not ready for messages");await Me(u),await we()},z=async()=>{s.threadId&&await Z()};return(u,c)=>(n(),r("div",Ed,[t("div",Ld,[t("div",Md,[t("button",{onClick:c[0]||(c[0]=Ne(S=>l("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"},[j(f(ln),{size:18,class:"shrink-0"}),c[6]||(c[6]=t("h2",{class:"text-base font-bold"},"Messages",-1)),e.threadId?(n(),O(Ua,{key:0,connected:f(re),error:f(J)},null,8,["connected","error"])):T("",!0)]),t("div",Rd,[e.threadId?(n(),r("button",{key:0,onClick:Ne(fe,["stop"]),type:"button",class:ee(["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":le.value}]),title:"Toggle cost breakdown"},[t("span",Dd,v(xe.value),1)],2)):T("",!0),e.threadId&&f(G).length>0?(n(),r("button",{key:1,onClick:M,type:"button",class:ee(["p-1 hover:bg-neutral-100 dark:hover:bg-neutral-900 rounded transition-colors",{"bg-neutral-200 dark:bg-neutral-800":o.value}]),title:"Edit messages"},[j(f(lr),{size:20})],2)):T("",!0),e.showCollapseButton!==!1?(n(),r("button",{key:2,onClick:c[1]||(c[1]=S=>l("collapse")),type:"button",class:"p-1 hover:bg-neutral-100 dark:hover:bg-neutral-900 rounded transition-colors",title:"Collapse pane"},[j(f(La),{size:20})])):T("",!0)])])]),t("div",Fd,[e.threadId&&le.value&&!e.createThreadDraft?(n(),r("div",Pd,[j(Ad,{expanded:!0,loading:Ie.value,"cost-data":Re.value,"hide-header":"",onToggle:fe},null,8,["loading","cost-data"])])):T("",!0),t("div",{ref_key:"messagesContainer",ref:he,class:ee(["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?(n(),O(Oi,{key:0,inline:"","model-value":!0,"locked-agent-id":e.lockedAgentId,"onUpdate:modelValue":c[2]||(c[2]=S=>{S||l("cancelCreateThread")}),onThreadCreated:c[3]||(c[3]=S=>l("threadCreated",S))},null,8,["locked-agent-id"])):(n(),r(_e,{key:1},[e.threadId?f(E)?(n(),r("div",Nd,[j(qe)])):f(B)?(n(),r("div",jd," Error loading messages: "+v(f(B)),1)):(n(),r(_e,{key:3},[e.threadId&&f(G).length===0?(n(),r("div",Bd," No messages yet ")):(n(),O(Qo,{key:1,ref_key:"agentMessagesRef",ref:Le,messages:f(G),threadId:e.threadId,selectedMessageId:e.selectedMessageId,selectedLogId:e.selectedLogId,selectedEffectId:e.selectedEffectId,hoveredLogId:e.hoveredLogId,isEditMode:o.value,selectedForDelete:m.value,editedMessages:h.value,assistantAvatarSrc:Ce.value,userAvatarSrc:Oe.value,onMessageClick:c[4]||(c[4]=(S,q,X)=>l("messageClick",S,q,X)),onMessageHover:c[5]||(c[5]=S=>l("messageHover",S)),onSelectionChange:F,onMessageEdit:k},null,8,["messages","threadId","selectedMessageId","selectedLogId","selectedEffectId","hoveredLogId","isEditMode","selectedForDelete","editedMessages","assistantAvatarSrc","userAvatarSrc"]))],64)):(n(),r("div",zd," Select a thread to view messages "))],64))],2),e.threadId&&o.value?(n(),r("div",Od,[ne.value?(n(),r("div",Vd,v(ne.value),1)):T("",!0),t("div",qd,[t("button",{onClick:x,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 "),t("button",{onClick:K,disabled:!W.value,class:ee(["px-4 py-2 rounded-lg font-medium text-sm transition-colors",{"bg-red-600 text-white hover:bg-red-700":W.value&&L.value>0,"bg-black text-white hover:bg-neutral-800 dark:bg-white dark:text-black dark:hover:bg-neutral-200":W.value&&L.value===0,"bg-neutral-200 text-neutral-400 dark:bg-neutral-700 dark:text-neutral-500 cursor-not-allowed":!W.value}])},v(R.value),11,Hd)])])):e.threadId?(n(),O(id,{key:2,ref_key:"messageComposerRef",ref:ae,attachments:f(De),"assistant-avatar-src":Ce.value,"user-avatar-src":Oe.value,"side-a-label":pe.value,"side-b-label":ge.value,"is-executing":f(Q),"is-processing-files":ye.value,"send-message":U,"stop-thread":z,"add-files":ve,"remove-attachment":f(Fe),onSent:we},null,8,["attachments","assistant-avatar-src","user-avatar-src","side-a-label","side-b-label","is-executing","is-processing-files","remove-attachment"])):T("",!0)])]))}});function fa(e){return!!e&&typeof e=="object"}function gt(e){return typeof e=="string"?e:null}function pa(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function dt(e,i){return Object.prototype.hasOwnProperty.call(e,i)}function Ud(e){if(!fa(e))return null;const i=e.type,a=e.log_id;return typeof a!="string"||a.length===0?null:i==="log_queued_tools"?typeof e.queued_tools=="string"?{type:i,log_id:a,queued_tools:e.queued_tools}:null:i==="log_data"&&fa(e.data)?{type:i,log_id:a,data:Wd(e.data)}:null}function Wd(e){const i={};if(dt(e,"message_id")){const a=gt(e.message_id);a!==null&&(i.message_id=a)}if(dt(e,"provider")){const a=gt(e.provider);a!==null&&(i.provider=a)}if(dt(e,"actual_provider")&&(i.actual_provider=gt(e.actual_provider)),dt(e,"model")){const a=gt(e.model);a!==null&&(i.model=a)}if(dt(e,"model_name")&&(i.model_name=gt(e.model_name)),dt(e,"prompt_name")&&(i.prompt_name=gt(e.prompt_name)),dt(e,"tools_called")&&(i.tools_called=gt(e.tools_called)),dt(e,"queued_tools")&&(i.queued_tools=gt(e.queued_tools)),dt(e,"provider_tools")&&(i.provider_tools=gt(e.provider_tools)),dt(e,"parent_log_id")&&(i.parent_log_id=gt(e.parent_log_id)),dt(e,"retry_of_log_id")&&(i.retry_of_log_id=gt(e.retry_of_log_id)),dt(e,"error")&&(i.error=gt(e.error)),dt(e,"cost_total")&&(i.cost_total=pa(e.cost_total)),dt(e,"is_complete")&&typeof e.is_complete=="boolean"&&(i.is_complete=e.is_complete),dt(e,"created_at")){const a=pa(e.created_at);a!==null&&(i.created_at=a)}return i}function Kd(e,i){return{id:e,message_id:i.message_id??"",provider:i.provider??"",actual_provider:i.actual_provider??null,model:i.model??"",model_name:i.model_name??null,prompt_name:i.prompt_name??null,tools_called:i.tools_called??null,queued_tools:i.queued_tools??null,provider_tools:i.provider_tools??null,parent_log_id:i.parent_log_id??null,retry_of_log_id:i.retry_of_log_id??null,error:i.error??null,cost_total:i.cost_total??null,is_complete:i.is_complete??!1,created_at:i.created_at??0}}function Jd(e,i,a){if(i.type==="log_queued_tools")return{...e,queued_tools:i.queued_tools};const s=a.get(i.log_id);return s?{...e,queued_tools:s}:e}function Gd(e,i){const a=new Map(e.pendingQueuedTools),s=e.realtimeLogs.findIndex(F=>F.id===i.log_id),l=s>=0?e.realtimeLogs[s]:null,o=e.httpLogs.find(F=>F.id===i.log_id)??null;if(i.type==="log_queued_tools"&&!l&&!o)return a.set(i.log_id,i.queued_tools),{...e,pendingQueuedTools:a};const m=l??o??Kd(i.log_id,i.type==="log_data"?i.data:{}),h=Jd(i.type==="log_data"?{...m,...i.data,id:i.log_id}:m,i,a);a.delete(i.log_id);const M=s>=0?e.realtimeLogs.map((F,k)=>k===s?h:F):[...e.realtimeLogs,h];return{...e,realtimeLogs:M,pendingQueuedTools:a}}function Yd(e,i){const{limit:a=100,offset:s=0,order:l="desc",autoFetch:o=!0,enableWebSocket:m=!1}=i||{};I(()=>!!(typeof e=="string"?e:e?.value));const h=I(()=>{const Le=typeof e=="string"?e:e?.value;if(!Le)return"";const ae=new URLSearchParams,Y=typeof a=="number"?a:a.value,ce=typeof s=="number"?s:s.value,ne=typeof l=="string"?l:l.value;return ae.append("limit",Y.toString()),ae.append("offset",ce.toString()),ae.append("order",ne),He(`/api/threads/${Le}/logs?${ae.toString()}`)}),{data:M,error:F,isFetching:k,isFinished:x,execute:L,abort:V}=Vt(h,{immediate:!1}).get().json();be([h,()=>o],([Le,ae])=>{Le&&ae&&L()},{immediate:!0});const R=I(()=>!F.value||F.value.toString().includes("aborted")||F.value.toString().includes("abort")?null:F.value),W=I(()=>M.value?.logs||[]),K=I(()=>M.value?.total||0),G=I(()=>M.value?.hasMore||!1),w=b(null),E=b(!1),B=b(null),re=b([]),J=new Map;let Q=0,H=null,me=null,Z=!0,Me=null;const De=3e4,se=3e4,Fe=()=>{H&&(clearTimeout(H),H=null),me&&(clearInterval(me),me=null)},N=()=>{me&&clearInterval(me),me=setInterval(()=>{w.value&&w.value.readyState===WebSocket.OPEN&&w.value.send("ping")},se)},de=()=>{if(!Z||!m)return;const Le=Math.min(1e3*Math.pow(2,Q),De);Q++,Jt(),H=setTimeout(()=>{Z&&oe()},Le)},oe=()=>{const Le=typeof e=="string"?e:e?.value;if(!Le||!m)return;w.value&&(Me=null,w.value.close()),Q===0&&(re.value=[]);const ae=window.location.protocol==="https:"?"wss:":"ws:",Y=window.location.host,ce=Na(`${ae}//${Y}${He(`/api/threads/${Le}/logs`)}`);try{const ne=new WebSocket(ce);w.value=ne,Me=ne,ne.onopen=()=>{Me===ne&&(E.value=!0,B.value=null,Q=0,N(),Jt("Logs WebSocket","Connected"))},ne.onmessage=le=>{if(Me===ne&&le.data!=="pong")try{const Ie=Ud(JSON.parse(le.data));if(Ie){const Re=Gd({realtimeLogs:re.value,httpLogs:W.value,pendingQueuedTools:J},Ie);re.value=Re.realtimeLogs,J.clear(),Re.pendingQueuedTools.forEach((We,P)=>{J.set(P,We)})}}catch{B.value="Failed to parse log update"}},ne.onerror=le=>{Me===ne&&(B.value="WebSocket connection error")},ne.onclose=()=>{Me===ne&&(E.value=!1,Fe(),Jt("Logs WebSocket","Disconnected"),de())}}catch(ne){B.value=ne instanceof Error?ne.message:"Failed to create WebSocket",de()}},ye=()=>{Z=!1,Fe(),Me=null,w.value&&(w.value.close(),w.value=null),E.value=!1,Q=0,re.value=[],J.clear()},ve=()=>{Z=!0,Q=0,oe()};return Ht(()=>{ye()}),{logs:I(()=>{if(!m)return W.value;const Le=new Map;W.value.forEach(ce=>Le.set(ce.id,ce)),re.value.forEach(ce=>Le.set(ce.id,ce));const ae=typeof l=="string"?l:l.value;return Array.from(Le.values()).sort((ce,ne)=>ae==="desc"?ne.created_at-ce.created_at:ce.created_at-ne.created_at)}),total:K,hasMore:G,error:R,isFetching:k,isFinished:x,refetch:L,abort:V,wsConnected:E,wsError:B,connectWebSocket:ve,disconnectWebSocket:ye}}function Qd(e,i){const a=I(()=>{const h=e.value,M=i.value;return!h||!M?null:He(`/api/threads/${h}/logs/${M}`)}),{data:s,error:l,isFetching:o,execute:m}=Vt(a,{immediate:!1}).get().json();return be([e,i],([h,M])=>{h&&M&&m()},{immediate:!0}),{logDetails:s,error:l,isFetching:o,refetch:m}}const Xd={class:"min-h-0 flex-1 overflow-hidden"},Zd=["aria-valuenow","title"],eu={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"},tu=Ue({__name:"InspectorResizablePane",props:{heightPercent:{},storageKey:{},minMainHeight:{default:180},minDetailHeight:{default:260},title:{default:"Resize details"}},emits:["update:heightPercent"],setup(e,{emit:i}){const a=e,s=i,l=b(null),o=b(!1),m=(R,W,K)=>Math.min(K,Math.max(W,R)),h=R=>m(R,20,80),M=()=>{if(!a.storageKey||typeof window>"u")return;const R=window.localStorage.getItem(a.storageKey),W=R?Number.parseFloat(R):Number.NaN;Number.isFinite(W)&&s("update:heightPercent",h(W))},F=()=>{!a.storageKey||typeof window>"u"||window.localStorage.setItem(a.storageKey,a.heightPercent.toFixed(2))},k=R=>{if(!l.value)return;const W=l.value.getBoundingClientRect();if(W.height<=0)return;const K=W.bottom-R.clientY,G=a.minDetailHeight/W.height*100,w=100-a.minMainHeight/W.height*100;s("update:heightPercent",m(K/W.height*100,Math.min(G,w),Math.max(G,w)))},x=()=>{o.value&&(o.value=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("pointermove",k),window.removeEventListener("pointerup",x),window.removeEventListener("pointercancel",x),F())},L=R=>{R.preventDefault(),R.currentTarget instanceof HTMLElement&&R.currentTarget.setPointerCapture(R.pointerId),o.value=!0,document.body.style.cursor="row-resize",document.body.style.userSelect="none",k(R),window.addEventListener("pointermove",k),window.addEventListener("pointerup",x),window.addEventListener("pointercancel",x)},V=R=>{const W=R.shiftKey?10:4;R.key==="ArrowUp"?(R.preventDefault(),s("update:heightPercent",h(a.heightPercent+W)),F()):R.key==="ArrowDown"&&(R.preventDefault(),s("update:heightPercent",h(a.heightPercent-W)),F())};return Nt(M),Mt(x),(R,W)=>(n(),r("div",{ref_key:"root",ref:l,class:"flex h-full min-h-0 flex-col overflow-hidden"},[t("div",Xd,[Lt(R.$slots,"main",{},void 0,!0)]),j(on,{name:"inspector-slide-up"},{default:Ae(()=>[R.$slots.detail?(n(),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:pt({height:`${e.heightPercent}%`})},[t("div",{class:ee(["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",o.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:L,onKeydown:V},null,42,Zd),t("div",eu,[Lt(R.$slots,"detail",{},void 0,!0)])],4)):T("",!0)]),_:3})],512))}}),Tn=st(tu,[["__scopeId","data-v-45799e53"]]),en=new WeakMap,nu=e=>1-Math.pow(1-e,3),au=()=>typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,Fn=(e,i,a)=>Math.min(Math.max(e,i),a),Cn=(e,i)=>{const a=i.duration??80,s=Math.max(0,e.scrollHeight-e.clientHeight),l=Math.max(0,e.scrollWidth-e.clientWidth),o=i.top===void 0?e.scrollTop:Fn(i.top,0,s),m=i.left===void 0?e.scrollLeft:Fn(i.left,0,l),h=en.get(e);if(h!==void 0&&(window.cancelAnimationFrame(h),en.delete(e)),a<=0||au()){e.scrollTo({top:o,left:m,behavior:"auto"});return}const M=e.scrollTop,F=e.scrollLeft,k=o-M,x=m-F;if(Math.abs(k)<1&&Math.abs(x)<1){e.scrollTo({top:o,left:m,behavior:"auto"});return}const L=window.performance.now(),V=R=>{const W=Fn((R-L)/a,0,1),K=nu(W);e.scrollTo({top:M+k*K,left:F+x*K,behavior:"auto"}),W<1?en.set(e,window.requestAnimationFrame(V)):en.delete(e)};en.set(e,window.requestAnimationFrame(V))},ru={class:"text-xs font-semibold"},su={key:0,class:"font-normal text-neutral-500 dark:text-neutral-400"},lu={class:"flex items-center gap-2"},ou={class:"text-neutral-500 text-xs"},iu=Ue({__name:"CollapsibleSection",props:{title:{},subtitle:{},sectionId:{},expanded:{type:Boolean},scrollContainer:{},copyContent:{},stickyOffset:{}},emits:["toggle"],setup(e,{expose:i,emit:a}){const s=e,l=a,o=b(null),m=b(!1);let h=null,M=null;const F=()=>{h?.disconnect(),M?.disconnect(),h=null,M=null},k=()=>{Be(()=>{if(!s.expanded||!o.value||!s.scrollContainer){m.value=!1;return}const R=s.scrollContainer.clientHeight;m.value=o.value.scrollHeight>R*2})},x=()=>{F(),!(typeof ResizeObserver>"u")&&(o.value&&(h=new ResizeObserver(k),h.observe(o.value)),s.scrollContainer&&(M=new ResizeObserver(k),M.observe(s.scrollContainer)))};be(()=>[s.expanded,s.scrollContainer],async([R])=>{await Be(),x(),R?k():m.value=!1},{immediate:!0,flush:"post"}),Nt(async()=>{await Be(),x(),k()}),Mt(F);const L=()=>{if(o.value&&s.scrollContainer){const W=o.value.offsetTop-(s.stickyOffset??88);Cn(s.scrollContainer,{top:W})}},V=()=>{if(o.value&&s.scrollContainer){const R=o.value.offsetTop+o.value.offsetHeight,W=s.scrollContainer.clientHeight,K=R-W;Cn(s.scrollContainer,{top:K})}};return i({checkHeight:k,contentRef:o}),(R,W)=>(n(),r("div",null,[t("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:W[1]||(W[1]=K=>l("toggle"))},[t("span",ru,[Ge(v(e.title)+" ",1),e.subtitle?(n(),r("span",su,"("+v(e.subtitle)+")",1)):T("",!0)]),t("div",lu,[m.value&&e.expanded?(n(),r(_e,{key:0},[t("button",{onClick:Ne(L,["stop"]),class:"text-[10px] text-neutral-500 hover:text-neutral-700 dark:hover:text-neutral-300"},"↑ Top"),t("button",{onClick:Ne(V,["stop"]),class:"text-[10px] text-neutral-500 hover:text-neutral-700 dark:hover:text-neutral-300"},"↓ Bottom")],64)):T("",!0),Lt(R.$slots,"actions",{},void 0,!0),e.copyContent?(n(),r("span",{key:1,class:"inline-flex",onClick:W[0]||(W[0]=Ne(()=>{},["stop"]))},[j(Jn,{content:e.copyContent,variant:"ghost",size:"xs"},null,8,["content"])])):T("",!0),t("span",ou,v(e.expanded?"▼":"▶"),1)])]),rt(t("div",{ref_key:"contentRef",ref:o,class:"border-x border-b border-neutral-300 dark:border-neutral-700 rounded-b"},[Lt(R.$slots,"default",{},void 0,!0)],512),[[ht,e.expanded]])]))}}),Tt=st(iu,[["__scopeId","data-v-634445ea"]]),du=new Set(["pending","processing","completed","failed","agent_canceled","user_canceled"]);function Bt(e,i){return typeof e=="number"&&Number.isFinite(e)?e:i}function va(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function uu(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function cu(e){return typeof e=="string"&&du.has(e)?e:"pending"}function fu(e){const i=e&&typeof e=="object"?e:{},s=(Array.isArray(i.effects)?i.effects:[]).filter(l=>!!l&&typeof l=="object").filter(l=>typeof l.id=="string"&&typeof l.name=="string").map(l=>({id:l.id,name:l.name,args:uu(l.args),scheduledAt:Bt(l.scheduledAt,0),createdAt:Bt(l.createdAt,0),status:cu(l.status),attempts:Bt(l.attempts,0),error:typeof l.error=="string"?l.error:null,completedAt:va(l.completedAt),manualRun:l.manualRun===!0,manualRunAt:va(l.manualRunAt),replayedFrom:typeof l.replayedFrom=="string"?l.replayedFrom:null}));return{effects:s,total:Bt(i.total,s.length),upcomingCount:Bt(i.upcomingCount,s.filter(l=>l.status==="pending").length),limit:Bt(i.limit,s.length),offset:Bt(i.offset,0)}}function Sn(e){return!Number.isFinite(e)||e<=0?0:e>9999999999?Math.floor(e/1e3):e}function It(e){if(!e)return"Unknown";const i=Sn(e);return i?new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(i)):"Unknown"}function pu(e){const i=Math.abs(Math.trunc(e)),a=Math.max(1,Math.round(i/1e3));if(a<60)return`${a}s`;const s=Math.floor(a/60),l=a%60;if(s<60)return l>0?`${s}m ${l}s`:`${s}m`;const o=Math.floor(s/60),m=s%60;if(o<24)return m>0?`${o}h ${m}m`:`${o}h`;const h=Math.floor(o/24),M=o%24;return M>0?`${h}d ${M}h`:`${h}d`}function vu(e){if(!e.completedAt)return"";const i=Sn(e.scheduledAt),a=Sn(e.completedAt);if(!i||!a)return"";const s=a-i;if(s===0||Math.abs(s)<5e3)return"";const l=s>0?"+":"-",o=s>0?"late":"early";return`${l}${pu(s)} ${o}`}function mu(e,i=Date.now()){const a=Sn(e);if(!a)return"";const s=a-i;return s<=0?"Due now":s<6e4?`in ${Math.ceil(s/1e3)}s`:s<60*6e4?`in ${Math.ceil(s/6e4)}m`:s<1440*6e4?`in ${Math.ceil(s/(60*6e4))}h`:`in ${Math.ceil(s/(1440*6e4))}d`}function ma(e){const i=JSON.stringify(e,null,2);return i===void 0?"{}":i}function gu(e){const i=Object.keys(e);if(i.length===0)return"No arguments";const a=JSON.stringify(e);return a?a.length>96?`${a.slice(0,93)}...`:a:`${i.length} ${i.length===1?"argument":"arguments"}`}function Kt(e){return e.status==="pending"||e.status==="processing"}function mn(e,i){return e<i?-1:e>i?1:0}function Dt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function hu(e,i){const a=Kt(e),s=Kt(i);return a!==s?a?-1:1:a&&s?mn(Dt(e.scheduledAt),Dt(i.scheduledAt))||mn(Dt(e.createdAt),Dt(i.createdAt))||e.id.localeCompare(i.id):mn(Dt(i.createdAt),Dt(e.createdAt))||mn(Dt(i.scheduledAt),Dt(e.scheduledAt))||e.id.localeCompare(i.id)}function xu(e){return[...e].sort(hu)}function ga(e,i){return e.id===i.id}function et(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function Yt(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function ha(e){if(!e)return"N/A";const i=Yt(e);return i===null?e:JSON.stringify(i,null,2)}function Gt(e){const i=Yt(e);return Array.isArray(i)?i:[]}function bu(e){const i=et(Yt(e)),a=Array.isArray(i.choices)?i.choices:[],s=et(a[0]),l=et(s.message);return Array.isArray(l.tool_calls)?l.tool_calls:[]}function yu(e){const i=et(Yt(e)),a=Array.isArray(i.choices)?i.choices:[],s=et(a[0]),l=et(s.message);return Array.isArray(l.reasoning_details)?l.reasoning_details:[]}function ku(e){const i=et(Yt(e)),a=Array.isArray(i.choices)?i.choices:[],s=et(a[0]),l=et(s.message);return Array.isArray(l.images)?l.images:[]}function _u(e){const i=new Map,a=Gt(e);for(const s of a){const l=et(s),o=l.tool_call_id;typeof o=="string"&&i.set(o,{content:l.content,status:typeof l.status=="string"?l.status:void 0,tool_name:typeof l.tool_name=="string"?l.tool_name:void 0,timestamp:typeof l.timestamp=="number"?l.timestamp:void 0})}return i}function xa(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function wu(e){const i=[],a=new Set,s=Gt(e);for(const l of s){const o=et(l),m=typeof o.id=="string"?o.id:null;if(!m||a.has(m))continue;const h=typeof o.name=="string"?o.name:null,M=xa(o.scheduledAt),F=xa(o.createdAt),k=typeof o.status=="string"?o.status:null;a.add(m),i.push({id:m,name:h,scheduledAt:M,createdAt:F,status:k,reference:{id:m,name:h}})}return i}function $u(e){const i=et(e);return typeof i.id=="string"&&(typeof i.type=="string"||typeof i.name=="string")&&typeof i.status=="string"}function Cu(e){return Gt(e).filter($u).map(i=>{const a=et(i),s=i.name??i.type;return{...a,name:s,type:i.type??s,raw:a}})}function Su(e){const i=[];for(const a of e.toolCalls){const s=et(a),l=et(s.function);i.push({id:typeof s.id=="string"?s.id:`tool-${i.length}`,name:typeof l.name=="string"?l.name:"Unknown",isProvider:!1,isQueued:!1,function:{name:typeof l.name=="string"?l.name:"Unknown",arguments:typeof l.arguments=="string"?l.arguments:void 0}})}for(const a of e.queuedTools){const s=et(a),l=et(s.function);i.push({id:typeof s.id=="string"?s.id:`queued-${i.length}`,name:typeof l.name=="string"?l.name:"Unknown",isProvider:!1,isQueued:!0,function:{name:typeof l.name=="string"?l.name:"Unknown",arguments:typeof l.arguments=="string"?l.arguments:void 0},queuedAt:typeof s.queued_at=="number"?s.queued_at:void 0})}for(const a of e.providerToolCalls){const s=a.name??a.type;i.push({id:a.id,name:s,isProvider:!0,isQueued:!1,providerType:s,status:a.status,rawProviderTool:a.raw,result:a.result,metadata:a.metadata})}return i}function Tu(e){if(e.rawProviderTool)return JSON.stringify(e.rawProviderTool,null,2);const i={id:e.id,name:e.name,type:e.providerType??e.name,status:e.status??"completed"};return e.result!==void 0&&(i.result=e.result),e.metadata!==void 0&&(i.metadata=e.metadata),JSON.stringify(i,null,2)}function Iu(e){return e?e.replace(/\\n/g,`
|
|
4
|
+
`).replace(/\\t/g," ")}function we(g){const b=se(g);return b.includes(`
|
|
5
|
+
`)||/(^|\s)(import|export|const|let|function|async|return|class|interface|type)\s/.test(b)||/<\/?[a-z][\s\S]*>/i.test(b)||/\b(Response|Request|fetch|console)\b/.test(b)}function Te(g){const b=se(g).trim();return b?/^\s*</.test(b)||/<\/[a-z][\s\S]*>/i.test(b)?"html":/^\s*[{[]/.test(b)&&Ue(b)?"json":/\b(interface|type|Request|Response)\b/.test(b)||/\bimport\s+.+\s+from\s+["']/.test(b)||/\bexport\s+(default\s+)?(async\s+)?function\b/.test(b)?"typescript":/\b(import|export|const|let|function|async|return|class)\b/.test(b)?"javascript":/^#!.*\b(bash|sh)\b/.test(b)?"bash":null:null}function ce(g,b,$){const ke=g.toLowerCase(),te=ue($.path)||ue($.filePath)||ue($.filename)||ue($.name),Pe=Se($.mimeType)||Se($.mime_type)||Se($.contentType)||Se($.content_type);return typeof b=="string"&&(ke.includes("content")||ke.includes("code")||ke.includes("source"))?Pe||te||Te(b)||"text":typeof b!="string"||Array.isArray(b)||b&&typeof b=="object"?"json":Te(b)||"text"}function ge(g,b,$){if(Array.isArray(b)||b&&typeof b=="object")return!0;if(typeof b!="string")return!1;const ke=g.toLowerCase();return $!=="text"||b.length>120||we(b)||ke.includes("content")||ke.includes("body")||ke.includes("schema")||ke.includes("payload")}function oe(g,b){return typeof g!="string"?JSON.stringify(g,null,2):b==="json"?Ue(g)||g:se(g)}function Ie(g){const b=Z(g);return Object.entries(b).map(([$,ke])=>{const te=ce($,ke,b);return{key:$,language:te,code:oe(ke,te),isBlock:ge($,ke,te)}})}function je(g){const b=be(g);if(!b||typeof b.content!="string")return null;const $=Se(b.mimeType)||Se(b.mime_type)||Se(b.contentType)||Se(b.content_type)||ue(b.path)||ue(b.filePath)||ue(b.name)||Te(b.content)||"text";return{code:se(b.content),language:$}}function Oe(g){const b=st(g),$=D(b),ke=je($);if(ke)return ke;if($!==null)return{code:JSON.stringify($,null,2),language:"json"};const te=se(b);return{code:te,language:te.includes("```")?"markdown":"text"}}function V(g){return se(st(g))}function F(g){return Le(g.items)?Ve(Le(g.items)||""):Y(g)}function u(g){return g.type==="tool_call"?g.response_status==="failed"?"work-op-square--failed":g.response_status==="success"?"work-op-square--success":"work-op-square--pending":g.type==="content"?"work-op-square--success":"work-op-square--neutral"}function c(g){if(g.type==="tool_call"){const b=g.tool_name||"Tool call";return g.response_status==="failed"?`${b} failed`:g.response_status==="success"?`${b} succeeded`:`${b} pending`}return g.type}function C(g){return new Date(g/1e3).toLocaleTimeString()}function O(g){const b=Math.round(g/1e6);if(b<1)return"< 1s";if(b<60)return`${b}s`;const $=Math.floor(b/60),ke=b%60;return`${$}m ${ke}s`}function Y(g){if(g.status==="pending")return"...";if(!g.isComplete)return"Working...";let b;return g.request_sent_at&&g.response_completed_at?b=g.response_completed_at-g.request_sent_at:b=g.updated_at-g.created_at,`Worked for ${O(b)}`}function Le(g){const b=g.filter($=>$.type==="content");if(b.length===0){const $=g.filter(ke=>ke.type==="reasoning");return $.length>0?$[$.length-1].content:null}return b[b.length-1].content}function Ve(g){const $=g.trim().split(`
|
|
6
|
+
`)[0];return $.length>60?$.substring(0,60):$}function Ke(g){return s.selectedMessageId===g.id?!0:s.selectedLogId?g.items.some(b=>b.log_id===s.selectedLogId||b.response_log_id===s.selectedLogId):!1}function Je(g){return!!(s.selectedLogId&&(g.log_id===s.selectedLogId||g.response_log_id===s.selectedLogId))}function Ye(g){return s.hoveredLogId?g.items.some(b=>b.log_id===s.hoveredLogId||b.response_log_id===s.hoveredLogId):!1}function $t(g){return!!(s.hoveredLogId&&(g.log_id===s.hoveredLogId||g.response_log_id===s.hoveredLogId))}function xt(g){const b=[];for(const $ of g.items)$.log_id&&b.push($.log_id),$.response_log_id&&b.push($.response_log_id);return b}function st(g){return g?g.trim():""}function Ct(g,b){if(g.type!=="text")return;const $=g.attachments;if(!$?.length)return;if(g.silent)return $;const ke=s.messages[b-1];if(!ke||ke.type!=="text"||!ke.silent||!(ke.content||"").trim().startsWith("Initial asset attachment path:"))return $;const Pe=new Set((ke.attachments||[]).map(gt=>gt.path));if(Pe.size===0)return $;const lt=$.filter(gt=>!Pe.has(gt.path));return lt.length>0?lt:void 0}function yt(g){return g.subagentThreadName||g.subagentTitle||g.subagentName||"Subagent"}function pt(g){return g.subagentTitle||g.subagentName||"Subagent"}function Qe(g){return g.subagentId.slice(0,8)}function ut(g){return wn(g.subagentName||g.subagentTitle||g.subagentId)}function d(g){return(g.subagentStatus||"running").toLowerCase()}function v(g){return ct(g)?"error":Ae(g)?"queued":bt(g)?"running":"complete"}function k(g){return ct(g)?"bg-red-50 text-red-700 ring-red-200 dark:bg-red-950/40 dark:text-red-300 dark:ring-red-900":bt(g)?"bg-blue-50 text-blue-700 ring-blue-200 dark:bg-blue-950/40 dark:text-blue-300 dark:ring-blue-900":Ae(g)?"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 ie(g){return st(g.latestContent||"").split(`
|
|
7
|
+
`).find(Boolean)||"No activity yet"}function Ae(g){const b=d(g);return b==="pending"||b==="queued"}function Xe(g){return g==="tool"?"Initialization":g==="user"?"Subagent":g==="assistant"?"Assistant":"System"}function nt(g){const b=g.subagentResumable===!0?"resumable":g.subagentResumable===!1?"non-resumable":"resumable?",$=g.subagentBlocking===!0?"blocking":g.subagentBlocking===!1?"non-blocking":"blocking?";return`${b} · ${$}`}function ct(g){return g.subagentHasError===!0}function bt(g){if(ct(g)||Ae(g))return!1;const b=d(g);return b!=="idle"&&b!=="terminated"}function dn(g){if(g.type==="status")return!0;if(g.type!=="text"||g.role!=="system")return!1;const b=g.content||"";return b.includes("Execution stopped")?!0:/subagents?\s+started:/i.test(b)}function un(g){const b=g?.trim();return b?b.charAt(0).toUpperCase():"A"}function Qt(g){return g.role==="assistant"?s.assistantAvatarSrc??null:g.role==="user"?s.userAvatarSrc??null:null}return(g,b)=>(n(),r("div",null,[(n(!0),r($e,null,Ne(e.messages,($,ke)=>(n(),r("div",{key:$.id,ref_for:!0,ref:te=>E(ke,te),class:"flex items-center gap-2 pb-3",onMouseenter:te=>Fe(ke),onMouseleave:te=>re(ke),onClick:te=>e.isEditMode?o($.id):De(ke)},[e.isEditMode&&$.role!=="system"?(n(),r("button",{key:0,onClick:ze(te=>o($.id),["stop"]),class:ee(["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($.id),"border-green-500 bg-green-500":!e.selectedForDelete?.has($.id)&&y($.id),"border-neutral-400 dark:border-neutral-500 bg-transparent hover:border-neutral-500 dark:hover:border-neutral-400":!e.selectedForDelete?.has($.id)&&!y($.id)}])},[e.selectedForDelete?.has($.id)?(n(),r("svg",Cl,[...b[4]||(b[4]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.5 12.75l6 6 9-13.5"},null,-1)])])):y($.id)?(n(),r("svg",Sl,[...b[5]||(b[5]=[t("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)])])):S("",!0)],10,$l)):S("",!0),t("div",{class:ee(["flex-1 flex items-center gap-2 min-w-0",{"justify-start":$.type==="subagent"||$.type==="subagent_group"||$.role==="assistant","justify-end":$.type!=="subagent"&&$.type!=="subagent_group"&&$.role==="user","justify-center":$.type==="status"||$.role==="system","cursor-pointer":(j(ke)||fe($))&&!e.isEditMode}])},[dn($)?(n(),r("div",Tl,m($.content),1)):$.type==="text"?(n(),r("div",{key:1,class:ee(["flex flex-col gap-2",{"w-full max-w-none items-start":$.role==="assistant","max-w-[72%] items-end":$.role==="user","max-w-[80%] items-center":$.role!=="assistant"&&$.role!=="user"}])},[t("div",{class:ee(["message-text-frame",[Re($,ke),{"w-full":$.role==="assistant"}]])},[t("div",{class:ee(["message-text-surface transition-all",[$.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]":$.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]":$.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":$.isOptimistic},{"ring-2 ring-green-500 dark:ring-green-400":e.isEditMode&&y($.id),"border border-dashed border-neutral-400 dark:border-neutral-500":e.isEditMode&&$.role!=="system"&&!y($.id)}]])},[$.silent?(n(),r("div",Il," silent ")):S("",!0),e.isEditMode&&($.content||e.isEditMode)?(n(),r("div",{key:1,class:ee(["whitespace-pre-wrap break-words outline-none",$.silent?"text-[11px] leading-4":"text-[15px] leading-7"]),contenteditable:e.isEditMode&&$.role!=="system",onInput:te=>p(te,$.id),onClick:b[0]||(b[0]=te=>e.isEditMode&&te.stopPropagation())},m(st($.content)),43,Al)):$.content?(n(),r("div",{key:2,class:ee(["markdown-content break-words outline-none",$.silent?"text-[13px] leading-5":"text-[15px] leading-7"]),innerHTML:w($.content)},null,10,El)):$.status==="pending"?(n(),r("div",Ll,[...b[6]||(b[6]=[t("span",{class:"typing-dot",style:{"animation-delay":"0ms"}},null,-1),t("span",{class:"typing-dot",style:{"animation-delay":"150ms"}},null,-1),t("span",{class:"typing-dot",style:{"animation-delay":"300ms"}},null,-1)])])):S("",!0)],2),$.status!=="pending"?(n(),r("div",{key:0,class:ee(["text-[10px] mt-1 flex items-center gap-2 px-4",{"justify-start":$.role==="assistant","justify-end":$.role==="user","justify-center":$.role==="system"}])},[$.sideLabel?(n(),r("span",Ml,[Qt($)?(n(),r("img",{key:0,src:Qt($)||void 0,alt:"",class:"h-4 w-4 shrink-0 rounded-[4px] object-cover"},null,8,Rl)):(n(),r("span",Dl,m(un($.sideLabel)),1)),t("span",{class:ee($.silent?"text-neutral-400 dark:text-neutral-500":"text-neutral-500 dark:text-neutral-400")},m($.sideLabel),3)])):S("",!0),Q($)?(n(),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($),onClick:ze(te=>P(ke),["stop"])},[z(f(wt),{size:11,class:"shrink-0"}),b[7]||(b[7]=t("span",null,"via Scheduled Effect",-1))],8,Fl)):S("",!0),t("span",{class:ee($.silent?"text-neutral-400 dark:text-neutral-500":"text-neutral-500 dark:text-neutral-400")},m(C($.created_at)),3)],2)):S("",!0)],2),Ct($,ke)?.length&&e.threadId?(n(),r("div",Pl,[(n(!0),r($e,null,Ne(Ct($,ke),te=>(n(),N(Dn,{key:te.id,attachment:te,threadId:e.threadId},null,8,["attachment","threadId"]))),128))])):S("",!0)],2)):$.type==="work"?(n(),r("div",{key:2,class:ee(["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":!$.silent,"text-neutral-500 dark:text-neutral-400 opacity-90":$.silent,"agents-ring-selected ring-2":!e.isEditMode&&(Ke($)||Ye($))}]),onClick:te=>!e.isEditMode&&(pe($.id),xt($)[0]&&l("messageClick",$.id,xt($)[0])),onMouseenter:te=>!e.isEditMode&&xt($)[0]&&l("messageHover",xt($)[0]),onMouseleave:b[3]||(b[3]=te=>!e.isEditMode&&l("messageHover",null))},[de.value.has($.id)?(n(),r("div",Hl,[t("div",Ul,[z(f(_t),{size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"}),t("span",Wl,m(F($)),1),b[9]||(b[9]=t("span",{class:"text-neutral-400 dark:text-neutral-600"},"·",-1)),t("span",Kl,m($.items.length)+" op"+m($.items.length!==1?"s":""),1),t("div",Jl,[(n(!0),r($e,null,Ne($.items,te=>(n(),r("span",{key:te.id,class:ee(["work-op-square",u(te)]),title:c(te)},null,10,Gl))),128))])]),(n(!0),r($e,null,Ne($.items,te=>(n(),r("div",{key:te.id},[te.type==="tool_call"?(n(),r("div",Yl,[t("div",{onClick:ze(Pe=>{Me(te.id),te.log_id&&l("messageClick",$.id,te.log_id)},["stop"]),onMouseenter:ze(Pe=>te.log_id&&l("messageHover",te.log_id),["stop"]),onMouseleave:b[1]||(b[1]=ze(Pe=>l("messageHover",null),["stop"])),class:ee(["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":Je(te)||$t(te)}])},[le.value.has(te.id)?(n(),N(f(_t),{key:1,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})):(n(),N(f(Pt),{key:0,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})),t("span",{class:ee(["work-op-square",u(te)]),title:c(te),"aria-hidden":"true"},null,10,Xl),t("span",Zl,m(te.tool_name),1),K(te.tool_arguments)?(n(),r("span",eo,m(K(te.tool_arguments)),1)):S("",!0)],42,Ql),le.value.has(te.id)?(n(),r("div",to,[te.tool_arguments?(n(),r("div",no,[b[10]||(b[10]=t("div",{class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-400 dark:text-neutral-500 mb-1"},"Arguments",-1)),t("div",ao,[(n(!0),r($e,null,Ne(Ie(te.tool_arguments),Pe=>(n(),r("div",{key:Pe.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"},[t("div",ro,m(Pe.key),1),t("div",so,[Pe.isBlock?(n(),N(Ft,{key:0,code:Pe.code,language:Pe.language},null,8,["code","language"])):(n(),r("span",lo,m(Pe.code),1))])]))),128))])])):S("",!0),te.response?(n(),r("div",oo,[t("div",io,m(te.response_status==="failed"?"Error":"Response"),1),t("div",{class:ee(["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":te.response_status==="failed","bg-white dark:bg-neutral-950/60":te.response_status!=="failed","ring-1 agents-ring-selected":e.selectedLogId&&te.response_log_id===e.selectedLogId||e.hoveredLogId&&te.response_log_id===e.hoveredLogId&&te.response_log_id!==e.selectedLogId}]),onClick:ze(Pe=>te.response_log_id&&l("messageClick",$.id,te.response_log_id),["stop"]),onMouseenter:ze(Pe=>te.response_log_id&&l("messageHover",te.response_log_id),["stop"]),onMouseleave:b[2]||(b[2]=ze(Pe=>l("messageHover",null),["stop"]))},[te.response_status==="failed"?(n(),r("pre",co,m(V(te.response)),1)):(n(),N(Ft,{key:1,code:Oe(te.response).code,language:Oe(te.response).language},null,8,["code","language"]))],42,uo)])):S("",!0)])):S("",!0)])):te.type==="reasoning"?(n(),r("div",fo,[t("button",{onClick:ze(Pe=>Ce(te.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"},[ye.value.has(te.id)?(n(),N(f(_t),{key:1,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})):(n(),N(f(Pt),{key:0,size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"})),b[11]||(b[11]=t("span",{class:"font-medium text-neutral-800 dark:text-neutral-100"},"Reasoning",-1))],8,vo),ye.value.has(te.id)?(n(),r("div",po,m(st(te.content)),1)):S("",!0)])):te.type==="content"?(n(),r("div",go,m(st(te.content)),1)):S("",!0)]))),128))])):(n(),r("div",zl,[z(f(Pt),{size:14,class:"flex-shrink-0 text-neutral-400 dark:text-neutral-500"}),Le($.items)?(n(),r("span",jl,m(Ve(Le($.items)||"")),1)):(n(),r("span",Bl,m(Y($)),1)),b[8]||(b[8]=t("span",{class:"text-neutral-400 dark:text-neutral-600 flex-shrink-0"},"·",-1)),t("span",Ol,m($.items.length)+" op"+m($.items.length!==1?"s":""),1),t("div",Vl,[(n(!0),r($e,null,Ne($.items,te=>(n(),r("span",{key:te.id,class:ee(["work-op-square",u(te)]),title:c(te)},null,10,ql))),128))])]))],42,Nl)):$.type==="subagent_group"?(n(),r("div",{key:3,class:ee(["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":$.silent,"ring-2 agents-ring-selected":!e.isEditMode&&(X(ke,e.selectedLogId)||X(ke,e.hoveredLogId))}])},[t("div",mo,[t("div",ho,[b[12]||(b[12]=t("div",{class:"text-[10px] font-medium uppercase text-neutral-400"}," Subagent activity ",-1)),t("div",xo,m($.count)+" active profile"+m($.count===1?"":"s"),1)]),t("span",bo,m($.count),1)]),t("div",yo,[(n(!0),r($e,null,Ne($.subagents,te=>(n(),r("div",{key:te.id,class:"px-3 py-2"},[t("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:ze(Pe=>ne(te.id),["stop"])},[t("div",wo,[t("img",{src:ut(te),alt:"",class:"h-8 w-8 shrink-0 rounded-lg object-cover ring-1 ring-neutral-200 dark:ring-neutral-800"},null,8,_o),t("div",$o,[t("div",Co,[t("span",So,m(yt(te)),1),t("span",{class:ee(["shrink-0 rounded-full px-1.5 py-0.5 text-[10px] leading-none ring-1 ring-inset",k(te)])},m(v(te)),3)]),t("div",To,m(pt(te))+" · "+m(nt(te))+" · ref "+m(Qe(te)),1)]),t("span",Io,m(te.messageCount),1),me.value.has(te.id)?(n(),N(f(_t),{key:0,size:14,class:"shrink-0 text-neutral-400"})):(n(),N(f(Pt),{key:1,size:14,class:"shrink-0 text-neutral-400"}))]),t("div",Ao,m(ie(te)),1)],8,ko),me.value.has(te.id)?(n(),r("div",Eo,[(n(!0),r($e,null,Ne(te.messages,Pe=>(n(),r("div",{key:Pe.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"},[t("div",Lo,[t("span",Mo,m(Xe(Pe.role)),1),t("span",null,m(C(Pe.created_at)),1),Pe.silent?(n(),r("span",Ro,"silent")):S("",!0)]),Pe.content?(n(),r("div",{key:0,class:"markdown-content mt-0.5 break-words text-[11px] leading-4 text-neutral-700 dark:text-neutral-200",innerHTML:w(Pe.content)},null,8,Do)):S("",!0),Pe.attachments?.length&&e.threadId?(n(),r("div",Fo,[(n(!0),r($e,null,Ne(Pe.attachments,lt=>(n(),N(Dn,{key:lt.id,attachment:lt,threadId:e.threadId},null,8,["attachment","threadId"]))),128))])):S("",!0)]))),128))])):S("",!0)]))),128))])],2)):$.type==="subagent"?(n(),r("div",{key:4,class:ee(["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":$.silent,"ring-2 agents-ring-selected":!e.isEditMode&&(X(ke,e.selectedLogId)||X(ke,e.hoveredLogId))}])},[t("button",{type:"button",class:"w-full rounded-lg text-left transition-colors hover:bg-neutral-50 dark:hover:bg-neutral-900/70",onClick:ze(te=>ne($.id),["stop"])},[t("div",No,[t("img",{src:ut($),alt:"",class:"h-9 w-9 shrink-0 rounded-lg object-cover ring-1 ring-neutral-200 dark:ring-neutral-800"},null,8,zo),t("div",jo,[t("div",Bo,[t("span",Oo,m(yt($)),1),t("span",{class:ee(["shrink-0 rounded-full px-1.5 py-0.5 text-[10px] leading-none ring-1 ring-inset",k($)])},m(v($)),3)]),t("div",Vo,m(pt($))+" · "+m(nt($))+" · ref "+m(Qe($)),1)]),t("span",qo,m($.messageCount),1),me.value.has($.id)?(n(),N(f(_t),{key:0,size:14,class:"shrink-0 text-neutral-400"})):(n(),N(f(Pt),{key:1,size:14,class:"shrink-0 text-neutral-400"}))]),t("div",Ho,m(ie($)),1)],8,Po),me.value.has($.id)?(n(),r("div",Uo,[(n(!0),r($e,null,Ne($.messages,te=>(n(),r("div",{key:te.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"},[t("div",Wo,[t("span",Ko,m(Xe(te.role)),1),t("span",null,m(C(te.created_at)),1),te.silent?(n(),r("span",Jo,"silent")):S("",!0)]),te.content?(n(),r("div",{key:0,class:"markdown-content mt-0.5 break-words text-[11px] leading-4 text-neutral-700 dark:text-neutral-200",innerHTML:w(te.content)},null,8,Go)):S("",!0),te.attachments?.length&&e.threadId?(n(),r("div",Yo,[(n(!0),r($e,null,Ne(te.attachments,Pe=>(n(),N(Dn,{key:Pe.id,attachment:Pe,threadId:e.threadId},null,8,["attachment","threadId"]))),128))])):S("",!0)]))),128))])):S("",!0)],2)):S("",!0)],2)],40,_l))),128))]))}}),Xo=dt(Qo,[["__scopeId","data-v-523b9d96"]]),Zo=We({__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:i}){const a=e,s=i,l=p=>p&&typeof p=="object"&&!Array.isArray(p)?p:{},o=A({get:()=>l(a.modelValue),set:p=>s("update:modelValue",l(p))});return(p,h)=>{const L=qt("FormKit");return n(),N(L,{type:"group",name:e.groupName,modelValue:o.value,"onUpdate:modelValue":h[1]||(h[1]=M=>o.value=M),"outer-class":"$reset",classes:{outer:"$remove:mb-4 mb-0"}},{default:Ee(()=>[z(Rr,{modelValue:o.value,"onUpdate:modelValue":h[0]||(h[0]=M=>o.value=M),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"])}}}),ei={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"},ti={class:"text-base font-bold"},ni={class:"hidden"},ai={class:"create-thread-scroll flex-1 overflow-y-auto p-6"},ri={class:"space-y-4"},si={key:1},li={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"},oi={key:2},ii={class:"flex items-center justify-between mb-1"},di={key:0,class:"flex items-center gap-1.5 ml-auto"},ui={key:0},ci={key:1},fi={key:2},vi={key:3,class:"space-y-4"},pi={key:4,class:"text-center text-sm text-neutral-500"},gi={key:5,class:"space-y-3"},mi={key:6,class:"text-center text-sm text-neutral-500"},hi={key:7,class:"create-thread-inline-actions flex flex-col items-end gap-2"},xi={class:"create-thread-action-buttons flex gap-2"},bi={key:0,class:"create-thread-footer p-6 border-t border-neutral-200 dark:border-neutral-700 flex-shrink-0"},yi={class:"create-thread-footer-row flex justify-between items-center"},ki={class:"create-thread-action-buttons flex gap-2"},ca="__optional__",wi=We({__name:"CreateThreadModal",props:{modelValue:{type:Boolean},editThread:{},lockedAgentId:{},inline:{type:Boolean}},emits:["update:modelValue","thread-created","thread-updated"],setup(e,{emit:i}){const a=e,s=i,l=A(()=>!!a.editThread),o=x(""),p=x(!1),h=x(!1),L=x(""),M=x([]),w=x(!1),y=x({}),T=x(null),B=ne=>ne&&typeof ne=="object"&&!Array.isArray(ne)?ne:{},E=ne=>ne==null?"":String(ne),H=ne=>E(ne).split(",").map(Z=>Z.trim()).filter(Z=>Z.length>0),U=ne=>{const Z=B(ne),K={};for(const[xe,ue]of Object.entries(Z)){if(xe.startsWith(ca)||/^(text|checkbox)_\d+$/.test(xe))continue;const Se=E(ue);Se&&(K[xe]=Se)}for(const[xe,ue]of Object.entries(Z)){if(!xe.startsWith(ca)||!Array.isArray(ue))continue;let Se=0;for(const Ue of ue){const D=B(Ue);if(Object.values(D).some(se=>E(se).trim().length>0)){for(const[se,we]of Object.entries(D)){if(/^(text|checkbox)_\d+$/.test(se))continue;const Te=E(we),ce=Se===0?se:`${se}__${Se+1}`;if(Se===0){Te&&(K[ce]=Te);continue}K[ce]=Te}Se+=1}}}return K},G=(ne,Z)=>{const K=new Map;for(const ue of Z||[])K.set(ue.property,ue.type==="secret"?"secret":"text");const xe={};for(const ue of Object.keys(ne)){const Se=ue.replace(/__\d+$/,"");xe[ue]=K.get(Se)||"secret"}return xe},q=ne=>{const Z=new URL(He(`/api/variables/agents/${encodeURIComponent(ne)}`),window.location.origin);return Z.searchParams.set("include_optional_disabled","1"),Z.toString()},j=()=>({include_subagents:!1,agent_id:l.value?a.editThread?.agent_id||"":a.lockedAgentId||"",tags_csv:l.value&&a.editThread?.tags?.join(", ")||"",data:{},env:{}}),J=ne=>{T.value=ne},ve=ne=>{const Z=B(ne),K=E(Z.agent_id),xe=!!Z.include_subagents;return o.value!==K&&(o.value=K),p.value!==xe&&(p.value=xe),""},{data:ae,isFetching:Q,execute:W}=Vt(He("/api/agents"),{immediate:!1}).json(),fe=A(()=>{if(!ae.value)return[];const ne=ae.value?.agents||[];return l.value||p.value?ne:ne.filter(Z=>Z.type!=="dual_ai")}),X=()=>fe.value.map(ne=>({value:ne.id,label:ne.title})),Re=A(()=>!a.lockedAgentId||!ae.value?a.lockedAgentId||"":(ae.value?.agents||[]).find(K=>K.id===a.lockedAgentId)?.title||a.lockedAgentId),Fe=A(()=>!o.value||!ae.value?null:(ae.value?.agents||[]).find(Z=>Z.id===o.value)||null),{data:re,isFetching:De,execute:P}=Vt(A(()=>Fe.value?.side_a_agent_prompt?He(`/api/prompts/${encodeURIComponent(Fe.value.side_a_agent_prompt)}`):""),{immediate:!1}).json(),de=A(()=>{if(!re.value)return null;const Z=(re.value.prompt||re.value).required_schema;if(!Z)return null;try{return typeof Z=="string"?JSON.parse(Z):Z}catch{return null}}),le=A(()=>{const ne=de.value;return!ne||!ne.properties?[]:Object.entries(ne.properties).map(([Z,K])=>({name:Z,type:Array.isArray(K.type)?K.type[0]||"string":K.type||"string",description:typeof K.description=="string"?K.description:"",required:ne.required?.includes(Z)||!1,enum:K.enum}))}),ye=A(()=>M.value.length>0),me=async ne=>{if(!ne){M.value=[];return}w.value=!0;try{const Z=await fetch(q(ne));if(!Z.ok){M.value=[];return}const K=await Z.json();M.value=K.variables||[]}catch{M.value=[]}finally{w.value=!1}};he(o,async ne=>{y.value={},ne&&Fe.value?.side_a_agent_prompt?await P():re.value=null,ne?await me(ne):M.value=[]}),he([p,fe,l],()=>{l.value||!o.value||fe.value.some(Z=>Z.id===o.value)||(o.value="",T.value?.at("agent_id")?.input(""))});const pe=()=>{o.value=l.value?a.editThread?.agent_id||"":a.lockedAgentId||"",p.value=!1,L.value="",y.value={},rn(T),M.value=[],re.value=null,T.value?.reset(j())},Me=async ne=>{h.value=!0,L.value="",rn(T);const Z=B(ne),K=H(Z.tags_csv);try{if(l.value){const se=await fetch(He(`/api/threads/${a.editThread.id}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tags:K})});if(!se.ok){const we=await se.json();an(we,T);return}s("thread-updated"),pe(),s("update:modelValue",!1);return}const xe={agent_id:E(Z.agent_id),tags:K.length>0?K:void 0},ue=B(Z.data);Object.keys(ue).length>0&&(xe.data=ue);const Se=U(Z.env);Object.keys(Se).length>0&&(xe.env=Se,xe.env_types=G(Se,M.value));const Ue=await fetch(He("/api/threads"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(xe)});if(!Ue.ok){const se=await Ue.json();an(se,T);return}const be=(await Ue.json()).threadId;if(!be){an({error:"Thread created but ID not found in response"},T);return}s("thread-created",be),pe(),s("update:modelValue",!1)}catch(xe){const ue=(xe instanceof Error?xe.message:"")||`Failed to ${l.value?"update":"create"} thread`;an({error:ue},T)||(L.value=ue)}finally{h.value=!1}},Ce=()=>{pe(),s("update:modelValue",!1)};return he(()=>a.modelValue,async ne=>{ne&&(a.lockedAgentId&&(p.value=!0),await W(),pe(),a.lockedAgentId&&(o.value=a.lockedAgentId,await Be(),T.value?.at("agent_id")?.input(a.lockedAgentId)))},{immediate:!0}),(ne,Z)=>{const K=qt("FormKit");return e.modelValue?(n(),N(At(e.inline?"div":Ba),{key:0,"model-value":e.modelValue,"onUpdate:modelValue":Z[1]||(Z[1]=xe=>ne.$emit("update:modelValue",xe)),title:l.value?"Edit Thread":"Create New Thread",width:"max-w-3xl","content-padding":!1,class:ee(["create-thread-shell",e.inline?"flex h-full min-h-0 flex-col bg-white dark:bg-neutral-950":""])},{default:Ee(()=>[z(f(Un),{config:f(Kn)},{default:Ee(()=>[e.inline?(n(),r("div",ei,[t("h3",ti,m(l.value?"Edit Thread":"Create New Thread"),1)])):S("",!0),z(K,{type:"form",id:"create-thread-form",actions:!1,onSubmit:Me,onNode:J,"form-class":"$reset flex-1 min-h-0 flex flex-col"},{default:Ee(({value:xe})=>[t("span",ni,m(ve(xe)),1),t("div",ai,[t("div",ri,[L.value?(n(),N(f(Na),{key:0,variant:"error"},{default:Ee(()=>[Ge(m(L.value),1)]),_:1})):S("",!0),e.lockedAgentId?(n(),r("div",si,[z(K,{type:"hidden",name:"agent_id",value:e.lockedAgentId},null,8,["value"]),Z[2]||(Z[2]=t("label",{class:"block text-zinc-700 dark:text-zinc-300 text-xs font-bold mb-1"},"Agent",-1)),t("div",li,m(Re.value),1)])):(n(),r("div",oi,[t("div",ii,[Z[4]||(Z[4]=t("label",{class:"block text-zinc-700 dark:text-zinc-300 text-xs font-bold"}," Agent ",-1)),l.value?S("",!0):(n(),r("div",di,[Z[3]||(Z[3]=t("span",{class:"text-[11px] text-neutral-500 dark:text-neutral-400"}," Include subagents ",-1)),z(K,{type:"toggle",name:"include_subagents",value:!1,"on-value":!0,"off-value":!1,"on-value-label":"","off-value-label":"",disabled:f(Q),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"])]))]),z(K,{type:"selectSearch",name:"agent_id",value:o.value,options:X,disabled:f(Q)||l.value,placeholder:"Select an agent...",validation:"required","validation-visibility":"submit"},null,8,["value","disabled"]),z(f(En),{class:"mt-1"},{default:Ee(()=>[l.value?(n(),r("span",ui,"Agent cannot be changed after thread creation")):p.value?(n(),r("span",ci,"Choose which agent will handle this conversation (subagents included)")):(n(),r("span",fi,"Choose which agent will handle this conversation"))]),_:1})])),!l.value&&le.value.length>0&&!f(De)?(n(),r("div",vi,[Z[5]||(Z[5]=t("h4",{class:"text-sm font-medium text-neutral-700 dark:text-neutral-300"}," Required Information ",-1)),z(K,{type:"group",name:"data","outer-class":"$reset",classes:{outer:"$remove:mb-4 mb-0"}},{default:Ee(()=>[(n(!0),r($e,null,Ne(le.value,ue=>(n(),r("div",{key:ue.name,class:"space-y-2"},[ue.enum?(n(),N(K,{key:0,type:"selectSearch",name:ue.name,label:ue.name,options:[{value:"",label:"Select..."},...ue.enum.map(Se=>({value:Se,label:Se}))],validation:ue.required?"required":"","validation-visibility":"submit"},null,8,["name","label","options","validation"])):ue.type==="string"?(n(),N(K,{key:1,type:"text",name:ue.name,label:ue.name,placeholder:ue.description,validation:ue.required?"required":"","validation-visibility":"submit"},null,8,["name","label","placeholder","validation"])):ue.type==="number"||ue.type==="integer"?(n(),N(K,{key:2,type:"number",name:ue.name,label:ue.name,placeholder:ue.description,validation:ue.required?"required":"","validation-visibility":"submit"},null,8,["name","label","placeholder","validation"])):ue.type==="boolean"?(n(),N(K,{key:3,type:"checkbox",name:ue.name,label:ue.name,validation:ue.required?"required":"","validation-visibility":"submit"},null,8,["name","label","validation"])):(n(),N(K,{key:4,type:"textarea",name:ue.name,label:ue.name,placeholder:ue.description||`Enter ${ue.name} (JSON format)`,validation:ue.required?"required":"","validation-visibility":"submit",rows:3},null,8,["name","label","placeholder","validation"])),ue.description?(n(),N(f(En),{key:5,class:"mt-1"},{default:Ee(()=>[Ge(m(ue.description),1)]),_:2},1024)):S("",!0)]))),128))]),_:1})])):S("",!0),!l.value&&f(De)?(n(),r("div",pi," Loading agent requirements... ")):S("",!0),!l.value&&ye.value?(n(),r("div",gi,[Z[6]||(Z[6]=t("h4",{class:"text-sm font-medium text-neutral-700 dark:text-neutral-300"}," Variables ",-1)),Z[7]||(Z[7]=t("p",{class:"text-xs text-neutral-500 dark:text-neutral-400"}," Required variables must be resolved before a new thread can be created. ",-1)),z(Zo,{modelValue:y.value,"onUpdate:modelValue":Z[0]||(Z[0]=ue=>y.value=ue),"group-name":"env",scanned:M.value,disabled:h.value,"require-required-values":!0},null,8,["modelValue","scanned","disabled"])])):S("",!0),!l.value&&w.value?(n(),r("div",mi," Scanning environment variables... ")):S("",!0),t("div",null,[z(K,{type:"text",name:"tags_csv",value:l.value&&a.editThread?.tags?.join(", ")||"",label:"Tags",placeholder:"research, urgent, production"},null,8,["value"]),z(f(En),{class:"mt-1"},{default:Ee(()=>[...Z[8]||(Z[8]=[Ge(" Comma-separated tags to help organize and search threads ",-1)])]),_:1})]),e.inline?(n(),r("div",hi,[z(f(jn),{node:T.value||void 0},null,8,["node"]),t("div",xi,[z(f(fn),{variant:"ghost",size:"sm",disabled:h.value,onClick:Ce},{default:Ee(()=>[...Z[9]||(Z[9]=[Ge(" Cancel ",-1)])]),_:1},8,["disabled"]),z(f(fn),{variant:"primary",size:"sm",disabled:h.value||f(Q),loading:h.value,type:"submit",form:"create-thread-form"},{default:Ee(()=>[...Z[10]||(Z[10]=[Ge(" Create Thread ",-1)])]),_:1},8,["disabled","loading"])])])):S("",!0)])]),e.inline?S("",!0):(n(),r("div",bi,[t("div",yi,[z(f(jn),{node:T.value||void 0},null,8,["node"]),t("div",ki,[z(f(fn),{variant:"ghost",size:"sm",disabled:h.value,onClick:Ce},{default:Ee(()=>[...Z[11]||(Z[11]=[Ge(" Cancel ",-1)])]),_:1},8,["disabled"]),z(f(fn),{variant:"primary",size:"sm",disabled:h.value||f(Q),loading:h.value,type:"submit",form:"create-thread-form"},{default:Ee(()=>[l.value?(n(),r($e,{key:0},[Ge(m(h.value?"Updating...":"Update Thread"),1)],64)):(n(),r($e,{key:1},[Ge(m(h.value?"Creating...":"Create Thread"),1)],64))]),_:1},8,["disabled","loading"])])])]))]),_:1})]),_:1},8,["config"])]),_:1},8,["model-value","title","class"])):S("",!0)}}}),_i=dt(wi,[["__scopeId","data-v-85821044"]]),$i=["accept"],Ci=["disabled"],Si=We({__name:"FileUpload",props:{isProcessing:{type:Boolean},accept:{},buttonClass:{}},emits:["filesSelected"],setup(e,{expose:i,emit:a}){const s=e,l=a,o=x(null),p=A(()=>s.accept||"image/*,.pdf,.txt,.md,.json,.csv");function h(){o.value?.click()}function L(w){const y=w.target;y.files&&y.files.length>0&&(l("filesSelected",y.files),y.value="")}function M(w){const y=w.clipboardData?.items;if(!y)return;const T=[];for(let B=0;B<y.length;B++){const E=y[B];if(E.kind==="file"){const H=E.getAsFile();H&&T.push(H)}}if(T.length>0){const B=new DataTransfer;T.forEach(E=>B.items.add(E)),l("filesSelected",B.files)}}return i({handlePaste:M}),(w,y)=>(n(),r($e,null,[t("input",{ref_key:"fileInputRef",ref:o,type:"file",accept:p.value,multiple:"",class:"hidden",onChange:L},null,40,$i),t("button",{type:"button",onClick:h,class:ee(["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"},[z(f(rr),{size:18})],10,Ci)],64))}}),Ti={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"},Ii={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"},Ai={key:1,class:"mb-2 flex flex-wrap gap-2"},Ei={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"},Li=["src","alt"],Mi={key:1,class:"w-full h-full flex items-center justify-center"},Ri={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"},Di=["title"],Fi=["onClick"],Pi=["title","aria-label"],Ni=["src"],zi=["src"],ji=["disabled","placeholder"],Bi=["disabled"],Oi={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"},Vi={key:1,class:"w-4 h-4"},qi=We({__name:"MessageComposer",props:{attachments:{},assistantAvatarSrc:{},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:i,emit:a}){const s=e,l=a,o=x(null),p=x(null),h=x(""),L=x("B"),M=x(!1),w=x(!1),y=x(null),T=A(()=>s.attachments.length>0),B=A(()=>L.value==="A"?s.sideALabel:s.sideBLabel),E=A(()=>`Message from ${B.value}...`),H=x(E.value);let U=null;const G=()=>{U&&(clearTimeout(U),U=null)};he(E,W=>{G(),H.value="";const fe=X=>{H.value=W.slice(0,X),X<W.length&&(U=setTimeout(()=>fe(X+1),16))};U=setTimeout(()=>fe(1),20)},{immediate:!0}),Mt(G);const q=(W=p.value)=>{if(!W){M.value=!1;return}const fe=W.style.minHeight;W.style.minHeight="0px",W.style.height="auto";const X=W.scrollHeight,Re=Math.min(X,160);W.style.height=`${Re}px`,W.style.minHeight=fe,M.value=X>52||h.value.includes(`
|
|
8
|
+
`)},j=W=>{q(W.target instanceof HTMLTextAreaElement?W.target:void 0)};he(h,async()=>{await Be(),q()});const J=async()=>{L.value=L.value==="A"?"B":"A",await Be(),p.value?.focus()},ve=async()=>{if(!(h.value.trim().length>0)&&!T.value||w.value)return;y.value=null;const fe=h.value,X=L.value==="A"?"assistant":"user";h.value="",M.value=!1,await Be(),q(),w.value=!0;try{await s.sendMessage({role:X,content:fe}),l("sent")}catch{y.value="Message could not be sent. Please try again."}finally{w.value=!1,await Be(),p.value?.focus()}},ae=W=>{W.key==="Enter"&&!W.shiftKey&&(W.preventDefault(),ve())},Q=async()=>{try{y.value=null,await s.stopThread()}catch{y.value="Thread execution could not be stopped. Please try again."}};return i({focusInput:async()=>{await Be(),p.value?.focus()}}),(W,fe)=>(n(),r("div",Ti,[y.value?(n(),r("div",Ii,m(y.value),1)):S("",!0),e.attachments.length>0?(n(),r("div",Ai,[(n(!0),r($e,null,Ne(e.attachments,X=>(n(),r("div",{key:X.id,class:"relative group"},[X.isImage?(n(),r("div",Ei,[X.previewUrl?(n(),r("img",{key:0,src:X.previewUrl,alt:X.name,class:"w-full h-full object-cover"},null,8,Li)):(n(),r("div",Mi,[...fe[2]||(fe[2]=[t("div",{class:"w-4 h-4 border-2 border-neutral-300 border-t-neutral-600 rounded-full animate-spin"},null,-1)])]))])):(n(),r("div",Ri,[t("span",{class:"text-xs text-neutral-600 dark:text-neutral-300 max-w-[80px] truncate",title:X.name},m(X.name),9,Di)])),t("button",{onClick:ze(Re=>e.removeAttachment(X.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"},[...fe[3]||(fe[3]=[t("span",{class:"text-[10px] font-bold leading-none"},"x",-1)])],8,Fi)]))),128))])):S("",!0),t("div",{class:ee(["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",M.value?"grid grid-cols-[auto_auto_1fr_auto] grid-rows-[auto_auto] gap-x-2 gap-y-2":"flex items-end gap-2"])},[t("button",{onClick:J,type:"button",class:ee(["sender-avatar-switch relative h-8 w-9 shrink-0 self-center",M.value?"col-start-1 row-start-2":""]),title:`Sending as ${B.value}. Click to switch.`,"aria-label":`Sending as ${B.value}. Click to switch.`},[t("img",{src:e.assistantAvatarSrc||void 0,alt:"",class:ee(["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",L.value==="A"?"sender-avatar--front":"sender-avatar--back"])},null,10,Ni),t("img",{src:e.userAvatarSrc,alt:"",class:ee(["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",L.value==="B"?"sender-avatar--front":"sender-avatar--back"])},null,10,zi)],10,Pi),t("div",{class:ee(M.value?"col-start-2 row-start-2 self-center":"")},[z(Si,{ref_key:"fileUploadRef",ref:o,"is-processing":!1,"button-class":M.value?"":"-translate-y-[0.1875rem]",onFilesSelected:e.addFiles},null,8,["button-class","onFilesSelected"])],2),rt(t("textarea",{ref_key:"messageTextarea",ref:p,"onUpdate:modelValue":fe[0]||(fe[0]=X=>h.value=X),onKeydown:ae,onPaste:fe[1]||(fe[1]=X=>o.value?.handlePaste(X)),disabled:w.value,placeholder:H.value,rows:"1",class:ee(["resize-none bg-transparent text-sm text-black focus:outline-none disabled:opacity-50 dark:text-white",M.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:j},null,42,ji),[[xn,h.value]]),e.isExecuting?(n(),r("button",{key:1,id:"stop-thread-button",onClick:Q,class:ee(["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",M.value?"col-start-4 row-start-2 justify-self-end":""]),title:"Stop execution"},[...fe[5]||(fe[5]=[t("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"},[t("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)):(n(),r("button",{key:0,id:"send-message-button",onClick:ve,disabled:!h.value.trim()&&!T.value||w.value||e.isProcessingFiles,class:ee(["h-9 w-9 shrink-0 rounded-full flex items-center justify-center transition-all",[M.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":(h.value.trim()||T.value)&&!w.value&&!e.isProcessingFiles,"bg-neutral-200 text-neutral-400 dark:bg-neutral-700 dark:text-neutral-600":!h.value.trim()&&!T.value||w.value||e.isProcessingFiles}]]),title:"Send message (Enter)"},[w.value?(n(),r("div",Vi,[z(qe)])):(n(),r("svg",Oi,[...fe[4]||(fe[4]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18"},null,-1)])]))],10,Bi))],2)]))}}),Hi=dt(qi,[["__scopeId","data-v-2bd82445"]]),Ui={class:"bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},Wi=["disabled"],Ki={key:1,class:"flex items-center gap-2 p-3 text-xs text-neutral-500 dark:text-neutral-400"},Ji={key:2,class:"p-3 space-y-3"},Gi={class:"flex gap-4 text-xs"},Yi={class:"ml-1 font-mono font-semibold text-neutral-800 dark:text-neutral-100"},Qi={class:"ml-1 font-mono text-neutral-600 dark:text-neutral-400"},Xi={key:0,class:"w-full text-[11px]"},Zi=["title"],ed={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},td={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},nd={key:0,class:"overflow-hidden border-t border-neutral-100 dark:border-neutral-800"},ad={class:"p-3 space-y-3"},rd={class:"flex gap-4 text-xs"},sd={class:"ml-1 font-mono font-semibold text-neutral-800 dark:text-neutral-100"},ld={class:"ml-1 font-mono text-neutral-600 dark:text-neutral-400"},od={key:0,class:"w-full text-[11px]"},id=["title"],dd={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},ud={class:"text-right py-1.5 font-mono text-neutral-600 dark:text-neutral-400"},cd=We({__name:"ThreadUsageCostCard",props:{expanded:{type:Boolean},loading:{type:Boolean},costData:{},hideHeader:{type:Boolean}},emits:["toggle"],setup(e,{emit:i}){const a=i,s=l=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}).format(l);return(l,o)=>(n(),r("div",Ui,[e.hideHeader?S("",!0):(n(),r("button",{key:0,onClick:o[0]||(o[0]=p=>a("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"},[z(f(sr),{size:14,class:"shrink-0 text-neutral-400"}),o[1]||(o[1]=t("span",{class:"flex-1 text-xs font-medium text-neutral-700 dark:text-neutral-200"},"Usage & Cost",-1)),e.loading?(n(),N(qe,{key:0,size:"xs"})):(n(),N(f(_t),{key:1,size:14,class:ee(["shrink-0 text-neutral-400 transition-transform duration-200",{"-rotate-180":e.expanded}])},null,8,["class"]))],8,Wi)),e.hideHeader&&e.loading?(n(),r("div",Ki,[z(qe,{size:"xs"}),o[2]||(o[2]=t("span",null,"Loading cost breakdown...",-1))])):e.hideHeader&&e.costData?(n(),r("div",Ji,[t("div",Gi,[t("div",null,[o[3]||(o[3]=t("span",{class:"text-neutral-500 dark:text-neutral-400"},"Total:",-1)),t("span",Yi,m(s(e.costData.totalCost)),1)]),t("div",null,[o[4]||(o[4]=t("span",{class:"text-neutral-500 dark:text-neutral-400"},"Per msg:",-1)),t("span",Qi,m(s(e.costData.avgCostPerMessage)),1)])]),e.costData.modelBreakdown.length>0?(n(),r("table",Xi,[o[5]||(o[5]=t("thead",null,[t("tr",{class:"border-b border-neutral-200 dark:border-neutral-800"},[t("th",{class:"text-left py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Model"),t("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px] w-14"},"Reqs"),t("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Cost")])],-1)),t("tbody",null,[(n(!0),r($e,null,Ne(e.costData.modelBreakdown,p=>(n(),r("tr",{key:p.modelName},[t("td",{class:"py-1.5 truncate max-w-[120px] text-neutral-700 dark:text-neutral-300",title:p.modelName},m(p.modelName),9,Zi),t("td",ed,m(p.requestCount),1),t("td",td,m(s(p.totalCost)),1)]))),128))])])):S("",!0)])):(n(),N(on,{key:3,"enter-active-class":"transition-all duration-200 ease-out","enter-from-class":"opacity-0 max-h-0","enter-to-class":"opacity-100 max-h-[250px]","leave-active-class":"transition-all duration-150 ease-in","leave-from-class":"opacity-100 max-h-[250px]","leave-to-class":"opacity-0 max-h-0"},{default:Ee(()=>[e.expanded&&e.costData?(n(),r("div",nd,[t("div",ad,[t("div",rd,[t("div",null,[o[6]||(o[6]=t("span",{class:"text-neutral-500 dark:text-neutral-400"},"Total:",-1)),t("span",sd,m(s(e.costData.totalCost)),1)]),t("div",null,[o[7]||(o[7]=t("span",{class:"text-neutral-500 dark:text-neutral-400"},"Per msg:",-1)),t("span",ld,m(s(e.costData.avgCostPerMessage)),1)])]),e.costData.modelBreakdown.length>0?(n(),r("table",od,[o[8]||(o[8]=t("thead",null,[t("tr",{class:"border-b border-neutral-200 dark:border-neutral-800"},[t("th",{class:"text-left py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Model"),t("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px] w-14"},"Reqs"),t("th",{class:"text-right py-1.5 font-medium text-neutral-500 dark:text-neutral-400 uppercase text-[10px]"},"Cost")])],-1)),t("tbody",null,[(n(!0),r($e,null,Ne(e.costData.modelBreakdown,p=>(n(),r("tr",{key:p.modelName},[t("td",{class:"py-1.5 truncate max-w-[120px] text-neutral-700 dark:text-neutral-300",title:p.modelName},m(p.modelName),9,id),t("td",dd,m(p.requestCount),1),t("td",ud,m(s(p.totalCost)),1)]))),128))])])):S("",!0)])])):S("",!0)]),_:1}))]))}}),fd={class:"flex flex-col h-full min-w-0 overflow-hidden"},vd={class:"pl-7 pr-4 border-b border-neutral-300 dark:border-neutral-700 h-12 flex items-center shrink-0"},pd={class:"flex items-center justify-between w-full"},gd={class:"flex items-center gap-2"},md={class:"font-mono"},hd={class:"flex-1 min-h-0 flex flex-col overflow-hidden relative"},xd={key:0,class:"shrink-0 border-b border-neutral-200 bg-neutral-50 p-3 dark:border-neutral-800 dark:bg-neutral-950"},bd={key:0,class:"text-neutral-500 dark:text-neutral-400 text-center py-8"},yd={key:1,class:"flex justify-center py-8"},kd={key:2,class:"text-red-600 dark:text-red-400 text-center py-8"},wd={key:0,class:"text-neutral-500 dark:text-neutral-400 text-center py-8"},_d={key:1,class:"p-3 bg-white dark:bg-neutral-900 border-t border-neutral-300 dark:border-neutral-700"},$d={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"},Cd={class:"flex items-center justify-end gap-2"},Sd=["disabled"],Lh=We({__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:i,emit:a}){const s=e,l=a,o=x(!1),p=x(new Set),h=x(new Map),L=()=>{o.value=!o.value,o.value||(p.value=new Set,h.value=new Map)},M=(u,c)=>{const C=new Set(p.value);c?C.add(u):C.delete(u),p.value=C},w=(u,c)=>{const C=new Map(h.value);C.set(u,c),h.value=C},y=()=>{o.value=!1,p.value=new Set,h.value=new Map},T=A(()=>p.value.size),B=A(()=>{let u=0;for(const[c]of h.value)p.value.has(c)||u++;return u}),E=A(()=>{const u=T.value,c=B.value;return u>0&&c>0?`Delete (${u}), Update (${c})`:u>0?`Delete (${u})`:c>0?`Save changes (${c})`:"Delete"}),H=A(()=>T.value>0||B.value>0),U=async()=>{if(!s.threadId||!H.value)return;K.value=null;const u=[];for(const c of p.value){const C=G.value.find(O=>O.id===c);C&&"log_id"in C&&C.log_id&&u.push(C.log_id)}try{for(const[c,C]of h.value)p.value.has(c)||await fe(c,C);for(const c of p.value)await W(c);u.length>0&&l("logsDeleted",u)}catch{K.value="Message changes could not be applied. Please try again."}finally{y()}},{messages:G,threadInfo:q,isFetching:j,error:J,wsConnected:ve,wsError:ae,isExecuting:Q,deleteMessageById:W,updateMessageContent:fe,stopThread:X,sendMessage:Re,attachments:Fe,addAttachment:re,removeAttachment:De}=vl(A(()=>s.threadId)),{thread:P}=Gn(A(()=>s.threadId)),{theme:de}=Dr();he(()=>G.value.length,u=>l("messageCountChanged",u),{immediate:!0});const le=A(()=>{const u=[];for(const c of G.value){const C=c,O=C.attachments||[];for(const Y of O)Y.path&&u.push(Y.path);if(typeof C.content=="string")for(const Y of C.content.matchAll(/\/attachments\/[^\s"'`),]+/g))u.push(Y[0])}for(const c of Fe.value)c.path&&u.push(c.path);return u.sort().join(`
|
|
9
|
+
`)});he(le,(u,c)=>{u&&u!==c&&l("filesChanged")});const ye=A(()=>!1),me=u=>{re(u)},pe=x(null),Me=x(null),Ce=x(null);i({scrollToLogId:u=>Me.value&&pe.value?Me.value.scrollToLogId(u,pe.value):!1,hasWorkblockForLogId:u=>Me.value?Me.value.hasWorkblockForLogId(u):!1,messageCount:A(()=>G.value.length),focusComposer:()=>Ce.value?.focusInput()});const K=x(null),xe=x(!1),ue=x(!1),Se=x(null),Ue=u=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}).format(u);async function D(){if(!s.threadId){Se.value=null;return}ue.value=!0;try{const u=await fetch(He(`/api/threads/${s.threadId}/cost`));if(!u.ok)throw new Error("Failed to fetch cost breakdown");Se.value=await u.json()}catch{Se.value=null,xe.value=!1}finally{ue.value=!1}}const be=A(()=>ue.value&&!Se.value?"...":Ue(Se.value?.totalCost??0)),se=async()=>{xe.value=!xe.value,xe.value&&!Se.value&&await D()},we=async()=>{await Be(),pe.value&&(pe.value.scrollTop=pe.value.scrollHeight)};he(()=>G.value.length,async()=>{await we()}),he(()=>s.threadId,async u=>{Se.value=null,xe.value=!1,u&&D(),u&&await we()}),he(()=>G.value.length,()=>{s.threadId&&D()},{immediate:!0}),he(j,async(u,c)=>{c&&!u&&await we()});const Te=u=>{const c=q.value?.agent||P.value?.agent;if(!c)return"ai A";const C=c.type;return u==="A"&&c.side_a_label?c.side_a_label:u==="B"&&c.side_b_label?c.side_b_label:C==="ai_human"?u==="A"?"ai":"human":u==="A"?"ai A":"ai B"},ce=A(()=>Te("A")),ge=A(()=>Te("B")),oe=()=>{const u=q.value?.agent||P.value?.agent;return u?typeof u.id=="string"?u.id:typeof u.name=="string"?u.name:s.threadId||"thread":s.threadId||"thread"},Ie=A(()=>{const u=q.value?.agent||P.value?.agent;if(!u)return null;const c=typeof u.icon=="string"?u.icon:"",C=typeof u.id=="string"?u.id:typeof u.name=="string"?u.name:"";return c||(C?wn(C):null)}),je=(u,c)=>typeof window>"u"?c:window.getComputedStyle(document.documentElement).getPropertyValue(u).trim()||c,Oe=A(()=>{const u=Te("B");return u.trim().toLowerCase()==="human"?(de.value,Fr({bg:je("--accent-100","#f5f5f5"),fg:je("--accent-600","#737373"),border:je("--accent-300","#d4d4d4")})):wn(`${oe()}:side-b:${u}`)}),V=async u=>{if(!s.threadId||!Re)throw new Error("Thread is not ready for messages");await Re(u),await we()},F=async()=>{s.threadId&&await X()};return(u,c)=>(n(),r("div",fd,[t("div",vd,[t("div",pd,[t("button",{onClick:c[0]||(c[0]=ze(C=>l("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"},[z(f(ln),{size:18,class:"shrink-0"}),c[6]||(c[6]=t("h2",{class:"text-base font-bold"},"Messages",-1)),e.threadId?(n(),N(Ua,{key:0,connected:f(ve),error:f(ae)},null,8,["connected","error"])):S("",!0)]),t("div",gd,[e.threadId?(n(),r("button",{key:0,onClick:ze(se,["stop"]),type:"button",class:ee(["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":xe.value}]),title:"Toggle cost breakdown"},[t("span",md,m(be.value),1)],2)):S("",!0),e.threadId&&f(G).length>0?(n(),r("button",{key:1,onClick:L,type:"button",class:ee(["p-1 hover:bg-neutral-100 dark:hover:bg-neutral-900 rounded transition-colors",{"bg-neutral-200 dark:bg-neutral-800":o.value}]),title:"Edit messages"},[z(f(lr),{size:20})],2)):S("",!0),e.showCollapseButton!==!1?(n(),r("button",{key:2,onClick:c[1]||(c[1]=C=>l("collapse")),type:"button",class:"p-1 hover:bg-neutral-100 dark:hover:bg-neutral-900 rounded transition-colors",title:"Collapse pane"},[z(f(La),{size:20})])):S("",!0)])])]),t("div",hd,[e.threadId&&xe.value&&!e.createThreadDraft?(n(),r("div",xd,[z(cd,{expanded:!0,loading:ue.value,"cost-data":Se.value,"hide-header":"",onToggle:se},null,8,["loading","cost-data"])])):S("",!0),t("div",{ref_key:"messagesContainer",ref:pe,class:ee(["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?(n(),N(_i,{key:0,inline:"","model-value":!0,"locked-agent-id":e.lockedAgentId,"onUpdate:modelValue":c[2]||(c[2]=C=>{C||l("cancelCreateThread")}),onThreadCreated:c[3]||(c[3]=C=>l("threadCreated",C))},null,8,["locked-agent-id"])):(n(),r($e,{key:1},[e.threadId?f(j)?(n(),r("div",yd,[z(qe)])):f(J)?(n(),r("div",kd," Error loading messages: "+m(f(J)),1)):(n(),r($e,{key:3},[e.threadId&&f(G).length===0?(n(),r("div",wd," No messages yet ")):(n(),N(Xo,{key:1,ref_key:"agentMessagesRef",ref:Me,messages:f(G),threadId:e.threadId,selectedMessageId:e.selectedMessageId,selectedLogId:e.selectedLogId,selectedEffectId:e.selectedEffectId,hoveredLogId:e.hoveredLogId,isEditMode:o.value,selectedForDelete:p.value,editedMessages:h.value,assistantAvatarSrc:Ie.value,userAvatarSrc:Oe.value,onMessageClick:c[4]||(c[4]=(C,O,Y)=>l("messageClick",C,O,Y)),onMessageHover:c[5]||(c[5]=C=>l("messageHover",C)),onSelectionChange:M,onMessageEdit:w},null,8,["messages","threadId","selectedMessageId","selectedLogId","selectedEffectId","hoveredLogId","isEditMode","selectedForDelete","editedMessages","assistantAvatarSrc","userAvatarSrc"]))],64)):(n(),r("div",bd," Select a thread to view messages "))],64))],2),e.threadId&&o.value?(n(),r("div",_d,[K.value?(n(),r("div",$d,m(K.value),1)):S("",!0),t("div",Cd,[t("button",{onClick:y,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 "),t("button",{onClick:U,disabled:!H.value,class:ee(["px-4 py-2 rounded-lg font-medium text-sm transition-colors",{"bg-red-600 text-white hover:bg-red-700":H.value&&T.value>0,"bg-black text-white hover:bg-neutral-800 dark:bg-white dark:text-black dark:hover:bg-neutral-200":H.value&&T.value===0,"bg-neutral-200 text-neutral-400 dark:bg-neutral-700 dark:text-neutral-500 cursor-not-allowed":!H.value}])},m(E.value),11,Sd)])])):e.threadId?(n(),N(Hi,{key:2,ref_key:"messageComposerRef",ref:Ce,attachments:f(Fe),"assistant-avatar-src":Ie.value,"user-avatar-src":Oe.value,"side-a-label":ce.value,"side-b-label":ge.value,"is-executing":f(Q),"is-processing-files":ye.value,"send-message":V,"stop-thread":F,"add-files":me,"remove-attachment":f(De),onSent:we},null,8,["attachments","assistant-avatar-src","user-avatar-src","side-a-label","side-b-label","is-executing","is-processing-files","remove-attachment"])):S("",!0)])]))}});function fa(e){return!!e&&typeof e=="object"}function mt(e){return typeof e=="string"?e:null}function va(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function it(e,i){return Object.prototype.hasOwnProperty.call(e,i)}function Td(e){if(!fa(e))return null;const i=e.type,a=e.log_id;return typeof a!="string"||a.length===0?null:i==="log_queued_tools"?typeof e.queued_tools=="string"?{type:i,log_id:a,queued_tools:e.queued_tools}:null:i==="log_data"&&fa(e.data)?{type:i,log_id:a,data:Id(e.data)}:null}function Id(e){const i={};if(it(e,"message_id")){const a=mt(e.message_id);a!==null&&(i.message_id=a)}if(it(e,"provider")){const a=mt(e.provider);a!==null&&(i.provider=a)}if(it(e,"actual_provider")&&(i.actual_provider=mt(e.actual_provider)),it(e,"model")){const a=mt(e.model);a!==null&&(i.model=a)}if(it(e,"model_name")&&(i.model_name=mt(e.model_name)),it(e,"prompt_name")&&(i.prompt_name=mt(e.prompt_name)),it(e,"tools_called")&&(i.tools_called=mt(e.tools_called)),it(e,"queued_tools")&&(i.queued_tools=mt(e.queued_tools)),it(e,"provider_tools")&&(i.provider_tools=mt(e.provider_tools)),it(e,"parent_log_id")&&(i.parent_log_id=mt(e.parent_log_id)),it(e,"retry_of_log_id")&&(i.retry_of_log_id=mt(e.retry_of_log_id)),it(e,"error")&&(i.error=mt(e.error)),it(e,"cost_total")&&(i.cost_total=va(e.cost_total)),it(e,"is_complete")&&typeof e.is_complete=="boolean"&&(i.is_complete=e.is_complete),it(e,"created_at")){const a=va(e.created_at);a!==null&&(i.created_at=a)}return i}function Ad(e,i){return{id:e,message_id:i.message_id??"",provider:i.provider??"",actual_provider:i.actual_provider??null,model:i.model??"",model_name:i.model_name??null,prompt_name:i.prompt_name??null,tools_called:i.tools_called??null,queued_tools:i.queued_tools??null,provider_tools:i.provider_tools??null,parent_log_id:i.parent_log_id??null,retry_of_log_id:i.retry_of_log_id??null,error:i.error??null,cost_total:i.cost_total??null,is_complete:i.is_complete??!1,created_at:i.created_at??0}}function Ed(e,i,a){if(i.type==="log_queued_tools")return{...e,queued_tools:i.queued_tools};const s=a.get(i.log_id);return s?{...e,queued_tools:s}:e}function Ld(e,i){const a=new Map(e.pendingQueuedTools),s=e.realtimeLogs.findIndex(M=>M.id===i.log_id),l=s>=0?e.realtimeLogs[s]:null,o=e.httpLogs.find(M=>M.id===i.log_id)??null;if(i.type==="log_queued_tools"&&!l&&!o)return a.set(i.log_id,i.queued_tools),{...e,pendingQueuedTools:a};const p=l??o??Ad(i.log_id,i.type==="log_data"?i.data:{}),h=Ed(i.type==="log_data"?{...p,...i.data,id:i.log_id}:p,i,a);a.delete(i.log_id);const L=s>=0?e.realtimeLogs.map((M,w)=>w===s?h:M):[...e.realtimeLogs,h];return{...e,realtimeLogs:L,pendingQueuedTools:a}}function Md(e,i){const{limit:a=100,offset:s=0,order:l="desc",autoFetch:o=!0,enableWebSocket:p=!1}=i||{};A(()=>!!(typeof e=="string"?e:e?.value));const h=A(()=>{const Me=typeof e=="string"?e:e?.value;if(!Me)return"";const Ce=new URLSearchParams,ne=typeof a=="number"?a:a.value,Z=typeof s=="number"?s:s.value,K=typeof l=="string"?l:l.value;return Ce.append("limit",ne.toString()),Ce.append("offset",Z.toString()),Ce.append("order",K),He(`/api/threads/${Me}/logs?${Ce.toString()}`)}),{data:L,error:M,isFetching:w,isFinished:y,execute:T,abort:B}=Vt(h,{immediate:!1}).get().json();he([h,()=>o],([Me,Ce])=>{Me&&Ce&&T()},{immediate:!0});const E=A(()=>!M.value||M.value.toString().includes("aborted")||M.value.toString().includes("abort")?null:M.value),H=A(()=>L.value?.logs||[]),U=A(()=>L.value?.total||0),G=A(()=>L.value?.hasMore||!1),q=x(null),j=x(!1),J=x(null),ve=x([]),ae=new Map;let Q=0,W=null,fe=null,X=!0,Re=null;const Fe=3e4,re=3e4,De=()=>{W&&(clearTimeout(W),W=null),fe&&(clearInterval(fe),fe=null)},P=()=>{fe&&clearInterval(fe),fe=setInterval(()=>{q.value&&q.value.readyState===WebSocket.OPEN&&q.value.send("ping")},re)},de=()=>{if(!X||!p)return;const Me=Math.min(1e3*Math.pow(2,Q),Fe);Q++,Jt(),W=setTimeout(()=>{X&&le()},Me)},le=()=>{const Me=typeof e=="string"?e:e?.value;if(!Me||!p)return;q.value&&(Re=null,q.value.close()),Q===0&&(ve.value=[]);const Ce=window.location.protocol==="https:"?"wss:":"ws:",ne=window.location.host,Z=za(`${Ce}//${ne}${He(`/api/threads/${Me}/logs`)}`);try{const K=new WebSocket(Z);q.value=K,Re=K,K.onopen=()=>{Re===K&&(j.value=!0,J.value=null,Q=0,P(),Jt("Logs WebSocket","Connected"))},K.onmessage=xe=>{if(Re===K&&xe.data!=="pong")try{const ue=Td(JSON.parse(xe.data));if(ue){const Se=Ld({realtimeLogs:ve.value,httpLogs:H.value,pendingQueuedTools:ae},ue);ve.value=Se.realtimeLogs,ae.clear(),Se.pendingQueuedTools.forEach((Ue,D)=>{ae.set(D,Ue)})}}catch{J.value="Failed to parse log update"}},K.onerror=xe=>{Re===K&&(J.value="WebSocket connection error")},K.onclose=()=>{Re===K&&(j.value=!1,De(),Jt("Logs WebSocket","Disconnected"),de())}}catch(K){J.value=K instanceof Error?K.message:"Failed to create WebSocket",de()}},ye=()=>{X=!1,De(),Re=null,q.value&&(q.value.close(),q.value=null),j.value=!1,Q=0,ve.value=[],ae.clear()},me=()=>{X=!0,Q=0,le()};return Ht(()=>{ye()}),{logs:A(()=>{if(!p)return H.value;const Me=new Map;H.value.forEach(Z=>Me.set(Z.id,Z)),ve.value.forEach(Z=>Me.set(Z.id,Z));const Ce=typeof l=="string"?l:l.value;return Array.from(Me.values()).sort((Z,K)=>Ce==="desc"?K.created_at-Z.created_at:Z.created_at-K.created_at)}),total:U,hasMore:G,error:E,isFetching:w,isFinished:y,refetch:T,abort:B,wsConnected:j,wsError:J,connectWebSocket:me,disconnectWebSocket:ye}}function Rd(e,i){const a=A(()=>{const h=e.value,L=i.value;return!h||!L?null:He(`/api/threads/${h}/logs/${L}`)}),{data:s,error:l,isFetching:o,execute:p}=Vt(a,{immediate:!1}).get().json();return he([e,i],([h,L])=>{h&&L&&p()},{immediate:!0}),{logDetails:s,error:l,isFetching:o,refetch:p}}const Dd={class:"min-h-0 flex-1 overflow-hidden"},Fd=["aria-valuenow","title"],Pd={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"},Nd=We({__name:"InspectorResizablePane",props:{heightPercent:{},storageKey:{},minMainHeight:{default:180},minDetailHeight:{default:260},title:{default:"Resize details"}},emits:["update:heightPercent"],setup(e,{emit:i}){const a=e,s=i,l=x(null),o=x(!1),p=(E,H,U)=>Math.min(U,Math.max(H,E)),h=E=>p(E,20,80),L=()=>{if(!a.storageKey||typeof window>"u")return;const E=window.localStorage.getItem(a.storageKey),H=E?Number.parseFloat(E):Number.NaN;Number.isFinite(H)&&s("update:heightPercent",h(H))},M=()=>{!a.storageKey||typeof window>"u"||window.localStorage.setItem(a.storageKey,a.heightPercent.toFixed(2))},w=E=>{if(!l.value)return;const H=l.value.getBoundingClientRect();if(H.height<=0)return;const U=H.bottom-E.clientY,G=a.minDetailHeight/H.height*100,q=100-a.minMainHeight/H.height*100;s("update:heightPercent",p(U/H.height*100,Math.min(G,q),Math.max(G,q)))},y=()=>{o.value&&(o.value=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("pointermove",w),window.removeEventListener("pointerup",y),window.removeEventListener("pointercancel",y),M())},T=E=>{E.preventDefault(),E.currentTarget instanceof HTMLElement&&E.currentTarget.setPointerCapture(E.pointerId),o.value=!0,document.body.style.cursor="row-resize",document.body.style.userSelect="none",w(E),window.addEventListener("pointermove",w),window.addEventListener("pointerup",y),window.addEventListener("pointercancel",y)},B=E=>{const H=E.shiftKey?10:4;E.key==="ArrowUp"?(E.preventDefault(),s("update:heightPercent",h(a.heightPercent+H)),M()):E.key==="ArrowDown"&&(E.preventDefault(),s("update:heightPercent",h(a.heightPercent-H)),M())};return zt(L),Mt(y),(E,H)=>(n(),r("div",{ref_key:"root",ref:l,class:"flex h-full min-h-0 flex-col overflow-hidden"},[t("div",Dd,[Lt(E.$slots,"main",{},void 0,!0)]),z(on,{name:"inspector-slide-up"},{default:Ee(()=>[E.$slots.detail?(n(),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:vt({height:`${e.heightPercent}%`})},[t("div",{class:ee(["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",o.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:T,onKeydown:B},null,42,Fd),t("div",Pd,[Lt(E.$slots,"detail",{},void 0,!0)])],4)):S("",!0)]),_:3})],512))}}),Tn=dt(Nd,[["__scopeId","data-v-45799e53"]]),en=new WeakMap,zd=e=>1-Math.pow(1-e,3),jd=()=>typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,Fn=(e,i,a)=>Math.min(Math.max(e,i),a),Cn=(e,i)=>{const a=i.duration??80,s=Math.max(0,e.scrollHeight-e.clientHeight),l=Math.max(0,e.scrollWidth-e.clientWidth),o=i.top===void 0?e.scrollTop:Fn(i.top,0,s),p=i.left===void 0?e.scrollLeft:Fn(i.left,0,l),h=en.get(e);if(h!==void 0&&(window.cancelAnimationFrame(h),en.delete(e)),a<=0||jd()){e.scrollTo({top:o,left:p,behavior:"auto"});return}const L=e.scrollTop,M=e.scrollLeft,w=o-L,y=p-M;if(Math.abs(w)<1&&Math.abs(y)<1){e.scrollTo({top:o,left:p,behavior:"auto"});return}const T=window.performance.now(),B=E=>{const H=Fn((E-T)/a,0,1),U=zd(H);e.scrollTo({top:L+w*U,left:M+y*U,behavior:"auto"}),H<1?en.set(e,window.requestAnimationFrame(B)):en.delete(e)};en.set(e,window.requestAnimationFrame(B))},Bd={class:"text-xs font-semibold"},Od={key:0,class:"font-normal text-neutral-500 dark:text-neutral-400"},Vd={class:"flex items-center gap-2"},qd={class:"text-neutral-500 text-xs"},Hd=We({__name:"CollapsibleSection",props:{title:{},subtitle:{},sectionId:{},expanded:{type:Boolean},scrollContainer:{},copyContent:{},stickyOffset:{}},emits:["toggle"],setup(e,{expose:i,emit:a}){const s=e,l=a,o=x(null),p=x(!1);let h=null,L=null;const M=()=>{h?.disconnect(),L?.disconnect(),h=null,L=null},w=()=>{Be(()=>{if(!s.expanded||!o.value||!s.scrollContainer){p.value=!1;return}const E=s.scrollContainer.clientHeight;p.value=o.value.scrollHeight>E*2})},y=()=>{M(),!(typeof ResizeObserver>"u")&&(o.value&&(h=new ResizeObserver(w),h.observe(o.value)),s.scrollContainer&&(L=new ResizeObserver(w),L.observe(s.scrollContainer)))};he(()=>[s.expanded,s.scrollContainer],async([E])=>{await Be(),y(),E?w():p.value=!1},{immediate:!0,flush:"post"}),zt(async()=>{await Be(),y(),w()}),Mt(M);const T=()=>{if(o.value&&s.scrollContainer){const H=o.value.offsetTop-(s.stickyOffset??88);Cn(s.scrollContainer,{top:H})}},B=()=>{if(o.value&&s.scrollContainer){const E=o.value.offsetTop+o.value.offsetHeight,H=s.scrollContainer.clientHeight,U=E-H;Cn(s.scrollContainer,{top:U})}};return i({checkHeight:w,contentRef:o}),(E,H)=>(n(),r("div",null,[t("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:H[1]||(H[1]=U=>l("toggle"))},[t("span",Bd,[Ge(m(e.title)+" ",1),e.subtitle?(n(),r("span",Od,"("+m(e.subtitle)+")",1)):S("",!0)]),t("div",Vd,[p.value&&e.expanded?(n(),r($e,{key:0},[t("button",{onClick:ze(T,["stop"]),class:"text-[10px] text-neutral-500 hover:text-neutral-700 dark:hover:text-neutral-300"},"↑ Top"),t("button",{onClick:ze(B,["stop"]),class:"text-[10px] text-neutral-500 hover:text-neutral-700 dark:hover:text-neutral-300"},"↓ Bottom")],64)):S("",!0),Lt(E.$slots,"actions",{},void 0,!0),e.copyContent?(n(),r("span",{key:1,class:"inline-flex",onClick:H[0]||(H[0]=ze(()=>{},["stop"]))},[z(Jn,{content:e.copyContent,variant:"ghost",size:"xs"},null,8,["content"])])):S("",!0),t("span",qd,m(e.expanded?"▼":"▶"),1)])]),rt(t("div",{ref_key:"contentRef",ref:o,class:"border-x border-b border-neutral-300 dark:border-neutral-700 rounded-b"},[Lt(E.$slots,"default",{},void 0,!0)],512),[[ht,e.expanded]])]))}}),Tt=dt(Hd,[["__scopeId","data-v-634445ea"]]),Ud=new Set(["pending","processing","completed","failed","agent_canceled","user_canceled"]);function Bt(e,i){return typeof e=="number"&&Number.isFinite(e)?e:i}function pa(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Wd(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function Kd(e){return typeof e=="string"&&Ud.has(e)?e:"pending"}function Jd(e){const i=e&&typeof e=="object"?e:{},s=(Array.isArray(i.effects)?i.effects:[]).filter(l=>!!l&&typeof l=="object").filter(l=>typeof l.id=="string"&&typeof l.name=="string").map(l=>({id:l.id,name:l.name,args:Wd(l.args),scheduledAt:Bt(l.scheduledAt,0),createdAt:Bt(l.createdAt,0),status:Kd(l.status),attempts:Bt(l.attempts,0),error:typeof l.error=="string"?l.error:null,completedAt:pa(l.completedAt),manualRun:l.manualRun===!0,manualRunAt:pa(l.manualRunAt),replayedFrom:typeof l.replayedFrom=="string"?l.replayedFrom:null}));return{effects:s,total:Bt(i.total,s.length),upcomingCount:Bt(i.upcomingCount,s.filter(l=>l.status==="pending").length),limit:Bt(i.limit,s.length),offset:Bt(i.offset,0)}}function Sn(e){return!Number.isFinite(e)||e<=0?0:e>9999999999?Math.floor(e/1e3):e}function It(e){if(!e)return"Unknown";const i=Sn(e);return i?new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(i)):"Unknown"}function Gd(e){const i=Math.abs(Math.trunc(e)),a=Math.max(1,Math.round(i/1e3));if(a<60)return`${a}s`;const s=Math.floor(a/60),l=a%60;if(s<60)return l>0?`${s}m ${l}s`:`${s}m`;const o=Math.floor(s/60),p=s%60;if(o<24)return p>0?`${o}h ${p}m`:`${o}h`;const h=Math.floor(o/24),L=o%24;return L>0?`${h}d ${L}h`:`${h}d`}function Yd(e){if(!e.completedAt)return"";const i=Sn(e.scheduledAt),a=Sn(e.completedAt);if(!i||!a)return"";const s=a-i;if(s===0||Math.abs(s)<5e3)return"";const l=s>0?"+":"-",o=s>0?"late":"early";return`${l}${Gd(s)} ${o}`}function Qd(e,i=Date.now()){const a=Sn(e);if(!a)return"";const s=a-i;return s<=0?"Due now":s<6e4?`in ${Math.ceil(s/1e3)}s`:s<60*6e4?`in ${Math.ceil(s/6e4)}m`:s<1440*6e4?`in ${Math.ceil(s/(60*6e4))}h`:`in ${Math.ceil(s/(1440*6e4))}d`}function ga(e){const i=JSON.stringify(e,null,2);return i===void 0?"{}":i}function Xd(e){const i=Object.keys(e);if(i.length===0)return"No arguments";const a=JSON.stringify(e);return a?a.length>96?`${a.slice(0,93)}...`:a:`${i.length} ${i.length===1?"argument":"arguments"}`}function Kt(e){return e.status==="pending"||e.status==="processing"}function gn(e,i){return e<i?-1:e>i?1:0}function Dt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Zd(e,i){const a=Kt(e),s=Kt(i);return a!==s?a?-1:1:a&&s?gn(Dt(e.scheduledAt),Dt(i.scheduledAt))||gn(Dt(e.createdAt),Dt(i.createdAt))||e.id.localeCompare(i.id):gn(Dt(i.createdAt),Dt(e.createdAt))||gn(Dt(i.scheduledAt),Dt(e.scheduledAt))||e.id.localeCompare(i.id)}function eu(e){return[...e].sort(Zd)}function ma(e,i){return e.id===i.id}function et(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function Yt(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function ha(e){if(!e)return"N/A";const i=Yt(e);return i===null?e:JSON.stringify(i,null,2)}function Gt(e){const i=Yt(e);return Array.isArray(i)?i:[]}function tu(e){const i=et(Yt(e)),a=Array.isArray(i.choices)?i.choices:[],s=et(a[0]),l=et(s.message);return Array.isArray(l.tool_calls)?l.tool_calls:[]}function nu(e){const i=et(Yt(e)),a=Array.isArray(i.choices)?i.choices:[],s=et(a[0]),l=et(s.message);return Array.isArray(l.reasoning_details)?l.reasoning_details:[]}function au(e){const i=et(Yt(e)),a=Array.isArray(i.choices)?i.choices:[],s=et(a[0]),l=et(s.message);return Array.isArray(l.images)?l.images:[]}function ru(e){const i=new Map,a=Gt(e);for(const s of a){const l=et(s),o=l.tool_call_id;typeof o=="string"&&i.set(o,{content:l.content,status:typeof l.status=="string"?l.status:void 0,tool_name:typeof l.tool_name=="string"?l.tool_name:void 0,timestamp:typeof l.timestamp=="number"?l.timestamp:void 0})}return i}function xa(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function su(e){const i=[],a=new Set,s=Gt(e);for(const l of s){const o=et(l),p=typeof o.id=="string"?o.id:null;if(!p||a.has(p))continue;const h=typeof o.name=="string"?o.name:null,L=xa(o.scheduledAt),M=xa(o.createdAt),w=typeof o.status=="string"?o.status:null;a.add(p),i.push({id:p,name:h,scheduledAt:L,createdAt:M,status:w,reference:{id:p,name:h}})}return i}function lu(e){const i=et(e);return typeof i.id=="string"&&(typeof i.type=="string"||typeof i.name=="string")&&typeof i.status=="string"}function ou(e){return Gt(e).filter(lu).map(i=>{const a=et(i),s=i.name??i.type;return{...a,name:s,type:i.type??s,raw:a}})}function iu(e){const i=[];for(const a of e.toolCalls){const s=et(a),l=et(s.function);i.push({id:typeof s.id=="string"?s.id:`tool-${i.length}`,name:typeof l.name=="string"?l.name:"Unknown",isProvider:!1,isQueued:!1,function:{name:typeof l.name=="string"?l.name:"Unknown",arguments:typeof l.arguments=="string"?l.arguments:void 0}})}for(const a of e.queuedTools){const s=et(a),l=et(s.function);i.push({id:typeof s.id=="string"?s.id:`queued-${i.length}`,name:typeof l.name=="string"?l.name:"Unknown",isProvider:!1,isQueued:!0,function:{name:typeof l.name=="string"?l.name:"Unknown",arguments:typeof l.arguments=="string"?l.arguments:void 0},queuedAt:typeof s.queued_at=="number"?s.queued_at:void 0})}for(const a of e.providerToolCalls){const s=a.name??a.type;i.push({id:a.id,name:s,isProvider:!0,isQueued:!1,providerType:s,status:a.status,rawProviderTool:a.raw,result:a.result,metadata:a.metadata})}return i}function du(e){if(e.rawProviderTool)return JSON.stringify(e.rawProviderTool,null,2);const i={id:e.id,name:e.name,type:e.providerType??e.name,status:e.status??"completed"};return e.result!==void 0&&(i.result=e.result),e.metadata!==void 0&&(i.metadata=e.metadata),JSON.stringify(i,null,2)}function uu(e){return e?e.replace(/\\n/g,`
|
|
10
10
|
`).replace(/\\t/g," ").replace(/\n{3,}/g,`
|
|
11
11
|
|
|
12
|
-
`).trim():""}function Au(e){const i=et(Yt(e)),a=et(i._metadata),s=et(a.visionFiltering);if(s.enabled!==!0)return null;const l=Number(s.removedUserImageParts||0),o=Number(s.removedToolImageAttachments||0),m=l+o;return m>0?{removedUserImageParts:l,removedToolImageAttachments:o,totalRemoved:m}:null}function Eu(e){return{cloudflare:"Cloudflare",cerebras:"Cerebras",google:"Google",groq:"Groq",openai:"OpenAI",openrouter:"OpenRouter",xai:"xAI"}[e]||e.charAt(0).toUpperCase()+e.slice(1)}const Lu={class:"flex flex-col gap-2 px-3 pt-3 pb-2 sm:flex-row sm:items-start sm:justify-between"},Mu={class:"flex min-w-0 flex-1 flex-wrap items-center gap-x-2 gap-y-1.5"},Ru={class:"flex shrink-0 items-center"},Du=["disabled"],Fu=["disabled"],Pu={class:"min-w-32 flex-1 basis-36 truncate text-base font-semibold text-neutral-900 dark:text-neutral-100"},zu={class:"hidden items-center gap-1 lg:flex"},Nu={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"},ju=["src","alt"],Bu={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"},Ou=["src","alt"],Vu={class:"flex shrink-0 items-center justify-end gap-2 self-end sm:self-start"},qu=["disabled","title"],Hu={key:1},Uu={class:"flex flex-col gap-1.5 px-3 pb-2 sm:flex-row sm:items-center sm:justify-between"},Wu={class:"flex min-w-0 flex-wrap items-center gap-0.5"},Ku={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"},Ju={class:"truncate"},Gu={class:"text-red-600 dark:text-red-400"},Yu={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"},Qu={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},Xu={class:"flex items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},Zu={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},ec={key:1},tc={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},nc={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},ac={class:"flex items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},rc={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},sc={key:1},lc={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},oc={key:1,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},ic={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},dc={class:"flex items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},uc={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},cc={key:1},fc={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},pc={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},vc={class:"flex items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},mc={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},gc={key:0},hc={key:1},xc={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},bc={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"},yc={class:"flex flex-wrap items-center gap-x-2 gap-y-1"},kc={key:0,class:"font-mono text-neutral-700 dark:text-neutral-200"},_c={key:1,class:"truncate font-mono text-[11px] text-neutral-400"},wc={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"},$c={class:"mb-2 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},Cc={class:"space-y-1.5"},Sc=["onClick"],Tc={class:"flex min-w-0 items-baseline gap-2"},Ic={class:"min-w-0 truncate font-mono text-xs font-medium text-neutral-800 dark:text-neutral-100"},Ac={class:"truncate font-mono text-[11px] text-neutral-400"},Ec={class:"mt-1 flex min-w-0 flex-wrap gap-x-3 gap-y-1 text-[11px] text-neutral-500 dark:text-neutral-400"},Lc={key:0},Mc={key:1,class:"min-w-0 truncate"},Rc={key:2,class:"min-w-0 truncate"},Dc={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"},Fc={class:"flex items-start justify-between gap-3 border-b border-red-200 px-3 py-2 dark:border-red-900"},Pc={class:"min-w-0"},zc={class:"text-[10px] font-semibold uppercase tracking-wide text-red-700 dark:text-red-300"},Nc={class:"truncate text-sm font-semibold text-red-900 dark:text-red-100"},jc={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"},Bc={key:1,class:"border-t border-red-200 dark:border-red-900"},Oc={class:"bg-white dark:bg-black/30"},Vc={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"},qc={key:2,class:"border-t border-red-200 dark:border-red-900"},Hc={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"},Uc={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"},Wc={key:1,class:"border-t border-red-200 dark:border-red-900"},Kc={class:"bg-white dark:bg-black/30"},Jc={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"},Gc={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"},Yc={class:"space-y-2"},Qc={class:"mb-2 flex flex-wrap items-center gap-2"},Xc={class:"inline-flex overflow-hidden rounded border border-neutral-200 dark:border-neutral-800"},Zc=["onClick"],e0={key:1,class:"text-xs text-red-600 dark:text-red-400"},t0={key:0,class:"mb-2 rounded border border-amber-300 dark:border-amber-700 bg-amber-50 dark:bg-amber-950/30 p-2"},n0={class:"mt-1 text-xs text-amber-700 dark:text-amber-300"},a0=["onClick"],r0={class:"font-mono"},s0={class:"text-neutral-500"},l0={class:"px-2 py-2 bg-white dark:bg-neutral-950 border-t border-neutral-200 dark:border-neutral-800"},o0={key:0,class:"text-xs text-neutral-600 dark:text-neutral-400 mb-2"},i0={class:"bg-white dark:bg-neutral-900"},d0={class:"space-y-2"},u0={class:"divide-y divide-neutral-200 bg-white dark:divide-neutral-800 dark:bg-neutral-950"},c0=["onClick"],f0={class:"flex min-w-0 items-center gap-2"},p0={class:"truncate font-mono text-xs font-semibold text-neutral-900 dark:text-neutral-100"},v0={class:"font-mono text-[10px] text-neutral-400 dark:text-neutral-500"},m0={class:"flex shrink-0 items-center gap-2"},g0={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()"},h0={class:"text-[10px] text-neutral-400 dark:text-neutral-500"},x0={class:"@container border-t border-neutral-200 bg-neutral-50/40 dark:border-neutral-800 dark:bg-neutral-950/40"},b0={key:0,class:"grid grid-cols-1 @[640px]:grid-cols-2 @[640px]:divide-x divide-neutral-200 dark:divide-neutral-800"},y0={class:"px-3 py-2"},k0={class:"mb-1 flex items-center gap-2 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},_0={key:0,class:"font-mono normal-case tracking-normal text-emerald-600 dark:text-emerald-400"},w0={class:"border-t border-neutral-200 px-3 py-2 @[640px]:border-t-0 dark:border-neutral-800"},$0={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"},C0={key:1,class:"font-mono text-[11px] italic text-neutral-400 dark:text-neutral-500"},S0={key:1,class:"px-3 py-2"},T0={class:"flex flex-wrap gap-2 bg-white px-3 py-2 dark:bg-neutral-950"},I0=["src","alt"],A0={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"},E0={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"},L0={class:"divide-y divide-neutral-200 bg-white dark:divide-neutral-800 dark:bg-neutral-950"},M0={class:"mb-1.5 flex flex-wrap items-center gap-1.5 text-[10px]"},R0={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"},D0={key:0,class:"font-mono text-neutral-500 dark:text-neutral-400"},F0={key:1,class:"text-neutral-500 dark:text-neutral-400"},P0={key:2,class:"text-neutral-500 dark:text-neutral-400"},z0={key:0,class:"whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-neutral-800 dark:text-neutral-200"},N0={class:"whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-neutral-800 dark:text-neutral-200"},j0={key:0,class:"mt-2 border-t border-neutral-200 pt-2 dark:border-neutral-800"},B0={class:"break-all font-mono text-[11px] text-neutral-700 dark:text-neutral-300"},O0={key:2,class:"break-all font-mono text-[11px] text-neutral-700 dark:text-neutral-300"},V0={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"},Ut="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",q0=12,H0=40,U0=36,W0=8,ba="__agentbuilder_system_prompt_view__",K0=Ue({__name:"LogDetails",props:{log:{},threadId:{},hasPrevious:{type:Boolean},hasNext:{type:Boolean}},emits:["close","previous","next","effectClick"],setup(e,{emit:i}){const a=e,s=i,l=b("response"),o=b(new Set),m=b(new Set),{copying:h,copied:M,error:F,copy:k}=qr(),{activeSurface:x,openEditSurface:L}=Fr(),V=b(null),R=b(null),W=b(null),K=b(null),G=b(null),w=b(null),E=b(null),B=b(null),re=b(60),J=b(100);let Q=null;const H=()=>{const A=W.value?.offsetHeight;if(!A)return;const $=Math.max(0,Math.round(A-q0));re.value=$,J.value=$+H0},me=()=>{Q?.disconnect(),Q=null,!(!W.value||typeof ResizeObserver>"u")&&(Q=new ResizeObserver(H),Q.observe(W.value))};Nt(async()=>{await Be(),H(),me()}),Mt(()=>{Q?.disconnect(),Q=null});const Z=b(new Set(["system_prompt","request_body","tools","reasoning_content","reasoning_details"])),Me=(A,$)=>A instanceof Error?A.message:$,De=A=>a.threadId?A.startsWith("data:")||A.startsWith("http")?A:He(`/api/threads/${a.threadId}/fs${A}`):null,se=I(()=>Gt(a.log.tools_schema)),Fe=I(()=>bu(a.log.response_body)),N=I(()=>_u(a.log.tool_results)),de=I(()=>yu(a.log.response_body)),oe=I(()=>Iu(a.log.reasoning_content)),ye=I(()=>ku(a.log.response_body)),ve=I(()=>Cu(a.log.provider_tools)),he=I(()=>Gt(a.log.queued_tools)),Le=I(()=>Su({toolCalls:Fe.value,queuedTools:he.value,providerToolCalls:ve.value})),ae=A=>{o.value.has(A)?o.value.delete(A):o.value.add(A)},Y=A=>{m.value.has(A)?m.value.delete(A):m.value.add(A)},ce=A=>{Z.value.has(A)?Z.value.delete(A):Z.value.add(A)},ne=A=>!Z.value.has(A),le=I(()=>Gt(a.log.errors)),Ie=I(()=>{const A=le.value.map($=>{if(typeof $=="string")return{type:a.log.error_type||"error",message:$};if(!$||typeof $!="object")return{type:a.log.error_type||"error",message:String($??"")};const D=$;return{type:typeof D.type=="string"?D.type:a.log.error_type||"error",message:typeof D.message=="string"?D.message:JSON.stringify(D)}}).filter($=>$.message);return A.length>0?A:a.log.error?[{type:a.log.error_type||"error",message:a.log.error}]:[]}),Re=A=>/\\[nrt"\\]/.test(A),We=A=>{const $="__AGENTBUILDER_ESCAPED_BACKSLASH__";return A.replace(/\\\\/g,$).replace(/\\n/g,`
|
|
13
|
-
`).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(new RegExp(
|
|
12
|
+
`).trim():""}function cu(e){const i=et(Yt(e)),a=et(i._metadata),s=et(a.visionFiltering);if(s.enabled!==!0)return null;const l=Number(s.removedUserImageParts||0),o=Number(s.removedToolImageAttachments||0),p=l+o;return p>0?{removedUserImageParts:l,removedToolImageAttachments:o,totalRemoved:p}:null}function fu(e){return{cloudflare:"Cloudflare",cerebras:"Cerebras",google:"Google",groq:"Groq",openai:"OpenAI",openrouter:"OpenRouter",xai:"xAI"}[e]||e.charAt(0).toUpperCase()+e.slice(1)}const vu={class:"flex flex-col gap-2 px-3 pt-3 pb-2 sm:flex-row sm:items-start sm:justify-between"},pu={class:"flex min-w-0 flex-1 flex-wrap items-center gap-x-2 gap-y-1.5"},gu={class:"flex shrink-0 items-center"},mu=["disabled"],hu=["disabled"],xu={class:"min-w-32 flex-1 basis-36 truncate text-base font-semibold text-neutral-900 dark:text-neutral-100"},bu={class:"hidden items-center gap-1 lg:flex"},yu={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"},ku=["src","alt"],wu={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"},_u=["src","alt"],$u={class:"flex shrink-0 items-center justify-end gap-2 self-end sm:self-start"},Cu=["disabled","title"],Su={key:1},Tu={class:"flex flex-col gap-1.5 px-3 pb-2 sm:flex-row sm:items-center sm:justify-between"},Iu={class:"flex min-w-0 flex-wrap items-center gap-0.5"},Au={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"},Eu={class:"truncate"},Lu={class:"text-red-600 dark:text-red-400"},Mu={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"},Ru={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},Du={class:"flex items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},Fu={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},Pu={key:1},Nu={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},zu={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},ju={class:"flex items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},Bu={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},Ou={key:1},Vu={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},qu={key:1,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},Hu={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},Uu={class:"flex items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},Wu={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},Ku={key:1},Ju={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},Gu={class:"flex flex-col gap-0.5 bg-white px-3 py-2 dark:bg-neutral-900"},Yu={class:"flex items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},Qu={class:"font-mono text-base font-semibold tabular-nums text-neutral-900 dark:text-neutral-100"},Xu={key:0},Zu={key:1},ec={key:0,class:"font-mono text-[10px] tabular-nums text-neutral-500 dark:text-neutral-400"},tc={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"},nc={class:"flex flex-wrap items-center gap-x-2 gap-y-1"},ac={key:0,class:"font-mono text-neutral-700 dark:text-neutral-200"},rc={key:1,class:"truncate font-mono text-[11px] text-neutral-400"},sc={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"},lc={class:"mb-2 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},oc={class:"space-y-1.5"},ic=["onClick"],dc={class:"flex min-w-0 items-baseline gap-2"},uc={class:"min-w-0 truncate font-mono text-xs font-medium text-neutral-800 dark:text-neutral-100"},cc={class:"truncate font-mono text-[11px] text-neutral-400"},fc={class:"mt-1 flex min-w-0 flex-wrap gap-x-3 gap-y-1 text-[11px] text-neutral-500 dark:text-neutral-400"},vc={key:0},pc={key:1,class:"min-w-0 truncate"},gc={key:2,class:"min-w-0 truncate"},mc={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"},hc={class:"flex items-start justify-between gap-3 border-b border-red-200 px-3 py-2 dark:border-red-900"},xc={class:"min-w-0"},bc={class:"text-[10px] font-semibold uppercase tracking-wide text-red-700 dark:text-red-300"},yc={class:"truncate text-sm font-semibold text-red-900 dark:text-red-100"},kc={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"},wc={key:1,class:"border-t border-red-200 dark:border-red-900"},_c={class:"bg-white dark:bg-black/30"},$c={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"},Cc={key:2,class:"border-t border-red-200 dark:border-red-900"},Sc={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"},Tc={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"},Ic={key:1,class:"border-t border-red-200 dark:border-red-900"},Ac={class:"bg-white dark:bg-black/30"},Ec={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"},Lc={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"},Mc={class:"space-y-2"},Rc={class:"mb-2 flex flex-wrap items-center gap-2"},Dc={class:"inline-flex overflow-hidden rounded border border-neutral-200 dark:border-neutral-800"},Fc=["onClick"],Pc={key:1,class:"text-xs text-red-600 dark:text-red-400"},Nc={key:0,class:"mb-2 rounded border border-amber-300 dark:border-amber-700 bg-amber-50 dark:bg-amber-950/30 p-2"},zc={class:"mt-1 text-xs text-amber-700 dark:text-amber-300"},jc=["onClick"],Bc={class:"font-mono"},Oc={class:"text-neutral-500"},Vc={class:"px-2 py-2 bg-white dark:bg-neutral-950 border-t border-neutral-200 dark:border-neutral-800"},qc={key:0,class:"text-xs text-neutral-600 dark:text-neutral-400 mb-2"},Hc={class:"bg-white dark:bg-neutral-900"},Uc={class:"space-y-2"},Wc={class:"divide-y divide-neutral-200 bg-white dark:divide-neutral-800 dark:bg-neutral-950"},Kc=["onClick"],Jc={class:"flex min-w-0 items-center gap-2"},Gc={class:"truncate font-mono text-xs font-semibold text-neutral-900 dark:text-neutral-100"},Yc={class:"font-mono text-[10px] text-neutral-400 dark:text-neutral-500"},Qc={class:"flex shrink-0 items-center gap-2"},Xc={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()"},Zc={class:"text-[10px] text-neutral-400 dark:text-neutral-500"},e0={class:"@container border-t border-neutral-200 bg-neutral-50/40 dark:border-neutral-800 dark:bg-neutral-950/40"},t0={key:0,class:"grid grid-cols-1 @[640px]:grid-cols-2 @[640px]:divide-x divide-neutral-200 dark:divide-neutral-800"},n0={class:"px-3 py-2"},a0={class:"mb-1 flex items-center gap-2 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},r0={key:0,class:"font-mono normal-case tracking-normal text-emerald-600 dark:text-emerald-400"},s0={class:"border-t border-neutral-200 px-3 py-2 @[640px]:border-t-0 dark:border-neutral-800"},l0={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"},o0={key:1,class:"font-mono text-[11px] italic text-neutral-400 dark:text-neutral-500"},i0={key:1,class:"px-3 py-2"},d0={class:"flex flex-wrap gap-2 bg-white px-3 py-2 dark:bg-neutral-950"},u0=["src","alt"],c0={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"},f0={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"},v0={class:"divide-y divide-neutral-200 bg-white dark:divide-neutral-800 dark:bg-neutral-950"},p0={class:"mb-1.5 flex flex-wrap items-center gap-1.5 text-[10px]"},g0={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"},m0={key:0,class:"font-mono text-neutral-500 dark:text-neutral-400"},h0={key:1,class:"text-neutral-500 dark:text-neutral-400"},x0={key:2,class:"text-neutral-500 dark:text-neutral-400"},b0={key:0,class:"whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-neutral-800 dark:text-neutral-200"},y0={class:"whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-neutral-800 dark:text-neutral-200"},k0={key:0,class:"mt-2 border-t border-neutral-200 pt-2 dark:border-neutral-800"},w0={class:"break-all font-mono text-[11px] text-neutral-700 dark:text-neutral-300"},_0={key:2,class:"break-all font-mono text-[11px] text-neutral-700 dark:text-neutral-300"},$0={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"},Ut="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",C0=12,S0=40,T0=36,I0=8,ba="__agentbuilder_system_prompt_view__",A0=We({__name:"LogDetails",props:{log:{},threadId:{},hasPrevious:{type:Boolean},hasNext:{type:Boolean}},emits:["close","previous","next","effectClick"],setup(e,{emit:i}){const a=e,s=i,l=x("response"),o=x(new Set),p=x(new Set),{copying:h,copied:L,error:M,copy:w}=Hr(),{activeSurface:y,openEditSurface:T}=Pr(),B=x(null),E=x(null),H=x(null),U=x(null),G=x(null),q=x(null),j=x(null),J=x(null),ve=x(60),ae=x(100);let Q=null;const W=()=>{const I=H.value?.offsetHeight;if(!I)return;const _=Math.max(0,Math.round(I-C0));ve.value=_,ae.value=_+S0},fe=()=>{Q?.disconnect(),Q=null,!(!H.value||typeof ResizeObserver>"u")&&(Q=new ResizeObserver(W),Q.observe(H.value))};zt(async()=>{await Be(),W(),fe()}),Mt(()=>{Q?.disconnect(),Q=null});const X=x(new Set(["system_prompt","request_body","tools","reasoning_content","reasoning_details"])),Re=(I,_)=>I instanceof Error?I.message:_,Fe=I=>a.threadId?I.startsWith("data:")||I.startsWith("http")?I:He(`/api/threads/${a.threadId}/fs${I}`):null,re=A(()=>Gt(a.log.tools_schema)),De=A(()=>tu(a.log.response_body)),P=A(()=>ru(a.log.tool_results)),de=A(()=>nu(a.log.response_body)),le=A(()=>uu(a.log.reasoning_content)),ye=A(()=>au(a.log.response_body)),me=A(()=>ou(a.log.provider_tools)),pe=A(()=>Gt(a.log.queued_tools)),Me=A(()=>iu({toolCalls:De.value,queuedTools:pe.value,providerToolCalls:me.value})),Ce=I=>{o.value.has(I)?o.value.delete(I):o.value.add(I)},ne=I=>{p.value.has(I)?p.value.delete(I):p.value.add(I)},Z=I=>{X.value.has(I)?X.value.delete(I):X.value.add(I)},K=I=>!X.value.has(I),xe=A(()=>Gt(a.log.errors)),ue=A(()=>{const I=xe.value.map(_=>{if(typeof _=="string")return{type:a.log.error_type||"error",message:_};if(!_||typeof _!="object")return{type:a.log.error_type||"error",message:String(_??"")};const R=_;return{type:typeof R.type=="string"?R.type:a.log.error_type||"error",message:typeof R.message=="string"?R.message:JSON.stringify(R)}}).filter(_=>_.message);return I.length>0?I:a.log.error?[{type:a.log.error_type||"error",message:a.log.error}]:[]}),Se=I=>/\\[nrt"\\]/.test(I),Ue=I=>{const _="__AGENTBUILDER_ESCAPED_BACKSLASH__";return I.replace(/\\\\/g,_).replace(/\\n/g,`
|
|
13
|
+
`).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(new RegExp(_,"g"),"\\")},D=I=>{const _=I.trim();if(!_.startsWith("{")&&!_.startsWith("["))return null;const R=_[0],_e=R==="{"?"}":"]";let tt=0,kt=!1,ot=!1;for(let ft=0;ft<_.length;ft++){const Ze=_[ft];if(ot){ot=!1;continue}if(kt){Ze==="\\"?ot=!0:Ze==='"'&&(kt=!1);continue}if(Ze==='"'){kt=!0;continue}if(Ze===R)tt++;else if(Ze===_e&&(tt--,tt===0)){const jt=_.slice(0,ft+1);try{return{value:JSON.parse(jt),rest:_.slice(ft+1)}}catch{return null}}}return null},be=I=>{const _=I.indexOf(`
|
|
14
14
|
|
|
15
|
-
Stack trace:`),
|
|
15
|
+
Stack trace:`),R=I.indexOf(`
|
|
16
16
|
|
|
17
|
-
Error Details:`);let
|
|
18
|
-
`).find(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
`):(
|
|
24
|
-
`),$e+=` -d '${D.replace(/'/g,"'\\''")}'`,await k($e)}catch(A){F.value=`Failed to copy cURL: ${Me(A,"Unknown error")}`}};return(A,$)=>(n(),r("div",{ref_key:"scrollContainer",ref:R,class:"log-details-root h-full overflow-y-auto bg-white p-3 dark:bg-neutral-900",style:pt({"--logdetails-tabs-top":`${re.value}px`,"--logdetails-sticky-stack":`${J.value}px`})},[t("div",{ref_key:"stickyHeaderRef",ref:W,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"},[t("div",Lu,[t("div",Mu,[t("div",Ru,[t("button",{onClick:$[0]||($[0]=D=>s("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"},[...$[23]||($[23]=[t("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[t("polyline",{points:"15 18 9 12 15 6"})],-1)])],8,Du),t("button",{onClick:$[1]||($[1]=D=>s("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"},[...$[24]||($[24]=[t("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[t("polyline",{points:"9 18 15 12 9 6"})],-1)])],8,Fu)]),t("span",{class:ee(["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",ut.value.text])},[t("span",{class:ee(["inline-block h-1.5 w-1.5 rounded-full",[ut.value.dot,ut.value.kind==="live"?"log-details-pulse":""]])},null,2),Ge(" "+v(ut.value.label),1)],2),t("h3",Pu,v(e.log.prompt_name||e.log.model_name||e.log.model),1),t("div",zu,[e.log.actual_provider||e.log.provider?(n(),r("span",Nu,[Qt.value?(n(),r("img",{key:0,src:Qt.value,alt:e.log.actual_provider||e.log.provider||"provider",class:"h-3 w-3 shrink-0 rounded-[2px] object-contain"},null,8,ju)):T("",!0),t("span",null,v(e.log.actual_provider||e.log.provider),1)])):T("",!0),e.log.model_name||e.log.model?(n(),r("span",Bu,[g.value?(n(),r("img",{key:0,src:g.value,alt:e.log.model_name||e.log.model||"model",class:"h-3 w-3 shrink-0 rounded-[2px] object-contain"},null,8,Ou)):T("",!0),t("span",null,v(e.log.model_name||e.log.model),1),j(f(Rt),{content:"Model config",position:"bottom",disabled:ot()},{default:Ae(()=>[t("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:$[2]||($[2]=Ne(D=>ze(D),["stop"]))},[j(f(yn),{size:12})])]),_:1},8,["disabled"])])):T("",!0)])]),t("div",Vu,[t("button",{onClick:mt,disabled:f(h)||!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:f(F)||(e.log.request_body?"Copy cURL command":"No request data available")},[f(h)?(n(),O(qe,{key:0,size:"xs"})):(n(),r("span",Hu,v(f(M)?"Copied!":"Copy cURL"),1))],8,qu),t("button",{onClick:$[3]||($[3]=D=>s("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"},[...$[25]||($[25]=[t("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[t("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),t("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])])]),t("div",Uu,[t("div",Wu,[e.log.prompt_name?(n(),O(f(Rt),{key:0,content:"Prompt basics",position:"bottom",disabled:C("basic")},{default:Ae(()=>[t("button",{type:"button",class:ee(Ut),"aria-label":"Edit prompt basics",onClick:$[4]||($[4]=Ne(D=>y("basic",D),["stop"]))},[j(f(Ra),{size:14})])]),_:1},8,["disabled"])):T("",!0),e.log.prompt_name?(n(),O(f(Rt),{key:1,content:"Prompt text",position:"bottom",disabled:C("prompt")},{default:Ae(()=>[t("button",{type:"button",class:ee(Ut),"aria-label":"Edit prompt text",onClick:$[5]||($[5]=Ne(D=>y("prompt",D),["stop"]))},[j(f(ln),{size:14})])]),_:1},8,["disabled"])):T("",!0),e.log.prompt_name?(n(),O(f(Rt),{key:2,content:"Prompt config",position:"bottom",disabled:C("behavior")},{default:Ae(()=>[t("button",{type:"button",class:ee(Ut),"aria-label":"Edit prompt config",onClick:$[6]||($[6]=Ne(D=>y("behavior",D),["stop"]))},[j(f(Da),{size:14})])]),_:1},8,["disabled"])):T("",!0),e.log.prompt_name?(n(),O(f(Rt),{key:3,content:"Prompt input schema",position:"bottom",disabled:C("schema")},{default:Ae(()=>[t("button",{type:"button",class:ee(Ut),"aria-label":"Edit input schema",onClick:$[7]||($[7]=Ne(D=>y("schema",D),["stop"]))},[j(f(or),{size:14})])]),_:1},8,["disabled"])):T("",!0),e.log.prompt_name?(n(),O(f(Rt),{key:4,content:"Prompt variables",position:"bottom",disabled:C("variables")},{default:Ae(()=>[t("button",{type:"button",class:ee(Ut),"aria-label":"Edit prompt variables",onClick:$[8]||($[8]=Ne(D=>y("variables",D),["stop"]))},[j(f(ir),{size:14})])]),_:1},8,["disabled"])):T("",!0),e.log.prompt_name?(n(),O(f(Rt),{key:5,content:"Prompt tools",position:"bottom",disabled:C("tools","functions")},{default:Ae(()=>[t("button",{type:"button",class:ee(Ut),"aria-label":"Edit prompt tools",onClick:$[9]||($[9]=Ne(D=>y("tools",D,"functions"),["stop"]))},[j(f(Fa),{size:14})])]),_:1},8,["disabled"])):T("",!0)]),t("div",Ku,[j($n,{timestamp:e.log.created_at},null,8,["timestamp"]),e.log.finish_reason?(n(),r(_e,{key:0},[$[26]||($[26]=t("span",{"aria-hidden":"true",class:"text-neutral-300 dark:text-neutral-700"},"·",-1)),t("span",null,"finish: "+v(e.log.finish_reason),1)],64)):T("",!0),e.log.id?(n(),r(_e,{key:1},[$[27]||($[27]=t("span",{"aria-hidden":"true",class:"text-neutral-300 dark:text-neutral-700"},"·",-1)),t("span",Ju,"log "+v(un(e.log.id)),1)],64)):T("",!0),f(F)?(n(),r(_e,{key:2},[$[28]||($[28]=t("span",{"aria-hidden":"true",class:"text-neutral-300 dark:text-neutral-700"},"·",-1)),t("span",Gu,v(f(F)),1)],64)):T("",!0)])])],512),t("div",Yu,[t("div",Qu,[t("div",Xu,[j(f(dr),{size:11,"stroke-width":2.25}),$[29]||($[29]=t("span",null,"Latency",-1))]),t("div",Zu,[!e.log.is_complete&&!e.log.latency_ms?(n(),O(qe,{key:0,size:"xs"})):(n(),r("span",ec,v(p(e.log.latency_ms)??"—"),1))]),dn.value?(n(),r("div",tc," first token "+v(dn.value),1)):T("",!0)]),t("div",nc,[t("div",ac,[j(f(ur),{size:11,"stroke-width":2.25}),$[30]||($[30]=t("span",null,"Tokens",-1))]),t("div",rc,[!e.log.is_complete&&!ue.value?(n(),O(qe,{key:0,size:"xs"})):(n(),r("span",sc,v(Xe.value??"—"),1))]),nt.value?(n(),r("div",lc,v(nt.value),1)):T("",!0),ct.value?(n(),r("div",oc,v(ct.value),1)):T("",!0)]),t("div",ic,[t("div",dc,[j(f(cr),{size:11,"stroke-width":2.25}),$[31]||($[31]=t("span",null,"Cost",-1))]),t("div",uc,[!e.log.is_complete&&!Se.value?(n(),O(qe,{key:0,size:"xs"})):(n(),r("span",cc,v(Se.value?_(e.log.cost_total):"—"),1))]),bt.value?(n(),r("div",fc,v(bt.value),1)):T("",!0)]),t("div",pc,[t("div",vc,[j(f(fr),{size:11,"stroke-width":2.25}),$[32]||($[32]=t("span",null,"Context",-1))]),t("div",mc,[e.log.message_history_length!==null&&e.log.message_history_length!==void 0?(n(),r("span",gc,v(d(e.log.message_history_length))+" msg ",1)):(n(),r("span",hc,"—"))]),se.value.length>0?(n(),r("div",xc,v(se.value.length)+" tool"+v(se.value.length===1?"":"s")+" available ",1)):T("",!0)])]),Ee.value?(n(),r("div",bc,[t("div",yc,[t("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:$[10]||($[10]=D=>s("effectClick",Ee.value.reference))},[j(f(_t),{size:12,class:"shrink-0"}),$[33]||($[33]=t("span",null,"via Scheduled Effect",-1))]),Ee.value.name?(n(),r("span",kc,v(Ee.value.name),1)):T("",!0),Ee.value.id?(n(),r("span",_c,v(Ee.value.id),1)):T("",!0)])])):T("",!0),Ve.value.length>0?(n(),r("div",wc,[t("div",$c,[j(f(_t),{size:11,class:"shrink-0"}),t("span",null,v(Ve.value.length===1?"Scheduled effect created":`${Ve.value.length} scheduled effects created`),1)]),t("div",Cc,[(n(!0),r(_e,null,Pe(Ve.value,D=>(n(),r("button",{key:D.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:$e=>s("effectClick",D.reference)},[t("span",Tc,[t("span",Ic,v(D.name||"scheduled_effect"),1),t("span",Ac,v(D.id),1)]),t("span",Ec,[D.scheduledAt?(n(),r("span",Lc,[$[34]||($[34]=t("span",{class:"text-neutral-400 dark:text-neutral-500"},"scheduled",-1)),Ge(" "+v(f(It)(D.scheduledAt)),1)])):T("",!0),D.createdAt?(n(),r("span",Mc,[$[35]||($[35]=t("span",{class:"text-neutral-400 dark:text-neutral-500"},"created",-1)),Ge(" "+v(f(It)(D.createdAt)),1)])):T("",!0),D.status?(n(),r("span",Rc,[$[36]||($[36]=t("span",{class:"text-neutral-400 dark:text-neutral-500"},"status",-1)),Ge(" "+v(D.status),1)])):T("",!0)])],8,Sc))),128))])])):T("",!0),Te.value.length>0?(n(),r("div",Dc,[t("div",Fc,[t("div",Pc,[t("div",zc,v(Te.value.length>1?`${Te.value.length} errors`:"Error"),1),t("div",Nc,v(Te.value[0].type||"error"),1)]),Te.value[0].human?(n(),O(Jn,{key:0,content:Te.value[0].human,variant:"ghost",size:"xs"},null,8,["content"])):T("",!0)]),Te.value[0].human?(n(),r("p",jc,v(Te.value[0].human),1)):T("",!0),Te.value[0].hasMoreDetails?(n(),r("details",Bc,[$[37]||($[37]=t("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)),t("div",Oc,[Te.value[0].details.isJson?(n(),O(Ft,{key:0,code:Te.value[0].details.text,language:"json"},null,8,["code"])):(n(),r("pre",Vc,v(Te.value[0].details.text),1))])])):T("",!0),Te.value.length>1?(n(),r("div",qc,[(n(!0),r(_e,null,Pe(Te.value.slice(1),(D,$e)=>(n(),r("details",{key:$e,class:"border-b border-red-200 last:border-b-0 dark:border-red-900"},[t("summary",Hc,v(D.type),1),D.human?(n(),r("p",Uc,v(D.human),1)):T("",!0),D.hasMoreDetails?(n(),r("details",Wc,[$[38]||($[38]=t("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)),t("div",Kc,[D.details.isJson?(n(),O(Ft,{key:0,code:D.details.text,language:"json"},null,8,["code"])):(n(),r("pre",Jc,v(D.details.text),1))])])):T("",!0)]))),128))])):T("",!0)])):T("",!0),t("div",Gc,[t("button",{onClick:$[11]||($[11]=D=>l.value="request"),type:"button",class:ee(["inline-flex h-7 items-center gap-1.5 rounded px-3 text-sm font-medium transition-colors",l.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"])},[j(f(pr),{size:13,"stroke-width":2.25}),$[39]||($[39]=t("span",null,"Request",-1))],2),t("button",{onClick:$[12]||($[12]=D=>l.value="response"),type:"button",class:ee(["inline-flex h-7 items-center gap-1.5 rounded px-3 text-sm font-medium transition-colors",l.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"])},[j(f(vr),{size:13,"stroke-width":2.25}),$[40]||($[40]=t("span",null,"Response",-1))],2)]),t("div",{ref_key:"tabContentRef",ref:K,class:"space-y-3"},[rt(t("div",Yc,[t("div",Qc,[$[41]||($[41]=t("span",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"}," View as ",-1)),t("div",Xc,[t("button",{onClick:$[13]||($[13]=D=>pe.value="standard"),type:"button",class:ee(["border-r border-neutral-200 px-2.5 py-1 text-xs font-medium transition-colors last:border-r-0 dark:border-neutral-800",pe.value==="standard"?"bg-neutral-100 text-neutral-950 dark:bg-neutral-800 dark:text-neutral-50":"bg-white text-neutral-500 hover:bg-neutral-50 hover:text-neutral-900 dark:bg-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800/60 dark:hover:text-neutral-100"])}," Standard Agents ",2),(n(),r(_e,null,Pe(Oe,(D,$e)=>t("button",{key:D,onClick:tt=>pe.value=D,type:"button",class:ee(["px-2.5 py-1 text-xs font-medium transition-colors",[$e<Oe.length-1?"border-r border-neutral-200 dark:border-neutral-800":"",pe.value===D?"bg-neutral-100 text-neutral-950 dark:bg-neutral-800 dark:text-neutral-50":"bg-white text-neutral-500 hover:bg-neutral-50 hover:text-neutral-900 dark:bg-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800/60 dark:hover:text-neutral-100"]])},v(f(Eu)(D)),11,Zc)),64))]),ie.value?(n(),O(qe,{key:0,size:"xs"})):T("",!0),Ce.value?(n(),r("span",e0,v(Ce.value),1)):T("",!0)]),Qe.value?(n(),r("div",t0,[$[42]||($[42]=t("div",{class:"text-xs font-semibold text-amber-800 dark:text-amber-200"}," Vision Input Filtered For This Request ",-1)),t("div",n0," This model does not support image input. Removed "+v(Qe.value.removedUserImageParts)+" user image part(s) and "+v(Qe.value.removedToolImageAttachments)+" tool image attachment(s) before sending the request. Stored thread messages remain unchanged. ",1)])):T("",!0),se.value.length>0?(n(),O(Tt,{key:1,ref_key:"toolsSectionRef",ref:G,title:`Available Tools (${se.value.length})`,"section-id":"tools",expanded:ne("tools"),"scroll-container":R.value,"sticky-offset":J.value,onToggle:$[14]||($[14]=D=>ce("tools"))},{default:Ae(()=>[(n(!0),r(_e,null,Pe(se.value,(D,$e)=>(n(),r("div",{key:$e,class:"border-b border-neutral-200 dark:border-neutral-800 last:border-b-0"},[t("button",{onClick:tt=>ae($e),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"},[t("span",r0,v(D.function?.name||D.name||"Unknown"),1),t("span",s0,v(o.value.has($e)?"▼":"▶"),1)],8,a0),rt(t("div",l0,[D.function?.description||D.description?(n(),r("div",o0,v(D.function?.description||D.description),1)):T("",!0),j(Ft,{code:JSON.stringify(D,null,2),language:"json"},null,8,["code"])],512),[[ht,o.value.has($e)]])]))),128))]),_:1},8,["title","expanded","scroll-container","sticky-offset"])):T("",!0),e.log.message_history?(n(),O(Tt,{key:2,ref_key:"messagesSectionRef",ref:w,title:`Messages (${e.log.message_history_length||0} messages)`,subtitle:vt.value,"section-id":"messages",expanded:ne("messages"),"scroll-container":R.value,"sticky-offset":J.value,"copy-content":c.value,onToggle:$[15]||($[15]=D=>ce("messages"))},{default:Ae(()=>[j(Ln,{json:$t.value,"thread-id":e.threadId,actions:xt.value,onAction:lt},null,8,["json","thread-id","actions"])]),_:1},8,["title","subtitle","expanded","scroll-container","sticky-offset","copy-content"])):T("",!0),e.log.system_prompt?(n(),O(Tt,{key:3,ref_key:"systemPromptSectionRef",ref:E,title:"System Prompt","section-id":"system_prompt",expanded:ne("system_prompt"),"scroll-container":R.value,"sticky-offset":J.value,"copy-content":e.log.system_prompt,onToggle:$[16]||($[16]=D=>ce("system_prompt"))},{default:Ae(()=>[t("div",i0,[j(Ft,{code:e.log.system_prompt,language:"markdown"},null,8,["code"])])]),_:1},8,["expanded","scroll-container","sticky-offset","copy-content"])):T("",!0),e.log.request_body?(n(),O(Tt,{key:4,ref_key:"requestBodySectionRef",ref:B,title:"Full Request Body",subtitle:vt.value,"section-id":"request_body",expanded:ne("request_body"),"scroll-container":R.value,"sticky-offset":J.value,"copy-content":yt.value,onToggle:$[17]||($[17]=D=>ce("request_body"))},{default:Ae(()=>[j(Ln,{json:yt.value,"thread-id":e.threadId},null,8,["json","thread-id"])]),_:1},8,["subtitle","expanded","scroll-container","sticky-offset","copy-content"])):T("",!0)],512),[[ht,l.value==="request"]]),rt(t("div",d0,[Le.value.length>0?(n(),O(Tt,{key:0,title:`Tools Called (${Le.value.length})`,"section-id":"tools_called",expanded:ne("tools_called"),"scroll-container":R.value,"sticky-offset":J.value,onToggle:$[18]||($[18]=D=>ce("tools_called"))},{default:Ae(()=>[t("div",u0,[(n(!0),r(_e,null,Pe(Le.value,D=>(n(),r("div",{key:D.id},[t("button",{onClick:$e=>Y(D.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"},[t("div",f0,[t("span",p0,v(D.name),1),t("span",v0,v(un(D.id)),1)]),t("div",m0,[D.isQueued?(n(),r("span",g0,"queued")):T("",!0),D.isProvider?(n(),O(f(Rt),{key:1,content:"Model tool call from the upstream provider's native response, before AgentBuilder normalization.",position:"top",wide:""},{default:Ae(()=>[...$[43]||($[43]=[t("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})):T("",!0),D.isProvider&&D.status?(n(),r("span",{key:2,class:ee(["text-[10px] font-medium uppercase tracking-wide",D.status==="completed"?"text-emerald-600 dark:text-emerald-400":D.status==="failed"?"text-red-600 dark:text-red-400":"text-amber-600 dark:text-amber-400"])},v(D.status),3)):T("",!0),D.isProvider?T("",!0):(n(),r("span",{key:3,class:ee(["text-[10px] font-medium uppercase tracking-wide",N.value.has(D.id)?"text-emerald-600 dark:text-emerald-400":"text-neutral-400 dark:text-neutral-500"])},v(N.value.has(D.id)?"returned":"no result"),3)),t("span",h0,v(m.value.has(D.id)?"▼":"▶"),1)])],8,c0),rt(t("div",x0,[D.isProvider?(n(),r("div",S0,[$[47]||($[47]=t("div",{class:"mb-1 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},"Provider payload",-1)),j(Ft,{code:f(Tu)(D),language:"json"},null,8,["code"])])):(n(),r("div",b0,[t("div",y0,[t("div",k0,[$[45]||($[45]=t("span",null,"Arguments",-1)),D.isQueued&&D.queuedAt?(n(),r("span",_0,[$[44]||($[44]=Ge(" queued ",-1)),j($n,{timestamp:D.queuedAt},null,8,["timestamp"])])):T("",!0)]),j(Ft,{code:f(ha)(D.function?.arguments||"{}"),language:"json"},null,8,["code"])]),t("div",w0,[$[46]||($[46]=t("div",{class:"mb-1 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"}," Result ",-1)),N.value.has(D.id)?(n(),r("pre",$0,v(N.value.get(D.id)?.content||"No content"),1)):(n(),r("div",C0," no result captured "))])]))],512),[[ht,m.value.has(D.id)]])]))),128))])]),_:1},8,["title","expanded","scroll-container","sticky-offset"])):T("",!0),ye.value.length>0?(n(),O(Tt,{key:1,title:`Generated Images (${ye.value.length})`,subtitle:"returned by the model","section-id":"generated_images",expanded:ne("generated_images"),"scroll-container":R.value,"sticky-offset":J.value,onToggle:$[19]||($[19]=D=>ce("generated_images"))},{default:Ae(()=>[t("div",T0,[(n(!0),r(_e,null,Pe(ye.value,(D,$e)=>(n(),r("div",{key:$e,class:"relative"},[D.image_url?.url?(n(),r("img",{key:0,src:De(D.image_url.url)||D.image_url.url,alt:`Generated image ${$e+1}`,class:"max-w-[300px] max-h-[300px] rounded-md ring-1 ring-neutral-200 object-contain dark:ring-neutral-800"},null,8,I0)):(n(),r("div",A0," No URL "))]))),128))])]),_:1},8,["title","expanded","scroll-container","sticky-offset"])):T("",!0),e.log.reasoning_content?(n(),O(Tt,{key:2,title:"Reasoning Content",subtitle:"internal trace · not shown to users","section-id":"reasoning_content",expanded:ne("reasoning_content"),"scroll-container":R.value,"sticky-offset":J.value,"copy-content":oe.value||e.log.reasoning_content,onToggle:$[20]||($[20]=D=>ce("reasoning_content"))},{default:Ae(()=>[t("pre",E0,v(oe.value),1)]),_:1},8,["expanded","scroll-container","sticky-offset","copy-content"])):T("",!0),de.value.length>0?(n(),O(Tt,{key:3,title:`Reasoning Details (${de.value.length} blocks)`,subtitle:"structured trace from provider","section-id":"reasoning_details",expanded:ne("reasoning_details"),"scroll-container":R.value,"sticky-offset":J.value,"copy-content":JSON.stringify(de.value,null,2),onToggle:$[21]||($[21]=D=>ce("reasoning_details"))},{default:Ae(()=>[t("div",L0,[(n(!0),r(_e,null,Pe(de.value,(D,$e)=>(n(),r("div",{key:$e,class:"px-3 py-2"},[t("div",M0,[t("span",R0,v((D.type||"unknown").replace("reasoning.","")),1),D.id?(n(),r("span",D0," id "+v(D.id),1)):T("",!0),D.format?(n(),r("span",F0," · "+v(D.format),1)):T("",!0),D.index!==void 0?(n(),r("span",P0," · index "+v(D.index),1)):T("",!0)]),D.type==="reasoning.summary"&&D.summary?(n(),r("div",z0,v(D.summary),1)):D.type==="reasoning.text"&&D.text?(n(),r(_e,{key:1},[t("div",N0,v(D.text),1),D.signature?(n(),r("div",j0,[$[48]||($[48]=t("div",{class:"mb-0.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"}," Signature ",-1)),t("div",B0,v(D.signature),1)])):T("",!0)],64)):D.type==="reasoning.encrypted"&&D.data?(n(),r("div",O0,v(D.data),1)):(n(),r("pre",V0,v(JSON.stringify(D,null,2)),1))]))),128))])]),_:1},8,["title","expanded","scroll-container","sticky-offset","copy-content"])):T("",!0),e.log.response_body?(n(),O(Tt,{key:4,title:"Full Response Body","section-id":"response_body",expanded:ne("response_body"),"scroll-container":R.value,"sticky-offset":J.value,"copy-content":e.log.response_body,onToggle:$[22]||($[22]=D=>ce("response_body"))},{default:Ae(()=>[j(Ln,{json:e.log.response_body,"thread-id":e.threadId},null,8,["json","thread-id"])]),_:1},8,["expanded","scroll-container","sticky-offset","copy-content"])):T("",!0)],512),[[ht,l.value==="response"]])],512)],4))}}),J0=st(K0,[["__scopeId","data-v-665d4771"]]),G0={class:"min-w-full"},Y0={key:0,class:"sticky top-0 z-30 border-b border-neutral-300 bg-white dark:border-neutral-700 dark:bg-black"},Q0=["disabled"],X0={key:1},Z0={key:2},ef={key:3},tf={role:"table",class:"logs-grid w-full text-sm"},nf=["aria-selected","onClick","onKeydown","onMouseenter"],af={role:"cell",class:"whitespace-nowrap px-3 py-2 text-xs"},rf={class:"flex min-w-0 items-center gap-1 whitespace-nowrap"},sf={key:0,class:"text-neutral-400 dark:text-neutral-600 mr-1"},lf={key:3},of={role:"cell",class:"whitespace-nowrap px-3 py-2"},df={class:"flex min-w-0 items-center gap-2 whitespace-nowrap"},uf={key:0,class:"text-red-600 dark:text-red-400",title:"Error"},cf={class:"font-mono text-xs"},ff={role:"cell",class:"whitespace-nowrap px-3 py-2 font-mono text-xs"},pf={key:1},vf={key:1,class:"text-neutral-400"},mf=["title"],gf={class:"min-w-0 overflow-hidden text-ellipsis whitespace-nowrap"},hf={key:0,class:"text-emerald-600 dark:text-emerald-400",title:"Programmatically called with state.queueTool()"},xf={key:1},bf={key:2},yf={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"},kf=Ue({__name:"LogsTable",props:{logs:{},hasMore:{type:Boolean},isLoadingMore:{type:Boolean},isLoadingForLog:{type:Boolean},detailsOpen:{type:Boolean},selectedLogIdForDetails:{},selectedLogId:{},hoveredLogId:{}},emits:["loadMore","selectLog","navigateLog","logHover","rowRef"],setup(e,{emit:i}){const a=e,s=i,l=b(null),o=b(0);let m=null,h=null;const M=new Map,F=w=>{if(!w)return[];try{const E=JSON.parse(w);return Array.isArray(E)?E:[]}catch{return[]}},k=w=>[...F(w.tools_called).map(E=>({name:E,isProgrammatic:!1})),...F(w.provider_tools).map(E=>({name:E.name||E.type||"provider_tool",isProgrammatic:!1})),...F(w.queued_tools).map(E=>({name:E.function?.name||"unknown",isProgrammatic:!0}))],x=w=>w==null?"—":`$${w.toFixed(6)}`,L=w=>w.map(E=>E.name).join(", "),V=()=>h||(typeof document>"u"?null:(h=document.createElement("canvas").getContext("2d"),h&&(h.font="12px ui-sans-serif, system-ui, sans-serif"),h)),R=w=>{const E=M.get(w);if(E!==void 0)return E;const re=V()?.measureText(w).width??w.length*7;return M.set(w,re),re},W=(w,E)=>{const B=R(L(w)),re=w.filter(H=>H.isProgrammatic).length*14,J=E>0?R(`+${E} more`)+18:0,Q=E>0?6:0;return B+re+J+Q},K=w=>{const E=L(w);if(w.length<=1)return{tools:w,hiddenCount:0,title:E};const B=o.value-24;if(B<=0)return{tools:w.slice(0,1),hiddenCount:w.length-1,title:E};for(let re=w.length;re>0;re-=1){const J=w.slice(0,re),Q=w.length-re;if(W(J,Q)<=B)return{tools:J,hiddenCount:Q,title:E}}return{tools:w.slice(0,1),hiddenCount:w.length-1,title:E}},G=()=>{o.value=l.value?.clientWidth??0};return Nt(async()=>{await Be(),G(),typeof ResizeObserver<"u"&&l.value&&(m=new ResizeObserver(G),m.observe(l.value))}),Mt(()=>{m?.disconnect(),m=null}),(w,E)=>(n(),r("div",G0,[e.hasMore?(n(),r("div",Y0,[t("button",{onClick:E[0]||(E[0]=B=>s("loadMore")),disabled:e.isLoadingMore||e.isLoadingForLog,type:"button",class:"w-full px-3 py-2 text-xs font-medium text-neutral-700 dark:text-neutral-300 hover:bg-neutral-100 dark:hover:bg-neutral-900 transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2"},[e.isLoadingMore||e.isLoadingForLog?(n(),O(qe,{key:0,size:"xs"})):T("",!0),e.isLoadingForLog?(n(),r("span",X0,"Loading to find log...")):e.isLoadingMore?(n(),r("span",Z0,"Loading older logs...")):(n(),r("span",ef,"Load previous logs"))],8,Q0)])):T("",!0),t("div",tf,[t("div",{role:"row",class:ee(["logs-grid-row sticky 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",{"top-0":!e.hasMore,"top-[33px]":e.hasMore}])},[E[2]||(E[2]=t("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Prompt ",-1)),E[3]||(E[3]=t("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Model ",-1)),E[4]||(E[4]=t("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Cost ",-1)),t("div",{ref_key:"toolsHeaderRef",ref:l,role:"columnheader",class:"min-w-0 whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Tools Called ",512),E[5]||(E[5]=t("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-right text-xs font-semibold"}," Called At ",-1))],2),(n(!0),r(_e,null,Pe(e.logs,B=>(n(),r("div",{key:B.id,ref_for:!0,ref:re=>s("rowRef",B.id,re),role:"row",tabindex:"0","aria-selected":e.selectedLogIdForDetails===B.id,class:ee(["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":B.error,"logs-row-selected":e.selectedLogIdForDetails===B.id,"agents-surface-selected agents-text-selected agents-border-selected":e.selectedLogIdForDetails===B.id,"agents-surface-hover":e.selectedLogIdForDetails!==B.id&&(B.id===a.selectedLogId||B.id===a.hoveredLogId)}]),onClick:re=>s("selectLog",B),onKeydown:re=>s("navigateLog",re,B),onMouseenter:re=>s("logHover",B.id),onMouseleave:E[1]||(E[1]=re=>s("logHover",null))},[t("div",af,[t("div",rf,[B.depth>0?(n(),r("span",sf,"└─")):T("",!0),B.retry_of_log_id?(n(),O(f(mr),{key:1,size:14,class:"text-neutral-500 dark:text-neutral-400 flex-shrink-0"})):T("",!0),!B.is_complete&&!B.prompt_name?(n(),O(qe,{key:2,size:"xs"})):(n(),r("span",lf,v(B.prompt_name||"—"),1))])]),t("div",of,[t("div",df,[B.error?(n(),r("span",uf," ✕ ")):T("",!0),t("span",cf,v(B.model_name||B.model),1)])]),t("div",ff,[!B.is_complete&&(B.cost_total===null||B.cost_total===void 0)?(n(),O(qe,{key:0,size:"xs"})):(n(),r("span",pf,v(x(B.cost_total)),1))]),t("div",{role:"cell",class:ee(["min-w-0 overflow-hidden whitespace-nowrap px-3 py-2 text-xs",e.selectedLogIdForDetails===B.id?"text-neutral-800 dark:text-neutral-100":"text-neutral-600 dark:text-neutral-400"])},[!B.is_complete&&k(B).length===0?(n(),O(qe,{key:0,size:"xs"})):k(B).length===0?(n(),r("span",vf,"—")):(n(),r("span",{key:2,class:"flex min-w-0 items-center gap-1.5",title:K(k(B)).title},[t("span",gf,[(n(!0),r(_e,null,Pe(K(k(B)).tools,(re,J)=>(n(),r(_e,{key:J},[re.isProgrammatic?(n(),r("span",hf,[j(f(gr),{size:11,class:"inline-block -mt-0.5 mr-0.5"}),Ge(v(re.name),1)])):(n(),r("span",xf,v(re.name),1)),J<K(k(B)).tools.length-1?(n(),r("span",bf,", ")):T("",!0)],64))),128))]),K(k(B)).hiddenCount>0?(n(),r("span",yf," +"+v(K(k(B)).hiddenCount)+" more ",1)):T("",!0)],8,mf))],2),t("div",{role:"cell",class:ee(["whitespace-nowrap px-3 py-2 text-right text-xs",e.selectedLogIdForDetails===B.id?"text-neutral-800 dark:text-neutral-100":"text-neutral-500 dark:text-neutral-500"])},[j($n,{timestamp:B.created_at},null,8,["timestamp"])],2)],42,nf))),128))])]))}}),_f=st(kf,[["__scopeId","data-v-1f2c77e9"]]),wf={key:0,class:"text-neutral-500 dark:text-neutral-400 text-center py-12"},$f={key:1,class:"flex justify-center py-12"},Cf={key:2,class:"text-red-600 dark:text-red-400 text-center py-12"},Sf={key:3,class:"text-neutral-500 dark:text-neutral-400 text-center py-12"},Tf={key:0,class:"flex h-full flex-col items-center justify-center gap-3 text-neutral-500 dark:text-neutral-400"},If={key:2,class:"absolute inset-0 flex items-center justify-center bg-white/20 pointer-events-none dark:bg-black/20"},ya=20,Af=20,ka="agentbuilder.threads.logDetailsSplitPercent",Ef=Ue({__name:"LogsPane",props:{threadId:{},selectedLogId:{},hoveredLogId:{}},emits:["logClick","logHover","logsLoaded","effectClick"],setup(e,{expose:i,emit:a}){const s=e,l=a,o=b(0),m=b(ya),{logs:h,hasMore:M,isFetching:F,error:k,connectWebSocket:x,disconnectWebSocket:L,refetch:V}=Yd(I(()=>s.threadId),{limit:I(()=>m.value),offset:I(()=>o.value),enableWebSocket:!0,order:"desc"}),R=b([]),W=b(!0),K=b(null),G=b(null),w=b(!1),E=b(!1),B=b(new Map),Q=b(((z,u,c)=>Math.min(c,Math.max(u,z)))(((z,u)=>{if(typeof window>"u")return u;const c=window.localStorage.getItem(z),S=c?Number.parseFloat(c):Number.NaN;return Number.isFinite(S)?S:u})(ka,55),35,70)),H=async()=>{await Be(),G.value&&(G.value.scrollTop=G.value.scrollHeight)},me=b(null);be(h,async z=>{if(o.value===0){const u=R.value.length;R.value=[...z].reverse(),W.value&&R.value.length>0?(await H(),W.value=!1):!w.value&&R.value.length>u&&await H()}else{const u=[...z].reverse(),c=new Map;R.value.forEach(S=>c.set(S.id,S)),u.forEach(S=>c.set(S.id,S)),R.value=Array.from(c.values()).sort((S,q)=>S.created_at-q.created_at)}},{deep:!0,immediate:!0}),be(F,(z,u)=>{if(u&&!z&&o.value===0&&s.threadId&&me.value!==s.threadId&&R.value.length>0){me.value=s.threadId;const c=R.value[R.value.length-1];l("logsLoaded",c?.id??null)}});const{logDetails:Z,isFetching:Me,refetch:De}=Qd(I(()=>s.threadId),I(()=>K.value)),se={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,finish_reason:null,error_type:null,cost_input:null,cost_output: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},Fe=z=>({...se,...z}),N=I(()=>K.value?R.value.find(z=>z.id===K.value)??null:null),de=I(()=>{const z=N.value;return z?Z.value?{...Z.value,...z}:Fe(z):null});be(()=>({id:N.value?.id??null,isComplete:N.value?.is_complete??!1}),(z,u)=>{!z.id||!z.isComplete||u?.id!==z.id||u.isComplete||De()});const oe=b(null);be(de,z=>{z?oe.value=z:K.value||(oe.value=null)},{immediate:!0});const ye=I(()=>K.value?U.value.findIndex(z=>z.id===K.value):-1),ve=I(()=>ye.value>0),he=I(()=>ye.value>=0&&ye.value<U.value.length-1),Le=()=>{if(ve.value){const z=U.value[ye.value-1];le(z)}},ae=()=>{if(he.value){const z=U.value[ye.value+1];le(z)}},Y=async z=>{await Be(),B.value.get(z)?.focus({preventScroll:!0})},ce=(z,u)=>{const c=U.value.findIndex(X=>X.id===u.id);if(c<0)return;let S=c;if(z.key==="ArrowDown")S=Math.min(U.value.length-1,c+1);else if(z.key==="ArrowUp")S=Math.max(0,c-1);else if(z.key==="Home")S=0;else if(z.key==="End")S=U.value.length-1;else return;z.preventDefault();const q=U.value[S];q&&(le(q),Y(q.id))},ne=z=>{if(!G.value)return;const u=B.value.get(z);if(!u)return;const c=G.value,S=u.getBoundingClientRect(),q=c.getBoundingClientRect(),X=c.querySelectorAll(".sticky");let Ee=0;X.forEach(Je=>{Ee+=Je.getBoundingClientRect().height}),Ee+=16;const Ve=S.top<q.top+Ee,Ke=S.bottom>q.bottom;Ve?c.scrollBy({top:S.top-q.top-Ee,behavior:"smooth"}):Ke&&c.scrollBy({top:S.bottom-q.bottom,behavior:"smooth"})},le=z=>{l("logClick",z.id),K.value=z.id},Ie=(z,u)=>{u?B.value.set(z,u):B.value.delete(z)},Re=(z,u)=>{Ie(z,u instanceof HTMLElement?u:null)};be(K,async z=>{z&&(await Be(),ne(z))}),be(()=>s.selectedLogId,z=>{z&&(K.value=z)},{immediate:!0});const We=z=>{K.value=z},P=async z=>{await Be();const u=B.value.get(z);if(u&&G.value){const c=G.value,S=u.getBoundingClientRect(),q=c.getBoundingClientRect(),X=c.querySelector("thead"),Ee=c.querySelector(":scope > div > div.sticky");let Ve=0;X&&(Ve+=X.getBoundingClientRect().height),Ee&&(Ve+=Ee.getBoundingClientRect().height),Ve+=40;const Ke=S.top<q.top+Ve,Je=S.bottom>q.bottom;Ke?c.scrollBy({top:S.top-q.top-Ve,behavior:"smooth"}):Je&&c.scrollBy({top:S.bottom-q.bottom,behavior:"smooth"})}},xe=z=>{if(z.length===0)return;const u=new Set(z);R.value=R.value.filter(c=>!u.has(c.id))},fe=b(!1),we=z=>R.value.some(u=>u.id===z),Te=z=>R.value.find(u=>u.id===z)??null,pe=(z,u=3e3)=>new Promise(c=>{const S=be(()=>R.value.length,X=>{X!==z&&(clearTimeout(q),S(),c(!0))}),q=setTimeout(()=>{S(),c(!1)},u)});i({scrollToLog:P,selectLogById:We,removeLogsByIds:xe,loadUntilLogId:async z=>{if(we(z))return!0;if(!M.value)return!1;fe.value=!0;const u=100,c=50,S=m.value;try{let q=0;for(;M.value&&!we(z)&&q<c;){q++;const X=R.value.length;if(o.value+=m.value,m.value=u,await V(),!await pe(X))break}return we(z)}finally{m.value=S,o.value=Math.max(0,R.value.length-S),fe.value=!1}},hasLog:we,getLog:Te,setLoadingForLog:z=>{fe.value=z},waitForLogRow:async(z,u=2e3)=>{const c=Date.now();for(;Date.now()-c<u;){if(B.value.has(z))return!0;if(!U.value.some(q=>q.id===z)){await Be(),await new Promise(q=>setTimeout(q,16));continue}await Be(),await new Promise(q=>setTimeout(q,16))}return!1}});const je=async()=>{if(E.value||!M.value||F.value)return;E.value=!0;const z=G.value?.scrollHeight||0;if(o.value+=m.value,m.value=Af,await V(),await Be(),G.value){const u=G.value.scrollHeight;G.value.scrollTop+=u-z}E.value=!1};be(()=>s.threadId,async z=>{z?(L(),x()):L(),o.value=0,m.value=ya,R.value=[],K.value=null,w.value=!1,W.value=!0},{immediate:!0});const Oe=()=>{if(!G.value)return;const{scrollTop:z,scrollHeight:u,clientHeight:c}=G.value,S=u-z-c<50;w.value=!S},U=I(()=>{const z=new Map,u=new Map;R.value.forEach(q=>{z.set(q.id,q);const X=q.parent_log_id;X&&(u.has(X)||u.set(X,[]),u.get(X).push(q))});const c=[],S=(q,X)=>{c.push({...q,depth:X}),(u.get(q.id)||[]).forEach(Ve=>{S(Ve,X+1)})};return R.value.forEach(q=>{q.parent_log_id||S(q,0)}),c});return(z,u)=>(n(),O(Tn,{"height-percent":Q.value,"onUpdate:heightPercent":u[3]||(u[3]=c=>Q.value=c),"storage-key":ka,title:"Resize logs and details"},Ot({main:Ae(()=>[t("div",{ref_key:"logsScrollContainer",ref:G,class:"logs-list-container h-full overflow-y-auto overflow-x-auto",onScroll:Oe},[e.threadId?f(F)&&o.value===0?(n(),r("div",$f,[j(qe)])):f(k)?(n(),r("div",Cf," Error loading logs: "+v(f(k)),1)):R.value.length===0?(n(),r("div",Sf," No logs yet ")):(n(),O(_f,{key:4,logs:U.value,"has-more":f(M),"is-loading-more":E.value,"is-loading-for-log":fe.value,"details-open":!!de.value,"selected-log-id-for-details":K.value,"selected-log-id":s.selectedLogId,"hovered-log-id":s.hoveredLogId,onLoadMore:je,onSelectLog:le,onNavigateLog:ce,onLogHover:u[0]||(u[0]=c=>l("logHover",c)),onRowRef:Re},null,8,["logs","has-more","is-loading-more","is-loading-for-log","details-open","selected-log-id-for-details","selected-log-id","hovered-log-id"])):(n(),r("div",wf," Select a thread to view logs "))],544)]),_:2},[oe.value||fe.value&&K.value?{name:"detail",fn:Ae(()=>[fe.value&&!de.value?(n(),r("div",Tf,[j(qe),u[4]||(u[4]=t("span",{class:"text-sm"},"Loading log...",-1))])):oe.value?(n(),O(J0,{key:1,log:oe.value,"thread-id":e.threadId,"has-previous":ve.value,"has-next":he.value,onClose:u[1]||(u[1]=c=>K.value=null),onPrevious:Le,onNext:ae,onEffectClick:u[2]||(u[2]=c=>l("effectClick",c))},null,8,["log","thread-id","has-previous","has-next"])):T("",!0),f(Me)&&oe.value?(n(),r("div",If,[j(qe)])):T("",!0)]),key:"0"}:void 0]),1032,["height-percent"]))}}),Lf=st(Ef,[["__scopeId","data-v-22adb928"]]),Mf={class:"code-editor flex min-h-0 flex-col"},Rf={key:0,class:"mt-1 text-sm text-red-500"},Df=Ue({__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:i}){self.MonacoEnvironment={getWorker(E,B){return B==="json"?new Hr:B==="css"||B==="scss"||B==="less"?new Ur:B==="html"||B==="handlebars"||B==="razor"?new Wr:B==="typescript"||B==="javascript"?new Kr:new Jr}};const a=e,s=i,l={bash:"shell",js:"javascript",md:"markdown",sh:"shell",text:"plaintext",ts:"typescript",txt:"plaintext"},o=b(null);let m=null,h=null,M=!1,F=!1;const k=I(()=>{const E=a.language?.trim().toLowerCase()||"plaintext";return l[E]??E}),x=I(()=>a.height?a.height:a.rows?`${a.rows*1.5}rem`:"100%"),L=()=>document.documentElement.classList.contains("dark"),V=()=>{F||(F=!0,Zt.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"}}),Zt.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"}}))},R=()=>L()?"agentbuilder-dark":"agentbuilder-light",W=()=>({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}),K=()=>{m&&Zt.setTheme(R())},G=()=>{if(!(!m||a.readonly||k.value!=="json"))try{const E=m.getValue(),B=JSON.stringify(JSON.parse(E),null,2);B!==E&&(M=!0,m.setValue(B),s("update:modelValue",B),M=!1)}catch{}},w=()=>{o.value&&(V(),m=Zt.create(o.value,{value:a.modelValue||"",language:k.value,theme:R(),...W()}),o.value.__monacoEditor=m,m.onDidChangeModelContent(()=>{!M&&m&&s("update:modelValue",m.getValue())}),m.onDidBlurEditorText(()=>{s("blur"),a.formatOnBlur&&G()}))};return Nt(async()=>{await Be(),w(),h=new MutationObserver(K),h.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]})}),Ht(()=>{h?.disconnect(),h=null,o.value&&delete o.value.__monacoEditor,m?.dispose(),m=null}),be(()=>a.modelValue,E=>{m&&m.getValue()!==E&&(M=!0,m.setValue(E||""),M=!1)}),be(k,E=>{const B=m?.getModel();B&&Zt.setModelLanguage(B,E)}),be(()=>[a.readonly,a.minimap,a.lineNumbers,a.wordWrap,a.placeholder,a.framed],()=>{m?.updateOptions(W())}),(E,B)=>(n(),r("div",Mf,[t("div",{class:ee(["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:pt({height:x.value})},[t("div",{ref_key:"containerRef",ref:o,class:"monaco-editor-container h-full w-full"},null,512)],6),e.error?(n(),r("div",Rf,v(e.error),1)):T("",!0)]))}}),Qn=st(Df,[["__scopeId","data-v-12a765de"]]),Ff={class:"h-full min-h-0 overflow-hidden"},Pf={class:"flex h-full min-h-0 flex-col overflow-hidden"},zf={class:"flex items-center gap-2 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},Nf={class:"flex min-w-0 flex-1 items-center gap-2"},jf={class:"hidden shrink-0 text-xs tabular-nums text-neutral-500 sm:block"},Bf=["disabled"],Of={class:"min-h-0 flex-1 overflow-auto"},Vf={key:0,class:"py-12 text-center text-sm text-neutral-500"},qf={key:1,class:"flex justify-center py-12"},Hf={key:2,class:"py-12 text-center text-sm text-red-600 dark:text-red-400"},Uf={key:3,class:"py-12 text-center text-sm text-neutral-500"},Wf={key:4,class:"flex h-full min-h-0 flex-col"},Kf={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"},Jf={class:"min-h-0 flex-1 overflow-auto bg-white dark:bg-neutral-950"},Gf={class:"w-full min-w-[70rem] table-fixed text-left text-xs"},Yf={class:"divide-y divide-neutral-100 dark:divide-neutral-900"},Qf={key:0,class:"text-[10px] font-semibold uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},Xf={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"},Zf={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"},ep=["aria-selected","onClick","onKeydown"],tp={class:"whitespace-nowrap px-4 py-2 align-middle"},np={class:"flex items-center gap-1.5"},ap=["disabled","title","aria-label","onClick"],rp=["disabled","title","aria-label","onClick"],sp={key:2,class:"px-2 text-neutral-300 dark:text-neutral-700"},lp={class:"whitespace-nowrap px-4 py-2 align-middle"},op={class:"min-w-0 px-3 py-2 align-middle"},ip={class:"truncate font-mono text-xs text-neutral-950 dark:text-neutral-100"},dp=["title"],up={key:0,class:"mt-0.5 truncate text-[11px] font-medium text-neutral-500 dark:text-neutral-400"},cp={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"},fp={class:"truncate"},pp={class:"whitespace-nowrap px-3 py-2 align-middle text-xs text-neutral-500 dark:text-neutral-400"},vp={class:"whitespace-nowrap px-3 py-2 align-middle"},mp={class:"text-xs font-medium text-neutral-800 dark:text-neutral-100"},gp={key:0,class:"text-[11px] text-neutral-400"},hp={class:"whitespace-nowrap px-3 py-2 align-middle text-xs text-neutral-500 dark:text-neutral-400"},xp={class:"whitespace-nowrap px-3 py-2 text-right align-middle text-xs tabular-nums text-neutral-500"},bp={class:"min-w-0 px-4 py-2 align-middle"},yp=["title"],kp={key:0,class:"mt-0.5 truncate text-[11px] text-red-600 dark:text-red-400"},_p=["disabled"],wp={class:"flex h-full min-h-0 flex-col overflow-hidden"},$p={class:"flex items-center gap-3 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},Cp={class:"min-w-0 flex-1"},Sp={class:"truncate font-mono text-sm font-medium text-neutral-950 dark:text-neutral-100"},Tp={class:"truncate text-[11px] text-neutral-500"},Ip={key:0,class:"mt-0.5 text-[11px] font-medium text-neutral-500 dark:text-neutral-400"},Ap={class:"flex shrink-0 items-center gap-2"},Ep=["disabled","title","aria-label"],Lp=["disabled","title","aria-label"],Mp={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"},Rp={class:"mt-0.5 text-neutral-900 dark:text-neutral-100"},Dp={class:"mt-0.5 text-neutral-900 dark:text-neutral-100"},Fp={class:"mt-0.5 text-neutral-900 dark:text-neutral-100"},Pp={class:"mt-0.5 tabular-nums text-neutral-900 dark:text-neutral-100"},zp={class:"mt-0.5"},Np={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"},jp={key:1,class:"text-neutral-900 dark:text-neutral-100"},Bp={key:0,class:"mt-0.5 text-[11px] text-neutral-500 dark:text-neutral-400"},Op={key:0},Vp={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"},qp={class:"truncate font-mono"},Hp={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"},Up={class:"flex min-h-0 flex-1 flex-col overflow-hidden"},Wp={class:"flex items-start gap-2"},Kp={class:"min-w-0"},Jp={class:"font-medium text-neutral-950 dark:text-neutral-100"},Gp={class:"mt-1 text-neutral-500 dark:text-neutral-400"},Yp={class:"mt-1 truncate text-neutral-500 dark:text-neutral-400"},Qp={class:"font-mono text-neutral-700 dark:text-neutral-200"},Xp={class:"mt-1 truncate font-mono text-[11px] text-neutral-400"},Zp={class:"mt-3 flex justify-end gap-2"},_a=100,ev=2500,tv="agentbuilder.threads.effectDetailSplitPercent",nv=260,av=Ue({__name:"ThreadEffectsPane",props:{threadId:{},active:{type:Boolean,default:!0},selectedEffectId:{},selectedEffectRef:{}},emits:["count-changed"],setup(e,{expose:i,emit:a}){const s=e,l=a,o=b([]),m=b(0),h=b(0),M=b(!1),F=b(!1),k=b(null),x=b(null),L=b(Date.now()),V=b(null),R=b(50),W=b(new Map),K=b(null),G=b(null),w=b(null),E=b("run"),B=b(null),re=b(null);let J=null,Q=!1,H=0;const me=I(()=>o.value.length<m.value),Z=I(()=>o.value.filter(Kt)),Me=I(()=>o.value.filter(d=>!Kt(d))),De=I(()=>{const d=[];return Z.value.length>0&&(d.push({type:"section",key:"section-upcoming",label:"Upcoming",count:Z.value.length}),d.push(...Z.value.map(p=>({type:"effect",key:p.id,effect:p})))),Me.value.length>0&&(d.push({type:"section",key:"section-history",label:"History",count:Me.value.length}),d.push(...Me.value.map(p=>({type:"effect",key:p.id,effect:p})))),d}),se=I(()=>V.value?o.value.find(d=>d.id===V.value)??null:null),Fe=I(()=>w.value?o.value.find(d=>d.id===w.value)??null:null),N=I(()=>re.value?{top:`${re.value.top}px`,left:`${re.value.left}px`}:{}),de=I(()=>!!se.value),oe=I(()=>se.value?ma(se.value.args):"{}"),ye=I(()=>{if(!s.threadId)return"";if(m.value===0)return"No effects";const d=Math.max(m.value-h.value,Me.value.length);return`${h.value} upcoming | ${d} history | ${o.value.length} of ${m.value}`});function ve(){return!!s.threadId&&s.active!==!1&&!M.value&&!F.value&&!Q&&(typeof document>"u"||document.visibilityState==="visible")}function he(d){const p=d?o.value.find(_=>_.id===d):null;if(p){V.value=p.id;return}if(d){V.value=d;return}V.value&&o.value.some(_=>_.id===V.value)||(V.value=o.value[0]?.id??null)}function Le(d){V.value=d.id}function ae(d,p){p instanceof HTMLElement?W.value.set(d,p):W.value.delete(d)}async function Y(d){await Be(),W.value.get(d)?.focus({preventScroll:!0})}async function ce(d){await Be();const p=W.value.get(d);p?.scrollIntoView({block:"nearest"}),p?.focus({preventScroll:!0})}async function ne(d){V.value=d,he(d),await ce(d)}async function le(d){if(d.id){await ne(d.id);return}const p=o.value.find(_=>ga(_,d));p&&await ne(p.id)}function Ie(d){if(d.id)return he(d.id),!0;const p=o.value.find(_=>ga(_,d));return p?(he(p.id),!0):!1}function Re(d,p){const _=o.value.findIndex(Xe=>Xe.id===p.id);if(_<0)return;let ue=_;if(d.key==="ArrowDown")ue=Math.min(o.value.length-1,_+1);else if(d.key==="ArrowUp")ue=Math.max(0,_-1);else if(d.key==="Home")ue=0;else if(d.key==="End")ue=o.value.length-1;else return;d.preventDefault();const Se=o.value[ue];Se&&(Le(Se),Y(Se.id))}function We(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 P(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 xe(d){return Kt(d)?mu(d.scheduledAt,L.value):It(d.scheduledAt)}function fe(d){return Kt(d)?It(d.scheduledAt):""}function we(d){return d.status==="pending"?"Not run":d.status==="processing"?"Running":pe(d)?"-":It(d.completedAt)}function Te(d){return d.split("-")[0]||d}function pe(d){return d.status==="agent_canceled"||d.status==="user_canceled"}function ge(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 Ce(d){return d.replayedFrom?`Manual rerun of ${Te(d.replayedFrom)}`:d.manualRun?"Manual run":""}function je(d){return pe(d)?"":vu(d)}function Oe(d){const p=je(d);return p.startsWith("-")?"text-sky-700 dark:text-sky-300":p.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)<=L.value?"Complete overdue effect":"Run scheduled effect now":d.status==="completed"||d.status==="failed"||pe(d)?"Replay effect":"Effect is running"}function z(d){return d.status==="pending"?(d.scheduledAt>9999999999?Math.floor(d.scheduledAt/1e3):d.scheduledAt)<=L.value?"Complete":"Run now":d.status==="completed"||d.status==="failed"||pe(d)?"Replay":"Run"}function u(d){return d.status==="pending"||d.status==="completed"||d.status==="failed"||pe(d)}function c(d){return d.status==="pending"}function S(d){return c(d)?"Cancel scheduled effect":"Effect cannot be cancelled"}function q(d){return E.value==="cancel"?S(d):U(d)}function X(d){return E.value==="cancel"?"Cancel effect":z(d)}function Ee(d){return E.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 Ve(d,p){return w.value===d.id&&E.value===p}function Ke(d){const p=d.getBoundingClientRect(),_=8,ue=Math.min(Math.max(p.right+_,_),Math.max(_,window.innerWidth-nv-_)),Se=Math.min(Math.max(p.top-_,_),Math.max(_,window.innerHeight-160));re.value={top:Se,left:ue}}function Je(d,p,_="run"){if(!(_==="cancel"?c(d):u(d))||K.value)return;const Se=p.currentTarget;Se instanceof HTMLElement&&(Ye(),w.value=d.id,E.value=_,Ke(Se),document.addEventListener("pointerdown",$t),document.addEventListener("keydown",xt),window.addEventListener("resize",Ye),window.addEventListener("scroll",Ye,!0))}function Ye(){w.value=null,E.value="run",re.value=null,document.removeEventListener("pointerdown",$t),document.removeEventListener("keydown",xt),window.removeEventListener("resize",Ye),window.removeEventListener("scroll",Ye,!0)}function $t(d){const p=d.target;p instanceof Node&&(B.value?.contains(p)||Ye())}function xt(d){d.key==="Escape"&&Ye()}async function lt(d){if(!(!s.threadId||!u(d)||K.value)){Ye(),k.value=null,K.value=d.id,G.value="run";try{const p=await fetch(He(`/api/threads/${s.threadId}/effects/${d.id}/run`),{method:"POST"});if(!p.ok)throw new Error(await vt(p,"Failed to run effect"));await Qe()}catch(p){k.value=p instanceof Error?p.message:"Failed to run effect",await Qe({quiet:!0})}finally{K.value=null,G.value=null}}}async function Ct(d){if(!(!s.threadId||!c(d)||K.value)){Ye(),k.value=null,K.value=d.id,G.value="cancel";try{const p=await fetch(He(`/api/threads/${s.threadId}/effects/${d.id}/cancel`),{method:"POST"});if(!p.ok)throw new Error(await vt(p,"Failed to cancel effect"));await Qe()}catch(p){k.value=p instanceof Error?p.message:"Failed to cancel effect",await Qe({quiet:!0})}finally{K.value=null,G.value=null}}}async function yt(d){if(E.value==="cancel"){await Ct(d);return}await lt(d)}async function vt(d,p){try{const _=await d.json();return typeof _.error=="string"?_.error:p}catch{return p}}async function Qe(d={}){if(!s.threadId){o.value=[],m.value=0,h.value=0,V.value=null;return}const p=++H,_=d.append===!0,ue=d.quiet===!0;ue&&(Q=!0),ue||(_?F.value=!0:M.value=!0),ue||(x.value=null),ue||(k.value=null);const Se=new URLSearchParams,Xe=Math.min(Math.max(o.value.length,_a),200);Se.set("limit",String(_?_a:Xe)),Se.set("offset",String(_?o.value.length:0));try{const nt=await fetch(He(`/api/threads/${s.threadId}/effects?${Se}`));if(!nt.ok)throw new Error(await vt(nt,"Failed to load effects"));const ct=fu(await nt.json());if(p!==H)return;o.value=xu(_?[...o.value,...ct.effects]:ct.effects),m.value=ct.total,h.value=ct.upcomingCount,L.value=Date.now(),s.selectedEffectRef?!ue&&s.active!==!1?await le(s.selectedEffectRef):Ie(s.selectedEffectRef):he(s.selectedEffectId||V.value)}catch(nt){p===H&&(!ue||o.value.length===0)&&(x.value=nt instanceof Error?nt.message:"Failed to load effects")}finally{ue&&(Q=!1),p===H&&!ue&&(M.value=!1,F.value=!1)}}const ut=()=>{ve()&&Qe({quiet:!0})};return be(()=>s.threadId,()=>{o.value=[],m.value=0,h.value=0,V.value=null,x.value=null,k.value=null,Ye(),Qe()},{immediate:!0}),be(()=>s.selectedEffectId,d=>{d&&ne(d)}),be(()=>s.selectedEffectRef,d=>{d&&le(d)}),be(h,d=>l("count-changed",d),{immediate:!0}),be(()=>s.threadId,()=>{J&&clearInterval(J),J=null,s.threadId&&(J=setInterval(()=>{s.active!==!1&&(L.value=Date.now(),ve()&&Qe({quiet:!0}))},ev))},{immediate:!0}),be(()=>s.active,d=>{if(!d){Ye();return}ve()&&Qe({quiet:o.value.length>0})}),typeof document<"u"&&document.addEventListener("visibilitychange",ut),Mt(()=>{J&&clearInterval(J),Ye(),typeof document<"u"&&document.removeEventListener("visibilitychange",ut)}),i({selectEffectById:ne,selectEffectByReference:le}),(d,p)=>(n(),r("div",Ff,[j(Tn,{"height-percent":R.value,"onUpdate:heightPercent":p[4]||(p[4]=_=>R.value=_),"storage-key":tv,title:"Resize effects browser and detail"},Ot({main:Ae(()=>[t("div",Pf,[t("div",zf,[t("div",Nf,[j(f(_t),{size:15,class:"shrink-0 text-neutral-400"}),p[7]||(p[7]=t("div",{class:"truncate text-sm font-medium text-neutral-900 dark:text-neutral-100"}," Effects ",-1))]),t("div",jf,v(ye.value),1),t("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||M.value,title:"Refresh effects","aria-label":"Refresh effects",onClick:p[0]||(p[0]=_=>Qe())},[M.value?(n(),O(qe,{key:0,size:"xs"})):(n(),O(f(Wn),{key:1,size:15}))],8,Bf)]),t("div",Of,[e.threadId?M.value&&o.value.length===0?(n(),r("div",qf,[j(qe)])):x.value?(n(),r("div",Hf,v(x.value),1)):o.value.length===0?(n(),r("div",Uf,[j(f(_t),{class:"mx-auto mb-2 h-8 w-8 opacity-40"}),p[8]||(p[8]=Ge(" No effects scheduled or completed ",-1))])):(n(),r("div",Wf,[k.value?(n(),r("div",Kf,v(k.value),1)):T("",!0),t("div",Jf,[t("table",Gf,[p[9]||(p[9]=t("colgroup",null,[t("col",{class:"w-24"}),t("col",{class:"w-28"}),t("col",{class:"w-56"}),t("col",{class:"w-36"}),t("col",{class:"w-40"}),t("col",{class:"w-36"}),t("col",{class:"w-20"}),t("col")],-1)),p[10]||(p[10]=t("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"},[t("tr",null,[t("th",{scope:"col",class:"px-4 py-2 font-medium"}," Actions "),t("th",{scope:"col",class:"px-4 py-2 font-medium"},"Status"),t("th",{scope:"col",class:"px-3 py-2 font-medium"},"Effect"),t("th",{scope:"col",class:"px-3 py-2 font-medium"},"Created"),t("th",{scope:"col",class:"px-3 py-2 font-medium"}," Scheduled "),t("th",{scope:"col",class:"px-3 py-2 font-medium"}," Completed "),t("th",{scope:"col",class:"px-3 py-2 text-right font-medium"}," Attempts "),t("th",{scope:"col",class:"px-4 py-2 font-medium"}," Arguments ")])],-1)),t("tbody",Yf,[(n(!0),r(_e,null,Pe(De.value,_=>(n(),r(_e,{key:_.key},[_.type==="section"?(n(),r("tr",Qf,[t("th",Xf,[t("span",null,v(_.label),1),t("span",Zf,v(_.count),1)])])):(n(),r("tr",{key:1,ref_for:!0,ref:ue=>ae(_.effect.id,ue),tabindex:"0","aria-selected":V.value===_.effect.id,class:ee(["cursor-pointer transition-colors focus:outline-none",V.value===_.effect.id?"agents-surface-selected":"hover:bg-neutral-50 dark:hover:bg-neutral-900"]),onClick:ue=>Le(_.effect),onKeydown:[zt(Ne(ue=>Le(_.effect),["prevent"]),["enter"]),zt(Ne(ue=>Le(_.effect),["prevent"]),["space"]),ue=>Re(ue,_.effect)]},[t("td",tp,[t("div",np,[u(_.effect)?(n(),r("button",{key:0,type:"button",class:ee(["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":Ve(_.effect,"run")}]),disabled:!u(_.effect)||!!K.value,title:U(_.effect),"aria-label":U(_.effect),onClick:Ne(ue=>Je(_.effect,ue,"run"),["stop"])},[K.value===_.effect.id&&G.value==="run"?(n(),O(qe,{key:0,size:"xs"})):_.effect.status==="completed"||_.effect.status==="failed"||pe(_.effect)?(n(),O(f(Xt),{key:1,size:14})):(n(),O(f(Bn),{key:2,size:14}))],10,ap)):T("",!0),c(_.effect)?(n(),r("button",{key:1,type:"button",class:ee(["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":Ve(_.effect,"cancel")}]),disabled:!!K.value,title:S(_.effect),"aria-label":S(_.effect),onClick:Ne(ue=>Je(_.effect,ue,"cancel"),["stop"])},[K.value===_.effect.id&&G.value==="cancel"?(n(),O(qe,{key:0,size:"xs"})):(n(),O(f(Et),{key:1,size:14}))],10,rp)):T("",!0),!u(_.effect)&&!c(_.effect)?(n(),r("span",sp," - ")):T("",!0)])]),t("td",lp,[t("span",{class:ee(["inline-flex rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",P(_.effect.status)])},v(We(_.effect.status)),3)]),t("td",op,[t("div",ip,v(_.effect.name),1),t("div",{class:"truncate text-[11px] text-neutral-400",title:_.effect.id},v(Te(_.effect.id)),9,dp),ge(_.effect)?(n(),r("div",up,v(ge(_.effect)),1)):T("",!0),Ce(_.effect)?(n(),r("div",cp,[_.effect.replayedFrom?(n(),O(f(Xt),{key:0,size:10,class:"shrink-0"})):(n(),O(f(_t),{key:1,size:10,class:"shrink-0"})),t("span",fp,v(Ce(_.effect)),1)])):T("",!0)]),t("td",pp,v(f(It)(_.effect.createdAt)),1),t("td",vp,[t("div",mp,v(xe(_.effect)),1),fe(_.effect)?(n(),r("div",gp,v(fe(_.effect)),1)):T("",!0)]),t("td",hp,[t("div",null,v(we(_.effect)),1),je(_.effect)?(n(),r("div",{key:0,class:ee(["mt-0.5 text-[11px] font-medium",Oe(_.effect)])},v(je(_.effect)),3)):T("",!0)]),t("td",xp,v(_.effect.attempts),1),t("td",bp,[t("div",{class:"truncate font-mono text-[11px] text-neutral-500 dark:text-neutral-400",title:f(ma)(_.effect.args)},v(f(gu)(_.effect.args)),9,yp),_.effect.error?(n(),r("div",kp,v(_.effect.error),1)):T("",!0)])],42,ep))],64))),128))])])]),me.value?(n(),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:F.value,onClick:p[1]||(p[1]=_=>Qe({append:!0}))},[F.value?(n(),O(qe,{key:0,size:"xs"})):T("",!0),p[11]||(p[11]=t("span",null,"Load more",-1))],8,_p)):T("",!0)])):(n(),r("div",Vf," Select a thread to view effects "))])])]),_:2},[de.value&&se.value?{name:"detail",fn:Ae(()=>[t("div",wp,[t("div",$p,[j(f(_t),{size:15,class:"shrink-0 text-neutral-400"}),t("div",Cp,[t("div",Sp,v(se.value.name),1),t("div",Tp,v(se.value.id),1),ge(se.value)?(n(),r("div",Ip,v(ge(se.value)),1)):T("",!0)]),t("span",{class:ee(["shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",P(se.value.status)])},v(We(se.value.status)),3),t("div",Ap,[u(se.value)?(n(),r("button",{key:0,type:"button",class:ee(["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":Ve(se.value,"run")}]),disabled:!u(se.value)||!!K.value,title:U(se.value),"aria-label":U(se.value),onClick:p[2]||(p[2]=Ne(_=>Je(se.value,_,"run"),["stop"]))},[K.value===se.value.id&&G.value==="run"?(n(),O(qe,{key:0,size:"xs"})):se.value.status==="completed"||se.value.status==="failed"||pe(se.value)?(n(),O(f(Xt),{key:1,size:14})):(n(),O(f(Bn),{key:2,size:14})),t("span",null,v(z(se.value)),1)],10,Ep)):T("",!0),c(se.value)?(n(),r("button",{key:1,type:"button",class:ee(["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":Ve(se.value,"cancel")}]),disabled:!!K.value,title:S(se.value),"aria-label":S(se.value),onClick:p[3]||(p[3]=Ne(_=>Je(se.value,_,"cancel"),["stop"]))},[K.value===se.value.id&&G.value==="cancel"?(n(),O(qe,{key:0,size:"xs"})):(n(),O(f(Et),{key:1,size:14})),p[12]||(p[12]=t("span",null,"Cancel",-1))],10,Lp)):T("",!0)])]),t("div",Mp,[t("div",null,[p[13]||(p[13]=t("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Created ",-1)),t("div",Rp,v(f(It)(se.value.createdAt)),1)]),t("div",null,[p[14]||(p[14]=t("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Scheduled ",-1)),t("div",Dp,v(f(It)(se.value.scheduledAt)),1)]),t("div",null,[p[15]||(p[15]=t("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Completed ",-1)),t("div",Fp,v(we(se.value)),1),je(se.value)?(n(),r("div",{key:0,class:ee(["mt-0.5 text-[11px] font-medium",Oe(se.value)])},v(je(se.value)),3)):T("",!0)]),t("div",null,[p[16]||(p[16]=t("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Attempts ",-1)),t("div",Pp,v(se.value.attempts),1)]),t("div",null,[p[17]||(p[17]=t("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Source ",-1)),t("div",zp,[ie(se.value)?(n(),r("span",Np,[se.value.replayedFrom?(n(),O(f(Xt),{key:0,size:10,class:"shrink-0"})):(n(),O(f(_t),{key:1,size:10,class:"shrink-0"})),Ge(" "+v(ie(se.value)),1)])):(n(),r("span",jp,"Automatic"))]),se.value.manualRunAt?(n(),r("div",Bp,v(f(It)(se.value.manualRunAt)),1)):T("",!0)]),se.value.replayedFrom?(n(),r("div",Op,[p[18]||(p[18]=t("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Rerun Of ",-1)),t("div",Vp,[j(f(Xt),{size:10,class:"shrink-0"}),t("span",qp,v(se.value.replayedFrom),1)])])):T("",!0)]),se.value.error?(n(),r("div",Hp,v(se.value.error),1)):T("",!0),t("div",Up,[p[19]||(p[19]=t("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)),j(Qn,{"model-value":oe.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"]),(n(),O(hr,{to:"body"},[e.active&&Fe.value&&re.value?(n(),r("div",{key:0,ref_key:"actionPopoverRef",ref:B,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:pt(N.value),onClick:p[6]||(p[6]=Ne(()=>{},["stop"]))},[t("div",Wp,[E.value==="cancel"?(n(),O(f(Et),{key:0,size:14,class:"mt-0.5 shrink-0 text-red-600 dark:text-red-300"})):(n(),O(f(_t),{key:1,size:14,class:"mt-0.5 shrink-0 text-amber-600 dark:text-amber-300"})),t("div",Kp,[t("div",Jp,v(q(Fe.value)),1),t("div",Gp,v(Ee(Fe.value)),1),t("div",Yp,[t("span",Qp,v(Fe.value.name),1)]),t("div",Xp,v(Fe.value.id),1)])]),t("div",Zp,[t("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:Ye},v(E.value==="cancel"?"Keep scheduled":"Cancel"),1),t("button",{type:"button",class:ee(["rounded px-2 py-1 font-medium transition-opacity hover:opacity-85",E.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:p[5]||(p[5]=_=>yt(Fe.value))},v(X(Fe.value)),3)])],4)):T("",!0)]))]))}}),rv={class:"flex h-full min-h-0 flex-col overflow-hidden"},sv={class:"flex items-center justify-between gap-3 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},lv={class:"min-w-0 flex items-center gap-1 overflow-hidden text-xs","aria-label":"File path"},ov=["onClick"],iv={class:"flex shrink-0 items-center gap-1"},dv=["disabled"],uv=["disabled"],cv={class:"min-h-0 flex-1 overflow-auto p-3"},fv={key:0,class:"py-12 text-center text-sm text-neutral-500"},pv={key:1,class:"flex justify-center py-12"},vv={key:2,class:"py-12 text-center text-sm text-red-600 dark:text-red-400"},mv={key:3,class:"py-12 text-center text-sm text-neutral-500"},gv={key:4,class:"space-y-0.5"},hv=["onClick","onDblclick","onKeydown"],xv={key:1,class:"w-3 shrink-0"},bv={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"},yv=["src","alt"],kv={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"},_v={class:"min-w-0 flex-1 truncate"},wv={key:5,class:"text-[10px] text-neutral-400"},$v={key:6,class:"text-[10px] text-neutral-400"},Cv={key:5,class:"grid grid-cols-[repeat(auto-fill,minmax(112px,1fr))] gap-3"},Sv=["onClick","onKeydown"],Tv={class:"mb-2 flex aspect-square items-center justify-center overflow-hidden rounded bg-neutral-100 dark:bg-neutral-950"},Iv=["src","alt"],Av={class:"truncate text-xs font-medium"},Ev={class:"mt-0.5 text-[10px] text-neutral-400"},Lv={class:"flex h-full min-h-0 flex-col overflow-hidden"},Mv={class:"flex items-center justify-between border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},Rv={class:"min-w-0"},Dv={class:"truncate text-sm font-semibold"},Fv={class:"truncate text-[11px] font-mono text-neutral-500"},Pv={class:"flex shrink-0 items-center gap-1.5"},zv=["disabled"],Nv=["href","download"],jv={key:0,class:"grid grid-cols-[120px_minmax(0,1fr)] gap-2 text-sm"},Bv={class:"font-mono"},Ov={class:"break-all font-mono"},Vv={key:1,class:"flex h-full items-center justify-center"},qv={key:2,class:"text-sm text-red-600 dark:text-red-400"},Hv=["src","alt"],Uv={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"},Wv={key:5,class:"grid grid-cols-[120px_minmax(0,1fr)] gap-2 text-sm"},Kv={class:"font-mono"},Jv={class:"font-mono"},Gv={class:"break-all font-mono"},Yv="agentbuilder.threads.filePreviewSplitPercent",Qv=2500,Xv=Ue({__name:"ThreadFilesPane",props:{threadId:{},path:{},refreshKey:{},active:{type:Boolean,default:!0}},emits:["update:path","count-changed"],setup(e,{emit:i}){const a=e,s=i,l=b([]),o=b(!1),m=b(!1),h=b(!1),M=b(null),F=b("tree"),k=b("/"),x=b(null),L=b(new Set(["/"])),V=b(!1),R=b(null),W=b(!1),K=b(null),G=b(""),w=b(null),E=b(50),B=b(null),re=b(new Map);let J=null,Q=!1;const H=d=>(d.startsWith("/")?d:`/${d}`).replace(/\/+/g,"/"),me=d=>d.replace(/^\/+/,"").split("/").map(p=>encodeURIComponent(p)).join("/"),Z=(d,p="")=>{const _=typeof d=="string"?d:d.path;if(!a.threadId)return"";const ue=p?`?${p}`:"";return He(`/api/threads/${a.threadId}/fs/${me(_)}${ue}`)},Me=d=>Z(d),De=d=>{const p=d.name.toLowerCase();return p.endsWith(".vue")?"html":d.mimeType.includes("json")||p.endsWith(".json")?"json":p.endsWith(".md")||p.endsWith(".markdown")?"markdown":p.endsWith(".ts")||p.endsWith(".tsx")?"typescript":p.endsWith(".js")||p.endsWith(".jsx")?"javascript":p.endsWith(".css")?"css":p.endsWith(".scss")?"scss":p.endsWith(".html")?"html":p.endsWith(".yml")||p.endsWith(".yaml")?"yaml":p.endsWith(".sh")||p.endsWith(".bash")?"shell":p.endsWith(".py")?"python":p.endsWith(".xml")||d.mimeType.includes("xml")?"xml":"plaintext"},se=d=>{if(!d)return"0 B";const p=["B","KB","MB","GB"],_=Math.min(Math.floor(Math.log(d)/Math.log(1024)),p.length-1);return`${(d/1024**_).toFixed(_===0?0:1)} ${p[_]}`},Fe=d=>`${d} ${d===1?"item":"items"}`,N=d=>d?.mimeType?.startsWith("image/"),de=new Set([".bash",".css",".html",".js",".jsx",".json",".md",".markdown",".py",".scss",".sh",".ts",".tsx",".txt",".vue",".xml",".yaml",".yml"]),oe=d=>{if(!d)return!1;const p=d.name.toLowerCase();return d.mimeType.startsWith("text/")||d.mimeType.includes("json")||d.mimeType.includes("xml")||d.mimeType.includes("javascript")||d.mimeType.includes("typescript")||[...de].some(_=>p.endsWith(_))},ye=d=>d?N(d)?Ma:d.mimeType.startsWith("audio/")?kr:d.mimeType.startsWith("video/")?_r:oe(d)?d.mimeType.includes("json")||d.mimeType.includes("javascript")?wr:Ra:bn:bn,ve=()=>{const d=new Set(["/"]);for(const p of l.value){const _=H(p.path).split("/").filter(Boolean);let ue="";for(const Se of _.slice(0,-1))ue+="/"+Se,d.add(ue)}return d},he=()=>{L.value=ve()},Le=async(d,p)=>{try{const _=await d.json();return typeof _.error=="string"?_.error:p}catch{return p}},ae=d=>d?`${d.path}|${d.size}|${d.updatedAt??""}|${d.mimeType}`:"",Y=async(d={})=>{if(!a.threadId){l.value=[];return}const p=d.quiet===!0;if(!(p&&Q)){p?Q=!0:(o.value=!0,M.value=null);try{const _=await fetch(He(`/api/threads/${a.threadId}/fs?find=**/*&type=file`));if(!_.ok)throw new Error("Failed to load files");const ue=await _.json();l.value=(ue.files||[]).filter(Se=>!Se.isDirectory).map(Se=>({...Se,path:H(Se.path)})).sort((Se,Xe)=>N(Se)!==N(Xe)?N(Se)?-1:1:Se.path.localeCompare(Xe.path)),F.value==="tree"&&l.value.length>0&&!V.value&&(he(),V.value=!0)}catch(_){p||(M.value=_ instanceof Error?_.message:"Failed to load files")}finally{p?Q=!1:o.value=!1}}},ce=I(()=>{const d={type:"directory",name:"",path:"/",children:[]},p=new Map([["/",d]]);for(const ue of l.value){const Se=H(ue.path).split("/").filter(Boolean);let Xe=d,nt="";for(const ct of Se.slice(0,-1)){nt=`${nt}/${ct}`;let bt=p.get(nt);bt||(bt={type:"directory",name:ct,path:nt,children:[]},p.set(nt,bt),Xe.children.push(bt)),Xe=bt}Xe.children.push({type:"file",name:ue.name||Se[Se.length-1],path:ue.path,file:ue,children:[]})}const _=ue=>{ue.children.sort((Se,Xe)=>Se.type!==Xe.type?Se.type==="directory"?-1:1:Se.name.localeCompare(Xe.name)),ue.children.forEach(_)};return _(d),d}),ne=I(()=>{if(k.value==="/")return ce.value;const d=k.value.split("/").filter(Boolean);let p=ce.value;for(const _ of d){const ue=p.children.find(Se=>Se.type==="directory"&&Se.name===_);if(!ue)return ce.value;p=ue}return p}),le=I(()=>ne.value.children),Ie=I(()=>[...le.value].sort((d,p)=>d.type!==p.type?d.type==="file"?-1:1:d.file&&p.file&&N(d.file)!==N(p.file)?N(d.file)?-1:1:d.name.localeCompare(p.name))),Re=I(()=>{const d=[],p=(_,ue)=>{for(const Se of _)d.push({node:Se,depth:ue}),Se.type==="directory"&&L.value.has(Se.path)&&p(Se.children,ue+1)};return p(ne.value.children,0),d}),We=I(()=>{if(F.value==="tree"){const d=k.value!=="/"?[{key:"__up__",kind:"up"}]:[];return d.push(...Re.value.map(p=>({key:p.node.path,kind:"node",node:p.node}))),d}return Ie.value.map(d=>({key:d.path,kind:"node",node:d}))}),P=I(()=>x.value?l.value.find(d=>d.path===x.value)??null:null),xe=I(()=>P.value?De(P.value):"plaintext"),fe=I(()=>ae(P.value)),we=I(()=>!!P.value&&R.value!==null&&oe(P.value)),Te=I(()=>we.value&&G.value!==(R.value??"")),pe=I(()=>{const d=P.value;if(!d)return!1;const p=d.mimeType.toLowerCase();return N(d)||oe(d)||p==="application/pdf"||p.startsWith("audio/")||p.startsWith("video/")}),ge=(d,p)=>{if(d.path===p)return d;for(const _ of d.children){const ue=ge(_,p);if(ue)return ue}return null},ie=I(()=>{if(!x.value)return null;const d=ge(ce.value,x.value);return d?.type==="directory"?d:null}),Ce=I(()=>{const d=k.value.split("/").filter(Boolean),p=[{label:"Files",path:"/"}];let _="";for(const ue of d)_+=`/${ue}`,p.push({label:ue,path:_});return p}),je=d=>{if(x.value=d.path,d.type==="directory"){k.value=d.path,L.value.add(d.path),L.value=new Set(L.value);return}},Oe=d=>{x.value=d.path,L.value.has(d.path)?L.value.delete(d.path):L.value.add(d.path),L.value=new Set(L.value)},U=async(d,p={})=>{const _=p.quiet===!0;if(!(Te.value&&x.value===d.path)&&(_||(R.value=null,K.value=null,G.value=""),!!oe(d))){_||(W.value=!0);try{const ue=await fetch(Z(d));if(!ue.ok)throw new Error("Failed to load preview");const Se=await ue.text();x.value===d.path&&!Te.value&&(R.value=Se,G.value=Se,K.value=null)}catch(ue){_||(K.value=ue instanceof Error?ue.message:"Failed to load preview")}finally{_||(W.value=!1)}}},z=async()=>{!P.value||!oe(P.value)||Te.value||await U(P.value,{quiet:!0})},u=()=>!!a.threadId&&a.active&&!Te.value&&!m.value&&!h.value&&!o.value&&!Q&&(typeof document>"u"||document.visibilityState==="visible"),c=async()=>{u()&&(await Y({quiet:!0}),await z())},S=()=>{u()&&c()},q=d=>{const p=new TextEncoder().encode(d);let _="";for(const ue of p)_+=String.fromCharCode(ue);return btoa(_)},X=()=>{G.value=R.value??"",w.value=null},Ee=async()=>{const d=P.value;if(!(!d||!a.threadId)){h.value=!0,w.value=null;try{const p=await fetch(Z(d),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:q(G.value),mimeType:d.mimeType||"text/plain"})});if(!p.ok)throw new Error(await Le(p,"Failed to save file"));R.value=G.value,await Y({quiet:!0})}catch(p){w.value=p instanceof Error?p.message:"Failed to save file"}finally{h.value=!1}}},Ve=async d=>{const p=d.target;if(!(!a.threadId||!p.files?.length)){m.value=!0,M.value=null;try{for(const _ of Array.from(p.files)){const ue=k.value==="/"?`/${_.name}`:`${k.value}/${_.name}`;if(!(await fetch(Z(ue),{method:"POST",headers:{"Content-Type":_.type||"application/octet-stream"},body:_})).ok)throw new Error(`Failed to upload ${_.name}`)}await Y()}catch(_){M.value=_ instanceof Error?_.message:"Upload failed"}finally{m.value=!1,p.value=""}}},Ke=b(new Set);be(()=>a.threadId,()=>{k.value=H(a.path||"/"),x.value=null,R.value=null,K.value=null,G.value="",w.value=null,L.value=new Set(["/"]),V.value=!1,Ke.value=new Set,Y()},{immediate:!0}),be(l,d=>{s("count-changed",d.length)},{immediate:!0}),be(()=>a.refreshKey,()=>{a.threadId&&Y()}),be(()=>a.active,d=>{d&&c()});const Je=b(!1),Ye=d=>{const p=d.lastIndexOf("/");return p<=0?"/":d.slice(0,p)},$t=d=>{const p=d.split("/").filter(Boolean);let _="";L.value.add("/");for(let ue=0;ue<p.length-1;ue++)_+="/"+p[ue],L.value.add(_);L.value=new Set(L.value)},xt=()=>{const d=Ye(k.value);k.value=d,x.value=d==="/"?null:d,L.value.add(d),L.value=new Set(L.value)},lt=(d,p)=>{p instanceof HTMLElement?re.value.set(d,p):re.value.delete(d)},Ct=async d=>{await Be(),re.value.get(d)?.focus({preventScroll:!0})},yt=d=>{d.kind==="node"&&je(d.node)},vt=(d,p)=>{const _=We.value,ue=_.findIndex(Xe=>Xe.key===d);if(ue<0)return;const Se=_[Math.min(_.length-1,Math.max(0,ue+p))];Se&&(yt(Se),Ct(Se.key))},Qe=d=>{const p=We.value,_=d==="start"?p[0]:p[p.length-1];_&&(yt(_),Ct(_.key))},ut=(d,p)=>{if(d.key==="ArrowDown"){d.preventDefault(),vt(p.key,1);return}if(d.key==="ArrowUp"){d.preventDefault(),vt(p.key,-1);return}if(d.key==="Home"){d.preventDefault(),Qe("start");return}if(d.key==="End"){d.preventDefault(),Qe("end");return}F.value!=="tree"||p.kind!=="node"||p.node.type!=="directory"||(d.key==="ArrowRight"&&!L.value.has(p.node.path)?(d.preventDefault(),L.value.add(p.node.path),L.value=new Set(L.value)):d.key==="ArrowLeft"&&L.value.has(p.node.path)&&(d.preventDefault(),L.value.delete(p.node.path),L.value=new Set(L.value)))};return be([()=>a.path,l],async([d])=>{const p=H(d||"/");let _=l.value.find(Se=>Se.path===p&&!Se.isDirectory);const ue=p!=="/"&&/\.[a-z0-9]+$/i.test(p);if(!_&&ue&&d&&!Ke.value.has(p)&&(Ke.value.add(p),await Y(),_=l.value.find(Se=>Se.path===p&&!Se.isDirectory)),_){const Se=F.value==="tree"?"/":Ye(p);x.value=p,$t(p),k.value!==Se&&(Je.value=!0,k.value=Se)}else k.value!==p&&(Je.value=!0,k.value=p)}),be(F,d=>{d==="tree"&&(l.value.length>0&&!V.value&&(he(),V.value=!0),P.value&&k.value!=="/"&&($t(P.value.path),Je.value=!0,k.value="/"))}),be(k,d=>{if(Je.value){Je.value=!1;return}s("update:path",H(d))}),be(x,()=>{R.value=null,K.value=null,G.value="",w.value=null}),be(fe,()=>{const d=P.value;d?U(d):(G.value="",w.value=null,R.value=null,K.value=null)}),be(ie,()=>{G.value="",w.value=null,R.value=null,K.value=null}),J=setInterval(()=>{c()},Qv),typeof document<"u"&&document.addEventListener("visibilitychange",S),Mt(()=>{J&&clearInterval(J),typeof document<"u"&&document.removeEventListener("visibilitychange",S)}),(d,p)=>(n(),O(Tn,{"height-percent":E.value,"onUpdate:heightPercent":p[5]||(p[5]=_=>E.value=_),"storage-key":Yv,title:"Resize files and preview"},Ot({main:Ae(()=>[t("div",rv,[t("div",sv,[t("nav",lv,[(n(!0),r(_e,null,Pe(Ce.value,(_,ue)=>(n(),r(_e,{key:_.path},[ue>0?(n(),O(f(Pt),{key:0,size:13,class:"shrink-0 text-neutral-300 dark:text-neutral-600"})):T("",!0),t("button",{type:"button",class:ee(["min-w-0 truncate rounded border px-1.5 py-1 font-medium transition-colors",ue===Ce.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:Se=>k.value=_.path},v(_.label),11,ov)],64))),128))]),t("div",iv,[t("button",{type:"button",class:ee(["inline-flex h-7 w-7 items-center justify-center rounded border",F.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:p[0]||(p[0]=_=>F.value="tree")},[j(f(xr),{size:15})],2),t("button",{type:"button",class:ee(["inline-flex h-7 w-7 items-center justify-center rounded border",F.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:p[1]||(p[1]=_=>F.value="grid")},[j(f(br),{size:15})],2),t("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||o.value,title:"Refresh files",onClick:Y},[o.value?(n(),O(qe,{key:0,size:"xs"})):(n(),O(f(Wn),{key:1,size:15}))],8,dv),t("input",{ref_key:"fileInput",ref:B,type:"file",multiple:"",class:"hidden",onChange:Ve},null,544),t("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||m.value,title:"Upload files",onClick:p[2]||(p[2]=_=>B.value?.click())},[m.value?(n(),O(qe,{key:0,size:"xs"})):(n(),O(f(yr),{key:1,size:15}))],8,uv)])]),t("div",cv,[e.threadId?o.value?(n(),r("div",pv,[j(qe)])):M.value?(n(),r("div",vv,v(M.value),1)):l.value.length===0?(n(),r("div",mv," No files yet ")):F.value==="tree"?(n(),r("div",gv,[k.value!=="/"?(n(),r("button",{key:0,ref:_=>lt("__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:xt,onKeydown:p[3]||(p[3]=_=>ut(_,{key:"__up__",kind:"up"}))},[p[6]||(p[6]=t("span",{class:"w-3 shrink-0"},null,-1)),j(f(An),{size:15,class:"shrink-0 text-amber-500"}),p[7]||(p[7]=t("span",{class:"min-w-0 flex-1 font-mono"},"..",-1))],544)):T("",!0),(n(!0),r(_e,null,Pe(Re.value,_=>(n(),r("button",{key:_.node.path,ref_for:!0,ref:ue=>lt(_.node.path,ue),type:"button",class:ee(["flex w-full items-center gap-2 rounded py-1.5 pr-2 text-left text-xs",x.value===_.node.path?"agents-surface-selected agents-text-selected":"hover:bg-neutral-100 dark:hover:bg-neutral-800"]),style:pt({paddingLeft:`${8+_.depth*18}px`}),onClick:ue=>_.node.type==="directory"?Oe(_.node):je(_.node),onDblclick:ue=>_.node.type==="directory"?je(_.node):void 0,onKeydown:ue=>ut(ue,{key:_.node.path,kind:"node",node:_.node})},[_.node.type==="directory"?(n(),O(f(Pt),{key:0,size:12,class:ee(["shrink-0 text-neutral-400 transition-transform",L.value.has(_.node.path)?"rotate-90":""])},null,8,["class"])):(n(),r("span",xv)),_.node.type==="directory"?(n(),O(f(An),{key:2,size:15,class:"shrink-0 text-amber-500"})):_.node.file&&N(_.node.file)?(n(),r("span",bv,[t("img",{src:Me(_.node.file),alt:_.node.name,class:"h-full w-full object-cover",loading:"lazy"},null,8,yv)])):(n(),r("span",kv,[(n(),O(At(ye(_.node.file)),{size:15,class:"text-neutral-500"}))])),t("span",_v,v(_.node.name),1),_.node.type==="directory"?(n(),r("span",wv,v(Fe(_.node.children.length)),1)):(n(),r("span",$v,v(se(_.node.file?.size||0)),1))],46,hv))),128))])):(n(),r("div",Cv,[(n(!0),r(_e,null,Pe(Ie.value,_=>(n(),r("button",{key:_.path,ref_for:!0,ref:ue=>lt(_.path,ue),type:"button",class:ee(["group min-w-0 rounded-lg border p-2 text-left",x.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:ue=>je(_),onKeydown:ue=>ut(ue,{key:_.path,kind:"node",node:_})},[t("div",Tv,[_.file&&N(_.file)?(n(),r("img",{key:0,src:Me(_.file),alt:_.name,class:"h-full w-full object-cover",loading:"lazy"},null,8,Iv)):_.type==="directory"?(n(),O(f(An),{key:1,size:28,class:"text-amber-500"})):(n(),O(At(ye(_.file)),{key:2,size:28,class:"text-neutral-500"}))]),t("div",Av,v(_.name),1),t("div",Ev,v(_.type==="directory"?Fe(_.children.length):se(_.file?.size||0)),1)],42,Sv))),128))])):(n(),r("div",fv," Select a thread to view files "))])])]),_:2},[P.value||ie.value?{name:"detail",fn:Ae(()=>[t("div",Lv,[t("div",Mv,[t("div",Rv,[t("div",Dv,v(P.value?.name||ie.value?.name||"Files"),1),t("div",Fv,v(P.value?.path||ie.value?.path),1)]),t("div",Pv,[P.value&&we.value?(n(),r(_e,{key:0},[t("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:h.value||!Te.value,onClick:Ee},[h.value?(n(),O(qe,{key:0,size:"xs"})):(n(),O(f(Pa),{key:1,size:14})),p[8]||(p[8]=t("span",null,"Save",-1))],8,zv),Te.value?(n(),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:X},[j(f(Et),{size:15})])):T("",!0)],64)):T("",!0),P.value?(n(),r("a",{key:1,href:Z(P.value),target:"_blank",rel:"noopener noreferrer",download:pe.value?void 0:P.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"},v(pe.value?"Open":"Download"),9,Nv)):T("",!0)])]),t("div",{class:ee(["min-h-0 flex-1",R.value!==null&&!W.value&&!K.value&&!ie.value&&!N(P.value)?"flex flex-col overflow-hidden p-3":"overflow-auto p-3"])},[ie.value?(n(),r("dl",jv,[p[9]||(p[9]=t("dt",{class:"text-neutral-500"},"Type",-1)),p[10]||(p[10]=t("dd",{class:"font-mono"},"directory",-1)),p[11]||(p[11]=t("dt",{class:"text-neutral-500"},"Items",-1)),t("dd",Bv,v(Fe(ie.value.children.length)),1),p[12]||(p[12]=t("dt",{class:"text-neutral-500"},"Path",-1)),t("dd",Ov,v(ie.value.path),1)])):W.value?(n(),r("div",Vv,[j(qe)])):K.value?(n(),r("div",qv,v(K.value),1)):N(P.value)?(n(),r("img",{key:3,src:Z(P.value),alt:P.value.name,class:"mx-auto max-h-full max-w-full rounded border border-neutral-200 object-contain dark:border-neutral-800"},null,8,Hv)):R.value!==null?(n(),r(_e,{key:4},[w.value?(n(),r("div",Uv,v(w.value),1)):T("",!0),we.value?(n(),O(Qn,{key:1,modelValue:G.value,"onUpdate:modelValue":p[4]||(p[4]=_=>G.value=_),language:xe.value,class:"min-h-[12rem] flex-1",framed:!1},null,8,["modelValue","language"])):T("",!0)],64)):(n(),r("dl",Wv,[p[13]||(p[13]=t("dt",{class:"text-neutral-500"},"Type",-1)),t("dd",Kv,v(P.value.mimeType||"application/octet-stream"),1),p[14]||(p[14]=t("dt",{class:"text-neutral-500"},"Size",-1)),t("dd",Jv,v(se(P.value.size)),1),p[15]||(p[15]=t("dt",{class:"text-neutral-500"},"Path",-1)),t("dd",Gv,v(P.value.path),1)]))],2)])]),key:"0"}:void 0]),1032,["height-percent"]))}});function Zv(e){const i=e&&typeof e=="object"?e:{},a=Array.isArray(i.values)?i.values:[];return{values:a.filter(s=>!!s&&typeof s=="object").filter(s=>typeof s.key=="string").map(s=>({key:s.key,value:s.value,serialized:typeof s.serialized=="string"?s.serialized:Ka(s.value),size:typeof s.size=="number"&&Number.isFinite(s.size)?s.size:0,updatedAt:typeof s.updatedAt=="number"&&Number.isFinite(s.updatedAt)?s.updatedAt:0,parseError:typeof s.parseError=="string"?s.parseError:void 0})),total:typeof i.total=="number"&&Number.isFinite(i.total)?i.total:a.length,limit:typeof i.limit=="number"&&Number.isFinite(i.limit)?i.limit:a.length,offset:typeof i.offset=="number"&&Number.isFinite(i.offset)?i.offset:0,search:typeof i.search=="string"?i.search:null}}function Ka(e){const i=JSON.stringify(e,null,2);return i===void 0?"":i}function em(e){try{const i=JSON.parse(e);return i===null?{ok:!1,error:"Use delete to remove a key"}:{ok:!0,value:i}}catch(i){return{ok:!1,error:i instanceof Error?i.message:"Invalid JSON"}}}function Pn(e,i){return i?"unknown":Array.isArray(e)?"array":typeof e=="string"?"string":typeof e=="number"?"number":typeof e=="boolean"?"boolean":e&&typeof e=="object"?"object":"unknown"}function tm(e,i){if(i)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 wa(e){if(!Number.isFinite(e)||e<=0)return"0 B";const i=["B","KB","MB"],a=Math.min(Math.floor(Math.log(e)/Math.log(1024)),i.length-1);return`${(e/1024**a).toFixed(a===0?0:1)} ${i[a]}`}function $a(e){if(!Number.isFinite(e)||e<=0)return"Unknown";const i=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(i))}const nm={class:"flex h-full min-h-0 flex-col overflow-hidden"},am={class:"flex items-center gap-2 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},rm={class:"relative min-w-0 flex-1"},sm={class:"hidden shrink-0 text-xs tabular-nums text-neutral-500 sm:block"},lm=["disabled"],om=["disabled"],im={class:"min-h-0 flex-1 overflow-auto"},dm={key:0,class:"py-12 text-center text-sm text-neutral-500"},um={key:1,class:"flex justify-center py-12"},cm={key:2,class:"py-12 text-center text-sm text-red-600 dark:text-red-400"},fm={key:3,class:"py-12 text-center text-sm text-neutral-500"},pm={key:4,class:"flex min-h-full flex-col"},vm={class:"min-h-0 flex-1 overflow-auto bg-white dark:bg-neutral-950"},mm={class:"w-full min-w-[52rem] table-fixed text-left text-xs"},gm={class:"divide-y divide-neutral-100 dark:divide-neutral-900"},hm=["aria-selected","onClick","onKeydown"],xm={class:"whitespace-nowrap px-4 py-2 align-middle"},bm={class:"font-mono text-xs font-normal text-neutral-950 dark:text-neutral-100"},ym={class:"min-w-0 px-3 py-2 align-middle"},km={class:"truncate text-xs text-neutral-500 dark:text-neutral-400"},_m={class:"whitespace-nowrap px-3 py-2 align-middle"},wm={class:"whitespace-nowrap px-3 py-2 text-right align-middle text-[11px] tabular-nums text-neutral-400"},$m={class:"whitespace-nowrap px-4 py-2 text-right align-middle text-[11px] text-neutral-400"},Cm=["disabled"],Sm={class:"flex h-full min-h-0 flex-col overflow-hidden"},Tm={class:"flex items-center justify-between gap-3 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},Im={class:"min-w-0 flex-1"},Am={key:0,class:"flex items-center gap-2"},Em={key:1,class:"mt-0.5 truncate text-[11px] text-neutral-500"},Lm={class:"flex shrink-0 items-center gap-1.5"},Mm=["disabled"],Rm=["disabled"],Dm={class:"flex min-h-0 flex-1 flex-col overflow-hidden p-3"},Fm={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"},Pm="agentbuilder.threads.kvStoreDetailSplitPercent",Ca=100,zm=2500,Wt=`{
|
|
17
|
+
Error Details:`);let _e=I.length;return _>=0&&(_e=Math.min(_e,_)),R>=0&&(_e=Math.min(_e,R)),I.slice(0,_e)},se=I=>{let _=be(I).trim(),R=!1;for(let ot=0;ot<5&&!(!_.startsWith("{")&&!_.startsWith("["));ot++){const ft=D(_);if(!ft||typeof ft.value!="object"||ft.value===null)break;const Ze=ft.value,jt=Ze.error,In=typeof jt=="object"&&jt!==null?jt.message:typeof jt=="string"?jt:Ze.message;if(typeof In!="string"||In.trim().length===0)break;R=!0,_=In.trim()}if(R)return _;const _e=Se(I)?Ue(I):I,tt=be(_e).trim(),kt=tt.split(`
|
|
18
|
+
`).find(ot=>ot.trim().length>0);return kt&&kt.length<600?kt.trim():tt},we=I=>{if(!I)return{isJson:!1,text:""};const _=I.trim();if(_.startsWith("{")||_.startsWith("["))try{const _e=JSON.parse(_);if(_e&&typeof _e=="object")return{isJson:!0,text:JSON.stringify(_e,null,2)}}catch{}return{isJson:!1,text:Se(I)?Ue(I):I}},Te=A(()=>ue.value.map(I=>{const _=se(I.message),R=we(I.message),_e=R.text.trim().length>0&&R.text.trim()!==_.trim();return{...I,human:_,details:R,hasMoreDetails:_e}})),ce=x("standard"),ge=x(null),oe=x(!1),Ie=x(null);let je=0;const Oe=["cloudflare","cerebras","google","groq","openai","openrouter","xai"],V=()=>(a.log.actual_provider||a.log.provider)?.toLowerCase(),F=()=>{const I=V();I&&Oe.includes(I)?ce.value=I:ce.value="standard"},u=async(I,_)=>{const R=++je;if(I==="standard"){ge.value=null,Ie.value=null,oe.value=!1;return}if(!a.threadId||!_){Ie.value="Missing thread or log ID",oe.value=!1;return}oe.value=!0,Ie.value=null;try{const _e=await fetch(He(`/api/threads/${a.threadId}/logs/${_}/inspect/${I}`));if(!_e.ok){const tt=await _e.json();throw new Error(tt.error||"Failed to inspect")}if(R!==je)return;ge.value=await _e.json()}catch(_e){if(R!==je)return;Ie.value=Re(_e,"Failed to fetch inspected request"),ge.value=null}finally{R===je&&(oe.value=!1)}};he([()=>a.log.id,ce],async([I,_])=>{ge.value=null,Ie.value=null,await u(_,I)},{immediate:!0}),he(()=>a.log.id,F,{immediate:!0}),he(l,async()=>{await Be();const I=E.value,_=U.value;if(!I||!_)return;const R=I.getBoundingClientRect(),_e=_.getBoundingClientRect(),tt=I.scrollTop+(_e.top-R.top)-ae.value;I.scrollTop>tt&&Cn(I,{top:tt})});const c=A(()=>{if(ce.value==="standard"||!ge.value)return a.log.message_history;const{body:I,messagesPath:_}=ge.value,R=_&&I?I[_]:I;return JSON.stringify(R,null,2)}),C=I=>{if(!I)return null;try{return JSON.parse(I)}catch{return I}},O=I=>!!I&&typeof I=="object"&&!Array.isArray(I),Y=A(()=>{const I=C(a.log.source_message_metadata);return O(I)?I:null}),Le=A(()=>{const I=Y.value;if(!I)return null;const _=I.scheduledEffect;if(!O(_))return null;const R=typeof _.id=="string"?_.id:null,_e=typeof _.name=="string"?_.name:null;return R?{id:R,name:_e,reference:{id:R,name:_e}}:null}),Ve=A(()=>su(a.log.scheduled_effects)),Ke=A(()=>{const I=C(c.value);return Array.isArray(I)?I.filter(_=>!!_&&typeof _=="object").map(_=>({role:typeof _.role=="string"?_.role:"message",raw:_})):[]}),Je=I=>I.role==="system"&&typeof I.raw.content=="string"&&typeof a.log.system_prompt=="string"&&I.raw.content.trim()===a.log.system_prompt.trim(),Ye=A(()=>Ke.value.some(I=>Je(I))),$t=A(()=>Ke.value.length===0?c.value:Ke.value.map(I=>{const _={...I.raw};return Je(I)&&(_.content=`[${ba}]`),_})),xt=A(()=>{const I=[];return Ye.value&&I.push({token:ba,label:"view system prompt",action:"view-system-prompt"}),I}),st=I=>{I.action==="view-system-prompt"&&Ct()},Ct=async()=>{X.value.has("system_prompt")&&(X.value.delete("system_prompt"),X.value=new Set(X.value)),await Be();const I=E.value,_=j.value?.contentRef;!I||!_||Cn(I,{top:_.offsetTop-ae.value-T0-I0})},yt=A(()=>ce.value==="standard"||!ge.value?a.log.request_body:JSON.stringify(ge.value.body,null,2)),pt=A(()=>ce.value==="standard"||!ge.value?null:`${ce.value} format`),Qe=A(()=>cu(a.log.request_body));he(()=>a.log,()=>{Be(()=>{W(),G.value?.checkHeight(),q.value?.checkHeight(),j.value?.checkHeight(),J.value?.checkHeight()})});const ut=A(()=>a.log.error||ue.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"}),d=I=>I==null?null:I.toLocaleString("en-US"),v=I=>I==null?null:`${I.toLocaleString("en-US")} ms`,k=I=>I==null?null:`$${I.toFixed(6)}`,ie=A(()=>{const I=a.log.total_tokens;return!(I==null||I===0&&(a.log.error||ue.value.length>0))}),Ae=A(()=>{const I=a.log.cost_total;return!(I==null||I===0&&(a.log.error||ue.value.length>0))}),Xe=A(()=>ie.value?a.log.total_tokens.toLocaleString("en-US"):null),nt=A(()=>{if(!ie.value)return null;const I=a.log.input_tokens??0,_=a.log.output_tokens??0;return`${I.toLocaleString()} in → ${_.toLocaleString()} out`}),ct=A(()=>{if(!ie.value)return null;const I=[],_=a.log.reasoning_tokens;_&&_>0&&I.push(`${_.toLocaleString()} reasoning`);const R=a.log.cached_tokens,_e=a.log.input_tokens;if(R&&R>0)if(_e&&_e>0){const tt=Math.round(R/_e*100);I.push(`${R.toLocaleString()} cached (${tt}%)`)}else I.push(`${R.toLocaleString()} cached`);return I.length>0?I.join(" · "):null}),bt=A(()=>{if(!Ae.value)return null;const I=a.log.cost_input,_=a.log.cost_output;return I==null||_==null?null:`$${I.toFixed(6)} in · $${_.toFixed(6)} out`}),dn=A(()=>v(a.log.time_to_first_token_ms)),un=I=>I?I.length>10?`${I.slice(0,8)}…`:I:"",Qt=A(()=>{const I=a.log.actual_provider||a.log.provider;return I?He(`/api/providers/${encodeURIComponent(I)}/icon`):null}),g=A(()=>{const I=a.log.actual_provider||a.log.provider,_=a.log.model;return!I||!_?null:He(`/api/providers/${encodeURIComponent(I)}/icon?model=${encodeURIComponent(_)}`)}),b=(I,_,R)=>{if(!a.log.prompt_name)return;const _e=_.currentTarget;_e instanceof HTMLElement&&T({target:{entityType:"prompt",entityId:a.log.prompt_name,section:I,defaultToolTab:R},anchorEl:_e,threadId:a.threadId??null,showGlobalNotice:!0})},$=(I,_)=>a.log.prompt_name?Nr(y.value?.target,{entityType:"prompt",entityId:a.log.prompt_name,section:I,defaultToolTab:_}):!1,ke=async()=>{if(B.value)return B.value;const I=await fetch(He("/api/models"));if(!I.ok)return[];const _=await I.json();return B.value=_.models||[],B.value},te=(I,_)=>{if(!_)return I;const R=`${_}/`;return I.startsWith(R)?I.slice(R.length):I},Pe=async I=>{const _=I.currentTarget;if(!(_ instanceof HTMLElement))return;const R=a.log.model,_e=a.log.model_name||a.log.model;if(!R&&!_e)return;const tt=a.log.provider,kt=te(_e,tt),ot=await ke(),ft=ot.find(Ze=>Ze.id===R)||ot.find(Ze=>Ze.name===R)||ot.find(Ze=>Ze.model===a.log.model)||ot.find(Ze=>Ze.id===_e)||ot.find(Ze=>Ze.name===_e)||ot.find(Ze=>Ze.model===kt);T({target:{entityType:"model",entityId:ft?.id||ft?.name||R||_e},anchorEl:_,editData:ft||{id:R||_e,name:R||_e,model:kt,provider:tt,provider_id:tt},threadId:a.threadId??null,showGlobalNotice:!0})},lt=()=>{const I=y.value?.target;if(I?.entityType!=="model")return!1;const _=te(a.log.model_name||a.log.model,a.log.provider);return[a.log.model,a.log.model_name,_].includes(I.entityId)},gt=async()=>{try{if(!a.log.request_body||!a.log.model)throw new Error("Missing request data");const I=await fetch(He(`/api/models/${encodeURIComponent(a.log.model)}/curl-data`));if(!I.ok)throw new Error("Failed to fetch model data");const _=await I.json(),R=ha(a.log.request_body);let _e=`curl -X POST '${_.endpoint}' \\
|
|
19
|
+
`;_e+=` -H 'Content-Type: application/json' \\
|
|
20
|
+
`,_.sdk?.toLowerCase()==="openrouter"?(_e+=` -H 'Authorization: Bearer ${_.api_key}' \\
|
|
21
|
+
`,_e+=` -H 'HTTP-Referer: https://agentbuilder.local' \\
|
|
22
|
+
`,_e+=` -H 'X-Title: AgentBuilder' \\
|
|
23
|
+
`):(_.sdk?.toLowerCase()==="cloudflare"||_.sdk?.toLowerCase()==="openai"||_.sdk?.toLowerCase()==="cerebras")&&(_e+=` -H 'Authorization: Bearer ${_.api_key}' \\
|
|
24
|
+
`),_e+=` -d '${R.replace(/'/g,"'\\''")}'`,await w(_e)}catch(I){M.value=`Failed to copy cURL: ${Re(I,"Unknown error")}`}};return(I,_)=>(n(),r("div",{ref_key:"scrollContainer",ref:E,class:"log-details-root h-full overflow-y-auto bg-white p-3 dark:bg-neutral-900",style:vt({"--logdetails-tabs-top":`${ve.value}px`,"--logdetails-sticky-stack":`${ae.value}px`})},[t("div",{ref_key:"stickyHeaderRef",ref:H,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"},[t("div",vu,[t("div",pu,[t("div",gu,[t("button",{onClick:_[0]||(_[0]=R=>s("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"},[..._[23]||(_[23]=[t("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[t("polyline",{points:"15 18 9 12 15 6"})],-1)])],8,mu),t("button",{onClick:_[1]||(_[1]=R=>s("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"},[..._[24]||(_[24]=[t("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[t("polyline",{points:"9 18 15 12 9 6"})],-1)])],8,hu)]),t("span",{class:ee(["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",ut.value.text])},[t("span",{class:ee(["inline-block h-1.5 w-1.5 rounded-full",[ut.value.dot,ut.value.kind==="live"?"log-details-pulse":""]])},null,2),Ge(" "+m(ut.value.label),1)],2),t("h3",xu,m(e.log.prompt_name||e.log.model_name||e.log.model),1),t("div",bu,[e.log.actual_provider||e.log.provider?(n(),r("span",yu,[Qt.value?(n(),r("img",{key:0,src:Qt.value,alt:e.log.actual_provider||e.log.provider||"provider",class:"h-3 w-3 shrink-0 rounded-[2px] object-contain"},null,8,ku)):S("",!0),t("span",null,m(e.log.actual_provider||e.log.provider),1)])):S("",!0),e.log.model_name||e.log.model?(n(),r("span",wu,[g.value?(n(),r("img",{key:0,src:g.value,alt:e.log.model_name||e.log.model||"model",class:"h-3 w-3 shrink-0 rounded-[2px] object-contain"},null,8,_u)):S("",!0),t("span",null,m(e.log.model_name||e.log.model),1),z(f(Rt),{content:"Model config",position:"bottom",disabled:lt()},{default:Ee(()=>[t("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:_[2]||(_[2]=ze(R=>Pe(R),["stop"]))},[z(f(yn),{size:12})])]),_:1},8,["disabled"])])):S("",!0)])]),t("div",$u,[t("button",{onClick:gt,disabled:f(h)||!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:f(M)||(e.log.request_body?"Copy cURL command":"No request data available")},[f(h)?(n(),N(qe,{key:0,size:"xs"})):(n(),r("span",Su,m(f(L)?"Copied!":"Copy cURL"),1))],8,Cu),t("button",{onClick:_[3]||(_[3]=R=>s("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"},[..._[25]||(_[25]=[t("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[t("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),t("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])])]),t("div",Tu,[t("div",Iu,[e.log.prompt_name?(n(),N(f(Rt),{key:0,content:"Prompt basics",position:"bottom",disabled:$("basic")},{default:Ee(()=>[t("button",{type:"button",class:ee(Ut),"aria-label":"Edit prompt basics",onClick:_[4]||(_[4]=ze(R=>b("basic",R),["stop"]))},[z(f(Ra),{size:14})])]),_:1},8,["disabled"])):S("",!0),e.log.prompt_name?(n(),N(f(Rt),{key:1,content:"Prompt text",position:"bottom",disabled:$("prompt")},{default:Ee(()=>[t("button",{type:"button",class:ee(Ut),"aria-label":"Edit prompt text",onClick:_[5]||(_[5]=ze(R=>b("prompt",R),["stop"]))},[z(f(ln),{size:14})])]),_:1},8,["disabled"])):S("",!0),e.log.prompt_name?(n(),N(f(Rt),{key:2,content:"Prompt config",position:"bottom",disabled:$("behavior")},{default:Ee(()=>[t("button",{type:"button",class:ee(Ut),"aria-label":"Edit prompt config",onClick:_[6]||(_[6]=ze(R=>b("behavior",R),["stop"]))},[z(f(Da),{size:14})])]),_:1},8,["disabled"])):S("",!0),e.log.prompt_name?(n(),N(f(Rt),{key:3,content:"Prompt input schema",position:"bottom",disabled:$("schema")},{default:Ee(()=>[t("button",{type:"button",class:ee(Ut),"aria-label":"Edit input schema",onClick:_[7]||(_[7]=ze(R=>b("schema",R),["stop"]))},[z(f(or),{size:14})])]),_:1},8,["disabled"])):S("",!0),e.log.prompt_name?(n(),N(f(Rt),{key:4,content:"Prompt variables",position:"bottom",disabled:$("variables")},{default:Ee(()=>[t("button",{type:"button",class:ee(Ut),"aria-label":"Edit prompt variables",onClick:_[8]||(_[8]=ze(R=>b("variables",R),["stop"]))},[z(f(ir),{size:14})])]),_:1},8,["disabled"])):S("",!0),e.log.prompt_name?(n(),N(f(Rt),{key:5,content:"Prompt tools",position:"bottom",disabled:$("tools","functions")},{default:Ee(()=>[t("button",{type:"button",class:ee(Ut),"aria-label":"Edit prompt tools",onClick:_[9]||(_[9]=ze(R=>b("tools",R,"functions"),["stop"]))},[z(f(Fa),{size:14})])]),_:1},8,["disabled"])):S("",!0)]),t("div",Au,[z($n,{timestamp:e.log.created_at},null,8,["timestamp"]),e.log.finish_reason?(n(),r($e,{key:0},[_[26]||(_[26]=t("span",{"aria-hidden":"true",class:"text-neutral-300 dark:text-neutral-700"},"·",-1)),t("span",null,"finish: "+m(e.log.finish_reason),1)],64)):S("",!0),e.log.id?(n(),r($e,{key:1},[_[27]||(_[27]=t("span",{"aria-hidden":"true",class:"text-neutral-300 dark:text-neutral-700"},"·",-1)),t("span",Eu,"log "+m(un(e.log.id)),1)],64)):S("",!0),f(M)?(n(),r($e,{key:2},[_[28]||(_[28]=t("span",{"aria-hidden":"true",class:"text-neutral-300 dark:text-neutral-700"},"·",-1)),t("span",Lu,m(f(M)),1)],64)):S("",!0)])])],512),t("div",Mu,[t("div",Ru,[t("div",Du,[z(f(dr),{size:11,"stroke-width":2.25}),_[29]||(_[29]=t("span",null,"Latency",-1))]),t("div",Fu,[!e.log.is_complete&&!e.log.latency_ms?(n(),N(qe,{key:0,size:"xs"})):(n(),r("span",Pu,m(v(e.log.latency_ms)??"—"),1))]),dn.value?(n(),r("div",Nu," first token "+m(dn.value),1)):S("",!0)]),t("div",zu,[t("div",ju,[z(f(ur),{size:11,"stroke-width":2.25}),_[30]||(_[30]=t("span",null,"Tokens",-1))]),t("div",Bu,[!e.log.is_complete&&!ie.value?(n(),N(qe,{key:0,size:"xs"})):(n(),r("span",Ou,m(Xe.value??"—"),1))]),nt.value?(n(),r("div",Vu,m(nt.value),1)):S("",!0),ct.value?(n(),r("div",qu,m(ct.value),1)):S("",!0)]),t("div",Hu,[t("div",Uu,[z(f(cr),{size:11,"stroke-width":2.25}),_[31]||(_[31]=t("span",null,"Cost",-1))]),t("div",Wu,[!e.log.is_complete&&!Ae.value?(n(),N(qe,{key:0,size:"xs"})):(n(),r("span",Ku,m(Ae.value?k(e.log.cost_total):"—"),1))]),bt.value?(n(),r("div",Ju,m(bt.value),1)):S("",!0)]),t("div",Gu,[t("div",Yu,[z(f(fr),{size:11,"stroke-width":2.25}),_[32]||(_[32]=t("span",null,"Context",-1))]),t("div",Qu,[e.log.message_history_length!==null&&e.log.message_history_length!==void 0?(n(),r("span",Xu,m(d(e.log.message_history_length))+" msg ",1)):(n(),r("span",Zu,"—"))]),re.value.length>0?(n(),r("div",ec,m(re.value.length)+" tool"+m(re.value.length===1?"":"s")+" available ",1)):S("",!0)])]),Le.value?(n(),r("div",tc,[t("div",nc,[t("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:_[10]||(_[10]=R=>s("effectClick",Le.value.reference))},[z(f(wt),{size:12,class:"shrink-0"}),_[33]||(_[33]=t("span",null,"via Scheduled Effect",-1))]),Le.value.name?(n(),r("span",ac,m(Le.value.name),1)):S("",!0),Le.value.id?(n(),r("span",rc,m(Le.value.id),1)):S("",!0)])])):S("",!0),Ve.value.length>0?(n(),r("div",sc,[t("div",lc,[z(f(wt),{size:11,class:"shrink-0"}),t("span",null,m(Ve.value.length===1?"Scheduled effect created":`${Ve.value.length} scheduled effects created`),1)]),t("div",oc,[(n(!0),r($e,null,Ne(Ve.value,R=>(n(),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:_e=>s("effectClick",R.reference)},[t("span",dc,[t("span",uc,m(R.name||"scheduled_effect"),1),t("span",cc,m(R.id),1)]),t("span",fc,[R.scheduledAt?(n(),r("span",vc,[_[34]||(_[34]=t("span",{class:"text-neutral-400 dark:text-neutral-500"},"scheduled",-1)),Ge(" "+m(f(It)(R.scheduledAt)),1)])):S("",!0),R.createdAt?(n(),r("span",pc,[_[35]||(_[35]=t("span",{class:"text-neutral-400 dark:text-neutral-500"},"created",-1)),Ge(" "+m(f(It)(R.createdAt)),1)])):S("",!0),R.status?(n(),r("span",gc,[_[36]||(_[36]=t("span",{class:"text-neutral-400 dark:text-neutral-500"},"status",-1)),Ge(" "+m(R.status),1)])):S("",!0)])],8,ic))),128))])])):S("",!0),Te.value.length>0?(n(),r("div",mc,[t("div",hc,[t("div",xc,[t("div",bc,m(Te.value.length>1?`${Te.value.length} errors`:"Error"),1),t("div",yc,m(Te.value[0].type||"error"),1)]),Te.value[0].human?(n(),N(Jn,{key:0,content:Te.value[0].human,variant:"ghost",size:"xs"},null,8,["content"])):S("",!0)]),Te.value[0].human?(n(),r("p",kc,m(Te.value[0].human),1)):S("",!0),Te.value[0].hasMoreDetails?(n(),r("details",wc,[_[37]||(_[37]=t("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)),t("div",_c,[Te.value[0].details.isJson?(n(),N(Ft,{key:0,code:Te.value[0].details.text,language:"json"},null,8,["code"])):(n(),r("pre",$c,m(Te.value[0].details.text),1))])])):S("",!0),Te.value.length>1?(n(),r("div",Cc,[(n(!0),r($e,null,Ne(Te.value.slice(1),(R,_e)=>(n(),r("details",{key:_e,class:"border-b border-red-200 last:border-b-0 dark:border-red-900"},[t("summary",Sc,m(R.type),1),R.human?(n(),r("p",Tc,m(R.human),1)):S("",!0),R.hasMoreDetails?(n(),r("details",Ic,[_[38]||(_[38]=t("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)),t("div",Ac,[R.details.isJson?(n(),N(Ft,{key:0,code:R.details.text,language:"json"},null,8,["code"])):(n(),r("pre",Ec,m(R.details.text),1))])])):S("",!0)]))),128))])):S("",!0)])):S("",!0),t("div",Lc,[t("button",{onClick:_[11]||(_[11]=R=>l.value="request"),type:"button",class:ee(["inline-flex h-7 items-center gap-1.5 rounded px-3 text-sm font-medium transition-colors",l.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"])},[z(f(vr),{size:13,"stroke-width":2.25}),_[39]||(_[39]=t("span",null,"Request",-1))],2),t("button",{onClick:_[12]||(_[12]=R=>l.value="response"),type:"button",class:ee(["inline-flex h-7 items-center gap-1.5 rounded px-3 text-sm font-medium transition-colors",l.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"])},[z(f(pr),{size:13,"stroke-width":2.25}),_[40]||(_[40]=t("span",null,"Response",-1))],2)]),t("div",{ref_key:"tabContentRef",ref:U,class:"space-y-3"},[rt(t("div",Mc,[t("div",Rc,[_[41]||(_[41]=t("span",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"}," View as ",-1)),t("div",Dc,[t("button",{onClick:_[13]||(_[13]=R=>ce.value="standard"),type:"button",class:ee(["border-r border-neutral-200 px-2.5 py-1 text-xs font-medium transition-colors last:border-r-0 dark:border-neutral-800",ce.value==="standard"?"bg-neutral-100 text-neutral-950 dark:bg-neutral-800 dark:text-neutral-50":"bg-white text-neutral-500 hover:bg-neutral-50 hover:text-neutral-900 dark:bg-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800/60 dark:hover:text-neutral-100"])}," Standard Agents ",2),(n(),r($e,null,Ne(Oe,(R,_e)=>t("button",{key:R,onClick:tt=>ce.value=R,type:"button",class:ee(["px-2.5 py-1 text-xs font-medium transition-colors",[_e<Oe.length-1?"border-r border-neutral-200 dark:border-neutral-800":"",ce.value===R?"bg-neutral-100 text-neutral-950 dark:bg-neutral-800 dark:text-neutral-50":"bg-white text-neutral-500 hover:bg-neutral-50 hover:text-neutral-900 dark:bg-neutral-900 dark:text-neutral-400 dark:hover:bg-neutral-800/60 dark:hover:text-neutral-100"]])},m(f(fu)(R)),11,Fc)),64))]),oe.value?(n(),N(qe,{key:0,size:"xs"})):S("",!0),Ie.value?(n(),r("span",Pc,m(Ie.value),1)):S("",!0)]),Qe.value?(n(),r("div",Nc,[_[42]||(_[42]=t("div",{class:"text-xs font-semibold text-amber-800 dark:text-amber-200"}," Vision Input Filtered For This Request ",-1)),t("div",zc," This model does not support image input. Removed "+m(Qe.value.removedUserImageParts)+" user image part(s) and "+m(Qe.value.removedToolImageAttachments)+" tool image attachment(s) before sending the request. Stored thread messages remain unchanged. ",1)])):S("",!0),re.value.length>0?(n(),N(Tt,{key:1,ref_key:"toolsSectionRef",ref:G,title:`Available Tools (${re.value.length})`,"section-id":"tools",expanded:K("tools"),"scroll-container":E.value,"sticky-offset":ae.value,onToggle:_[14]||(_[14]=R=>Z("tools"))},{default:Ee(()=>[(n(!0),r($e,null,Ne(re.value,(R,_e)=>(n(),r("div",{key:_e,class:"border-b border-neutral-200 dark:border-neutral-800 last:border-b-0"},[t("button",{onClick:tt=>Ce(_e),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"},[t("span",Bc,m(R.function?.name||R.name||"Unknown"),1),t("span",Oc,m(o.value.has(_e)?"▼":"▶"),1)],8,jc),rt(t("div",Vc,[R.function?.description||R.description?(n(),r("div",qc,m(R.function?.description||R.description),1)):S("",!0),z(Ft,{code:JSON.stringify(R,null,2),language:"json"},null,8,["code"])],512),[[ht,o.value.has(_e)]])]))),128))]),_:1},8,["title","expanded","scroll-container","sticky-offset"])):S("",!0),e.log.message_history?(n(),N(Tt,{key:2,ref_key:"messagesSectionRef",ref:q,title:`Messages (${e.log.message_history_length||0} messages)`,subtitle:pt.value,"section-id":"messages",expanded:K("messages"),"scroll-container":E.value,"sticky-offset":ae.value,"copy-content":c.value,onToggle:_[15]||(_[15]=R=>Z("messages"))},{default:Ee(()=>[z(Ln,{json:$t.value,"thread-id":e.threadId,actions:xt.value,onAction:st},null,8,["json","thread-id","actions"])]),_:1},8,["title","subtitle","expanded","scroll-container","sticky-offset","copy-content"])):S("",!0),e.log.system_prompt?(n(),N(Tt,{key:3,ref_key:"systemPromptSectionRef",ref:j,title:"System Prompt","section-id":"system_prompt",expanded:K("system_prompt"),"scroll-container":E.value,"sticky-offset":ae.value,"copy-content":e.log.system_prompt,onToggle:_[16]||(_[16]=R=>Z("system_prompt"))},{default:Ee(()=>[t("div",Hc,[z(Ft,{code:e.log.system_prompt,language:"markdown"},null,8,["code"])])]),_:1},8,["expanded","scroll-container","sticky-offset","copy-content"])):S("",!0),e.log.request_body?(n(),N(Tt,{key:4,ref_key:"requestBodySectionRef",ref:J,title:"Full Request Body",subtitle:pt.value,"section-id":"request_body",expanded:K("request_body"),"scroll-container":E.value,"sticky-offset":ae.value,"copy-content":yt.value,onToggle:_[17]||(_[17]=R=>Z("request_body"))},{default:Ee(()=>[z(Ln,{json:yt.value,"thread-id":e.threadId},null,8,["json","thread-id"])]),_:1},8,["subtitle","expanded","scroll-container","sticky-offset","copy-content"])):S("",!0)],512),[[ht,l.value==="request"]]),rt(t("div",Uc,[Me.value.length>0?(n(),N(Tt,{key:0,title:`Tools Called (${Me.value.length})`,"section-id":"tools_called",expanded:K("tools_called"),"scroll-container":E.value,"sticky-offset":ae.value,onToggle:_[18]||(_[18]=R=>Z("tools_called"))},{default:Ee(()=>[t("div",Wc,[(n(!0),r($e,null,Ne(Me.value,R=>(n(),r("div",{key:R.id},[t("button",{onClick:_e=>ne(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"},[t("div",Jc,[t("span",Gc,m(R.name),1),t("span",Yc,m(un(R.id)),1)]),t("div",Qc,[R.isQueued?(n(),r("span",Xc,"queued")):S("",!0),R.isProvider?(n(),N(f(Rt),{key:1,content:"Model tool call from the upstream provider's native response, before AgentBuilder normalization.",position:"top",wide:""},{default:Ee(()=>[..._[43]||(_[43]=[t("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})):S("",!0),R.isProvider&&R.status?(n(),r("span",{key:2,class:ee(["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"])},m(R.status),3)):S("",!0),R.isProvider?S("",!0):(n(),r("span",{key:3,class:ee(["text-[10px] font-medium uppercase tracking-wide",P.value.has(R.id)?"text-emerald-600 dark:text-emerald-400":"text-neutral-400 dark:text-neutral-500"])},m(P.value.has(R.id)?"returned":"no result"),3)),t("span",Zc,m(p.value.has(R.id)?"▼":"▶"),1)])],8,Kc),rt(t("div",e0,[R.isProvider?(n(),r("div",i0,[_[47]||(_[47]=t("div",{class:"mb-1 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},"Provider payload",-1)),z(Ft,{code:f(du)(R),language:"json"},null,8,["code"])])):(n(),r("div",t0,[t("div",n0,[t("div",a0,[_[45]||(_[45]=t("span",null,"Arguments",-1)),R.isQueued&&R.queuedAt?(n(),r("span",r0,[_[44]||(_[44]=Ge(" queued ",-1)),z($n,{timestamp:R.queuedAt},null,8,["timestamp"])])):S("",!0)]),z(Ft,{code:f(ha)(R.function?.arguments||"{}"),language:"json"},null,8,["code"])]),t("div",s0,[_[46]||(_[46]=t("div",{class:"mb-1 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"}," Result ",-1)),P.value.has(R.id)?(n(),r("pre",l0,m(P.value.get(R.id)?.content||"No content"),1)):(n(),r("div",o0," no result captured "))])]))],512),[[ht,p.value.has(R.id)]])]))),128))])]),_:1},8,["title","expanded","scroll-container","sticky-offset"])):S("",!0),ye.value.length>0?(n(),N(Tt,{key:1,title:`Generated Images (${ye.value.length})`,subtitle:"returned by the model","section-id":"generated_images",expanded:K("generated_images"),"scroll-container":E.value,"sticky-offset":ae.value,onToggle:_[19]||(_[19]=R=>Z("generated_images"))},{default:Ee(()=>[t("div",d0,[(n(!0),r($e,null,Ne(ye.value,(R,_e)=>(n(),r("div",{key:_e,class:"relative"},[R.image_url?.url?(n(),r("img",{key:0,src:Fe(R.image_url.url)||R.image_url.url,alt:`Generated image ${_e+1}`,class:"max-w-[300px] max-h-[300px] rounded-md ring-1 ring-neutral-200 object-contain dark:ring-neutral-800"},null,8,u0)):(n(),r("div",c0," No URL "))]))),128))])]),_:1},8,["title","expanded","scroll-container","sticky-offset"])):S("",!0),e.log.reasoning_content?(n(),N(Tt,{key:2,title:"Reasoning Content",subtitle:"internal trace · not shown to users","section-id":"reasoning_content",expanded:K("reasoning_content"),"scroll-container":E.value,"sticky-offset":ae.value,"copy-content":le.value||e.log.reasoning_content,onToggle:_[20]||(_[20]=R=>Z("reasoning_content"))},{default:Ee(()=>[t("pre",f0,m(le.value),1)]),_:1},8,["expanded","scroll-container","sticky-offset","copy-content"])):S("",!0),de.value.length>0?(n(),N(Tt,{key:3,title:`Reasoning Details (${de.value.length} blocks)`,subtitle:"structured trace from provider","section-id":"reasoning_details",expanded:K("reasoning_details"),"scroll-container":E.value,"sticky-offset":ae.value,"copy-content":JSON.stringify(de.value,null,2),onToggle:_[21]||(_[21]=R=>Z("reasoning_details"))},{default:Ee(()=>[t("div",v0,[(n(!0),r($e,null,Ne(de.value,(R,_e)=>(n(),r("div",{key:_e,class:"px-3 py-2"},[t("div",p0,[t("span",g0,m((R.type||"unknown").replace("reasoning.","")),1),R.id?(n(),r("span",m0," id "+m(R.id),1)):S("",!0),R.format?(n(),r("span",h0," · "+m(R.format),1)):S("",!0),R.index!==void 0?(n(),r("span",x0," · index "+m(R.index),1)):S("",!0)]),R.type==="reasoning.summary"&&R.summary?(n(),r("div",b0,m(R.summary),1)):R.type==="reasoning.text"&&R.text?(n(),r($e,{key:1},[t("div",y0,m(R.text),1),R.signature?(n(),r("div",k0,[_[48]||(_[48]=t("div",{class:"mb-0.5 text-[10px] font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"}," Signature ",-1)),t("div",w0,m(R.signature),1)])):S("",!0)],64)):R.type==="reasoning.encrypted"&&R.data?(n(),r("div",_0,m(R.data),1)):(n(),r("pre",$0,m(JSON.stringify(R,null,2)),1))]))),128))])]),_:1},8,["title","expanded","scroll-container","sticky-offset","copy-content"])):S("",!0),e.log.response_body?(n(),N(Tt,{key:4,title:"Full Response Body","section-id":"response_body",expanded:K("response_body"),"scroll-container":E.value,"sticky-offset":ae.value,"copy-content":e.log.response_body,onToggle:_[22]||(_[22]=R=>Z("response_body"))},{default:Ee(()=>[z(Ln,{json:e.log.response_body,"thread-id":e.threadId},null,8,["json","thread-id"])]),_:1},8,["expanded","scroll-container","sticky-offset","copy-content"])):S("",!0)],512),[[ht,l.value==="response"]])],512)],4))}}),E0=dt(A0,[["__scopeId","data-v-689740c2"]]),L0={class:"min-w-full"},M0={key:0,class:"sticky top-0 z-30 border-b border-neutral-300 bg-white dark:border-neutral-700 dark:bg-black"},R0=["disabled"],D0={key:1},F0={key:2},P0={key:3},N0={role:"table",class:"logs-grid w-full text-sm"},z0=["aria-selected","onClick","onKeydown","onMouseenter"],j0={role:"cell",class:"whitespace-nowrap px-3 py-2 text-xs"},B0={class:"flex min-w-0 items-center gap-1 whitespace-nowrap"},O0={key:0,class:"text-neutral-400 dark:text-neutral-600 mr-1"},V0={key:3},q0={role:"cell",class:"whitespace-nowrap px-3 py-2"},H0={class:"flex min-w-0 items-center gap-2 whitespace-nowrap"},U0={key:0,class:"text-red-600 dark:text-red-400",title:"Error"},W0={class:"font-mono text-xs"},K0={role:"cell",class:"whitespace-nowrap px-3 py-2 font-mono text-xs"},J0={key:1},G0={key:1,class:"text-neutral-400"},Y0=["title"],Q0={class:"min-w-0 overflow-hidden text-ellipsis whitespace-nowrap"},X0={key:0,class:"text-emerald-600 dark:text-emerald-400",title:"Programmatically called with state.queueTool()"},Z0={key:1},ef={key:2},tf={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"},nf=We({__name:"LogsTable",props:{logs:{},hasMore:{type:Boolean},isLoadingMore:{type:Boolean},isLoadingForLog:{type:Boolean},detailsOpen:{type:Boolean},selectedLogIdForDetails:{},selectedLogId:{},hoveredLogId:{}},emits:["loadMore","selectLog","navigateLog","logHover","rowRef"],setup(e,{emit:i}){const a=e,s=i,l=x(null),o=x(0);let p=null,h=null;const L=new Map,M=q=>{if(!q)return[];try{const j=JSON.parse(q);return Array.isArray(j)?j:[]}catch{return[]}},w=q=>[...M(q.tools_called).map(j=>({name:j,isProgrammatic:!1})),...M(q.provider_tools).map(j=>({name:j.name||j.type||"provider_tool",isProgrammatic:!1})),...M(q.queued_tools).map(j=>({name:j.function?.name||"unknown",isProgrammatic:!0}))],y=q=>q==null?"—":`$${q.toFixed(6)}`,T=q=>q.map(j=>j.name).join(", "),B=()=>h||(typeof document>"u"?null:(h=document.createElement("canvas").getContext("2d"),h&&(h.font="12px ui-sans-serif, system-ui, sans-serif"),h)),E=q=>{const j=L.get(q);if(j!==void 0)return j;const ve=B()?.measureText(q).width??q.length*7;return L.set(q,ve),ve},H=(q,j)=>{const J=E(T(q)),ve=q.filter(W=>W.isProgrammatic).length*14,ae=j>0?E(`+${j} more`)+18:0,Q=j>0?6:0;return J+ve+ae+Q},U=q=>{const j=T(q);if(q.length<=1)return{tools:q,hiddenCount:0,title:j};const J=o.value-24;if(J<=0)return{tools:q.slice(0,1),hiddenCount:q.length-1,title:j};for(let ve=q.length;ve>0;ve-=1){const ae=q.slice(0,ve),Q=q.length-ve;if(H(ae,Q)<=J)return{tools:ae,hiddenCount:Q,title:j}}return{tools:q.slice(0,1),hiddenCount:q.length-1,title:j}},G=()=>{o.value=l.value?.clientWidth??0};return zt(async()=>{await Be(),G(),typeof ResizeObserver<"u"&&l.value&&(p=new ResizeObserver(G),p.observe(l.value))}),Mt(()=>{p?.disconnect(),p=null}),(q,j)=>(n(),r("div",L0,[e.hasMore?(n(),r("div",M0,[t("button",{onClick:j[0]||(j[0]=J=>s("loadMore")),disabled:e.isLoadingMore||e.isLoadingForLog,type:"button",class:"w-full px-3 py-2 text-xs font-medium text-neutral-700 dark:text-neutral-300 hover:bg-neutral-100 dark:hover:bg-neutral-900 transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2"},[e.isLoadingMore||e.isLoadingForLog?(n(),N(qe,{key:0,size:"xs"})):S("",!0),e.isLoadingForLog?(n(),r("span",D0,"Loading to find log...")):e.isLoadingMore?(n(),r("span",F0,"Loading older logs...")):(n(),r("span",P0,"Load previous logs"))],8,R0)])):S("",!0),t("div",N0,[t("div",{role:"row",class:ee(["logs-grid-row sticky 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",{"top-0":!e.hasMore,"top-[33px]":e.hasMore}])},[j[2]||(j[2]=t("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Prompt ",-1)),j[3]||(j[3]=t("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Model ",-1)),j[4]||(j[4]=t("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Cost ",-1)),t("div",{ref_key:"toolsHeaderRef",ref:l,role:"columnheader",class:"min-w-0 whitespace-nowrap px-3 py-1.5 text-left text-xs font-semibold"}," Tools Called ",512),j[5]||(j[5]=t("div",{role:"columnheader",class:"whitespace-nowrap px-3 py-1.5 text-right text-xs font-semibold"}," Called At ",-1))],2),(n(!0),r($e,null,Ne(e.logs,J=>(n(),r("div",{key:J.id,ref_for:!0,ref:ve=>s("rowRef",J.id,ve),role:"row",tabindex:"0","aria-selected":e.selectedLogIdForDetails===J.id,class:ee(["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":J.error,"logs-row-selected":e.selectedLogIdForDetails===J.id,"agents-surface-selected agents-text-selected agents-border-selected":e.selectedLogIdForDetails===J.id,"agents-surface-hover":e.selectedLogIdForDetails!==J.id&&(J.id===a.selectedLogId||J.id===a.hoveredLogId)}]),onClick:ve=>s("selectLog",J),onKeydown:ve=>s("navigateLog",ve,J),onMouseenter:ve=>s("logHover",J.id),onMouseleave:j[1]||(j[1]=ve=>s("logHover",null))},[t("div",j0,[t("div",B0,[J.depth>0?(n(),r("span",O0,"└─")):S("",!0),J.retry_of_log_id?(n(),N(f(gr),{key:1,size:14,class:"text-neutral-500 dark:text-neutral-400 flex-shrink-0"})):S("",!0),!J.is_complete&&!J.prompt_name?(n(),N(qe,{key:2,size:"xs"})):(n(),r("span",V0,m(J.prompt_name||"—"),1))])]),t("div",q0,[t("div",H0,[J.error?(n(),r("span",U0," ✕ ")):S("",!0),t("span",W0,m(J.model_name||J.model),1)])]),t("div",K0,[!J.is_complete&&(J.cost_total===null||J.cost_total===void 0)?(n(),N(qe,{key:0,size:"xs"})):(n(),r("span",J0,m(y(J.cost_total)),1))]),t("div",{role:"cell",class:ee(["min-w-0 overflow-hidden whitespace-nowrap px-3 py-2 text-xs",e.selectedLogIdForDetails===J.id?"text-neutral-800 dark:text-neutral-100":"text-neutral-600 dark:text-neutral-400"])},[!J.is_complete&&w(J).length===0?(n(),N(qe,{key:0,size:"xs"})):w(J).length===0?(n(),r("span",G0,"—")):(n(),r("span",{key:2,class:"flex min-w-0 items-center gap-1.5",title:U(w(J)).title},[t("span",Q0,[(n(!0),r($e,null,Ne(U(w(J)).tools,(ve,ae)=>(n(),r($e,{key:ae},[ve.isProgrammatic?(n(),r("span",X0,[z(f(mr),{size:11,class:"inline-block -mt-0.5 mr-0.5"}),Ge(m(ve.name),1)])):(n(),r("span",Z0,m(ve.name),1)),ae<U(w(J)).tools.length-1?(n(),r("span",ef,", ")):S("",!0)],64))),128))]),U(w(J)).hiddenCount>0?(n(),r("span",tf," +"+m(U(w(J)).hiddenCount)+" more ",1)):S("",!0)],8,Y0))],2),t("div",{role:"cell",class:ee(["whitespace-nowrap px-3 py-2 text-right text-xs",e.selectedLogIdForDetails===J.id?"text-neutral-800 dark:text-neutral-100":"text-neutral-500 dark:text-neutral-500"])},[z($n,{timestamp:J.created_at},null,8,["timestamp"])],2)],42,z0))),128))])]))}}),af=dt(nf,[["__scopeId","data-v-1f2c77e9"]]),rf={key:0,class:"text-neutral-500 dark:text-neutral-400 text-center py-12"},sf={key:1,class:"flex justify-center py-12"},lf={key:2,class:"text-red-600 dark:text-red-400 text-center py-12"},of={key:3,class:"text-neutral-500 dark:text-neutral-400 text-center py-12"},df={key:0,class:"flex h-full flex-col items-center justify-center gap-3 text-neutral-500 dark:text-neutral-400"},uf={key:2,class:"absolute inset-0 flex items-center justify-center bg-white/20 pointer-events-none dark:bg-black/20"},ya=20,cf=20,ka="agentbuilder.threads.logDetailsSplitPercent",ff=We({__name:"LogsPane",props:{threadId:{},selectedLogId:{},hoveredLogId:{}},emits:["logClick","logHover","logsLoaded","effectClick"],setup(e,{expose:i,emit:a}){const s=e,l=a,o=x(0),p=x(ya),{logs:h,hasMore:L,isFetching:M,error:w,connectWebSocket:y,disconnectWebSocket:T,refetch:B}=Md(A(()=>s.threadId),{limit:A(()=>p.value),offset:A(()=>o.value),enableWebSocket:!0,order:"desc"}),E=x([]),H=x(!0),U=x(null),G=x(null),q=x(!1),j=x(!1),J=x(new Map),Q=x(((F,u,c)=>Math.min(c,Math.max(u,F)))(((F,u)=>{if(typeof window>"u")return u;const c=window.localStorage.getItem(F),C=c?Number.parseFloat(c):Number.NaN;return Number.isFinite(C)?C:u})(ka,55),35,70)),W=async()=>{await Be(),G.value&&(G.value.scrollTop=G.value.scrollHeight)},fe=x(null);he(h,async F=>{if(o.value===0){const u=E.value.length;E.value=[...F].reverse(),H.value&&E.value.length>0?(await W(),H.value=!1):!q.value&&E.value.length>u&&await W()}else{const u=[...F].reverse(),c=new Map;E.value.forEach(C=>c.set(C.id,C)),u.forEach(C=>c.set(C.id,C)),E.value=Array.from(c.values()).sort((C,O)=>C.created_at-O.created_at)}},{deep:!0,immediate:!0}),he(M,(F,u)=>{if(u&&!F&&o.value===0&&s.threadId&&fe.value!==s.threadId&&E.value.length>0){fe.value=s.threadId;const c=E.value[E.value.length-1];l("logsLoaded",c?.id??null)}});const{logDetails:X,isFetching:Re,refetch:Fe}=Rd(A(()=>s.threadId),A(()=>U.value)),re={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,finish_reason:null,error_type:null,cost_input:null,cost_output: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},De=F=>({...re,...F}),P=A(()=>U.value?E.value.find(F=>F.id===U.value)??null:null),de=A(()=>{const F=P.value;return F?X.value?{...X.value,...F}:De(F):null});he(()=>({id:P.value?.id??null,isComplete:P.value?.is_complete??!1}),(F,u)=>{!F.id||!F.isComplete||u?.id!==F.id||u.isComplete||Fe()});const le=x(null);he(de,F=>{F?le.value=F:U.value||(le.value=null)},{immediate:!0});const ye=A(()=>U.value?V.value.findIndex(F=>F.id===U.value):-1),me=A(()=>ye.value>0),pe=A(()=>ye.value>=0&&ye.value<V.value.length-1),Me=()=>{if(me.value){const F=V.value[ye.value-1];xe(F)}},Ce=()=>{if(pe.value){const F=V.value[ye.value+1];xe(F)}},ne=async F=>{await Be(),J.value.get(F)?.focus({preventScroll:!0})},Z=(F,u)=>{const c=V.value.findIndex(Y=>Y.id===u.id);if(c<0)return;let C=c;if(F.key==="ArrowDown")C=Math.min(V.value.length-1,c+1);else if(F.key==="ArrowUp")C=Math.max(0,c-1);else if(F.key==="Home")C=0;else if(F.key==="End")C=V.value.length-1;else return;F.preventDefault();const O=V.value[C];O&&(xe(O),ne(O.id))},K=F=>{if(!G.value)return;const u=J.value.get(F);if(!u)return;const c=G.value,C=u.getBoundingClientRect(),O=c.getBoundingClientRect(),Y=c.querySelectorAll(".sticky");let Le=0;Y.forEach(Je=>{Le+=Je.getBoundingClientRect().height}),Le+=16;const Ve=C.top<O.top+Le,Ke=C.bottom>O.bottom;Ve?c.scrollBy({top:C.top-O.top-Le,behavior:"smooth"}):Ke&&c.scrollBy({top:C.bottom-O.bottom,behavior:"smooth"})},xe=F=>{l("logClick",F.id),U.value=F.id},ue=(F,u)=>{u?J.value.set(F,u):J.value.delete(F)},Se=(F,u)=>{ue(F,u instanceof HTMLElement?u:null)};he(U,async F=>{F&&(await Be(),K(F))}),he(()=>s.selectedLogId,F=>{F&&(U.value=F)},{immediate:!0});const Ue=F=>{U.value=F},D=async F=>{await Be();const u=J.value.get(F);if(u&&G.value){const c=G.value,C=u.getBoundingClientRect(),O=c.getBoundingClientRect(),Y=c.querySelector("thead"),Le=c.querySelector(":scope > div > div.sticky");let Ve=0;Y&&(Ve+=Y.getBoundingClientRect().height),Le&&(Ve+=Le.getBoundingClientRect().height),Ve+=40;const Ke=C.top<O.top+Ve,Je=C.bottom>O.bottom;Ke?c.scrollBy({top:C.top-O.top-Ve,behavior:"smooth"}):Je&&c.scrollBy({top:C.bottom-O.bottom,behavior:"smooth"})}},be=F=>{if(F.length===0)return;const u=new Set(F);E.value=E.value.filter(c=>!u.has(c.id))},se=x(!1),we=F=>E.value.some(u=>u.id===F),Te=F=>E.value.find(u=>u.id===F)??null,ce=(F,u=3e3)=>new Promise(c=>{const C=he(()=>E.value.length,Y=>{Y!==F&&(clearTimeout(O),C(),c(!0))}),O=setTimeout(()=>{C(),c(!1)},u)});i({scrollToLog:D,selectLogById:Ue,removeLogsByIds:be,loadUntilLogId:async F=>{if(we(F))return!0;if(!L.value)return!1;se.value=!0;const u=100,c=50,C=p.value;try{let O=0;for(;L.value&&!we(F)&&O<c;){O++;const Y=E.value.length;if(o.value+=p.value,p.value=u,await B(),!await ce(Y))break}return we(F)}finally{p.value=C,o.value=Math.max(0,E.value.length-C),se.value=!1}},hasLog:we,getLog:Te,setLoadingForLog:F=>{se.value=F},waitForLogRow:async(F,u=2e3)=>{const c=Date.now();for(;Date.now()-c<u;){if(J.value.has(F))return!0;if(!V.value.some(O=>O.id===F)){await Be(),await new Promise(O=>setTimeout(O,16));continue}await Be(),await new Promise(O=>setTimeout(O,16))}return!1}});const je=async()=>{if(j.value||!L.value||M.value)return;j.value=!0;const F=G.value?.scrollHeight||0;if(o.value+=p.value,p.value=cf,await B(),await Be(),G.value){const u=G.value.scrollHeight;G.value.scrollTop+=u-F}j.value=!1};he(()=>s.threadId,async F=>{F?(T(),y()):T(),o.value=0,p.value=ya,E.value=[],U.value=null,q.value=!1,H.value=!0},{immediate:!0});const Oe=()=>{if(!G.value)return;const{scrollTop:F,scrollHeight:u,clientHeight:c}=G.value,C=u-F-c<50;q.value=!C},V=A(()=>{const F=new Map,u=new Map;E.value.forEach(O=>{F.set(O.id,O);const Y=O.parent_log_id;Y&&(u.has(Y)||u.set(Y,[]),u.get(Y).push(O))});const c=[],C=(O,Y)=>{c.push({...O,depth:Y}),(u.get(O.id)||[]).forEach(Ve=>{C(Ve,Y+1)})};return E.value.forEach(O=>{O.parent_log_id||C(O,0)}),c});return(F,u)=>(n(),N(Tn,{"height-percent":Q.value,"onUpdate:heightPercent":u[3]||(u[3]=c=>Q.value=c),"storage-key":ka,title:"Resize logs and details"},Ot({main:Ee(()=>[t("div",{ref_key:"logsScrollContainer",ref:G,class:"logs-list-container h-full overflow-y-auto overflow-x-auto",onScroll:Oe},[e.threadId?f(M)&&o.value===0?(n(),r("div",sf,[z(qe)])):f(w)?(n(),r("div",lf," Error loading logs: "+m(f(w)),1)):E.value.length===0?(n(),r("div",of," No logs yet ")):(n(),N(af,{key:4,logs:V.value,"has-more":f(L),"is-loading-more":j.value,"is-loading-for-log":se.value,"details-open":!!de.value,"selected-log-id-for-details":U.value,"selected-log-id":s.selectedLogId,"hovered-log-id":s.hoveredLogId,onLoadMore:je,onSelectLog:xe,onNavigateLog:Z,onLogHover:u[0]||(u[0]=c=>l("logHover",c)),onRowRef:Se},null,8,["logs","has-more","is-loading-more","is-loading-for-log","details-open","selected-log-id-for-details","selected-log-id","hovered-log-id"])):(n(),r("div",rf," Select a thread to view logs "))],544)]),_:2},[le.value||se.value&&U.value?{name:"detail",fn:Ee(()=>[se.value&&!de.value?(n(),r("div",df,[z(qe),u[4]||(u[4]=t("span",{class:"text-sm"},"Loading log...",-1))])):le.value?(n(),N(E0,{key:1,log:le.value,"thread-id":e.threadId,"has-previous":me.value,"has-next":pe.value,onClose:u[1]||(u[1]=c=>U.value=null),onPrevious:Me,onNext:Ce,onEffectClick:u[2]||(u[2]=c=>l("effectClick",c))},null,8,["log","thread-id","has-previous","has-next"])):S("",!0),f(Re)&&le.value?(n(),r("div",uf,[z(qe)])):S("",!0)]),key:"0"}:void 0]),1032,["height-percent"]))}}),vf=dt(ff,[["__scopeId","data-v-22adb928"]]),pf={class:"code-editor flex min-h-0 flex-col"},gf={key:0,class:"mt-1 text-sm text-red-500"},mf=We({__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:i}){self.MonacoEnvironment={getWorker(j,J){return J==="json"?new Ur:J==="css"||J==="scss"||J==="less"?new Wr:J==="html"||J==="handlebars"||J==="razor"?new Kr:J==="typescript"||J==="javascript"?new Jr:new Gr}};const a=e,s=i,l={bash:"shell",js:"javascript",md:"markdown",sh:"shell",text:"plaintext",ts:"typescript",txt:"plaintext"},o=x(null);let p=null,h=null,L=!1,M=!1;const w=A(()=>{const j=a.language?.trim().toLowerCase()||"plaintext";return l[j]??j}),y=A(()=>a.height?a.height:a.rows?`${a.rows*1.5}rem`:"100%"),T=()=>document.documentElement.classList.contains("dark"),B=()=>{M||(M=!0,Zt.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"}}),Zt.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"}}))},E=()=>T()?"agentbuilder-dark":"agentbuilder-light",H=()=>({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}),U=()=>{p&&Zt.setTheme(E())},G=()=>{if(!(!p||a.readonly||w.value!=="json"))try{const j=p.getValue(),J=JSON.stringify(JSON.parse(j),null,2);J!==j&&(L=!0,p.setValue(J),s("update:modelValue",J),L=!1)}catch{}},q=()=>{o.value&&(B(),p=Zt.create(o.value,{value:a.modelValue||"",language:w.value,theme:E(),...H()}),o.value.__monacoEditor=p,p.onDidChangeModelContent(()=>{!L&&p&&s("update:modelValue",p.getValue())}),p.onDidBlurEditorText(()=>{s("blur"),a.formatOnBlur&&G()}))};return zt(async()=>{await Be(),q(),h=new MutationObserver(U),h.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]})}),Ht(()=>{h?.disconnect(),h=null,o.value&&delete o.value.__monacoEditor,p?.dispose(),p=null}),he(()=>a.modelValue,j=>{p&&p.getValue()!==j&&(L=!0,p.setValue(j||""),L=!1)}),he(w,j=>{const J=p?.getModel();J&&Zt.setModelLanguage(J,j)}),he(()=>[a.readonly,a.minimap,a.lineNumbers,a.wordWrap,a.placeholder,a.framed],()=>{p?.updateOptions(H())}),(j,J)=>(n(),r("div",pf,[t("div",{class:ee(["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:vt({height:y.value})},[t("div",{ref_key:"containerRef",ref:o,class:"monaco-editor-container h-full w-full"},null,512)],6),e.error?(n(),r("div",gf,m(e.error),1)):S("",!0)]))}}),Qn=dt(mf,[["__scopeId","data-v-12a765de"]]),hf={class:"h-full min-h-0 overflow-hidden"},xf={class:"flex h-full min-h-0 flex-col overflow-hidden"},bf={class:"flex items-center gap-2 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},yf={class:"flex min-w-0 flex-1 items-center gap-2"},kf={class:"hidden shrink-0 text-xs tabular-nums text-neutral-500 sm:block"},wf=["disabled"],_f={class:"min-h-0 flex-1 overflow-auto"},$f={key:0,class:"py-12 text-center text-sm text-neutral-500"},Cf={key:1,class:"flex justify-center py-12"},Sf={key:2,class:"py-12 text-center text-sm text-red-600 dark:text-red-400"},Tf={key:3,class:"py-12 text-center text-sm text-neutral-500"},If={key:4,class:"flex h-full min-h-0 flex-col"},Af={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"},Ef={class:"min-h-0 flex-1 overflow-auto bg-white dark:bg-neutral-950"},Lf={class:"w-full min-w-[70rem] table-fixed text-left text-xs"},Mf={class:"divide-y divide-neutral-100 dark:divide-neutral-900"},Rf={key:0,class:"text-[10px] font-semibold uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},Df={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"},Ff={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"},Pf=["aria-selected","onClick","onKeydown"],Nf={class:"whitespace-nowrap px-4 py-2 align-middle"},zf={class:"flex items-center gap-1.5"},jf=["disabled","title","aria-label","onClick"],Bf=["disabled","title","aria-label","onClick"],Of={key:2,class:"px-2 text-neutral-300 dark:text-neutral-700"},Vf={class:"whitespace-nowrap px-4 py-2 align-middle"},qf={class:"min-w-0 px-3 py-2 align-middle"},Hf={class:"truncate font-mono text-xs text-neutral-950 dark:text-neutral-100"},Uf=["title"],Wf={key:0,class:"mt-0.5 truncate text-[11px] font-medium text-neutral-500 dark:text-neutral-400"},Kf={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"},Jf={class:"truncate"},Gf={class:"whitespace-nowrap px-3 py-2 align-middle text-xs text-neutral-500 dark:text-neutral-400"},Yf={class:"whitespace-nowrap px-3 py-2 align-middle"},Qf={class:"text-xs font-medium text-neutral-800 dark:text-neutral-100"},Xf={key:0,class:"text-[11px] text-neutral-400"},Zf={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 text-right align-middle text-xs tabular-nums text-neutral-500"},tv={class:"min-w-0 px-4 py-2 align-middle"},nv=["title"],av={key:0,class:"mt-0.5 truncate text-[11px] text-red-600 dark:text-red-400"},rv=["disabled"],sv={class:"flex h-full min-h-0 flex-col overflow-hidden"},lv={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"},iv={class:"truncate font-mono text-sm font-medium text-neutral-950 dark:text-neutral-100"},dv={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"},cv={class:"flex shrink-0 items-center gap-2"},fv=["disabled","title","aria-label"],vv=["disabled","title","aria-label"],pv={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"},mv={class:"mt-0.5 text-neutral-900 dark:text-neutral-100"},hv={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"},bv={class:"mt-0.5"},yv={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"},kv={key:1,class:"text-neutral-900 dark:text-neutral-100"},wv={key:0,class:"mt-0.5 text-[11px] text-neutral-500 dark:text-neutral-400"},_v={key:0},$v={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"},Cv={class:"truncate font-mono"},Sv={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"},Tv={class:"flex min-h-0 flex-1 flex-col overflow-hidden"},Iv={class:"flex items-start gap-2"},Av={class:"min-w-0"},Ev={class:"font-medium text-neutral-950 dark:text-neutral-100"},Lv={class:"mt-1 text-neutral-500 dark:text-neutral-400"},Mv={class:"mt-1 truncate text-neutral-500 dark:text-neutral-400"},Rv={class:"font-mono text-neutral-700 dark:text-neutral-200"},Dv={class:"mt-1 truncate font-mono text-[11px] text-neutral-400"},Fv={class:"mt-3 flex justify-end gap-2"},wa=100,Pv=2500,Nv="agentbuilder.threads.effectDetailSplitPercent",zv=260,jv=We({__name:"ThreadEffectsPane",props:{threadId:{},active:{type:Boolean,default:!0},selectedEffectId:{},selectedEffectRef:{}},emits:["count-changed"],setup(e,{expose:i,emit:a}){const s=e,l=a,o=x([]),p=x(0),h=x(0),L=x(!1),M=x(!1),w=x(null),y=x(null),T=x(Date.now()),B=x(null),E=x(50),H=x(new Map),U=x(null),G=x(null),q=x(null),j=x("run"),J=x(null),ve=x(null);let ae=null,Q=!1,W=0;const fe=A(()=>o.value.length<p.value),X=A(()=>o.value.filter(Kt)),Re=A(()=>o.value.filter(d=>!Kt(d))),Fe=A(()=>{const d=[];return X.value.length>0&&(d.push({type:"section",key:"section-upcoming",label:"Upcoming",count:X.value.length}),d.push(...X.value.map(v=>({type:"effect",key:v.id,effect:v})))),Re.value.length>0&&(d.push({type:"section",key:"section-history",label:"History",count:Re.value.length}),d.push(...Re.value.map(v=>({type:"effect",key:v.id,effect:v})))),d}),re=A(()=>B.value?o.value.find(d=>d.id===B.value)??null:null),De=A(()=>q.value?o.value.find(d=>d.id===q.value)??null:null),P=A(()=>ve.value?{top:`${ve.value.top}px`,left:`${ve.value.left}px`}:{}),de=A(()=>!!re.value),le=A(()=>re.value?ga(re.value.args):"{}"),ye=A(()=>{if(!s.threadId)return"";if(p.value===0)return"No effects";const d=Math.max(p.value-h.value,Re.value.length);return`${h.value} upcoming | ${d} history | ${o.value.length} of ${p.value}`});function me(){return!!s.threadId&&s.active!==!1&&!L.value&&!M.value&&!Q&&(typeof document>"u"||document.visibilityState==="visible")}function pe(d){const v=d?o.value.find(k=>k.id===d):null;if(v){B.value=v.id;return}if(d){B.value=d;return}B.value&&o.value.some(k=>k.id===B.value)||(B.value=o.value[0]?.id??null)}function Me(d){B.value=d.id}function Ce(d,v){v instanceof HTMLElement?H.value.set(d,v):H.value.delete(d)}async function ne(d){await Be(),H.value.get(d)?.focus({preventScroll:!0})}async function Z(d){await Be();const v=H.value.get(d);v?.scrollIntoView({block:"nearest"}),v?.focus({preventScroll:!0})}async function K(d){B.value=d,pe(d),await Z(d)}async function xe(d){if(d.id){await K(d.id);return}const v=o.value.find(k=>ma(k,d));v&&await K(v.id)}function ue(d){if(d.id)return pe(d.id),!0;const v=o.value.find(k=>ma(k,d));return v?(pe(v.id),!0):!1}function Se(d,v){const k=o.value.findIndex(Xe=>Xe.id===v.id);if(k<0)return;let ie=k;if(d.key==="ArrowDown")ie=Math.min(o.value.length-1,k+1);else if(d.key==="ArrowUp")ie=Math.max(0,k-1);else if(d.key==="Home")ie=0;else if(d.key==="End")ie=o.value.length-1;else return;d.preventDefault();const Ae=o.value[ie];Ae&&(Me(Ae),ne(Ae.id))}function Ue(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 D(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 be(d){return Kt(d)?Qd(d.scheduledAt,T.value):It(d.scheduledAt)}function se(d){return Kt(d)?It(d.scheduledAt):""}function we(d){return d.status==="pending"?"Not run":d.status==="processing"?"Running":ce(d)?"-":It(d.completedAt)}function Te(d){return d.split("-")[0]||d}function ce(d){return d.status==="agent_canceled"||d.status==="user_canceled"}function ge(d){return d.status==="agent_canceled"?"agent cancelled":d.status==="user_canceled"?"user cancelled":""}function oe(d){return d.replayedFrom?"Manual rerun":d.manualRun?"Manual run":""}function Ie(d){return d.replayedFrom?`Manual rerun of ${Te(d.replayedFrom)}`:d.manualRun?"Manual run":""}function je(d){return ce(d)?"":Yd(d)}function Oe(d){const v=je(d);return v.startsWith("-")?"text-sky-700 dark:text-sky-300":v.startsWith("+")?"text-orange-700 dark:text-orange-300":"text-neutral-500 dark:text-neutral-400"}function V(d){return d.status==="pending"?(d.scheduledAt>9999999999?Math.floor(d.scheduledAt/1e3):d.scheduledAt)<=T.value?"Complete overdue effect":"Run scheduled effect now":d.status==="completed"||d.status==="failed"||ce(d)?"Replay effect":"Effect is running"}function F(d){return d.status==="pending"?(d.scheduledAt>9999999999?Math.floor(d.scheduledAt/1e3):d.scheduledAt)<=T.value?"Complete":"Run now":d.status==="completed"||d.status==="failed"||ce(d)?"Replay":"Run"}function u(d){return d.status==="pending"||d.status==="completed"||d.status==="failed"||ce(d)}function c(d){return d.status==="pending"}function C(d){return c(d)?"Cancel scheduled effect":"Effect cannot be cancelled"}function O(d){return j.value==="cancel"?C(d):V(d)}function Y(d){return j.value==="cancel"?"Cancel effect":F(d)}function Le(d){return j.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 Ve(d,v){return q.value===d.id&&j.value===v}function Ke(d){const v=d.getBoundingClientRect(),k=8,ie=Math.min(Math.max(v.right+k,k),Math.max(k,window.innerWidth-zv-k)),Ae=Math.min(Math.max(v.top-k,k),Math.max(k,window.innerHeight-160));ve.value={top:Ae,left:ie}}function Je(d,v,k="run"){if(!(k==="cancel"?c(d):u(d))||U.value)return;const Ae=v.currentTarget;Ae instanceof HTMLElement&&(Ye(),q.value=d.id,j.value=k,Ke(Ae),document.addEventListener("pointerdown",$t),document.addEventListener("keydown",xt),window.addEventListener("resize",Ye),window.addEventListener("scroll",Ye,!0))}function Ye(){q.value=null,j.value="run",ve.value=null,document.removeEventListener("pointerdown",$t),document.removeEventListener("keydown",xt),window.removeEventListener("resize",Ye),window.removeEventListener("scroll",Ye,!0)}function $t(d){const v=d.target;v instanceof Node&&(J.value?.contains(v)||Ye())}function xt(d){d.key==="Escape"&&Ye()}async function st(d){if(!(!s.threadId||!u(d)||U.value)){Ye(),w.value=null,U.value=d.id,G.value="run";try{const v=await fetch(He(`/api/threads/${s.threadId}/effects/${d.id}/run`),{method:"POST"});if(!v.ok)throw new Error(await pt(v,"Failed to run effect"));await Qe()}catch(v){w.value=v instanceof Error?v.message:"Failed to run effect",await Qe({quiet:!0})}finally{U.value=null,G.value=null}}}async function Ct(d){if(!(!s.threadId||!c(d)||U.value)){Ye(),w.value=null,U.value=d.id,G.value="cancel";try{const v=await fetch(He(`/api/threads/${s.threadId}/effects/${d.id}/cancel`),{method:"POST"});if(!v.ok)throw new Error(await pt(v,"Failed to cancel effect"));await Qe()}catch(v){w.value=v instanceof Error?v.message:"Failed to cancel effect",await Qe({quiet:!0})}finally{U.value=null,G.value=null}}}async function yt(d){if(j.value==="cancel"){await Ct(d);return}await st(d)}async function pt(d,v){try{const k=await d.json();return typeof k.error=="string"?k.error:v}catch{return v}}async function Qe(d={}){if(!s.threadId){o.value=[],p.value=0,h.value=0,B.value=null;return}const v=++W,k=d.append===!0,ie=d.quiet===!0;ie&&(Q=!0),ie||(k?M.value=!0:L.value=!0),ie||(y.value=null),ie||(w.value=null);const Ae=new URLSearchParams,Xe=Math.min(Math.max(o.value.length,wa),200);Ae.set("limit",String(k?wa:Xe)),Ae.set("offset",String(k?o.value.length:0));try{const nt=await fetch(He(`/api/threads/${s.threadId}/effects?${Ae}`));if(!nt.ok)throw new Error(await pt(nt,"Failed to load effects"));const ct=Jd(await nt.json());if(v!==W)return;o.value=eu(k?[...o.value,...ct.effects]:ct.effects),p.value=ct.total,h.value=ct.upcomingCount,T.value=Date.now(),s.selectedEffectRef?!ie&&s.active!==!1?await xe(s.selectedEffectRef):ue(s.selectedEffectRef):pe(s.selectedEffectId||B.value)}catch(nt){v===W&&(!ie||o.value.length===0)&&(y.value=nt instanceof Error?nt.message:"Failed to load effects")}finally{ie&&(Q=!1),v===W&&!ie&&(L.value=!1,M.value=!1)}}const ut=()=>{me()&&Qe({quiet:!0})};return he(()=>s.threadId,()=>{o.value=[],p.value=0,h.value=0,B.value=null,y.value=null,w.value=null,Ye(),Qe()},{immediate:!0}),he(()=>s.selectedEffectId,d=>{d&&K(d)}),he(()=>s.selectedEffectRef,d=>{d&&xe(d)}),he(h,d=>l("count-changed",d),{immediate:!0}),he(()=>s.threadId,()=>{ae&&clearInterval(ae),ae=null,s.threadId&&(ae=setInterval(()=>{s.active!==!1&&(T.value=Date.now(),me()&&Qe({quiet:!0}))},Pv))},{immediate:!0}),he(()=>s.active,d=>{if(!d){Ye();return}me()&&Qe({quiet:o.value.length>0})}),typeof document<"u"&&document.addEventListener("visibilitychange",ut),Mt(()=>{ae&&clearInterval(ae),Ye(),typeof document<"u"&&document.removeEventListener("visibilitychange",ut)}),i({selectEffectById:K,selectEffectByReference:xe}),(d,v)=>(n(),r("div",hf,[z(Tn,{"height-percent":E.value,"onUpdate:heightPercent":v[4]||(v[4]=k=>E.value=k),"storage-key":Nv,title:"Resize effects browser and detail"},Ot({main:Ee(()=>[t("div",xf,[t("div",bf,[t("div",yf,[z(f(wt),{size:15,class:"shrink-0 text-neutral-400"}),v[7]||(v[7]=t("div",{class:"truncate text-sm font-medium text-neutral-900 dark:text-neutral-100"}," Effects ",-1))]),t("div",kf,m(ye.value),1),t("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||L.value,title:"Refresh effects","aria-label":"Refresh effects",onClick:v[0]||(v[0]=k=>Qe())},[L.value?(n(),N(qe,{key:0,size:"xs"})):(n(),N(f(Wn),{key:1,size:15}))],8,wf)]),t("div",_f,[e.threadId?L.value&&o.value.length===0?(n(),r("div",Cf,[z(qe)])):y.value?(n(),r("div",Sf,m(y.value),1)):o.value.length===0?(n(),r("div",Tf,[z(f(wt),{class:"mx-auto mb-2 h-8 w-8 opacity-40"}),v[8]||(v[8]=Ge(" No effects scheduled or completed ",-1))])):(n(),r("div",If,[w.value?(n(),r("div",Af,m(w.value),1)):S("",!0),t("div",Ef,[t("table",Lf,[v[9]||(v[9]=t("colgroup",null,[t("col",{class:"w-24"}),t("col",{class:"w-28"}),t("col",{class:"w-56"}),t("col",{class:"w-36"}),t("col",{class:"w-40"}),t("col",{class:"w-36"}),t("col",{class:"w-20"}),t("col")],-1)),v[10]||(v[10]=t("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"},[t("tr",null,[t("th",{scope:"col",class:"px-4 py-2 font-medium"}," Actions "),t("th",{scope:"col",class:"px-4 py-2 font-medium"},"Status"),t("th",{scope:"col",class:"px-3 py-2 font-medium"},"Effect"),t("th",{scope:"col",class:"px-3 py-2 font-medium"},"Created"),t("th",{scope:"col",class:"px-3 py-2 font-medium"}," Scheduled "),t("th",{scope:"col",class:"px-3 py-2 font-medium"}," Completed "),t("th",{scope:"col",class:"px-3 py-2 text-right font-medium"}," Attempts "),t("th",{scope:"col",class:"px-4 py-2 font-medium"}," Arguments ")])],-1)),t("tbody",Mf,[(n(!0),r($e,null,Ne(Fe.value,k=>(n(),r($e,{key:k.key},[k.type==="section"?(n(),r("tr",Rf,[t("th",Df,[t("span",null,m(k.label),1),t("span",Ff,m(k.count),1)])])):(n(),r("tr",{key:1,ref_for:!0,ref:ie=>Ce(k.effect.id,ie),tabindex:"0","aria-selected":B.value===k.effect.id,class:ee(["cursor-pointer transition-colors focus:outline-none",B.value===k.effect.id?"agents-surface-selected":"hover:bg-neutral-50 dark:hover:bg-neutral-900"]),onClick:ie=>Me(k.effect),onKeydown:[Nt(ze(ie=>Me(k.effect),["prevent"]),["enter"]),Nt(ze(ie=>Me(k.effect),["prevent"]),["space"]),ie=>Se(ie,k.effect)]},[t("td",Nf,[t("div",zf,[u(k.effect)?(n(),r("button",{key:0,type:"button",class:ee(["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":Ve(k.effect,"run")}]),disabled:!u(k.effect)||!!U.value,title:V(k.effect),"aria-label":V(k.effect),onClick:ze(ie=>Je(k.effect,ie,"run"),["stop"])},[U.value===k.effect.id&&G.value==="run"?(n(),N(qe,{key:0,size:"xs"})):k.effect.status==="completed"||k.effect.status==="failed"||ce(k.effect)?(n(),N(f(Xt),{key:1,size:14})):(n(),N(f(Bn),{key:2,size:14}))],10,jf)):S("",!0),c(k.effect)?(n(),r("button",{key:1,type:"button",class:ee(["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":Ve(k.effect,"cancel")}]),disabled:!!U.value,title:C(k.effect),"aria-label":C(k.effect),onClick:ze(ie=>Je(k.effect,ie,"cancel"),["stop"])},[U.value===k.effect.id&&G.value==="cancel"?(n(),N(qe,{key:0,size:"xs"})):(n(),N(f(Et),{key:1,size:14}))],10,Bf)):S("",!0),!u(k.effect)&&!c(k.effect)?(n(),r("span",Of," - ")):S("",!0)])]),t("td",Vf,[t("span",{class:ee(["inline-flex rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",D(k.effect.status)])},m(Ue(k.effect.status)),3)]),t("td",qf,[t("div",Hf,m(k.effect.name),1),t("div",{class:"truncate text-[11px] text-neutral-400",title:k.effect.id},m(Te(k.effect.id)),9,Uf),ge(k.effect)?(n(),r("div",Wf,m(ge(k.effect)),1)):S("",!0),Ie(k.effect)?(n(),r("div",Kf,[k.effect.replayedFrom?(n(),N(f(Xt),{key:0,size:10,class:"shrink-0"})):(n(),N(f(wt),{key:1,size:10,class:"shrink-0"})),t("span",Jf,m(Ie(k.effect)),1)])):S("",!0)]),t("td",Gf,m(f(It)(k.effect.createdAt)),1),t("td",Yf,[t("div",Qf,m(be(k.effect)),1),se(k.effect)?(n(),r("div",Xf,m(se(k.effect)),1)):S("",!0)]),t("td",Zf,[t("div",null,m(we(k.effect)),1),je(k.effect)?(n(),r("div",{key:0,class:ee(["mt-0.5 text-[11px] font-medium",Oe(k.effect)])},m(je(k.effect)),3)):S("",!0)]),t("td",ev,m(k.effect.attempts),1),t("td",tv,[t("div",{class:"truncate font-mono text-[11px] text-neutral-500 dark:text-neutral-400",title:f(ga)(k.effect.args)},m(f(Xd)(k.effect.args)),9,nv),k.effect.error?(n(),r("div",av,m(k.effect.error),1)):S("",!0)])],42,Pf))],64))),128))])])]),fe.value?(n(),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:M.value,onClick:v[1]||(v[1]=k=>Qe({append:!0}))},[M.value?(n(),N(qe,{key:0,size:"xs"})):S("",!0),v[11]||(v[11]=t("span",null,"Load more",-1))],8,rv)):S("",!0)])):(n(),r("div",$f," Select a thread to view effects "))])])]),_:2},[de.value&&re.value?{name:"detail",fn:Ee(()=>[t("div",sv,[t("div",lv,[z(f(wt),{size:15,class:"shrink-0 text-neutral-400"}),t("div",ov,[t("div",iv,m(re.value.name),1),t("div",dv,m(re.value.id),1),ge(re.value)?(n(),r("div",uv,m(ge(re.value)),1)):S("",!0)]),t("span",{class:ee(["shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",D(re.value.status)])},m(Ue(re.value.status)),3),t("div",cv,[u(re.value)?(n(),r("button",{key:0,type:"button",class:ee(["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":Ve(re.value,"run")}]),disabled:!u(re.value)||!!U.value,title:V(re.value),"aria-label":V(re.value),onClick:v[2]||(v[2]=ze(k=>Je(re.value,k,"run"),["stop"]))},[U.value===re.value.id&&G.value==="run"?(n(),N(qe,{key:0,size:"xs"})):re.value.status==="completed"||re.value.status==="failed"||ce(re.value)?(n(),N(f(Xt),{key:1,size:14})):(n(),N(f(Bn),{key:2,size:14})),t("span",null,m(F(re.value)),1)],10,fv)):S("",!0),c(re.value)?(n(),r("button",{key:1,type:"button",class:ee(["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":Ve(re.value,"cancel")}]),disabled:!!U.value,title:C(re.value),"aria-label":C(re.value),onClick:v[3]||(v[3]=ze(k=>Je(re.value,k,"cancel"),["stop"]))},[U.value===re.value.id&&G.value==="cancel"?(n(),N(qe,{key:0,size:"xs"})):(n(),N(f(Et),{key:1,size:14})),v[12]||(v[12]=t("span",null,"Cancel",-1))],10,vv)):S("",!0)])]),t("div",pv,[t("div",null,[v[13]||(v[13]=t("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Created ",-1)),t("div",gv,m(f(It)(re.value.createdAt)),1)]),t("div",null,[v[14]||(v[14]=t("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Scheduled ",-1)),t("div",mv,m(f(It)(re.value.scheduledAt)),1)]),t("div",null,[v[15]||(v[15]=t("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Completed ",-1)),t("div",hv,m(we(re.value)),1),je(re.value)?(n(),r("div",{key:0,class:ee(["mt-0.5 text-[11px] font-medium",Oe(re.value)])},m(je(re.value)),3)):S("",!0)]),t("div",null,[v[16]||(v[16]=t("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Attempts ",-1)),t("div",xv,m(re.value.attempts),1)]),t("div",null,[v[17]||(v[17]=t("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Source ",-1)),t("div",bv,[oe(re.value)?(n(),r("span",yv,[re.value.replayedFrom?(n(),N(f(Xt),{key:0,size:10,class:"shrink-0"})):(n(),N(f(wt),{key:1,size:10,class:"shrink-0"})),Ge(" "+m(oe(re.value)),1)])):(n(),r("span",kv,"Automatic"))]),re.value.manualRunAt?(n(),r("div",wv,m(f(It)(re.value.manualRunAt)),1)):S("",!0)]),re.value.replayedFrom?(n(),r("div",_v,[v[18]||(v[18]=t("div",{class:"text-[10px] font-medium uppercase tracking-wide text-neutral-500"}," Rerun Of ",-1)),t("div",$v,[z(f(Xt),{size:10,class:"shrink-0"}),t("span",Cv,m(re.value.replayedFrom),1)])])):S("",!0)]),re.value.error?(n(),r("div",Sv,m(re.value.error),1)):S("",!0),t("div",Tv,[v[19]||(v[19]=t("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)),z(Qn,{"model-value":le.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"]),(n(),N(hr,{to:"body"},[e.active&&De.value&&ve.value?(n(),r("div",{key:0,ref_key:"actionPopoverRef",ref:J,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:vt(P.value),onClick:v[6]||(v[6]=ze(()=>{},["stop"]))},[t("div",Iv,[j.value==="cancel"?(n(),N(f(Et),{key:0,size:14,class:"mt-0.5 shrink-0 text-red-600 dark:text-red-300"})):(n(),N(f(wt),{key:1,size:14,class:"mt-0.5 shrink-0 text-amber-600 dark:text-amber-300"})),t("div",Av,[t("div",Ev,m(O(De.value)),1),t("div",Lv,m(Le(De.value)),1),t("div",Mv,[t("span",Rv,m(De.value.name),1)]),t("div",Dv,m(De.value.id),1)])]),t("div",Fv,[t("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:Ye},m(j.value==="cancel"?"Keep scheduled":"Cancel"),1),t("button",{type:"button",class:ee(["rounded px-2 py-1 font-medium transition-opacity hover:opacity-85",j.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:v[5]||(v[5]=k=>yt(De.value))},m(Y(De.value)),3)])],4)):S("",!0)]))]))}}),Bv={class:"flex h-full min-h-0 flex-col overflow-hidden"},Ov={class:"flex items-center justify-between gap-3 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},Vv={class:"min-w-0 flex items-center gap-1 overflow-hidden text-xs","aria-label":"File path"},qv=["onClick"],Hv={class:"flex shrink-0 items-center gap-1"},Uv=["disabled"],Wv=["disabled"],Kv={class:"min-h-0 flex-1 overflow-auto p-3"},Jv={key:0,class:"py-12 text-center text-sm text-neutral-500"},Gv={key:1,class:"flex justify-center py-12"},Yv={key:2,class:"py-12 text-center text-sm text-red-600 dark:text-red-400"},Qv={key:3,class:"py-12 text-center text-sm text-neutral-500"},Xv={key:4,class:"space-y-0.5"},Zv=["onClick","onDblclick","onKeydown"],ep={key:1,class:"w-3 shrink-0"},tp={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"},np=["src","alt"],ap={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"},rp={class:"min-w-0 flex-1 truncate"},sp={key:5,class:"text-[10px] text-neutral-400"},lp={key:6,class:"text-[10px] text-neutral-400"},op={key:5,class:"grid grid-cols-[repeat(auto-fill,minmax(112px,1fr))] gap-3"},ip=["onClick","onKeydown"],dp={class:"mb-2 flex aspect-square items-center justify-center overflow-hidden rounded bg-neutral-100 dark:bg-neutral-950"},up=["src","alt"],cp={class:"truncate text-xs font-medium"},fp={class:"mt-0.5 text-[10px] text-neutral-400"},vp={class:"flex h-full min-h-0 flex-col overflow-hidden"},pp={class:"flex items-center justify-between border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},gp={class:"min-w-0"},mp={class:"truncate text-sm font-semibold"},hp={class:"truncate text-[11px] font-mono text-neutral-500"},xp={class:"flex shrink-0 items-center gap-1.5"},bp=["disabled"],yp=["href","download"],kp={key:0,class:"grid grid-cols-[120px_minmax(0,1fr)] gap-2 text-sm"},wp={class:"font-mono"},_p={class:"break-all font-mono"},$p={key:1,class:"flex h-full items-center justify-center"},Cp={key:2,class:"text-sm text-red-600 dark:text-red-400"},Sp=["src","alt"],Tp={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"},Ip={key:5,class:"grid grid-cols-[120px_minmax(0,1fr)] gap-2 text-sm"},Ap={class:"font-mono"},Ep={class:"font-mono"},Lp={class:"break-all font-mono"},Mp="agentbuilder.threads.filePreviewSplitPercent",Rp=2500,Dp=We({__name:"ThreadFilesPane",props:{threadId:{},path:{},refreshKey:{},active:{type:Boolean,default:!0}},emits:["update:path","count-changed"],setup(e,{emit:i}){const a=e,s=i,l=x([]),o=x(!1),p=x(!1),h=x(!1),L=x(null),M=x("tree"),w=x("/"),y=x(null),T=x(new Set(["/"])),B=x(!1),E=x(null),H=x(!1),U=x(null),G=x(""),q=x(null),j=x(50),J=x(null),ve=x(new Map);let ae=null,Q=!1;const W=d=>(d.startsWith("/")?d:`/${d}`).replace(/\/+/g,"/"),fe=d=>d.replace(/^\/+/,"").split("/").map(v=>encodeURIComponent(v)).join("/"),X=(d,v="")=>{const k=typeof d=="string"?d:d.path;if(!a.threadId)return"";const ie=v?`?${v}`:"";return He(`/api/threads/${a.threadId}/fs/${fe(k)}${ie}`)},Re=d=>X(d),Fe=d=>{const v=d.name.toLowerCase();return v.endsWith(".vue")?"html":d.mimeType.includes("json")||v.endsWith(".json")?"json":v.endsWith(".md")||v.endsWith(".markdown")?"markdown":v.endsWith(".ts")||v.endsWith(".tsx")?"typescript":v.endsWith(".js")||v.endsWith(".jsx")?"javascript":v.endsWith(".css")?"css":v.endsWith(".scss")?"scss":v.endsWith(".html")?"html":v.endsWith(".yml")||v.endsWith(".yaml")?"yaml":v.endsWith(".sh")||v.endsWith(".bash")?"shell":v.endsWith(".py")?"python":v.endsWith(".xml")||d.mimeType.includes("xml")?"xml":"plaintext"},re=d=>{if(!d)return"0 B";const v=["B","KB","MB","GB"],k=Math.min(Math.floor(Math.log(d)/Math.log(1024)),v.length-1);return`${(d/1024**k).toFixed(k===0?0:1)} ${v[k]}`},De=d=>`${d} ${d===1?"item":"items"}`,P=d=>d?.mimeType?.startsWith("image/"),de=new Set([".bash",".css",".html",".js",".jsx",".json",".md",".markdown",".py",".scss",".sh",".ts",".tsx",".txt",".vue",".xml",".yaml",".yml"]),le=d=>{if(!d)return!1;const v=d.name.toLowerCase();return d.mimeType.startsWith("text/")||d.mimeType.includes("json")||d.mimeType.includes("xml")||d.mimeType.includes("javascript")||d.mimeType.includes("typescript")||[...de].some(k=>v.endsWith(k))},ye=d=>d?P(d)?Ma:d.mimeType.startsWith("audio/")?kr:d.mimeType.startsWith("video/")?wr:le(d)?d.mimeType.includes("json")||d.mimeType.includes("javascript")?_r:Ra:bn:bn,me=()=>{const d=new Set(["/"]);for(const v of l.value){const k=W(v.path).split("/").filter(Boolean);let ie="";for(const Ae of k.slice(0,-1))ie+="/"+Ae,d.add(ie)}return d},pe=()=>{T.value=me()},Me=async(d,v)=>{try{const k=await d.json();return typeof k.error=="string"?k.error:v}catch{return v}},Ce=d=>d?`${d.path}|${d.size}|${d.updatedAt??""}|${d.mimeType}`:"",ne=async(d={})=>{if(!a.threadId){l.value=[];return}const v=d.quiet===!0;if(!(v&&Q)){v?Q=!0:(o.value=!0,L.value=null);try{const k=await fetch(He(`/api/threads/${a.threadId}/fs?find=**/*&type=file`));if(!k.ok)throw new Error("Failed to load files");const ie=await k.json();l.value=(ie.files||[]).filter(Ae=>!Ae.isDirectory).map(Ae=>({...Ae,path:W(Ae.path)})).sort((Ae,Xe)=>P(Ae)!==P(Xe)?P(Ae)?-1:1:Ae.path.localeCompare(Xe.path)),M.value==="tree"&&l.value.length>0&&!B.value&&(pe(),B.value=!0)}catch(k){v||(L.value=k instanceof Error?k.message:"Failed to load files")}finally{v?Q=!1:o.value=!1}}},Z=A(()=>{const d={type:"directory",name:"",path:"/",children:[]},v=new Map([["/",d]]);for(const ie of l.value){const Ae=W(ie.path).split("/").filter(Boolean);let Xe=d,nt="";for(const ct of Ae.slice(0,-1)){nt=`${nt}/${ct}`;let bt=v.get(nt);bt||(bt={type:"directory",name:ct,path:nt,children:[]},v.set(nt,bt),Xe.children.push(bt)),Xe=bt}Xe.children.push({type:"file",name:ie.name||Ae[Ae.length-1],path:ie.path,file:ie,children:[]})}const k=ie=>{ie.children.sort((Ae,Xe)=>Ae.type!==Xe.type?Ae.type==="directory"?-1:1:Ae.name.localeCompare(Xe.name)),ie.children.forEach(k)};return k(d),d}),K=A(()=>{if(w.value==="/")return Z.value;const d=w.value.split("/").filter(Boolean);let v=Z.value;for(const k of d){const ie=v.children.find(Ae=>Ae.type==="directory"&&Ae.name===k);if(!ie)return Z.value;v=ie}return v}),xe=A(()=>K.value.children),ue=A(()=>[...xe.value].sort((d,v)=>d.type!==v.type?d.type==="file"?-1:1:d.file&&v.file&&P(d.file)!==P(v.file)?P(d.file)?-1:1:d.name.localeCompare(v.name))),Se=A(()=>{const d=[],v=(k,ie)=>{for(const Ae of k)d.push({node:Ae,depth:ie}),Ae.type==="directory"&&T.value.has(Ae.path)&&v(Ae.children,ie+1)};return v(K.value.children,0),d}),Ue=A(()=>{if(M.value==="tree"){const d=w.value!=="/"?[{key:"__up__",kind:"up"}]:[];return d.push(...Se.value.map(v=>({key:v.node.path,kind:"node",node:v.node}))),d}return ue.value.map(d=>({key:d.path,kind:"node",node:d}))}),D=A(()=>y.value?l.value.find(d=>d.path===y.value)??null:null),be=A(()=>D.value?Fe(D.value):"plaintext"),se=A(()=>Ce(D.value)),we=A(()=>!!D.value&&E.value!==null&&le(D.value)),Te=A(()=>we.value&&G.value!==(E.value??"")),ce=A(()=>{const d=D.value;if(!d)return!1;const v=d.mimeType.toLowerCase();return P(d)||le(d)||v==="application/pdf"||v.startsWith("audio/")||v.startsWith("video/")}),ge=(d,v)=>{if(d.path===v)return d;for(const k of d.children){const ie=ge(k,v);if(ie)return ie}return null},oe=A(()=>{if(!y.value)return null;const d=ge(Z.value,y.value);return d?.type==="directory"?d:null}),Ie=A(()=>{const d=w.value.split("/").filter(Boolean),v=[{label:"Files",path:"/"}];let k="";for(const ie of d)k+=`/${ie}`,v.push({label:ie,path:k});return v}),je=d=>{if(y.value=d.path,d.type==="directory"){w.value=d.path,T.value.add(d.path),T.value=new Set(T.value);return}},Oe=d=>{y.value=d.path,T.value.has(d.path)?T.value.delete(d.path):T.value.add(d.path),T.value=new Set(T.value)},V=async(d,v={})=>{const k=v.quiet===!0;if(!(Te.value&&y.value===d.path)&&(k||(E.value=null,U.value=null,G.value=""),!!le(d))){k||(H.value=!0);try{const ie=await fetch(X(d));if(!ie.ok)throw new Error("Failed to load preview");const Ae=await ie.text();y.value===d.path&&!Te.value&&(E.value=Ae,G.value=Ae,U.value=null)}catch(ie){k||(U.value=ie instanceof Error?ie.message:"Failed to load preview")}finally{k||(H.value=!1)}}},F=async()=>{!D.value||!le(D.value)||Te.value||await V(D.value,{quiet:!0})},u=()=>!!a.threadId&&a.active&&!Te.value&&!p.value&&!h.value&&!o.value&&!Q&&(typeof document>"u"||document.visibilityState==="visible"),c=async()=>{u()&&(await ne({quiet:!0}),await F())},C=()=>{u()&&c()},O=d=>{const v=new TextEncoder().encode(d);let k="";for(const ie of v)k+=String.fromCharCode(ie);return btoa(k)},Y=()=>{G.value=E.value??"",q.value=null},Le=async()=>{const d=D.value;if(!(!d||!a.threadId)){h.value=!0,q.value=null;try{const v=await fetch(X(d),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:O(G.value),mimeType:d.mimeType||"text/plain"})});if(!v.ok)throw new Error(await Me(v,"Failed to save file"));E.value=G.value,await ne({quiet:!0})}catch(v){q.value=v instanceof Error?v.message:"Failed to save file"}finally{h.value=!1}}},Ve=async d=>{const v=d.target;if(!(!a.threadId||!v.files?.length)){p.value=!0,L.value=null;try{for(const k of Array.from(v.files)){const ie=w.value==="/"?`/${k.name}`:`${w.value}/${k.name}`;if(!(await fetch(X(ie),{method:"POST",headers:{"Content-Type":k.type||"application/octet-stream"},body:k})).ok)throw new Error(`Failed to upload ${k.name}`)}await ne()}catch(k){L.value=k instanceof Error?k.message:"Upload failed"}finally{p.value=!1,v.value=""}}},Ke=x(new Set);he(()=>a.threadId,()=>{w.value=W(a.path||"/"),y.value=null,E.value=null,U.value=null,G.value="",q.value=null,T.value=new Set(["/"]),B.value=!1,Ke.value=new Set,ne()},{immediate:!0}),he(l,d=>{s("count-changed",d.length)},{immediate:!0}),he(()=>a.refreshKey,()=>{a.threadId&&ne()}),he(()=>a.active,d=>{d&&c()});const Je=x(!1),Ye=d=>{const v=d.lastIndexOf("/");return v<=0?"/":d.slice(0,v)},$t=d=>{const v=d.split("/").filter(Boolean);let k="";T.value.add("/");for(let ie=0;ie<v.length-1;ie++)k+="/"+v[ie],T.value.add(k);T.value=new Set(T.value)},xt=()=>{const d=Ye(w.value);w.value=d,y.value=d==="/"?null:d,T.value.add(d),T.value=new Set(T.value)},st=(d,v)=>{v instanceof HTMLElement?ve.value.set(d,v):ve.value.delete(d)},Ct=async d=>{await Be(),ve.value.get(d)?.focus({preventScroll:!0})},yt=d=>{d.kind==="node"&&je(d.node)},pt=(d,v)=>{const k=Ue.value,ie=k.findIndex(Xe=>Xe.key===d);if(ie<0)return;const Ae=k[Math.min(k.length-1,Math.max(0,ie+v))];Ae&&(yt(Ae),Ct(Ae.key))},Qe=d=>{const v=Ue.value,k=d==="start"?v[0]:v[v.length-1];k&&(yt(k),Ct(k.key))},ut=(d,v)=>{if(d.key==="ArrowDown"){d.preventDefault(),pt(v.key,1);return}if(d.key==="ArrowUp"){d.preventDefault(),pt(v.key,-1);return}if(d.key==="Home"){d.preventDefault(),Qe("start");return}if(d.key==="End"){d.preventDefault(),Qe("end");return}M.value!=="tree"||v.kind!=="node"||v.node.type!=="directory"||(d.key==="ArrowRight"&&!T.value.has(v.node.path)?(d.preventDefault(),T.value.add(v.node.path),T.value=new Set(T.value)):d.key==="ArrowLeft"&&T.value.has(v.node.path)&&(d.preventDefault(),T.value.delete(v.node.path),T.value=new Set(T.value)))};return he([()=>a.path,l],async([d])=>{const v=W(d||"/");let k=l.value.find(Ae=>Ae.path===v&&!Ae.isDirectory);const ie=v!=="/"&&/\.[a-z0-9]+$/i.test(v);if(!k&&ie&&d&&!Ke.value.has(v)&&(Ke.value.add(v),await ne(),k=l.value.find(Ae=>Ae.path===v&&!Ae.isDirectory)),k){const Ae=M.value==="tree"?"/":Ye(v);y.value=v,$t(v),w.value!==Ae&&(Je.value=!0,w.value=Ae)}else w.value!==v&&(Je.value=!0,w.value=v)}),he(M,d=>{d==="tree"&&(l.value.length>0&&!B.value&&(pe(),B.value=!0),D.value&&w.value!=="/"&&($t(D.value.path),Je.value=!0,w.value="/"))}),he(w,d=>{if(Je.value){Je.value=!1;return}s("update:path",W(d))}),he(y,()=>{E.value=null,U.value=null,G.value="",q.value=null}),he(se,()=>{const d=D.value;d?V(d):(G.value="",q.value=null,E.value=null,U.value=null)}),he(oe,()=>{G.value="",q.value=null,E.value=null,U.value=null}),ae=setInterval(()=>{c()},Rp),typeof document<"u"&&document.addEventListener("visibilitychange",C),Mt(()=>{ae&&clearInterval(ae),typeof document<"u"&&document.removeEventListener("visibilitychange",C)}),(d,v)=>(n(),N(Tn,{"height-percent":j.value,"onUpdate:heightPercent":v[5]||(v[5]=k=>j.value=k),"storage-key":Mp,title:"Resize files and preview"},Ot({main:Ee(()=>[t("div",Bv,[t("div",Ov,[t("nav",Vv,[(n(!0),r($e,null,Ne(Ie.value,(k,ie)=>(n(),r($e,{key:k.path},[ie>0?(n(),N(f(Pt),{key:0,size:13,class:"shrink-0 text-neutral-300 dark:text-neutral-600"})):S("",!0),t("button",{type:"button",class:ee(["min-w-0 truncate rounded border px-1.5 py-1 font-medium transition-colors",ie===Ie.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:Ae=>w.value=k.path},m(k.label),11,qv)],64))),128))]),t("div",Hv,[t("button",{type:"button",class:ee(["inline-flex h-7 w-7 items-center justify-center rounded border",M.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:v[0]||(v[0]=k=>M.value="tree")},[z(f(xr),{size:15})],2),t("button",{type:"button",class:ee(["inline-flex h-7 w-7 items-center justify-center rounded border",M.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:v[1]||(v[1]=k=>M.value="grid")},[z(f(br),{size:15})],2),t("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||o.value,title:"Refresh files",onClick:ne},[o.value?(n(),N(qe,{key:0,size:"xs"})):(n(),N(f(Wn),{key:1,size:15}))],8,Uv),t("input",{ref_key:"fileInput",ref:J,type:"file",multiple:"",class:"hidden",onChange:Ve},null,544),t("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||p.value,title:"Upload files",onClick:v[2]||(v[2]=k=>J.value?.click())},[p.value?(n(),N(qe,{key:0,size:"xs"})):(n(),N(f(yr),{key:1,size:15}))],8,Wv)])]),t("div",Kv,[e.threadId?o.value?(n(),r("div",Gv,[z(qe)])):L.value?(n(),r("div",Yv,m(L.value),1)):l.value.length===0?(n(),r("div",Qv," No files yet ")):M.value==="tree"?(n(),r("div",Xv,[w.value!=="/"?(n(),r("button",{key:0,ref:k=>st("__up__",k),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:xt,onKeydown:v[3]||(v[3]=k=>ut(k,{key:"__up__",kind:"up"}))},[v[6]||(v[6]=t("span",{class:"w-3 shrink-0"},null,-1)),z(f(An),{size:15,class:"shrink-0 text-amber-500"}),v[7]||(v[7]=t("span",{class:"min-w-0 flex-1 font-mono"},"..",-1))],544)):S("",!0),(n(!0),r($e,null,Ne(Se.value,k=>(n(),r("button",{key:k.node.path,ref_for:!0,ref:ie=>st(k.node.path,ie),type:"button",class:ee(["flex w-full items-center gap-2 rounded py-1.5 pr-2 text-left text-xs",y.value===k.node.path?"agents-surface-selected agents-text-selected":"hover:bg-neutral-100 dark:hover:bg-neutral-800"]),style:vt({paddingLeft:`${8+k.depth*18}px`}),onClick:ie=>k.node.type==="directory"?Oe(k.node):je(k.node),onDblclick:ie=>k.node.type==="directory"?je(k.node):void 0,onKeydown:ie=>ut(ie,{key:k.node.path,kind:"node",node:k.node})},[k.node.type==="directory"?(n(),N(f(Pt),{key:0,size:12,class:ee(["shrink-0 text-neutral-400 transition-transform",T.value.has(k.node.path)?"rotate-90":""])},null,8,["class"])):(n(),r("span",ep)),k.node.type==="directory"?(n(),N(f(An),{key:2,size:15,class:"shrink-0 text-amber-500"})):k.node.file&&P(k.node.file)?(n(),r("span",tp,[t("img",{src:Re(k.node.file),alt:k.node.name,class:"h-full w-full object-cover",loading:"lazy"},null,8,np)])):(n(),r("span",ap,[(n(),N(At(ye(k.node.file)),{size:15,class:"text-neutral-500"}))])),t("span",rp,m(k.node.name),1),k.node.type==="directory"?(n(),r("span",sp,m(De(k.node.children.length)),1)):(n(),r("span",lp,m(re(k.node.file?.size||0)),1))],46,Zv))),128))])):(n(),r("div",op,[(n(!0),r($e,null,Ne(ue.value,k=>(n(),r("button",{key:k.path,ref_for:!0,ref:ie=>st(k.path,ie),type:"button",class:ee(["group min-w-0 rounded-lg border p-2 text-left",y.value===k.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:ie=>je(k),onKeydown:ie=>ut(ie,{key:k.path,kind:"node",node:k})},[t("div",dp,[k.file&&P(k.file)?(n(),r("img",{key:0,src:Re(k.file),alt:k.name,class:"h-full w-full object-cover",loading:"lazy"},null,8,up)):k.type==="directory"?(n(),N(f(An),{key:1,size:28,class:"text-amber-500"})):(n(),N(At(ye(k.file)),{key:2,size:28,class:"text-neutral-500"}))]),t("div",cp,m(k.name),1),t("div",fp,m(k.type==="directory"?De(k.children.length):re(k.file?.size||0)),1)],42,ip))),128))])):(n(),r("div",Jv," Select a thread to view files "))])])]),_:2},[D.value||oe.value?{name:"detail",fn:Ee(()=>[t("div",vp,[t("div",pp,[t("div",gp,[t("div",mp,m(D.value?.name||oe.value?.name||"Files"),1),t("div",hp,m(D.value?.path||oe.value?.path),1)]),t("div",xp,[D.value&&we.value?(n(),r($e,{key:0},[t("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:h.value||!Te.value,onClick:Le},[h.value?(n(),N(qe,{key:0,size:"xs"})):(n(),N(f(Pa),{key:1,size:14})),v[8]||(v[8]=t("span",null,"Save",-1))],8,bp),Te.value?(n(),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:Y},[z(f(Et),{size:15})])):S("",!0)],64)):S("",!0),D.value?(n(),r("a",{key:1,href:X(D.value),target:"_blank",rel:"noopener noreferrer",download:ce.value?void 0:D.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"},m(ce.value?"Open":"Download"),9,yp)):S("",!0)])]),t("div",{class:ee(["min-h-0 flex-1",E.value!==null&&!H.value&&!U.value&&!oe.value&&!P(D.value)?"flex flex-col overflow-hidden p-3":"overflow-auto p-3"])},[oe.value?(n(),r("dl",kp,[v[9]||(v[9]=t("dt",{class:"text-neutral-500"},"Type",-1)),v[10]||(v[10]=t("dd",{class:"font-mono"},"directory",-1)),v[11]||(v[11]=t("dt",{class:"text-neutral-500"},"Items",-1)),t("dd",wp,m(De(oe.value.children.length)),1),v[12]||(v[12]=t("dt",{class:"text-neutral-500"},"Path",-1)),t("dd",_p,m(oe.value.path),1)])):H.value?(n(),r("div",$p,[z(qe)])):U.value?(n(),r("div",Cp,m(U.value),1)):P(D.value)?(n(),r("img",{key:3,src:X(D.value),alt:D.value.name,class:"mx-auto max-h-full max-w-full rounded border border-neutral-200 object-contain dark:border-neutral-800"},null,8,Sp)):E.value!==null?(n(),r($e,{key:4},[q.value?(n(),r("div",Tp,m(q.value),1)):S("",!0),we.value?(n(),N(Qn,{key:1,modelValue:G.value,"onUpdate:modelValue":v[4]||(v[4]=k=>G.value=k),language:be.value,class:"min-h-[12rem] flex-1",framed:!1},null,8,["modelValue","language"])):S("",!0)],64)):(n(),r("dl",Ip,[v[13]||(v[13]=t("dt",{class:"text-neutral-500"},"Type",-1)),t("dd",Ap,m(D.value.mimeType||"application/octet-stream"),1),v[14]||(v[14]=t("dt",{class:"text-neutral-500"},"Size",-1)),t("dd",Ep,m(re(D.value.size)),1),v[15]||(v[15]=t("dt",{class:"text-neutral-500"},"Path",-1)),t("dd",Lp,m(D.value.path),1)]))],2)])]),key:"0"}:void 0]),1032,["height-percent"]))}});function Fp(e){const i=e&&typeof e=="object"?e:{},a=Array.isArray(i.values)?i.values:[];return{values:a.filter(s=>!!s&&typeof s=="object").filter(s=>typeof s.key=="string").map(s=>({key:s.key,value:s.value,serialized:typeof s.serialized=="string"?s.serialized:Ka(s.value),size:typeof s.size=="number"&&Number.isFinite(s.size)?s.size:0,updatedAt:typeof s.updatedAt=="number"&&Number.isFinite(s.updatedAt)?s.updatedAt:0,parseError:typeof s.parseError=="string"?s.parseError:void 0})),total:typeof i.total=="number"&&Number.isFinite(i.total)?i.total:a.length,limit:typeof i.limit=="number"&&Number.isFinite(i.limit)?i.limit:a.length,offset:typeof i.offset=="number"&&Number.isFinite(i.offset)?i.offset:0,search:typeof i.search=="string"?i.search:null}}function Ka(e){const i=JSON.stringify(e,null,2);return i===void 0?"":i}function Pp(e){try{const i=JSON.parse(e);return i===null?{ok:!1,error:"Use delete to remove a key"}:{ok:!0,value:i}}catch(i){return{ok:!1,error:i instanceof Error?i.message:"Invalid JSON"}}}function Pn(e,i){return i?"unknown":Array.isArray(e)?"array":typeof e=="string"?"string":typeof e=="number"?"number":typeof e=="boolean"?"boolean":e&&typeof e=="object"?"object":"unknown"}function Np(e,i){if(i)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 _a(e){if(!Number.isFinite(e)||e<=0)return"0 B";const i=["B","KB","MB"],a=Math.min(Math.floor(Math.log(e)/Math.log(1024)),i.length-1);return`${(e/1024**a).toFixed(a===0?0:1)} ${i[a]}`}function $a(e){if(!Number.isFinite(e)||e<=0)return"Unknown";const i=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(i))}const zp={class:"flex h-full min-h-0 flex-col overflow-hidden"},jp={class:"flex items-center gap-2 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},Bp={class:"relative min-w-0 flex-1"},Op={class:"hidden shrink-0 text-xs tabular-nums text-neutral-500 sm:block"},Vp=["disabled"],qp=["disabled"],Hp={class:"min-h-0 flex-1 overflow-auto"},Up={key:0,class:"py-12 text-center text-sm text-neutral-500"},Wp={key:1,class:"flex justify-center py-12"},Kp={key:2,class:"py-12 text-center text-sm text-red-600 dark:text-red-400"},Jp={key:3,class:"py-12 text-center text-sm text-neutral-500"},Gp={key:4,class:"flex min-h-full flex-col"},Yp={class:"min-h-0 flex-1 overflow-auto bg-white dark:bg-neutral-950"},Qp={class:"w-full min-w-[52rem] table-fixed text-left text-xs"},Xp={class:"divide-y divide-neutral-100 dark:divide-neutral-900"},Zp=["aria-selected","onClick","onKeydown"],eg={class:"whitespace-nowrap px-4 py-2 align-middle"},tg={class:"font-mono text-xs font-normal text-neutral-950 dark:text-neutral-100"},ng={class:"min-w-0 px-3 py-2 align-middle"},ag={class:"truncate text-xs text-neutral-500 dark:text-neutral-400"},rg={class:"whitespace-nowrap px-3 py-2 align-middle"},sg={class:"whitespace-nowrap px-3 py-2 text-right align-middle text-[11px] tabular-nums text-neutral-400"},lg={class:"whitespace-nowrap px-4 py-2 text-right align-middle text-[11px] text-neutral-400"},og=["disabled"],ig={class:"flex h-full min-h-0 flex-col overflow-hidden"},dg={class:"flex items-center justify-between gap-3 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800"},ug={class:"min-w-0 flex-1"},cg={key:0,class:"flex items-center gap-2"},fg={key:1,class:"mt-0.5 truncate text-[11px] text-neutral-500"},vg={class:"flex shrink-0 items-center gap-1.5"},pg=["disabled"],gg=["disabled"],mg={class:"flex min-h-0 flex-1 flex-col overflow-hidden p-3"},hg={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"},xg="agentbuilder.threads.kvStoreDetailSplitPercent",Ca=100,bg=2500,Wt=`{
|
|
25
25
|
|
|
26
|
-
}`,Nm=Ue({__name:"ThreadKvStorePane",props:{threadId:{},active:{type:Boolean,default:!0}},emits:["count-changed"],setup(e,{emit:i}){const a=e,s=i,l=b([]),o=b(0),m=b(""),h=b(!1),M=b(!1),F=b(!1),k=b(!1),x=b(null),L=b(null),V=b(null),R=b("view"),W=b(""),K=b(Wt),G=b(null),w=b(Wt),E=b(50),B=b(new Map);let re=null,J=null,Q=!1,H=0;const me=()=>{ae()&&Y({preferredKey:V.value,quiet:!0})},Z=I(()=>V.value?l.value.find(pe=>pe.key===V.value)??null:null),Me=I(()=>l.value.length<o.value),De=I(()=>{const pe=l.value.length;return a.threadId?o.value===0?m.value.trim()?"No matches":"No values":`${pe} of ${o.value}`:""}),se=I(()=>Pn(Z.value?.value,Z.value?.parseError)),Fe=I(()=>Z.value?.parseError?"text":"json"),N=I(()=>R.value==="create"),de=I(()=>N.value||!!Z.value),oe=I(()=>de.value&&(W.value!==(G.value??"")||K.value!==w.value)),ye=I(()=>!oe.value&&Z.value?.parseError?Z.value.parseError:null);function ve(pe){switch(pe){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 he(pe,ge){try{const ie=await pe.json();return typeof ie.error=="string"?ie.error:ge}catch{return ge}}function Le(pe){if(N.value||oe.value)return;const ge=pe?l.value.find(ie=>ie.key===pe):null;if(ge){V.value=ge.key;return}V.value&&l.value.some(ie=>ie.key===V.value)||(V.value=l.value[0]?.key??null)}function ae(){return!!a.threadId&&a.active&&!N.value&&!oe.value&&!h.value&&!M.value&&!F.value&&!k.value&&!Q&&(typeof document>"u"||document.visibilityState==="visible")}async function Y(pe={}){if(!a.threadId){l.value=[],o.value=0,V.value=null;return}const ge=++H,ie=pe.append===!0,Ce=pe.quiet===!0;Ce&&(Q=!0),Ce||(ie?M.value=!0:h.value=!0),Ce||(x.value=null);const je=new URLSearchParams,Oe=Math.min(Math.max(l.value.length,Ca),200);je.set("limit",String(ie?Ca:Oe)),je.set("offset",String(ie?l.value.length:0));const U=m.value.trim();U&&je.set("search",U);try{const z=await fetch(He(`/api/threads/${a.threadId}/kv?${je}`));if(!z.ok)throw new Error(await he(z,"Failed to load key-value store"));const u=Zv(await z.json());if(ge!==H)return;l.value=ie?[...l.value,...u.values]:u.values,o.value=u.total,Le(pe.preferredKey)}catch(z){ge===H&&(!Ce||l.value.length===0)&&(x.value=z instanceof Error?z.message:"Failed to load key-value store")}finally{Ce&&(Q=!1),ge===H&&!Ce&&(h.value=!1,M.value=!1)}}function ce(){re&&clearTimeout(re),re=setTimeout(()=>{Y()},250)}function ne(pe){V.value=pe.key,R.value="view",L.value=null,Ie(pe)}function le(){G.value=null,w.value=Wt,W.value="",K.value=Wt}function Ie(pe){if(!pe){le();return}const ge=pe.parseError?pe.serialized:Ka(pe.value);G.value=pe.key,w.value=ge,W.value=pe.key,K.value=ge,L.value=null}function Re(pe,ge){ge instanceof HTMLElement?B.value.set(pe,ge):B.value.delete(pe)}async function We(pe){await Be(),B.value.get(pe)?.focus({preventScroll:!0})}function P(pe,ge){const ie=l.value.findIndex(Oe=>Oe.key===ge.key);if(ie<0)return;let Ce=ie;if(pe.key==="ArrowDown")Ce=Math.min(l.value.length-1,ie+1);else if(pe.key==="ArrowUp")Ce=Math.max(0,ie-1);else if(pe.key==="Home")Ce=0;else if(pe.key==="End")Ce=l.value.length-1;else return;pe.preventDefault();const je=l.value[Ce];je&&(ne(je),We(je.key))}function xe(){V.value=null,G.value=null,w.value=Wt,W.value="",K.value=Wt,L.value=null,R.value="create"}function fe(){if(L.value=null,N.value){R.value="view",Le();return}Ie(Z.value)}async function we(){if(!a.threadId)return;const pe=W.value;if(!pe.trim()){L.value="Key is required";return}const ge=em(K.value);if(!ge.ok){L.value=ge.error;return}F.value=!0,L.value=null;try{const ie=await fetch(He(`/api/threads/${a.threadId}/kv`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:pe,value:ge.value,previousKey:N.value?void 0:G.value})});if(!ie.ok)throw new Error(await he(ie,"Failed to save value"));V.value=pe,R.value="view",await Y({preferredKey:pe})}catch(ie){L.value=ie instanceof Error?ie.message:"Failed to save value"}finally{F.value=!1}}async function Te(){if(!a.threadId||!Z.value)return;const pe=Z.value.key;if(window.confirm(`Delete ${pe}?`)){k.value=!0,x.value=null;try{const ge=new URLSearchParams({key:pe}),ie=await fetch(He(`/api/threads/${a.threadId}/kv?${ge}`),{method:"DELETE"});if(!ie.ok)throw new Error(await he(ie,"Failed to delete value"));V.value=null,R.value="view",le(),await Y()}catch(ge){x.value=ge instanceof Error?ge.message:"Failed to delete value"}finally{k.value=!1}}}return be(()=>a.threadId,()=>{m.value="",R.value="view",L.value=null,le(),Y()},{immediate:!0}),be(m,ce),be(o,pe=>{m.value.trim()||s("count-changed",pe)},{immediate:!0}),be(Z,pe=>{N.value||oe.value||Ie(pe)}),be(()=>[a.threadId,a.active],()=>{J&&clearInterval(J),J=null,!(!a.threadId||!a.active)&&(J=setInterval(()=>{ae()&&Y({preferredKey:V.value,quiet:!0})},zm))},{immediate:!0}),typeof document<"u"&&document.addEventListener("visibilitychange",me),Mt(()=>{re&&clearTimeout(re),J&&clearInterval(J),typeof document<"u"&&document.removeEventListener("visibilitychange",me)}),(pe,ge)=>(n(),O(Tn,{"height-percent":E.value,"onUpdate:heightPercent":ge[6]||(ge[6]=ie=>E.value=ie),"storage-key":Pm,title:"Resize key-value browser and detail"},Ot({main:Ae(()=>[t("div",nm,[t("div",am,[t("div",rm,[j(f(Nn),{size:14,class:"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-neutral-400"}),rt(t("input",{"onUpdate:modelValue":ge[0]||(ge[0]=ie=>m.value=ie),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:ge[1]||(ge[1]=zt(Ne(ie=>Y(),["prevent"]),["enter"]))},null,544),[[xn,m.value]])]),t("div",sm,v(De.value),1),t("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||h.value,title:"Refresh values","aria-label":"Refresh values",onClick:ge[2]||(ge[2]=ie=>Y())},[h.value?(n(),O(qe,{key:0,size:"xs"})):(n(),O(f(Wn),{key:1,size:15}))],8,lm),t("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:xe},[j(f(Ea),{size:15}),ge[7]||(ge[7]=t("span",null,"New",-1))],8,om)]),t("div",im,[e.threadId?h.value&&l.value.length===0?(n(),r("div",um,[j(qe)])):x.value?(n(),r("div",cm,v(x.value),1)):l.value.length===0?(n(),r("div",fm,[j(f(Xn),{class:"mx-auto mb-2 h-8 w-8 opacity-40"}),Ge(" "+v(m.value.trim()?"No matching values":"No stored values"),1)])):(n(),r("div",pm,[t("div",vm,[t("table",mm,[ge[8]||(ge[8]=t("colgroup",null,[t("col",{class:"w-[23rem]"}),t("col"),t("col",{class:"w-24"}),t("col",{class:"w-20"}),t("col",{class:"w-32"})],-1)),ge[9]||(ge[9]=t("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"},[t("tr",null,[t("th",{scope:"col",class:"px-4 py-2 font-medium"},"Key"),t("th",{scope:"col",class:"px-3 py-2 font-medium"},"Value"),t("th",{scope:"col",class:"px-3 py-2 text-left font-medium"},"Type"),t("th",{scope:"col",class:"px-3 py-2 text-right font-medium"},"Size"),t("th",{scope:"col",class:"px-4 py-2 text-right font-medium"},"Updated")])],-1)),t("tbody",gm,[(n(!0),r(_e,null,Pe(l.value,ie=>(n(),r("tr",{key:ie.key,ref_for:!0,ref:Ce=>Re(ie.key,Ce),tabindex:"0","aria-selected":V.value===ie.key,class:ee(["cursor-pointer transition-colors focus:outline-none",V.value===ie.key?"agents-surface-selected":"hover:bg-neutral-50 dark:hover:bg-neutral-900"]),onClick:Ce=>ne(ie),onKeydown:[zt(Ne(Ce=>ne(ie),["prevent"]),["enter"]),zt(Ne(Ce=>ne(ie),["prevent"]),["space"]),Ce=>P(Ce,ie)]},[t("td",xm,[t("div",bm,v(ie.key),1)]),t("td",ym,[t("div",km,v(f(tm)(ie.value,ie.parseError)),1)]),t("td",_m,[t("span",{class:ee(["inline-flex rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",ve(f(Pn)(ie.value,ie.parseError))])},v(f(Pn)(ie.value,ie.parseError)),3)]),t("td",wm,v(f(wa)(ie.size)),1),t("td",$m,v(f($a)(ie.updatedAt)),1)],42,hm))),128))])])]),Me.value?(n(),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:M.value,onClick:ge[3]||(ge[3]=ie=>Y({append:!0}))},[M.value?(n(),O(qe,{key:0,size:"xs"})):T("",!0),ge[10]||(ge[10]=t("span",null,"Load more",-1))],8,Cm)):T("",!0)])):(n(),r("div",dm," Select a thread to view its key-value store "))])])]),_:2},[de.value?{name:"detail",fn:Ae(()=>[t("div",Sm,[t("div",Tm,[t("div",Im,[de.value?(n(),r("div",Am,[j(f(Xn),{size:15,class:"shrink-0 text-neutral-400"}),rt(t("input",{"onUpdate:modelValue":ge[4]||(ge[4]=ie=>W.value=ie),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),[[xn,W.value]]),Z.value?(n(),r("span",{key:0,class:ee(["shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",ve(se.value)])},v(se.value),3)):T("",!0)])):T("",!0),Z.value?(n(),r("div",Em,v(f(wa)(Z.value.size))+" | "+v(f($a)(Z.value.updatedAt)),1)):T("",!0)]),t("div",Lm,[de.value?(n(),r(_e,{key:0},[t("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:F.value||!oe.value,onClick:we},[F.value?(n(),O(qe,{key:0,size:"xs"})):(n(),O(f(Pa),{key:1,size:14})),ge[11]||(ge[11]=t("span",null,"Save",-1))],8,Mm),oe.value?(n(),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:fe},[j(f(Et),{size:15})])):T("",!0),Z.value?(n(),O(Jn,{key:1,content:K.value,variant:"ghost",size:"xs"},null,8,["content"])):T("",!0),Z.value?(n(),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:k.value,title:"Delete value","aria-label":"Delete value",onClick:Te},[k.value?(n(),O(qe,{key:0,size:"xs"})):(n(),O(f(kn),{key:1,size:15}))],8,Rm)):T("",!0)],64)):T("",!0)])]),t("div",Dm,[L.value?(n(),r("div",Fm,v(L.value),1)):T("",!0),de.value?(n(),O(Qn,{key:1,modelValue:K.value,"onUpdate:modelValue":ge[5]||(ge[5]=ie=>K.value=ie),class:"min-h-0 flex-1",language:Fe.value,error:ye.value,"word-wrap":"on","format-on-blur":"",framed:!1,placeholder:"{\\n \\n}"},null,8,["modelValue","language","error"])):T("",!0)])])]),key:"0"}:void 0]),1032,["height-percent"]))}}),jm=["onClick"],Bm=["value","placeholder","disabled"],Om=Ue({__name:"TagInput",props:{modelValue:{},placeholder:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(e,{emit:i}){const a=e,s=i,l=b(""),o=b(null),m=x=>{const L=x.trim().toLowerCase();L&&!a.modelValue.includes(L)&&s("update:modelValue",[...a.modelValue,L]),l.value="",Be(()=>o.value?.focus())},h=x=>{const L=[...a.modelValue];L.splice(x,1),s("update:modelValue",L)},M=x=>{const L=x.target.value;if(L.includes(",")){const V=L.split(",");V.forEach((R,W)=>{W<V.length-1?m(R):l.value=R})}else l.value=L},F=x=>{x.key==="Enter"?(x.preventDefault(),m(l.value)):x.key==="Backspace"&&!l.value&&a.modelValue.length>0&&h(a.modelValue.length-1)},k=()=>{o.value?.focus()};return(x,L)=>(n(),r("div",{class:ee(["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:k},[(n(!0),r(_e,null,Pe(e.modelValue,(V,R)=>(n(),r("span",{key:V,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"},[Ge(v(V)+" ",1),e.disabled?T("",!0):(n(),r("button",{key:0,type:"button",onClick:Ne(W=>h(R),["stop"]),class:"hover:text-accent-900 dark:hover:text-accent-100 transition-colors"},[j(f(Et),{size:12})],8,jm))]))),128)),t("input",{ref_key:"inputRef",ref:o,type:"text",value:l.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:M,onKeydown:F},null,40,Bm)],2))}}),Vm={class:"thread-basic-info-card bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},qm={class:"p-3 space-y-2"},Hm={class:"text-[10px] text-neutral-500 dark:text-neutral-400"},Um=["title"],Wm={class:"flex-1 text-[11px] font-mono text-neutral-600 dark:text-neutral-400 truncate"},Km={class:"thread-basic-info-row flex items-center gap-2"},Jm={class:"thread-basic-info-control flex-1 flex items-center gap-1.5"},Gm={key:1,class:"text-xs text-neutral-700 dark:text-neutral-200"},Ym={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"},Qm={class:"thread-basic-info-row flex items-start gap-2"},Xm=Ue({__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:i}){const a=i,s=l=>new Date(l*1e3).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});return(l,o)=>{const m=qt("FormKit");return n(),r("div",Vm,[t("div",qm,[t("div",Hm,[o[3]||(o[3]=t("span",{class:"font-medium uppercase tracking-wide"},"Created",-1)),o[4]||(o[4]=t("span",{class:"mx-1"},"·",-1)),Ge(" "+v(s(e.thread.created_at)),1)]),t("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:o[0]||(o[0]=h=>a("copyId")),title:e.copiedId?"Copied!":"Click to copy"},[t("code",Wm,v(e.thread.id),1),t("span",{class:ee(["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?(n(),O(f(Ia),{key:0,size:12})):(n(),O(f($r),{key:1,size:12}))],2)],8,Um),t("div",Km,[o[5]||(o[5]=t("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)),t("div",Jm,[e.isAiHumanAgent?(n(),O(m,{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:o[1]||(o[1]=h=>a("agentChange",String(h)))},null,8,["model-value","options","loading","disabled"])):(n(),r("span",Gm,v(e.thread.agent.title),1)),t("span",Ym,v(e.thread.agent.type.replace("_"," ")),1)])]),t("div",Qm,[o[6]||(o[6]=t("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)),j(Om,{"model-value":e.localTags,"onUpdate:modelValue":o[2]||(o[2]=h=>a("tagsChange",h)),disabled:e.isSavingTags,placeholder:"Add tags...",class:"flex-1"},null,8,["model-value","disabled"])])])])}}}),Zm=st(Xm,[["__scopeId","data-v-b2c0cfd1"]]),eg={class:"thread-dev-tools-card bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},tg={key:0,class:"overflow-hidden border-t border-neutral-100 dark:border-neutral-800"},ng={class:"p-3 space-y-3"},ag={class:"thread-dev-tools-action-row flex items-center gap-2"},rg=["value"],sg=["disabled"],lg={class:"pt-2 border-t border-neutral-100 dark:border-neutral-800"},og=["disabled"],ig=Ue({__name:"ThreadDeveloperToolsCard",props:{expanded:{type:Boolean},isDualAiAgent:{type:Boolean},selectedSide:{},isContinuing:{type:Boolean},isDeleting:{type:Boolean}},emits:["toggle","updateSelectedSide","continueExecution","deleteThread"],setup(e,{emit:i}){const a=i;return(s,l)=>(n(),r("div",eg,[t("button",{onClick:l[0]||(l[0]=o=>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"},[j(f(Fa),{size:14,class:"shrink-0 text-neutral-400"}),l[4]||(l[4]=t("span",{class:"flex-1 text-xs font-medium text-neutral-700 dark:text-neutral-200"},"Developer Tools",-1)),j(f(wt),{size:14,class:ee(["shrink-0 text-neutral-400 transition-transform duration-200",{"-rotate-180":e.expanded}])},null,8,["class"])]),j(on,{"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:Ae(()=>[e.expanded?(n(),r("div",tg,[t("div",ng,[t("div",ag,[e.isDualAiAgent?(n(),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:l[1]||(l[1]=o=>a("updateSelectedSide",o.target.value))},[...l[5]||(l[5]=[t("option",{value:"a"},"Side A",-1),t("option",{value:"b"},"Side B",-1)])],40,rg)):T("",!0),t("button",{onClick:l[2]||(l[2]=o=>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"},[j(f(Bn),{size:12}),t("span",null,v(e.isContinuing?"Running...":"Continue"),1)],8,sg),l[6]||(l[6]=t("span",{class:"thread-dev-tools-hint text-[10px] text-neutral-500 dark:text-neutral-400"},"Resume without new message",-1))]),t("div",lg,[t("button",{onClick:l[3]||(l[3]=o=>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"},[j(f(kn),{size:12}),t("span",null,v(e.isDeleting?"Deleting...":"Delete Thread"),1)],8,og)])])])):T("",!0)]),_:1})]))}}),dg=st(ig,[["__scopeId","data-v-e5ac7740"]]),ug={key:0,class:"flex justify-center py-6"},cg={key:1,class:"text-red-600 dark:text-red-400 text-center py-4 text-xs"},fg={class:"thread-settings-variables-card bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},pg={key:0,class:"text-xs text-neutral-500 dark:text-neutral-400"},vg={key:1,class:"space-y-2"},mg={class:"thread-settings-variable-name min-w-0 flex items-center gap-1.5"},gg=["title"],hg={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"},xg=["disabled","onClick","title"],bg=["disabled","onClick"],yg={key:1,class:"h-7 w-7"},kg={class:"mt-3 border-t border-neutral-100 dark:border-neutral-800 pt-3 space-y-2"},_g=["disabled","onClick","title"],wg=["disabled","onClick"],$g=["disabled"],Cg=["disabled"],Sg={key:1},Tg={key:0,class:"text-[10px] text-red-600 dark:text-red-400"},Sa="**********",Ig=Ue({__name:"MetadataSlidePane",props:{threadId:{},show:{type:Boolean},embedded:{type:Boolean}},emits:["close","threadDeleted","editThread","threadUpdated"],setup(e,{emit:i}){const a=e,s=i,{thread:l,isFetching:o,error:m,refetch:h}=Gn(I(()=>a.threadId)),{agents:M,isFetching:F}=Ha(),k=b(!1),x=b(!1),L=b(!1),V=b(!1),R=b(!!a.embedded),W=b(!1),K=b("a"),G=b(!1),w=b(!1);let E=null,B=0;const re=()=>({id:`new-env-${B++}`,name:"",value:"",secret:!0}),J=b([]),Q=b({}),H=b({}),me=b({}),Z=b({}),Me=b({}),De=b([re()]),se=b(null),Fe=b(null),N=b(null),de=b(""),oe=b([]),ye=b(!1),ve=(u,c)=>u instanceof Error?u.message:c,he=(u,c)=>{an(c?{error:u,fieldErrors:c}:{error:u},N)||(Fe.value=u)},Le=I(()=>M.value?M.value.filter(u=>u.type==="ai_human").map(u=>({value:u.id,label:u.title})):[]),ae=I(()=>l.value?.agent.type==="ai_human"),Y=I(()=>l.value?.agent.type==="dual_ai"),ce=I(()=>J.value.filter(u=>!Me.value[u.property])),ne=async()=>{l.value&&(await navigator.clipboard.writeText(l.value.id),G.value=!0,E&&clearTimeout(E),E=setTimeout(()=>{G.value=!1,E=null},2e3))};Ht(()=>{E&&clearTimeout(E)});const le=async u=>{if(!(!a.threadId||!u||u===l.value?.agent.id)){L.value=!0;try{const c=await fetch(He(`/api/threads/${a.threadId}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent_id:u})});if(!c.ok){const S=await c.json();throw new Error(S.error||"Failed to update agent")}await h(),s("threadUpdated")}catch{de.value=l.value?.agent.id||""}finally{L.value=!1}}},Ie=async u=>{if(a.threadId){oe.value=u,ye.value=!0,V.value=!0;try{const c=await fetch(He(`/api/threads/${a.threadId}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tags:u})});if(!c.ok){const S=await c.json();throw new Error(S.error||"Failed to update tags")}s("threadUpdated")}catch{oe.value=l.value?.tags||[]}finally{V.value=!1,ye.value=!1}}},Re=()=>{a.embedded&&(R.value=!0)},We=u=>u.defined?(u.defined.type==="agent"||u.defined.type==="prompt")&&u.defined.name?`${u.defined.type}:${u.defined.name}`:u.defined.type:"missing",P=u=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(u.trim()),xe=(u={})=>({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",u.mono?"font-mono":""].filter(Boolean).join(" "),help:"$remove:hidden hidden",messages:"$remove:formkit-messages hidden"}),fe=u=>{const c={},S={};for(const q of u)c[q.property]=q.type==="secret"&&q.defined?Sa:q.value??"",S[q.property]=q.type==="secret";Q.value=c,H.value=S,me.value={},Z.value={},Me.value={}},we=u=>{H.value={...H.value,[u]:!H.value[u]},Z.value={...Z.value,[u]:!0}},Te=u=>{me.value={...me.value,[u]:!0}},pe=u=>{Me.value={...Me.value,[u]:!0},Fe.value=null,rn(N)},ge=()=>{De.value=[...De.value,re()]},ie=u=>{const c=De.value.filter(S=>S.id!==u);De.value=c.length>0?c:[re()]},Ce=async()=>{if(!a.threadId||!l.value?.agent?.id){J.value=[],fe([]);return}w.value=!0;try{const u=await fetch(He(`/api/variables/agents/${encodeURIComponent(l.value.agent.id)}?thread_id=${encodeURIComponent(a.threadId)}`));if(!u.ok){J.value=[];return}const c=await u.json();J.value=c.variables||[],fe(J.value)}catch{J.value=[],fe([])}finally{w.value=!1}},je=async(u,c=[],S={})=>{if(!a.threadId)return;Fe.value=null;const q=await fetch(He(`/api/threads/${a.threadId}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({env_patch:u,env_type_patch:S,env_delete:c})});if(!q.ok){const X=await q.json().catch(()=>({}));throw new Error(X.error||"Failed to update variable")}await h(),await Ce(),s("threadUpdated")},Oe=async()=>{if(se.value)return;const u={},c={},S=Object.keys(Me.value).filter(X=>Me.value[X]);for(const X of ce.value){if(!me.value[X.property]&&!Z.value[X.property])continue;if(!P(X.property)){he(`Invalid env name: ${X.property}`,{[`env_${X.property}`]:`Invalid env name: ${X.property}`});return}const Ee=Q.value[X.property]??"";Ee!==Sa&&(u[X.property]=Ee),(Z.value[X.property]||me.value[X.property])&&(c[X.property]=H.value[X.property]?"secret":"text")}const q=new Set;for(const X of De.value){const Ee=X.name.trim(),Ve=X.value.length>0;if(!(!Ee&&!Ve)){if(!Ee||!P(Ee)){he("Use a valid env name like WEATHER_API_KEY",{[`${X.id}_name`]:"Use a valid env name like WEATHER_API_KEY"});return}if(q.has(Ee)){he(`Duplicate env name: ${Ee}`,{[`${X.id}_name`]:`Duplicate env name: ${Ee}`});return}q.add(Ee),u[Ee]=X.value,c[Ee]=X.secret?"secret":"text"}}if(Object.keys(u).length===0&&Object.keys(c).length===0&&S.length===0){he("No env changes to save");return}se.value="__all__";try{await je(u,S,c),De.value=[re()]}catch(X){he(ve(X,"Failed to save variables"))}finally{se.value=null}},U=async()=>{if(a.threadId){W.value=!0;try{const u=await fetch(He(`/api/threads/${a.threadId}/continue`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({side:K.value})});if(!u.ok){const c=await u.json();throw new Error(c.error||"Failed to continue execution")}}catch{K.value="a"}finally{W.value=!1}}},z=async()=>{if(a.threadId){x.value=!0;try{const u=await fetch(He(`/api/threads/${a.threadId}`),{method:"DELETE"});if(!u.ok){const c=await u.json();throw new Error(c.error||"Failed to delete thread")}s("threadDeleted",a.threadId)}catch{k.value=!1}finally{x.value=!1}}};return be(()=>l.value,u=>{u&&(de.value=u.agent.id,ye.value||(oe.value=u.tags||[]))},{immediate:!0}),be(()=>a.show,u=>{u?(Ce(),Re()):(R.value=!1,J.value=[],Q.value={},H.value={},me.value={},Z.value={},Me.value={},De.value=[re()],Fe.value=null,rn(N),w.value=!1)},{immediate:!0}),be(()=>a.threadId,()=>{R.value=!1,J.value=[],Q.value={},H.value={},me.value={},Z.value={},Me.value={},De.value=[re()],Fe.value=null,rn(N),a.show&&(Ce(),Re())}),be(()=>l.value?.agent?.id,()=>{a.show&&(Ce(),Re())}),(u,c)=>{const S=qt("FormKit");return n(),O(on,{"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:Ae(()=>[e.show&&e.threadId?(n(),r("div",{key:0,class:ee(["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"])},[t("div",{class:ee(["thread-settings-layout",e.embedded?"grid grid-cols-1 gap-3 p-3":"max-h-[500px] overflow-y-auto p-3 space-y-3"])},[f(o)?(n(),r("div",ug,[j(qe)])):f(m)?(n(),r("div",cg," Error: "+v(f(m)),1)):f(l)?(n(),r(_e,{key:2},[j(Zm,{thread:f(l),"copied-id":G.value,"is-ai-human-agent":ae.value,"local-agent-id":de.value,"agent-options":Le.value,"is-fetching-agents":f(F),"is-saving-agent":L.value,"local-tags":oe.value,"is-saving-tags":V.value,onCopyId:ne,onAgentChange:le,onTagsChange:Ie},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"]),t("div",fg,[c[5]||(c[5]=t("div",{class:"px-3 py-2.5 border-b border-neutral-100 dark:border-neutral-800"},[t("div",{class:"text-xs font-medium text-neutral-700 dark:text-neutral-200"}," Variables ")],-1)),j(S,{type:"form",id:"thread-variable-form",actions:!1,disabled:se.value!==null,onSubmit:Oe,onNode:c[0]||(c[0]=q=>N.value=q),"form-class":"$reset p-3"},{default:Ae(()=>[j(f(jn),{node:N.value||void 0},null,8,["node"]),w.value?(n(),r("div",pg," Loading variables... ")):T("",!0),!w.value&&ce.value.length>0?(n(),r("div",vg,[(n(!0),r(_e,null,Pe(ce.value,q=>(n(),r("div",{key:q.property,class:"thread-settings-variable-row grid grid-cols-[minmax(90px,1fr)_minmax(0,1.6fr)_auto_auto] items-center gap-1.5"},[t("div",mg,[t("span",{class:"truncate text-[11px] font-mono text-neutral-700 dark:text-neutral-200",title:`${q.property} (${We(q)})`},v(q.property),9,gg),q.required?(n(),r("span",hg," req ")):T("",!0)]),j(S,{type:H.value[q.property]?"password":"text",name:`env_${q.property}`,modelValue:Q.value[q.property],"onUpdate:modelValue":X=>Q.value[q.property]=X,placeholder:"Value",disabled:se.value!==null,"outer-class":"$reset mb-0",classes:xe(),onInput:X=>Te(q.property)},null,8,["type","name","modelValue","onUpdate:modelValue","disabled","classes","onInput"]),t("button",{type:"button",class:ee(["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",H.value[q.property]?"text-neutral-950 dark:text-neutral-50":"text-neutral-300 dark:text-neutral-600"]),disabled:se.value!==null,onClick:X=>we(q.property),title:H.value[q.property]?"Treat as secret":"Treat as text"},[H.value[q.property]?(n(),O(f(Zn),{key:0,size:13})):(n(),O(f(ea),{key:1,size:13}))],10,xg),q.defined&&q.defined.type==="thread"?(n(),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:se.value!==null,onClick:X=>pe(q.property),title:"Remove env"},[j(f(kn),{size:13})],8,bg)):(n(),r("div",yg))]))),128))])):T("",!0),t("div",kg,[(n(!0),r(_e,null,Pe(De.value,q=>(n(),r("div",{key:q.id,class:"thread-settings-new-env-row grid grid-cols-[minmax(90px,1fr)_minmax(0,1.6fr)_auto_auto] items-center gap-1.5"},[j(S,{type:"text",name:`${q.id}_name`,modelValue:q.name,"onUpdate:modelValue":X=>q.name=X,placeholder:"FOOBAR",disabled:se.value!==null,validation:"envName","validation-visibility":"submit","outer-class":"$reset mb-0",classes:xe({mono:!0}),onKeydown:zt(Ne(Oe,["prevent"]),["enter"])},null,8,["name","modelValue","onUpdate:modelValue","disabled","classes","onKeydown"]),j(S,{type:q.secret?"password":"text",name:`${q.id}_value`,modelValue:q.value,"onUpdate:modelValue":X=>q.value=X,placeholder:"Value",disabled:se.value!==null,"outer-class":"$reset mb-0",classes:xe(),onKeydown:zt(Ne(Oe,["prevent"]),["enter"])},null,8,["type","name","modelValue","onUpdate:modelValue","disabled","classes","onKeydown"]),t("button",{type:"button",class:ee(["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",q.secret?"text-neutral-950 dark:text-neutral-50":"text-neutral-300 dark:text-neutral-600"]),disabled:se.value!==null,onClick:X=>q.secret=!q.secret,title:q.secret?"Treat as secret":"Treat as text"},[q.secret?(n(),O(f(Zn),{key:0,size:13})):(n(),O(f(ea),{key:1,size:13}))],10,_g),t("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:se.value!==null,onClick:X=>ie(q.id),title:"Remove new row"},[j(f(kn),{size:13})],8,wg)]))),128)),t("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:se.value!==null,onClick:ge}," Add another env ",8,$g),t("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:se.value!==null},[se.value==="__all__"?(n(),O(qe,{key:0,size:"xs"})):(n(),r("span",Sg,"Save envs"))],8,Cg),Fe.value?(n(),r("p",Tg,v(Fe.value),1)):T("",!0)])]),_:1},8,["disabled"])]),j(dg,{expanded:R.value,"is-dual-ai-agent":Y.value,"selected-side":K.value,"is-continuing":W.value,"is-deleting":x.value,onToggle:c[1]||(c[1]=q=>R.value=!R.value),onUpdateSelectedSide:c[2]||(c[2]=q=>K.value=q),onContinueExecution:U,onDeleteThread:c[3]||(c[3]=q=>k.value=!0)},null,8,["expanded","is-dual-ai-agent","selected-side","is-continuing","is-deleting"])],64)):T("",!0)],2),j(Gr,{modelValue:k.value,"onUpdate:modelValue":c[4]||(c[4]=q=>k.value=q),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:z},null,8,["modelValue"])],2)):T("",!0)]),_:1},8,["enter-active-class","enter-from-class","enter-to-class","leave-active-class","leave-from-class","leave-to-class"])}}}),Ag=st(Ig,[["__scopeId","data-v-8fb885cd"]]),Eg={class:"relative -ml-3 flex min-w-0 w-72 shrink-0 self-stretch border-r border-neutral-200 dark:border-neutral-800"},Lg=["src"],Mg={key:1,class:"flex h-5 w-5 shrink-0 items-center justify-center"},Rg={class:"min-w-0 flex-1"},Dg={class:"block truncate font-medium text-neutral-900 dark:text-neutral-100"},Fg={class:"block truncate text-[10px] leading-tight text-neutral-500 dark:text-neutral-400"},Pg={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"},zg={class:"flex items-center justify-end border-b border-neutral-100 px-1 py-1 dark:border-neutral-800"},Ng={class:"max-h-[min(30rem,70vh)] overflow-y-auto py-1.5 text-[12px]"},jg={key:0,class:"flex items-center gap-2 px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},Bg={key:1,class:"px-3 py-3 text-xs text-red-600 dark:text-red-400"},Og={key:2,class:"px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},Vg=["onClick"],qg=["src"],Hg={key:1,class:"relative z-[1] mt-px flex h-5 w-5 shrink-0 items-center justify-center"},Ug={class:"relative z-[1] min-w-0 flex-1"},Wg={class:"block truncate text-xs font-medium"},Kg={class:"block truncate text-[10px] leading-tight text-neutral-500 dark:text-neutral-400"},zn=Ue({__name:"ThreadAgentConfigurationSelector",props:{nodes:{},selectedNode:{},pinned:{type:Boolean},loading:{type:Boolean},error:{},baseIndentPx:{},levelIndentPx:{}},emits:["select","pin","unpin"],setup(e,{emit:i}){const a=e,s=i,l=b(!1);function o(F){return F?.kind==="subprompt"?"text-fuchsia-600 dark:text-fuchsia-400":"text-sky-600 dark:text-sky-400"}function m(F){s("select",F),l.value=!1}function h(){a.pinned||(l.value=!l.value)}function M(){s("pin"),l.value=!1}return(F,k)=>(n(),r("div",Eg,[t("button",{type:"button",class:ee(["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:h,onKeydown:k[0]||(k[0]=zt(Ne(x=>l.value=!1,["stop"]),["escape"]))},[e.selectedNode?.avatarSrc?(n(),r("img",{key:0,src:e.selectedNode.avatarSrc,alt:"",class:"h-5 w-5 shrink-0 rounded object-cover ring-1 ring-black/10 dark:ring-white/15"},null,8,Lg)):(n(),r("span",Mg,[e.selectedNode?.kind==="model"?(n(),O(f(yn),{key:0,size:15,class:"text-violet-600 dark:text-violet-400"})):(n(),O(f(ln),{key:1,size:15,class:ee(o(e.selectedNode))},null,8,["class"]))])),t("span",Rg,[t("span",Dg,v(e.selectedNode?.label||"Agent Configuration"),1),t("span",Fg,v(e.selectedNode?.subtitle||"Select configuration item"),1)]),e.pinned?T("",!0):(n(),O(f(wt),{key:2,size:14,class:ee(["shrink-0 text-neutral-400",l.value?"rotate-180":""])},null,8,["class"]))],34),e.pinned?(n(),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:k[1]||(k[1]=x=>s("unpin"))},[j(f(On),{size:14})])):T("",!0),l.value&&!e.pinned?(n(),r("div",Pg,[t("div",zg,[t("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:M},[j(f(On),{size:14})])]),t("div",Ng,[e.loading?(n(),r("div",jg,[j(qe,{size:"xs"}),k[2]||(k[2]=t("span",null,"Loading configuration...",-1))])):e.error?(n(),r("div",Bg,v(e.error),1)):e.nodes.length===0?(n(),r("div",Og," No agent configuration available. ")):(n(!0),r(_e,{key:3},Pe(e.nodes,({node:x,depth:L})=>(n(),r("button",{key:x.key,type:"button",class:ee(["group relative flex w-full items-start gap-1.5 px-2 py-1.5 text-left leading-tight transition-colors",e.selectedNode?.key===x.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:pt({paddingLeft:`${e.baseIndentPx+L*e.levelIndentPx}px`}),onClick:V=>m(x.key)},[(n(!0),r(_e,null,Pe(L,V=>(n(),r("span",{key:V,"aria-hidden":"true",class:"pointer-events-none absolute inset-y-0 w-px bg-neutral-200 dark:bg-neutral-800",style:pt({left:`${e.baseIndentPx+(V-1)*e.levelIndentPx}px`})},null,4))),128)),x.avatarSrc?(n(),r("img",{key:0,src:x.avatarSrc,alt:"",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,qg)):(n(),r("span",Hg,[x.kind==="model"?(n(),O(f(yn),{key:0,size:15,class:"text-violet-600 dark:text-violet-400"})):(n(),O(f(ln),{key:1,size:15,class:ee(o(x))},null,8,["class"]))])),t("span",Ug,[t("span",Wg,v(x.label),1),t("span",Kg,v(x.subtitle),1)])],14,Vg))),128))])])):T("",!0)]))}}),Jg={class:"h-full min-h-0 min-w-0 overflow-hidden bg-neutral-100 dark:bg-neutral-950"},Gg={key:1,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},Yg=Ue({__name:"ThreadAgentSettingsPane",props:{agentId:{},agentName:{},agentTitle:{},active:{type:Boolean}},emits:["saved"],setup(e,{emit:i}){const a=e,s=i,{saving:l,apiError:o,saveAgent:m}=zr(),h=b(null),M=I(()=>a.agentId?{id:a.agentId,name:a.agentName||a.agentId,title:a.agentTitle||a.agentName||a.agentId}:null);async function F(k){if(!a.agentId)return;(await m({mode:"edit",data:k,editingId:a.agentId,formNode:h.value?.formNode})).ok&&(await h.value?.markSaveSucceeded(),s("saved",k))}return be(()=>a.active,k=>{k===!1&&h.value?.resetSaveSuccess()}),(k,x)=>(n(),r("div",Jg,[M.value?(n(),O(ps,{key:0,ref_key:"agentModalRef",ref:h,"model-value":!0,"edit-agent":M.value,mode:"edit",inline:"","inline-global-notice":"","inline-accent-tabs":"",saving:f(l),"api-error":f(o),onSave:F},{"nav-leading":Ae(()=>[Lt(k.$slots,"nav-leading")]),_:3},8,["edit-agent","saving","api-error"])):(n(),r("div",Gg," No agent configured "))]))}}),Qg={class:"flex h-full min-h-0 min-w-0 flex-col overflow-hidden bg-neutral-100 dark:bg-neutral-950"},Xg={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"},Zg={key:0,class:"min-w-0 flex-1"},eh={key:1,class:"min-h-0 min-w-0 flex-1"},th={key:2,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},nh=Ue({__name:"ThreadModelSettingsPane",props:{modelId:{},modelName:{},modelProvider:{},modelActual:{},model:{},active:{type:Boolean}},emits:["saved"],setup(e,{emit:i}){const a=e,s=i,{saving:l,saveModel:o}=Nr(),m=b(null),h=b(null),M=["basics","capabilities","fallbacks"],{activeTab:F,scrollToSection:k}=Oa(h,M),x=[{id:"basics",label:"Basic",icon:Vn},{id:"capabilities",label:"Capabilities",icon:jr},{id:"fallbacks",label:"Fallback Models",icon:Br}],L=I(()=>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 V(W){!L.value?.id||!(await o({mode:"edit",data:W,editingId:L.value.id,formNode:m.value?.formNode})).ok||(m.value?.markCurrentPayloadClean?.(),s("saved"))}function R(W){h.value=W}return be(()=>a.active,()=>{m.value?.markCurrentPayloadClean?.()}),(W,K)=>(n(),r("div",Qg,[L.value||W.$slots["nav-leading"]?(n(),r("nav",Xg,[Lt(W.$slots,"nav-leading"),L.value?(n(),r("div",Zg,[j(f(Va),{tabs:x,"active-tab":f(F),"accent-active":"",orientation:"horizontal",onSelect:f(k)},null,8,["active-tab","onSelect"])])):T("",!0)])):T("",!0),L.value?(n(),r("div",eh,[j(f(Un),{config:f(Kn)},{default:Ae(()=>[j(Or,{ref_key:"modelPaneRef",ref:m,"edit-model":L.value,mode:"edit",saving:f(l),"show-global-notice":"",page:"","body-ref":R,onSave:V},null,8,["edit-model","saving"])]),_:1},8,["config"])])):T("",!0),L.value?T("",!0):(n(),r("div",th," No model configured "))]))}}),ah={class:"h-full min-h-0 min-w-0 overflow-hidden bg-neutral-100 dark:bg-neutral-950"},rh={key:1,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},sh=Ue({__name:"ThreadPromptSettingsPane",props:{promptName:{},active:{type:Boolean}},emits:["saved"],setup(e,{emit:i}){const a=e,s=i,{saving:l,apiError:o,savePrompt:m}=Vr(),h=b(0),M=b(0),F=I(()=>a.promptName?{id:a.promptName,name:a.promptName}:null);async function k(x){if(!a.promptName)return;(await m({mode:"edit",data:x,editingId:a.promptName})).ok&&(h.value+=1,s("saved"))}return be(()=>a.active,x=>{x===!1&&(M.value+=1)}),(x,L)=>(n(),r("div",ah,[F.value?(n(),O(Qr,{key:0,"model-value":!0,"edit-prompt":F.value,mode:"edit",inline:"","inline-global-notice":"","inline-accent-tabs":"","save-success-key":h.value,"reset-success-key":M.value,saving:f(l),"api-error":f(o),onSave:k},{"nav-leading":Ae(()=>[Lt(x.$slots,"nav-leading")]),_:3},8,["edit-prompt","save-success-key","reset-success-key","saving","api-error"])):(n(),r("div",rh," No prompt configured "))]))}}),lh={class:"flex h-full min-h-0 flex-col overflow-hidden bg-neutral-100 dark:bg-neutral-950"},oh={class:"flex min-h-0 min-w-0 flex-1"},ih={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"},dh={class:"flex h-8 shrink-0 items-center justify-end border-b border-neutral-200 px-1 dark:border-neutral-800"},uh={class:"min-h-0 flex-1 overflow-y-auto py-1.5 text-[12px]"},ch={key:0,class:"flex items-center gap-2 px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},fh={key:1,class:"px-3 py-3 text-xs text-red-600 dark:text-red-400"},ph={key:2,class:"px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},vh=["onClick"],mh=["src"],gh={key:1,class:"relative z-[1] mt-px flex h-5 w-5 shrink-0 items-center justify-center"},hh={class:"relative z-[1] min-w-0 flex-1"},xh={class:"block truncate text-xs font-medium"},bh={class:"block truncate text-[10px] leading-tight text-neutral-500 dark:text-neutral-400"},yh={class:"min-w-0 flex-1 overflow-hidden"},kh={key:3,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},Ta=5,tn=7,nn=9,_h=Ue({__name:"ThreadAgentConfigurationPane",props:{agentId:{},agentName:{},agentTitle:{},agentType:{},sideAPromptName:{},sideBPromptName:{},active:{type:Boolean}},emits:["agentSaved","saved"],setup(e,{emit:i}){const a=e,s=i,l=b(null),o=b(null),m=b(!1),h=b(null),M=b({}),F=b({}),k=new Map,x=new Map,L=Cr("agentbuilder.threadAgentConfiguration.pinnedTree",!1);let V=0;const R=I(()=>a.agentName||a.agentId||null),W=I(()=>!l.value||!o.value?null:H(l.value,o.value)),K=I(()=>W.value?Q(W.value):null),G=I(()=>{if(!l.value)return[];const P=[],xe=(fe,we)=>{P.push({node:fe,depth:we});for(const Te of fe.children)xe(Te,we+1)};return xe(l.value,0),P}),w=I(()=>{const P=W.value;return!P||!J(P)?null:P}),E=I(()=>{const P=W.value;return!P||!P.promptName||P.kind!=="prompt"&&P.kind!=="subprompt"?null:P}),B=I(()=>{const P=W.value;return!P||P.kind!=="model"||!P.modelId?null:P}),re=I(()=>W.value||l.value);function J(P){return P.kind==="agent"||P.kind==="handoff"||P.kind==="subagent"}function Q(P){return P.kind==="model"?`model:${P.modelId||P.modelName}`:P.promptName?`prompt:${P.promptName}`:`agent:${P.agentName||P.agentId}`}function H(P,xe){if(P.key===xe)return P;for(const fe of P.children){const we=H(fe,xe);if(we)return we}return null}function me(P,xe){if(Q(P)===xe)return P;for(const fe of P.children){const we=me(fe,xe);if(we)return we}return null}async function Z(){if(!(Object.keys(M.value).length>0))try{M.value=await sn("/tools")}catch{M.value={}}}async function Me(){if(!(Object.keys(F.value).length>0))try{const P=await sn("/models"),xe={};for(const fe of P.models||[])xe[fe.id]=fe,xe[fe.name]=fe;F.value=xe}catch{F.value={}}}async function De(P){if(k.has(P))return k.get(P)??null;try{const xe=await sn(`/agents/${encodeURIComponent(P)}`);return k.set(P,xe.agent),xe.agent}catch{return k.set(P,null),null}}async function se(P){if(x.has(P))return x.get(P)??null;const xe=await Zr(P);return x.set(P,xe),xe}function Fe(P){const xe=M.value[P.name]?.type;return xe==="prompt"?"subprompt":xe==="handoff"?"handoff":xe==="subagent"||xe==="agent"?"subagent":null}function N(P){if(!P)return null;const xe=F.value[P];return xe||Object.values(F.value).find(fe=>fe.name===P)||null}function de(P,xe){if(!P.model_id)return null;const fe=N(P.model_id),we=fe?.provider||P.model_provider||null,Te=fe?.model||null,pe=[we,Te].filter(Boolean).join(" · ");return{key:`${xe}/model:${fe?.id||P.model_id}`,kind:"model",label:fe?.name||P.model_name||P.model_id,subtitle:pe||"Model",model:fe,modelId:fe?.id||P.model_id,modelName:fe?.name||P.model_name||P.model_id,modelProvider:we||void 0,modelActual:Te||P.model_id,children:[]}}async function oe(P,xe,fe,we,Te,pe,ge){const ie=await De(P),Ce=ie?.name||P,je=ie?.id||P,Oe=ie?.title||ge||Ce,U={key:`${fe}/agent:${Ce}`,kind:xe,label:Oe,subtitle:xe==="agent"?"Agent":xe==="handoff"?"Handoff agent":"Sub-agent",agentId:je,agentName:Ce,agentTitle:Oe,avatarSrc:ie?.icon||_n(Ce),children:[]};if(we>=Ta)return U;if(Te.has(Ce))return U.subtitle=`${U.subtitle} · already shown`,U;const z=new Set(Te).add(Ce),u=ye(ie,xe==="agent");return U.children=(await Promise.all(u.map((c,S)=>ve(c.name,"prompt",`${U.key}/prompt:${S}:${c.name}`,we+1,z,new Set(pe),c.label)))).filter(c=>!!c),U}function ye(P,xe){if(P){const we=[];return P.side_a_agent_prompt&&we.push({name:P.side_a_agent_prompt,label:`${P.side_a_label||"Side A"} prompt`}),P.type==="dual_ai"&&P.side_b_agent_prompt&&we.push({name:P.side_b_agent_prompt,label:`${P.side_b_label||"Side B"} prompt`}),we}if(!xe)return[];const fe=[];return a.sideAPromptName&&fe.push({name:a.sideAPromptName,label:"Side A prompt"}),a.agentType==="dual_ai"&&a.sideBPromptName&&fe.push({name:a.sideBPromptName,label:"Side B prompt"}),fe}async function ve(P,xe,fe,we,Te,pe,ge){const ie=await se(P),Ce={key:fe,kind:xe,label:ie?.name||P,subtitle:xe==="subprompt"?"Subprompt":ge,promptName:ie?.name||P,children:[]};if(we>=Ta||!ie)return Ce;if(pe.has(ie.name))return Ce.subtitle=`${Ce.subtitle} · already shown`,Ce;const je=new Set(pe).add(ie.name),Oe=[],U=de(ie,Ce.key);U&&Oe.push(U);for(const z of ie.tools||[]){const u=Fe(z);if(u)if(u==="subprompt"){const c=await ve(z.name,"subprompt",`${Ce.key}/subprompt:${z.name}`,we+1,new Set(Te),je,"Subprompt");c&&Oe.push(c)}else Oe.push(await oe(z.name,u,`${Ce.key}/${u}:${z.name}`,we+1,new Set(Te),je))}return Ce.children=Oe,Ce}async function he(){const P=R.value;if(!a.active||!P)return;const xe=++V,fe=K.value;m.value=!0,h.value=null;try{await Promise.all([Z(),Me()]);const we=await oe(P,"agent","root",0,new Set,new Set,a.agentTitle);if(xe!==V)return;l.value=we;const Te=fe?me(we,fe):null;o.value=Te?.key||we.key}catch{xe===V&&(l.value=null,o.value=null,h.value="Agent configuration could not be loaded.")}finally{xe===V&&(m.value=!1)}}function Le(P){o.value=P.key}function ae(P){o.value=P}function Y(P){return P.kind==="subprompt"?"text-fuchsia-600 dark:text-fuchsia-400":"text-sky-600 dark:text-sky-400"}function ce(P){return P.kind==="model"?"text-violet-600 dark:text-violet-400":Y(P)}function ne(){L.value=!0}function le(){L.value=!1}function Ie(P){W.value?.key===l.value?.key&&s("agentSaved",P),s("saved"),he()}function Re(){s("saved"),he()}function We(){F.value={},s("saved"),he()}return be(()=>[a.active,a.agentId,a.agentName,a.sideAPromptName,a.sideBPromptName],()=>{a.active&&he()},{immediate:!0}),(P,xe)=>(n(),r("div",lh,[t("div",oh,[f(L)?(n(),r("aside",ih,[t("div",dh,[t("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:le},[j(f(On),{size:14})])]),t("div",uh,[m.value?(n(),r("div",ch,[j(qe,{size:"xs"}),xe[0]||(xe[0]=t("span",null,"Loading configuration...",-1))])):h.value?(n(),r("div",fh,v(h.value),1)):G.value.length===0?(n(),r("div",ph," No agent configuration available. ")):(n(!0),r(_e,{key:3},Pe(G.value,({node:fe,depth:we})=>(n(),r("button",{key:fe.key,type:"button",class:ee(["group relative flex w-full items-start gap-1.5 px-2 py-1.5 text-left leading-tight transition-colors",o.value===fe.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:pt({paddingLeft:`${tn+we*nn}px`}),onClick:Te=>Le(fe)},[(n(!0),r(_e,null,Pe(we,Te=>(n(),r("span",{key:Te,"aria-hidden":"true",class:"pointer-events-none absolute inset-y-0 w-px bg-neutral-200 dark:bg-neutral-800",style:pt({left:`${tn+(Te-1)*nn}px`})},null,4))),128)),fe.avatarSrc?(n(),r("img",{key:0,src:fe.avatarSrc,alt:"",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,mh)):(n(),r("span",gh,[fe.kind==="model"?(n(),O(f(yn),{key:0,size:15,class:"text-violet-600 dark:text-violet-400"})):(n(),O(f(ln),{key:1,size:15,class:ee(ce(fe))},null,8,["class"]))])),t("span",hh,[t("span",xh,v(fe.label),1),t("span",bh,v(fe.subtitle),1)])],14,vh))),128))])])):T("",!0),t("section",yh,[w.value?(n(),O(Yg,{key:w.value.key,class:"h-full","agent-id":w.value.agentId||w.value.agentName||null,"agent-name":w.value.agentName,"agent-title":w.value.agentTitle,active:e.active,onSaved:Ie},Ot({_:2},[f(L)?void 0:{name:"nav-leading",fn:Ae(()=>[j(zn,{nodes:G.value,"selected-node":re.value,pinned:f(L),loading:m.value,error:h.value,"base-indent-px":tn,"level-indent-px":nn,onSelect:ae,onPin:ne,onUnpin:le},null,8,["nodes","selected-node","pinned","loading","error"])]),key:"0"}]),1032,["agent-id","agent-name","agent-title","active"])):E.value?(n(),O(sh,{key:E.value.key,class:"h-full","prompt-name":E.value.promptName||null,active:e.active,onSaved:Re},Ot({_:2},[f(L)?void 0:{name:"nav-leading",fn:Ae(()=>[j(zn,{nodes:G.value,"selected-node":re.value,pinned:f(L),loading:m.value,error:h.value,"base-indent-px":tn,"level-indent-px":nn,onSelect:ae,onPin:ne,onUnpin:le},null,8,["nodes","selected-node","pinned","loading","error"])]),key:"0"}]),1032,["prompt-name","active"])):B.value?(n(),O(nh,{key:B.value.key,class:"h-full","model-id":B.value.modelId||null,"model-name":B.value.modelName,"model-provider":B.value.modelProvider,"model-actual":B.value.modelActual,model:B.value.model||null,active:e.active,onSaved:We},Ot({_:2},[f(L)?void 0:{name:"nav-leading",fn:Ae(()=>[j(zn,{nodes:G.value,"selected-node":re.value,pinned:f(L),loading:m.value,error:h.value,"base-indent-px":tn,"level-indent-px":nn,onSelect:ae,onPin:ne,onUnpin:le},null,8,["nodes","selected-node","pinned","loading","error"])]),key:"0"}]),1032,["model-id","model-name","model-provider","model-actual","model","active"])):(n(),r("div",kh," Select an item to edit. "))])])]))}}),wh={class:"flex h-full min-h-0 flex-col overflow-hidden"},$h={class:"flex h-12 shrink-0 items-center justify-between border-b border-neutral-300 px-4 dark:border-neutral-700"},Ch=["id","aria-selected","aria-controls","onClick"],Sh={class:"min-w-0 max-w-[11rem] truncate"},Th=["aria-expanded"],Ih={key:0,class:"absolute right-0 top-full z-50 mt-1"},Ah={class:"min-w-0 truncate"},Eh={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"},Lh={class:"pointer-events-none absolute -left-[9999px] top-0 flex h-8 items-center gap-1 opacity-0"},Mh={class:"max-w-[11rem] truncate"},Rh={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"},Dh={type:"button",tabindex:"-1",class:"inline-flex h-8 w-8 items-center justify-center rounded-md"},Fh={class:"min-h-0 flex-1 overflow-hidden"},Yh=Ue({__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:i,emit:a}){const s=e,l=a,o=b(s.activeTab??"logs"),m=b(null),h=b(null),{thread:M,refetch:F}=Gn(I(()=>s.threadId)),k=b(),x=b(),L=b(),V=b(0),R=b(0),W=b(0),K=I(()=>M.value?.agent?.type||s.agentType||null),G=I(()=>M.value?.agent?.id||s.agentId||null),w=I(()=>M.value?.agent?.name||s.agentName||G.value||null),E=I(()=>L.value!==void 0?L.value:M.value?.agent?.title||s.agentTitle||w.value||null),B=I(()=>k.value!==void 0?k.value:M.value?.agent?.side_a_agent_prompt||s.sideAPromptName||null),re=I(()=>x.value!==void 0?x.value:M.value?.agent?.side_b_agent_prompt||s.sideBPromptName||null),J=I(()=>{const U=[{id:"logs",label:"Logs",icon:Sr},{id:"files",label:"Files",icon:bn,count:V.value},{id:"kv",label:"KV Store",icon:Tr,count:R.value},{id:"effects",label:"Effects",icon:_t,count:W.value}];return G.value&&U.push({id:"config",label:"Agent Configuration",icon:Aa}),U.push({id:"info",label:"Thread Settings",icon:Da}),U}),Q=b({}),H=b({}),me=b(null),Z=b(null),Me=b(null),De=b(0),se=b({}),Fe=b(36),N=b({left:0,width:0}),de=b(!1);let oe=null;const ye=U=>(U.id==="files"||U.id==="kv"||U.id==="effects")&&typeof U.count=="number"&&U.count>0,ve=U=>U>99?"99+":String(U),he=(U,z)=>{z instanceof HTMLButtonElement?Q.value[U]=z:delete Q.value[U]},Le=(U,z)=>{z instanceof HTMLButtonElement?H.value[U]=z:delete H.value[U]},ae=U=>{const z=U instanceof HTMLButtonElement?U:null;Z.value=z},Y=()=>{const U={};for(const z of J.value){const u=H.value[z.id];u&&(U[z.id]=Math.ceil(u.getBoundingClientRect().width))}se.value=U,Z.value&&(Fe.value=Math.ceil(Z.value.getBoundingClientRect().width))},ce=()=>{De.value=Math.floor(me.value?.getBoundingClientRect().width??0)},ne=()=>{ce(),Y(),Be(fe)},le=I(()=>{const U=J.value,z=De.value;if(!z)return U;const u=4;if(U.reduce((Ve,Ke)=>Ve+(se.value[Ke.id]??88),0)+Math.max(0,U.length-1)*u<=z)return U;const S=Math.max(0,z-Fe.value-u),q=[];let X=0;for(const Ve of U){const Ke=se.value[Ve.id]??88,Je=X+Ke+(q.length>0?u:0);Je<=S&&(q.push(Ve.id),X=Je)}if(!q.includes(o.value)&&U.some(Ve=>Ve.id===o.value)){const Ve=se.value[o.value]??88;for(;q.length>0&&X+Ve+(q.length>0?u:0)>S;){const Ke=q.pop();if(!Ke)break;X-=(se.value[Ke]??88)+(q.length>0?u:0)}q.push(o.value)}const Ee=new Set(q);return U.filter(Ve=>Ee.has(Ve.id))}),Ie=I(()=>{const U=new Set(le.value.map(z=>z.id));return J.value.filter(z=>!U.has(z.id))}),Re=()=>{de.value=!1},We=()=>{de.value=!de.value},P=U=>{if(!de.value)return;const z=U.target;Me.value?.contains(z)||Re()},xe=U=>{U.key==="Escape"&&de.value&&(Re(),Z.value?.focus())},fe=()=>{const U=Q.value[o.value];if(!U||!le.value.some(z=>z.id===o.value)){N.value={left:0,width:0};return}N.value={left:U.offsetLeft,width:U.offsetWidth}},we=U=>(Oe("logs"),U()),Te=U=>(Oe("effects"),U()),pe=U=>{const z=typeof U.title=="string"?U.title:null,u=typeof U.side_a_agent_prompt=="string"?U.side_a_agent_prompt:null,c=typeof U.side_b_agent_prompt=="string"?U.side_b_agent_prompt:null;L.value=z,k.value=u,x.value=c,s.threadId&&F(),l("threadUpdated")},ge=U=>{V.value=U},ie=U=>{R.value=U},Ce=U=>{W.value=U},je=U=>{Te(()=>h.value?.selectEffectByReference(U))},Oe=U=>{J.value.some(z=>z.id===U)||(U="logs"),o.value=U,Re(),Be(fe),l("update:activeTab",U)};return be(()=>s.activeTab,U=>{U&&U!==o.value&&(o.value=U),Be(fe)}),be(J,U=>{U.some(z=>z.id===o.value)?Be(ne):Oe("logs")}),be(()=>G.value,()=>{L.value=void 0,k.value=void 0,x.value=void 0}),be(()=>s.threadId,()=>{V.value=0,R.value=0,W.value=0}),be(le,()=>{Be(fe)}),be(Ie,U=>{U.length===0&&Re()}),Nt(()=>{Be(ne),me.value&&(oe=new ResizeObserver(ne),oe.observe(me.value)),window.addEventListener("resize",ne),document.addEventListener("pointerdown",P),document.addEventListener("keydown",xe)}),Mt(()=>{oe?.disconnect(),window.removeEventListener("resize",ne),document.removeEventListener("pointerdown",P),document.removeEventListener("keydown",xe)}),i({scrollToLog:U=>we(()=>m.value?.scrollToLog(U)),selectLogById:U=>we(()=>m.value?.selectLogById(U)),removeLogsByIds:U=>m.value?.removeLogsByIds(U),loadUntilLogId:U=>we(()=>m.value?.loadUntilLogId(U)),hasLog:U=>m.value?.hasLog(U)??!1,getLog:U=>m.value?.getLog(U)??null,setLoadingForLog:U=>we(()=>m.value?.setLoadingForLog(U)),waitForLogRow:U=>we(()=>m.value?.waitForLogRow(U)),selectEffectById:U=>Te(()=>h.value?.selectEffectById(U)),selectEffectByReference:U=>Te(()=>h.value?.selectEffectByReference(U))}),(U,z)=>(n(),r("div",wh,[t("div",$h,[t("div",{ref_key:"tabListRef",ref:me,class:"relative flex h-8 min-w-0 flex-1 items-center gap-1 overflow-visible",role:"tablist","aria-label":"Thread inspector"},[t("div",{class:ee(["pointer-events-none absolute bottom-0 top-0 rounded-md bg-neutral-900 dark:bg-neutral-100 transition-transform duration-300 ease-out",N.value.width>0?"opacity-100":"opacity-0"]),style:pt({width:`${N.value.width}px`,transform:`translateX(${N.value.left}px)`})},null,6),(n(!0),r(_e,null,Pe(le.value,u=>(n(),r("button",{key:u.id,ref_for:!0,ref:c=>he(u.id,c),id:`thread-inspector-tab-${u.id}`,type:"button",role:"tab","aria-selected":o.value===u.id,"aria-controls":`thread-inspector-panel-${u.id}`,class:ee(["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",o.value===u.id?"text-white dark:text-neutral-900":"text-neutral-500 hover:text-neutral-900 dark:text-neutral-400 dark:hover:text-neutral-100"]),onClick:c=>Oe(u.id)},[(n(),O(At(u.icon),{size:15,class:"shrink-0"})),t("span",Sh,v(u.label),1),ye(u)?(n(),r("span",{key:0,class:ee(["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",o.value===u.id?"bg-white/20 text-current dark:bg-black/10":"bg-neutral-100 text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400"])},v(ve(u.count??0)),3)):T("",!0)],10,Ch))),128)),Ie.value.length>0?(n(),r("div",{key:0,ref_key:"overflowRootRef",ref:Me,class:"relative z-20 shrink-0"},[t("button",{ref:ae,type:"button",class:ee(["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",de.value?"bg-neutral-100 text-neutral-900 dark:bg-neutral-800 dark:text-neutral-100":""]),"aria-label":"More inspector tabs","aria-expanded":de.value,"aria-haspopup":"menu",onClick:Ne(We,["stop"])},[j(f(ta),{size:17})],10,Th),de.value?(n(),r("div",Ih,[j(f(ja),{width:"w-56",shadow:{offsetX:4,offsetY:4,intensity:.32}},{default:Ae(()=>[(n(!0),r(_e,null,Pe(Ie.value,u=>(n(),O(f(Xr),{key:u.id,active:o.value===u.id,onClick:c=>Oe(u.id)},{default:Ae(()=>[(n(),O(At(u.icon),{class:"h-4 w-4 shrink-0 text-neutral-500 dark:text-neutral-400"})),t("span",Ah,v(u.label),1),ye(u)?(n(),r("span",Eh,v(ve(u.count??0)),1)):T("",!0)]),_:2},1032,["active","onClick"]))),128))]),_:1})])):T("",!0)],512)):T("",!0),t("div",Lh,[(n(!0),r(_e,null,Pe(J.value,u=>(n(),r("button",{key:`measure-${u.id}`,ref_for:!0,ref:c=>Le(u.id,c),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"},[(n(),O(At(u.icon),{size:15,class:"shrink-0"})),t("span",Mh,v(u.label),1),ye(u)?(n(),r("span",Rh,v(ve(u.count??0)),1)):T("",!0)]))),128)),t("button",Dh,[j(f(ta),{size:17})])])],512)]),t("div",Fh,[rt(j(Lf,{id:"thread-inspector-panel-logs",role:"tabpanel","aria-labelledby":"thread-inspector-tab-logs",ref_key:"logsPaneRef",ref:m,class:"h-full","thread-id":e.threadId,"selected-log-id":e.selectedLogId,"hovered-log-id":e.hoveredLogId,onLogClick:z[0]||(z[0]=u=>l("logClick",u)),onLogHover:z[1]||(z[1]=u=>l("logHover",u)),onLogsLoaded:z[2]||(z[2]=u=>l("logsLoaded",u)),onEffectClick:je},null,8,["thread-id","selected-log-id","hovered-log-id"]),[[ht,o.value==="logs"]]),rt(j(Xv,{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:o.value==="files","onUpdate:path":z[3]||(z[3]=u=>l("update:filePath",u)),onCountChanged:ge},null,8,["thread-id","path","refresh-key","active"]),[[ht,o.value==="files"]]),rt(j(Nm,{id:"thread-inspector-panel-kv",role:"tabpanel","aria-labelledby":"thread-inspector-tab-kv",class:"h-full","thread-id":e.threadId,active:o.value==="kv",onCountChanged:ie},null,8,["thread-id","active"]),[[ht,o.value==="kv"]]),rt(j(av,{id:"thread-inspector-panel-effects",role:"tabpanel","aria-labelledby":"thread-inspector-tab-effects",ref_key:"effectsPaneRef",ref:h,class:"h-full","thread-id":e.threadId,active:o.value==="effects","selected-effect-id":e.selectedEffectId,"selected-effect-ref":e.selectedEffectRef,onCountChanged:Ce},null,8,["thread-id","active","selected-effect-id","selected-effect-ref"]),[[ht,o.value==="effects"]]),rt(j(Ag,{id:"thread-inspector-panel-info",role:"tabpanel","aria-labelledby":"thread-inspector-tab-info",class:"h-full","thread-id":e.threadId,show:o.value==="info",embedded:"",onThreadDeleted:z[4]||(z[4]=u=>l("threadDeleted",u)),onEditThread:z[5]||(z[5]=u=>l("editThread")),onThreadUpdated:z[6]||(z[6]=u=>l("threadUpdated"))},null,8,["thread-id","show"]),[[ht,o.value==="info"]]),G.value?rt((n(),O(_h,{key:0,id:"thread-inspector-panel-config",role:"tabpanel","aria-labelledby":"thread-inspector-tab-config",class:"h-full","agent-id":G.value,"agent-name":w.value,"agent-title":E.value,"agent-type":K.value,"side-a-prompt-name":B.value,"side-b-prompt-name":re.value,active:o.value==="config",onAgentSaved:pe,onSaved:z[7]||(z[7]=u=>l("threadUpdated"))},null,8,["agent-id","agent-name","agent-title","agent-type","side-a-prompt-name","side-b-prompt-name","active"])),[[ht,o.value==="config"]]):T("",!0)])]))}});export{ps as A,Oi as C,Jh as _,Zr as a,Kh as b,ss as c,Uh as d,qa as e,sn as f,ts as g,Gh as h,Yh as i,Jt as j,Wh as s,Gn as u};
|
|
26
|
+
}`,yg=We({__name:"ThreadKvStorePane",props:{threadId:{},active:{type:Boolean,default:!0}},emits:["count-changed"],setup(e,{emit:i}){const a=e,s=i,l=x([]),o=x(0),p=x(""),h=x(!1),L=x(!1),M=x(!1),w=x(!1),y=x(null),T=x(null),B=x(null),E=x("view"),H=x(""),U=x(Wt),G=x(null),q=x(Wt),j=x(50),J=x(new Map);let ve=null,ae=null,Q=!1,W=0;const fe=()=>{Ce()&&ne({preferredKey:B.value,quiet:!0})},X=A(()=>B.value?l.value.find(ce=>ce.key===B.value)??null:null),Re=A(()=>l.value.length<o.value),Fe=A(()=>{const ce=l.value.length;return a.threadId?o.value===0?p.value.trim()?"No matches":"No values":`${ce} of ${o.value}`:""}),re=A(()=>Pn(X.value?.value,X.value?.parseError)),De=A(()=>X.value?.parseError?"text":"json"),P=A(()=>E.value==="create"),de=A(()=>P.value||!!X.value),le=A(()=>de.value&&(H.value!==(G.value??"")||U.value!==q.value)),ye=A(()=>!le.value&&X.value?.parseError?X.value.parseError:null);function me(ce){switch(ce){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 pe(ce,ge){try{const oe=await ce.json();return typeof oe.error=="string"?oe.error:ge}catch{return ge}}function Me(ce){if(P.value||le.value)return;const ge=ce?l.value.find(oe=>oe.key===ce):null;if(ge){B.value=ge.key;return}B.value&&l.value.some(oe=>oe.key===B.value)||(B.value=l.value[0]?.key??null)}function Ce(){return!!a.threadId&&a.active&&!P.value&&!le.value&&!h.value&&!L.value&&!M.value&&!w.value&&!Q&&(typeof document>"u"||document.visibilityState==="visible")}async function ne(ce={}){if(!a.threadId){l.value=[],o.value=0,B.value=null;return}const ge=++W,oe=ce.append===!0,Ie=ce.quiet===!0;Ie&&(Q=!0),Ie||(oe?L.value=!0:h.value=!0),Ie||(y.value=null);const je=new URLSearchParams,Oe=Math.min(Math.max(l.value.length,Ca),200);je.set("limit",String(oe?Ca:Oe)),je.set("offset",String(oe?l.value.length:0));const V=p.value.trim();V&&je.set("search",V);try{const F=await fetch(He(`/api/threads/${a.threadId}/kv?${je}`));if(!F.ok)throw new Error(await pe(F,"Failed to load key-value store"));const u=Fp(await F.json());if(ge!==W)return;l.value=oe?[...l.value,...u.values]:u.values,o.value=u.total,Me(ce.preferredKey)}catch(F){ge===W&&(!Ie||l.value.length===0)&&(y.value=F instanceof Error?F.message:"Failed to load key-value store")}finally{Ie&&(Q=!1),ge===W&&!Ie&&(h.value=!1,L.value=!1)}}function Z(){ve&&clearTimeout(ve),ve=setTimeout(()=>{ne()},250)}function K(ce){B.value=ce.key,E.value="view",T.value=null,ue(ce)}function xe(){G.value=null,q.value=Wt,H.value="",U.value=Wt}function ue(ce){if(!ce){xe();return}const ge=ce.parseError?ce.serialized:Ka(ce.value);G.value=ce.key,q.value=ge,H.value=ce.key,U.value=ge,T.value=null}function Se(ce,ge){ge instanceof HTMLElement?J.value.set(ce,ge):J.value.delete(ce)}async function Ue(ce){await Be(),J.value.get(ce)?.focus({preventScroll:!0})}function D(ce,ge){const oe=l.value.findIndex(Oe=>Oe.key===ge.key);if(oe<0)return;let Ie=oe;if(ce.key==="ArrowDown")Ie=Math.min(l.value.length-1,oe+1);else if(ce.key==="ArrowUp")Ie=Math.max(0,oe-1);else if(ce.key==="Home")Ie=0;else if(ce.key==="End")Ie=l.value.length-1;else return;ce.preventDefault();const je=l.value[Ie];je&&(K(je),Ue(je.key))}function be(){B.value=null,G.value=null,q.value=Wt,H.value="",U.value=Wt,T.value=null,E.value="create"}function se(){if(T.value=null,P.value){E.value="view",Me();return}ue(X.value)}async function we(){if(!a.threadId)return;const ce=H.value;if(!ce.trim()){T.value="Key is required";return}const ge=Pp(U.value);if(!ge.ok){T.value=ge.error;return}M.value=!0,T.value=null;try{const oe=await fetch(He(`/api/threads/${a.threadId}/kv`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:ce,value:ge.value,previousKey:P.value?void 0:G.value})});if(!oe.ok)throw new Error(await pe(oe,"Failed to save value"));B.value=ce,E.value="view",await ne({preferredKey:ce})}catch(oe){T.value=oe instanceof Error?oe.message:"Failed to save value"}finally{M.value=!1}}async function Te(){if(!a.threadId||!X.value)return;const ce=X.value.key;if(window.confirm(`Delete ${ce}?`)){w.value=!0,y.value=null;try{const ge=new URLSearchParams({key:ce}),oe=await fetch(He(`/api/threads/${a.threadId}/kv?${ge}`),{method:"DELETE"});if(!oe.ok)throw new Error(await pe(oe,"Failed to delete value"));B.value=null,E.value="view",xe(),await ne()}catch(ge){y.value=ge instanceof Error?ge.message:"Failed to delete value"}finally{w.value=!1}}}return he(()=>a.threadId,()=>{p.value="",E.value="view",T.value=null,xe(),ne()},{immediate:!0}),he(p,Z),he(o,ce=>{p.value.trim()||s("count-changed",ce)},{immediate:!0}),he(X,ce=>{P.value||le.value||ue(ce)}),he(()=>[a.threadId,a.active],()=>{ae&&clearInterval(ae),ae=null,!(!a.threadId||!a.active)&&(ae=setInterval(()=>{Ce()&&ne({preferredKey:B.value,quiet:!0})},bg))},{immediate:!0}),typeof document<"u"&&document.addEventListener("visibilitychange",fe),Mt(()=>{ve&&clearTimeout(ve),ae&&clearInterval(ae),typeof document<"u"&&document.removeEventListener("visibilitychange",fe)}),(ce,ge)=>(n(),N(Tn,{"height-percent":j.value,"onUpdate:heightPercent":ge[6]||(ge[6]=oe=>j.value=oe),"storage-key":xg,title:"Resize key-value browser and detail"},Ot({main:Ee(()=>[t("div",zp,[t("div",jp,[t("div",Bp,[z(f(zn),{size:14,class:"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-neutral-400"}),rt(t("input",{"onUpdate:modelValue":ge[0]||(ge[0]=oe=>p.value=oe),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:ge[1]||(ge[1]=Nt(ze(oe=>ne(),["prevent"]),["enter"]))},null,544),[[xn,p.value]])]),t("div",Op,m(Fe.value),1),t("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||h.value,title:"Refresh values","aria-label":"Refresh values",onClick:ge[2]||(ge[2]=oe=>ne())},[h.value?(n(),N(qe,{key:0,size:"xs"})):(n(),N(f(Wn),{key:1,size:15}))],8,Vp),t("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:be},[z(f(Ea),{size:15}),ge[7]||(ge[7]=t("span",null,"New",-1))],8,qp)]),t("div",Hp,[e.threadId?h.value&&l.value.length===0?(n(),r("div",Wp,[z(qe)])):y.value?(n(),r("div",Kp,m(y.value),1)):l.value.length===0?(n(),r("div",Jp,[z(f(Xn),{class:"mx-auto mb-2 h-8 w-8 opacity-40"}),Ge(" "+m(p.value.trim()?"No matching values":"No stored values"),1)])):(n(),r("div",Gp,[t("div",Yp,[t("table",Qp,[ge[8]||(ge[8]=t("colgroup",null,[t("col",{class:"w-[23rem]"}),t("col"),t("col",{class:"w-24"}),t("col",{class:"w-20"}),t("col",{class:"w-32"})],-1)),ge[9]||(ge[9]=t("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"},[t("tr",null,[t("th",{scope:"col",class:"px-4 py-2 font-medium"},"Key"),t("th",{scope:"col",class:"px-3 py-2 font-medium"},"Value"),t("th",{scope:"col",class:"px-3 py-2 text-left font-medium"},"Type"),t("th",{scope:"col",class:"px-3 py-2 text-right font-medium"},"Size"),t("th",{scope:"col",class:"px-4 py-2 text-right font-medium"},"Updated")])],-1)),t("tbody",Xp,[(n(!0),r($e,null,Ne(l.value,oe=>(n(),r("tr",{key:oe.key,ref_for:!0,ref:Ie=>Se(oe.key,Ie),tabindex:"0","aria-selected":B.value===oe.key,class:ee(["cursor-pointer transition-colors focus:outline-none",B.value===oe.key?"agents-surface-selected":"hover:bg-neutral-50 dark:hover:bg-neutral-900"]),onClick:Ie=>K(oe),onKeydown:[Nt(ze(Ie=>K(oe),["prevent"]),["enter"]),Nt(ze(Ie=>K(oe),["prevent"]),["space"]),Ie=>D(Ie,oe)]},[t("td",eg,[t("div",tg,m(oe.key),1)]),t("td",ng,[t("div",ag,m(f(Np)(oe.value,oe.parseError)),1)]),t("td",rg,[t("span",{class:ee(["inline-flex rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",me(f(Pn)(oe.value,oe.parseError))])},m(f(Pn)(oe.value,oe.parseError)),3)]),t("td",sg,m(f(_a)(oe.size)),1),t("td",lg,m(f($a)(oe.updatedAt)),1)],42,Zp))),128))])])]),Re.value?(n(),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:L.value,onClick:ge[3]||(ge[3]=oe=>ne({append:!0}))},[L.value?(n(),N(qe,{key:0,size:"xs"})):S("",!0),ge[10]||(ge[10]=t("span",null,"Load more",-1))],8,og)):S("",!0)])):(n(),r("div",Up," Select a thread to view its key-value store "))])])]),_:2},[de.value?{name:"detail",fn:Ee(()=>[t("div",ig,[t("div",dg,[t("div",ug,[de.value?(n(),r("div",cg,[z(f(Xn),{size:15,class:"shrink-0 text-neutral-400"}),rt(t("input",{"onUpdate:modelValue":ge[4]||(ge[4]=oe=>H.value=oe),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),[[xn,H.value]]),X.value?(n(),r("span",{key:0,class:ee(["shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",me(re.value)])},m(re.value),3)):S("",!0)])):S("",!0),X.value?(n(),r("div",fg,m(f(_a)(X.value.size))+" | "+m(f($a)(X.value.updatedAt)),1)):S("",!0)]),t("div",vg,[de.value?(n(),r($e,{key:0},[t("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:M.value||!le.value,onClick:we},[M.value?(n(),N(qe,{key:0,size:"xs"})):(n(),N(f(Pa),{key:1,size:14})),ge[11]||(ge[11]=t("span",null,"Save",-1))],8,pg),le.value?(n(),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:se},[z(f(Et),{size:15})])):S("",!0),X.value?(n(),N(Jn,{key:1,content:U.value,variant:"ghost",size:"xs"},null,8,["content"])):S("",!0),X.value?(n(),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:w.value,title:"Delete value","aria-label":"Delete value",onClick:Te},[w.value?(n(),N(qe,{key:0,size:"xs"})):(n(),N(f(kn),{key:1,size:15}))],8,gg)):S("",!0)],64)):S("",!0)])]),t("div",mg,[T.value?(n(),r("div",hg,m(T.value),1)):S("",!0),de.value?(n(),N(Qn,{key:1,modelValue:U.value,"onUpdate:modelValue":ge[5]||(ge[5]=oe=>U.value=oe),class:"min-h-0 flex-1",language:De.value,error:ye.value,"word-wrap":"on","format-on-blur":"",framed:!1,placeholder:"{\\n \\n}"},null,8,["modelValue","language","error"])):S("",!0)])])]),key:"0"}:void 0]),1032,["height-percent"]))}}),kg=["onClick"],wg=["value","placeholder","disabled"],_g=We({__name:"TagInput",props:{modelValue:{},placeholder:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(e,{emit:i}){const a=e,s=i,l=x(""),o=x(null),p=y=>{const T=y.trim().toLowerCase();T&&!a.modelValue.includes(T)&&s("update:modelValue",[...a.modelValue,T]),l.value="",Be(()=>o.value?.focus())},h=y=>{const T=[...a.modelValue];T.splice(y,1),s("update:modelValue",T)},L=y=>{const T=y.target.value;if(T.includes(",")){const B=T.split(",");B.forEach((E,H)=>{H<B.length-1?p(E):l.value=E})}else l.value=T},M=y=>{y.key==="Enter"?(y.preventDefault(),p(l.value)):y.key==="Backspace"&&!l.value&&a.modelValue.length>0&&h(a.modelValue.length-1)},w=()=>{o.value?.focus()};return(y,T)=>(n(),r("div",{class:ee(["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:w},[(n(!0),r($e,null,Ne(e.modelValue,(B,E)=>(n(),r("span",{key:B,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"},[Ge(m(B)+" ",1),e.disabled?S("",!0):(n(),r("button",{key:0,type:"button",onClick:ze(H=>h(E),["stop"]),class:"hover:text-accent-900 dark:hover:text-accent-100 transition-colors"},[z(f(Et),{size:12})],8,kg))]))),128)),t("input",{ref_key:"inputRef",ref:o,type:"text",value:l.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:L,onKeydown:M},null,40,wg)],2))}}),$g={class:"thread-basic-info-card bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},Cg={class:"p-3 space-y-2"},Sg={class:"text-[10px] text-neutral-500 dark:text-neutral-400"},Tg=["title"],Ig={class:"flex-1 text-[11px] font-mono text-neutral-600 dark:text-neutral-400 truncate"},Ag={class:"thread-basic-info-row flex items-center gap-2"},Eg={class:"thread-basic-info-control flex-1 flex items-center gap-1.5"},Lg={key:1,class:"text-xs text-neutral-700 dark:text-neutral-200"},Mg={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"},Rg={class:"thread-basic-info-row flex items-start gap-2"},Dg=We({__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:i}){const a=i,s=l=>new Date(l*1e3).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});return(l,o)=>{const p=qt("FormKit");return n(),r("div",$g,[t("div",Cg,[t("div",Sg,[o[3]||(o[3]=t("span",{class:"font-medium uppercase tracking-wide"},"Created",-1)),o[4]||(o[4]=t("span",{class:"mx-1"},"·",-1)),Ge(" "+m(s(e.thread.created_at)),1)]),t("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:o[0]||(o[0]=h=>a("copyId")),title:e.copiedId?"Copied!":"Click to copy"},[t("code",Ig,m(e.thread.id),1),t("span",{class:ee(["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?(n(),N(f(Ia),{key:0,size:12})):(n(),N(f($r),{key:1,size:12}))],2)],8,Tg),t("div",Ag,[o[5]||(o[5]=t("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)),t("div",Eg,[e.isAiHumanAgent?(n(),N(p,{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:o[1]||(o[1]=h=>a("agentChange",String(h)))},null,8,["model-value","options","loading","disabled"])):(n(),r("span",Lg,m(e.thread.agent.title),1)),t("span",Mg,m(e.thread.agent.type.replace("_"," ")),1)])]),t("div",Rg,[o[6]||(o[6]=t("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)),z(_g,{"model-value":e.localTags,"onUpdate:modelValue":o[2]||(o[2]=h=>a("tagsChange",h)),disabled:e.isSavingTags,placeholder:"Add tags...",class:"flex-1"},null,8,["model-value","disabled"])])])])}}}),Fg=dt(Dg,[["__scopeId","data-v-b2c0cfd1"]]),Pg={class:"thread-dev-tools-card bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},Ng={key:0,class:"overflow-hidden border-t border-neutral-100 dark:border-neutral-800"},zg={class:"p-3 space-y-3"},jg={class:"thread-dev-tools-action-row flex items-center gap-2"},Bg=["value"],Og=["disabled"],Vg={class:"pt-2 border-t border-neutral-100 dark:border-neutral-800"},qg=["disabled"],Hg=We({__name:"ThreadDeveloperToolsCard",props:{expanded:{type:Boolean},isDualAiAgent:{type:Boolean},selectedSide:{},isContinuing:{type:Boolean},isDeleting:{type:Boolean}},emits:["toggle","updateSelectedSide","continueExecution","deleteThread"],setup(e,{emit:i}){const a=i;return(s,l)=>(n(),r("div",Pg,[t("button",{onClick:l[0]||(l[0]=o=>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"},[z(f(Fa),{size:14,class:"shrink-0 text-neutral-400"}),l[4]||(l[4]=t("span",{class:"flex-1 text-xs font-medium text-neutral-700 dark:text-neutral-200"},"Developer Tools",-1)),z(f(_t),{size:14,class:ee(["shrink-0 text-neutral-400 transition-transform duration-200",{"-rotate-180":e.expanded}])},null,8,["class"])]),z(on,{"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:Ee(()=>[e.expanded?(n(),r("div",Ng,[t("div",zg,[t("div",jg,[e.isDualAiAgent?(n(),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:l[1]||(l[1]=o=>a("updateSelectedSide",o.target.value))},[...l[5]||(l[5]=[t("option",{value:"a"},"Side A",-1),t("option",{value:"b"},"Side B",-1)])],40,Bg)):S("",!0),t("button",{onClick:l[2]||(l[2]=o=>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"},[z(f(Bn),{size:12}),t("span",null,m(e.isContinuing?"Running...":"Continue"),1)],8,Og),l[6]||(l[6]=t("span",{class:"thread-dev-tools-hint text-[10px] text-neutral-500 dark:text-neutral-400"},"Resume without new message",-1))]),t("div",Vg,[t("button",{onClick:l[3]||(l[3]=o=>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"},[z(f(kn),{size:12}),t("span",null,m(e.isDeleting?"Deleting...":"Delete Thread"),1)],8,qg)])])])):S("",!0)]),_:1})]))}}),Ug=dt(Hg,[["__scopeId","data-v-e5ac7740"]]),Wg={key:0,class:"flex justify-center py-6"},Kg={key:1,class:"text-red-600 dark:text-red-400 text-center py-4 text-xs"},Jg={class:"thread-settings-variables-card bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 overflow-hidden"},Gg={key:0,class:"text-xs text-neutral-500 dark:text-neutral-400"},Yg={key:1,class:"space-y-2"},Qg={class:"thread-settings-variable-name min-w-0 flex items-center gap-1.5"},Xg=["title"],Zg={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"},em=["disabled","onClick","title"],tm=["disabled","onClick"],nm={key:1,class:"h-7 w-7"},am={class:"mt-3 border-t border-neutral-100 dark:border-neutral-800 pt-3 space-y-2"},rm=["disabled","onClick","title"],sm=["disabled","onClick"],lm=["disabled"],om=["disabled"],im={key:1},dm={key:0,class:"text-[10px] text-red-600 dark:text-red-400"},Sa="**********",um=We({__name:"MetadataSlidePane",props:{threadId:{},show:{type:Boolean},embedded:{type:Boolean}},emits:["close","threadDeleted","editThread","threadUpdated"],setup(e,{emit:i}){const a=e,s=i,{thread:l,isFetching:o,error:p,refetch:h}=Gn(A(()=>a.threadId)),{agents:L,isFetching:M}=Ha(),w=x(!1),y=x(!1),T=x(!1),B=x(!1),E=x(!!a.embedded),H=x(!1),U=x("a"),G=x(!1),q=x(!1);let j=null,J=0;const ve=()=>({id:`new-env-${J++}`,name:"",value:"",secret:!0}),ae=x([]),Q=x({}),W=x({}),fe=x({}),X=x({}),Re=x({}),Fe=x([ve()]),re=x(null),De=x(null),P=x(null),de=x(""),le=x([]),ye=x(!1),me=(u,c)=>u instanceof Error?u.message:c,pe=(u,c)=>{an(c?{error:u,fieldErrors:c}:{error:u},P)||(De.value=u)},Me=A(()=>L.value?L.value.filter(u=>u.type==="ai_human").map(u=>({value:u.id,label:u.title})):[]),Ce=A(()=>l.value?.agent.type==="ai_human"),ne=A(()=>l.value?.agent.type==="dual_ai"),Z=A(()=>ae.value.filter(u=>!Re.value[u.property])),K=async()=>{l.value&&(await navigator.clipboard.writeText(l.value.id),G.value=!0,j&&clearTimeout(j),j=setTimeout(()=>{G.value=!1,j=null},2e3))};Ht(()=>{j&&clearTimeout(j)});const xe=async u=>{if(!(!a.threadId||!u||u===l.value?.agent.id)){T.value=!0;try{const c=await fetch(He(`/api/threads/${a.threadId}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent_id:u})});if(!c.ok){const C=await c.json();throw new Error(C.error||"Failed to update agent")}await h(),s("threadUpdated")}catch{de.value=l.value?.agent.id||""}finally{T.value=!1}}},ue=async u=>{if(a.threadId){le.value=u,ye.value=!0,B.value=!0;try{const c=await fetch(He(`/api/threads/${a.threadId}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tags:u})});if(!c.ok){const C=await c.json();throw new Error(C.error||"Failed to update tags")}s("threadUpdated")}catch{le.value=l.value?.tags||[]}finally{B.value=!1,ye.value=!1}}},Se=()=>{a.embedded&&(E.value=!0)},Ue=u=>u.defined?(u.defined.type==="agent"||u.defined.type==="prompt")&&u.defined.name?`${u.defined.type}:${u.defined.name}`:u.defined.type==="account"?"user":u.defined.type:"missing",D=u=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(u.trim()),be=(u={})=>({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",u.mono?"font-mono":""].filter(Boolean).join(" "),help:"$remove:hidden hidden",messages:"$remove:formkit-messages hidden"}),se=u=>{const c={},C={};for(const O of u)c[O.property]=O.type==="secret"&&O.defined?Sa:O.value??"",C[O.property]=O.type==="secret";Q.value=c,W.value=C,fe.value={},X.value={},Re.value={}},we=u=>{W.value={...W.value,[u]:!W.value[u]},X.value={...X.value,[u]:!0}},Te=u=>{fe.value={...fe.value,[u]:!0}},ce=u=>{Re.value={...Re.value,[u]:!0},De.value=null,rn(P)},ge=()=>{Fe.value=[...Fe.value,ve()]},oe=u=>{const c=Fe.value.filter(C=>C.id!==u);Fe.value=c.length>0?c:[ve()]},Ie=async()=>{if(!a.threadId||!l.value?.agent?.id){ae.value=[],se([]);return}q.value=!0;try{const u=await fetch(He(`/api/variables/agents/${encodeURIComponent(l.value.agent.id)}?thread_id=${encodeURIComponent(a.threadId)}`));if(!u.ok){ae.value=[];return}const c=await u.json();ae.value=c.variables||[],se(ae.value)}catch{ae.value=[],se([])}finally{q.value=!1}},je=async(u,c=[],C={})=>{if(!a.threadId)return;De.value=null;const O=await fetch(He(`/api/threads/${a.threadId}`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({env_patch:u,env_type_patch:C,env_delete:c})});if(!O.ok){const Y=await O.json().catch(()=>({}));throw new Error(Y.error||"Failed to update variable")}await h(),await Ie(),s("threadUpdated")},Oe=async()=>{if(re.value)return;const u={},c={},C=Object.keys(Re.value).filter(Y=>Re.value[Y]);for(const Y of Z.value){if(!fe.value[Y.property]&&!X.value[Y.property])continue;if(!D(Y.property)){pe(`Invalid env name: ${Y.property}`,{[`env_${Y.property}`]:`Invalid env name: ${Y.property}`});return}const Le=Q.value[Y.property]??"";Le!==Sa&&(u[Y.property]=Le),(X.value[Y.property]||fe.value[Y.property])&&(c[Y.property]=W.value[Y.property]?"secret":"text")}const O=new Set;for(const Y of Fe.value){const Le=Y.name.trim(),Ve=Y.value.length>0;if(!(!Le&&!Ve)){if(!Le||!D(Le)){pe("Use a valid env name like WEATHER_API_KEY",{[`${Y.id}_name`]:"Use a valid env name like WEATHER_API_KEY"});return}if(O.has(Le)){pe(`Duplicate env name: ${Le}`,{[`${Y.id}_name`]:`Duplicate env name: ${Le}`});return}O.add(Le),u[Le]=Y.value,c[Le]=Y.secret?"secret":"text"}}if(Object.keys(u).length===0&&Object.keys(c).length===0&&C.length===0){pe("No env changes to save");return}re.value="__all__";try{await je(u,C,c),Fe.value=[ve()]}catch(Y){pe(me(Y,"Failed to save variables"))}finally{re.value=null}},V=async()=>{if(a.threadId){H.value=!0;try{const u=await fetch(He(`/api/threads/${a.threadId}/continue`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({side:U.value})});if(!u.ok){const c=await u.json();throw new Error(c.error||"Failed to continue execution")}}catch{U.value="a"}finally{H.value=!1}}},F=async()=>{if(a.threadId){y.value=!0;try{const u=await fetch(He(`/api/threads/${a.threadId}`),{method:"DELETE"});if(!u.ok){const c=await u.json();throw new Error(c.error||"Failed to delete thread")}s("threadDeleted",a.threadId)}catch{w.value=!1}finally{y.value=!1}}};return he(()=>l.value,u=>{u&&(de.value=u.agent.id,ye.value||(le.value=u.tags||[]))},{immediate:!0}),he(()=>a.show,u=>{u?(Ie(),Se()):(E.value=!1,ae.value=[],Q.value={},W.value={},fe.value={},X.value={},Re.value={},Fe.value=[ve()],De.value=null,rn(P),q.value=!1)},{immediate:!0}),he(()=>a.threadId,()=>{E.value=!1,ae.value=[],Q.value={},W.value={},fe.value={},X.value={},Re.value={},Fe.value=[ve()],De.value=null,rn(P),a.show&&(Ie(),Se())}),he(()=>l.value?.agent?.id,()=>{a.show&&(Ie(),Se())}),(u,c)=>{const C=qt("FormKit");return n(),N(on,{"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:Ee(()=>[e.show&&e.threadId?(n(),r("div",{key:0,class:ee(["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"])},[t("div",{class:ee(["thread-settings-layout",e.embedded?"grid grid-cols-1 gap-3 p-3":"max-h-[500px] overflow-y-auto p-3 space-y-3"])},[f(o)?(n(),r("div",Wg,[z(qe)])):f(p)?(n(),r("div",Kg," Error: "+m(f(p)),1)):f(l)?(n(),r($e,{key:2},[z(Fg,{thread:f(l),"copied-id":G.value,"is-ai-human-agent":Ce.value,"local-agent-id":de.value,"agent-options":Me.value,"is-fetching-agents":f(M),"is-saving-agent":T.value,"local-tags":le.value,"is-saving-tags":B.value,onCopyId:K,onAgentChange:xe,onTagsChange:ue},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"]),t("div",Jg,[c[5]||(c[5]=t("div",{class:"px-3 py-2.5 border-b border-neutral-100 dark:border-neutral-800"},[t("div",{class:"text-xs font-medium text-neutral-700 dark:text-neutral-200"}," Variables ")],-1)),z(C,{type:"form",id:"thread-variable-form",actions:!1,disabled:re.value!==null,onSubmit:Oe,onNode:c[0]||(c[0]=O=>P.value=O),"form-class":"$reset p-3"},{default:Ee(()=>[z(f(jn),{node:P.value||void 0},null,8,["node"]),q.value?(n(),r("div",Gg," Loading variables... ")):S("",!0),!q.value&&Z.value.length>0?(n(),r("div",Yg,[(n(!0),r($e,null,Ne(Z.value,O=>(n(),r("div",{key:O.property,class:"thread-settings-variable-row grid grid-cols-[minmax(90px,1fr)_minmax(0,1.6fr)_auto_auto] items-center gap-1.5"},[t("div",Qg,[t("span",{class:"truncate text-[11px] font-mono text-neutral-700 dark:text-neutral-200",title:`${O.property} (${Ue(O)})`},m(O.property),9,Xg),O.required?(n(),r("span",Zg," req ")):S("",!0)]),z(C,{type:W.value[O.property]?"password":"text",name:`env_${O.property}`,modelValue:Q.value[O.property],"onUpdate:modelValue":Y=>Q.value[O.property]=Y,placeholder:"Value",disabled:re.value!==null,"outer-class":"$reset mb-0",classes:be(),onInput:Y=>Te(O.property)},null,8,["type","name","modelValue","onUpdate:modelValue","disabled","classes","onInput"]),t("button",{type:"button",class:ee(["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",W.value[O.property]?"text-neutral-950 dark:text-neutral-50":"text-neutral-300 dark:text-neutral-600"]),disabled:re.value!==null,onClick:Y=>we(O.property),title:W.value[O.property]?"Treat as secret":"Treat as text"},[W.value[O.property]?(n(),N(f(Zn),{key:0,size:13})):(n(),N(f(ea),{key:1,size:13}))],10,em),O.defined&&O.defined.type==="thread"?(n(),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:re.value!==null,onClick:Y=>ce(O.property),title:"Remove env"},[z(f(kn),{size:13})],8,tm)):(n(),r("div",nm))]))),128))])):S("",!0),t("div",am,[(n(!0),r($e,null,Ne(Fe.value,O=>(n(),r("div",{key:O.id,class:"thread-settings-new-env-row grid grid-cols-[minmax(90px,1fr)_minmax(0,1.6fr)_auto_auto] items-center gap-1.5"},[z(C,{type:"text",name:`${O.id}_name`,modelValue:O.name,"onUpdate:modelValue":Y=>O.name=Y,placeholder:"FOOBAR",disabled:re.value!==null,validation:"envName","validation-visibility":"submit","outer-class":"$reset mb-0",classes:be({mono:!0}),onKeydown:Nt(ze(Oe,["prevent"]),["enter"])},null,8,["name","modelValue","onUpdate:modelValue","disabled","classes","onKeydown"]),z(C,{type:O.secret?"password":"text",name:`${O.id}_value`,modelValue:O.value,"onUpdate:modelValue":Y=>O.value=Y,placeholder:"Value",disabled:re.value!==null,"outer-class":"$reset mb-0",classes:be(),onKeydown:Nt(ze(Oe,["prevent"]),["enter"])},null,8,["type","name","modelValue","onUpdate:modelValue","disabled","classes","onKeydown"]),t("button",{type:"button",class:ee(["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",O.secret?"text-neutral-950 dark:text-neutral-50":"text-neutral-300 dark:text-neutral-600"]),disabled:re.value!==null,onClick:Y=>O.secret=!O.secret,title:O.secret?"Treat as secret":"Treat as text"},[O.secret?(n(),N(f(Zn),{key:0,size:13})):(n(),N(f(ea),{key:1,size:13}))],10,rm),t("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:re.value!==null,onClick:Y=>oe(O.id),title:"Remove new row"},[z(f(kn),{size:13})],8,sm)]))),128)),t("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:re.value!==null,onClick:ge}," Add another env ",8,lm),t("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:re.value!==null},[re.value==="__all__"?(n(),N(qe,{key:0,size:"xs"})):(n(),r("span",im,"Save envs"))],8,om),De.value?(n(),r("p",dm,m(De.value),1)):S("",!0)])]),_:1},8,["disabled"])]),z(Ug,{expanded:E.value,"is-dual-ai-agent":ne.value,"selected-side":U.value,"is-continuing":H.value,"is-deleting":y.value,onToggle:c[1]||(c[1]=O=>E.value=!E.value),onUpdateSelectedSide:c[2]||(c[2]=O=>U.value=O),onContinueExecution:V,onDeleteThread:c[3]||(c[3]=O=>w.value=!0)},null,8,["expanded","is-dual-ai-agent","selected-side","is-continuing","is-deleting"])],64)):S("",!0)],2),z(Yr,{modelValue:w.value,"onUpdate:modelValue":c[4]||(c[4]=O=>w.value=O),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:F},null,8,["modelValue"])],2)):S("",!0)]),_:1},8,["enter-active-class","enter-from-class","enter-to-class","leave-active-class","leave-from-class","leave-to-class"])}}}),cm=dt(um,[["__scopeId","data-v-658e0366"]]),fm={class:"relative -ml-3 flex min-w-0 w-72 shrink-0 self-stretch border-r border-neutral-200 dark:border-neutral-800"},vm=["src"],pm={key:1,class:"flex h-5 w-5 shrink-0 items-center justify-center"},gm={class:"min-w-0 flex-1"},mm={class:"block truncate font-medium text-neutral-900 dark:text-neutral-100"},hm={class:"block truncate text-[10px] leading-tight text-neutral-500 dark:text-neutral-400"},xm={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"},bm={class:"flex items-center justify-end border-b border-neutral-100 px-1 py-1 dark:border-neutral-800"},ym={class:"max-h-[min(30rem,70vh)] overflow-y-auto py-1.5 text-[12px]"},km={key:0,class:"flex items-center gap-2 px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},wm={key:1,class:"px-3 py-3 text-xs text-red-600 dark:text-red-400"},_m={key:2,class:"px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},$m=["onClick"],Cm=["src"],Sm={key:1,class:"relative z-[1] mt-px flex h-5 w-5 shrink-0 items-center justify-center"},Tm={class:"relative z-[1] min-w-0 flex-1"},Im={class:"block truncate text-xs font-medium"},Am={class:"block truncate text-[10px] leading-tight text-neutral-500 dark:text-neutral-400"},Nn=We({__name:"ThreadAgentConfigurationSelector",props:{nodes:{},selectedNode:{},pinned:{type:Boolean},loading:{type:Boolean},error:{},baseIndentPx:{},levelIndentPx:{}},emits:["select","pin","unpin"],setup(e,{emit:i}){const a=e,s=i,l=x(!1);function o(M){return M?.kind==="subprompt"?"text-fuchsia-600 dark:text-fuchsia-400":"text-sky-600 dark:text-sky-400"}function p(M){s("select",M),l.value=!1}function h(){a.pinned||(l.value=!l.value)}function L(){s("pin"),l.value=!1}return(M,w)=>(n(),r("div",fm,[t("button",{type:"button",class:ee(["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:h,onKeydown:w[0]||(w[0]=Nt(ze(y=>l.value=!1,["stop"]),["escape"]))},[e.selectedNode?.avatarSrc?(n(),r("img",{key:0,src:e.selectedNode.avatarSrc,alt:"",class:"h-5 w-5 shrink-0 rounded object-cover ring-1 ring-black/10 dark:ring-white/15"},null,8,vm)):(n(),r("span",pm,[e.selectedNode?.kind==="model"?(n(),N(f(yn),{key:0,size:15,class:"text-violet-600 dark:text-violet-400"})):(n(),N(f(ln),{key:1,size:15,class:ee(o(e.selectedNode))},null,8,["class"]))])),t("span",gm,[t("span",mm,m(e.selectedNode?.label||"Agent Configuration"),1),t("span",hm,m(e.selectedNode?.subtitle||"Select configuration item"),1)]),e.pinned?S("",!0):(n(),N(f(_t),{key:2,size:14,class:ee(["shrink-0 text-neutral-400",l.value?"rotate-180":""])},null,8,["class"]))],34),e.pinned?(n(),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:w[1]||(w[1]=y=>s("unpin"))},[z(f(On),{size:14})])):S("",!0),l.value&&!e.pinned?(n(),r("div",xm,[t("div",bm,[t("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:L},[z(f(On),{size:14})])]),t("div",ym,[e.loading?(n(),r("div",km,[z(qe,{size:"xs"}),w[2]||(w[2]=t("span",null,"Loading configuration...",-1))])):e.error?(n(),r("div",wm,m(e.error),1)):e.nodes.length===0?(n(),r("div",_m," No agent configuration available. ")):(n(!0),r($e,{key:3},Ne(e.nodes,({node:y,depth:T})=>(n(),r("button",{key:y.key,type:"button",class:ee(["group relative flex w-full items-start gap-1.5 px-2 py-1.5 text-left leading-tight transition-colors",e.selectedNode?.key===y.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:vt({paddingLeft:`${e.baseIndentPx+T*e.levelIndentPx}px`}),onClick:B=>p(y.key)},[(n(!0),r($e,null,Ne(T,B=>(n(),r("span",{key:B,"aria-hidden":"true",class:"pointer-events-none absolute inset-y-0 w-px bg-neutral-200 dark:bg-neutral-800",style:vt({left:`${e.baseIndentPx+(B-1)*e.levelIndentPx}px`})},null,4))),128)),y.avatarSrc?(n(),r("img",{key:0,src:y.avatarSrc,alt:"",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,Cm)):(n(),r("span",Sm,[y.kind==="model"?(n(),N(f(yn),{key:0,size:15,class:"text-violet-600 dark:text-violet-400"})):(n(),N(f(ln),{key:1,size:15,class:ee(o(y))},null,8,["class"]))])),t("span",Tm,[t("span",Im,m(y.label),1),t("span",Am,m(y.subtitle),1)])],14,$m))),128))])])):S("",!0)]))}}),Em={class:"h-full min-h-0 min-w-0 overflow-hidden bg-neutral-100 dark:bg-neutral-950"},Lm={key:1,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},Mm=We({__name:"ThreadAgentSettingsPane",props:{agentId:{},agentName:{},agentTitle:{},active:{type:Boolean}},emits:["saved"],setup(e,{emit:i}){const a=e,s=i,{saving:l,apiError:o,saveAgent:p}=zr(),h=x(null),L=A(()=>a.agentId?{id:a.agentId,name:a.agentName||a.agentId,title:a.agentTitle||a.agentName||a.agentId}:null);async function M(w){if(!a.agentId)return;(await p({mode:"edit",data:w,editingId:a.agentId,formNode:h.value?.formNode})).ok&&(await h.value?.markSaveSucceeded(),s("saved",w))}return he(()=>a.active,w=>{w===!1&&h.value?.resetSaveSuccess()}),(w,y)=>(n(),r("div",Em,[L.value?(n(),N(ps,{key:0,ref_key:"agentModalRef",ref:h,"model-value":!0,"edit-agent":L.value,mode:"edit",inline:"","inline-global-notice":"","inline-accent-tabs":"",saving:f(l),"api-error":f(o),onSave:M},{"nav-leading":Ee(()=>[Lt(w.$slots,"nav-leading")]),_:3},8,["edit-agent","saving","api-error"])):(n(),r("div",Lm," No agent configured "))]))}}),Rm={class:"flex h-full min-h-0 min-w-0 flex-col overflow-hidden bg-neutral-100 dark:bg-neutral-950"},Dm={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"},Fm={key:0,class:"min-w-0 flex-1"},Pm={key:1,class:"min-h-0 min-w-0 flex-1"},Nm={key:2,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},zm=We({__name:"ThreadModelSettingsPane",props:{modelId:{},modelName:{},modelProvider:{},modelActual:{},model:{},active:{type:Boolean}},emits:["saved"],setup(e,{emit:i}){const a=e,s=i,{saving:l,saveModel:o}=jr(),p=x(null),h=x(null),L=["basics","capabilities","fallbacks"],{activeTab:M,scrollToSection:w}=Oa(h,L),y=[{id:"basics",label:"Basic",icon:Vn},{id:"capabilities",label:"Capabilities",icon:Br},{id:"fallbacks",label:"Fallback Models",icon:Or}],T=A(()=>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 B(H){!T.value?.id||!(await o({mode:"edit",data:H,editingId:T.value.id,formNode:p.value?.formNode})).ok||(p.value?.markCurrentPayloadClean?.(),s("saved"))}function E(H){h.value=H}return he(()=>a.active,()=>{p.value?.markCurrentPayloadClean?.()}),(H,U)=>(n(),r("div",Rm,[T.value||H.$slots["nav-leading"]?(n(),r("nav",Dm,[Lt(H.$slots,"nav-leading"),T.value?(n(),r("div",Fm,[z(f(Va),{tabs:y,"active-tab":f(M),"accent-active":"",orientation:"horizontal",onSelect:f(w)},null,8,["active-tab","onSelect"])])):S("",!0)])):S("",!0),T.value?(n(),r("div",Pm,[z(f(Un),{config:f(Kn)},{default:Ee(()=>[z(Vr,{ref_key:"modelPaneRef",ref:p,"edit-model":T.value,mode:"edit",saving:f(l),"show-global-notice":"",page:"","body-ref":E,onSave:B},null,8,["edit-model","saving"])]),_:1},8,["config"])])):S("",!0),T.value?S("",!0):(n(),r("div",Nm," No model configured "))]))}}),jm={class:"h-full min-h-0 min-w-0 overflow-hidden bg-neutral-100 dark:bg-neutral-950"},Bm={key:1,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},Om=We({__name:"ThreadPromptSettingsPane",props:{promptName:{},active:{type:Boolean}},emits:["saved"],setup(e,{emit:i}){const a=e,s=i,{saving:l,apiError:o,savePrompt:p}=qr(),h=x(0),L=x(0),M=A(()=>a.promptName?{id:a.promptName,name:a.promptName}:null);async function w(y){if(!a.promptName)return;(await p({mode:"edit",data:y,editingId:a.promptName})).ok&&(h.value+=1,s("saved"))}return he(()=>a.active,y=>{y===!1&&(L.value+=1)}),(y,T)=>(n(),r("div",jm,[M.value?(n(),N(Xr,{key:0,"model-value":!0,"edit-prompt":M.value,mode:"edit",inline:"","inline-global-notice":"","inline-accent-tabs":"","save-success-key":h.value,"reset-success-key":L.value,saving:f(l),"api-error":f(o),onSave:w},{"nav-leading":Ee(()=>[Lt(y.$slots,"nav-leading")]),_:3},8,["edit-prompt","save-success-key","reset-success-key","saving","api-error"])):(n(),r("div",Bm," No prompt configured "))]))}}),Vm={class:"flex h-full min-h-0 flex-col overflow-hidden bg-neutral-100 dark:bg-neutral-950"},qm={class:"flex min-h-0 min-w-0 flex-1"},Hm={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"},Um={class:"flex h-8 shrink-0 items-center justify-end border-b border-neutral-200 px-1 dark:border-neutral-800"},Wm={class:"min-h-0 flex-1 overflow-y-auto py-1.5 text-[12px]"},Km={key:0,class:"flex items-center gap-2 px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},Jm={key:1,class:"px-3 py-3 text-xs text-red-600 dark:text-red-400"},Gm={key:2,class:"px-3 py-3 text-xs text-neutral-500 dark:text-neutral-400"},Ym=["onClick"],Qm=["src"],Xm={key:1,class:"relative z-[1] mt-px flex h-5 w-5 shrink-0 items-center justify-center"},Zm={class:"relative z-[1] min-w-0 flex-1"},eh={class:"block truncate text-xs font-medium"},th={class:"block truncate text-[10px] leading-tight text-neutral-500 dark:text-neutral-400"},nh={class:"min-w-0 flex-1 overflow-hidden"},ah={key:3,class:"flex h-full items-center justify-center text-sm text-neutral-500 dark:text-neutral-400"},Ta=5,tn=7,nn=9,rh=We({__name:"ThreadAgentConfigurationPane",props:{agentId:{},agentName:{},agentTitle:{},agentType:{},sideAPromptName:{},sideBPromptName:{},active:{type:Boolean}},emits:["agentSaved","saved"],setup(e,{emit:i}){const a=e,s=i,l=x(null),o=x(null),p=x(!1),h=x(null),L=x({}),M=x({}),w=new Map,y=new Map,T=Cr("agentbuilder.threadAgentConfiguration.pinnedTree",!1);let B=0;const E=A(()=>a.agentName||a.agentId||null),H=A(()=>!l.value||!o.value?null:W(l.value,o.value)),U=A(()=>H.value?Q(H.value):null),G=A(()=>{if(!l.value)return[];const D=[],be=(se,we)=>{D.push({node:se,depth:we});for(const Te of se.children)be(Te,we+1)};return be(l.value,0),D}),q=A(()=>{const D=H.value;return!D||!ae(D)?null:D}),j=A(()=>{const D=H.value;return!D||!D.promptName||D.kind!=="prompt"&&D.kind!=="subprompt"?null:D}),J=A(()=>{const D=H.value;return!D||D.kind!=="model"||!D.modelId?null:D}),ve=A(()=>H.value||l.value);function ae(D){return D.kind==="agent"||D.kind==="handoff"||D.kind==="subagent"}function Q(D){return D.kind==="model"?`model:${D.modelId||D.modelName}`:D.promptName?`prompt:${D.promptName}`:`agent:${D.agentName||D.agentId}`}function W(D,be){if(D.key===be)return D;for(const se of D.children){const we=W(se,be);if(we)return we}return null}function fe(D,be){if(Q(D)===be)return D;for(const se of D.children){const we=fe(se,be);if(we)return we}return null}async function X(){if(!(Object.keys(L.value).length>0))try{L.value=await sn("/tools")}catch{L.value={}}}async function Re(){if(!(Object.keys(M.value).length>0))try{const D=await sn("/models"),be={};for(const se of D.models||[])be[se.id]=se,be[se.name]=se;M.value=be}catch{M.value={}}}async function Fe(D){if(w.has(D))return w.get(D)??null;try{const be=await sn(`/agents/${encodeURIComponent(D)}`);return w.set(D,be.agent),be.agent}catch{return w.set(D,null),null}}async function re(D){if(y.has(D))return y.get(D)??null;const be=await es(D);return y.set(D,be),be}function De(D){const be=L.value[D.name]?.type;return be==="prompt"?"subprompt":be==="handoff"?"handoff":be==="subagent"||be==="agent"?"subagent":null}function P(D){if(!D)return null;const be=M.value[D];return be||Object.values(M.value).find(se=>se.name===D)||null}function de(D,be){if(!D.model_id)return null;const se=P(D.model_id),we=se?.provider||D.model_provider||null,Te=se?.model||null,ce=[we,Te].filter(Boolean).join(" · ");return{key:`${be}/model:${se?.id||D.model_id}`,kind:"model",label:se?.name||D.model_name||D.model_id,subtitle:ce||"Model",model:se,modelId:se?.id||D.model_id,modelName:se?.name||D.model_name||D.model_id,modelProvider:we||void 0,modelActual:Te||D.model_id,children:[]}}async function le(D,be,se,we,Te,ce,ge){const oe=await Fe(D),Ie=oe?.name||D,je=oe?.id||D,Oe=oe?.title||ge||Ie,V={key:`${se}/agent:${Ie}`,kind:be,label:Oe,subtitle:be==="agent"?"Agent":be==="handoff"?"Handoff agent":"Sub-agent",agentId:je,agentName:Ie,agentTitle:Oe,avatarSrc:oe?.icon||wn(Ie),children:[]};if(we>=Ta)return V;if(Te.has(Ie))return V.subtitle=`${V.subtitle} · already shown`,V;const F=new Set(Te).add(Ie),u=ye(oe,be==="agent");return V.children=(await Promise.all(u.map((c,C)=>me(c.name,"prompt",`${V.key}/prompt:${C}:${c.name}`,we+1,F,new Set(ce),c.label)))).filter(c=>!!c),V}function ye(D,be){if(D){const we=[];return D.side_a_agent_prompt&&we.push({name:D.side_a_agent_prompt,label:`${D.side_a_label||"Side A"} prompt`}),D.type==="dual_ai"&&D.side_b_agent_prompt&&we.push({name:D.side_b_agent_prompt,label:`${D.side_b_label||"Side B"} prompt`}),we}if(!be)return[];const se=[];return a.sideAPromptName&&se.push({name:a.sideAPromptName,label:"Side A prompt"}),a.agentType==="dual_ai"&&a.sideBPromptName&&se.push({name:a.sideBPromptName,label:"Side B prompt"}),se}async function me(D,be,se,we,Te,ce,ge){const oe=await re(D),Ie={key:se,kind:be,label:oe?.name||D,subtitle:be==="subprompt"?"Subprompt":ge,promptName:oe?.name||D,children:[]};if(we>=Ta||!oe)return Ie;if(ce.has(oe.name))return Ie.subtitle=`${Ie.subtitle} · already shown`,Ie;const je=new Set(ce).add(oe.name),Oe=[],V=de(oe,Ie.key);V&&Oe.push(V);for(const F of oe.tools||[]){const u=De(F);if(u)if(u==="subprompt"){const c=await me(F.name,"subprompt",`${Ie.key}/subprompt:${F.name}`,we+1,new Set(Te),je,"Subprompt");c&&Oe.push(c)}else Oe.push(await le(F.name,u,`${Ie.key}/${u}:${F.name}`,we+1,new Set(Te),je))}return Ie.children=Oe,Ie}async function pe(){const D=E.value;if(!a.active||!D)return;const be=++B,se=U.value;p.value=!0,h.value=null;try{await Promise.all([X(),Re()]);const we=await le(D,"agent","root",0,new Set,new Set,a.agentTitle);if(be!==B)return;l.value=we;const Te=se?fe(we,se):null;o.value=Te?.key||we.key}catch{be===B&&(l.value=null,o.value=null,h.value="Agent configuration could not be loaded.")}finally{be===B&&(p.value=!1)}}function Me(D){o.value=D.key}function Ce(D){o.value=D}function ne(D){return D.kind==="subprompt"?"text-fuchsia-600 dark:text-fuchsia-400":"text-sky-600 dark:text-sky-400"}function Z(D){return D.kind==="model"?"text-violet-600 dark:text-violet-400":ne(D)}function K(){T.value=!0}function xe(){T.value=!1}function ue(D){H.value?.key===l.value?.key&&s("agentSaved",D),s("saved"),pe()}function Se(){s("saved"),pe()}function Ue(){M.value={},s("saved"),pe()}return he(()=>[a.active,a.agentId,a.agentName,a.sideAPromptName,a.sideBPromptName],()=>{a.active&&pe()},{immediate:!0}),(D,be)=>(n(),r("div",Vm,[t("div",qm,[f(T)?(n(),r("aside",Hm,[t("div",Um,[t("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:xe},[z(f(On),{size:14})])]),t("div",Wm,[p.value?(n(),r("div",Km,[z(qe,{size:"xs"}),be[0]||(be[0]=t("span",null,"Loading configuration...",-1))])):h.value?(n(),r("div",Jm,m(h.value),1)):G.value.length===0?(n(),r("div",Gm," No agent configuration available. ")):(n(!0),r($e,{key:3},Ne(G.value,({node:se,depth:we})=>(n(),r("button",{key:se.key,type:"button",class:ee(["group relative flex w-full items-start gap-1.5 px-2 py-1.5 text-left leading-tight transition-colors",o.value===se.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:vt({paddingLeft:`${tn+we*nn}px`}),onClick:Te=>Me(se)},[(n(!0),r($e,null,Ne(we,Te=>(n(),r("span",{key:Te,"aria-hidden":"true",class:"pointer-events-none absolute inset-y-0 w-px bg-neutral-200 dark:bg-neutral-800",style:vt({left:`${tn+(Te-1)*nn}px`})},null,4))),128)),se.avatarSrc?(n(),r("img",{key:0,src:se.avatarSrc,alt:"",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,Qm)):(n(),r("span",Xm,[se.kind==="model"?(n(),N(f(yn),{key:0,size:15,class:"text-violet-600 dark:text-violet-400"})):(n(),N(f(ln),{key:1,size:15,class:ee(Z(se))},null,8,["class"]))])),t("span",Zm,[t("span",eh,m(se.label),1),t("span",th,m(se.subtitle),1)])],14,Ym))),128))])])):S("",!0),t("section",nh,[q.value?(n(),N(Mm,{key:q.value.key,class:"h-full","agent-id":q.value.agentId||q.value.agentName||null,"agent-name":q.value.agentName,"agent-title":q.value.agentTitle,active:e.active,onSaved:ue},Ot({_:2},[f(T)?void 0:{name:"nav-leading",fn:Ee(()=>[z(Nn,{nodes:G.value,"selected-node":ve.value,pinned:f(T),loading:p.value,error:h.value,"base-indent-px":tn,"level-indent-px":nn,onSelect:Ce,onPin:K,onUnpin:xe},null,8,["nodes","selected-node","pinned","loading","error"])]),key:"0"}]),1032,["agent-id","agent-name","agent-title","active"])):j.value?(n(),N(Om,{key:j.value.key,class:"h-full","prompt-name":j.value.promptName||null,active:e.active,onSaved:Se},Ot({_:2},[f(T)?void 0:{name:"nav-leading",fn:Ee(()=>[z(Nn,{nodes:G.value,"selected-node":ve.value,pinned:f(T),loading:p.value,error:h.value,"base-indent-px":tn,"level-indent-px":nn,onSelect:Ce,onPin:K,onUnpin:xe},null,8,["nodes","selected-node","pinned","loading","error"])]),key:"0"}]),1032,["prompt-name","active"])):J.value?(n(),N(zm,{key:J.value.key,class:"h-full","model-id":J.value.modelId||null,"model-name":J.value.modelName,"model-provider":J.value.modelProvider,"model-actual":J.value.modelActual,model:J.value.model||null,active:e.active,onSaved:Ue},Ot({_:2},[f(T)?void 0:{name:"nav-leading",fn:Ee(()=>[z(Nn,{nodes:G.value,"selected-node":ve.value,pinned:f(T),loading:p.value,error:h.value,"base-indent-px":tn,"level-indent-px":nn,onSelect:Ce,onPin:K,onUnpin:xe},null,8,["nodes","selected-node","pinned","loading","error"])]),key:"0"}]),1032,["model-id","model-name","model-provider","model-actual","model","active"])):(n(),r("div",ah," Select an item to edit. "))])])]))}}),sh={class:"flex h-full min-h-0 flex-col overflow-hidden"},lh={class:"flex h-12 shrink-0 items-center justify-between border-b border-neutral-300 px-4 dark:border-neutral-700"},oh=["id","aria-selected","aria-controls","onClick"],ih={class:"min-w-0 max-w-[11rem] truncate"},dh=["aria-expanded"],uh={key:0,class:"absolute right-0 top-full z-50 mt-1"},ch={class:"min-w-0 truncate"},fh={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"},vh={class:"pointer-events-none absolute -left-[9999px] top-0 flex h-8 items-center gap-1 opacity-0"},ph={class:"max-w-[11rem] truncate"},gh={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"},mh={type:"button",tabindex:"-1",class:"inline-flex h-8 w-8 items-center justify-center rounded-md"},hh={class:"min-h-0 flex-1 overflow-hidden"},Mh=We({__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:i,emit:a}){const s=e,l=a,o=x(s.activeTab??"logs"),p=x(null),h=x(null),{thread:L,refetch:M}=Gn(A(()=>s.threadId)),w=x(),y=x(),T=x(),B=x(0),E=x(0),H=x(0),U=A(()=>L.value?.agent?.type||s.agentType||null),G=A(()=>L.value?.agent?.id||s.agentId||null),q=A(()=>L.value?.agent?.name||s.agentName||G.value||null),j=A(()=>T.value!==void 0?T.value:L.value?.agent?.title||s.agentTitle||q.value||null),J=A(()=>w.value!==void 0?w.value:L.value?.agent?.side_a_agent_prompt||s.sideAPromptName||null),ve=A(()=>y.value!==void 0?y.value:L.value?.agent?.side_b_agent_prompt||s.sideBPromptName||null),ae=A(()=>{const V=[{id:"logs",label:"Logs",icon:Sr},{id:"files",label:"Files",icon:bn,count:B.value},{id:"kv",label:"KV Store",icon:Tr,count:E.value},{id:"effects",label:"Effects",icon:wt,count:H.value}];return G.value&&V.push({id:"config",label:"Agent Configuration",icon:Aa}),V.push({id:"info",label:"Thread Settings",icon:Da}),V}),Q=x({}),W=x({}),fe=x(null),X=x(null),Re=x(null),Fe=x(0),re=x({}),De=x(36),P=x({left:0,width:0}),de=x(!1);let le=null;const ye=V=>(V.id==="files"||V.id==="kv"||V.id==="effects")&&typeof V.count=="number"&&V.count>0,me=V=>V>99?"99+":String(V),pe=(V,F)=>{F instanceof HTMLButtonElement?Q.value[V]=F:delete Q.value[V]},Me=(V,F)=>{F instanceof HTMLButtonElement?W.value[V]=F:delete W.value[V]},Ce=V=>{const F=V instanceof HTMLButtonElement?V:null;X.value=F},ne=()=>{const V={};for(const F of ae.value){const u=W.value[F.id];u&&(V[F.id]=Math.ceil(u.getBoundingClientRect().width))}re.value=V,X.value&&(De.value=Math.ceil(X.value.getBoundingClientRect().width))},Z=()=>{Fe.value=Math.floor(fe.value?.getBoundingClientRect().width??0)},K=()=>{Z(),ne(),Be(se)},xe=A(()=>{const V=ae.value,F=Fe.value;if(!F)return V;const u=4;if(V.reduce((Ve,Ke)=>Ve+(re.value[Ke.id]??88),0)+Math.max(0,V.length-1)*u<=F)return V;const C=Math.max(0,F-De.value-u),O=[];let Y=0;for(const Ve of V){const Ke=re.value[Ve.id]??88,Je=Y+Ke+(O.length>0?u:0);Je<=C&&(O.push(Ve.id),Y=Je)}if(!O.includes(o.value)&&V.some(Ve=>Ve.id===o.value)){const Ve=re.value[o.value]??88;for(;O.length>0&&Y+Ve+(O.length>0?u:0)>C;){const Ke=O.pop();if(!Ke)break;Y-=(re.value[Ke]??88)+(O.length>0?u:0)}O.push(o.value)}const Le=new Set(O);return V.filter(Ve=>Le.has(Ve.id))}),ue=A(()=>{const V=new Set(xe.value.map(F=>F.id));return ae.value.filter(F=>!V.has(F.id))}),Se=()=>{de.value=!1},Ue=()=>{de.value=!de.value},D=V=>{if(!de.value)return;const F=V.target;Re.value?.contains(F)||Se()},be=V=>{V.key==="Escape"&&de.value&&(Se(),X.value?.focus())},se=()=>{const V=Q.value[o.value];if(!V||!xe.value.some(F=>F.id===o.value)){P.value={left:0,width:0};return}P.value={left:V.offsetLeft,width:V.offsetWidth}},we=V=>(Oe("logs"),V()),Te=V=>(Oe("effects"),V()),ce=V=>{const F=typeof V.title=="string"?V.title:null,u=typeof V.side_a_agent_prompt=="string"?V.side_a_agent_prompt:null,c=typeof V.side_b_agent_prompt=="string"?V.side_b_agent_prompt:null;T.value=F,w.value=u,y.value=c,s.threadId&&M(),l("threadUpdated")},ge=V=>{B.value=V},oe=V=>{E.value=V},Ie=V=>{H.value=V},je=V=>{Te(()=>h.value?.selectEffectByReference(V))},Oe=V=>{ae.value.some(F=>F.id===V)||(V="logs"),o.value=V,Se(),Be(se),l("update:activeTab",V)};return he(()=>s.activeTab,V=>{V&&V!==o.value&&(o.value=V),Be(se)}),he(ae,V=>{V.some(F=>F.id===o.value)?Be(K):Oe("logs")}),he(()=>G.value,()=>{T.value=void 0,w.value=void 0,y.value=void 0}),he(()=>s.threadId,()=>{B.value=0,E.value=0,H.value=0}),he(xe,()=>{Be(se)}),he(ue,V=>{V.length===0&&Se()}),zt(()=>{Be(K),fe.value&&(le=new ResizeObserver(K),le.observe(fe.value)),window.addEventListener("resize",K),document.addEventListener("pointerdown",D),document.addEventListener("keydown",be)}),Mt(()=>{le?.disconnect(),window.removeEventListener("resize",K),document.removeEventListener("pointerdown",D),document.removeEventListener("keydown",be)}),i({scrollToLog:V=>we(()=>p.value?.scrollToLog(V)),selectLogById:V=>we(()=>p.value?.selectLogById(V)),removeLogsByIds:V=>p.value?.removeLogsByIds(V),loadUntilLogId:V=>we(()=>p.value?.loadUntilLogId(V)),hasLog:V=>p.value?.hasLog(V)??!1,getLog:V=>p.value?.getLog(V)??null,setLoadingForLog:V=>we(()=>p.value?.setLoadingForLog(V)),waitForLogRow:V=>we(()=>p.value?.waitForLogRow(V)),selectEffectById:V=>Te(()=>h.value?.selectEffectById(V)),selectEffectByReference:V=>Te(()=>h.value?.selectEffectByReference(V))}),(V,F)=>(n(),r("div",sh,[t("div",lh,[t("div",{ref_key:"tabListRef",ref:fe,class:"relative flex h-8 min-w-0 flex-1 items-center gap-1 overflow-visible",role:"tablist","aria-label":"Thread inspector"},[t("div",{class:ee(["pointer-events-none absolute bottom-0 top-0 rounded-md bg-neutral-900 dark:bg-neutral-100 transition-transform duration-300 ease-out",P.value.width>0?"opacity-100":"opacity-0"]),style:vt({width:`${P.value.width}px`,transform:`translateX(${P.value.left}px)`})},null,6),(n(!0),r($e,null,Ne(xe.value,u=>(n(),r("button",{key:u.id,ref_for:!0,ref:c=>pe(u.id,c),id:`thread-inspector-tab-${u.id}`,type:"button",role:"tab","aria-selected":o.value===u.id,"aria-controls":`thread-inspector-panel-${u.id}`,class:ee(["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",o.value===u.id?"text-white dark:text-neutral-900":"text-neutral-500 hover:text-neutral-900 dark:text-neutral-400 dark:hover:text-neutral-100"]),onClick:c=>Oe(u.id)},[(n(),N(At(u.icon),{size:15,class:"shrink-0"})),t("span",ih,m(u.label),1),ye(u)?(n(),r("span",{key:0,class:ee(["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",o.value===u.id?"bg-white/20 text-current dark:bg-black/10":"bg-neutral-100 text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400"])},m(me(u.count??0)),3)):S("",!0)],10,oh))),128)),ue.value.length>0?(n(),r("div",{key:0,ref_key:"overflowRootRef",ref:Re,class:"relative z-20 shrink-0"},[t("button",{ref:Ce,type:"button",class:ee(["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",de.value?"bg-neutral-100 text-neutral-900 dark:bg-neutral-800 dark:text-neutral-100":""]),"aria-label":"More inspector tabs","aria-expanded":de.value,"aria-haspopup":"menu",onClick:ze(Ue,["stop"])},[z(f(ta),{size:17})],10,dh),de.value?(n(),r("div",uh,[z(f(ja),{width:"w-56",shadow:{offsetX:4,offsetY:4,intensity:.32}},{default:Ee(()=>[(n(!0),r($e,null,Ne(ue.value,u=>(n(),N(f(Zr),{key:u.id,active:o.value===u.id,onClick:c=>Oe(u.id)},{default:Ee(()=>[(n(),N(At(u.icon),{class:"h-4 w-4 shrink-0 text-neutral-500 dark:text-neutral-400"})),t("span",ch,m(u.label),1),ye(u)?(n(),r("span",fh,m(me(u.count??0)),1)):S("",!0)]),_:2},1032,["active","onClick"]))),128))]),_:1})])):S("",!0)],512)):S("",!0),t("div",vh,[(n(!0),r($e,null,Ne(ae.value,u=>(n(),r("button",{key:`measure-${u.id}`,ref_for:!0,ref:c=>Me(u.id,c),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"},[(n(),N(At(u.icon),{size:15,class:"shrink-0"})),t("span",ph,m(u.label),1),ye(u)?(n(),r("span",gh,m(me(u.count??0)),1)):S("",!0)]))),128)),t("button",mh,[z(f(ta),{size:17})])])],512)]),t("div",hh,[rt(z(vf,{id:"thread-inspector-panel-logs",role:"tabpanel","aria-labelledby":"thread-inspector-tab-logs",ref_key:"logsPaneRef",ref:p,class:"h-full","thread-id":e.threadId,"selected-log-id":e.selectedLogId,"hovered-log-id":e.hoveredLogId,onLogClick:F[0]||(F[0]=u=>l("logClick",u)),onLogHover:F[1]||(F[1]=u=>l("logHover",u)),onLogsLoaded:F[2]||(F[2]=u=>l("logsLoaded",u)),onEffectClick:je},null,8,["thread-id","selected-log-id","hovered-log-id"]),[[ht,o.value==="logs"]]),rt(z(Dp,{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:o.value==="files","onUpdate:path":F[3]||(F[3]=u=>l("update:filePath",u)),onCountChanged:ge},null,8,["thread-id","path","refresh-key","active"]),[[ht,o.value==="files"]]),rt(z(yg,{id:"thread-inspector-panel-kv",role:"tabpanel","aria-labelledby":"thread-inspector-tab-kv",class:"h-full","thread-id":e.threadId,active:o.value==="kv",onCountChanged:oe},null,8,["thread-id","active"]),[[ht,o.value==="kv"]]),rt(z(jv,{id:"thread-inspector-panel-effects",role:"tabpanel","aria-labelledby":"thread-inspector-tab-effects",ref_key:"effectsPaneRef",ref:h,class:"h-full","thread-id":e.threadId,active:o.value==="effects","selected-effect-id":e.selectedEffectId,"selected-effect-ref":e.selectedEffectRef,onCountChanged:Ie},null,8,["thread-id","active","selected-effect-id","selected-effect-ref"]),[[ht,o.value==="effects"]]),rt(z(cm,{id:"thread-inspector-panel-info",role:"tabpanel","aria-labelledby":"thread-inspector-tab-info",class:"h-full","thread-id":e.threadId,show:o.value==="info",embedded:"",onThreadDeleted:F[4]||(F[4]=u=>l("threadDeleted",u)),onEditThread:F[5]||(F[5]=u=>l("editThread")),onThreadUpdated:F[6]||(F[6]=u=>l("threadUpdated"))},null,8,["thread-id","show"]),[[ht,o.value==="info"]]),G.value?rt((n(),N(rh,{key:0,id:"thread-inspector-panel-config",role:"tabpanel","aria-labelledby":"thread-inspector-tab-config",class:"h-full","agent-id":G.value,"agent-name":q.value,"agent-title":j.value,"agent-type":U.value,"side-a-prompt-name":J.value,"side-b-prompt-name":ve.value,active:o.value==="config",onAgentSaved:ce,onSaved:F[7]||(F[7]=u=>l("threadUpdated"))},null,8,["agent-id","agent-name","agent-title","agent-type","side-a-prompt-name","side-b-prompt-name","active"])),[[ht,o.value==="config"]]):S("",!0)])]))}});export{ps as A,_i as C,Eh as _,es as a,Ah as b,ls as c,Th as d,qa as e,sn as f,ns as g,Lh as h,Mh as i,Jt as j,Ih as s,Gn as u};
|