@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,6 +1,6 @@
|
|
|
1
|
-
import{d as _e,c as O,b as w,e as p,m as ue,g as lo,r as B,Y as xn,X as Zn,w as Le,h as He,t as Yr,A as et,f as m,o as ea,a as Et,K as Me,j as Q,q as W,J as I,u as K,F as $e,l as Ie,s as pe,z as ce,Z as io,k as ye,ac as qr,ad as Gr,B as lt,O as At,n as De,P as je,V as Wr,R as La,a3 as Qr,U as Pn,ae as Jr,x as Zr,af as Ne,_ as ta,ag as uo,ah as co,W as Pa,ai as es,aj as ts,ak as Ra}from"./vue.js";import{I as tt,f as ns,h as na,i as vt,u as Kt,j as aa,k as fo,m as $t,n as oa,a as Ve,o as jt,p as mo,q as ho,t as as,v as po,w as os,x as rs,y as Oa,z as ss,A as ht,B as ze,_ as St,d as st,e as _t,C as ls,D as is,E as Rn,F as ds,T as us}from"./index.js";import{f as Qe,b as at,a as ot,s as cs,u as fs,c as ms,d as vo,g as ra,e as sa,A as go,_ as hs,h as Da,i as ps,C as vs}from"./ThreadInspectorPane.vue_vue_type_script_setup_true_lang.js";import{I as xo}from"./plus.js";import{I as On,a as Dn,b as Bn,c as gs,d as yo}from"./chevron-right.js";import{I as sn,a as Yn,P as xs}from"./PromptModal.js";import{_ as ys}from"./ModelModal.vue_vue_type_script_setup_true_lang.js";import{e as cn}from"./vendor.js";import{_ as la}from"./Modal.vue_vue_type_script_setup_true_lang.js";import{_ as bs}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang.js";import"./formkit.js";import"./syntax.js";import"./monaco.js";import"./CopyButton.vue_vue_type_script_setup_true_lang.js";import"./check.js";import"./JsonViewer.js";const It=_e({__name:"UiBadge",props:{variant:{default:"default"},size:{default:"sm"},pill:{type:Boolean,default:!1}},setup(e){const t=e,n=O(()=>{switch(t.variant){case"default":return"bg-neutral-100 dark:bg-neutral-800 text-neutral-700 dark:text-neutral-300";case"primary":return"bg-black dark:bg-white text-white dark:text-black";case"secondary":return"bg-neutral-200 dark:bg-neutral-700 text-neutral-600 dark:text-neutral-300";case"success":return"bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-300";case"warning":return"bg-yellow-100 dark:bg-yellow-900/30 text-yellow-700 dark:text-yellow-300";case"error":return"bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-300";case"accent":return"bg-accent-100 dark:bg-accent-900/30 text-accent-700 dark:text-accent-300";default:return""}}),o=O(()=>{switch(t.size){case"sm":return"px-2 py-0.5 text-xs";case"md":return"px-2.5 py-1 text-sm";default:return""}});return(a,l)=>(p(),w("span",{class:ue(["inline-flex items-center font-medium",n.value,o.value,e.pill?"rounded-full":"rounded"])},[lo(a.$slots,"default")],2))}});function ks(){const e=B([]),t=B({}),n=B({}),o=B({}),a=B(!0),l=B(null),s=B(""),r=O(()=>{const c=s.value.trim().toLowerCase();return c?e.value.filter(d=>d.name.toLowerCase().includes(c)||d.title.toLowerCase().includes(c)||d.type.toLowerCase().includes(c)):e.value});async function i(){a.value=!0,l.value=null;try{const[c,d,f,v]=await Promise.all([Qe("/agents"),Qe("/models"),Qe("/tools"),Qe("/hooks")]);e.value=(c.agents||[]).sort((x,g)=>x.name.localeCompare(g.name)),t.value=Object.fromEntries((d.models||[]).map(x=>[x.id,x])),n.value=f||{},o.value=Object.fromEntries((v.hooks||[]).map(x=>[x.id,x]))}catch{l.value="Unable to load composition data."}finally{a.value=!1}}return{agents:e,models:t,toolsCatalog:n,hooks:o,agentSearch:s,searchableAgents:r,loadingIndex:a,loadError:l,loadIndex:i}}function ws(e){const t=xn(),n=Zn(),o=B(null),a=B(null),l=B(null),s=B(null),r=B(null),i=B({}),c=B(!1),d=B(null);let f=0,v=0,x=0;function g(){return{models:e.models.value,toolsCatalog:e.toolsCatalog.value,hooks:e.hooks.value}}const u=O(()=>{const q=a.value;return q?[at(q,"a",l.value,g()),at(q,"b",s.value,g())]:[]}),y=O(()=>{const q=u.value;return{promptCount:q.filter(D=>!!D.prompt).length,toolCount:q.reduce((D,C)=>D+C.tools.length,0),outgoingCount:q.reduce((D,C)=>D+C.outgoingAgents.length,0),variableCount:q.reduce((D,C)=>D+C.variables.length,0)}});function S(q,D){return q===f&&o.value===D}async function _(q){const D=++x;try{await n.replace({query:{...t.query,agent:q}})}catch{}finally{D===x&&(x=0)}}function M(){return x>0}async function k(q,D,C){const T=++v,b=new Set;for(const G of q)for(const Y of G.outgoingAgents)Y.kind==="subagent"&&b.add(Y.name);if(b.size===0){T===v&&S(D,C)&&(i.value={});return}const A={};await Promise.all([...b].map(async G=>{if(e.agents.value.find(H=>H.name===G&&!H.packed))try{const E=(await Qe(`/agents/${encodeURIComponent(G)}`)).agent,[j,F]=await Promise.all([ot(E.side_a_agent_prompt),ot(E.side_b_agent_prompt)]);if(T!==v||!S(D,C))return;A[G]={agentName:G,agent:E,sides:[at(E,"a",j,g()),at(E,"b",F,g())]}}catch{}})),T===v&&S(D,C)&&(i.value=A)}async function N(q,D=!0){const C=e.agents.value.find(b=>b.id===q||b.name===q);if(!C)return;const T=++f;if(o.value=C.id,r.value={type:"agent",value:C},i.value={},!cs(C)){a.value=null,l.value=null,s.value=null,d.value="Packed agents are not yet supported in the composition browser.",c.value=!1,D&&_(C.id);return}c.value=!0,d.value=null,D&&_(C.id);try{const b=await Qe(`/agents/${encodeURIComponent(C.name)}`),[A,G]=await Promise.all([ot(b.agent.side_a_agent_prompt),ot(b.agent.side_b_agent_prompt)]);if(!S(T,C.id))return;a.value=b.agent,l.value=A,s.value=G,r.value={type:"agent",value:b.agent};const Y=[at(b.agent,"a",A,g()),at(b.agent,"b",G,g())];k(Y,T,C.id)}catch{if(!S(T,C.id))return;d.value="Unable to load the selected agent composition.",a.value=null,l.value=null,s.value=null}finally{S(T,C.id)&&(c.value=!1)}}function L(q){r.value=q}function P(){a.value?r.value={type:"agent",value:a.value}:r.value=null}async function ne(){const q=a.value,D=o.value;if(!q||!D)return!1;const C=++f;try{const T=await Qe(`/agents/${encodeURIComponent(q.name)}`),[b,A]=await Promise.all([ot(T.agent.side_a_agent_prompt),ot(T.agent.side_b_agent_prompt)]);if(!S(C,D))return!1;const G=(l.value?.tools?.length??0)+(s.value?.tools?.length??0),Y=(b?.tools?.length??0)+(A?.tools?.length??0),E=T.agent.side_a_agent_prompt!==q.side_a_agent_prompt||T.agent.side_b_agent_prompt!==q.side_b_agent_prompt||G!==Y;a.value=T.agent,l.value=b,s.value=A;const j=[at(T.agent,"a",b,g()),at(T.agent,"b",A,g())];return k(j,C,D),E}catch{return!0}}return{selectedAgentId:o,selectedAgentDetail:a,selectedNode:r,sideCompositions:u,subagentCompositions:i,compositionSummary:y,loadingComposition:c,compositionError:d,selectAgent:N,selectInspectorNode:L,deselectNode:P,refreshComposition:ne,isRouteSyncing:M}}function $s(){const e=xn(),t=ks(),n=ws({agents:t.agents,models:t.models,toolsCatalog:t.toolsCatalog,hooks:t.hooks}),o=O(()=>t.agents.value.find(s=>s.id===n.selectedAgentId.value)||null);async function a(){if(await t.loadIndex(),t.loadError.value)return;const s=typeof e.query.agent=="string"?e.query.agent:null,r=s?t.agents.value.find(i=>i.id===s)||t.agents.value.find(i=>i.name===s):null;r?await n.selectAgent(r.id,!1):t.agents.value.length>0&&await n.selectAgent(t.agents.value[0].id)}async function l(){await t.loadIndex()}return{searchableAgents:t.searchableAgents,selectedAgentId:n.selectedAgentId,selectedAgentDetail:n.selectedAgentDetail,selectedAgentSummary:o,selectedNode:n.selectedNode,sideCompositions:n.sideCompositions,subagentCompositions:n.subagentCompositions,compositionSummary:n.compositionSummary,models:t.models,toolsCatalog:t.toolsCatalog,agentSearch:t.agentSearch,loadingIndex:t.loadingIndex,loadingComposition:n.loadingComposition,loadError:t.loadError,compositionError:n.compositionError,loadIndex:a,refreshIndex:l,selectAgent:n.selectAgent,selectInspectorNode:n.selectInspectorNode,deselectNode:n.deselectNode,refreshComposition:n.refreshComposition,isRouteSyncing:n.isRouteSyncing}}const Ba="__";function bo(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)}function ko(e){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"item"}function qn(e,t,n){const o=n===void 0?"":`-${n}`;return`${e}-${ko(t)}-${bo(t)}${o}`}function wo(e,...t){return`${e}${t.join(Ba)}${Ba}`}function $o(e){return wo(qn("agent",e))}function Mo(e,t,n,o,a){return wo(e,qn("side",t),qn("tool",`${o}:${a}`,n))}const fn=e=>`${e}agent`,ia=(e,t)=>`${e}side-${t}`,ln=(e,t,n)=>`${e}tool-${t}-${n}`,Ms=e=>`${e}group`,To=(e,t)=>`${e}model-${ko(t)}-${bo(t)}`,Ts=280,Cs=132,Va=320,Ss=72,_s=200,Is=72,Es=360,As=220,Ns=320,Ls=240,Ps=280,Rs=132,Ua=64,ut=36,Zt=56,kt=36,Vn=52,Os=64,dn=220,Ds=84,qe=72,Ha=112,ct=28;function Bs(e,t,n){const o=[],a=[];if(e.modelUsages.length===0)return{modelNodes:o,modelEdges:a};const l=new Map,s=new Set;for(const u of e.modelUsages){const y=`${u.model.id}|${u.consumerNodeId}`;if(s.has(y))continue;s.add(y);const S=l.get(u.model.id);S?S.push(u):l.set(u.model.id,[u])}const r=new Map;for(const u of e.nodes)r.set(u.id,u);const i=e.width,c=0,d=[],f=e.groups.map(u=>({x:u.x,y:u.y,w:u.width,h:u.height}));function v(u,y){return y.x>=u.x&&y.y>=u.y&&y.x+y.w<=u.x+u.w&&y.y+y.h<=u.y+u.h}function x(u,y,S,_,M=16){const k=Math.min(y,S),N=Math.max(y,S);return _.some(L=>N>L.x-M&&k<L.x+L.w+M&&u>L.y-M&&u<L.y+L.h+M)}function g(u,y,S,_,M=16){const k=Math.min(y,S),N=Math.max(y,S);return _.some(L=>N>L.y-M&&k<L.y+L.h+M&&u>L.x-M&&u<L.x+L.w+M)}for(const[u,y]of l){const S=y.map(E=>({usage:E,node:r.get(E.consumerNodeId)})).filter(E=>!!E.node);if(S.length===0)continue;const _=S.map(E=>Us(E.node,n)),M=S.map(E=>ft(E.node,n)),k=f.filter(E=>M.every(j=>v(E,j))),N=f.filter(E=>!k.includes(E)),L=y[0].model,P=To(t,u),ne=n[P],q=ne?.w??dn,D=ne?.h??Ds;let C=0,T=0,b;if(S.length===1){const E=S[0],j=ft(E.node,n),F=za(E.node),X=F||E.usage.sideId==="a"?"outboard-left":"outboard-right",he=j.y+j.h/2-D/2,se=X==="outboard-left"?j.x-qe-q:j.x+j.w+qe,fe=j.x+j.w/2-q/2,z=j.y+j.h+qe,U=new Set(S.map(te=>te.node.id)),J=[...d,...e.nodes.filter(te=>!U.has(te.id)).map(te=>ft(te,n)),...N],le=[se],ie=[he],ve=[fe],ee=[z];for(const te of J)X==="outboard-left"?le.push(te.x-qe-q):le.push(te.x+te.w+qe),ie.push(te.y-D-ct),ie.push(te.y+te.h+ct),ve.push(te.x-q-ct),ve.push(te.x+te.w+ct),ee.push(te.y-D-ct),ee.push(te.y+te.h+ct);let Z=se,h=he,$=Number.POSITIVE_INFINITY,V=null;const oe=new Set,de=[{mode:X,xs:le,ys:ie},{mode:"below-row",xs:ve,ys:ee}];for(const te of de)for(const re of te.xs)for(const be of te.ys){const ke=`${te.mode}:${Math.round(re)}:${Math.round(be)}`;if(oe.has(ke)||(oe.add(ke),te.mode==="outboard-left"&&re+q>j.x-8)||te.mode==="outboard-right"&&re<j.x+j.w+8)continue;const ge=J.filter(xe=>Un({x:re,y:be,w:q,h:D},{x:xe.x,y:xe.y,w:xe.w,h:xe.h})).length,Se=te.mode==="below-row"?g(j.x+j.w/2,j.y+j.h,be,J):x(j.y+j.h/2,te.mode==="outboard-left"?re+q:j.x+j.w,te.mode==="outboard-left"?j.x:re,J),we=ge*1e4+(Se?12e3:0)+Math.abs(re-se)/10+Math.abs(be-(te.mode==="below-row"?z:he))+(te.mode==="below-row"?10:0);if(F&&te.mode!=="below-row"&&ge===0){const xe=(Se?1e3:0)+Math.abs(re-se)/10+Math.abs(be-he);(!V||xe<V.penalty)&&(V={x:re,y:be,penalty:xe,mode:te.mode})}we<$&&($=we,Z=re,h=be,b=te.mode)}V&&(Z=V.x,h=V.y,b=V.mode),b||(b=X),C=Z,T=h}else{let E=1/0,j=-1/0,F=1/0,X=-1/0;for(const U of S){const J=ft(U.node,n);J.x<E&&(E=J.x),J.x+J.w>j&&(j=J.x+J.w),J.y<F&&(F=J.y),J.y+J.h>X&&(X=J.y+J.h)}const he=j-E,se=X-F,fe=ja(_.map(U=>U.x)),z=ja(_.map(U=>U.y));if(he>=se){const U=fe-q/2,J=new Set(S.map(V=>V.node.id)),le=e.nodes.filter(V=>!J.has(V.id)).map(V=>ft(V,n)).filter(V=>V.y+V.h>X),ie=N.filter(V=>V.y+V.h>X),ve=[...le,...ie],ee=[U];for(const V of ve)ee.push(V.x-qe-q),ee.push(V.x+V.w+qe);let Z=U,h=1/0;const $=new Set;for(const V of ee){const oe=Math.round(V);if($.has(oe))continue;$.add(oe);const de=ve.filter(be=>Un({x:V,y:X+qe,w:q,h:D},{x:be.x,y:be.y,w:be.w,h:be.h})).length,te=Math.abs(V-U)/1e3,re=de+te;re<h&&(h=re,Z=V)}C=Z,T=X+qe,b="below-row"}else{const U=S.every(ve=>za(ve.node)),J=S.filter(ve=>ve.usage.sideId==="a").length,le=S.length-J,ie=!U&&le>=J;C=ie?Math.max(i,j)+Ha:Math.min(c,E)-Ha-q,T=z-D/2,b=ie?"sidebar-right":"sidebar-left"}}const A=D+ct,G=8;let Y=0;const H=[...d,...e.nodes.map(E=>{const j=ft(E,n);return{x:j.x,y:j.y,w:j.w,h:j.h}}),...N];for(;Y<G&&H.some(E=>Un({x:C,y:T,w:q,h:D},E));)T+=A,Y++;d.push({x:C,y:T,w:q,h:D}),o.push({id:P,type:"model",x:C,y:T,width:q,height:D,placementMode:b,data:L});for(const E of S)a.push({id:`${E.node.id}-to-${P}`,from:E.node.id,to:P,sideId:E.usage.sideId,kind:"model"})}return{modelNodes:o,modelEdges:a}}function Vs(e,t,n){if(t.length===0||e.length===0)return;const o=new Map;for(const i of n){const c=o.get(i.to);c?c.push(i.from):o.set(i.to,[i.from])}const a=new Map;for(const i of t)a.set(i.id,i);const l=12,s="group",r=[...e].sort((i,c)=>c.id.length-i.id.length);for(const i of r){const c=i.id.endsWith(s)?i.id.slice(0,i.id.length-s.length):i.id;for(const[d,f]of o){const v=a.get(d);if(!v||!f.every(S=>S.startsWith(c)))continue;const x=Math.min(i.x,v.x-l),g=Math.min(i.y,v.y-l),u=Math.max(i.x+i.width,v.x+v.width+l),y=Math.max(i.y+i.height,v.y+v.height+l);i.x=x,i.y=g,i.width=u-x,i.height=y-g}}for(const i of r){const c=i.id.endsWith(s)?i.id.slice(0,i.id.length-s.length):i.id;for(const d of e){if(d===i||!d.id.startsWith(c)||d.id.length<=i.id.length)continue;const f=Math.min(i.x,d.x),v=Math.min(i.y,d.y),x=Math.max(i.x+i.width,d.x+d.width),g=Math.max(i.y+i.height,d.y+d.height);i.x=f,i.y=v,i.width=x-f,i.height=g-v}}}function ft(e,t){const n=t[e.id];return{x:e.x,y:e.y,w:n?.w??e.width,h:n?.h??e.height}}function Us(e,t){const n=ft(e,t);return{x:n.x+n.w/2,y:n.y+n.h/2}}function za(e){return e.type==="prompt"||e.type==="side"&&e.data.mode==="ai"||e.type==="tool"&&e.data.kind==="prompt"}function ja(e){if(e.length===0)return 0;let t=0;for(const n of e)t+=n;return t/e.length}function Un(e,t){return e.x<t.x+t.w&&e.x+e.w>t.x&&e.y<t.y+t.h&&e.y+e.h>t.y}function Co(e,t,n,o,a,l){const s=[],r=[],i=[],c=[];function d($){if(!$)return null;const V=l[$];if(V)return V;for(const oe of Object.values(l))if(oe.name===$)return oe;return null}const f=fn(o),v=a[f],x=v?.w??Ts,g=v?.h??Cs,u=0,y=g+Ua;function S($,V){const oe=a[V];if(oe)return oe;if($.mode==="human")return{w:Va,h:Ss};const de=240,te=$.variables.length*24,re=$.tools.length*32,be=de+Math.max(te,re),ke=7,ge=$.tools.length>0;let Se=200;$.prompt&&(Se=Math.max(Se,$.prompt.name.length*ke+80));let we=ge?160:0;if(ge)for(const Te of $.tools)we=Math.max(we,Te.displayName.length*ke+40);return{w:Math.max(Va,ge?Se+we:Se),h:be}}const _=t.filter($=>$.id==="a"),M=t.filter($=>$.id==="b");function k($){return $.map(V=>{const oe=V.tools.filter(ke=>ke.kind==="tool"||ke.kind==="subagent"||ke.kind==="handoff"||ke.kind==="prompt"),de=[];for(let ke=0;ke<oe.length;ke++){const ge=oe[ke];if(ge.kind==="subagent"&&!!n[ge.name]){const we=Mo(o,V.id,ke,ge.kind,ge.name),xe=n[ge.name],Te=Co(xe.agent,xe.sides,n,we,a,l),Ce=(dn+qe+12)*2;de.push({width:Te.width+kt*2+Ce,height:Te.height+Vn+kt,isSubagent:!0,modelReserveLeft:Ce,modelReserveRight:0,subagentName:ge.name,subagentNodeId:fn(we),subagentGroupId:Ms(we),subTree:Te})}else{const we=ln(o,V.id,ke),xe=a[we];de.push({width:xe?.w??(ge.kind==="tool"?Es:ge.kind==="prompt"?Ns:ge.kind==="handoff"?Ps:_s),height:xe?.h??(ge.kind==="tool"?As:ge.kind==="prompt"?Ls:ge.kind==="handoff"?Rs:Is),isSubagent:!1})}}const te=ia(o,V.id),{w:re,h:be}=S(V,te);return{side:V,leaves:de,sideH:be,sideW:re,sideNodeId:te,externalTools:oe}})}const N=k(_),L=k(M),P=new Map,ne=new Set;function q($,V,oe){if(!$)return;const de=`${$.id}|${oe}`;if(ne.has(de))return;ne.add(de);const te=P.get($.id);if(te){V==="a"?te.hasLeftConsumer=!0:te.hasRightConsumer=!0;return}P.set($.id,{hasLeftConsumer:V==="a",hasRightConsumer:V==="b"})}for(const $ of[...N,...L]){q($.side.model,$.side.id,$.sideNodeId);for(let V=0;V<$.externalTools.length;V++){const oe=$.externalTools[V];oe.kind==="prompt"&&q(d(oe.model),$.side.id,ln(o,$.side.id,V))}for(const V of $.leaves)if(!(!V.isSubagent||!V.subTree))for(const oe of V.subTree.modelUsages)q(oe.model,oe.sideId,oe.consumerNodeId)}function D($){if(!$)return!1;const V=P.get($.id);return!!V?.hasRightConsumer&&!V?.hasLeftConsumer}function C($,V){if($.length===0)return{card:{minX:0,maxX:0},leaves:null,full:{minX:0,maxX:0}};let oe=0,de=1/0,te=-1/0,re=1/0,be=-1/0;for(const ge of $){const{side:Se,leaves:we,sideW:xe,externalTools:Te}=ge,Ce=V==="left"?oe-xe:oe,Je=V==="right"&&D(Se.model)?dn+qe:0;if(de=Math.min(de,Ce-Je),te=Math.max(te,Ce+xe),Te.length>0){const Pe=T(Ce,xe,Te,we);for(let Fe=0;Fe<we.length;Fe++){const xt=V==="right"&&Te[Fe]?.kind==="prompt"&&D(d(Te[Fe]?.model))?dn+qe:0,it=Pe[Fe];re=Math.min(re,it.x-xt),be=Math.max(be,it.x+we[Fe].width)}}oe+=(V==="left"?-1:1)*(xe+Zt)}const ke=re!==1/0;return{card:{minX:de,maxX:te},leaves:ke?{minX:re,maxX:be}:null,full:{minX:ke?Math.min(de,re):de,maxX:ke?Math.max(te,be):te}}}function T($,V,oe,de){const te=new Array(de.length),re=de.map((xe,Te)=>({index:Te,leaf:xe,tool:oe[Te]})),be=re.filter(xe=>b(xe.tool)),ke=new Set(be.map(xe=>xe.index)),ge=[];be.length>0&&ge.push(A(be,V*3));for(const xe of re)ke.has(xe.index)||ge.push(A([xe],Number.POSITIVE_INFINITY));ge.sort((xe,Te)=>xe.firstIndex-Te.firstIndex);const Se=ge.reduce((xe,Te)=>xe+Te.width,0)+Math.max(0,ge.length-1)*ut;let we=$+V/2-Se/2;for(const xe of ge){for(const Te of xe.positions)te[Te.index]={x:we+Te.x,yOffset:Te.yOffset};we+=xe.width+ut}return te}function b($){return $?.kind==="tool"||$?.kind==="provider"||$?.kind==="mcp"}function A($,V){const oe=Math.max(...$.map(we=>we.leaf.width),0),de=Number.isFinite(V)?Math.max(V,oe):Number.POSITIVE_INFINITY,te=[];let re=null;const be=()=>{re&&re.items.length>0&&te.push(re),re={items:[],width:0,height:0}};be();for(const we of $){re||be();const xe=re.items.length===0?we.leaf.width:re.width+ut+we.leaf.width;re.items.length>0&&xe>de&&be(),re.items.push(we),re.width=re.items.length===1?we.leaf.width:re.width+ut+we.leaf.width,re.height=Math.max(re.height,we.leaf.height)}re&&re.items.length>0&&te.push(re);const ke=Math.max(...te.map(we=>we.width),0),ge=[];let Se=0;for(const we of te){let xe=(ke-we.width)/2;for(const Te of we.items)ge.push({index:Te.index,x:xe,yOffset:Se}),xe+=Te.leaf.width+ut;Se+=we.height+ut}return{firstIndex:Math.min(...$.map(we=>we.index)),width:ke,height:te.reduce((we,xe)=>we+xe.height,0)+Math.max(0,te.length-1)*ut,positions:ge}}const G=C(N,"left"),Y=C(L,"right"),H=G.card.maxX-Y.card.minX+Zt,E=G.leaves&&Y.leaves?G.leaves.maxX-Y.leaves.minX+Zt:0,j=Math.max(Os,H,E),F=Math.max(x/2,j/2-G.full.minX);let X=y;function he($,V,oe,de,te,re,be){const ke=ln(o,V,be);if(!de.isSubagent||!de.subTree){if(s.push({id:ke,type:"tool",x:te,y:re,width:de.width,height:de.height,data:oe,sideId:V}),r.push({id:`${$}-to-${ke}`,from:$,to:ke,sideId:V,toolKind:oe.kind}),oe.kind==="prompt"){const Ce=d(oe.model);Ce&&c.push({consumerNodeId:ke,sideId:V,model:Ce})}X=Math.max(X,re+de.height);return}const ge=de.subTree,Se=te+(de.modelReserveLeft??0),we=re+Vn;for(const Ce of ge.nodes){const Pe=Ce.type==="agent"&&Ce.id===de.subagentNodeId&&"type"in Ce.data?{...Ce.data,_isSubagent:!0}:Ce.data;s.push({...Ce,x:Ce.x+Se,y:Ce.y+we,data:Pe})}for(const Ce of ge.edges)r.push(Ce);for(const Ce of ge.groups)i.push({...Ce,x:Ce.x+Se,y:Ce.y+we});for(const Ce of ge.modelUsages)c.push(Ce);r.push({id:`${$}-to-${de.subagentNodeId}`,from:$,to:de.subagentNodeId,sideId:V,toolKind:oe.kind});const xe=oe.config||{},Te=xe.resumable;i.push({id:de.subagentGroupId,label:n[de.subagentName]?.agent.title||de.subagentName,x:Se-kt,y:re,width:ge.width+kt*2,height:ge.height+Vn+kt,sideId:V,subagent:{blocking:!!xe.blocking,resumable:!!Te,multiInstance:!!Te&&typeof Te=="object"&&(Te.max_instances===null||(Te.max_instances??0)>1),immediate:!!xe.immediate}}),X=Math.max(X,we+ge.height+kt)}function se($,V){let oe=V==="left"?F-j/2:F+j/2;for(const de of $){const{side:te,leaves:re,sideH:be,sideW:ke,sideNodeId:ge,externalTools:Se}=de,we=Se.filter(b).length,xe=we>5?(we-5)*10:0,Te=y+be+Ua+xe,Ce=V==="left"?oe-ke:oe;if(s.push({id:ge,type:"side",x:Ce,y,width:ke,height:be,data:te,sideId:te.id}),r.push({id:`${f}-to-${ge}`,from:f,to:ge,sideId:te.id}),te.model&&c.push({consumerNodeId:ge,sideId:te.id,model:te.model}),X=Math.max(X,y+be),Se.length>0){const Je=T(Ce,ke,Se,re);for(let Pe=0;Pe<Se.length;Pe++){const Fe=Je[Pe];he(ge,te.id,Se[Pe],re[Pe],Fe.x,Te+Fe.yOffset,Pe)}}oe+=(V==="left"?-1:1)*(ke+Zt)}}se(N,"left"),se(L,"right");const fe=new Set(Object.keys(e.env||{})),z=new Set,U=t.flatMap($=>$.variables).filter($=>fe.has($.name)).filter($=>z.has($.name)?!1:(z.add($.name),!0)),J=U.length>0?{...e,_variables:U}:e;s.push({id:f,type:"agent",x:F-x/2,y:u,width:x,height:g,data:J});let le=1/0,ie=1/0,ve=-1/0,ee=-1/0;for(const $ of s)le=Math.min(le,$.x),ie=Math.min(ie,$.y),ve=Math.max(ve,$.x+$.width),ee=Math.max(ee,$.y+$.height);for(const $ of i)le=Math.min(le,$.x),ie=Math.min(ie,$.y),ve=Math.max(ve,$.x+$.width),ee=Math.max(ee,$.y+$.height);const Z=ve-le,h=ee-ie;for(const $ of s)$.x-=le,$.y-=ie;for(const $ of i)$.x-=le,$.y-=ie;return{nodes:s,edges:r,groups:i,modelUsages:c,width:Z,height:h}}function Hs(e,t,n,o,a={}){if(!e||t.length===0)return{nodes:[],edges:[],groups:[],bounds:{x:0,y:0,width:0,height:0}};const l=$o(e.id||e.name),s=Co(e,t,n,l,o,a),r=[...s.nodes],i=[...s.edges],c=[...s.groups],{modelNodes:d,modelEdges:f}=Bs(s,l,o);r.push(...d),i.push(...f),Vs(c,d,f);let v=0,x=0,g=s.width,u=s.height;for(const y of d)y.x<v&&(v=y.x),y.y<x&&(x=y.y),y.x+y.width>g&&(g=y.x+y.width),y.y+y.height>u&&(u=y.y+y.height);for(const y of c)y.x<v&&(v=y.x),y.y<x&&(x=y.y),y.x+y.width>g&&(g=y.x+y.width),y.y+y.height>u&&(u=y.y+y.height);if(v<0||x<0){const y=-Math.min(v,0),S=-Math.min(x,0);for(const _ of r)_.x+=y,_.y+=S;for(const _ of c)_.x+=y,_.y+=S;g+=y,u+=S}return{nodes:r,edges:i,groups:c,bounds:{x:0,y:0,width:g,height:u}}}function zs(e,t,n,o,a){return O(()=>Hs(e.value,t.value,n.value,o.value,a.value))}function js(e){const{selectedAgentId:t,threadListPaneRef:n,messagesPaneRef:o,logsPaneRef:a}=e,l=xn(),s=Zn(),r=()=>typeof l.query.thread=="string"?l.query.thread:null,i=U=>{s.replace({path:l.path,query:{...l.query,thread:U||void 0},hash:l.hash})},c=U=>{s.replace({path:l.path,query:{...l.query,inspector:U},hash:l.hash})},d=r(),f=B(d),v=B(null),x="__draft_new_thread__",g=B(!1);let u=!1;Le(f,U=>{if(u||U===x)return;const J=r();U!==J&&i(U)}),Le(()=>l.query.thread,U=>{if(u)return;const J=typeof U=="string"?U:null;if(J&&v.value&&!v.value.has(J)){u=!0,f.value=null,i(null),He(()=>{u=!1});return}J!==f.value&&(f.value=J)},{immediate:!0});const y=B(null),S=B(null),_=B(null),M=B(null),k=B(null),N=B(null),L=B(null),P=B(!1),ne=B(null),{thread:q}=fs(O(()=>f.value===x?null:f.value));let D=!1;Le(t,()=>{if(!D){D=!0;return}u=!0,f.value=null,y.value=null,S.value=null,_.value=null,M.value=null,k.value=null,N.value=null,L.value=null,He(()=>{u=!1})}),Le(f,()=>{y.value=null,S.value=null,_.value=null,M.value=null,k.value=null});const C=U=>{N.value=U,L.value=U},T=U=>{const J=o.value,le=a.value;if(!J||!le)return null;if(J.hasWorkblockForLogId(U))return U;let ie=U;const ve=10;for(let ee=0;ee<ve&&ie;ee++){const Z=le.getLog(ie);if(!Z)break;const h=Z.parent_log_id;if(!h)break;if(J.hasWorkblockForLogId(h))return h;ie=h}return null};return{selectedThreadId:f,selectedThread:q,selectedMessageId:y,selectedLogId:S,selectedEffectId:_,selectedEffectRef:M,highlightedWorkblockLogId:k,hoveredLogId:N,hoveredWorkblockLogId:L,showThreadModal:P,editingThread:ne,draftThreadId:x,isCreatingThreadDraft:g,handleThreadSelect:U=>{f.value=U},handleThreadsLoaded:(U,J)=>{u=!1,v.value=J?new Set(J):null,f.value&&v.value&&!v.value.has(f.value)&&(f.value=null),U&&!f.value?f.value=U:!U&&!f.value&&r()&&i(null)},handleMessageClick:async(U,J,le)=>{if(y.value=U,le){_.value=le.id??null,M.value=le,S.value=null,k.value=null,c("effects"),await He(),a.value?.selectEffectByReference(le);return}if(_.value=null,M.value=null,!J){S.value=null,k.value=null;return}const ie=a.value;if(!ie){S.value=J,k.value=J;return}const ve=!ie.hasLog(J);if(ve&&ie.setLoadingForLog(!0),S.value=J,k.value=J,ve&&!await ie.loadUntilLogId(J)){ie.setLoadingForLog(!1);return}await ie.waitForLogRow(J)&&(ie.scrollToLog(J),ie.selectLogById(J))},handleMessageHover:C,handleLogClick:U=>{S.value=U,_.value=null,M.value=null,y.value=null;const J=o.value;if(!J){k.value=U;return}if(J.scrollToLogId(U)){k.value=U;return}const le=T(U);le&&le!==U&&J.scrollToLogId(le),k.value=le??U},handleLogHover:U=>{if(N.value=U,!U){L.value=null;return}L.value=T(U)??U},handleLogsLoaded:U=>{U&&(S.value=U)},handleLogsDeleted:U=>{a.value?.removeLogsByIds(U)},handleThreadDeleted:U=>{f.value=null,y.value=null,S.value=null,_.value=null,M.value=null,k.value=null,N.value=null,L.value=null,n.value?.refetch()},handleEditThread:()=>{q.value&&(ne.value=q.value,P.value=!0)},handleCreateThread:()=>{ne.value=null,P.value=!1,g.value=!0,f.value=x},handleThreadCreated:U=>{g.value=!1,n.value?.refetch(),f.value=U,He(()=>o.value?.focusComposer())},handleCancelCreateThread:()=>{g.value=!1,f.value===x&&(f.value=null)},handleThreadUpdated:()=>{n.value?.refetch()}}}function Fs(e){return Array.from(new Set(e.map(t=>t.id))).sort()}function Xs(e){const t=B({}),n=B(!1),o=B(null),a=O(()=>Fs(Yr(e))),l=O(()=>a.value.join(""));let s=0;async function r(i={}){const c=++s,d=a.value;if(d.length===0){t.value={},o.value=null,n.value=!1;return}const f={...t.value},v=i.force?d:d.filter(x=>f[x]===void 0);if(v.length===0){o.value=null,n.value=!1;return}n.value=!0,o.value=null;try{const x=await Promise.all(v.map(async g=>{try{const u=await Qe(`/threads?agent_id=${encodeURIComponent(g)}&limit=1`);return[g,u.total??0]}catch{return[g,0]}}));if(c!==s)return;for(const[g,u]of x)f[g]=u;t.value=f}catch{c===s&&(o.value="Unable to load thread counts.")}finally{c===s&&(n.value=!1)}}return Le(l,()=>{r()},{immediate:!0}),{threadCounts:t,loadingThreadCounts:n,threadCountsError:o,refreshThreadCounts:()=>r({force:!0})}}const Ks={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ys(e,t){return p(),w("svg",Ks,[...t[0]||(t[0]=[m("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[m("path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zm1 .27V12"}),m("path",{d:"M3.29 7L12 12l8.71-5M7.5 4.27l9 5.15"})],-1)])])}const Hn=et({name:"lucide-package",render:Ys}),qs={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Gs(e,t){return p(),w("svg",qs,[...t[0]||(t[0]=[m("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[m("path",{d:"M12 22v-9m3.17-10.79a1.67 1.67 0 0 1 1.63 0L21 4.57a1.93 1.93 0 0 1 0 3.36L8.82 14.79a1.66 1.66 0 0 1-1.64 0L3 12.43a1.93 1.93 0 0 1 0-3.36z"}),m("path",{d:"M20 13v3.87a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13"}),m("path",{d:"M21 12.43a1.93 1.93 0 0 0 0-3.36L8.83 2.2a1.64 1.64 0 0 0-1.63 0L3 4.57a1.93 1.93 0 0 0 0 3.36l12.18 6.86a1.64 1.64 0 0 0 1.63 0z"})],-1)])])}const Ws=et({name:"lucide-package-open",render:Gs}),Qs={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Js(e,t){return p(),w("svg",Qs,[...t[0]||(t[0]=[m("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497zM15 5l4 4"},null,-1)])])}const Zs=et({name:"lucide-pencil",render:Js}),el={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function tl(e,t){return p(),w("svg",el,[...t[0]||(t[0]=[m("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[m("circle",{cx:"12",cy:"12",r:"1"}),m("circle",{cx:"12",cy:"5",r:"1"}),m("circle",{cx:"12",cy:"19",r:"1"})],-1)])])}const nl=et({name:"lucide-ellipsis-vertical",render:tl}),al={class:"px-4 py-3 border-b border-neutral-200 dark:border-neutral-800"},ol={class:"flex items-center justify-between"},rl={class:"flex items-center gap-2"},sl={key:0,class:"text-xs font-mono text-neutral-500 dark:text-neutral-400"},ll={class:"flex items-center gap-2 border-b border-neutral-200 px-5 py-2.5 dark:border-neutral-800"},il={class:"flex flex-1 items-center gap-2 rounded-lg border border-neutral-200 bg-white px-3 py-1.5 text-sm dark:border-neutral-800 dark:bg-neutral-900"},dl=["value"],ul={class:"flex shrink-0 overflow-hidden rounded-md border border-neutral-200 text-[11px] dark:border-neutral-700"},cl=["onClick"],fl={class:"grid grid-cols-[36px_1fr_72px_80px_1fr_32px] gap-x-4 border-b border-neutral-200 px-5 py-2 text-[11px] font-semibold text-neutral-400 dark:border-neutral-800 dark:text-neutral-500"},ml={key:0,class:"flex-1 px-5 py-5 text-sm text-neutral-500 dark:text-neutral-400"},hl={key:1,class:"flex-1 px-5 py-5 text-sm text-neutral-500 dark:text-neutral-400"},pl={key:2,class:"flex-1 overflow-y-auto"},vl=["data-agent-id","onClick"],gl={class:"flex items-center justify-center"},xl=["src"],yl={class:"flex min-w-0 items-center gap-2"},bl=["onClick","aria-label"],kl={key:0,class:"text-[11px] font-mono"},wl={class:"min-w-0"},$l={key:0,class:"relative flex items-center justify-center","data-agent-menu":""},Ml=["aria-label","aria-expanded","onClick"],Tl={key:0,class:"absolute right-0 top-8 z-30 min-w-[160px] origin-top-right rounded-lg border border-neutral-200 bg-white py-1 shadow-lg dark:border-neutral-700 dark:bg-neutral-900"},Cl=["onClick"],Sl=["onClick"],_l=["onClick"],Il=["onClick"],El=["onClick"],Al=_e({__name:"AgentBrowserPanel",props:{agents:{},selectedId:{},loading:{type:Boolean},search:{},typeFilter:{},sortBy:{},sortDir:{},threadCounts:{},readonly:{type:Boolean,default:!1}},emits:["update:search","update:typeFilter","sort","select","view-threads","add","edit","pack","unpack","delete","publish"],setup(e,{emit:t}){const n=B(null);function o(d){n.value=n.value===d?null:d}function a(){n.value=null}function l(d){const f=d.target;(!(f instanceof Element)||!f.closest("[data-agent-menu]"))&&a()}ea(()=>document.addEventListener("click",l)),Et(()=>document.removeEventListener("click",l));const s=t,r=[{value:"all",label:"All"},{value:"ai_human",label:"AI+Human"},{value:"dual_ai",label:"Dual AI"}];function i(d){return d==="dual_ai"?"Dual AI":"AI+Human"}function c(d,f){return f==="a"?d.side_a_agent_prompt||"-":d.type==="ai_human"?"Human":d.side_b_agent_prompt||"-"}return(d,f)=>(p(),w("aside",{class:"flex h-full w-[90cqi] max-w-[780px] flex-col",onClick:f[5]||(f[5]=Me(()=>{},["stop"]))},[m("div",al,[m("div",ol,[m("div",rl,[Q(I(tt),{class:"h-[18px] w-[18px] shrink-0 opacity-60"}),f[6]||(f[6]=m("h2",{class:"text-base font-bold"},"Agents",-1)),!e.loading&&e.agents.length>0?(p(),w("span",sl," ("+K(e.agents.length)+") ",1)):W("",!0)])])]),m("div",ll,[m("label",il,[Q(I(ns),{class:"h-4 w-4 shrink-0 text-neutral-400"}),m("input",{type:"text",placeholder:"Search agents...",value:e.search,onInput:f[0]||(f[0]=v=>d.$emit("update:search",v.target.value)),class:"w-full bg-transparent outline-none placeholder:text-neutral-400"},null,40,dl)]),m("div",ul,[(p(),w($e,null,Ie(r,v=>m("button",{key:v.value,type:"button",class:ue(["px-2.5 py-1.5 font-medium transition-colors",e.typeFilter===v.value?"bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-900":"text-neutral-500 hover:bg-neutral-100 dark:text-neutral-400 dark:hover:bg-neutral-800"]),onClick:x=>d.$emit("update:typeFilter",v.value)},K(v.label),11,cl)),64))]),e.readonly?W("",!0):(p(),w("button",{key:0,type:"button",class:"flex shrink-0 items-center gap-1 rounded-md bg-neutral-900 px-3 py-1.5 text-[11px] font-medium text-white transition-colors hover:bg-neutral-800 dark:bg-neutral-100 dark:text-neutral-900 dark:hover:bg-neutral-200",onClick:f[1]||(f[1]=v=>d.$emit("add"))},[Q(I(xo),{class:"h-3.5 w-3.5"}),f[7]||(f[7]=pe(" New Agent ",-1))]))]),m("div",fl,[f[11]||(f[11]=m("div",null,null,-1)),m("button",{type:"button",class:"flex items-center gap-1 text-left",onClick:f[2]||(f[2]=v=>d.$emit("sort","title"))},[f[8]||(f[8]=pe(" Title ",-1)),e.sortBy==="title"&&e.sortDir==="asc"?(p(),ce(I(On),{key:0,class:"h-3 w-3"})):e.sortBy==="title"&&e.sortDir==="desc"?(p(),ce(I(Dn),{key:1,class:"h-3 w-3"})):(p(),ce(I(Bn),{key:2,class:"h-3 w-3 opacity-40"}))]),m("button",{type:"button",class:"flex items-center gap-1 text-left",onClick:f[3]||(f[3]=v=>d.$emit("sort","threads"))},[f[9]||(f[9]=pe(" Threads ",-1)),e.sortBy==="threads"&&e.sortDir==="asc"?(p(),ce(I(On),{key:0,class:"h-3 w-3"})):e.sortBy==="threads"&&e.sortDir==="desc"?(p(),ce(I(Dn),{key:1,class:"h-3 w-3"})):(p(),ce(I(Bn),{key:2,class:"h-3 w-3 opacity-40"}))]),m("button",{type:"button",class:"flex items-center gap-1 text-left",onClick:f[4]||(f[4]=v=>d.$emit("sort","type"))},[f[10]||(f[10]=pe(" Type ",-1)),e.sortBy==="type"&&e.sortDir==="asc"?(p(),ce(I(On),{key:0,class:"h-3 w-3"})):e.sortBy==="type"&&e.sortDir==="desc"?(p(),ce(I(Dn),{key:1,class:"h-3 w-3"})):(p(),ce(I(Bn),{key:2,class:"h-3 w-3 opacity-40"}))]),f[12]||(f[12]=m("div",null,"Sides",-1)),f[13]||(f[13]=m("div",null,null,-1))]),e.loading?(p(),w("div",ml," Loading agents... ")):e.agents.length===0?(p(),w("div",hl," No agents match this search. ")):(p(),w("div",pl,[(p(!0),w($e,null,Ie(e.agents,v=>(p(),w("div",{key:v.id,"data-agent-id":v.id,class:ue(["grid w-full cursor-pointer grid-cols-[36px_1fr_72px_80px_1fr_32px] items-center gap-x-4 px-5 py-3 text-[13px] transition-colors",e.selectedId===v.id?"agents-surface-selected agents-border-selected":"agents-surface-hover"]),onClick:x=>d.$emit("select",v.id)},[m("div",gl,[m("img",{src:v.icon||I(na)(v.id),alt:"",class:"h-9 w-9 rounded-md object-cover"},null,8,xl)]),m("div",yl,[v.packed?(p(),ce(I(Hn),{key:0,class:"h-4 w-4 shrink-0 text-blue-500",title:`Packed agent from ${v.packageId}`},null,8,["title"])):W("",!0),m("span",{class:ue(["truncate font-medium",e.selectedId===v.id?"agents-text-selected":"text-neutral-900 dark:text-neutral-100"])},K(v.title),3)]),m("button",{type:"button",class:ue(["flex items-center gap-1 rounded-md px-1.5 py-0.5 transition-colors",[e.selectedId===v.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300",e.threadCounts[v.id]>0?"":"opacity-30"]]),onClick:Me(x=>s("view-threads",v.id),["stop"]),title:"View threads","aria-label":`View threads for ${v.title}`},[Q(I(vt),{class:"h-3.5 w-3.5"}),e.threadCounts[v.id]>0?(p(),w("span",kl,K(e.threadCounts[v.id]),1)):W("",!0)],10,bl),m("div",{class:ue(e.selectedId===v.id?"agents-text-selected-muted":"text-neutral-500 dark:text-neutral-400")},K(i(v.type)),3),m("div",wl,[m("div",{class:ue(["truncate",e.selectedId===v.id?"agents-text-selected-muted":"text-neutral-500 dark:text-neutral-400"])},[m("span",{class:ue(["text-[10px] font-semibold uppercase tracking-wider",e.selectedId===v.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},"A",2),pe(" "+K(c(v,"a")),1)],2),m("div",{class:ue(["truncate",e.selectedId===v.id?"agents-text-selected-muted":"text-neutral-500 dark:text-neutral-400"])},[m("span",{class:ue(["text-[10px] font-semibold uppercase tracking-wider",e.selectedId===v.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},"B",2),pe(" "+K(c(v,"b")),1)],2)]),e.readonly?W("",!0):(p(),w("div",$l,[m("button",{type:"button",class:"rounded p-1 text-neutral-400 transition-colors hover:bg-neutral-100 hover:text-neutral-600 dark:hover:bg-neutral-800 dark:hover:text-neutral-300","aria-label":`Open actions for ${v.title}`,"aria-expanded":n.value===v.id,onClick:Me(x=>o(v.id),["stop"])},[Q(I(nl),{class:"h-4 w-4"})],8,Ml),Q(io,{"enter-active-class":"transition-all duration-100 ease-out","enter-from-class":"opacity-0 scale-95","enter-to-class":"opacity-100 scale-100","leave-active-class":"transition-all duration-75 ease-in","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-95"},{default:ye(()=>[n.value===v.id?(p(),w("div",Tl,[v.packed?W("",!0):(p(),w("button",{key:0,type:"button",class:"flex w-full items-center gap-2.5 px-3 py-2 text-[13px] text-neutral-700 transition-colors hover:bg-neutral-50 dark:text-neutral-200 dark:hover:bg-neutral-800",onClick:Me(x=>{d.$emit("edit",v),a()},["stop"])},[Q(I(Zs),{class:"h-4 w-4 text-neutral-400"}),f[14]||(f[14]=pe(" Edit ",-1))],8,Cl)),v.packed?W("",!0):(p(),w("button",{key:1,type:"button",class:"flex w-full items-center gap-2.5 px-3 py-2 text-[13px] text-neutral-700 transition-colors hover:bg-neutral-50 dark:text-neutral-200 dark:hover:bg-neutral-800",onClick:Me(x=>{d.$emit("pack",v),a()},["stop"])},[Q(I(Hn),{class:"h-4 w-4 text-neutral-400"}),f[15]||(f[15]=pe(" Pack ",-1))],8,Sl)),v.packed?(p(),w("button",{key:2,type:"button",class:"flex w-full items-center gap-2.5 px-3 py-2 text-[13px] text-neutral-700 transition-colors hover:bg-neutral-50 dark:text-neutral-200 dark:hover:bg-neutral-800",onClick:Me(x=>{d.$emit("unpack",v),a()},["stop"])},[Q(I(Ws),{class:"h-4 w-4 text-neutral-400"}),f[16]||(f[16]=pe(" Unpack ",-1))],8,_l)):W("",!0),v.packed?(p(),w("button",{key:3,type:"button",class:"flex w-full items-center gap-2.5 px-3 py-2 text-[13px] text-neutral-700 transition-colors hover:bg-neutral-50 dark:text-neutral-200 dark:hover:bg-neutral-800",onClick:Me(x=>{d.$emit("publish",v),a()},["stop"])},[Q(I(Hn),{class:"h-4 w-4 text-neutral-400"}),f[17]||(f[17]=pe(" Publish Package ",-1))],8,Il)):W("",!0),f[18]||(f[18]=m("div",{class:"my-1 border-t border-neutral-100 dark:border-neutral-800"},null,-1)),m("button",{type:"button",class:"flex w-full items-center gap-2.5 px-3 py-2 text-[13px] text-red-600 transition-colors hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-950/30",onClick:Me(x=>{d.$emit("delete",v),a()},["stop"])},[Q(I(gs),{class:"h-4 w-4"}),pe(" "+K(v.packed?"Delete Package":"Delete"),1)],8,El)])):W("",!0)]),_:2},1024)]))],10,vl))),128))]))]))}});function Fa(e){return Math.round(e*1e3)/1e3}function zn(e){return e?Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>`${t}:${n.left}:${n.width}`).join("|"):""}function jn(e,t){return Number.isFinite(e)?!Number.isFinite(t)||t<=0?Fa(e):Fa(e/t):e}function Nl(e,t,n,o,a){const l=B(!1),s=B(new Map);let r=null,i=null,c=null,d=null,f="",v="",x=null;const g=new Map;function u(){return e.value.nodes.filter(G=>G.type!=="hook").map(G=>G.id)}function y(){const G=u();return G.length>0&&G.every(Y=>s.value.has(Y))}function S(){return Array.from(s.value.entries()).sort(([G],[Y])=>G.localeCompare(Y)).map(([G,Y])=>`${G}:${Y.w}x${Y.h}:${Y.modelAnchorY??""}:${zn(Y.toolColumns)}`).join("|")}function _(){return new Set(e.value.nodes.map(G=>G.id))}function M(){r&&clearTimeout(r),i&&clearTimeout(i),c&&clearTimeout(c),r=null,i=null,c=null}function k(){return typeof ResizeObserver>"u"?null:x||(x=new ResizeObserver(G=>{for(const Y of G)for(const[H,E]of g)if(E===Y.target){b(H,E);break}}),x)}function N(G,Y){const H=g.get(G);if(H===Y)return;const E=k();H&&E?.unobserve(H),g.set(G,Y),E?.observe(Y)}function L(){const G=_();for(const[Y,H]of g)G.has(Y)||(x?.unobserve(H),g.delete(Y),s.value.delete(Y))}function P(){He(()=>{L();for(const[G,Y]of g)b(G,Y)})}function ne(){c&&clearTimeout(c),c=setTimeout(()=>{t.value||l.value||e.value.nodes.length===0||!y()||He(()=>{l.value=!0,n(C())})},800)}Le(t,G=>{if(G){l.value=!1,s.value.clear(),v="",a?.(),M();return}e.value.nodes.length>0&&(P(),ne())}),Le(()=>e.value.nodes.map(G=>G.id).join(","),G=>{G!==f&&(f=G,G&&(l.value=!1,v="",a?.(),M(),P(),ne()))});const q=O(()=>e.value.nodes.map(G=>{const Y=s.value.get(G.id);return Y?{...G,width:Y.w,height:Y.h}:G})),D=O(()=>{const G={};for(const[Y,H]of s.value)(H.modelAnchorY!==void 0||H.toolColumns)&&(G[Y]={modelAnchorY:H.modelAnchorY,toolColumns:H.toolColumns});return G});function C(){const G=q.value,Y=e.value.groups;if(G.length===0)return e.value.bounds;let H=1/0,E=1/0,j=-1/0,F=-1/0;for(const X of G)H=Math.min(H,X.x),E=Math.min(E,X.y),j=Math.max(j,X.x+X.width),F=Math.max(F,X.y+X.height);for(const X of Y)H=Math.min(H,X.x),E=Math.min(E,X.y),j=Math.max(j,X.x+X.width),F=Math.max(F,X.y+X.height);return{x:H,y:E,width:j-H,height:F-E}}function T(){d&&cancelAnimationFrame(d),d=requestAnimationFrame(()=>{const G=S();G!==v&&(v=G,o(Object.fromEntries(s.value))),!(t.value||!y())&&(r&&clearTimeout(r),r=setTimeout(()=>{t.value||!y()||(c&&clearTimeout(c),c=null,l.value=!0,He(()=>{n(C()),i&&clearTimeout(i),i=setTimeout(()=>n(C()),220)}))},180))})}function b(G,Y){He(()=>{const H=Y.offsetWidth,E=Y.offsetHeight;if(H<=0||E<=0)return;const j=Y.getBoundingClientRect(),F=H>0&&j.width>0?j.width/H:1,X=E>0&&j.height>0?j.height/E:1;let he;const se=Y.querySelector("[data-model-anchor]");if(se&&j.height>0){const le=se.getBoundingClientRect();le.height>0&&(he=jn(le.top+le.height/2-j.top,X))}let fe;const z=Y.querySelectorAll("[data-tool-column]");if(z.length>0&&j.width>0){fe={};for(const le of z){const ie=le.dataset.toolColumn;if(!ie)continue;const ve=le.getBoundingClientRect();fe[ie]={left:jn(ve.left-j.left,F),width:jn(ve.width,F)}}}const U=s.value.get(G),J=U?.w!==H||U?.h!==E;if(!(U?.w===H&&U?.h===E&&U?.modelAnchorY===he&&zn(U?.toolColumns)===zn(fe))){if(s.value.set(G,{w:H,h:E,modelAnchorY:he,toolColumns:fe}),l.value&&!J){const le=S();le!==v&&(v=le,o(Object.fromEntries(s.value)));return}T()}})}function A(G,Y){N(G,Y),b(G,Y)}return Et(()=>{r&&clearTimeout(r),i&&clearTimeout(i),c&&clearTimeout(c),d&&cancelAnimationFrame(d),x?.disconnect(),x=null,g.clear()}),{layoutStable:l,measurements:s,nodesWithMeasuredSizes:q,nodeMetrics:D,measureNode:A,measuredBounds:C}}function Ll(e){const t=B(null);let n=0,o="",a=0,l="",s=null,r=null;function i(v){const x=e.measurements.value.get(v.id);return{x:v.x,y:v.y,width:x?.w??v.width,height:x?.h??v.height}}function c(v){if(!e.shouldHandleClick())return;const x=v.target;x instanceof Element&&(x.closest("[data-canvas-node]")||x.closest("[data-canvas-group]"))||(t.value=null,e.onDeselect())}function d(v,x){if(!e.shouldHandleClick())return;const g=v.target;if(g instanceof Element&&g.closest("[data-canvas-node]"))return;const u=Date.now(),y=u-n<350&&o===x.id;if(n=u,o=x.id,!y){e.focusNode(x);return}const S=e.containerRef.value;if(!S)return;const _=S.getBoundingClientRect(),M=40,k=(_.width-M*2)/x.width,N=(_.height-M*2)/x.height;e.focusNode(x,Math.min(k,N,1.5))}function f(v){if(!e.shouldHandleClick())return;e.selectedNodeId.value||e.saveViewport(),e.onSelectNode(v);const x=i(v);t.value=x;const g=Date.now(),u=g-a<350&&l===v.id;a=g,l=v.id,e.focusNode(x,u?1.2:void 0)}return Le(e.selectedNodeId,(v,x)=>{if(!v){t.value=null,x&&e.restoreViewport();return}const g=e.layout.value.nodes.find(u=>u.id===v);g&&(t.value=i(g))}),ea(()=>{s=new ResizeObserver(()=>{r&&clearTimeout(r),r=setTimeout(()=>{const v=t.value,x=e.containerRef.value;if(!v||!x||!e.layoutStable.value)return;const g=x.getBoundingClientRect();let u=e.viewportState.value.scale;const y=60;if(v.width>0&&v.height>0){const S=(g.width-y*2)/v.width,_=(g.height-y*2)/v.height,M=Math.min(S,_);u>M&&M>.1&&(u=M)}e.focusNode(v,u)},320)}),e.containerRef.value&&s.observe(e.containerRef.value)}),Et(()=>{s?.disconnect(),r&&clearTimeout(r)}),{handleCanvasClick:c,handleGroupClick:d,handleNodeSelect:f}}const en=6,Pl=250;function Rl(e,t={}){const{minScale:n=.1,maxScale:o=2.5,padding:a=80,panPadding:l=a}=t,s=B({x:0,y:0,scale:1}),r=B(!1),i=B(!1),c={x:0,y:0,viewX:0,viewY:0},d={x:0,y:0,time:0};let f=null,v=!1,x=0,g=null,u=null,y=null;const S=150;function _(){i.value=!0,u&&clearTimeout(u),u=setTimeout(()=>{i.value=!1,u=null},S)}let M=null,k=!1,N=!1,L=null;function P(){k=!0,N=!0}function ne(){g&&clearTimeout(g),g=setTimeout(()=>{const{x:h,y:$,scale:V}=s.value,oe=Math.round(h/V)*V,de=Math.round($/V)*V;(oe!==h||de!==$)&&(s.value=b({x:oe,y:de,scale:V}))},120)}const q=O(()=>{const{x:h,y:$,scale:V}=s.value;return i.value?{transform:`translate3d(${h}px, ${$}px, 0) scale(${V})`,transformOrigin:"0 0",willChange:"transform"}:{transform:`translate3d(${h/V}px, ${$/V}px, 0)`,zoom:V,transformOrigin:"0 0",willChange:"transform"}}),D=O(()=>Math.round(s.value.scale*100));function C(h){return Math.min(o,Math.max(n,h))}function T(h,$,V){return Math.min(V,Math.max($,h))}function b(h){const $=C(h.scale),V=e.value,oe=L;if(!V||!oe||oe.width<=0||oe.height<=0)return{...h,scale:$};const de=V.getBoundingClientRect();if(de.width<=0||de.height<=0)return{...h,scale:$};const te=Math.max(0,l)/$,re=Math.max(0,l)/$,be=(de.width/2-h.x)/$,ke=(de.height/2-h.y)/$,ge=T(be,oe.x-te,oe.x+oe.width+te),Se=T(ke,oe.y-re,oe.y+oe.height+re);return{x:de.width/2-ge*$,y:de.height/2-Se*$,scale:$}}function A(h,$=!1){s.value=b(h),$&&ne()}function G(h,$,V){const oe=C(h),de=s.value,te=oe/de.scale;A({x:$-($-s.value.x)*te,y:V-(V-s.value.y)*te,scale:oe},!0)}function Y(h){const $=e.value;if($){if(h.ctrlKey||h.metaKey){h.preventDefault(),h.stopPropagation?.(),P(),_();const V=$.getBoundingClientRect(),oe=h.clientX-V.left,de=h.clientY-V.top,te=Math.min(Math.abs(h.deltaY),10)/10,be=1+(h.deltaY>0?-1:1)*.03*te;G(s.value.scale*be,oe,de);return}h.preventDefault(),h.stopPropagation?.(),P(),_(),A({...s.value,x:s.value.x-h.deltaX,y:s.value.y-h.deltaY},!0)}}function H(h){h.button!==0&&h.button!==1||(f=h.pointerId,r.value=!1,c.x=h.clientX,c.y=h.clientY,c.viewX=s.value.x,c.viewY=s.value.y,d.x=h.clientX,d.y=h.clientY,d.time=Date.now(),v=!1)}function E(h){if(f!==h.pointerId)return;const $=h.clientX-d.x,V=h.clientY-d.y,oe=$*$+V*V;!r.value&&oe>en*en&&(r.value=!0,v||(h.currentTarget.setPointerCapture(h.pointerId),v=!0)),r.value&&(_(),A({...s.value,x:c.viewX+(h.clientX-c.x),y:c.viewY+(h.clientY-c.y)}))}function j(h){if(f!==h.pointerId)return;const $=h.clientX-d.x,V=h.clientY-d.y,oe=$*$+V*V,de=Date.now()-d.time<=Pl&&oe<=en*en;r.value&&P(),de||(x=Date.now()+32),r.value=!1,f=null,v&&(h.currentTarget?.releasePointerCapture(h.pointerId),v=!1),ne()}function F(){return Date.now()>=x}function X(){const h=e.value;if(!h)return{cx:0,cy:0};const $=h.getBoundingClientRect();return{cx:$.width/2,cy:$.height/2}}function he(){P(),_();const{cx:h,cy:$}=X();G(s.value.scale+.1,h,$)}function se(){P(),_();const{cx:h,cy:$}=X();G(s.value.scale-.1,h,$)}function fe(h,$={}){L=h.width>0&&h.height>0?{...h}:null;const V=e.value;if(!V||h.width===0||h.height===0||!$.force&&N)return;const oe=V.getBoundingClientRect(),de=(oe.width-a*2)/h.width,te=(oe.height-a*2)/h.height,re=C(Math.min(de,te,1));A({x:(oe.width-h.width*re)/2-h.x*re,y:(oe.height-h.height*re)/2-h.y*re,scale:re}),N=!1}function z(){N=!1}function U(){A({x:0,y:0,scale:1})}function J(h){L=h&&h.width>0&&h.height>0?{...h}:null,L&&(s.value=b(s.value))}function le(){M={...s.value},k=!1}function ie(){const h=M;M=null,!(!h||k)&&ve(h)}function ve(h,$){g&&(clearTimeout(g),g=null);const V={...s.value},oe=300,de=performance.now();y&&cancelAnimationFrame(y);function te(re){const be=Math.min((re-de)/oe,1),ke=1-Math.pow(1-be,3);_(),s.value=b({x:V.x+(h.x-V.x)*ke,y:V.y+(h.y-V.y)*ke,scale:V.scale+(h.scale-V.scale)*ke}),be<1?y=requestAnimationFrame(te):(s.value=b($?$():h),y=null)}y=requestAnimationFrame(te)}function ee(){g&&(clearTimeout(g),g=null),u&&(clearTimeout(u),u=null),y&&(cancelAnimationFrame(y),y=null),f=null,v=!1,r.value=!1,i.value=!1}qr()&&Gr(ee);function Z(h,$){const V=e.value;if(!V)return;const oe=C($??s.value.scale),de=h.x+h.width/2,te=h.y+h.height/2;function re(){const be=V.getBoundingClientRect();return{x:be.width/2-de*oe,y:be.height/2-te*oe,scale:oe}}ve(re(),re)}return{state:s,isPanning:r,transformStyle:q,scalePercent:D,onWheel:Y,onPointerDown:H,onPointerMove:E,onPointerUp:j,shouldHandleClick:F,zoomIn:he,zoomOut:se,fitToView:fe,resetAutoFitLock:z,focusNode:Z,resetView:U,setContentBounds:J,saveViewport:le,restoreViewport:ie}}function Ol(e){return!e.hasAgent||e.hasError?!1:e.loadingComposition?!0:e.hasRevealedStableDiagram?!1:!e.layoutStable||e.loadingAsyncDetail}const Dl={class:"pointer-events-none absolute inset-0 h-full w-full","aria-hidden":"true"},Bl=_e({__name:"CanvasGrid",setup(e){return(t,n)=>(p(),w("svg",Dl,[...n[0]||(n[0]=[m("defs",null,[m("pattern",{id:"canvas-dot-grid",x:"0",y:"0",width:"24",height:"24",patternUnits:"userSpaceOnUse"},[m("circle",{cx:"12",cy:"12",r:"1",class:"fill-neutral-400/20 dark:fill-neutral-500/20"})])],-1),m("rect",{width:"100%",height:"100%",fill:"url(#canvas-dot-grid)"},null,-1)])]))}}),Oe=8,Be=20,Ee=20,tn=18,Ge=20,nn=8,rt=8,Vl=12,Re=10,Ul=10,an=16,on=24,Hl=38,Xa=44,zl=12;function Ka(e,t,n){const o=n==="left"||n==="right"?e.height:e.width;if(t<=1)return[n==="left"||n==="right"?e.y+e.height/2:e.x+e.width/2];const a=Math.min(Be,o/(t+1)),l=n==="left"||n==="right"?e.y:e.x,s=l+a,i=(l+o-a-s)/(t-1);return Array.from({length:t},(c,d)=>s+d*i)}function jl(e){const t=new Set,n=[];for(const o of e){const a=[o.kind??"structural",o.from,o.to,o.sideId,o.toolKind??""].join("|");t.has(a)||(t.add(a),n.push(o))}return n}function yn(e){return{id:e.id,x:e.x-tn,y:e.y-tn,width:e.width+tn*2,height:e.height+tn*2}}function Ht(e,t,n=t){return e.map(o=>({id:o.id,x:o.x-t,y:o.y-n,width:o.width+t*2,height:o.height+n*2}))}function mn(e,t,n){return t>=e.x&&t<=e.x+e.width&&n>=e.y&&n<=e.y+e.height}function Ya(e){return{x:e.x+e.width/2,y:e.y+e.height/2}}function un(e,t,n){const o=Ya(e),a=Ya(t);return n.map(yn).filter(l=>mn(l,o.x,o.y)&&!mn(l,a.x,a.y))}function Fl(e,t,n){const o=Math.min(e.x,t.x),a=Math.max(e.x+e.width,t.x+t.width),l=Math.min(e.y,t.y),s=Math.max(e.y+e.height,t.y+t.height);return n.map(yn).filter(r=>!mn(r,e.x+e.width/2,e.y+e.height/2)&&!mn(r,t.x+t.width/2,t.y+t.height/2)&&r.x<=a+Ee&&r.x+r.width>=o-Ee&&r.y<=s+Ee&&r.y+r.height>=l-Ee)}function Mt(e,t,n){const o=[{x:e.x+e.width/2,y:e.y+e.height/2},{x:t.x+t.width/2,y:t.y+t.height/2}];return n.filter(a=>!o.some(l=>l.x>=a.x&&l.x<=a.x+a.width&&l.y>=a.y&&l.y<=a.y+a.height)).map(yn)}function Ze(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n);for(const r of o){if(a.has(r.id))continue;const i=r.x-Ee,c=r.x+r.width+Ee,d=r.y-Ee,f=r.y+r.height+Ee;if(e>=d&&e<=f&&s>=i&&l<=c)return r}return null}function Ct(e,t,n,o,a,l=Ee,s=Ee){const r=Math.min(t,n),i=Math.max(t,n);for(const c of o){if(a.has(c.id))continue;const d=c.x-l,f=c.x+c.width+l,v=c.y-s,x=c.y+c.height+s;if(e>=d&&e<=f&&i>=v&&r<=x)return c}return null}function Gn(e,t,n,o,a,l,s){const r=Math.min(o,a),i=Math.max(o,a);let c=e;for(let d=0;d<6;d++){const f=Ze(c,t,n,l,s);if(!f)return c;const v=f.y-Ee-Ge,x=f.y+f.height+Ee+Ge,g=Math.abs(v-c)<=Math.abs(x-c)?v:x;c=Math.max(r-200,Math.min(i+200,g))}return c}function hn(e,t,n,o,a,l,s,r,i){let c=r<0?Math.min(e,i-1):Math.max(e,i+1);for(let d=0;d<6;d++){const f=Ze(c,t,n,l,s);if(!f)return c;c=r<0?f.y-Ee-Ge:f.y+f.height+Ee+Ge}return c}function So(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n);return _o(e,da(l,s,o,a))}function da(e,t,n,o,a=Ee+Ge,l=Ee){const s=[];for(const i of n){if(o.has(i.id))continue;const c=i.y-l;i.y+i.height+l<e||c>t||s.push([i.x-a,i.x+i.width+a])}if(s.length===0)return s;s.sort((i,c)=>i[0]-c[0]);const r=[s[0]];for(let i=1;i<s.length;i++){const c=r[r.length-1],d=s[i];d[0]<=c[1]?c[1]=Math.max(c[1],d[1]):r.push(d)}return r}function _o(e,t){if(t.length===0||!t.find(([s,r])=>e>=s&&e<=r))return e;const o=[t[0][0]-1,t[t.length-1][1]+1];for(let s=0;s<t.length-1;s++){const r=t[s][1]+1,i=t[s+1][0]-1;i>=r&&o.push((r+i)/2)}let a=o[0],l=Math.abs(a-e);for(const s of o){const r=Math.abs(s-e);r<l&&(a=s,l=r)}return a}function Ft(e,t,n,o,a,l,s,r=Ee+Ge,i=Ee){const c=da(Math.min(t,n),Math.max(t,n),o,a,r,i);if(c.length===0)return e;let d=l<0?Math.min(e,s-1):Math.max(e,s+1);for(let f=0;f<c.length;f++){const v=c.find(([x,g])=>d>=x&&d<=g);if(!v)return d;d=l<0?v[0]-1:v[1]+1}return d}function qa(e,t){return e<=1?[0]:Array.from({length:e},(n,o)=>o*t)}function Io(e){if(e.length<=1)return[e];const t=[];return e.forEach((n,o)=>{const a=[...e.slice(0,o),...e.slice(o+1)];for(const l of Io(a))t.push([n,...l])}),t}function ua(e,t){if(e.orientation===t.orientation)return!1;const n=e.orientation==="horizontal"?e:t,o=e.orientation==="vertical"?e:t,a=Math.min(n.x1,n.x2),l=Math.max(n.x1,n.x2),s=Math.min(o.y1,o.y2),r=Math.max(o.y1,o.y2);return o.x1>a&&o.x1<l&&n.y1>s&&n.y1<r}function Xl(e,t,n,o,a,l){const s=[];return Math.abs(n-e)>=1&&s.push({orientation:"horizontal",x1:e,y1:t,x2:n,y2:t}),s.push({orientation:"vertical",x1:n,y1:t,x2:n,y2:o}),s.push({orientation:"horizontal",x1:n,y1:o,x2:a,y2:o}),s.push({orientation:"vertical",x1:a,y1:o,x2:a,y2:l}),s}function Kl(e,t,n,o,a){if(Math.abs(e-n)<1)return`M ${e} ${t} L ${n} ${o}`;const l=Math.min(Oe,Math.abs(a-t)/2,Math.abs(o-a)/2,Math.abs(n-e)/2),s=n>e?1:-1,r=a>t?1:-1,i=o>a?1:-1;return[`M ${e} ${t}`,`L ${e} ${a-l*r}`,`Q ${e} ${a} ${e+l*s} ${a}`,`L ${n-l*s} ${a}`,`Q ${n} ${a} ${n} ${a+l*i}`,`L ${n} ${o}`].join(" ")}function Yl(e,t,n,o,a){return Math.abs(e-n)<1?[{orientation:"vertical",x1:e,y1:t,x2:n,y2:o}]:[{orientation:"vertical",x1:e,y1:t,x2:e,y2:a},{orientation:"horizontal",x1:e,y1:a,x2:n,y2:a},{orientation:"vertical",x1:n,y1:a,x2:n,y2:o}]}function bn(e,t,n){return{d:`M ${e} ${t} L ${n} ${t}`,segments:[{orientation:"horizontal",x1:e,y1:t,x2:n,y2:t}]}}function ca(e,t,n){return{d:`M ${e} ${t} L ${e} ${n}`,segments:[{orientation:"vertical",x1:e,y1:t,x2:e,y2:n}]}}function Ga(e,t,n,o){if(Math.abs(t-o)<1)return bn(e,t,n);if(Math.abs(e-n)<1)return ca(e,t,o);const a=n>e?1:-1,l=o>t?1:-1,s=Math.min(Oe,Math.abs(n-e)/2,Math.abs(o-t)/2);return{d:[`M ${e} ${t}`,`L ${n-s*a} ${t}`,`Q ${n} ${t} ${n} ${t+s*l}`,`L ${n} ${o}`].join(" "),segments:[{orientation:"horizontal",x1:e,y1:t,x2:n,y2:t},{orientation:"vertical",x1:n,y1:t,x2:n,y2:o}]}}function ql(e,t,n,o,a){if(Math.abs(t-a)<1)return bn(e,t,o);const l=n>e?1:-1,s=o>n?1:-1,r=a>t?1:-1,i=Math.min(Oe,Math.abs(n-e)/2||Oe,Math.abs(a-t)/2||Oe,Math.abs(o-n)/2||Oe);return Math.abs(n-e)<2?Wn(e,t,o,a):{d:[`M ${e} ${t}`,`L ${n-i*l} ${t}`,`Q ${n} ${t} ${n} ${t+i*r}`,`L ${n} ${a-i*r}`,`Q ${n} ${a} ${n+i*s} ${a}`,`L ${o} ${a}`].join(" "),segments:[{orientation:"horizontal",x1:e,y1:t,x2:n,y2:t},{orientation:"vertical",x1:n,y1:t,x2:n,y2:a},{orientation:"horizontal",x1:n,y1:a,x2:o,y2:a}]}}function Wn(e,t,n,o){if(Math.abs(e-n)<1)return ca(e,t,o);if(Math.abs(t-o)<1)return bn(e,t,n);const a=n>e?1:-1,l=o>t?1:-1,s=Math.min(Oe,Math.abs(n-e)/2,Math.abs(o-t)/2);return{d:[`M ${e} ${t}`,`L ${e} ${o-s*l}`,`Q ${e} ${o} ${e+s*a} ${o}`,`L ${n} ${o}`].join(" "),segments:[{orientation:"vertical",x1:e,y1:t,x2:e,y2:o},{orientation:"horizontal",x1:e,y1:o,x2:n,y2:o}]}}function Gl(e,t,n,o,a,l,s){if(Math.abs(t-o)<1&&!Ze(t,e,n,a,l))return bn(e,t,n);if(Math.abs(e-n)<1&&!Ct(e,t,o,a,l))return ca(e,t,o);const r=!Ze(t,e,n,a,l)&&!Ct(n,t,o,a,l),i=!Ct(e,t,o,a,l)&&!Ze(o,e,n,a,l);return r&&i?s==="horizontal"?Ga(e,t,n,o):Wn(e,t,n,o):r?Ga(e,t,n,o):i?Wn(e,t,n,o):null}function Wl(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function Eo(e,t){if(e.orientation==="horizontal"){const a=Math.min(e.x1,e.x2),l=Math.max(e.x1,e.x2);return l-a<2?null:{id:t,x:a,y:e.y1-nn,width:l-a,height:nn*2}}const n=Math.min(e.y1,e.y2),o=Math.max(e.y1,e.y2);return o-n<2?null:{id:t,x:e.x1-nn,y:n,width:nn*2,height:o-n}}function Wa(e,t,n){return e.some((o,a)=>{const l=Eo(o,`segment-${a}`);return l?t.some(s=>n.has(s.id)?!1:Wl(l,s)):!1})}function Ql(e){const t=[];for(const n of e)n.segments.forEach((o,a)=>{const l=Eo(o,`edge:${n.id}:${a}`);l&&t.push(l)});return t}function Fn(e,t,n,o,a){const l=[...un(e,t,n),...Fl(e,t,n)],s=Array.from(new Map(l.map(r=>[r.id,r])).values());return s.length===0?o:a?Math.max(o,...s.map(r=>r.y+r.height+Ee+Ge)):Math.min(o,...s.map(r=>r.y-Ee-Ge))}function pt(e,t){const n=t?.[e.id],o=e.type==="model"?Hl:e.type==="side"||e.type==="prompt"||e.type==="tool"&&e.data.kind==="prompt"?Xa:e.height/2,a=n?.modelAnchorY??o;return e.y+Math.max(Be,Math.min(e.height-Be,a))}function pn(e,t,n,o,a,l){let s=l;const r=n<0?e.x:e.x+e.width;for(const i of o){if(a.has(i.id))continue;const c=i.y-Ee,d=i.y+i.height+Ee;if(!(t<c||t>d))if(n<0){const f=i.x+i.width+Ee;if(f>=r)continue;s=Math.min(s,r-f-1)}else{const f=i.x-Ee;if(f<=r)continue;s=Math.min(s,f-r-1)}}return Math.max(0,s)}function Jl(e,t,n,o,a,l){const s=t.y,r=t.x,i=[];for(const d of[-1,1]){const f=pn(e,s,d,a,l,Vl),v=r+d*Math.max(0,f);Ct(v,s,n,a,l,rt,rt)||i.push(v)}for(const d of[-1,1]){const f=pn(e,s,d,a,l,14);i.push(Ft(r+d*f,s,n,a,l,d,r,rt,rt))}return Array.from(new Set(i.map(d=>Math.round(d*1e3)/1e3))).reduce((d,f)=>{const v=Ze(n,d,o,a,l),x=Ze(n,f,o,a,l);return!!x!=!!v?x?d:f:Math.abs(f-r)<Math.abs(d-r)?f:d})}function Zl(e,t,n,o,a,l,s,r){const i=t.x,c=t.y,d=o.x,f=o.y,v=Gl(i,c,d,f,s,r,"horizontal");if(v&&v.segments.length===1&&!Wa(v.segments,s,r))return v;const x=t.side==="left"?-1:1,u=pn(e,c,x,s,r,14),y=i+x*u,S=G=>!Ze(c,i,G,s,r),_=Ft(y,c,f,s,r,x,i);if((d-i)*x>=0&&Math.abs(_-i)>1&&Math.abs(_-d)>1&&S(_)&&!Ct(_,c,f,s,r)&&!Ze(f,_,d,s,r)){const G=ql(i,c,_,d,f);if(!Wa(G.segments,s,r))return G}let k=Gn(a,y,d,c,f,s,r),N=Ft(y,c,k,s,r,x,i);S(N)||(N=S(y)?y:i),k=Gn(a,N,d,c,f,s,r);const L=Math.abs(N-i),P=o.side==="left"?n.x-(Be+24):n.x+n.width+Be+24,ne=l??So(P,k,f,s,r),q=N>i?1:-1,D=k>c?1:-1,C=ne>N?1:-1,T=f>k?1:-1,b=d>ne?1:-1,A=Math.min(Oe,Math.abs(L)/2||Oe,Math.abs(k-c)/2||Oe,Math.abs(ne-N)/2||Oe,Math.abs(f-k)/2||Oe,Math.abs(d-ne)/2||Oe);return L<2?{d:[`M ${i} ${c}`,`L ${i} ${k-A*D}`,`Q ${i} ${k} ${i+A*C} ${k}`,`L ${ne-A*C} ${k}`,`Q ${ne} ${k} ${ne} ${k+A*T}`,`L ${ne} ${f-A*T}`,`Q ${ne} ${f} ${ne+A*b} ${f}`,`L ${d} ${f}`].join(" "),segments:[{orientation:"vertical",x1:i,y1:c,x2:i,y2:k},{orientation:"horizontal",x1:i,y1:k,x2:ne,y2:k},{orientation:"vertical",x1:ne,y1:k,x2:ne,y2:f},{orientation:"horizontal",x1:ne,y1:f,x2:d,y2:f}]}:{d:[`M ${i} ${c}`,`L ${N-A*q} ${c}`,`Q ${N} ${c} ${N} ${c+A*D}`,`L ${N} ${k-A*D}`,`Q ${N} ${k} ${N+A*C} ${k}`,`L ${ne-A*C} ${k}`,`Q ${ne} ${k} ${ne} ${k+A*T}`,`L ${ne} ${f-A*T}`,`Q ${ne} ${f} ${ne+A*b} ${f}`,`L ${d} ${f}`].join(" "),segments:[{orientation:"horizontal",x1:i,y1:c,x2:N,y2:c},{orientation:"vertical",x1:N,y1:c,x2:N,y2:k},{orientation:"horizontal",x1:N,y1:k,x2:ne,y2:k},{orientation:"vertical",x1:ne,y1:k,x2:ne,y2:f},{orientation:"horizontal",x1:ne,y1:f,x2:d,y2:f}]}}function ei(e,t,n,o,a,l,s,r){const i=t.x,c=t.y,d=n.x,f=n.y,v=t.side==="left"?-1:1,x=pn(e,c,v,s,r,14),g=i+v*x,u=a??Ft(g,c,o,l,r,v,i,rt,rt),y=a!==null?o:hn(o,u,d,c,f,s,r,f>=c?1:-1,c),S=Math.abs(u-i),_=u>i?1:-1,M=y>c?1:-1,k=d>u?1:-1,N=f>y?1:-1,L=Math.min(Oe,Math.abs(S)/2||Oe,Math.abs(y-c)/2||Oe,Math.abs(d-u)/2||Oe,Math.abs(f-y)/2||Oe);return S<2?{d:[`M ${i} ${c}`,`L ${i} ${y-L*M}`,`Q ${i} ${y} ${i+L*k} ${y}`,`L ${d-L*k} ${y}`,`Q ${d} ${y} ${d} ${y+L*N}`,`L ${d} ${f}`].join(" "),segments:segmentsViaMidY(i,c,d,f,y)}:{d:[`M ${i} ${c}`,`L ${u-L*_} ${c}`,`Q ${u} ${c} ${u} ${c+L*M}`,`L ${u} ${y-L*M}`,`Q ${u} ${y} ${u+L*k} ${y}`,`L ${d-L*k} ${y}`,`Q ${d} ${y} ${d} ${y+L*N}`,`L ${d} ${f}`].join(" "),segments:[{orientation:"horizontal",x1:i,y1:c,x2:u,y2:c},{orientation:"vertical",x1:u,y1:c,x2:u,y2:y},{orientation:"horizontal",x1:u,y1:y,x2:d,y2:y},{orientation:"vertical",x1:d,y1:y,x2:d,y2:f}]}}function ti(e){switch(e){case"outboard-left":case"sidebar-left":return"right";case"outboard-right":case"sidebar-right":return"left";case"below-row":return"top";default:return"left"}}function mt(e,t,n){if((n&&n.type==="model"?n.placementMode:void 0)==="below-row"){const r=e.x+e.width/2,c=(n?n.x+n.width/2:r)>=r?"right":"left";return{side:c,x:c==="right"?e.x+e.width:e.x,y:pt(e,t)}}if(n?.type==="model"&&ni(e))return{side:"left",x:e.x,y:pt(e,t)};const a=e.x+e.width/2,s=(n?n.x+n.width/2:a)>=a?"right":"left";return{side:s,x:s==="right"?e.x+e.width:e.x,y:pt(e,t)}}function ni(e){return e.type==="prompt"||e.type==="side"&&e.data.mode==="ai"||e.type==="tool"&&e.data.kind==="prompt"}const We=8,vn=6,ai=12,Qa=6;function Ye(e){return e.x+e.width/2}function oi(e){const t=[];for(const a of e){const l=t[t.length-1];l&&Math.abs(l.x-a.x)<1&&Math.abs(l.y-a.y)<1||t.push(a)}if(t.length===0)return"";if(t.length===1)return`M ${t[0].x} ${t[0].y}`;const n=[`M ${t[0].x} ${t[0].y}`];for(let a=1;a<t.length-1;a++){const l=t[a-1],s=t[a],r=t[a+1],i=Math.abs(s.x-l.x)+Math.abs(s.y-l.y),c=Math.abs(r.x-s.x)+Math.abs(r.y-s.y),d=Math.min(Oe,i/2,c/2);if(d<1){n.push(`L ${s.x} ${s.y}`);continue}const f=Math.sign(s.x-l.x),v=Math.sign(s.y-l.y),x=Math.sign(r.x-s.x),g=Math.sign(r.y-s.y),u={x:s.x-f*d,y:s.y-v*d},y={x:s.x+x*d,y:s.y+g*d};n.push(`L ${u.x} ${u.y}`),n.push(`Q ${s.x} ${s.y} ${y.x} ${y.y}`)}const o=t[t.length-1];return n.push(`L ${o.x} ${o.y}`),n.join(" ")}function ri(e){if(e.length===0)return"";const t=[{x:e[0].x1,y:e[0].y1},...e.map(n=>({x:n.x2,y:n.y2}))];return oi(t)}function Ja(e){return e.length===0?"":[{x:e[0].x1,y:e[0].y1},...e.map(n=>({x:n.x2,y:n.y2}))].map((n,o)=>`${o===0?"M":"L"} ${n.x} ${n.y}`).join(" ")}function si(e){return e==="tool"||e==="provider"||e==="mcp"}function li(e){return Math.round(e/ai)}function Qn(e){const t=[];for(let n=1;n<e.length;n++){const o=e[n-1],a=e[n];if(!(Math.abs(o.x-a.x)<1&&Math.abs(o.y-a.y)<1)){if(Math.abs(o.y-a.y)<1){t.push({orientation:"horizontal",x1:o.x,y1:o.y,x2:a.x,y2:o.y});continue}if(Math.abs(o.x-a.x)>=1&&Math.abs(o.y-a.y)>=1){t.push({orientation:"vertical",x1:o.x,y1:o.y,x2:o.x,y2:a.y}),t.push({orientation:"horizontal",x1:o.x,y1:a.y,x2:a.x,y2:a.y});continue}t.push({orientation:"vertical",x1:o.x,y1:o.y,x2:o.x,y2:a.y})}}return t}function Za(e,t,n,o,a,l,s){const r=a.rowLaneY,i=Qn([{x:e,y:t},{x:e,y:r},{x:n,y:r},{x:n,y:o}]),c=ii(e,t,r,l,s),d=di(r,e,n,l,s)??ui(r,e,n,l,s),f=c??d;if(!f)return{d:Ja(i),segments:i};const v=n<e?-1:1,x=vn+Math.abs(a.aisleOffset),g=v<0?f.x-x:f.x+f.width+x,u=f.y+f.height+vn,y=a.rowIndex>0?u:Math.min(a.sourceLaneY,Math.max(r+We/2,u)),S=r>=t?Math.max(t+We,a.escapeLaneY):Math.min(t-We,y),_=Qn([{x:e,y:t},{x:e,y:S},{x:g,y:S},{x:g,y:r},{x:n,y:r},{x:n,y:o}]);return{d:Ja(_),segments:_}}function Ao(e,t){if(e.orientation!==t.orientation)return 0;if(e.orientation==="horizontal"){if(Math.abs(e.y1-t.y1)>1)return 0;const s=Math.min(e.x1,e.x2),r=Math.max(e.x1,e.x2),i=Math.min(t.x1,t.x2),c=Math.max(t.x1,t.x2);return Math.max(0,Math.min(r,c)-Math.max(s,i))}if(Math.abs(e.x1-t.x1)>1)return 0;const n=Math.min(e.y1,e.y2),o=Math.max(e.y1,e.y2),a=Math.min(t.y1,t.y2),l=Math.max(t.y1,t.y2);return Math.max(0,Math.min(o,l)-Math.max(n,a))}function ii(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n),r=n>=t?1:-1;let i=null,c=Number.POSITIVE_INFINITY;for(const d of o)if(!a.has(d.id)&&e>d.x+1&&e<d.x+d.width-1&&Math.max(l,d.y+1)<Math.min(s,d.y+d.height-1)){const f=r>0?d.y:d.y+d.height,v=Math.abs(f-t);v<c&&(i=d,c=v)}return i}function di(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n),r=n>=t?1:-1;let i=null,c=Number.POSITIVE_INFINITY;for(const d of o)if(!a.has(d.id)&&e>d.y+1&&e<d.y+d.height-1&&Math.max(l,d.x+1)<Math.min(s,d.x+d.width-1)){const f=r>0?d.x:d.x+d.width,v=Math.abs(f-t);v<c&&(i=d,c=v)}return i}function ui(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n),r=n>=t?1:-1;let i=null,c=Number.POSITIVE_INFINITY;for(const d of o)if(!(a.has(d.id)||!d.id.includes("__model-"))&&e>d.y-We*4&&e<d.y+d.height+1&&Math.max(l,d.x+1)<Math.min(s,d.x+d.width-1)){const f=r>0?d.x:d.x+d.width,v=Math.abs(f-t);v<c&&(i=d,c=v)}return i}function ci(e){let t=0;for(let n=0;n<e.length;n++)for(let o=n+1;o<e.length;o++)for(const a of e[n].segments)for(const l of e[o].segments)ua(a,l)&&(t+=1e4),t+=Ao(a,l)*25;return t}function eo(e,t){let n=0;for(const o of t)for(const a of e)for(const l of o.segments)ua(a,l)&&(n+=1e5),n+=Ao(a,l)*1e3;return n}function fi(e,t,n){return e.some(o=>o.orientation==="horizontal"?!!Ze(o.y1,o.x1,o.x2,t,n):!!Ct(o.x1,o.y1,o.y2,t,n))}function mi(e,t,n,o,a,l,s,r){const i=Yl(e,t,n,o,a);if(!fi(i,s,r))return{d:Kl(e,t,n,o,a),segments:i};const c=_o(n+l,da(a,o,s,r,10,10)),d=hn(o-Math.min(Math.max((o-a)/4,Be),48),c,n,a,o,s,r,-1,o),f=Qn([{x:e,y:t},{x:e,y:a},{x:c,y:a},{x:c,y:d},{x:n,y:d},{x:n,y:o}]);return{d:ri(f),segments:f}}function to(e,t,n,o){return[...n,...Mt(e,t,o)]}function hi(e,t,n,o){const a=new Map;for(const x of e)a.set(x.id,x);const l=new Map,s=new Map;for(const x of t){if(!a.has(x.from)||!a.has(x.to))continue;const g=l.get(x.from);g?g.push(x):l.set(x.from,[x]);const u=s.get(x.to);u?u.push(x):s.set(x.to,[x])}for(const[,x]of l)x.sort((g,u)=>{const y=a.get(g.to),S=a.get(u.to);return y.x+y.width/2-(S.x+S.width/2)});for(const[,x]of s)x.sort((g,u)=>{const y=a.get(g.from),S=a.get(u.from);return y.x+y.width/2-(S.x+S.width/2)});const r=new Map,i=new Map;for(const[x,g]of l){const u=a.get(x);if(u.type==="agent"){g.forEach(y=>{const S=y.sideId==="a"?u.x+u.width*.25:u.x+u.width*.75;r.set(y.id,S)});continue}if(u.type==="side"&&g.some(y=>y.toolKind)){const S=u.data.tools||[],_=[];S.some(P=>P.kind==="tool"||P.kind==="provider"||P.kind==="mcp")&&_.push("function"),S.some(P=>P.kind==="prompt")&&_.push("prompt"),S.some(P=>P.kind==="subagent")&&_.push("subagent"),S.some(P=>P.kind==="handoff")&&_.push("handoff");const M=_.length>0?.45:1,k=_.length>0?(1-M)/_.length:0,N=new Map;for(const P of g){if(!P.toolKind||_.length===0)continue;const ne=P.toolKind==="tool"||P.toolKind==="provider"||P.toolKind==="mcp"?"function":P.toolKind,q=N.get(ne);q?q.push(P):N.set(ne,[P])}for(const[P,ne]of N)ne.sort((q,D)=>{const C=a.get(q.to),T=a.get(D.to);if(P==="function"){const b=C.y-T.y;if(Math.abs(b)>1)return b}return Ye(C)-Ye(T)});const L=o?.[u.id]?.toolColumns;for(const[P,ne]of N){let q,D;const C=L?.[P];if(C)q=u.x+C.left,D=u.x+C.left+C.width;else{const G=_.indexOf(P);if(G<0)continue;q=u.x+u.width*(M+G*k),D=u.x+u.width*(M+(G+1)*k)}const T=q+Be,b=D-Be,A=ne.length;ne.forEach((G,Y)=>{const H=A===1?(q+D)/2:T+(b-T)*Y/(A-1);r.set(G.id,H)})}g.forEach(P=>{if(r.has(P.id))return;if(P.toolKind&&_.length>0){const D=P.toolKind==="tool"||P.toolKind==="provider"||P.toolKind==="mcp"?"function":P.toolKind,C=_.indexOf(D);if(C>=0){const T=M+C*k+k/2;r.set(P.id,u.x+u.width*T);return}}const ne=a.get(P.to),q=ne.x+ne.width/2;r.set(P.id,Math.max(u.x+Be,Math.min(u.x+u.width-Be,q)))});continue}g.forEach(y=>{const S=a.get(y.to),_=S.x+S.width/2;r.set(y.id,Math.max(u.x+Be,Math.min(u.x+u.width-Be,_)))})}for(const[x,g]of s){const u=a.get(x),y=u.x+u.width/2;g.forEach(S=>i.set(S.id,y))}for(const[x,g]of l){const u=a.get(x);if(!u||g.length<=1)continue;const y=new Map;for(const S of g){const _=r.get(S.id);if(_===void 0)continue;const M=Math.round(_),k=y.get(M);k?k.push(S):y.set(M,[S])}for(const[S,_]of y){if(_.length<=1)continue;_.sort((k,N)=>{const L=a.get(k.to),P=a.get(N.to);return Ye(L)-Ye(P)});const M=r.get(_[0].id)??S;_.forEach((k,N)=>{const L=(N-(_.length-1)/2)*We;r.set(k.id,Math.max(u.x+Be,Math.min(u.x+u.width-Be,M+L)))})}}const c=Array.from(a.values()),d=new Map;for(const x of t){const g=a.get(x.from),u=a.get(x.to);if(!g||!u)continue;const y=d.get(x.from);y?y.push(x):d.set(x.from,[x])}for(const[,x]of d)x.sort((g,u)=>{const y=a.get(g.to),S=a.get(u.to),_=y.y-S.y;return Math.abs(_)>1?_:y.x+y.width/2-(S.x+S.width/2)});const f=new Map,v=new Map;for(const[x,g]of d){const u=a.get(x);if(!u||u.type!=="side")continue;const y=g.filter(Y=>si(Y.toolKind)).filter(Y=>!!a.get(Y.to)).sort((Y,H)=>{const E=a.get(Y.to),j=a.get(H.to),F=E.y-j.y;return Math.abs(F)>1?F:E.x+E.width/2-(j.x+j.width/2)});if(y.length<=1)continue;const S=y.reduce((Y,H)=>Y+(r.get(H.id)??Ye(u)),0)/y.length,M=y.reduce((Y,H)=>Y+Ye(a.get(H.to)),0)/y.length<S,k=[],N=new Map;for(const Y of y){const H=a.get(Y.to),E=li(H.y),j=N.get(E);if(j)j.push(Y);else{const F=[Y];N.set(E,F),k.push(F)}}k.sort((Y,H)=>a.get(Y[0].to).y-a.get(H[0].to).y);const L=Math.min(...y.map(Y=>a.get(Y.to).y)),P=u.y+u.height+8,ne=Math.max(P,L-8),q=y.length<=1?0:(ne-P)/(y.length-1);v.set(u.id,ne),k.forEach(Y=>{Y.sort((H,E)=>{const j=a.get(H.to),F=a.get(E.to);return Ye(j)-Ye(F)})});const D=[...y].sort((Y,H)=>(r.get(Y.id)??Ye(u))-(r.get(H.id)??Ye(u))),C=M,T=!M,b=[];for(const Y of[C,!C])for(const H of[T,!T])for(const E of[!1,!0])b.push({sourceReversed:Y,rowReversed:H,aisleReversed:E,preference:(Y===C?0:2)+(H===T?0:1)});let A=new Map,G=Number.POSITIVE_INFINITY;for(const Y of b){const H=new Map,E=new Map;D.forEach((se,fe)=>{H.set(se.id,fe),E.set(se.id,Y.sourceReversed?y.length-1-fe:fe)});const j=new Map,F=k[0]?.length??0;k.forEach((se,fe)=>{const z=Math.min(...se.map(ve=>a.get(ve.to).y)),U=Math.max(P,z-34),J=Math.max(U,z-10),le=se.length<=1?0:(J-U)/(se.length-1),ie=M?1:-1;se.forEach((ve,ee)=>{const Z=E.get(ve.id)??ee,h=Y.rowReversed?se.length-1-ee:ee,$=Y.aisleReversed?y.length-1-(H.get(ve.id)??ee):H.get(ve.id)??ee,V=fe===0&&se.length>1?P+ee*q:P+Z*q,oe=H.get(ve.id)??ee,de=fe===0?Math.max(V,U+h*le-We/2):ne-We+Math.max(0,oe-F)*2,te=M?u.x+u.width+vn:u.x-vn,re=(M?1:-1)*$*We,be=U+h*le,ke=Math.min(z-4,Math.max(be,V+We/2));j.set(ve.id,{rowIndex:fe,sourceLaneY:V,escapeLaneY:de,rowLaneY:ke,aisleX:te,aisleOffset:re,aisleDirection:ie})})});const X=y.map(se=>{const fe=a.get(se.to),z=r.get(se.id)??Ye(u),U=u.y+u.height,J=i.get(se.id)??Ye(fe),le=fe.y,ie=new Set([u.id,fe.id]),ve=to(u,fe,c,n);return Za(z,U,J,le,j.get(se.id),ve,ie)}),he=ci(X)+Y.preference;he<G&&(G=he,A=j)}for(const[Y,H]of A)f.set(Y,H)}return t.map(x=>{const g=a.get(x.from),u=a.get(x.to);if(!g||!u)return null;const y=r.get(x.id)??g.x+g.width/2,S=g.y+g.height,_=i.get(x.id)??u.x+u.width/2,M=u.y,k=d.get(x.from)??[x],L=Math.max(0,k.findIndex(G=>G.id===x.id))-(k.length-1)/2,P=S+Math.min((M-S)/2,24)+L*We,q=v.get(x.from)&&g.type==="side"&&!f.has(x.id)?S:P,D=[...c,...Mt(g,u,n)],C=new Set([g.id,u.id]),T=f.get(x.id),b=T?to(g,u,c,n):D,A=T?Za(y,S,_,M,T,b,C):mi(y,S,_,M,Gn(q,y,_,S,M,D,C),L*We,D,C);return{id:x.id,d:A.d,sideId:x.sideId,kind:x.kind??"structural",toolKind:x.toolKind,sourceAnchor:{side:"bottom",x:y,y:S},targetAnchor:{side:"top",x:_,y:M},segments:A.segments}}).filter(x=>!!x)}function pi(e,t,n,o,a,l,s,r){if(e.length<=1)return t;const i=Io(t);let c=t,d=Number.POSITIVE_INFINITY;for(const f of i){const v=e.map((g,u)=>{const y=a.get(g.from),S=mt(y,l,n);return Xl(S.x,S.y,s.get(g.id)??S.x,r.get(g.id)??S.y,f[u],o)});let x=0;for(let g=0;g<v.length;g++)for(let u=g+1;u<v.length;u++)for(const y of v[g])for(const S of v[u])ua(y,S)&&(x+=1e3);x+=f.reduce((g,u,y)=>{const S=e[y];return g+Math.abs(u-(s.get(S.id)??u))},0),x<d&&(d=x,c=f)}return c}function vi(e,t,n){return{side:t,x:t==="right"?e.x+e.width:e.x,y:pt(e,n)}}function rn(e,t){let n=0;for(const o of e)for(const a of t){if(o.orientation==="horizontal"){const r=Math.min(o.x1,o.x2),i=Math.max(o.x1,o.x2);if(o.y1>=a.y&&o.y1<=a.y+a.height&&Math.max(r,a.x)<Math.min(i,a.x+a.width)){n++;break}continue}const l=Math.min(o.y1,o.y2),s=Math.max(o.y1,o.y2);if(o.x1>=a.x&&o.x1<=a.x+a.width&&Math.max(l,a.y)<Math.min(s,a.y+a.height)){n++;break}}return n}function no(e){return e.reduce((t,n)=>t+Math.abs(n.x2-n.x1)+Math.abs(n.y2-n.y1),0)}function gi(e,t,n,o,a=[],l=[]){const s=new Map;for(const g of e)s.set(g.id,g);const r=Array.from(s.values()),i=new Map;for(const g of t){const u=s.get(g.to);if(!u||u.type!=="model")continue;const y=u.placementMode,S=`${u.id}|${y??"side"}`,_=i.get(S);_?_.push(g):i.set(S,[g])}const c=new Map,d=new Map,f=new Map,v=new Map;for(const[,g]of i){const u=s.get(g[0].to),y=u.placementMode,S=ti(y),_=[...g];if(S==="top"){_.sort((F,X)=>{const he=s.get(F.from),se=s.get(X.from);return he.x+he.width/2-(se.x+se.width/2)});const k=u.x+u.width/2,N=_.filter(F=>{const X=s.get(F.from);return X.x+X.width/2<k}),L=_.filter(F=>{const X=s.get(F.from);return X.x+X.width/2>=k}),P=[...N].reverse(),ne=[...L],q=[...P,...ne],D=Ka(u,q.length,"top"),C=q.every(F=>u.y>=mt(s.get(F.from),o,u).y),T=C?Math.max(...q.map(F=>{const X=s.get(F.from),he=mt(X,o,u),se=X.y+X.height+Ee+Ge,fe=Fn(X,u,n,se,!0);return hn(fe,he.x,u.x+u.width/2,he.y,u.y,Ht([...r,...Mt(X,u,n),...un(X,u,n)],an,on),new Set([X.id,u.id]),1,he.y)})):Math.min(...q.map(F=>{const X=s.get(F.from),he=mt(X,o,u),se=X.y-Ee-Ge,fe=Fn(X,u,n,se,!1);return hn(fe,he.x,u.x+u.width/2,he.y,u.y,Ht([...r,...Mt(X,u,n),...un(X,u,n)],an,on),new Set([X.id,u.id]),-1,he.y)})),b=qa(q.length,Re),A=b[b.length-1]??0,G=u.y-Ul,Y=C?G-A:T,H=[{isLeftApproach:!0,edges:N,startIndex:0,assignOrder:(F,X)=>{const he=s.get(F.from);return s.get(X.from).x-he.x}},{isLeftApproach:!1,edges:L,startIndex:P.length,assignOrder:(F,X)=>{const he=s.get(F.from),se=s.get(X.from);return he.x-se.x}}];for(const F of H){const X=F.edges;if(X.length===0)continue;const he=[...X].sort(F.assignOrder),se=[];for(const fe of he){const z=s.get(fe.from),U=mt(z,o,u),J=f.get(fe.id)??Y,le=new Set([z.id,u.id]),ie=Ht([...r,...Mt(z,u,n)],an,on);let ve=Jl(z,U,J,u.x+u.width/2,ie,le);const ee=Math.min(U.y,J),Z=Math.max(U.y,J);for(let h=0;h<6;h++){const $=se.find(oe=>Math.max(ee,oe.minY)<Math.min(Z,oe.maxY)&&Math.abs(ve-oe.exitX)<Re);if(!$)break;const V=$.exitX<=U.x?-1:1;ve=Ft($.exitX+V*Re,U.y,J,ie,le,V,U.x,rt,rt)}v.set(fe.id,ve),se.push({exitX:ve,minY:ee,maxY:Z})}}[...q].sort((F,X)=>{const he=s.get(F.from),se=s.get(X.from),fe=he.x+he.width/2,z=se.x+se.width/2,U=fe<k,J=z<k,le=v.get(F.id)??fe,ie=v.get(X.id)??z;return U!==J?Math.abs(le-k)-Math.abs(ie-k):U?C?ie-le:le-ie:C?le-ie:ie-le}).forEach((F,X)=>f.set(F.id,C?Y+b[X]:Y-b[X]));const j=pi(q,D,u,u.y,s,o,v,f);q.forEach((F,X)=>c.set(F.id,{side:"top",x:j[X],y:u.y}));continue}_.sort((k,N)=>{const L=s.get(k.from),P=s.get(N.from),ne=pt(L,o)-pt(P,o);return ne!==0?ne:L.x+L.width/2-(P.x+P.width/2)});const M=Ka(u,_.length,S);if(_.forEach((k,N)=>{const L=pt(u,o),P=_.length===1?mt(s.get(k.from),o,u).y:null;c.set(k.id,{side:S,x:S==="left"?u.x:u.x+u.width,y:_.length===1&&P!==null&&Math.abs(P-L)<=zl?P:_.length===1?L:M[N]})}),_.length>1){const k=new Set([u.id,..._.map(C=>C.from)]),N=[...r,...n.filter(C=>![{x:u.x+u.width/2,y:u.y+u.height/2},..._.map(b=>{const A=s.get(b.from);return{x:A.x+A.width/2,y:A.y+A.height/2}})].some(b=>b.x>=C.x&&b.x<=C.x+C.width&&b.y>=C.y&&b.y<=C.y+C.height)).map(yn),...a],L=_.map(C=>c.get(C.id).y),P=S==="left"?u.x-(Be+24):u.x+u.width+Be+24,ne=So(P,Math.min(...L),Math.max(...L),N,k),q=qa(_.length,Re),D=S==="left"?-1:1;_.forEach((C,T)=>d.set(C.id,ne+D*q[T]))}}const x=[];return t.map(g=>{if(g.from===g.to)return null;const u=s.get(g.from),y=s.get(g.to);if(!u||!y||y.type!=="model")return null;const S=mt(u,o,y),_=c.get(g.id);if(!_)return null;const k=[...Ht([...r,...Mt(u,y,n),...un(u,y,n)],an,on),...a],N=new Set([u.id,y.id]),L=Ht(r.filter(H=>!N.has(H.id)),Qa,Qa),P=_.y>=S.y,ne=P?u.y+u.height+Ee+Ge:u.y-Ee-Ge,q=Fn(u,y,n,ne,P),D=f.get(g.id)??q;let C=S,T=null;const b=S.side,G=[S,vi(u,b==="left"?"right":"left",o)],Y=[D,D-Re,D-Re*2,D-Re*4,D-Re*8,D-Re*16,D-Re*24,D+Re,D+Re*2,D+Re*4,D+Re*8,D+Re*16,D+Re*24];if(_.side==="top"){let H=Number.POSITIVE_INFINITY;const E=v.get(g.id)??null,j=E===null?[null]:[E,null];for(const F of G)for(const X of j)for(const he of Y){const se=ei(u,F,_,he,X,k,k,N),fe=eo(se.segments,[...l,...x])+rn(se.segments,L)*5e4+rn(se.segments,a)*1e4+no(se.segments)*.01+Math.abs(he-D)*.2+(F.side===b?0:25)+(X===E?0:10);fe<H&&(H=fe,C=F,T=se)}}if(!T){let H=Number.POSITIVE_INFINITY;const E=d.get(g.id)??null,j=E===null?[null]:[E,null],F=P?1:-1,X=[D,D+F*Re,D+F*Re*2,D+F*Re*4,D+F*Re*8,D-F*Re];for(const he of G)for(const se of j)for(const fe of X){const z=Zl(u,he,y,_,fe,se,k,N),U=eo(z.segments,[...l,...x])+rn(z.segments,L)*5e4+rn(z.segments,a)*1e4+no(z.segments)*.01+Math.abs(fe-D)*.2+(he.side===b?0:25)+(se===E?0:10);U<H&&(H=U,C=he,T=z)}}return x.push({d:T.d,segments:T.segments}),{id:g.id,d:T.d,sideId:g.sideId,kind:"model",toolKind:g.toolKind,sourceAnchor:C,targetAnchor:_,segments:T.segments}}).filter(g=>!!g)}function xi(e){const t=jl(e.edges),n=t.filter(l=>l.kind!=="model"),o=t.filter(l=>l.kind==="model"),a=hi(e.nodes,n,e.groups,e.nodeMetrics);return[...a,...gi(e.nodes,o,e.groups,e.nodeMetrics,Ql(a),a)]}const yi={class:"pointer-events-none absolute left-0 top-0 overflow-visible",width:"1",height:"1"},bi=["data-edge-id","data-edge-kind","data-edge-tool-kind","d","stroke-width","stroke-dasharray"],ki=_e({__name:"CanvasEdges",props:{nodes:{},edges:{},groups:{},selectedNodeId:{},hoveredNodeId:{},nodeMetrics:{}},setup(e){const t=e,n=O(()=>{const l=new Map;for(const s of t.edges)l.set(s.id,s);return l}),o=O(()=>xi({nodes:t.nodes,edges:t.edges,groups:t.groups,nodeMetrics:t.nodeMetrics}).map(l=>{const s=n.value.get(l.id);return{...l,highlighted:t.selectedNodeId===s?.from||t.selectedNodeId===s?.to,hovered:t.hoveredNodeId===s?.from||t.hoveredNodeId===s?.to}}));function a(l){return l.kind==="model"?l.hovered?"stroke-purple-500 dark:stroke-purple-400":l.highlighted?"stroke-purple-400 dark:stroke-purple-500":"stroke-neutral-400/60 dark:stroke-neutral-500/50":l.toolKind==="subagent"?l.hovered?"stroke-emerald-500 dark:stroke-emerald-400":l.highlighted?"stroke-emerald-400 dark:stroke-emerald-500":"stroke-neutral-300 dark:stroke-neutral-700":l.sideId==="a"?l.hovered?"stroke-sky-500 dark:stroke-sky-400":l.highlighted?"stroke-sky-400 dark:stroke-sky-500":"stroke-neutral-300 dark:stroke-neutral-700":l.hovered?"stroke-amber-500 dark:stroke-amber-400":l.highlighted?"stroke-amber-400 dark:stroke-amber-500":"stroke-neutral-300 dark:stroke-neutral-700"}return(l,s)=>(p(),w("svg",yi,[(p(!0),w($e,null,Ie(o.value,r=>(p(),w("path",{key:r.id,"data-edge-id":r.id,"data-edge-kind":r.kind,"data-edge-tool-kind":r.toolKind,d:r.d,class:ue(a(r)),"stroke-width":r.hovered?2.25:r.highlighted?2:1.5,"stroke-dasharray":r.kind==="model"?"4 4":void 0,fill:"none"},null,10,bi))),128))]))}}),wi={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function $i(e,t){return p(),w("svg",wi,[...t[0]||(t[0]=[m("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 12h14"},null,-1)])])}const Mi=et({name:"lucide-minus",render:$i}),Ti={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ci(e,t){return p(),w("svg",Ti,[...t[0]||(t[0]=[m("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3m8 0h3a2 2 0 0 0 2-2v-3"},null,-1)])])}const Si=et({name:"lucide-maximize",render:Ci}),_i={class:"absolute bottom-4 left-4 z-10 flex items-center gap-1 rounded-lg border border-neutral-200 bg-white/90 p-1 shadow-sm backdrop-blur-sm dark:border-neutral-700 dark:bg-neutral-900/90"},Ii={class:"min-w-[3rem] text-center text-[11px] font-medium tabular-nums text-neutral-500 dark:text-neutral-400"},Ei=_e({__name:"CanvasControls",props:{scalePercent:{}},emits:["zoom-in","zoom-out","fit-view"],setup(e){return(t,n)=>(p(),w("div",_i,[m("button",{class:"flex h-7 w-7 items-center justify-center rounded transition-colors hover:bg-neutral-100 dark:hover:bg-neutral-800",title:"Zoom out",onClick:n[0]||(n[0]=o=>t.$emit("zoom-out"))},[Q(I(Mi),{class:"h-3.5 w-3.5"})]),m("span",Ii,K(e.scalePercent)+"% ",1),m("button",{class:"flex h-7 w-7 items-center justify-center rounded transition-colors hover:bg-neutral-100 dark:hover:bg-neutral-800",title:"Zoom in",onClick:n[1]||(n[1]=o=>t.$emit("zoom-in"))},[Q(I(xo),{class:"h-3.5 w-3.5"})]),n[3]||(n[3]=m("div",{class:"mx-0.5 h-4 w-px bg-neutral-200 dark:bg-neutral-700"},null,-1)),m("button",{class:"flex h-7 w-7 items-center justify-center rounded transition-colors hover:bg-neutral-100 dark:hover:bg-neutral-800",title:"Fit to view",onClick:n[2]||(n[2]=o=>t.$emit("fit-view"))},[Q(I(Si),{class:"h-3.5 w-3.5"})])]))}}),Xe=_e({__name:"EditRegion",props:{target:{},active:{type:Boolean},as:{},editData:{},positioned:{type:Boolean,default:!0}},emits:["open","hover-target"],setup(e,{emit:t}){const n=e,o=t;function a(r,i,c){o("open",{target:r,anchorEl:i.currentTarget,editData:c})}function l(r,i){i.key!=="Enter"&&i.key!==" "||(i.preventDefault(),a(r,i,editData))}const s=O(()=>["group/edit-region cursor-pointer focus-visible:outline-none",n.positioned?"relative":""]);return(r,i)=>(p(),ce(lt(e.as||"div"),{role:"button",tabindex:"0","data-edit-active":e.active||null,class:ue(s.value),onClick:i[0]||(i[0]=Me(c=>a(e.target,c,e.editData),["stop"])),onKeydown:i[1]||(i[1]=c=>l(e.target,c)),onMouseenter:i[2]||(i[2]=c=>o("hover-target",e.target)),onMouseleave:i[3]||(i[3]=c=>o("hover-target",null))},{default:ye(()=>[i[4]||(i[4]=m("div",{class:"composition-edit-region-overlay"},null,-1)),lo(r.$slots,"default")]),_:3},40,["data-edit-active","class"]))}}),Ai={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ni(e,t){return p(),w("svg",Ai,[...t[0]||(t[0]=[m("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 21s-4-3-4-9s4-9 4-9m8 0s4 3 4 9s-4 9-4 9M15 9l-6 6m0-6l6 6"},null,-1)])])}const Jn=et({name:"lucide-variable",render:Ni}),Li={key:0,class:"mt-1.5 w-full border-collapse text-[11px]"},Pi={key:0,class:"ml-1 rounded bg-sky-100 px-1 py-px text-[9px] font-semibold uppercase tracking-wide text-sky-700 dark:bg-sky-950/50 dark:text-sky-300"},fa=_e({__name:"VariablesList",props:{variables:{},muted:{type:Boolean},flaggedNames:{default:()=>[]},flagLabel:{default:"env"}},setup(e){const t=e,n=O(()=>new Set(t.flaggedNames));return(o,a)=>(p(),w("div",null,[m("div",{class:ue(["flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em]",t.muted?"opacity-50":"text-neutral-400 dark:text-neutral-500"])},[Q(I(Jn),{class:"h-3 w-3"}),a[0]||(a[0]=pe(" Variables ",-1))],2),t.variables.length>0?(p(),w("table",Li,[(p(!0),w($e,null,Ie(t.variables,l=>(p(),w("tr",{key:l.name},[m("td",{class:ue(["whitespace-nowrap pr-4 py-px font-mono",t.muted?"opacity-80":"text-neutral-800 dark:text-neutral-200"])},[m("span",null,K(l.name),1),n.value.has(l.name)?(p(),w("span",Pi,K(t.flagLabel),1)):W("",!0)],2),m("td",{class:ue(["whitespace-nowrap py-px text-right",t.muted?"opacity-40":"text-neutral-400 dark:text-neutral-500"])},K(l.type)+K(l.required?" *":""),3)]))),128))])):(p(),w("div",{key:1,class:ue(["mt-1.5 text-[11px] italic",t.muted?"opacity-40":"text-neutral-400 dark:text-neutral-600"])}," None ",2))]))}}),Ri="ring-2 agents-ring-selected ring-offset-2 ring-offset-white shadow-md dark:ring-offset-neutral-900",Oi="ring-[3px] agents-ring-selected ring-offset-[6px] ring-offset-white shadow-lg dark:ring-offset-neutral-950";function gt(e,t){return e?Ri:t?Oi:""}const Di={class:"flex border-b border-neutral-200 dark:border-neutral-700"},Bi={class:"flex items-center justify-between gap-3 px-5 pt-3.5 pb-2"},Vi={class:"ml-1 shrink-0 rounded-full border border-current/60 px-1.5 py-px text-[9.5px] font-semibold tracking-wider"},Ui={class:"flex items-center gap-3.5 px-5 pt-1 pb-3.5"},Hi=["src"],zi={class:"min-w-0"},ji={class:"whitespace-nowrap text-[16px] font-semibold leading-tight"},Fi={class:"mt-0.5 whitespace-nowrap font-mono text-xs text-neutral-400 dark:text-neutral-500"},Xi={key:0,class:"px-5 pb-3"},Ki={key:0,class:"mb-2 flex flex-wrap gap-1"},Yi={key:1,class:"max-w-[280px] text-[11px] leading-relaxed text-neutral-500 dark:text-neutral-400"},qi={class:"mt-1 max-w-[280px] text-[11px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Gi={class:"mt-auto grid grid-cols-[1fr_1px_1fr] border-t border-neutral-200 dark:border-neutral-700"},Wi={class:"flex items-center gap-1.5 whitespace-nowrap text-[10px] font-bold uppercase tracking-[0.15em] text-sky-600 dark:text-sky-400"},Qi={class:"mt-0.5 whitespace-nowrap font-mono text-[11px] text-neutral-500 dark:text-neutral-400"},Ji={class:"mt-1.5 grid grid-cols-[auto_1fr] gap-x-3 text-[11px]"},Zi={class:"whitespace-nowrap py-[1px] text-neutral-400 dark:text-neutral-500"},ed=["title"],td={class:"flex items-center gap-1.5 whitespace-nowrap text-[10px] font-bold uppercase tracking-[0.15em] text-amber-600 dark:text-amber-400"},nd={key:0,class:"mt-0.5 whitespace-nowrap font-mono text-[11px] text-neutral-500 dark:text-neutral-400"},ad={key:1,class:"mt-0.5 text-[11px] text-neutral-400 dark:text-neutral-500"},od={key:2,class:"mt-1.5 grid grid-cols-[auto_1fr] gap-x-3 text-[11px]"},rd={class:"whitespace-nowrap py-[1px] text-neutral-400 dark:text-neutral-500"},sd=["title"],No=_e({__name:"AgentLockupCard",props:{data:{},selected:{type:Boolean},hovered:{type:Boolean},hoveredEditTarget:{},borderClass:{default:"border-neutral-900 dark:border-neutral-300"},backgroundClass:{default:"bg-white dark:bg-neutral-950"},actionLabel:{default:null},kindLabel:{default:null},accentTextClass:{default:null}},emits:["select","action","edit-surface","hover-edit-target"],setup(e,{emit:t}){const n=e,o=t,{activeSurface:a}=Kt();function l(C){const T=a.value?.target;return!T||T.entityType!=="agent"||T.entityId!==n.data.name?!1:T.section===C}function s(C){if(l(C))return!0;const T=n.hoveredEditTarget;return!T||T.entityType!=="agent"||T.entityId!==n.data.name?!1:T.section===C}function r(C){return{entityType:"agent",entityId:n.data.name,section:C}}const i=O(()=>n.data.type==="dual_ai"),c=O(()=>i.value?"Dual AI":"AI + Human"),d=O(()=>n.kindLabel?n.kindLabel:n.data._isSubagent?"Sub-agent":"Agent"),f=O(()=>n.accentTextClass?n.accentTextClass:n.data._isSubagent?"text-emerald-600 dark:text-emerald-400":"text-neutral-500 dark:text-neutral-400"),v=O(()=>n.data.side_a_label||"Side A"),x=O(()=>n.data.side_b_label||(i.value?"Side B":"Human")),g=O(()=>q({stopOnResponse:n.data.side_a_stop_on_response,stopTool:n.data.side_a_stop_tool,maxSteps:n.data.side_a_max_steps,endConversationTool:n.data.side_a_session_stop_tool})),u=O(()=>q({stopOnResponse:n.data.side_b_stop_on_response,stopTool:n.data.side_b_stop_tool,maxSteps:n.data.side_b_max_steps,endConversationTool:n.data.side_b_session_stop_tool})),y=O(()=>n.data._variables||[]),S=O(()=>Object.keys(n.data.env||{}).filter(C=>C.trim().length>0)),_=O(()=>{const C=new Set(y.value.map(T=>T.name));return S.value.filter(T=>C.has(T))}),M=O(()=>n.data.expose_as_tool&&n.data.tool_description?.trim()||null),k=O(()=>n.data._isSubagent&&M.value?M.value:n.data.description||null),N=O(()=>!n.data._isSubagent&&!!M.value),L=O(()=>{if(!i.value)return null;const C=n.data.max_session_turns;return typeof C!="number"?"unlimited session turns":`max ${C} session turn${C===1?"":"s"}`}),P=O(()=>{const C=[];return n.data.expose_as_tool&&!n.data._isSubagent&&C.push("tool"),L.value&&C.push(L.value),S.value.length>0&&C.push(`${S.value.length} env override${S.value.length===1?"":"s"}`),C}),ne=O(()=>!!k.value||N.value||P.value.length>0);function q(C){return[{key:"stop_on_response",label:"Stop on response",value:C.stopOnResponse?"On":"Off",active:C.stopOnResponse},{key:"stop_tool",label:"Stop tool",value:C.stopTool||"Off",active:!!C.stopTool},{key:"max_steps",label:"Max steps",value:D(C.maxSteps),active:C.maxSteps!==null&&C.maxSteps!==void 0},{key:"end_conversation",label:"End conversation tool",value:C.endConversationTool||"Off",active:!!C.endConversationTool}]}function D(C){return typeof C=="number"?String(C):"Unlimited"}return(C,T)=>(p(),w("div",{"data-canvas-node":"",class:ue(["absolute flex flex-col rounded-xl border text-neutral-900 transition-shadow select-none dark:text-neutral-100",e.borderClass,e.backgroundClass,I(gt)(e.selected,e.hovered)]),style:{width:"max-content"}},[m("div",Di,[Q(Xe,{class:"min-w-0 flex-1",target:r("identity"),active:s("identity"),onOpen:T[1]||(T[1]=b=>o("edit-surface",b)),onHoverTarget:T[2]||(T[2]=b=>o("hover-edit-target",b))},{default:ye(()=>[m("div",Bi,[m("div",{class:ue(["flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.2em]",f.value])},[Q(I(tt),{class:"h-3 w-3"}),m("span",null,K(d.value),1),m("span",Vi,K(c.value),1)],2),e.actionLabel?(p(),w("button",{key:0,type:"button",class:"shrink-0 rounded-md border border-neutral-200 px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.16em] text-neutral-500 transition-colors hover:border-neutral-300 hover:text-neutral-800 dark:border-neutral-700 dark:text-neutral-400 dark:hover:border-neutral-500 dark:hover:text-neutral-100",onClick:T[0]||(T[0]=Me(b=>C.$emit("action"),["stop"]))},K(e.actionLabel),1)):W("",!0)]),m("div",Ui,[m("img",{src:e.data.icon||I(na)(e.data.name),alt:"",class:"h-10 w-10 shrink-0 rounded-lg object-cover"},null,8,Hi),m("div",zi,[m("div",ji,K(e.data.title),1),m("div",Fi,K(e.data.name),1)])]),ne.value?(p(),w("div",Xi,[P.value.length>0?(p(),w("div",Ki,[(p(!0),w($e,null,Ie(P.value,b=>(p(),w("span",{key:b,class:"rounded-md bg-neutral-100 px-1.5 py-px font-mono text-[10px] lowercase tracking-wide text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400"},K(b),1))),128))])):W("",!0),k.value?(p(),w("p",Yi,K(k.value),1)):W("",!0),N.value?(p(),w("div",{key:2,class:ue(k.value?"mt-2":"")},[T[9]||(T[9]=m("div",{class:"text-[10px] font-bold uppercase tracking-[0.16em] text-neutral-400 dark:text-neutral-500"}," Tool use ",-1)),m("p",qi,K(M.value),1)],2)):W("",!0)])):W("",!0)]),_:1},8,["target","active"]),Q(Xe,{"data-variables-section":"",class:"shrink-0 border-l border-neutral-200 px-4 py-3 dark:border-neutral-700",target:r("variables"),active:s("variables"),onOpen:T[3]||(T[3]=b=>o("edit-surface",b)),onHoverTarget:T[4]||(T[4]=b=>o("hover-edit-target",b))},{default:ye(()=>[Q(fa,{variables:y.value,"flagged-names":_.value,"flag-label":"env"},null,8,["variables","flagged-names"])]),_:1},8,["target","active"])]),m("div",Gi,[Q(Xe,{class:"px-3 py-2",target:r("side-a"),active:s("side-a"),onOpen:T[5]||(T[5]=b=>o("edit-surface",b)),onHoverTarget:T[6]||(T[6]=b=>o("hover-edit-target",b))},{default:ye(()=>[m("div",Wi,[Q(I(tt),{class:"h-3 w-3"}),pe(" "+K(v.value),1)]),m("div",Qi,K(e.data.side_a_agent_prompt),1),m("dl",Ji,[(p(!0),w($e,null,Ie(g.value,b=>(p(),w($e,{key:b.key},[m("dt",Zi,K(b.label),1),m("dd",{class:ue(["whitespace-nowrap py-[1px] text-right font-mono",b.active?"text-sky-600 dark:text-sky-400":"text-neutral-400 dark:text-neutral-600"]),title:b.value},K(b.value),11,ed)],64))),128))])]),_:1},8,["target","active"]),T[10]||(T[10]=m("div",{class:"bg-neutral-200 dark:bg-neutral-700"},null,-1)),Q(Xe,{class:"px-3 py-2",target:r("side-b"),active:s("side-b"),onOpen:T[7]||(T[7]=b=>o("edit-surface",b)),onHoverTarget:T[8]||(T[8]=b=>o("hover-edit-target",b))},{default:ye(()=>[m("div",td,[(p(),ce(lt(i.value?I(tt):I(aa)),{class:"h-3 w-3"})),pe(" "+K(x.value),1)]),e.data.side_b_agent_prompt?(p(),w("div",nd,K(e.data.side_b_agent_prompt),1)):(p(),w("div",ad,"No prompt")),e.data.side_b_agent_prompt?(p(),w("dl",od,[(p(!0),w($e,null,Ie(u.value,b=>(p(),w($e,{key:b.key},[m("dt",rd,K(b.label),1),m("dd",{class:ue(["whitespace-nowrap py-[1px] text-right font-mono",b.active?"text-amber-600 dark:text-amber-400":"text-neutral-400 dark:text-neutral-600"]),title:b.value},K(b.value),11,sd)],64))),128))])):W("",!0)]),_:1},8,["target","active"])])],2))}}),ld=_e({__name:"AgentNode",props:{data:{},selected:{type:Boolean},hovered:{type:Boolean},hoveredEditTarget:{}},emits:["select","edit-surface","hover-edit-target"],setup(e){return(t,n)=>(p(),ce(No,{data:e.data,selected:e.selected,hovered:e.hovered,"hovered-edit-target":e.hoveredEditTarget,onSelect:n[0]||(n[0]=o=>t.$emit("select")),onEditSurface:n[1]||(n[1]=o=>t.$emit("edit-surface",o)),onHoverEditTarget:n[2]||(n[2]=o=>t.$emit("hover-edit-target",o))},null,8,["data","selected","hovered","hovered-edit-target"]))}}),id={},dd={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",width:"1em",height:"1em",viewBox:"0 0 128 128",fill:"none",style:{transform:"translateY(-0.1em)"}};function ud(e,t){return p(),w("svg",dd,[...t[0]||(t[0]=[m("rect",{width:"128",height:"128",rx:"6",fill:"#3178c6"},null,-1),m("path",{fill:"#fff","fill-rule":"evenodd","clip-rule":"evenodd",d:"m74.2622 99.468v14.026c2.2724 1.168 4.9598 2.045 8.0625 2.629 3.1027.585 6.3728.877 9.8105.877 3.3503 0 6.533-.321 9.5478-.964 3.016-.643 5.659-1.702 7.932-3.178 2.272-1.476 4.071-3.404 5.397-5.786 1.325-2.381 1.988-5.325 1.988-8.8313 0-2.5421-.379-4.7701-1.136-6.6841-.758-1.9139-1.85-3.6159-3.278-5.1062-1.427-1.4902-3.139-2.827-5.134-4.0104-1.996-1.1834-4.246-2.3011-6.752-3.353-1.8352-.7597-3.4812-1.4975-4.9378-2.2134-1.4567-.7159-2.6948-1.4464-3.7144-2.1915-1.0197-.7452-1.8063-1.5341-2.3598-2.3669-.5535-.8327-.8303-1.7751-.8303-2.827 0-.9643.2476-1.8336.7429-2.6079s1.1945-1.4391 2.0976-1.9943c.9031-.5551 2.0101-.9861 3.3211-1.2929 1.311-.3069 2.7676-.4603 4.3699-.4603 1.1658 0 2.3958.0877 3.6928.263 1.296.1753 2.6.4456 3.911.8109 1.311.3652 2.585.8254 3.824 1.3806 1.238.5552 2.381 1.198 3.43 1.9285v-13.1051c-2.127-.8182-4.45-1.4245-6.97-1.819s-5.411-.5917-8.6744-.5917c-3.3211 0-6.4674.3579-9.439 1.0738-2.9715.7159-5.5862 1.8336-7.844 3.353-2.2578 1.5195-4.0422 3.4553-5.3531 5.8075-1.311 2.3522-1.9665 5.1646-1.9665 8.4373 0 4.1785 1.2017 7.7433 3.6052 10.6945 2.4035 2.9513 6.0523 5.4496 10.9466 7.495 1.9228.7889 3.7145 1.5633 5.375 2.323 1.6606.7597 3.0954 1.5486 4.3044 2.3668s2.1628 1.7094 2.8618 2.6736c.7.9643 1.049 2.06 1.049 3.2873 0 .9062-.218 1.7462-.655 2.5202s-1.1 1.446-1.9885 2.016c-.8886.57-1.9956 1.016-3.3212 1.337-1.3255.321-2.8768.482-4.6539.482-3.0299 0-6.0305-.533-9.0021-1.6-2.9715-1.066-5.7245-2.666-8.2591-4.799zm-23.5596-34.9136h18.2974v-11.5544h-51v11.5544h18.2079v51.4456h14.4947z"},null,-1)])])}const Xt=fo(id,[["render",ud]]),cd={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function fd(e,t){return p(),w("svg",cd,[...t[0]||(t[0]=[m("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[m("path",{d:"m18 5l-2.414-2.414A2 2 0 0 0 14.172 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2"}),m("path",{d:"M21.378 12.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506zM8 18h1"})],-1)])])}const Lo=et({name:"lucide-file-pen-line",render:fd}),md={class:"relative"},hd={class:"flex items-start gap-1.5"},pd=["aria-label"],vd={key:1,class:"mt-0.5 inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center"},gd={class:"min-w-0 flex-1"},xd={class:"flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-1"},yd={key:0,class:"text-[12px] leading-none font-semibold text-rose-500 dark:text-rose-400","aria-label":"Required"},bd={key:1,class:"rounded-md bg-neutral-100 px-1.5 py-px font-mono text-[10px] text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400"},kd={key:0,class:"mt-0.5 max-w-[32rem] break-words text-[10px] leading-relaxed text-neutral-400 dark:text-neutral-500"},wd={key:0},$d=_e({__name:"DataTreeRow",props:{node:{},depth:{},collapsed:{}},emits:["toggle"],setup(e,{emit:t}){const n=e,o=t,a=O(()=>(n.node.children?.length??0)>0),l=O(()=>a.value?!n.collapsed.has(n.node.id):!1),s=O(()=>({paddingLeft:`${n.depth*20}px`})),r=O(()=>n.depth===0);return(i,c)=>{const d=At("DataTreeRow",!0);return p(),w("div",md,[m("div",{style:De(s.value),class:"py-1.5"},[m("div",hd,[a.value?(p(),w("button",{key:0,type:"button",class:"mt-0.5 inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center rounded text-neutral-400 transition-colors hover:bg-neutral-100 hover:text-neutral-600 dark:text-neutral-500 dark:hover:bg-neutral-900 dark:hover:text-neutral-300","aria-label":`${l.value?"Collapse":"Expand"} ${e.node.label}`,onClick:c[0]||(c[0]=Me(f=>o("toggle",e.node.id),["stop"]))},[Q(I(yo),{class:ue(["h-3 w-3 transition-transform",l.value?"rotate-90":""])},null,8,["class"])],8,pd)):(p(),w("span",vd,[...c[2]||(c[2]=[m("span",{class:"inline-block h-1.5 w-1.5 rounded-full bg-neutral-300 dark:bg-neutral-600"},null,-1)])])),m("div",gd,[m("div",xd,[m("span",{class:ue(["truncate font-mono",r.value?"text-[12px] text-neutral-900 dark:text-neutral-100":"text-[11px] text-neutral-700 dark:text-neutral-300"])},K(e.node.label),3),e.node.required?(p(),w("span",yd," * ")):W("",!0),e.node.value?(p(),w("span",bd,K(e.node.value),1)):W("",!0)]),e.node.description?(p(),w("div",kd,K(e.node.description),1)):W("",!0)])])],4),a.value&&l.value?(p(),w("div",wd,[(p(!0),w($e,null,Ie(e.node.children,f=>(p(),ce(d,{key:f.id,node:f,depth:e.depth+1,collapsed:e.collapsed,onToggle:c[1]||(c[1]=v=>o("toggle",v))},null,8,["node","depth","collapsed"]))),128))])):W("",!0),a.value&&l.value?(p(),w("div",{key:1,class:"pointer-events-none absolute bottom-0 w-px bg-neutral-200 dark:bg-neutral-800",style:De({top:"22px",left:`${e.depth*20+7}px`})},null,4)):W("",!0)])}}}),Md={key:0,class:"text-[11px] italic text-neutral-400 dark:text-neutral-600"},Td={key:1},Po=_e({__name:"DataTreeView",props:{nodes:{},emptyLabel:{default:"No fields"}},setup(e){const t=e,n=B(new Set);function o(l,s){for(const r of l)s(r),r.children?.length&&o(r.children,s)}Le(()=>t.nodes,l=>{const s=new Set;o(l,r=>{(r.children?.length??0)>0&&!r.defaultExpanded&&s.add(r.id)}),n.value=s},{immediate:!0,deep:!0});function a(l){const s=new Set(n.value);s.has(l)?s.delete(l):s.add(l),n.value=s}return(l,s)=>e.nodes.length===0?(p(),w("div",Md,K(e.emptyLabel),1)):(p(),w("div",Td,[(p(!0),w($e,null,Ie(e.nodes,r=>(p(),ce($d,{key:r.id,node:r,depth:0,collapsed:n.value,onToggle:a},null,8,["node","collapsed"]))),128))]))}});function zt(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function ao(e){return typeof e=="string"?JSON.stringify(e):typeof e=="number"||typeof e=="boolean"?String(e):e===null?"null":Array.isArray(e)?`[${e.length}]`:typeof e=="object"?"{…}":"—"}function Cd(e){return e?Array.isArray(e.enum)&&e.enum.length>0?`enum(${e.enum.length})`:Array.isArray(e.type)&&e.type.length>0?e.type.join(" | "):typeof e.type=="string"&&e.type.length>0?e.type:Array.isArray(e.oneOf)&&e.oneOf.length>0?`oneOf(${e.oneOf.length})`:Array.isArray(e.anyOf)&&e.anyOf.length>0?`anyOf(${e.anyOf.length})`:Array.isArray(e.allOf)&&e.allOf.length>0?`allOf(${e.allOf.length})`:e.properties&&typeof e.properties=="object"?"object":e.items?"array":"const"in e?"const":"value":"—"}function Tt(e,t,n,o=!1){const a=[];if(t.properties&&typeof t.properties=="object"){const s=new Set(Array.isArray(t.required)?t.required:[]);a.push(...Object.entries(t.properties).map(([r,i])=>Tt(r,zt(i)?i:{},`${n}.properties.${r}`,s.has(r))))}if(t.items){const s=Array.isArray(t.items)?t.items:[t.items];a.push(...s.map((r,i)=>Tt(s.length===1?"items":`item ${i+1}`,zt(r)?r:{},`${n}.items.${i}`,!0)))}for(const[s,r]of[["oneOf",t.oneOf],["anyOf",t.anyOf],["allOf",t.allOf]])!Array.isArray(r)||r.length===0||a.push(...r.map((i,c)=>Tt(`${s} ${c+1}`,zt(i)?i:{},`${n}.${s}.${c}`,!0)));zt(t.additionalProperties)&&a.push(Tt("additional",t.additionalProperties,`${n}.additional`,!1));const l=[];if(typeof t.description=="string"&&t.description.trim()&&l.push(t.description.trim()),Array.isArray(t.enum)&&t.enum.length>0){const s=t.enum.slice(0,3).map(ao).join(", "),r=t.enum.length>3?", …":"";l.push(s+r)}else"const"in t&&l.push(ao(t.const));return{id:n,label:e,value:Cd(t),description:l.join(" • ")||null,required:o,children:a.length>0?a:void 0,defaultExpanded:n.split(".").length<=3}}function ma(e){if(!e||typeof e!="object")return[];const t=e.properties&&typeof e.properties=="object"?e.properties:null;if(t){const n=new Set(Array.isArray(e.required)?e.required:[]);return Object.entries(t).map(([o,a])=>Tt(o,zt(a)?a:{},`schema.${o}`,n.has(o)))}return[Tt("value",e,"schema.value",!0)]}function Sd(e){const t=e.reasoning?.effort;return t==="low"||t==="medium"||t==="high"?t:"off"}function _d(e){const t=e.reasoning?.maxTokens;return typeof t=="number"?t.toLocaleString():"—"}function Ro(e,t){const n=Sd(e),o=[{key:"tool",label:"Tool",rows:[{kind:"value",label:"Tool choice",value:e.tool_choice,active:!0},{kind:"toggle",label:"Parallel calls",enabled:e.parallel_tool_calls}]},{key:"context",label:"Context",rows:[{kind:"toggle",label:"Chat history",enabled:e.include_chat},{kind:"toggle",label:"Past tool calls",enabled:e.include_past_tools},{kind:"toggle",label:"Reasoning in history",enabled:e.include_reasoning}]},{key:"reasoning",label:"Reasoning",rows:[{kind:"value",label:"Effort",value:n,active:n!=="off"},{kind:"value",label:"Max tokens",value:_d(e),active:typeof e.reasoning?.maxTokens=="number"},{kind:"toggle",label:"Exclude from response",enabled:e.reasoning?.exclude===!0}]}];return t&&o.push({key:"response",label:"Response",rows:[{kind:"toggle",label:"Chat history",enabled:t.include_text_response!==!1},{kind:"toggle",label:"Tool calls",enabled:t.include_tool_calls!==!1},{kind:"toggle",label:"Errors",enabled:t.include_errors!==!1}]}),o}function oo(e,t){if(!e)return null;const n=t[e];if(n)return n;for(const o of Object.values(t))if(o.name===e)return o;return null}async function Oo(e){const[t,n]=await Promise.all([e.toolsCatalog?Promise.resolve(e.toolsCatalog):Qe("/tools"),e.models?Promise.resolve(e.models):Qe("/models").then(o=>Object.fromEntries(o.models.map(a=>[a.id,a])))]);return{toolsCatalog:t,models:n}}async function Id(e,t={}){const n=await ot(e);if(!n)return null;try{const{toolsCatalog:o,models:a}=await Oo(t);return Bo(n,{toolsCatalog:o,models:a})}catch{return{prompt:n,nestedTools:[],model:null}}}async function Do(e,t={}){if(e.length===0)return[];const n=await Oo(t).catch(()=>null);return(await Promise.all(e.map(async a=>[a,await ot(a)]))).map(([a,l])=>l?n?[a,Bo(l,n)]:[a,{prompt:l,nestedTools:[],model:null}]:[a,null])}function Bo(e,t){const n=e.tools.map(a=>ms(a,t.toolsCatalog,t.models)),o=oo(e.model_id,t.models)||oo(e.model_name,t.models);return{prompt:e,nestedTools:n,model:o}}async function Vo(e){try{return(await Qe(`/agents/${encodeURIComponent(e)}`)).agent}catch{return null}}async function Ed(e,t={}){const[n,o,a]=await Promise.all([e.kind==="tool"?vo(e.name):Promise.resolve(null),e.kind==="prompt"?Id(e.name,t):Promise.resolve(null),e.kind==="handoff"?Vo(e.name):Promise.resolve(null)]);return{functionTool:n,promptTool:o,handoffAgent:a}}async function Ad(e,t){const[n,o,a]=await Promise.all([Promise.all(e.functionTools.map(async l=>[l,await vo(l)])),Do(e.promptTools,t),Promise.all(e.handoffs.map(async l=>[l,await Vo(l)]))]);return{functionTools:Object.fromEntries(n),promptTools:Object.fromEntries(o),handoffs:Object.fromEntries(a)}}const Nd={class:"flex"},Ld={class:"flex min-w-0 flex-1 flex-col"},Pd={class:"flex items-start justify-between gap-4 px-5 py-3.5"},Rd={class:"min-w-0 flex-1"},Od={key:0,class:"ml-1 shrink-0 rounded-full border border-current/60 px-1.5 py-px text-[9.5px] font-semibold tracking-wider"},Dd={class:"mt-3"},Bd={class:"whitespace-nowrap font-mono text-[14px] font-semibold text-neutral-900 dark:text-neutral-100"},Vd={key:0,class:"mt-1 max-w-[220px] text-[11px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Ud={class:"flex shrink-0 items-start gap-2"},Hd=["onKeydown"],zd={"data-model-anchor":"",class:"flex items-center gap-3 rounded-lg border border-neutral-100 bg-neutral-50/80 px-3 py-2 dark:border-neutral-800 dark:bg-neutral-900/30"},jd={class:"flex items-start gap-2"},Fd=["src"],Xd={class:"leading-tight"},Kd={class:"whitespace-nowrap text-[13px] font-semibold text-neutral-900 dark:text-neutral-100"},Yd={class:"whitespace-nowrap font-mono text-[10px] text-neutral-400 dark:text-neutral-500"},qd={key:0,class:"group relative border-l border-neutral-200 pl-3 dark:border-neutral-800"},Gd={class:"grid shrink-0 grid-cols-2 gap-x-1.5 gap-y-1","aria-label":"Model capabilities"},Wd=["aria-label"],Qd={role:"tooltip",class:"pointer-events-none invisible absolute right-0 top-full z-50 mt-2 w-max rounded-md border border-neutral-200 bg-white px-3 py-2 text-left shadow-lg opacity-0 transition-opacity group-hover:visible group-hover:opacity-100 dark:border-neutral-700 dark:bg-neutral-900"},Jd={class:"grid grid-cols-[auto_1fr] items-center gap-x-2 gap-y-1 text-[11px]"},Zd={class:"flex items-center"},eu={class:"flex min-h-0 flex-1"},tu={class:"text-[9px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},nu={class:"mt-1 space-y-[2px] text-[11px]"},au={class:"whitespace-nowrap text-neutral-500 dark:text-neutral-400"},ou={class:"flex min-w-0 flex-1 flex-col border-l border-neutral-200 dark:border-neutral-700"},ru={class:"mb-1 flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},su={class:"flex shrink-0 min-w-[12rem] max-w-64 flex-col border-l border-neutral-200 dark:border-neutral-700"},lu={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},iu={key:0,class:"mt-1.5 space-y-1"},du={class:"flex flex-wrap items-center gap-x-1.5 gap-y-0.5"},uu={class:"font-mono font-medium text-neutral-800 dark:text-neutral-200"},cu={key:0,class:"rounded bg-amber-100 px-1 py-px font-mono text-[9px] lowercase tracking-wide text-amber-700 dark:bg-amber-950/50 dark:text-amber-300"},fu={key:1,class:"mt-1.5 text-[11px] italic text-neutral-400 dark:text-neutral-600"},mu={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-fuchsia-500 dark:text-fuchsia-400"},hu={key:0,class:"mt-1.5 space-y-1"},pu={class:"font-mono font-medium text-neutral-800 dark:text-neutral-200"},vu={key:0,class:"mt-1 flex items-center gap-1.5 text-[10px] text-neutral-400 dark:text-neutral-500"},gu=["src"],xu={class:"font-medium text-neutral-500 dark:text-neutral-400"},yu={key:1,class:"truncate"},bu={key:1,class:"mt-1.5 text-[11px] italic text-neutral-400 dark:text-neutral-600"},ku={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-sky-500 dark:text-sky-400"},wu={key:0,class:"mt-1.5 space-y-1"},$u={class:"font-mono font-medium text-neutral-800 dark:text-neutral-200"},Mu={key:1,class:"mt-1.5 text-[11px] italic text-neutral-400 dark:text-neutral-600"},Tu={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-emerald-500 dark:text-emerald-400"},Cu={key:0,class:"mt-1.5 space-y-1"},Su={class:"font-mono font-medium text-neutral-800 dark:text-neutral-200"},_u={key:1,class:"mt-1.5 text-[11px] italic text-neutral-400 dark:text-neutral-600"},Uo=_e({__name:"PromptCard",props:{prompt:{},tools:{},toolConfig:{},variables:{},variableEnvNames:{},label:{},modelName:{},modelProvider:{},modelActual:{},modelIconSrc:{},modelCapabilities:{},borderClass:{},accentTextClass:{},selected:{type:Boolean},hovered:{type:Boolean},hoveredEditTarget:{},refreshEpoch:{}},emits:["select","edit-surface","hover-edit-target"],setup(e,{emit:t}){const n=e,o=t,a=O(()=>n.tools.filter(T=>T.kind==="tool"||T.kind==="provider"||T.kind==="mcp")),l=O(()=>n.tools.filter(T=>T.kind==="prompt")),s=O(()=>n.tools.filter(T=>T.kind==="subagent")),r=O(()=>n.tools.filter(T=>T.kind==="handoff")),i=O(()=>n.variables||ra(n.prompt)),c=O(()=>n.variableEnvNames||sa(n.prompt)),d=O(()=>!!n.label),f=O(()=>n.toolConfig?"Sub-prompt":"Prompt"),v=O(()=>n.modelName||n.prompt.model_name);O(()=>n.modelProvider||n.prompt.model_provider);const x=O(()=>n.modelActual||n.prompt.model_id),g=O(()=>{const T=n.modelCapabilities||{};return[{key:"images",label:"Vision",enabled:T.supportsImages===!0},{key:"tools",label:"Tool Calls",enabled:T.supportsToolCalls===!0},{key:"stream",label:"Streaming",enabled:T.supportsStreaming===!0},{key:"json",label:"JSON",enabled:T.supportsJsonMode===!0}]}),u=O(()=>!!n.modelCapabilities&&Object.keys(n.modelCapabilities).length>0),y=O(()=>ma(n.prompt.required_schema)),S=B({}),_=O(()=>Ro(n.prompt,n.toolConfig));Le(()=>[l.value.map(T=>T.name).join(""),n.refreshEpoch??0],async()=>{const T=l.value.map(A=>A.name);if(T.length===0){S.value={};return}const b=await Do(T);S.value=Object.fromEntries(b)},{immediate:!0});function M(T){return S.value[T.name]?.model||T.resolvedModel||null}function k(T){const b=M(T);if(b)return Ve(`/api/providers/${encodeURIComponent(b.provider)}/icon?model=${encodeURIComponent(b.model)}`);const A=S.value[T.name];return A?.prompt?Ve(`/api/providers/${encodeURIComponent(A.prompt.model_provider)}/icon?model=${encodeURIComponent(A.prompt.model_id)}`):""}function N(T){const b=M(T);return b?b.name:S.value[T.name]?.prompt.model_name||T.model||null}function L(T){const b=M(T);return b?b.provider:S.value[T.name]?.prompt.model_provider||null}function P(T,b){return{entityType:"prompt",entityId:n.prompt.name,section:T,defaultToolTab:b}}const{activeSurface:ne}=Kt();function q(T,b){const A=ne.value?.target;return!(!A||A.entityType!=="prompt"||A.entityId!==n.prompt.name||A.section!==T||b!==void 0&&A.defaultToolTab!==b)}function D(T,b){if(q(T,b))return!0;const A=n.hoveredEditTarget;return!(!A||A.entityType!=="prompt"||A.entityId!==n.prompt.name||A.section!==T||b!==void 0&&A.defaultToolTab!==b)}function C(T){const b=T.currentTarget;b instanceof HTMLElement&&o("edit-surface",{target:P("prompt"),anchorEl:b})}return(T,b)=>(p(),w("div",{"data-canvas-node":"",role:"button",tabindex:"0",onClick:b[18]||(b[18]=Me(A=>T.$emit("select"),["stop"])),onKeydown:[b[19]||(b[19]=je(Me(A=>T.$emit("select"),["prevent","stop"]),["enter"])),b[20]||(b[20]=je(Me(A=>T.$emit("select"),["prevent","stop"]),["space"]))],class:ue(["absolute cursor-pointer rounded-xl border bg-white transition-shadow select-none dark:bg-neutral-950",e.borderClass,I(gt)(e.selected,e.hovered)])},[m("div",Nd,[m("div",Ld,[Q(Xe,{as:"header",class:"border-b border-neutral-200 dark:border-neutral-700",target:P("basic"),active:D("basic"),onOpen:b[2]||(b[2]=A=>o("edit-surface",A)),onHoverTarget:b[3]||(b[3]=A=>o("hover-edit-target",A))},{default:ye(()=>[m("div",Pd,[m("div",Rd,[m("div",{class:ue(["flex items-center gap-1.5 whitespace-nowrap text-[10px] font-bold uppercase tracking-[0.2em]",e.accentTextClass])},[Q(I(vt),{class:"h-3 w-3"}),m("span",null,K(f.value),1),d.value?(p(),w("span",Od,K(e.label),1)):W("",!0)],2),m("div",Dd,[m("div",Bd,K(e.prompt.name),1),e.prompt.tool_description?(p(),w("div",Vd,K(e.prompt.tool_description),1)):W("",!0)])]),m("div",Ud,[m("button",{type:"button",class:ue(["inline-flex h-8 w-8 items-center justify-center rounded-md border border-neutral-200 bg-white text-neutral-500 transition-colors hover:border-neutral-300 hover:text-neutral-900 dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-400 dark:hover:border-neutral-700 dark:hover:text-neutral-100",D("prompt")?"border-neutral-900 text-neutral-900 dark:border-neutral-100 dark:text-neutral-100":""]),title:"Edit prompt text","aria-label":"Edit prompt text",onClick:Me(C,["stop"]),onKeydown:[je(Me(C,["prevent","stop"]),["enter"]),je(Me(C,["prevent","stop"]),["space"])],onMouseenter:b[0]||(b[0]=Me(A=>o("hover-edit-target",P("prompt")),["stop"])),onMouseleave:b[1]||(b[1]=Me(A=>o("hover-edit-target",null),["stop"]))},[Q(I(Lo),{class:"h-3.5 w-3.5"})],42,Hd),m("div",zd,[m("div",jd,[e.modelIconSrc?(p(),w("img",{key:0,src:e.modelIconSrc,alt:"",class:"mt-[3px] h-4 w-4 shrink-0 rounded-sm"},null,8,Fd)):W("",!0),m("div",Xd,[m("div",Kd,K(v.value),1),m("div",Yd,K(x.value),1)])]),u.value?(p(),w("div",qd,[m("div",Gd,[(p(!0),w($e,null,Ie(g.value,A=>(p(),w("span",{key:A.key,"aria-label":`${A.label}: ${A.enabled?"supported":"not supported"}`,class:ue(["h-1.5 w-1.5 rounded-full",A.enabled?"bg-emerald-500 shadow-[0_0_0_2px_rgba(16,185,129,0.16)]":"bg-neutral-300 dark:bg-neutral-700"])},null,10,Wd))),128))]),m("div",Qd,[b[21]||(b[21]=m("div",{class:"mb-1.5 text-[9px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"}," Capabilities ",-1)),m("dl",Jd,[(p(!0),w($e,null,Ie(g.value,A=>(p(),w($e,{key:A.key},[m("dt",Zd,[m("span",{class:ue(["h-1.5 w-1.5 rounded-full",A.enabled?"bg-emerald-500 shadow-[0_0_0_2px_rgba(16,185,129,0.16)]":"bg-neutral-300 dark:bg-neutral-700"])},null,2)]),m("dd",{class:ue(["whitespace-nowrap",A.enabled?"text-neutral-800 dark:text-neutral-200":"text-neutral-400 dark:text-neutral-600"])},K(A.label),3)],64))),128))])])])):W("",!0)])])])]),_:1},8,["target","active"]),m("div",eu,[Q(Xe,{class:"shrink-0 px-5 py-3",target:P("behavior"),active:D("behavior"),onOpen:b[4]||(b[4]=A=>o("edit-surface",A)),onHoverTarget:b[5]||(b[5]=A=>o("hover-edit-target",A))},{default:ye(()=>[(p(!0),w($e,null,Ie(_.value,(A,G)=>(p(),w("div",{key:A.key,class:ue(["py-2",G>0?"border-t border-neutral-200 dark:border-neutral-700":""])},[m("div",tu,K(A.label),1),m("dl",nu,[(p(!0),w($e,null,Ie(A.rows,Y=>(p(),w("div",{key:Y.label,class:"flex items-baseline justify-between gap-x-6"},[m("dt",au,K(Y.label),1),Y.kind==="toggle"?(p(),w("dd",{key:0,class:ue(["whitespace-nowrap font-mono",Y.enabled?"text-emerald-600 dark:text-emerald-400":"text-neutral-400 dark:text-neutral-600"])},K(Y.enabled?"on":"off"),3)):(p(),w("dd",{key:1,class:ue(["whitespace-nowrap font-mono",Y.active?"text-neutral-800 dark:text-neutral-200":"text-neutral-400 dark:text-neutral-600"])},K(Y.value),3))]))),128))])],2))),128))]),_:1},8,["target","active"]),m("div",ou,[Q(Xe,{class:"flex-[1_1_auto] px-5 py-3",target:P("schema"),active:D("schema"),onOpen:b[6]||(b[6]=A=>o("edit-surface",A)),onHoverTarget:b[7]||(b[7]=A=>o("hover-edit-target",A))},{default:ye(()=>[m("div",ru,[Q(I($t),{class:"h-3 w-3"}),b[22]||(b[22]=pe(" Input schema ",-1))]),Q(Po,{nodes:y.value,"empty-label":"None"},null,8,["nodes"])]),_:1},8,["target","active"]),Q(Xe,{"data-variables-section":"",class:"flex-[1_1_auto] border-t border-neutral-200 px-5 py-3 dark:border-neutral-700",target:P("variables"),active:D("variables"),onOpen:b[8]||(b[8]=A=>o("edit-surface",A)),onHoverTarget:b[9]||(b[9]=A=>o("hover-edit-target",A))},{default:ye(()=>[Q(fa,{variables:i.value,"flagged-names":c.value},null,8,["variables","flagged-names"])]),_:1},8,["target","active"])])])]),m("div",su,[Q(Xe,{"data-tool-column":"function",class:"flex-[1_1_25%] px-4 py-3",target:P("tools","functions"),active:D("tools","functions"),onOpen:b[10]||(b[10]=A=>o("edit-surface",A)),onHoverTarget:b[11]||(b[11]=A=>o("hover-edit-target",A))},{default:ye(()=>[m("div",lu,[Q(Xt,{class:"h-3 w-3"}),b[23]||(b[23]=pe(" Functions ",-1))]),a.value.length>0?(p(),w("div",iu,[(p(!0),w($e,null,Ie(a.value,A=>(p(),w("div",{key:A.name,class:"text-[11px]"},[m("div",du,[m("span",uu,K(A.displayName),1),A.config.immediate?(p(),w("span",cu," immediate ")):W("",!0)])]))),128))])):(p(),w("div",fu,"None"))]),_:1},8,["target","active"]),Q(Xe,{"data-tool-column":"prompt",class:"flex-[1_1_25%] border-t border-neutral-200 px-4 py-3 dark:border-neutral-700",target:P("tools","sub-prompts"),active:D("tools","sub-prompts"),onOpen:b[12]||(b[12]=A=>o("edit-surface",A)),onHoverTarget:b[13]||(b[13]=A=>o("hover-edit-target",A))},{default:ye(()=>[m("div",mu,[Q(I(vt),{class:"h-3 w-3"}),b[24]||(b[24]=pe(" Sub-prompts ",-1))]),l.value.length>0?(p(),w("div",hu,[(p(!0),w($e,null,Ie(l.value,A=>(p(),w("div",{key:A.name,class:"text-[11px]"},[m("div",pu,K(A.displayName),1),N(A)?(p(),w("div",vu,[k(A)?(p(),w("img",{key:0,src:k(A),alt:"",class:"h-3.5 w-3.5 shrink-0 rounded-sm"},null,8,gu)):W("",!0),m("span",xu,K(N(A)),1),L(A)?(p(),w("span",yu,K(L(A)),1)):W("",!0)])):W("",!0)]))),128))])):(p(),w("div",bu,"None"))]),_:1},8,["target","active"]),Q(Xe,{"data-tool-column":"handoff",class:"flex-[1_1_25%] border-t border-neutral-200 px-4 py-3 dark:border-neutral-700",target:P("tools","handoffs"),active:D("tools","handoffs"),onOpen:b[14]||(b[14]=A=>o("edit-surface",A)),onHoverTarget:b[15]||(b[15]=A=>o("hover-edit-target",A))},{default:ye(()=>[m("div",ku,[Q(I(oa),{class:"h-3 w-3"}),b[25]||(b[25]=pe(" Handoffs ",-1))]),r.value.length>0?(p(),w("div",wu,[(p(!0),w($e,null,Ie(r.value,A=>(p(),w("div",{key:A.name,class:"text-[11px]"},[m("div",$u,K(A.displayName),1)]))),128))])):(p(),w("div",Mu,"None"))]),_:1},8,["target","active"]),Q(Xe,{"data-tool-column":"subagent",class:"flex-[1_1_25%] border-t border-neutral-200 px-4 py-3 dark:border-neutral-700",target:P("tools","sub-agents"),active:D("tools","sub-agents"),onOpen:b[16]||(b[16]=A=>o("edit-surface",A)),onHoverTarget:b[17]||(b[17]=A=>o("hover-edit-target",A))},{default:ye(()=>[m("div",Tu,[Q(I(tt),{class:"h-3 w-3"}),b[26]||(b[26]=pe(" Sub-agents ",-1))]),s.value.length>0?(p(),w("div",Cu,[(p(!0),w($e,null,Ie(s.value,A=>(p(),w("div",{key:A.name,class:"text-[11px]"},[m("div",Su,K(A.displayName),1)]))),128))])):(p(),w("div",_u,"None"))]),_:1},8,["target","active"])])])],34))}}),Iu={class:"flex items-center gap-2.5 px-5 pt-4 pb-3"},Eu={class:"text-[15px] font-semibold text-neutral-900 dark:text-neutral-100"},Au=_e({__name:"SidePromptNode",props:{data:{},selected:{type:Boolean},hovered:{type:Boolean},hoveredEditTarget:{},refreshEpoch:{}},emits:["select","edit-surface","hover-edit-target"],setup(e){const t=e,n=O(()=>t.data.mode==="human"),o=O(()=>{const s=t.data.model;return s?Ve(`/api/providers/${encodeURIComponent(s.provider)}/icon?model=${encodeURIComponent(s.model)}`):t.data.prompt?Ve(`/api/providers/${encodeURIComponent(t.data.prompt.model_provider)}/icon?model=${encodeURIComponent(t.data.prompt.model_id)}`):""}),a=O(()=>t.data.id==="a"?"border-sky-500 dark:border-sky-600":"border-amber-500 dark:border-amber-600"),l=O(()=>t.data.id==="a"?"text-sky-600 dark:text-sky-400":"text-amber-600 dark:text-amber-400");return(s,r)=>n.value?(p(),w("div",{key:0,"data-canvas-node":"",role:"button",tabindex:"0",onClick:r[0]||(r[0]=Me(i=>s.$emit("select"),["stop"])),onKeydown:[r[1]||(r[1]=je(Me(i=>s.$emit("select"),["prevent","stop"]),["enter"])),r[2]||(r[2]=je(Me(i=>s.$emit("select"),["prevent","stop"]),["space"]))],class:ue(["absolute cursor-pointer rounded-xl border bg-white transition-shadow select-none dark:bg-neutral-950",a.value,I(gt)(e.selected,e.hovered)])},[m("div",Iu,[Q(I(aa),{class:ue(["h-5 w-5 shrink-0",l.value])},null,8,["class"]),m("span",Eu,K(e.data.label),1)]),r[6]||(r[6]=m("div",{class:"border-t border-neutral-100 px-5 py-3 text-xs text-neutral-400 dark:border-neutral-800 dark:text-neutral-500"}," Receives user messages and input. ",-1))],34)):e.data.prompt?(p(),ce(Uo,{key:1,prompt:e.data.prompt,tools:e.data.tools,variables:e.data.variables,"variable-env-names":e.data.variableEnvNames,label:e.data.label,"model-name":e.data.model?.name,"model-provider":e.data.model?.provider,"model-actual":e.data.model?.model,"model-icon-src":o.value,"model-capabilities":e.data.model?.capabilities,"border-class":a.value,"accent-text-class":l.value,selected:e.selected,hovered:e.hovered,"hovered-edit-target":e.hoveredEditTarget,"refresh-epoch":e.refreshEpoch,onSelect:r[3]||(r[3]=i=>s.$emit("select")),onEditSurface:r[4]||(r[4]=i=>s.$emit("edit-surface",i)),onHoverEditTarget:r[5]||(r[5]=i=>s.$emit("hover-edit-target",i))},null,8,["prompt","tools","variables","variable-env-names","label","model-name","model-provider","model-actual","model-icon-src","model-capabilities","border-class","accent-text-class","selected","hovered","hovered-edit-target","refresh-epoch"])):W("",!0)}}),Nu={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Lu(e,t){return p(),w("svg",Nu,[...t[0]||(t[0]=[Wr('<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M6 3v12"></path><circle cx="18" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle><path d="M18 9a9 9 0 0 1-9 9"></path></g>',1)])])}const Pu=et({name:"lucide-git-branch",render:Lu}),Ru={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ou(e,t){return p(),w("svg",Ru,[...t[0]||(t[0]=[m("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 22v-5M9 8V2m6 6V2m3 6v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z"},null,-1)])])}const ro=et({name:"lucide-plug",render:Ou}),Du={class:"border-b border-neutral-200 dark:border-neutral-700"},Bu={class:"flex items-center justify-between gap-3 px-4 pt-3 pb-1.5"},Vu={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.2em] text-neutral-500 dark:text-neutral-400"},Uu={key:0,class:"flex flex-wrap items-center gap-1"},Hu={class:"flex items-start justify-between gap-5 px-4 pt-1 pb-3"},zu={class:"min-w-0 flex-1"},ju={class:"truncate font-mono text-[13px] font-semibold text-neutral-900 dark:text-neutral-100"},Fu={key:0,class:"w-56 shrink-0 text-balance text-left text-[10.5px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Xu={key:0,class:"px-5 py-3"},Ku={class:"min-w-[320px] max-w-[380px]"},Yu={class:"mb-1 flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},qu=_e({__name:"FunctionToolCard",props:{tool:{},detail:{},selected:{type:Boolean},hovered:{type:Boolean}},emits:["select"],setup(e){const t=e,n=O(()=>ma(t.detail.schema)),o=O(()=>t.detail.variables.length>0),a=O(()=>n.value.length>0),l=O(()=>{const s=[];return typeof t.tool.config.blocking=="boolean"&&s.push({label:t.tool.config.blocking?"blocking":"background",accent:!1}),t.tool.config.optional&&s.push({label:"optional",accent:!1}),t.tool.config.immediate&&s.push({label:"immediate",accent:!0}),s});return(s,r)=>(p(),w("div",{"data-canvas-node":"",role:"button",tabindex:"0",onClick:r[0]||(r[0]=Me(i=>s.$emit("select"),["stop"])),onKeydown:[r[1]||(r[1]=je(Me(i=>s.$emit("select"),["prevent","stop"]),["enter"])),r[2]||(r[2]=je(Me(i=>s.$emit("select"),["prevent","stop"]),["space"]))],class:ue(["absolute cursor-pointer overflow-hidden rounded-xl border border-neutral-300 bg-white transition-shadow select-none dark:border-neutral-700 dark:bg-neutral-950",I(gt)(e.selected,e.hovered)]),style:{width:"max-content"}},[m("header",Du,[m("div",Bu,[m("div",Vu,[Q(Xt,{class:"h-3 w-3"}),r[3]||(r[3]=m("span",null,"Function",-1))]),l.value.length>0?(p(),w("div",Uu,[(p(!0),w($e,null,Ie(l.value,i=>(p(),w("span",{key:i.label,class:ue(["rounded-md px-1.5 py-px font-mono text-[10px] lowercase tracking-wide",i.accent?"bg-amber-100 text-amber-700 dark:bg-amber-950/50 dark:text-amber-300":"bg-neutral-100 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400"])},K(i.label),3))),128))])):W("",!0)]),m("div",Hu,[m("div",zu,[m("div",ju,K(e.tool.displayName),1)]),e.detail.description?(p(),w("p",Fu,K(e.detail.description),1)):W("",!0)])]),o.value||a.value?(p(),w("div",Xu,[m("div",Ku,[o.value?(p(),ce(fa,{key:0,variables:e.detail.variables},null,8,["variables"])):W("",!0),a.value?(p(),w("div",{key:1,class:ue([o.value?"mt-3 border-t border-neutral-200 pt-3 dark:border-neutral-700":""])},[m("div",Yu,[Q(I($t),{class:"h-3 w-3"}),r[4]||(r[4]=pe(" Args ",-1))]),Q(Po,{nodes:n.value,"empty-label":"No args"},null,8,["nodes"])],2)):W("",!0)])])):W("",!0)],34))}}),Gu={class:"flex items-center gap-2 text-[10px] font-bold uppercase tracking-[0.2em] opacity-60"},Wu={class:"mt-1.5 truncate text-sm font-semibold text-neutral-900 dark:text-neutral-100"},Qu={key:0,class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Ju=_e({__name:"ToolNode",props:{data:{},selected:{type:Boolean},hovered:{type:Boolean},hoveredEditTarget:{},refreshEpoch:{}},emits:["select","edit-surface","hover-edit-target","view-agent","detail-loading"],setup(e,{emit:t}){const n=e,o=t,a={tool:{label:"Function",classes:"border-neutral-300 bg-white dark:border-neutral-700 dark:bg-neutral-950",icon:Xt},prompt:{label:"Prompt Tool",classes:"border-fuchsia-300 bg-fuchsia-50/90 dark:border-fuchsia-700 dark:bg-fuchsia-950/30",icon:vt},subagent:{label:"Subagent",classes:"border-emerald-300 bg-emerald-50/90 dark:border-emerald-700 dark:bg-emerald-950/30",icon:Pu},handoff:{label:"Handoff",classes:"border-sky-300 bg-sky-50/90 dark:border-sky-700 dark:bg-sky-950/30",icon:oa},provider:{label:"Provider",classes:"border-amber-300 bg-amber-50/90 dark:border-amber-700 dark:bg-amber-950/30",icon:ro},mcp:{label:"MCP",classes:"border-violet-300 bg-violet-50/90 dark:border-violet-700 dark:bg-violet-950/30",icon:ro},unknown:{label:"Tool",classes:"border-neutral-300 bg-white dark:border-neutral-700 dark:bg-neutral-950",icon:sn}},l=O(()=>a[n.data.kind]||a.unknown),s=O(()=>n.data.kind==="tool"),r=O(()=>n.data.kind==="prompt"),i=O(()=>n.data.kind==="handoff"),c=O(()=>{const N=n.data.description;return N?N.length>48?N.slice(0,45)+"...":N:""}),d=B(null),f=B(null),v=B([]),x=B(null),g=B(null),u=O(()=>n.data.kind==="tool"||n.data.kind==="prompt"||n.data.kind==="handoff");let y=0;Le(()=>[n.data.name,n.refreshEpoch??0],async()=>{const N=++y;u.value&&o("detail-loading",!0);try{const L=await Ed(n.data);if(N!==y)return;f.value=L.functionTool,d.value=L.promptTool?.prompt||null,v.value=L.promptTool?.nestedTools||[],g.value=L.promptTool?.model||null,x.value=L.handoffAgent}finally{N===y&&u.value&&o("detail-loading",!1)}},{immediate:!0});const S=O(()=>g.value?Ve(`/api/providers/${encodeURIComponent(g.value.provider)}/icon?model=${encodeURIComponent(g.value.model)}`):d.value?Ve(`/api/providers/${encodeURIComponent(d.value.model_provider)}/icon?model=${encodeURIComponent(d.value.model_id)}`):""),_=O(()=>g.value?.name||d.value?.model_name),M=O(()=>g.value?.provider||d.value?.model_provider),k=O(()=>g.value?.model||d.value?.model_id||null);return(N,L)=>s.value&&f.value?(p(),ce(qu,{key:0,tool:e.data,detail:f.value,selected:e.selected,hovered:e.hovered,onSelect:L[0]||(L[0]=P=>o("select"))},null,8,["tool","detail","selected","hovered"])):r.value&&d.value?(p(),ce(Uo,{key:1,prompt:d.value,tools:v.value,"tool-config":e.data.config,variables:I(ra)(d.value),"variable-env-names":I(sa)(d.value),"model-name":_.value,"model-provider":M.value,"model-actual":k.value,"model-icon-src":S.value,"model-capabilities":g.value?.capabilities,"border-class":"border-fuchsia-500 dark:border-fuchsia-600","accent-text-class":"text-fuchsia-600 dark:text-fuchsia-400",selected:e.selected,hovered:e.hovered,"hovered-edit-target":e.hoveredEditTarget,onSelect:L[1]||(L[1]=P=>o("select")),onEditSurface:L[2]||(L[2]=P=>o("edit-surface",P)),onHoverEditTarget:L[3]||(L[3]=P=>o("hover-edit-target",P)),"refresh-epoch":e.refreshEpoch},null,8,["prompt","tools","tool-config","variables","variable-env-names","model-name","model-provider","model-actual","model-icon-src","model-capabilities","selected","hovered","hovered-edit-target","refresh-epoch"])):i.value&&x.value?(p(),ce(No,{key:2,data:x.value,selected:e.selected,hovered:e.hovered,"hovered-edit-target":e.hoveredEditTarget,"border-class":"border-sky-400 dark:border-sky-500","background-class":"bg-sky-50/90 dark:bg-sky-950/30","kind-label":"Handoff","accent-text-class":"text-sky-600 dark:text-sky-400","action-label":"View agent",onSelect:L[4]||(L[4]=P=>o("select")),onAction:L[5]||(L[5]=P=>o("view-agent",x.value.name)),onEditSurface:L[6]||(L[6]=P=>o("edit-surface",P)),onHoverEditTarget:L[7]||(L[7]=P=>o("hover-edit-target",P))},null,8,["data","selected","hovered","hovered-edit-target"])):(p(),w("div",{key:3,"data-canvas-node":"",role:"button",tabindex:"0",onClick:L[8]||(L[8]=Me(P=>o("select"),["stop"])),onKeydown:[L[9]||(L[9]=je(Me(P=>o("select"),["prevent","stop"]),["enter"])),L[10]||(L[10]=je(Me(P=>o("select"),["prevent","stop"]),["space"]))],class:ue(["absolute cursor-pointer rounded-xl border px-4 py-3 transition-shadow select-none",l.value.classes,I(gt)(e.selected,e.hovered)])},[m("div",Gu,[(p(),ce(lt(l.value.icon),{class:"h-3.5 w-3.5"})),pe(" "+K(l.value.label),1)]),m("div",Wu,K(e.data.displayName),1),c.value?(p(),w("div",Qu,K(c.value),1)):W("",!0)],34))}}),Zu={class:"flex items-center gap-2 text-[10px] font-bold uppercase tracking-[0.2em] text-neutral-500 dark:text-neutral-400"},ec={class:"mt-1.5 truncate text-sm font-medium text-neutral-900 dark:text-neutral-100"},tc=_e({__name:"HookNode",props:{data:{},selected:{type:Boolean},hovered:{type:Boolean}},emits:["select"],setup(e){return(t,n)=>(p(),w("div",{"data-canvas-node":"",role:"button",tabindex:"0",onClick:n[0]||(n[0]=Me(o=>t.$emit("select"),["stop"])),onKeydown:[n[1]||(n[1]=je(Me(o=>t.$emit("select"),["prevent","stop"]),["enter"])),n[2]||(n[2]=je(Me(o=>t.$emit("select"),["prevent","stop"]),["space"]))],class:ue(["absolute cursor-pointer rounded-xl border px-4 py-3 transition-shadow select-none","border-neutral-200 bg-neutral-50/80 dark:border-neutral-800 dark:bg-neutral-900/80",I(gt)(e.selected,e.hovered)])},[m("div",Zu,[Q(I(Yn),{class:"h-3.5 w-3.5"}),n[3]||(n[3]=pe(" Hook ",-1))]),m("div",ec,K(e.data.hook),1)],34))}}),nc={class:"flex items-center gap-1.5 whitespace-nowrap px-4 pt-3 pb-1.5 text-[10px] font-bold uppercase tracking-[0.2em] text-neutral-500 dark:text-neutral-400"},ac={key:0,class:"ml-1 shrink-0 rounded-full border border-current/60 px-1.5 py-px text-[9.5px] font-semibold tracking-wider"},oc={"data-model-anchor":"",class:"flex items-center gap-2 px-4 pt-0.5 pb-3"},rc=["src"],sc={class:"min-w-0"},lc={class:"truncate text-[14px] font-semibold text-neutral-900 dark:text-neutral-100"},ic={key:0,class:"truncate font-mono text-[10px] text-neutral-400 dark:text-neutral-500"},dc={key:1,class:"truncate text-[10px] text-neutral-400 dark:text-neutral-500"},uc={key:0},cc={key:1,class:"text-neutral-300 dark:text-neutral-600 mx-1"},fc={key:2},mc={key:0,class:"grid grid-cols-2 border-t border-neutral-200 dark:border-neutral-700"},hc={key:1,class:"grid grid-cols-2 border-t border-neutral-200 text-[10px] text-neutral-400 dark:border-neutral-700 dark:text-neutral-500"},pc={class:"text-[9px] uppercase leading-tight tracking-[0.14em]"},vc={class:"mt-0.5 font-mono text-[11px] leading-tight text-neutral-600 dark:text-neutral-300"},gc={key:2,class:"space-y-1 border-t border-neutral-200 px-4 py-2 text-[10px] text-neutral-400 dark:border-neutral-700 dark:text-neutral-500"},xc={class:"uppercase tracking-[0.16em]"},yc={class:"min-w-0 truncate font-mono text-right"},bc=_e({__name:"ModelNode",props:{data:{},selected:{type:Boolean},hovered:{type:Boolean},hoveredEditTarget:{}},emits:["select","edit-surface","hover-edit-target"],setup(e,{emit:t}){const n=e,o=t,{activeSurface:a}=Kt(),l=O(()=>({entityType:"model",entityId:n.data.id})),s=O(()=>jt(a.value?.target,l.value)||jt(n.hoveredEditTarget,l.value)),r=O(()=>Ve(`/api/providers/${encodeURIComponent(n.data.provider)}/icon?model=${encodeURIComponent(n.data.model||"")}`)),i=O(()=>{const _=n.data.capabilities||{};return[{key:"images",label:"Vision",enabled:_.supportsImages===!0},{key:"tools",label:"Tool Calls",enabled:_.supportsToolCalls===!0},{key:"stream",label:"Streaming",enabled:_.supportsStreaming===!0},{key:"json",label:"JSON",enabled:_.supportsJsonMode===!0}]}),c=O(()=>n.data.providerTools||[]),d=O(()=>n.data.fallbacks||[]),f=O(()=>{const _=n.data.capabilities||{},M=[];return typeof _.maxContextTokens=="number"&&M.push({label:"Max context",value:_.maxContextTokens.toLocaleString()}),typeof _.maxOutputTokens=="number"&&M.push({label:"Max output",value:_.maxOutputTokens.toLocaleString()}),M}),v=_=>{if(_==null||Number.isNaN(_))return null;if(_===0)return"$0";const M=_>=1?_.toFixed(2):_.toFixed(4);return`$${parseFloat(M)}`},x=_=>{if(!_)return null;const M=v(_.min),k=v(_.max);return!M||!k?null:M===k?M:`${M}-${k}`},g=O(()=>{const _=n.data.pricing_range?.input;return _?x(_):v(n.data.input_price)}),u=O(()=>{const _=n.data.pricing_range?.output;return _?x(_):v(n.data.output_price)}),y=O(()=>!!(g.value||u.value)),S=O(()=>{const _=[];if(c.value.length>0){const M=c.value.slice(0,2).join(", "),k=c.value.length>2?", …":"";_.push({label:"Provider tools",value:M+k})}if(d.value.length>0){const M=d.value.slice(0,2).map(N=>N.name).join(", "),k=d.value.length>2?", …":"";_.push({label:"Fallbacks",value:M+k})}return _});return(_,M)=>(p(),ce(Xe,{"data-canvas-node":"","data-canvas-model-node":"",target:l.value,active:s.value,"edit-data":e.data,positioned:!1,class:ue(["absolute overflow-hidden rounded-xl border border-neutral-300 bg-white transition-shadow select-none dark:border-neutral-700 dark:bg-neutral-950",I(gt)(e.selected,e.hovered)]),onOpen:M[1]||(M[1]=k=>o("edit-surface",k)),onHoverTarget:M[2]||(M[2]=k=>o("hover-edit-target",k))},{default:ye(()=>[m("header",null,[m("div",nc,[Q(I(mo),{class:"h-3 w-3"}),M[3]||(M[3]=m("span",null,"Model",-1)),e.data.provider?(p(),w("span",ac,K(e.data.provider),1)):W("",!0)]),m("div",oc,[m("img",{src:r.value,alt:"",class:"h-5 w-5 shrink-0 rounded-sm",onError:M[0]||(M[0]=k=>k.target.style.visibility="hidden")},null,40,rc),m("div",sc,[m("div",lc,K(e.data.name),1),e.data.model&&e.data.model!==e.data.name?(p(),w("div",ic,K(e.data.model),1)):W("",!0),y.value?(p(),w("div",dc,[g.value?(p(),w("span",uc,[M[4]||(M[4]=m("span",{class:"text-neutral-300 dark:text-neutral-600"},"in",-1)),pe(" "+K(g.value)+"/M ",1)])):W("",!0),g.value&&u.value?(p(),w("span",cc,"·")):W("",!0),u.value?(p(),w("span",fc,[M[5]||(M[5]=m("span",{class:"text-neutral-300 dark:text-neutral-600"},"out",-1)),pe(" "+K(u.value)+"/M ",1)])):W("",!0)])):W("",!0)])])]),i.value.length>0?(p(),w("div",mc,[(p(!0),w($e,null,Ie(i.value,(k,N)=>(p(),w("div",{key:k.key,class:ue(["flex items-center gap-2 px-4 py-2",N%2===1?"border-l border-neutral-200 dark:border-neutral-700":"",N>=2?"border-t border-neutral-200 dark:border-neutral-700":""])},[m("span",{class:ue(["h-1.5 w-1.5 shrink-0 rounded-full",k.enabled?"bg-emerald-500 shadow-[0_0_0_2px_rgba(16,185,129,0.16)]":"bg-neutral-300 dark:bg-neutral-700"])},null,2),m("span",{class:ue(["text-[11px] leading-tight",k.enabled?"text-neutral-700 dark:text-neutral-300":"text-neutral-400 dark:text-neutral-500"])},K(k.label),3)],2))),128))])):W("",!0),f.value.length>0?(p(),w("div",hc,[(p(!0),w($e,null,Ie(f.value,(k,N)=>(p(),w("div",{key:k.label,class:ue(["px-4 py-2",N>0?"border-l border-neutral-200 dark:border-neutral-700":""])},[m("div",pc,K(k.label),1),m("div",vc,K(k.value),1)],2))),128))])):W("",!0),S.value.length>0?(p(),w("div",gc,[(p(!0),w($e,null,Ie(S.value,k=>(p(),w("div",{key:k.label,class:"flex items-baseline justify-between gap-3"},[m("span",xc,K(k.label),1),m("span",yc,K(k.value),1)]))),128))])):W("",!0)]),_:1},8,["target","active","edit-data","class"]))}}),kc={class:"relative flex-1 overflow-hidden bg-neutral-100/50 dark:bg-neutral-950/50"},wc=["aria-label","onClick","onKeydown"],$c={class:"pointer-events-none absolute inset-0 h-full w-full","aria-hidden":"true"},Mc=["id"],Tc=["fill"],Cc={class:"absolute -top-3 left-4 z-10 flex items-center gap-2 rounded bg-white px-2 py-0.5 dark:bg-neutral-900"},Sc={class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-600 dark:text-neutral-300"},_c={key:0,class:"absolute inset-0 z-10 flex items-center justify-center bg-neutral-100 dark:bg-neutral-950"},Ic={key:0,class:"absolute left-4 right-4 top-4 z-10 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-800 dark:border-amber-800 dark:bg-amber-950/80 dark:text-amber-100"},Ec={key:1,class:"absolute inset-0 flex flex-col items-center justify-center gap-3 text-neutral-400 dark:text-neutral-600"},Ac=_e({__name:"CompositionCanvas",props:{layout:{},selectedNodeId:{},hoveredNodeId:{},hoveredEditTarget:{},refreshingNodeId:{},refreshEpoch:{},loading:{type:Boolean},error:{},hasAgent:{type:Boolean}},emits:["select-node","view-agent","deselect","nodes-measured","hover-node","open-edit-surface"],setup(e,{emit:t}){const n=e,o=t,a=B(null),l=B(new Set);Le(()=>n.layout.nodes.map(ee=>ee.id).join(","),ee=>{const Z=new Set(ee?ee.split(","):[]);l.value=new Set([...l.value].filter(h=>Z.has(h)))},{immediate:!0});function s(ee,Z){const h=new Set(l.value);Z?h.add(ee):h.delete(ee),l.value=h}const r=O(()=>l.value.size>0),i=B(!1),{state:c,isPanning:d,transformStyle:f,scalePercent:v,onWheel:x,onPointerDown:g,onPointerMove:u,onPointerUp:y,shouldHandleClick:S,zoomIn:_,zoomOut:M,fitToView:k,resetAutoFitLock:N,focusNode:L,setContentBounds:P,saveViewport:ne,restoreViewport:q}=Rl(a,{maxScale:1.2,panPadding:40});Le(c,()=>as(),{deep:!0,flush:"post"}),La(ee=>{const Z=a.value;Z&&(Z.addEventListener("wheel",x,{passive:!1}),ee(()=>Z.removeEventListener("wheel",x)))}),Qr(()=>{a.value?.removeEventListener("wheel",x)});const D=Pn(n,"layout"),C=Pn(n,"loading"),T=Pn(n,"selectedNodeId"),{layoutStable:b,measurements:A,nodesWithMeasuredSizes:G,nodeMetrics:Y,measureNode:H,measuredBounds:E}=Nl(D,C,ee=>k(ee,{force:!1}),ee=>o("nodes-measured",ee),N);Le(()=>n.loading,ee=>{ee&&(i.value=!1)}),Le([b,r],([ee,Z])=>{ee&&!Z&&(i.value=!0)},{immediate:!0});const j=O(()=>Ol({hasAgent:n.hasAgent,hasError:!!n.error,loadingComposition:n.loading,layoutStable:b.value,loadingAsyncDetail:r.value,hasRevealedStableDiagram:i.value}));function F(ee,Z){if(Z instanceof HTMLElement){H(ee,Z);return}if(!Z||typeof Z!="object"||!("$el"in Z))return;const h=Z.$el;h instanceof HTMLElement&&H(ee,h)}La(()=>{if(!n.hasAgent||n.layout.nodes.length===0){P(null);return}P(E())});function X(ee){if(ee.type==="agent"||ee.type==="side"||ee.type==="model")return!0;if(ee.type!=="tool")return!1;const Z=ee.data.kind;return Z==="prompt"||Z==="handoff"}const he=O(()=>{const ee=n.hoveredNodeId;if(!ee)return null;const Z=n.layout.nodes.find($=>$.id===ee);if(!Z||!X(Z))return null;const h=new Set([ee]);for(const $ of n.layout.edges)$.from===ee&&h.add($.to),$.to===ee&&h.add($.from);return h});function se(ee){const Z=he.value;return Z?Z.has(ee)?{}:{opacity:"0.25",transition:"opacity 120ms ease-out"}:{}}function fe(ee){const Z=he.value;if(!Z)return!0;const h=n.layout.groups.find($=>$.id===ee);if(!h)return!0;for(const $ of n.layout.nodes)if(Z.has($.id)&&$.x>=h.x&&$.y>=h.y&&$.x+$.width<=h.x+h.width&&$.y+$.height<=h.y+h.height)return!0;return!1}const{handleCanvasClick:z,handleGroupClick:U,handleNodeSelect:J}=Ll({containerRef:a,layout:D,selectedNodeId:T,layoutStable:b,measurements:A,viewportState:c,shouldHandleClick:S,focusNode:L,saveViewport:ne,restoreViewport:q,onSelectNode:ee=>o("select-node",ee),onDeselect:()=>o("deselect")});function le(ee,Z){o("open-edit-surface",{...Z,node:ee})}function ie(ee,Z){o("hover-node",ee.id,Z)}function ve(ee,Z){ee.key!=="Enter"&&ee.key!==" "||(ee.preventDefault(),ee.stopPropagation(),U(ee,Z))}return(ee,Z)=>(p(),w("div",kc,[m("div",{ref_key:"containerRef",ref:a,class:ue(["absolute inset-0",I(d)?"cursor-grabbing":"cursor-grab"]),onPointerdown:Z[6]||(Z[6]=(...h)=>I(g)&&I(g)(...h)),onPointermove:Z[7]||(Z[7]=(...h)=>I(u)&&I(u)(...h)),onPointerup:Z[8]||(Z[8]=(...h)=>I(y)&&I(y)(...h)),onPointercancel:Z[9]||(Z[9]=(...h)=>I(y)&&I(y)(...h)),onClick:Z[10]||(Z[10]=(...h)=>I(z)&&I(z)(...h))},[Q(Bl),m("div",{class:"absolute origin-top-left will-change-transform",style:De({...I(f),opacity:I(b)?1:0,transition:I(b)?"opacity 200ms ease-out":"none",pointerEvents:I(b)?"auto":"none"})},[(p(!0),w($e,null,Ie(e.layout.groups,h=>(p(),w($e,{key:h.id},[h.subagent?.multiInstance?(p(),w("div",{key:0,class:"absolute border border-neutral-200/40 bg-[#f3f3f3] dark:border-neutral-700/25 dark:bg-[#1a1a1a]",style:De({left:`${h.x+6}px`,top:`${h.y+6}px`,width:`${h.width}px`,height:`${h.height}px`,borderRadius:"8px"})},null,4)):W("",!0),h.subagent?.multiInstance?(p(),w("div",{key:1,class:"absolute border border-neutral-200/50 bg-[#f5f5f5] dark:border-neutral-700/35 dark:bg-[#1c1c1c]",style:De({left:`${h.x+3}px`,top:`${h.y+3}px`,width:`${h.width}px`,height:`${h.height}px`,borderRadius:"8px"})},null,4)):W("",!0),m("div",{"data-canvas-group":"",class:"absolute cursor-pointer select-none border border-neutral-200/60 bg-[#f7f7f7] transition-opacity duration-150 ease-out dark:border-neutral-700/50 dark:bg-[#1e1e1e]",role:"button",tabindex:"0","aria-label":`Focus ${h.label}`,onClick:Me($=>I(U)($,h),["stop"]),onKeydown:$=>ve($,h),style:De({left:`${h.x}px`,top:`${h.y}px`,width:`${h.width}px`,height:`${h.height}px`,borderRadius:"8px",opacity:fe(h.id)?1:.3})},[(p(),w("svg",$c,[m("defs",null,[m("pattern",{id:"subgrid-"+h.id,x:"0",y:"0",width:"20",height:"20",patternUnits:"userSpaceOnUse"},[...Z[12]||(Z[12]=[m("circle",{cx:"10",cy:"10",r:"0.75",class:"fill-neutral-400/15 dark:fill-neutral-500/15"},null,-1)])],8,Mc)]),m("rect",{width:"100%",height:"100%",fill:`url(#subgrid-${h.id})`},null,8,Tc)])),m("div",Cc,[m("span",Sc,K(h.label),1),h.subagent?(p(),w($e,{key:0},[m("span",{class:ue(["inline-flex items-center rounded-full px-1.5 py-px text-[9px] font-medium",h.subagent.resumable?"bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-400":"bg-neutral-100 text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400"])},K(h.subagent.resumable?"Resumable":"Blocking"),3),m("span",{class:ue(["inline-flex items-center rounded-full px-1.5 py-px text-[9px] font-medium",h.subagent.multiInstance?"bg-sky-100 text-sky-700 dark:bg-sky-900/40 dark:text-sky-400":"bg-neutral-100 text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400"])},K(h.subagent.multiInstance?"Multi":"Single"),3)],64)):W("",!0)])],44,wc)],64))),128)),e.layout.nodes.length>0?(p(),ce(ki,{key:0,nodes:I(G),edges:e.layout.edges,groups:e.layout.groups,"node-metrics":I(Y),"selected-node-id":e.selectedNodeId,"hovered-node-id":e.hoveredNodeId},null,8,["nodes","edges","groups","node-metrics","selected-node-id","hovered-node-id"])):W("",!0),(p(!0),w($e,null,Ie(e.layout.nodes,h=>(p(),w($e,{key:h.id},[h.type==="agent"?(p(),ce(ld,{key:0,ref_for:!0,ref:$=>F(h.id,$),"data-canvas-node-id":h.id,data:h.data,selected:e.selectedNodeId===h.id,hovered:e.hoveredNodeId===h.id,"hovered-edit-target":e.hoveredEditTarget,"refresh-epoch":e.refreshEpoch,style:De({left:`${h.x}px`,top:`${h.y}px`,width:"max-content",minWidth:`${h.width}px`,...se(h.id)}),onSelect:$=>I(J)(h),onEditSurface:$=>le(h,$),onHoverEditTarget:$=>ie(h,$),onMouseenter:$=>o("hover-node",h.id),onMouseleave:Z[0]||(Z[0]=$=>o("hover-node",null))},null,8,["data-canvas-node-id","data","selected","hovered","hovered-edit-target","refresh-epoch","style","onSelect","onEditSurface","onHoverEditTarget","onMouseenter"])):h.type==="side"?(p(),ce(Au,{key:1,ref_for:!0,ref:$=>F(h.id,$),"data-canvas-node-id":h.id,data:h.data,selected:e.selectedNodeId===h.id,hovered:e.hoveredNodeId===h.id,"hovered-edit-target":e.hoveredEditTarget,style:De({left:`${h.x}px`,top:`${h.y}px`,width:"max-content",minWidth:`${h.width}px`,...se(h.id)}),onSelect:$=>I(J)(h),onEditSurface:$=>le(h,$),onHoverEditTarget:$=>ie(h,$),onMouseenter:$=>o("hover-node",h.id),onMouseleave:Z[1]||(Z[1]=$=>o("hover-node",null))},null,8,["data-canvas-node-id","data","selected","hovered","hovered-edit-target","style","onSelect","onEditSurface","onHoverEditTarget","onMouseenter"])):h.type==="tool"?(p(),ce(Ju,{key:2,ref_for:!0,ref:$=>F(h.id,$),"data-canvas-node-id":h.id,data:h.data,selected:e.selectedNodeId===h.id,hovered:e.hoveredNodeId===h.id,"hovered-edit-target":e.hoveredEditTarget,"refresh-epoch":e.refreshEpoch,style:De(h.data.kind==="tool"?{left:`${h.x}px`,top:`${h.y}px`,width:"max-content",minWidth:`${h.width}px`,...se(h.id)}:["prompt","handoff"].includes(h.data.kind)?{left:`${h.x}px`,top:`${h.y}px`,width:"max-content",minWidth:`${h.width}px`,...se(h.id)}:{left:`${h.x}px`,top:`${h.y}px`,width:`${h.width}px`,height:`${h.height}px`,...se(h.id)}),onSelect:$=>I(J)(h),onEditSurface:$=>le(h,$),onHoverEditTarget:$=>ie(h,$),onViewAgent:Z[2]||(Z[2]=$=>o("view-agent",$)),onDetailLoading:$=>s(h.id,$),onMouseenter:$=>o("hover-node",h.id),onMouseleave:Z[3]||(Z[3]=$=>o("hover-node",null))},null,8,["data-canvas-node-id","data","selected","hovered","hovered-edit-target","refresh-epoch","style","onSelect","onEditSurface","onHoverEditTarget","onDetailLoading","onMouseenter"])):h.type==="hook"?(p(),ce(tc,{key:3,"data-canvas-node-id":h.id,data:h.data,selected:e.selectedNodeId===h.id,hovered:e.hoveredNodeId===h.id,style:De({left:`${h.x}px`,top:`${h.y}px`,width:`${h.width}px`,height:`${h.height}px`,...se(h.id)}),onSelect:$=>I(J)(h),onMouseenter:$=>o("hover-node",h.id),onMouseleave:Z[4]||(Z[4]=$=>o("hover-node",null))},null,8,["data-canvas-node-id","data","selected","hovered","style","onSelect","onMouseenter"])):h.type==="model"?(p(),ce(bc,{key:4,ref_for:!0,ref:$=>F(h.id,$),"data-canvas-node-id":h.id,data:h.data,selected:e.selectedNodeId===h.id,hovered:e.hoveredNodeId===h.id,"hovered-edit-target":e.hoveredEditTarget,style:De({left:`${h.x}px`,top:`${h.y}px`,width:`${h.width}px`,minHeight:`${h.height}px`,...se(h.id)}),onSelect:$=>I(J)(h),onEditSurface:$=>le(h,$),onHoverEditTarget:$=>ie(h,$),onMouseenter:$=>o("hover-node",h.id),onMouseleave:Z[5]||(Z[5]=$=>o("hover-node",null))},null,8,["data-canvas-node-id","data","selected","hovered","hovered-edit-target","style","onSelect","onEditSurface","onHoverEditTarget","onMouseenter"])):W("",!0),e.refreshingNodeId===h.id?(p(),w("div",{key:5,class:"absolute flex items-center justify-center rounded-xl bg-white/70 dark:bg-neutral-950/70",style:De({left:`${h.x}px`,top:`${h.y}px`,width:`${I(A).get(h.id)?.w??h.width}px`,height:`${I(A).get(h.id)?.h??h.height}px`})},[...Z[13]||(Z[13]=[m("div",{class:"h-4 w-4 animate-spin rounded-full border-2 border-neutral-300 border-t-neutral-600 dark:border-neutral-600 dark:border-t-neutral-300"},null,-1)])],4)):W("",!0)],64))),128))],4)],34),Q(io,{"leave-active-class":"transition-opacity duration-200 ease-out","leave-to-class":"opacity-0"},{default:ye(()=>[j.value?(p(),w("div",_c,[...Z[14]||(Z[14]=[m("div",{class:"flex items-center gap-2 rounded-full border border-neutral-300 bg-white/80 px-3 py-2 text-xs font-medium text-neutral-600 shadow-sm dark:border-neutral-700 dark:bg-neutral-900/80 dark:text-neutral-300"},[m("span",{class:"h-3.5 w-3.5 animate-spin rounded-full border-2 border-neutral-300 border-t-neutral-700 dark:border-neutral-600 dark:border-t-neutral-200"}),pe(" Preparing diagram ")],-1)])])):W("",!0)]),_:1}),e.error?(p(),w("div",Ic,K(e.error),1)):W("",!0),!e.hasAgent&&!e.loading&&!e.error?(p(),w("div",Ec,[Q(I(ho),{class:"h-12 w-12 opacity-40"}),Z[15]||(Z[15]=m("div",{class:"text-sm"},"Select an agent to view its composition",-1))])):W("",!0),e.hasAgent&&I(b)?(p(),ce(Ei,{key:2,"scale-percent":I(v),onZoomIn:I(_),onZoomOut:I(M),onFitView:Z[11]||(Z[11]=h=>I(k)(I(E)(),{force:!0}))},null,8,["scale-percent","onZoomIn","onZoomOut"])):W("",!0)]))}}),Nc=_e({__name:"InspectorPanel",props:{node:{},compositionSummary:{}},emits:["saved","close"],setup(e,{emit:t}){const n=e,o=t,a=B("inspect"),l=B(null),s=B(null),r=B(null),i=B(null),{saving:c,apiError:d,saveAgent:f,clearAgentError:v}=po(),{saving:x,apiError:g,savePrompt:u,clearPromptError:y}=os(),{saving:S,apiError:_,saveModel:M,clearModelError:k}=rs(),N=O(()=>c.value||x.value||S.value),L=O(()=>a.value==="edit-prompt"?g.value:a.value==="edit-model"?_.value:d.value);function P(T){return T?.id||T?.name||null}Le(()=>n.node,T=>{if(v(),y(),k(),!T){a.value="inspect",l.value=null;return}if(T.type==="agent")l.value=T.value,a.value="edit-agent";else if(T.type==="side"){const b=T.value;b.prompt?(l.value=b.prompt,a.value="edit-prompt"):(a.value="inspect",l.value=null)}else T.type==="model"?(l.value=T.value,a.value="edit-model"):(a.value="inspect",l.value=null)});async function ne(T){(await f({mode:"edit",data:T,editingId:n.node?.type==="agent"?n.node.value.name:void 0,formNode:s.value?.formNode})).ok&&(a.value="inspect",l.value=null,o("saved"))}async function q(T){const b=P(l.value);(await u({mode:"edit",data:T,editingId:b,formNode:r.value?.formNode})).ok&&(a.value="inspect",l.value=null,o("saved"))}async function D(T){const b=P(l.value);(await M({mode:"edit",data:T,editingId:b,formNode:i.value?.formNode})).ok&&(a.value="inspect",l.value=null,o("saved"))}function C(){a.value="inspect",l.value=null,v(),y(),k(),o("close")}return(T,b)=>(p(),w("div",null,[a.value==="edit-agent"?(p(),ce(go,{key:0,ref_key:"agentModalRef",ref:s,"model-value":!0,"edit-agent":l.value,mode:"edit",saving:N.value,"api-error":L.value,onSave:ne,"onUpdate:modelValue":C},null,8,["edit-agent","saving","api-error"])):W("",!0),a.value==="edit-prompt"?(p(),ce(xs,{key:1,ref_key:"promptModalRef",ref:r,"model-value":!0,"edit-prompt":l.value,mode:"edit",saving:N.value,onSave:q,"onUpdate:modelValue":C},null,8,["edit-prompt","saving"])):W("",!0),a.value==="edit-model"?(p(),ce(ys,{key:2,ref_key:"modelModalRef",ref:i,"model-value":!0,"edit-model":l.value,mode:"edit",saving:N.value,onSave:D,"onUpdate:modelValue":C},null,8,["edit-model","saving"])):W("",!0)]))}}),Lc={class:"relative"},Pc={key:1,class:"mt-[2px] inline-block h-3 w-3 shrink-0"},Rc=["src"],Oc={class:"min-w-0 flex-1"},Dc={class:"flex min-w-0 items-start gap-2"},Bc={key:0,class:"mt-[1px] shrink-0 text-[11px] leading-none font-semibold text-rose-500 dark:text-rose-400","aria-label":"Required"},Vc=["onKeydown"],Uc={key:2,class:"ml-auto shrink-0 truncate pl-2 text-[10px] text-neutral-400 dark:text-neutral-500",style:{"max-width":"35%"}},Hc={key:0,class:"mt-1 flex flex-wrap gap-1"},zc={key:2,class:"mt-1 grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5 text-[10.5px]"},jc={class:"truncate text-neutral-400 dark:text-neutral-500"},Fc={key:0,class:"relative"},Xc=10,Kc=_e({__name:"StructureTreeRow",props:{node:{},depth:{},collapsed:{},selectedCanvasNodeId:{},hoveredCanvasNodeId:{},hoveredEditTarget:{},inheritedEditSurface:{},inheritedAnchorEl:{}},emits:["select","edit","hover","toggle"],setup(e,{emit:t}){const n={tool:Xt,prompt:vt,subagent:tt,handoff:oa,provider:$t,mcp:$t,unknown:sn},o={agent:tt,side:tt,prompt:vt,model:mo,variables:Jn,variable:Jn,hooks:Yn,hook:Yn,tools:sn,tool:Xt,subagent:tt,config:Oa,section:Oa,schema:$t},a={tool:"text-neutral-600 dark:text-neutral-400",prompt:"text-fuchsia-600 dark:text-fuchsia-400",subagent:"text-emerald-600 dark:text-emerald-400",handoff:"text-sky-600 dark:text-sky-400",provider:"text-amber-600 dark:text-amber-400",mcp:"text-violet-600 dark:text-violet-400",unknown:"text-neutral-500 dark:text-neutral-400"},l={neutral:"bg-neutral-100 text-neutral-600 dark:bg-neutral-900 dark:text-neutral-400",sky:"bg-sky-100 text-sky-700 dark:bg-sky-950/50 dark:text-sky-300",amber:"bg-amber-100 text-amber-700 dark:bg-amber-950/50 dark:text-amber-300",emerald:"bg-emerald-100 text-emerald-700 dark:bg-emerald-950/50 dark:text-emerald-300",fuchsia:"bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-950/50 dark:text-fuchsia-300",violet:"bg-violet-100 text-violet-700 dark:bg-violet-950/50 dark:text-violet-300",rose:"bg-rose-100 text-rose-700 dark:bg-rose-950/50 dark:text-rose-300"},s={neutral:"text-neutral-700 dark:text-neutral-300",sky:"text-sky-600 dark:text-sky-400",amber:"text-amber-600 dark:text-amber-400",emerald:"text-emerald-600 dark:text-emerald-400",fuchsia:"text-fuchsia-600 dark:text-fuchsia-400",violet:"text-violet-600 dark:text-violet-400",rose:"text-rose-600 dark:text-rose-400"},r=e,i=t,{activeSurface:c}=Kt(),d=B(null),f=B(!1),v=O(()=>r.node.editSurface??r.inheritedEditSurface??null),x=O(()=>r.node.editSurface?d.value:r.inheritedAnchorEl??null),g=O(()=>{const z=r.node.editSurface;return z?.entityType!=="prompt"||r.node.kind!=="prompt"&&r.node.toolKind!=="prompt"?null:{entityType:"prompt",entityId:z.entityId,section:"prompt"}}),u=O(()=>!!r.node.children&&r.node.children.length>0),y=O(()=>u.value||r.node.collapsibleBody===!0),S=O(()=>!!r.node.isRoot),_=O(()=>S.value?!0:!r.collapsed.has(r.node.id)),M=O(()=>r.selectedCanvasNodeId===r.node.canvasNodeId);function k(z){if(!z)return!1;const U=[...r.node.children||[]];for(;U.length>0;){const J=U.pop();if(J.cardBacked===!0&&J.canvasNodeId===z)return!0;J.children?.length&&U.push(...J.children)}return!1}const N=O(()=>d.value&&c.value?.anchorEl===d.value?!0:!r.node.editSurface||r.node.anchorOnlyEditSurface?!1:jt(r.node.editSurface,c.value?.target)?!0:c.value?!1:r.node.cardBacked===!0&&M.value&&!k(r.selectedCanvasNodeId)),L=O(()=>c.value||r.node.anchorOnlyEditSurface?!1:jt(r.node.editSurface,r.hoveredEditTarget)?!0:r.hoveredEditTarget?!1:r.node.cardBacked===!0&&r.hoveredCanvasNodeId===r.node.canvasNodeId&&!k(r.hoveredCanvasNodeId??null)),P=O(()=>jt(c.value?.target,g.value)),ne=O(()=>S.value?0:Math.max(0,r.depth-1)),q=O(()=>ne.value*Xc),D=O(()=>{const z=r.node;return(z.kind==="tools"||z.kind==="tool")&&z.toolKind?n[z.toolKind]||sn:z.kind==="side"&&z.detail==="Human"?aa:o[z.kind]||$t}),C=O(()=>{const z=r.node;return z.kind!=="agent"&&z.kind!=="subagent"?null:z.avatarSrc?z.avatarSrc:z.avatarSeed?na(z.avatarSeed):null}),T=O(()=>{const z=r.node;return z.kind==="agent"?"text-neutral-700 dark:text-neutral-200":z.kind==="side"?z.id.endsWith("side-a")?"text-sky-600 dark:text-sky-400":"text-amber-600 dark:text-amber-400":z.kind==="prompt"&&z.tone?s[z.tone]:z.kind==="prompt"||z.kind==="model"?"text-neutral-500 dark:text-neutral-400":z.kind==="subagent"?"text-emerald-600 dark:text-emerald-400":z.kind==="hook"||z.kind==="hooks"?"text-neutral-500 dark:text-neutral-400":(z.kind==="tool"||z.kind==="tools")&&z.toolKind?a[z.toolKind]||"text-neutral-500":"text-neutral-500 dark:text-neutral-400"}),b=O(()=>{const z=r.node;return z.kind==="agent"||z.kind==="subagent"||z.kind==="tool"&&z.toolKind==="handoff"}),A=O(()=>{const z=["group relative flex items-start gap-1.5 px-2 cursor-pointer select-none transition-colors"];return z.push(b.value?"py-[6px] text-[12.5px]":"py-[4px]"),b.value&&z.push("relative z-[1] structure-row-agent-bg"),N.value?z.push("rounded-r-md structure-row-active"):L.value?z.push("rounded-md structure-row-hover"):b.value?z.push("rounded-md"):z.push("rounded-md agents-surface-hover"),r.node.virtual&&!M.value&&!N.value&&z.push("text-neutral-600 dark:text-neutral-400"),z.join(" ")}),G=O(()=>{const z=r.node,U=["truncate"],J=z.kind==="tool"&&z.toolKind==="handoff",le=z.kind==="variable"||z.kind==="schema"&&z.hideIcon===!0||z.kind==="tool"&&!J;return z.cardBacked?U.push(le?"font-semibold text-neutral-900 dark:text-neutral-50":"font-medium text-neutral-900 dark:text-neutral-50"):U.push("font-normal text-neutral-700 dark:text-neutral-300"),le&&U.push("font-mono text-[11.5px]"),U.join(" ")});function Y(z){return["rounded px-1.5 py-px text-[9px] font-semibold lowercase tracking-wide",z.mono?"font-mono":"",l[z.tone||"neutral"]].join(" ")}function H(z){return z.active===!1?"text-neutral-400 dark:text-neutral-600":s[z.tone||"neutral"]||s.neutral}function E(z){z.stopPropagation(),!S.value&&i("toggle",r.node.id)}function j(z){z.stopPropagation(),F()}function F(){if(f.value){f.value=!1;return}if(v.value&&x.value){i("edit",v.value,x.value,r.node.canvasNodeId,r.node.editData);return}i("select",r.node.canvasNodeId),!S.value&&y.value&&!_.value&&i("toggle",r.node.id)}function X(z){z.key!=="Enter"&&z.key!==" "||(z.preventDefault(),z.stopPropagation(),F())}function he(z){z.button===0&&(!v.value||!x.value||(z.stopPropagation(),f.value=!0,i("edit",v.value,x.value,r.node.canvasNodeId,r.node.editData)))}function se(){i("hover",r.node.canvasNodeId,v.value)}function fe(z){z.stopPropagation();const U=g.value,J=z.currentTarget;!U||!(J instanceof HTMLElement)||i("edit",U,J,r.node.canvasNodeId,r.node.editData)}return(z,U)=>{const J=At("StructureTreeRow",!0),le=Jr("auto-animate");return p(),w("div",Lc,[m("div",{class:"mx-1",style:De({paddingLeft:`${q.value}px`})},[N.value?(p(),w("div",{key:0,class:ue(["pointer-events-none absolute bottom-0 top-0 z-[2] w-px bg-accent-500"]),style:De({left:`${q.value+5}px`})},null,4)):W("",!0),m("div",{ref_key:"rowRef",ref:d,class:ue(A.value),role:"button",tabindex:"0",onClick:j,onKeydown:X,onPointerdown:he,onMouseenter:se},[y.value&&!S.value?(p(),ce(I(yo),{key:0,class:ue(["mt-[2px] h-3 w-3 shrink-0 text-neutral-400 transition-transform",_.value?"rotate-90":""]),onClick:E},null,8,["class"])):S.value?W("",!0):(p(),w("span",Pc)),C.value?(p(),w("img",{key:2,src:C.value,alt:"",class:"mt-[1px] h-4 w-4 shrink-0 rounded object-cover"},null,8,Rc)):e.node.hideIcon?W("",!0):(p(),ce(lt(D.value),{key:3,class:ue(["mt-[1px] h-3.5 w-3.5 shrink-0",T.value])},null,8,["class"])),m("div",Oc,[m("div",Dc,[m("span",{class:ue(G.value)},K(e.node.label),3),e.node.required?(p(),w("span",Bc," * ")):W("",!0),g.value?(p(),ce(I(ss),{key:1,content:"Edit prompt text",position:"right",disabled:P.value},{default:ye(()=>[m("button",{type:"button",class:ue(["mt-[-2px] inline-flex h-5 w-5 shrink-0 cursor-pointer items-center justify-center rounded text-neutral-400 transition-colors hover:text-neutral-900 dark:text-neutral-500 dark:hover:text-neutral-100",P.value?"text-accent-700 dark:text-accent-300":""]),"aria-label":"Edit prompt text",onClick:fe,onPointerdown:U[0]||(U[0]=Me(()=>{},["stop"])),onKeydown:[je(Me(fe,["prevent","stop"]),["enter"]),je(Me(fe,["prevent","stop"]),["space"])],onMouseenter:U[1]||(U[1]=Me(ie=>i("hover",e.node.canvasNodeId,g.value),["stop"])),onMouseleave:U[2]||(U[2]=Me(ie=>i("hover",e.node.canvasNodeId,v.value),["stop"]))},[Q(I(Lo),{class:"h-3.5 w-3.5"})],42,Vc)]),_:1},8,["disabled"])):W("",!0),e.node.detail?(p(),w("span",Uc,K(e.node.detail),1)):W("",!0)]),(!e.node.collapsibleBody||_.value)&&e.node.badges&&e.node.badges.length>0?(p(),w("div",Hc,[(p(!0),w($e,null,Ie(e.node.badges,ie=>(p(),w("span",{key:ie.label,class:ue(Y(ie))},K(ie.label),3))),128))])):W("",!0),(!e.node.collapsibleBody||_.value)&&e.node.description?(p(),w("div",{key:1,class:ue(["mt-1 text-[10.5px] leading-relaxed text-neutral-500 dark:text-neutral-400",e.node.virtual&&!M.value?"opacity-90":""])},K(e.node.description),3)):W("",!0),(!e.node.collapsibleBody||_.value)&&e.node.metaRows&&e.node.metaRows.length>0?(p(),w("dl",zc,[(p(!0),w($e,null,Ie(e.node.metaRows,ie=>(p(),w($e,{key:ie.label},[m("dt",jc,K(ie.label),1),m("dd",{class:ue(["truncate text-right",ie.mono!==!1?"font-mono":"",H(ie)])},K(ie.value),3)],64))),128))])):W("",!0)])],34)],4),u.value?Zr((p(),w("div",Fc,[_.value?(p(!0),w($e,{key:0},Ie(e.node.children,ie=>(p(),ce(J,{key:ie.id,node:ie,depth:e.depth+1,collapsed:e.collapsed,"selected-canvas-node-id":e.selectedCanvasNodeId,"hovered-canvas-node-id":e.hoveredCanvasNodeId,"hovered-edit-target":e.hoveredEditTarget,"inherited-edit-surface":v.value,"inherited-anchor-el":x.value,onSelect:U[3]||(U[3]=ve=>i("select",ve)),onEdit:U[4]||(U[4]=(ve,ee,Z,h)=>i("edit",ve,ee,Z,h)),onHover:U[5]||(U[5]=(ve,ee)=>i("hover",ve,ee)),onToggle:U[6]||(U[6]=ve=>i("toggle",ve))},null,8,["node","depth","collapsed","selected-canvas-node-id","hovered-canvas-node-id","hovered-edit-target","inherited-edit-surface","inherited-anchor-el"]))),128)):W("",!0),_.value&&!S.value?(p(),w("div",{key:1,class:"pointer-events-none absolute bottom-0 top-0 w-px bg-neutral-200 dark:bg-neutral-800",style:De({left:`${q.value+14}px`})},null,4)):W("",!0)])),[[le,{duration:60,easing:"ease-out"}]]):W("",!0)])}}});function Yc(e,t,n){let o=!1;function a(l){if(l.defaultCollapsed&&!n.has(l.id)&&(n.add(l.id),t.has(l.id)||(t.add(l.id),o=!0)),l.children)for(const s of l.children)a(s)}return a(e),o}const qc={class:"structure-tree flex h-full flex-col overflow-hidden border-r border-neutral-200 dark:border-neutral-800"},Gc={key:0,class:"px-3 py-4 text-xs text-neutral-400 dark:text-neutral-500"},Wc=_e({__name:"StructureTree",props:{root:{},selectedCanvasNodeId:{},hoveredCanvasNodeId:{},hoveredEditTarget:{}},emits:["select","edit","hover"],setup(e,{emit:t}){const n=e,o=t,a=B(new Set),l=B(null),s=B(new Set);function r(d){return Yc(d,a.value,s.value)}Le(()=>n.root,d=>{d&&(d.id!==l.value&&(a.value=new Set,s.value=new Set,l.value=d.id),r(d)&&(a.value=new Set(a.value)))},{immediate:!0});function i(d){const f=new Set(a.value);f.has(d)?f.delete(d):f.add(d),a.value=f,s.value=new Set(s.value).add(d)}const c=O(()=>!!n.root);return(d,f)=>(p(),w("div",qc,[m("div",{class:"flex-1 overflow-y-auto py-1.5 text-[12px]",onMouseleave:f[3]||(f[3]=v=>o("hover",null,null))},[c.value?(p(),ce(Kc,{key:1,node:e.root,depth:0,collapsed:a.value,"selected-canvas-node-id":e.selectedCanvasNodeId,"hovered-canvas-node-id":e.hoveredCanvasNodeId,"hovered-edit-target":e.hoveredEditTarget,onSelect:f[0]||(f[0]=v=>o("select",v)),onEdit:f[1]||(f[1]=(v,x,g,u)=>o("edit",v,x,g,u)),onHover:f[2]||(f[2]=(v,x)=>o("hover",v,x)),onToggle:i},null,8,["node","collapsed","selected-canvas-node-id","hovered-canvas-node-id","hovered-edit-target"])):(p(),w("div",Gc," Select an agent to view its structure. "))],32)]))}});function Ke(e,t,n){return{entityType:"prompt",entityId:e,section:t,defaultToolTab:n}}function gn(e,t){return{entityType:"agent",entityId:e,section:t}}function Qc(e){return{entityType:"model",entityId:e.id}}function Jc(e){let t=0;function n(o){for(const a of o)t+=1,a.children?.length&&n(a.children)}return n(e),t}function Ho(e,t,n){return e.map(o=>({id:`${n}${o.id}`,kind:"schema",label:o.label,detail:o.value||void 0,required:o.required,canvasNodeId:t,virtual:!0,hideIcon:!0,defaultCollapsed:(o.children?.length??0)>0?!o.defaultExpanded:void 0,children:o.children?.length?Ho(o.children,t,`${n}${o.id}__`):void 0}))}function ha(e,t,n,o){const a=ma(e);return{id:`${n}schema`,kind:"schema",label:"Input schema",detail:a.length>0?`${Jc(a)}`:"None",canvasNodeId:t,virtual:!0,editSurface:o,defaultCollapsed:a.length>0,children:a.length>0?Ho(a,t,`${n}schema__`):void 0}}function zo(e){const t=[];if(e.expose_as_tool&&t.push({label:"tool",tone:"neutral",mono:!0}),e.type==="dual_ai"){const o=e.max_session_turns;t.push({label:typeof o=="number"?`max ${o} session turn${o===1?"":"s"}`:"unlimited session turns",tone:"neutral",mono:!0})}const n=Object.keys(e.env||{}).filter(o=>o.trim().length>0);return n.length>0&&t.push({label:`${n.length} env override${n.length===1?"":"s"}`,tone:"sky",mono:!0}),t}function kn(e,t,n,o=[],a){const l=new Set(o);return{id:`${n}variables`,kind:"variables",label:"Variables",detail:e.length>0?`${e.length}`:"None",canvasNodeId:t,virtual:!0,editSurface:a,defaultCollapsed:e.length>0,children:e.length>0?e.map(s=>{const r=[];return s.required&&r.push({label:"required",tone:"rose",mono:!0}),s.scoped&&r.push({label:"scoped",tone:"violet",mono:!0}),l.has(s.name)&&r.push({label:"env",tone:"sky",mono:!0}),{id:`${n}variable-${s.name}`,kind:"variable",label:s.name,detail:s.type,badges:r.length>0?r:void 0,required:s.required,canvasNodeId:t,virtual:!0,hideIcon:!0}}):void 0}}function jo(e,t,n){return e.length===0?null:{id:`${n}hooks`,kind:"hooks",label:"Hooks",detail:`${e.length}`,canvasNodeId:t,virtual:!0,children:e.map((o,a)=>({id:`${n}hook-${a}-${o.id}`,kind:"hook",label:o.hook,detail:o.id!==o.hook?o.id:void 0,canvasNodeId:t,virtual:!0,hideIcon:!0}))}}function wt(e){const t=[];return typeof e.config.blocking=="boolean"&&t.push({label:e.config.blocking?"blocking":"background",tone:"neutral",mono:!0}),e.config.optional&&t.push({label:"optional",tone:"violet",mono:!0}),e.config.immediate&&t.push({label:"immediate",tone:"amber",mono:!0}),t}function Fo(e,t,n,o,a){const l=Ke(o,"behavior"),s=Ro(e,a).map(r=>({id:`${n}${r.key==="tool"?"tooling":r.key}`,kind:"section",label:r.label,canvasNodeId:t,virtual:!0,hideIcon:!0,editSurface:l,metaRows:r.rows.map(Zc)}));return{id:`${n}config`,kind:"config",label:"Prompt Config",canvasNodeId:t,virtual:!0,editSurface:l,defaultCollapsed:!0,children:s}}function Zc(e){return e.kind==="toggle"?{label:e.label,value:e.enabled?"on":"off",active:e.enabled,tone:"emerald",mono:!0}:{label:e.label,value:e.value,active:e.active,mono:!0}}function Xo(e,t,n,o,a){if(!e.model&&!e.modelName)return null;const l=[];if((e.model?.providerTools||[]).length>0){const i=e.model.providerTools.slice(0,2).join(", "),c=e.model.providerTools.length>2?", …":"";l.push({label:"Provider tools",value:i+c,active:!0,mono:!0})}const s=e.modelActual||e.model?.model||void 0,r=s&&s!==(e.modelName||e.model?.name||"Model")?s:void 0;return{id:`${o}model`,kind:"model",label:e.modelName||e.model?.name||"Model",detail:r,metaRows:l.length>0?l:void 0,canvasNodeId:e.model?To(t,e.model.id):n,virtual:!e.model,cardBacked:!!e.model,editSurface:e.model?Qc(e.model):a,editData:e.model||void 0}}function ef(e,t,n,o){return{id:`${n}config`,kind:"config",label:"Side Config",canvasNodeId:t,virtual:!0,defaultCollapsed:!0,collapsibleBody:!0,editSurface:o,metaRows:[{label:"Stop on response",value:e.stopOnResponse?"On":"Off",active:e.stopOnResponse,tone:e.id==="a"?"sky":"amber",mono:!0},{label:"Stop tool",value:e.stopTool||"Off",active:!!e.stopTool,tone:e.id==="a"?"sky":"amber",mono:!0},{label:"Max steps",value:typeof e.maxSteps=="number"?String(e.maxSteps):"Unlimited",active:typeof e.maxSteps=="number",tone:e.id==="a"?"sky":"amber",mono:!0},{label:"End conversation tool",value:e.sessionStopTool||"Off",active:!!e.sessionStopTool,tone:e.id==="a"?"sky":"amber",mono:!0}]}}function tf(e,t,n,o){const a={};for(const r of e){const i=r.kind==="provider"||r.kind==="mcp"?"tool":r.kind;(a[i]||=[]).push(r)}const s=[{key:"tool",label:"Functions"},{key:"prompt",label:"Sub-prompts"},{key:"handoff",label:"Handoffs"},{key:"subagent",label:"Sub-agents"}].map(({key:r,label:i})=>{const c=a[r]||[],d=r==="prompt"?"sub-prompts":r==="handoff"?"handoffs":r==="subagent"?"sub-agents":"functions";return{id:`${n}group-${r}`,kind:"tools",toolKind:r,label:i,detail:`${c.length}`,canvasNodeId:t,virtual:!0,editSurface:Ke(o,"tools",d),children:c.length>0?c.map((f,v)=>({id:`${n}${r}-${v}-${f.name}`,kind:f.kind==="subagent"?"subagent":"tool",label:f.displayName||f.name,detail:f.kind==="prompt"&&(f.resolvedModel?.name||f.model)||void 0,badges:wt(f),canvasNodeId:t,virtual:!0,toolKind:f.kind,hideIcon:!0})):void 0}});return[{id:`${n}tools`,kind:"tools",label:"Tools",detail:`${e.length}`,canvasNodeId:t,virtual:!0,editSurface:Ke(o,"tools","functions"),anchorOnlyEditSurface:!0,children:s}]}function nf(e,t,n){const o=[],a=ha(e.schema,t,`${n}args__`);return a.label="Args",a.defaultCollapsed=(a.children?.length??0)>0?!0:void 0,(a.children?.length??0)>0&&o.push(a),e.variables.length>0&&o.push(kn(e.variables,t,`${n}detail__`)),o}function af(e,t,n,o,a){const l=[],s=t.prompt.name,r=Ke(s,"basic"),i=Xo({model:t.model,modelName:t.model?.name||t.prompt.model_name,modelProvider:t.model?.provider||t.prompt.model_provider,modelActual:t.model?.model||t.prompt.model_id},o,n,`${a}prompt__`,r);i&&l.push(i),l.push(Fo(t.prompt,n,`${a}prompt__`,s,e.config)),l.push(ha(t.prompt.required_schema,n,`${a}prompt__`,Ke(s,"schema"))),l.push(kn(ra(t.prompt),n,`${a}prompt__`,sa(t.prompt),Ke(s,"variables"))),l.push(...tf(t.nestedTools,n,`${a}prompt__`,s));const c=jo(t.prompt.hooks.map(d=>({id:d,hook:d})),n,`${a}prompt__`);return c&&l.push(c),l}function of(e,t,n){return[{id:"a",label:e.side_a_label||"Side A",promptName:e.side_a_agent_prompt,stopOnResponse:e.side_a_stop_on_response,stopTool:e.side_a_stop_tool,maxSteps:e.side_a_max_steps,sessionStopTool:e.side_a_session_stop_tool},{id:"b",label:e.side_b_label||(e.type==="dual_ai"?"Side B":"Human"),promptName:e.side_b_agent_prompt,stopOnResponse:e.side_b_stop_on_response,stopTool:e.side_b_stop_tool,maxSteps:e.side_b_max_steps,sessionStopTool:e.side_b_session_stop_tool}].map(a=>({id:`${n}side-${a.id}`,kind:"side",label:a.label,detail:a.promptName||"No prompt",canvasNodeId:t,virtual:!0,editSurface:gn(e.name,a.id==="a"?"side-a":"side-b"),metaRows:a.promptName?[{label:"Stop on response",value:a.stopOnResponse?"On":"Off",active:a.stopOnResponse,tone:a.id==="a"?"sky":"amber",mono:!0},{label:"Stop tool",value:a.stopTool||"Off",active:!!a.stopTool,tone:a.id==="a"?"sky":"amber",mono:!0},{label:"Max steps",value:typeof a.maxSteps=="number"?String(a.maxSteps):"Unlimited",active:typeof a.maxSteps=="number",tone:a.id==="a"?"sky":"amber",mono:!0},{label:"End conversation tool",value:a.sessionStopTool||"Off",active:!!a.sessionStopTool,tone:a.id==="a"?"sky":"amber",mono:!0}]:void 0}))}function rf(e,t,n,o,a,l,s){if(!e.prompt)return null;const r=e.prompt.name,i=`${l}prompt__`,c=[],d=Ke(r,"basic"),f=Ke(r,"schema"),v=Ke(r,"variables"),x=Ke(r,"tools"),g=Xo({model:e.model,modelName:e.model?.name||e.prompt.model_name,modelProvider:e.model?.provider||e.prompt.model_provider,modelActual:e.model?.model||e.prompt.model_id},o,a,i,d);g&&c.push(g),c.push(Fo(e.prompt,a,i,r)),c.push(ha(e.prompt.required_schema,a,i,f)),c.push(kn(e.variables,a,i,e.variableEnvNames||[],v));const u={};for(const M of e.tools){const k=M.kind==="provider"||M.kind==="mcp"?"tool":M.kind;(u[k]||=[]).push(M)}const y=new Map;e.tools.forEach((M,k)=>y.set(M,k));const S=[{key:"tool",label:"Functions"},{key:"prompt",label:"Sub-prompts"},{key:"handoff",label:"Handoffs"},{key:"subagent",label:"Sub-agents"}];c.push({id:`${i}tools`,kind:"tools",label:"Tools",detail:`${e.tools.length}`,canvasNodeId:a,virtual:!0,editSurface:x,children:S.map(({key:M,label:k})=>{const N=u[M]||[],L=M==="prompt"?"sub-prompts":M==="handoff"?"handoffs":M==="subagent"?"sub-agents":"functions";return{id:`${i}group-${M}`,kind:"tools",toolKind:M,label:k,detail:`${N.length}`,canvasNodeId:a,virtual:!0,editSurface:Ke(r,"tools",L),children:N.length>0?N.map(P=>sf(i,n,o,e,P,y.get(P),r,t,s)):void 0}})});const _=jo(e.hooks,a,i);return _&&c.push(_),{id:`${l}prompt`,kind:"prompt",tone:e.id==="a"?"sky":"amber",label:e.prompt.name,canvasNodeId:a,virtual:!0,cardBacked:!0,editSurface:d,children:c}}function sf(e,t,n,o,a,l,s,r,i){const d=a.kind==="subagent"||a.kind==="handoff"||a.kind==="prompt"?ln(t,o.id,l):ia(t,o.id),f=`${e}tool-${o.id}-${l}-${a.name}`,v=a.kind==="prompt"?"sub-prompts":a.kind==="handoff"?"handoffs":a.kind==="subagent"?"sub-agents":"functions",x=Ke(s,"tools",v);if(a.kind==="subagent"&&r[a.name]){const g=r[a.name],u=Mo(t,o.id,l,a.kind,a.name),y=a.config.resumable,S=wt(a);return y&&typeof y=="object"&&S.push({label:y.max_instances===null||(y.max_instances??0)>1?"multi":"single",tone:"sky",mono:!0}),{id:f,kind:"subagent",label:g.agent.title||a.displayName,detail:a.name,badges:S.length>0?S:void 0,canvasNodeId:fn(u),toolKind:a.kind,avatarSrc:g.agent.icon||void 0,avatarSeed:g.agent.name,cardBacked:!0,editSurface:x,children:Ko(g.agent,g.sides,r,u,n,`${f}__`,i).children}}if(a.kind==="prompt"){const g=i.promptTools[a.name];return{id:f,kind:"tool",label:a.displayName||a.name,detail:g?.model?.name||g?.prompt.model_name||a.model||void 0,badges:wt(a),canvasNodeId:d,toolKind:a.kind,cardBacked:!0,editSurface:Ke(a.name,"basic"),children:g?af(a,g,d,n,`${f}__`):void 0,hideIcon:!0}}if(a.kind==="handoff"){const g=i.handoffs[a.name];return{id:f,kind:"tool",label:g?.title||a.displayName||a.name,detail:g?.name||void 0,badges:g?zo(g):wt(a),canvasNodeId:d,toolKind:a.kind,defaultCollapsed:g?!0:void 0,cardBacked:!0,editSurface:x,children:g?of(g,d,`${f}__`):void 0,hideIcon:!0}}if(a.kind==="tool"||a.kind==="provider"||a.kind==="mcp"){const g=i.functionTools[a.name];return{id:f,kind:"tool",label:a.displayName||a.name,badges:wt(a),canvasNodeId:d,toolKind:a.kind,defaultCollapsed:g?!0:void 0,cardBacked:!0,editSurface:x,children:g?nf(g,d,`${f}__`):void 0,hideIcon:!0}}return{id:f,kind:"tool",label:a.displayName||a.name,badges:wt(a),canvasNodeId:d,toolKind:a.kind,hideIcon:!0,editSurface:x}}function lf(e,t,n,o,a,l,s){const r=ia(o,t.id),i=`${l}side-${t.id}__`,c=gn(e,t.id==="a"?"side-a":"side-b"),d=[];if(t.mode==="human")return{id:`${l}side-${t.id}`,kind:"side",label:t.label,detail:"Human",canvasNodeId:r,cardBacked:!0,editSurface:c,children:[]};d.push(ef(t,r,i,c));const f=rf(t,n,o,a,r,i,s);return f&&d.push(f),{id:`${l}side-${t.id}`,kind:"side",label:t.label,canvasNodeId:r,editSurface:c,children:d}}function Ko(e,t,n,o,a,l,s,r=!1){const i=fn(o),c=gn(e.name,"variables"),d=[kn(e._variables||[],i,`${l}agent__`,Object.keys(e.env||{}),c),...t.map(f=>lf(e.name,f,n,o,a,l,s))];return{id:`${l}agent`,kind:"agent",label:e.title||e.name,detail:e.name,badges:zo(e),canvasNodeId:i,avatarSrc:e.icon||void 0,avatarSeed:e.name,isRoot:r||void 0,cardBacked:!0,editSurface:gn(e.name,"identity"),children:d}}function df(e,t,n,o){const a=$o(e.id||e.name),l=`${e.id||e.name}__`;return Ko(e,t,n,a,a,l,o,!0)}function uf(e,t){const n=new Set,o=new Set,a=new Set,l=new Set;function s(r){for(const i of r)for(const c of i.tools)if(c.kind==="tool"&&n.add(c.name),c.kind==="prompt"&&o.add(c.name),c.kind==="handoff"&&a.add(c.name),c.kind==="subagent"){const d=t[c.name];if(!d||l.has(d.agentName))continue;l.add(d.agentName),s(d.sides)}}return s(e),{functionTools:[...n].sort(),promptTools:[...o].sort(),handoffs:[...a].sort()}}function cf(e,t,n,o,a,l){const s=B({functionTools:{},promptTools:{},handoffs:{}});let r=0;return Le(()=>e.value?{agentId:e.value.id||e.value.name,plan:uf(t.value,n.value),modelKeys:Object.keys(o.value),toolKeys:Object.keys(a.value),refreshEpoch:l?.value??0}:null,async i=>{const c=e.value;if(!i||!c){s.value={functionTools:{},promptTools:{},handoffs:{}};return}const d=++r,f=await Ad(i.plan,{toolsCatalog:a.value,models:o.value});d===r&&(s.value=f)},{immediate:!0}),O(()=>{const i=e.value;return i?df(i,t.value,n.value,s.value):null})}const Yo=_e({__name:"ExtractCopyToggle",props:{value:{},disabled:{type:Boolean}},emits:["update:value"],setup(e,{emit:t}){const n=t,o=a=>{n("update:value",a)};return(a,l)=>{const s=At("FormKit");return p(),ce(s,{type:"toggle",value:e.value,"on-value":"extract","off-value":"copy","on-value-label":"extract","off-value-label":"copy",disabled:e.disabled,classes:{outer:"$remove:mb-4",wrapper:"$remove:items-center flex-row-reverse justify-end items-center",inner:"h-5",track:"h-5 w-10 rounded-full",thumb:"h-4 w-4",valueLabel:"text-xs text-neutral-600 dark:text-neutral-400 mr-2 flex items-center font-normal"},onInput:o},null,8,["value","disabled"])}}}),ff={class:"font-mono text-sm"},mf={class:"flex items-center gap-2 py-1.5"},hf={class:"text-neutral-600 dark:text-neutral-400"},pf={class:"ml-auto"},qo=_e({name:"TreeChildren",props:{children:{type:Array,required:!0},getSelection:{type:Function,required:!0},setSelection:{type:Function,required:!0},isShared:{type:Function,required:!0},getTypeColor:{type:Function,required:!0}},setup(e){return()=>e.children.length===0?null:Ne("div",{class:"ml-4"},e.children.map((t,n)=>Ne("div",{class:"relative",key:t.uid},[n<e.children.length-1?Ne("div",{class:"absolute left-0 top-0 bottom-0 border-l border-neutral-300 dark:border-neutral-700"}):Ne("div",{class:"absolute left-0 top-0 h-3 border-l border-neutral-300 dark:border-neutral-700"}),Ne("div",{class:"absolute left-0 top-3 w-4 border-t border-neutral-300 dark:border-neutral-700"}),Ne("div",{class:"pl-5"},[Ne("div",{class:"flex items-center gap-2 py-1.5"},[Ne("span",{class:"text-neutral-600 dark:text-neutral-400"},t.name),Ne(It,{variant:e.getTypeColor(t.type),size:"sm"},()=>t.type),e.isShared(t)?Ne("span",{class:"text-xs text-amber-600 dark:text-amber-400",title:`Used by: ${t.sharedWith.join(", ")}`},`(used in ${t.sharedWith.length} other${t.sharedWith.length>1?"s":""})`):null,t.isDuplicate?null:Ne("div",{class:"ml-auto"},[Ne(Yo,{value:e.getSelection(t),disabled:e.isShared(t),"onUpdate:value":o=>e.setSelection(t,o),title:e.isShared(t)?"Cannot extract items shared with other agents":""})])]),t.children.length>0?Ne(qo,{children:t.children,getSelection:e.getSelection,setSelection:e.setSelection,isShared:e.isShared,getTypeColor:e.getTypeColor}):null])])))}}),vf=_e({__name:"DependencyTree",props:{analysis:{},selections:{}},emits:["update:selection"],setup(e,{emit:t}){const n=e,o=t,a=O(()=>{const d=n.analysis,f=[];let v=0;const x=(M,k)=>{for(const N of M){const L=`${k}:${N.name}`;f.push({...N,type:k,uid:`${L}:${v++}`})}};x(d.constituents.agents,"agent"),x(d.constituents.prompts,"prompt"),x(d.constituents.tools,"tool"),x(d.constituents.models,"model"),x(d.constituents.hooks,"hook");const g=new Map,u=`agent:${d.agent}`;for(const M of f){const k=M.parentKey||u;`${M.type}:${M.name}`===u&&!M.parentKey||(g.has(k)||g.set(k,[]),g.get(k).push(M))}const y=new Set,S=M=>{const k=`${M.type}:${M.name}`,N=y.has(k);y.add(k);const L=[],P=g.get(k)||[];for(const ne of P)L.push(S(ne));return{name:M.name,type:M.type,filePath:M.filePath,sharedWith:M.sharedWith,discoveredVia:M.discoveredVia,children:L,uid:M.uid,isDuplicate:N}},_=f.find(M=>M.type==="agent"&&M.name===d.agent&&!M.parentKey);return _?S(_):{name:d.agent,type:"agent",filePath:"",sharedWith:[],discoveredVia:"static",children:[],uid:"root",isDuplicate:!1}}),l=d=>`${d.type}:${d.name}`,s=d=>n.selections.get(l(d))||"extract",r=(d,f)=>{o("update:selection",l(d),f)},i=d=>d.sharedWith.length>0,c=d=>{switch(d){case"agent":return"accent";case"prompt":return"secondary";case"tool":return"success";case"model":return"warning";case"hook":return"default"}};return(d,f)=>(p(),w("div",ff,[m("div",mf,[m("span",hf,K(a.value.name),1),Q(I(It),{variant:c(a.value.type),size:"sm"},{default:ye(()=>[pe(K(a.value.type),1)]),_:1},8,["variant"]),m("div",pf,[Q(Yo,{value:s(a.value),"onUpdate:value":f[0]||(f[0]=v=>r(a.value,v))},null,8,["value"])])]),(p(),ce(lt(I(qo)),{children:a.value.children,"get-selection":s,"set-selection":r,"is-shared":i,"get-type-color":c},null,8,["children"]))]))}}),gf={key:0,class:"flex items-center justify-center py-12"},xf={key:1,class:"py-4"},yf={key:2,class:"py-4 space-y-4"},bf={class:"space-y-2"},kf={class:"text-sm opacity-80"},wf={class:"text-sm opacity-80"},$f={class:"space-y-4"},Mf={class:"grid grid-cols-2 gap-4"},Tf={class:"col-span-2"},Cf={class:"col-span-2"},Sf={class:"col-span-2"},_f={key:0,class:"mt-3 space-y-3"},If={class:"flex gap-2 border-b border-neutral-200 dark:border-neutral-700"},Ef={key:0},Af=["innerHTML"],Nf={class:"space-y-4"},Lf={class:"list-disc list-inside space-y-1"},Pf={class:"border border-neutral-200 dark:border-neutral-700 rounded-lg p-4 bg-neutral-50 dark:bg-neutral-900/50"},Rf={class:"flex justify-between"},Of=_e({__name:"PackModal",props:{modelValue:{type:Boolean},agent:{}},emits:["update:modelValue","packed"],setup(e,{emit:t}){cn.setOptions({gfm:!0,breaks:!0});const n=[{value:"MIT",label:"MIT"},{value:"Apache-2.0",label:"Apache 2.0"},{value:"ISC",label:"ISC"},{value:"GPL-3.0",label:"GPL 3.0"},{value:"BSD-3-Clause",label:"BSD 3-Clause"},{value:"Unlicensed",label:"Unlicensed / Proprietary"}],o=e,a=t,l=O({get:()=>o.modelValue,set:H=>a("update:modelValue",H)}),s=B(null),r=B(!1),i=B(!1),c=B(null),d=B(null);let f=null;const v=B(""),x=B("1.0.0"),g=B("MIT"),u=B(""),y=B(null),S=B(""),_=B("edit"),M=B(!1),k=O(()=>S.value?cn(S.value):""),N=B(new Map);Le(()=>o.modelValue,async H=>{H&&o.agent?await Promise.all([P(),ne()]):L()});const L=()=>{Y(),s.value=null,c.value=null,d.value=null,N.value=new Map,v.value="",x.value="1.0.0",g.value="MIT",u.value="",S.value="",_.value="edit",M.value=!1,st(y)},P=async()=>{if(o.agent){r.value=!0,c.value=null;try{const H=await fetch(Ve(`/api/pack/${o.agent.id}/analyze`)),E=await H.json();if(!H.ok){c.value=E.error||"Failed to analyze agent";return}if(s.value=E,E.generatedReadme)S.value=E.generatedReadme;else{const j=q(o.agent?.id||"agent");S.value=D(j,o.agent?.id||"agent",E.agentDescription)}T(E)}catch(H){c.value=H instanceof Error?H.message:"Failed to analyze agent"}finally{r.value=!1}}},ne=async()=>{if(o.agent)try{const H=await fetch(Ve(`/api/pack/${o.agent.id}/metadata`));if(H.ok){const E=await H.json();v.value=E.packageName,x.value=C(E.version),g.value=E.license||"MIT",u.value=E.licenseOwner||""}else v.value=q(o.agent.id),x.value="1.0.0",g.value="MIT",u.value=""}catch{v.value=q(o.agent?.id||"agent"),x.value="1.0.0",g.value="MIT",u.value=""}},q=H=>`standardagent-${H.toLowerCase().replace(/_/g,"-")}`,D=(H,E,j)=>`# ${H}
|
|
1
|
+
import{d as _e,c as O,b as $,e as p,m as ue,g as lo,r as B,Y as xn,X as Zn,w as Pe,h as He,t as Yr,A as nt,f as h,o as ea,a as Et,K as Me,j as Q,q as W,J as I,u as K,F as $e,l as Ie,s as pe,z as ce,Z as io,k as ye,ac as qr,ad as Gr,B as lt,O as At,n as De,P as Fe,V as Wr,R as Pa,a3 as Qr,U as Ln,ae as Jr,x as Zr,af as Ne,_ as ta,ag as uo,ah as co,W as La,ai as es,aj as ts,ak as Ra}from"./vue.js";import{I as tt,f as ns,h as na,i as vt,j as as,u as Kt,k as aa,m as fo,n as $t,o as oa,a as Ve,p as Ft,q as mo,t as ho,v as os,w as po,x as rs,y as ss,z as Oa,A as ls,B as ht,C as ze,_ as St,d as st,e as _t,D as is,E as ds,F as Rn,G as us,T as cs}from"./index.js";import{f as Qe,b as at,a as ot,s as fs,u as ms,c as hs,d as vo,g as ra,e as sa,A as go,_ as ps,h as Da,i as vs,C as gs}from"./ThreadInspectorPane.vue_vue_type_script_setup_true_lang.js";import{I as xo}from"./plus.js";import{I as On,a as Dn,b as Bn,c as xs,d as yo}from"./chevron-right.js";import{I as sn,a as Yn,P as ys}from"./PromptModal.js";import{_ as bs}from"./ModelModal.vue_vue_type_script_setup_true_lang.js";import{e as cn}from"./vendor.js";import{_ as la}from"./Modal.vue_vue_type_script_setup_true_lang.js";import{_ as ks}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang.js";import"./formkit.js";import"./syntax.js";import"./monaco.js";import"./CopyButton.vue_vue_type_script_setup_true_lang.js";import"./check.js";import"./JsonViewer.js";const It=_e({__name:"UiBadge",props:{variant:{default:"default"},size:{default:"sm"},pill:{type:Boolean,default:!1}},setup(e){const t=e,n=O(()=>{switch(t.variant){case"default":return"bg-neutral-100 dark:bg-neutral-800 text-neutral-700 dark:text-neutral-300";case"primary":return"bg-black dark:bg-white text-white dark:text-black";case"secondary":return"bg-neutral-200 dark:bg-neutral-700 text-neutral-600 dark:text-neutral-300";case"success":return"bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-300";case"warning":return"bg-yellow-100 dark:bg-yellow-900/30 text-yellow-700 dark:text-yellow-300";case"error":return"bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-300";case"accent":return"bg-accent-100 dark:bg-accent-900/30 text-accent-700 dark:text-accent-300";default:return""}}),o=O(()=>{switch(t.size){case"sm":return"px-2 py-0.5 text-xs";case"md":return"px-2.5 py-1 text-sm";default:return""}});return(a,l)=>(p(),$("span",{class:ue(["inline-flex items-center font-medium",n.value,o.value,e.pill?"rounded-full":"rounded"])},[lo(a.$slots,"default")],2))}});function ws(){const e=B([]),t=B({}),n=B({}),o=B({}),a=B(!0),l=B(null),s=B(""),r=O(()=>{const c=s.value.trim().toLowerCase();return c?e.value.filter(d=>d.name.toLowerCase().includes(c)||d.title.toLowerCase().includes(c)||d.type.toLowerCase().includes(c)):e.value});async function i(){a.value=!0,l.value=null;try{const[c,d,f,v]=await Promise.all([Qe("/agents"),Qe("/models"),Qe("/tools"),Qe("/hooks")]);e.value=(c.agents||[]).sort((x,g)=>x.name.localeCompare(g.name)),t.value=Object.fromEntries((d.models||[]).map(x=>[x.id,x])),n.value=f||{},o.value=Object.fromEntries((v.hooks||[]).map(x=>[x.id,x]))}catch{l.value="Unable to load composition data."}finally{a.value=!1}}return{agents:e,models:t,toolsCatalog:n,hooks:o,agentSearch:s,searchableAgents:r,loadingIndex:a,loadError:l,loadIndex:i}}function $s(e){const t=xn(),n=Zn(),o=B(null),a=B(null),l=B(null),s=B(null),r=B(null),i=B({}),c=B(!1),d=B(null);let f=0,v=0,x=0;function g(){return{models:e.models.value,toolsCatalog:e.toolsCatalog.value,hooks:e.hooks.value}}const u=O(()=>{const q=a.value;return q?[at(q,"a",l.value,g()),at(q,"b",s.value,g())]:[]}),y=O(()=>{const q=u.value;return{promptCount:q.filter(D=>!!D.prompt).length,toolCount:q.reduce((D,C)=>D+C.tools.length,0),outgoingCount:q.reduce((D,C)=>D+C.outgoingAgents.length,0),variableCount:q.reduce((D,C)=>D+C.variables.length,0)}});function S(q,D){return q===f&&o.value===D}async function _(q){const D=++x;try{await n.replace({query:{...t.query,agent:q}})}catch{}finally{D===x&&(x=0)}}function M(){return x>0}async function k(q,D,C){const T=++v,b=new Set;for(const G of q)for(const Y of G.outgoingAgents)Y.kind==="subagent"&&b.add(Y.name);if(b.size===0){T===v&&S(D,C)&&(i.value={});return}const A={};await Promise.all([...b].map(async G=>{if(e.agents.value.find(H=>H.name===G&&!H.packed))try{const E=(await Qe(`/agents/${encodeURIComponent(G)}`)).agent,[F,j]=await Promise.all([ot(E.side_a_agent_prompt),ot(E.side_b_agent_prompt)]);if(T!==v||!S(D,C))return;A[G]={agentName:G,agent:E,sides:[at(E,"a",F,g()),at(E,"b",j,g())]}}catch{}})),T===v&&S(D,C)&&(i.value=A)}async function N(q,D=!0){const C=e.agents.value.find(b=>b.id===q||b.name===q);if(!C)return;const T=++f;if(o.value=C.id,r.value={type:"agent",value:C},i.value={},!fs(C)){a.value=null,l.value=null,s.value=null,d.value="Packed agents are not yet supported in the composition browser.",c.value=!1,D&&_(C.id);return}c.value=!0,d.value=null,D&&_(C.id);try{const b=await Qe(`/agents/${encodeURIComponent(C.name)}`),[A,G]=await Promise.all([ot(b.agent.side_a_agent_prompt),ot(b.agent.side_b_agent_prompt)]);if(!S(T,C.id))return;a.value=b.agent,l.value=A,s.value=G,r.value={type:"agent",value:b.agent};const Y=[at(b.agent,"a",A,g()),at(b.agent,"b",G,g())];k(Y,T,C.id)}catch{if(!S(T,C.id))return;d.value="Unable to load the selected agent composition.",a.value=null,l.value=null,s.value=null}finally{S(T,C.id)&&(c.value=!1)}}function P(q){r.value=q}function L(){a.value?r.value={type:"agent",value:a.value}:r.value=null}async function ne(){const q=a.value,D=o.value;if(!q||!D)return!1;const C=++f;try{const T=await Qe(`/agents/${encodeURIComponent(q.name)}`),[b,A]=await Promise.all([ot(T.agent.side_a_agent_prompt),ot(T.agent.side_b_agent_prompt)]);if(!S(C,D))return!1;const G=(l.value?.tools?.length??0)+(s.value?.tools?.length??0),Y=(b?.tools?.length??0)+(A?.tools?.length??0),E=T.agent.side_a_agent_prompt!==q.side_a_agent_prompt||T.agent.side_b_agent_prompt!==q.side_b_agent_prompt||G!==Y;a.value=T.agent,l.value=b,s.value=A;const F=[at(T.agent,"a",b,g()),at(T.agent,"b",A,g())];return k(F,C,D),E}catch{return!0}}return{selectedAgentId:o,selectedAgentDetail:a,selectedNode:r,sideCompositions:u,subagentCompositions:i,compositionSummary:y,loadingComposition:c,compositionError:d,selectAgent:N,selectInspectorNode:P,deselectNode:L,refreshComposition:ne,isRouteSyncing:M}}function Ms(){const e=xn(),t=ws(),n=$s({agents:t.agents,models:t.models,toolsCatalog:t.toolsCatalog,hooks:t.hooks}),o=O(()=>t.agents.value.find(s=>s.id===n.selectedAgentId.value)||null);async function a(){if(await t.loadIndex(),t.loadError.value)return;const s=typeof e.query.agent=="string"?e.query.agent:null,r=s?t.agents.value.find(i=>i.id===s)||t.agents.value.find(i=>i.name===s):null;r?await n.selectAgent(r.id,!1):t.agents.value.length>0&&await n.selectAgent(t.agents.value[0].id)}async function l(){await t.loadIndex()}return{searchableAgents:t.searchableAgents,selectedAgentId:n.selectedAgentId,selectedAgentDetail:n.selectedAgentDetail,selectedAgentSummary:o,selectedNode:n.selectedNode,sideCompositions:n.sideCompositions,subagentCompositions:n.subagentCompositions,compositionSummary:n.compositionSummary,models:t.models,toolsCatalog:t.toolsCatalog,agentSearch:t.agentSearch,loadingIndex:t.loadingIndex,loadingComposition:n.loadingComposition,loadError:t.loadError,compositionError:n.compositionError,loadIndex:a,refreshIndex:l,selectAgent:n.selectAgent,selectInspectorNode:n.selectInspectorNode,deselectNode:n.deselectNode,refreshComposition:n.refreshComposition,isRouteSyncing:n.isRouteSyncing}}const Ba="__";function bo(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)}function ko(e){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"item"}function qn(e,t,n){const o=n===void 0?"":`-${n}`;return`${e}-${ko(t)}-${bo(t)}${o}`}function wo(e,...t){return`${e}${t.join(Ba)}${Ba}`}function $o(e){return wo(qn("agent",e))}function Mo(e,t,n,o,a){return wo(e,qn("side",t),qn("tool",`${o}:${a}`,n))}const fn=e=>`${e}agent`,ia=(e,t)=>`${e}side-${t}`,ln=(e,t,n)=>`${e}tool-${t}-${n}`,Ts=e=>`${e}group`,To=(e,t)=>`${e}model-${ko(t)}-${bo(t)}`,Cs=280,Ss=132,Va=320,_s=72,Is=200,Es=72,As=360,Ns=220,Ps=320,Ls=240,Rs=280,Os=132,Ua=64,ut=36,Zt=56,kt=36,Vn=52,Ds=64,dn=220,Bs=84,qe=72,Ha=112,ct=28;function Vs(e,t,n){const o=[],a=[];if(e.modelUsages.length===0)return{modelNodes:o,modelEdges:a};const l=new Map,s=new Set;for(const u of e.modelUsages){const y=`${u.model.id}|${u.consumerNodeId}`;if(s.has(y))continue;s.add(y);const S=l.get(u.model.id);S?S.push(u):l.set(u.model.id,[u])}const r=new Map;for(const u of e.nodes)r.set(u.id,u);const i=e.width,c=0,d=[],f=e.groups.map(u=>({x:u.x,y:u.y,w:u.width,h:u.height}));function v(u,y){return y.x>=u.x&&y.y>=u.y&&y.x+y.w<=u.x+u.w&&y.y+y.h<=u.y+u.h}function x(u,y,S,_,M=16){const k=Math.min(y,S),N=Math.max(y,S);return _.some(P=>N>P.x-M&&k<P.x+P.w+M&&u>P.y-M&&u<P.y+P.h+M)}function g(u,y,S,_,M=16){const k=Math.min(y,S),N=Math.max(y,S);return _.some(P=>N>P.y-M&&k<P.y+P.h+M&&u>P.x-M&&u<P.x+P.w+M)}for(const[u,y]of l){const S=y.map(E=>({usage:E,node:r.get(E.consumerNodeId)})).filter(E=>!!E.node);if(S.length===0)continue;const _=S.map(E=>Hs(E.node,n)),M=S.map(E=>ft(E.node,n)),k=f.filter(E=>M.every(F=>v(E,F))),N=f.filter(E=>!k.includes(E)),P=y[0].model,L=To(t,u),ne=n[L],q=ne?.w??dn,D=ne?.h??Bs;let C=0,T=0,b;if(S.length===1){const E=S[0],F=ft(E.node,n),j=za(E.node),X=j||E.usage.sideId==="a"?"outboard-left":"outboard-right",he=F.y+F.h/2-D/2,se=X==="outboard-left"?F.x-qe-q:F.x+F.w+qe,fe=F.x+F.w/2-q/2,z=F.y+F.h+qe,U=new Set(S.map(te=>te.node.id)),J=[...d,...e.nodes.filter(te=>!U.has(te.id)).map(te=>ft(te,n)),...N],le=[se],ie=[he],ve=[fe],ee=[z];for(const te of J)X==="outboard-left"?le.push(te.x-qe-q):le.push(te.x+te.w+qe),ie.push(te.y-D-ct),ie.push(te.y+te.h+ct),ve.push(te.x-q-ct),ve.push(te.x+te.w+ct),ee.push(te.y-D-ct),ee.push(te.y+te.h+ct);let Z=se,m=he,w=Number.POSITIVE_INFINITY,V=null;const oe=new Set,de=[{mode:X,xs:le,ys:ie},{mode:"below-row",xs:ve,ys:ee}];for(const te of de)for(const re of te.xs)for(const be of te.ys){const ke=`${te.mode}:${Math.round(re)}:${Math.round(be)}`;if(oe.has(ke)||(oe.add(ke),te.mode==="outboard-left"&&re+q>F.x-8)||te.mode==="outboard-right"&&re<F.x+F.w+8)continue;const ge=J.filter(xe=>Un({x:re,y:be,w:q,h:D},{x:xe.x,y:xe.y,w:xe.w,h:xe.h})).length,Se=te.mode==="below-row"?g(F.x+F.w/2,F.y+F.h,be,J):x(F.y+F.h/2,te.mode==="outboard-left"?re+q:F.x+F.w,te.mode==="outboard-left"?F.x:re,J),we=ge*1e4+(Se?12e3:0)+Math.abs(re-se)/10+Math.abs(be-(te.mode==="below-row"?z:he))+(te.mode==="below-row"?10:0);if(j&&te.mode!=="below-row"&&ge===0){const xe=(Se?1e3:0)+Math.abs(re-se)/10+Math.abs(be-he);(!V||xe<V.penalty)&&(V={x:re,y:be,penalty:xe,mode:te.mode})}we<w&&(w=we,Z=re,m=be,b=te.mode)}V&&(Z=V.x,m=V.y,b=V.mode),b||(b=X),C=Z,T=m}else{let E=1/0,F=-1/0,j=1/0,X=-1/0;for(const U of S){const J=ft(U.node,n);J.x<E&&(E=J.x),J.x+J.w>F&&(F=J.x+J.w),J.y<j&&(j=J.y),J.y+J.h>X&&(X=J.y+J.h)}const he=F-E,se=X-j,fe=Fa(_.map(U=>U.x)),z=Fa(_.map(U=>U.y));if(he>=se){const U=fe-q/2,J=new Set(S.map(V=>V.node.id)),le=e.nodes.filter(V=>!J.has(V.id)).map(V=>ft(V,n)).filter(V=>V.y+V.h>X),ie=N.filter(V=>V.y+V.h>X),ve=[...le,...ie],ee=[U];for(const V of ve)ee.push(V.x-qe-q),ee.push(V.x+V.w+qe);let Z=U,m=1/0;const w=new Set;for(const V of ee){const oe=Math.round(V);if(w.has(oe))continue;w.add(oe);const de=ve.filter(be=>Un({x:V,y:X+qe,w:q,h:D},{x:be.x,y:be.y,w:be.w,h:be.h})).length,te=Math.abs(V-U)/1e3,re=de+te;re<m&&(m=re,Z=V)}C=Z,T=X+qe,b="below-row"}else{const U=S.every(ve=>za(ve.node)),J=S.filter(ve=>ve.usage.sideId==="a").length,le=S.length-J,ie=!U&&le>=J;C=ie?Math.max(i,F)+Ha:Math.min(c,E)-Ha-q,T=z-D/2,b=ie?"sidebar-right":"sidebar-left"}}const A=D+ct,G=8;let Y=0;const H=[...d,...e.nodes.map(E=>{const F=ft(E,n);return{x:F.x,y:F.y,w:F.w,h:F.h}}),...N];for(;Y<G&&H.some(E=>Un({x:C,y:T,w:q,h:D},E));)T+=A,Y++;d.push({x:C,y:T,w:q,h:D}),o.push({id:L,type:"model",x:C,y:T,width:q,height:D,placementMode:b,data:P});for(const E of S)a.push({id:`${E.node.id}-to-${L}`,from:E.node.id,to:L,sideId:E.usage.sideId,kind:"model"})}return{modelNodes:o,modelEdges:a}}function Us(e,t,n){if(t.length===0||e.length===0)return;const o=new Map;for(const i of n){const c=o.get(i.to);c?c.push(i.from):o.set(i.to,[i.from])}const a=new Map;for(const i of t)a.set(i.id,i);const l=12,s="group",r=[...e].sort((i,c)=>c.id.length-i.id.length);for(const i of r){const c=i.id.endsWith(s)?i.id.slice(0,i.id.length-s.length):i.id;for(const[d,f]of o){const v=a.get(d);if(!v||!f.every(S=>S.startsWith(c)))continue;const x=Math.min(i.x,v.x-l),g=Math.min(i.y,v.y-l),u=Math.max(i.x+i.width,v.x+v.width+l),y=Math.max(i.y+i.height,v.y+v.height+l);i.x=x,i.y=g,i.width=u-x,i.height=y-g}}for(const i of r){const c=i.id.endsWith(s)?i.id.slice(0,i.id.length-s.length):i.id;for(const d of e){if(d===i||!d.id.startsWith(c)||d.id.length<=i.id.length)continue;const f=Math.min(i.x,d.x),v=Math.min(i.y,d.y),x=Math.max(i.x+i.width,d.x+d.width),g=Math.max(i.y+i.height,d.y+d.height);i.x=f,i.y=v,i.width=x-f,i.height=g-v}}}function ft(e,t){const n=t[e.id];return{x:e.x,y:e.y,w:n?.w??e.width,h:n?.h??e.height}}function Hs(e,t){const n=ft(e,t);return{x:n.x+n.w/2,y:n.y+n.h/2}}function za(e){return e.type==="prompt"||e.type==="side"&&e.data.mode==="ai"||e.type==="tool"&&e.data.kind==="prompt"}function Fa(e){if(e.length===0)return 0;let t=0;for(const n of e)t+=n;return t/e.length}function Un(e,t){return e.x<t.x+t.w&&e.x+e.w>t.x&&e.y<t.y+t.h&&e.y+e.h>t.y}function Co(e,t,n,o,a,l){const s=[],r=[],i=[],c=[];function d(w){if(!w)return null;const V=l[w];if(V)return V;for(const oe of Object.values(l))if(oe.name===w)return oe;return null}const f=fn(o),v=a[f],x=v?.w??Cs,g=v?.h??Ss,u=0,y=g+Ua;function S(w,V){const oe=a[V];if(oe)return oe;if(w.mode==="human")return{w:Va,h:_s};const de=240,te=w.variables.length*24,re=w.tools.length*32,be=de+Math.max(te,re),ke=7,ge=w.tools.length>0;let Se=200;w.prompt&&(Se=Math.max(Se,w.prompt.name.length*ke+80));let we=ge?160:0;if(ge)for(const Te of w.tools)we=Math.max(we,Te.displayName.length*ke+40);return{w:Math.max(Va,ge?Se+we:Se),h:be}}const _=t.filter(w=>w.id==="a"),M=t.filter(w=>w.id==="b");function k(w){return w.map(V=>{const oe=V.tools.filter(ke=>ke.kind==="tool"||ke.kind==="subagent"||ke.kind==="handoff"||ke.kind==="prompt"),de=[];for(let ke=0;ke<oe.length;ke++){const ge=oe[ke];if(ge.kind==="subagent"&&!!n[ge.name]){const we=Mo(o,V.id,ke,ge.kind,ge.name),xe=n[ge.name],Te=Co(xe.agent,xe.sides,n,we,a,l),Ce=(dn+qe+12)*2;de.push({width:Te.width+kt*2+Ce,height:Te.height+Vn+kt,isSubagent:!0,modelReserveLeft:Ce,modelReserveRight:0,subagentName:ge.name,subagentNodeId:fn(we),subagentGroupId:Ts(we),subTree:Te})}else{const we=ln(o,V.id,ke),xe=a[we];de.push({width:xe?.w??(ge.kind==="tool"?As:ge.kind==="prompt"?Ps:ge.kind==="handoff"?Rs:Is),height:xe?.h??(ge.kind==="tool"?Ns:ge.kind==="prompt"?Ls:ge.kind==="handoff"?Os:Es),isSubagent:!1})}}const te=ia(o,V.id),{w:re,h:be}=S(V,te);return{side:V,leaves:de,sideH:be,sideW:re,sideNodeId:te,externalTools:oe}})}const N=k(_),P=k(M),L=new Map,ne=new Set;function q(w,V,oe){if(!w)return;const de=`${w.id}|${oe}`;if(ne.has(de))return;ne.add(de);const te=L.get(w.id);if(te){V==="a"?te.hasLeftConsumer=!0:te.hasRightConsumer=!0;return}L.set(w.id,{hasLeftConsumer:V==="a",hasRightConsumer:V==="b"})}for(const w of[...N,...P]){q(w.side.model,w.side.id,w.sideNodeId);for(let V=0;V<w.externalTools.length;V++){const oe=w.externalTools[V];oe.kind==="prompt"&&q(d(oe.model),w.side.id,ln(o,w.side.id,V))}for(const V of w.leaves)if(!(!V.isSubagent||!V.subTree))for(const oe of V.subTree.modelUsages)q(oe.model,oe.sideId,oe.consumerNodeId)}function D(w){if(!w)return!1;const V=L.get(w.id);return!!V?.hasRightConsumer&&!V?.hasLeftConsumer}function C(w,V){if(w.length===0)return{card:{minX:0,maxX:0},leaves:null,full:{minX:0,maxX:0}};let oe=0,de=1/0,te=-1/0,re=1/0,be=-1/0;for(const ge of w){const{side:Se,leaves:we,sideW:xe,externalTools:Te}=ge,Ce=V==="left"?oe-xe:oe,Je=V==="right"&&D(Se.model)?dn+qe:0;if(de=Math.min(de,Ce-Je),te=Math.max(te,Ce+xe),Te.length>0){const Le=T(Ce,xe,Te,we);for(let je=0;je<we.length;je++){const xt=V==="right"&&Te[je]?.kind==="prompt"&&D(d(Te[je]?.model))?dn+qe:0,it=Le[je];re=Math.min(re,it.x-xt),be=Math.max(be,it.x+we[je].width)}}oe+=(V==="left"?-1:1)*(xe+Zt)}const ke=re!==1/0;return{card:{minX:de,maxX:te},leaves:ke?{minX:re,maxX:be}:null,full:{minX:ke?Math.min(de,re):de,maxX:ke?Math.max(te,be):te}}}function T(w,V,oe,de){const te=new Array(de.length),re=de.map((xe,Te)=>({index:Te,leaf:xe,tool:oe[Te]})),be=re.filter(xe=>b(xe.tool)),ke=new Set(be.map(xe=>xe.index)),ge=[];be.length>0&&ge.push(A(be,V*3));for(const xe of re)ke.has(xe.index)||ge.push(A([xe],Number.POSITIVE_INFINITY));ge.sort((xe,Te)=>xe.firstIndex-Te.firstIndex);const Se=ge.reduce((xe,Te)=>xe+Te.width,0)+Math.max(0,ge.length-1)*ut;let we=w+V/2-Se/2;for(const xe of ge){for(const Te of xe.positions)te[Te.index]={x:we+Te.x,yOffset:Te.yOffset};we+=xe.width+ut}return te}function b(w){return w?.kind==="tool"||w?.kind==="provider"||w?.kind==="mcp"}function A(w,V){const oe=Math.max(...w.map(we=>we.leaf.width),0),de=Number.isFinite(V)?Math.max(V,oe):Number.POSITIVE_INFINITY,te=[];let re=null;const be=()=>{re&&re.items.length>0&&te.push(re),re={items:[],width:0,height:0}};be();for(const we of w){re||be();const xe=re.items.length===0?we.leaf.width:re.width+ut+we.leaf.width;re.items.length>0&&xe>de&&be(),re.items.push(we),re.width=re.items.length===1?we.leaf.width:re.width+ut+we.leaf.width,re.height=Math.max(re.height,we.leaf.height)}re&&re.items.length>0&&te.push(re);const ke=Math.max(...te.map(we=>we.width),0),ge=[];let Se=0;for(const we of te){let xe=(ke-we.width)/2;for(const Te of we.items)ge.push({index:Te.index,x:xe,yOffset:Se}),xe+=Te.leaf.width+ut;Se+=we.height+ut}return{firstIndex:Math.min(...w.map(we=>we.index)),width:ke,height:te.reduce((we,xe)=>we+xe.height,0)+Math.max(0,te.length-1)*ut,positions:ge}}const G=C(N,"left"),Y=C(P,"right"),H=G.card.maxX-Y.card.minX+Zt,E=G.leaves&&Y.leaves?G.leaves.maxX-Y.leaves.minX+Zt:0,F=Math.max(Ds,H,E),j=Math.max(x/2,F/2-G.full.minX);let X=y;function he(w,V,oe,de,te,re,be){const ke=ln(o,V,be);if(!de.isSubagent||!de.subTree){if(s.push({id:ke,type:"tool",x:te,y:re,width:de.width,height:de.height,data:oe,sideId:V}),r.push({id:`${w}-to-${ke}`,from:w,to:ke,sideId:V,toolKind:oe.kind}),oe.kind==="prompt"){const Ce=d(oe.model);Ce&&c.push({consumerNodeId:ke,sideId:V,model:Ce})}X=Math.max(X,re+de.height);return}const ge=de.subTree,Se=te+(de.modelReserveLeft??0),we=re+Vn;for(const Ce of ge.nodes){const Le=Ce.type==="agent"&&Ce.id===de.subagentNodeId&&"type"in Ce.data?{...Ce.data,_isSubagent:!0}:Ce.data;s.push({...Ce,x:Ce.x+Se,y:Ce.y+we,data:Le})}for(const Ce of ge.edges)r.push(Ce);for(const Ce of ge.groups)i.push({...Ce,x:Ce.x+Se,y:Ce.y+we});for(const Ce of ge.modelUsages)c.push(Ce);r.push({id:`${w}-to-${de.subagentNodeId}`,from:w,to:de.subagentNodeId,sideId:V,toolKind:oe.kind});const xe=oe.config||{},Te=xe.resumable;i.push({id:de.subagentGroupId,label:n[de.subagentName]?.agent.title||de.subagentName,x:Se-kt,y:re,width:ge.width+kt*2,height:ge.height+Vn+kt,sideId:V,subagent:{blocking:!!xe.blocking,resumable:!!Te,multiInstance:!!Te&&typeof Te=="object"&&(Te.max_instances===null||(Te.max_instances??0)>1),immediate:!!xe.immediate}}),X=Math.max(X,we+ge.height+kt)}function se(w,V){let oe=V==="left"?j-F/2:j+F/2;for(const de of w){const{side:te,leaves:re,sideH:be,sideW:ke,sideNodeId:ge,externalTools:Se}=de,we=Se.filter(b).length,xe=we>5?(we-5)*10:0,Te=y+be+Ua+xe,Ce=V==="left"?oe-ke:oe;if(s.push({id:ge,type:"side",x:Ce,y,width:ke,height:be,data:te,sideId:te.id}),r.push({id:`${f}-to-${ge}`,from:f,to:ge,sideId:te.id}),te.model&&c.push({consumerNodeId:ge,sideId:te.id,model:te.model}),X=Math.max(X,y+be),Se.length>0){const Je=T(Ce,ke,Se,re);for(let Le=0;Le<Se.length;Le++){const je=Je[Le];he(ge,te.id,Se[Le],re[Le],je.x,Te+je.yOffset,Le)}}oe+=(V==="left"?-1:1)*(ke+Zt)}}se(N,"left"),se(P,"right");const fe=new Set(Object.keys(e.env||{})),z=new Set,U=t.flatMap(w=>w.variables).filter(w=>fe.has(w.name)).filter(w=>z.has(w.name)?!1:(z.add(w.name),!0)),J=U.length>0?{...e,_variables:U}:e;s.push({id:f,type:"agent",x:j-x/2,y:u,width:x,height:g,data:J});let le=1/0,ie=1/0,ve=-1/0,ee=-1/0;for(const w of s)le=Math.min(le,w.x),ie=Math.min(ie,w.y),ve=Math.max(ve,w.x+w.width),ee=Math.max(ee,w.y+w.height);for(const w of i)le=Math.min(le,w.x),ie=Math.min(ie,w.y),ve=Math.max(ve,w.x+w.width),ee=Math.max(ee,w.y+w.height);const Z=ve-le,m=ee-ie;for(const w of s)w.x-=le,w.y-=ie;for(const w of i)w.x-=le,w.y-=ie;return{nodes:s,edges:r,groups:i,modelUsages:c,width:Z,height:m}}function zs(e,t,n,o,a={}){if(!e||t.length===0)return{nodes:[],edges:[],groups:[],bounds:{x:0,y:0,width:0,height:0}};const l=$o(e.id||e.name),s=Co(e,t,n,l,o,a),r=[...s.nodes],i=[...s.edges],c=[...s.groups],{modelNodes:d,modelEdges:f}=Vs(s,l,o);r.push(...d),i.push(...f),Us(c,d,f);let v=0,x=0,g=s.width,u=s.height;for(const y of d)y.x<v&&(v=y.x),y.y<x&&(x=y.y),y.x+y.width>g&&(g=y.x+y.width),y.y+y.height>u&&(u=y.y+y.height);for(const y of c)y.x<v&&(v=y.x),y.y<x&&(x=y.y),y.x+y.width>g&&(g=y.x+y.width),y.y+y.height>u&&(u=y.y+y.height);if(v<0||x<0){const y=-Math.min(v,0),S=-Math.min(x,0);for(const _ of r)_.x+=y,_.y+=S;for(const _ of c)_.x+=y,_.y+=S;g+=y,u+=S}return{nodes:r,edges:i,groups:c,bounds:{x:0,y:0,width:g,height:u}}}function Fs(e,t,n,o,a){return O(()=>zs(e.value,t.value,n.value,o.value,a.value))}function js(e){const{selectedAgentId:t,threadListPaneRef:n,messagesPaneRef:o,logsPaneRef:a}=e,l=xn(),s=Zn(),r=()=>typeof l.query.thread=="string"?l.query.thread:null,i=U=>{s.replace({path:l.path,query:{...l.query,thread:U||void 0},hash:l.hash})},c=U=>{s.replace({path:l.path,query:{...l.query,inspector:U},hash:l.hash})},d=r(),f=B(d),v=B(null),x="__draft_new_thread__",g=B(!1);let u=!1;Pe(f,U=>{if(u||U===x)return;const J=r();U!==J&&i(U)}),Pe(()=>l.query.thread,U=>{if(u)return;const J=typeof U=="string"?U:null;if(J&&v.value&&!v.value.has(J)){u=!0,f.value=null,i(null),He(()=>{u=!1});return}J!==f.value&&(f.value=J)},{immediate:!0});const y=B(null),S=B(null),_=B(null),M=B(null),k=B(null),N=B(null),P=B(null),L=B(!1),ne=B(null),{thread:q}=ms(O(()=>f.value===x?null:f.value));let D=!1;Pe(t,()=>{if(!D){D=!0;return}u=!0,f.value=null,y.value=null,S.value=null,_.value=null,M.value=null,k.value=null,N.value=null,P.value=null,He(()=>{u=!1})}),Pe(f,()=>{y.value=null,S.value=null,_.value=null,M.value=null,k.value=null});const C=U=>{N.value=U,P.value=U},T=U=>{const J=o.value,le=a.value;if(!J||!le)return null;if(J.hasWorkblockForLogId(U))return U;let ie=U;const ve=10;for(let ee=0;ee<ve&&ie;ee++){const Z=le.getLog(ie);if(!Z)break;const m=Z.parent_log_id;if(!m)break;if(J.hasWorkblockForLogId(m))return m;ie=m}return null};return{selectedThreadId:f,selectedThread:q,selectedMessageId:y,selectedLogId:S,selectedEffectId:_,selectedEffectRef:M,highlightedWorkblockLogId:k,hoveredLogId:N,hoveredWorkblockLogId:P,showThreadModal:L,editingThread:ne,draftThreadId:x,isCreatingThreadDraft:g,handleThreadSelect:U=>{f.value=U},handleThreadsLoaded:(U,J)=>{u=!1,v.value=J?new Set(J):null,f.value&&v.value&&!v.value.has(f.value)&&(f.value=null),U&&!f.value?f.value=U:!U&&!f.value&&r()&&i(null)},handleMessageClick:async(U,J,le)=>{if(y.value=U,le){_.value=le.id??null,M.value=le,S.value=null,k.value=null,c("effects"),await He(),a.value?.selectEffectByReference(le);return}if(_.value=null,M.value=null,!J){S.value=null,k.value=null;return}const ie=a.value;if(!ie){S.value=J,k.value=J;return}const ve=!ie.hasLog(J);if(ve&&ie.setLoadingForLog(!0),S.value=J,k.value=J,ve&&!await ie.loadUntilLogId(J)){ie.setLoadingForLog(!1);return}await ie.waitForLogRow(J)&&(ie.scrollToLog(J),ie.selectLogById(J))},handleMessageHover:C,handleLogClick:U=>{S.value=U,_.value=null,M.value=null,y.value=null;const J=o.value;if(!J){k.value=U;return}if(J.scrollToLogId(U)){k.value=U;return}const le=T(U);le&&le!==U&&J.scrollToLogId(le),k.value=le??U},handleLogHover:U=>{if(N.value=U,!U){P.value=null;return}P.value=T(U)??U},handleLogsLoaded:U=>{U&&(S.value=U)},handleLogsDeleted:U=>{a.value?.removeLogsByIds(U)},handleThreadDeleted:U=>{f.value=null,y.value=null,S.value=null,_.value=null,M.value=null,k.value=null,N.value=null,P.value=null,n.value?.refetch()},handleEditThread:()=>{q.value&&(ne.value=q.value,L.value=!0)},handleCreateThread:()=>{ne.value=null,L.value=!1,g.value=!0,f.value=x},handleThreadCreated:U=>{g.value=!1,n.value?.refetch(),f.value=U,He(()=>o.value?.focusComposer())},handleCancelCreateThread:()=>{g.value=!1,f.value===x&&(f.value=null)},handleThreadUpdated:()=>{n.value?.refetch()}}}function Xs(e){return Array.from(new Set(e.map(t=>t.id))).sort()}function Ks(e){const t=B({}),n=B(!1),o=B(null),a=O(()=>Xs(Yr(e))),l=O(()=>a.value.join(""));let s=0;async function r(i={}){const c=++s,d=a.value;if(d.length===0){t.value={},o.value=null,n.value=!1;return}const f={...t.value},v=i.force?d:d.filter(x=>f[x]===void 0);if(v.length===0){o.value=null,n.value=!1;return}n.value=!0,o.value=null;try{const x=await Promise.all(v.map(async g=>{try{const u=await Qe(`/threads?agent_id=${encodeURIComponent(g)}&limit=1`);return[g,u.total??0]}catch{return[g,0]}}));if(c!==s)return;for(const[g,u]of x)f[g]=u;t.value=f}catch{c===s&&(o.value="Unable to load thread counts.")}finally{c===s&&(n.value=!1)}}return Pe(l,()=>{r()},{immediate:!0}),{threadCounts:t,loadingThreadCounts:n,threadCountsError:o,refreshThreadCounts:()=>r({force:!0})}}const Ys={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function qs(e,t){return p(),$("svg",Ys,[...t[0]||(t[0]=[h("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[h("path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zm1 .27V12"}),h("path",{d:"M3.29 7L12 12l8.71-5M7.5 4.27l9 5.15"})],-1)])])}const Hn=nt({name:"lucide-package",render:qs}),Gs={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ws(e,t){return p(),$("svg",Gs,[...t[0]||(t[0]=[h("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[h("path",{d:"M12 22v-9m3.17-10.79a1.67 1.67 0 0 1 1.63 0L21 4.57a1.93 1.93 0 0 1 0 3.36L8.82 14.79a1.66 1.66 0 0 1-1.64 0L3 12.43a1.93 1.93 0 0 1 0-3.36z"}),h("path",{d:"M20 13v3.87a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13"}),h("path",{d:"M21 12.43a1.93 1.93 0 0 0 0-3.36L8.83 2.2a1.64 1.64 0 0 0-1.63 0L3 4.57a1.93 1.93 0 0 0 0 3.36l12.18 6.86a1.64 1.64 0 0 0 1.63 0z"})],-1)])])}const Qs=nt({name:"lucide-package-open",render:Ws}),Js={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Zs(e,t){return p(),$("svg",Js,[...t[0]||(t[0]=[h("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[h("circle",{cx:"12",cy:"12",r:"1"}),h("circle",{cx:"12",cy:"5",r:"1"}),h("circle",{cx:"12",cy:"19",r:"1"})],-1)])])}const el=nt({name:"lucide-ellipsis-vertical",render:Zs}),tl={class:"px-4 py-3 border-b border-neutral-200 dark:border-neutral-800"},nl={class:"flex items-center justify-between"},al={class:"flex items-center gap-2"},ol={key:0,class:"text-xs font-mono text-neutral-500 dark:text-neutral-400"},rl={class:"flex items-center gap-2 border-b border-neutral-200 px-5 py-2.5 dark:border-neutral-800"},sl={class:"flex flex-1 items-center gap-2 rounded-lg border border-neutral-200 bg-white px-3 py-1.5 text-sm dark:border-neutral-800 dark:bg-neutral-900"},ll=["value"],il={class:"flex shrink-0 overflow-hidden rounded-md border border-neutral-200 text-[11px] dark:border-neutral-700"},dl=["onClick"],ul={class:"grid grid-cols-[36px_1fr_72px_80px_1fr_32px] gap-x-4 border-b border-neutral-200 px-5 py-2 text-[11px] font-semibold text-neutral-400 dark:border-neutral-800 dark:text-neutral-500"},cl={key:0,class:"flex-1 px-5 py-5 text-sm text-neutral-500 dark:text-neutral-400"},fl={key:1,class:"flex-1 px-5 py-5 text-sm text-neutral-500 dark:text-neutral-400"},ml={key:2,class:"flex-1 overflow-y-auto"},hl=["data-agent-id","onClick"],pl={class:"flex items-center justify-center"},vl=["src"],gl={class:"flex min-w-0 items-center gap-2"},xl=["onClick","aria-label"],yl={key:0,class:"text-[11px] font-mono"},bl={class:"min-w-0"},kl={key:0,class:"relative flex items-center justify-center","data-agent-menu":""},wl=["aria-label","aria-expanded","onClick"],$l={key:0,class:"absolute right-0 top-8 z-30 min-w-[160px] origin-top-right rounded-lg border border-neutral-200 bg-white py-1 shadow-lg dark:border-neutral-700 dark:bg-neutral-900"},Ml=["onClick"],Tl=["onClick"],Cl=["onClick"],Sl=["onClick"],_l=["onClick"],Il=_e({__name:"AgentBrowserPanel",props:{agents:{},selectedId:{},loading:{type:Boolean},search:{},typeFilter:{},sortBy:{},sortDir:{},threadCounts:{},readonly:{type:Boolean,default:!1}},emits:["update:search","update:typeFilter","sort","select","view-threads","add","edit","pack","unpack","delete","publish"],setup(e,{emit:t}){const n=B(null);function o(d){n.value=n.value===d?null:d}function a(){n.value=null}function l(d){const f=d.target;(!(f instanceof Element)||!f.closest("[data-agent-menu]"))&&a()}ea(()=>document.addEventListener("click",l)),Et(()=>document.removeEventListener("click",l));const s=t,r=[{value:"all",label:"All"},{value:"ai_human",label:"AI+Human"},{value:"dual_ai",label:"Dual AI"}];function i(d){return d==="dual_ai"?"Dual AI":"AI+Human"}function c(d,f){return f==="a"?d.side_a_agent_prompt||"-":d.type==="ai_human"?"Human":d.side_b_agent_prompt||"-"}return(d,f)=>(p(),$("aside",{class:"flex h-full w-[90cqi] max-w-[780px] flex-col",onClick:f[5]||(f[5]=Me(()=>{},["stop"]))},[h("div",tl,[h("div",nl,[h("div",al,[Q(I(tt),{class:"h-[18px] w-[18px] shrink-0 opacity-60"}),f[6]||(f[6]=h("h2",{class:"text-base font-bold"},"Agents",-1)),!e.loading&&e.agents.length>0?(p(),$("span",ol," ("+K(e.agents.length)+") ",1)):W("",!0)])])]),h("div",rl,[h("label",sl,[Q(I(ns),{class:"h-4 w-4 shrink-0 text-neutral-400"}),h("input",{type:"text",placeholder:"Search agents...",value:e.search,onInput:f[0]||(f[0]=v=>d.$emit("update:search",v.target.value)),class:"w-full bg-transparent outline-none placeholder:text-neutral-400"},null,40,ll)]),h("div",il,[(p(),$($e,null,Ie(r,v=>h("button",{key:v.value,type:"button",class:ue(["px-2.5 py-1.5 font-medium transition-colors",e.typeFilter===v.value?"bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-900":"text-neutral-500 hover:bg-neutral-100 dark:text-neutral-400 dark:hover:bg-neutral-800"]),onClick:x=>d.$emit("update:typeFilter",v.value)},K(v.label),11,dl)),64))]),e.readonly?W("",!0):(p(),$("button",{key:0,type:"button",class:"flex shrink-0 items-center gap-1 rounded-md bg-neutral-900 px-3 py-1.5 text-[11px] font-medium text-white transition-colors hover:bg-neutral-800 dark:bg-neutral-100 dark:text-neutral-900 dark:hover:bg-neutral-200",onClick:f[1]||(f[1]=v=>d.$emit("add"))},[Q(I(xo),{class:"h-3.5 w-3.5"}),f[7]||(f[7]=pe(" New Agent ",-1))]))]),h("div",ul,[f[11]||(f[11]=h("div",null,null,-1)),h("button",{type:"button",class:"flex items-center gap-1 text-left",onClick:f[2]||(f[2]=v=>d.$emit("sort","title"))},[f[8]||(f[8]=pe(" Title ",-1)),e.sortBy==="title"&&e.sortDir==="asc"?(p(),ce(I(On),{key:0,class:"h-3 w-3"})):e.sortBy==="title"&&e.sortDir==="desc"?(p(),ce(I(Dn),{key:1,class:"h-3 w-3"})):(p(),ce(I(Bn),{key:2,class:"h-3 w-3 opacity-40"}))]),h("button",{type:"button",class:"flex items-center gap-1 text-left",onClick:f[3]||(f[3]=v=>d.$emit("sort","threads"))},[f[9]||(f[9]=pe(" Threads ",-1)),e.sortBy==="threads"&&e.sortDir==="asc"?(p(),ce(I(On),{key:0,class:"h-3 w-3"})):e.sortBy==="threads"&&e.sortDir==="desc"?(p(),ce(I(Dn),{key:1,class:"h-3 w-3"})):(p(),ce(I(Bn),{key:2,class:"h-3 w-3 opacity-40"}))]),h("button",{type:"button",class:"flex items-center gap-1 text-left",onClick:f[4]||(f[4]=v=>d.$emit("sort","type"))},[f[10]||(f[10]=pe(" Type ",-1)),e.sortBy==="type"&&e.sortDir==="asc"?(p(),ce(I(On),{key:0,class:"h-3 w-3"})):e.sortBy==="type"&&e.sortDir==="desc"?(p(),ce(I(Dn),{key:1,class:"h-3 w-3"})):(p(),ce(I(Bn),{key:2,class:"h-3 w-3 opacity-40"}))]),f[12]||(f[12]=h("div",null,"Sides",-1)),f[13]||(f[13]=h("div",null,null,-1))]),e.loading?(p(),$("div",cl," Loading agents... ")):e.agents.length===0?(p(),$("div",fl," No agents match this search. ")):(p(),$("div",ml,[(p(!0),$($e,null,Ie(e.agents,v=>(p(),$("div",{key:v.id,"data-agent-id":v.id,class:ue(["grid w-full cursor-pointer grid-cols-[36px_1fr_72px_80px_1fr_32px] items-center gap-x-4 px-5 py-3 text-[13px] transition-colors",e.selectedId===v.id?"agents-surface-selected agents-border-selected":"agents-surface-hover"]),onClick:x=>d.$emit("select",v.id)},[h("div",pl,[h("img",{src:v.icon||I(na)(v.id),alt:"",class:"h-9 w-9 rounded-md object-cover"},null,8,vl)]),h("div",gl,[v.packed?(p(),ce(I(Hn),{key:0,class:"h-4 w-4 shrink-0 text-blue-500",title:`Packed agent from ${v.packageId}`},null,8,["title"])):W("",!0),h("span",{class:ue(["truncate font-medium",e.selectedId===v.id?"agents-text-selected":"text-neutral-900 dark:text-neutral-100"])},K(v.title),3)]),h("button",{type:"button",class:ue(["flex items-center gap-1 rounded-md px-1.5 py-0.5 transition-colors",[e.selectedId===v.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300",e.threadCounts[v.id]>0?"":"opacity-30"]]),onClick:Me(x=>s("view-threads",v.id),["stop"]),title:"View threads","aria-label":`View threads for ${v.title}`},[Q(I(vt),{class:"h-3.5 w-3.5"}),e.threadCounts[v.id]>0?(p(),$("span",yl,K(e.threadCounts[v.id]),1)):W("",!0)],10,xl),h("div",{class:ue(e.selectedId===v.id?"agents-text-selected-muted":"text-neutral-500 dark:text-neutral-400")},K(i(v.type)),3),h("div",bl,[h("div",{class:ue(["truncate",e.selectedId===v.id?"agents-text-selected-muted":"text-neutral-500 dark:text-neutral-400"])},[h("span",{class:ue(["text-[10px] font-semibold uppercase tracking-wider",e.selectedId===v.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},"A",2),pe(" "+K(c(v,"a")),1)],2),h("div",{class:ue(["truncate",e.selectedId===v.id?"agents-text-selected-muted":"text-neutral-500 dark:text-neutral-400"])},[h("span",{class:ue(["text-[10px] font-semibold uppercase tracking-wider",e.selectedId===v.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},"B",2),pe(" "+K(c(v,"b")),1)],2)]),e.readonly?W("",!0):(p(),$("div",kl,[h("button",{type:"button",class:"rounded p-1 text-neutral-400 transition-colors hover:bg-neutral-100 hover:text-neutral-600 dark:hover:bg-neutral-800 dark:hover:text-neutral-300","aria-label":`Open actions for ${v.title}`,"aria-expanded":n.value===v.id,onClick:Me(x=>o(v.id),["stop"])},[Q(I(el),{class:"h-4 w-4"})],8,wl),Q(io,{"enter-active-class":"transition-all duration-100 ease-out","enter-from-class":"opacity-0 scale-95","enter-to-class":"opacity-100 scale-100","leave-active-class":"transition-all duration-75 ease-in","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-95"},{default:ye(()=>[n.value===v.id?(p(),$("div",$l,[v.packed?W("",!0):(p(),$("button",{key:0,type:"button",class:"flex w-full items-center gap-2.5 px-3 py-2 text-[13px] text-neutral-700 transition-colors hover:bg-neutral-50 dark:text-neutral-200 dark:hover:bg-neutral-800",onClick:Me(x=>{d.$emit("edit",v),a()},["stop"])},[Q(I(as),{class:"h-4 w-4 text-neutral-400"}),f[14]||(f[14]=pe(" Edit ",-1))],8,Ml)),v.packed?W("",!0):(p(),$("button",{key:1,type:"button",class:"flex w-full items-center gap-2.5 px-3 py-2 text-[13px] text-neutral-700 transition-colors hover:bg-neutral-50 dark:text-neutral-200 dark:hover:bg-neutral-800",onClick:Me(x=>{d.$emit("pack",v),a()},["stop"])},[Q(I(Hn),{class:"h-4 w-4 text-neutral-400"}),f[15]||(f[15]=pe(" Pack ",-1))],8,Tl)),v.packed?(p(),$("button",{key:2,type:"button",class:"flex w-full items-center gap-2.5 px-3 py-2 text-[13px] text-neutral-700 transition-colors hover:bg-neutral-50 dark:text-neutral-200 dark:hover:bg-neutral-800",onClick:Me(x=>{d.$emit("unpack",v),a()},["stop"])},[Q(I(Qs),{class:"h-4 w-4 text-neutral-400"}),f[16]||(f[16]=pe(" Unpack ",-1))],8,Cl)):W("",!0),v.packed?(p(),$("button",{key:3,type:"button",class:"flex w-full items-center gap-2.5 px-3 py-2 text-[13px] text-neutral-700 transition-colors hover:bg-neutral-50 dark:text-neutral-200 dark:hover:bg-neutral-800",onClick:Me(x=>{d.$emit("publish",v),a()},["stop"])},[Q(I(Hn),{class:"h-4 w-4 text-neutral-400"}),f[17]||(f[17]=pe(" Publish Package ",-1))],8,Sl)):W("",!0),f[18]||(f[18]=h("div",{class:"my-1 border-t border-neutral-100 dark:border-neutral-800"},null,-1)),h("button",{type:"button",class:"flex w-full items-center gap-2.5 px-3 py-2 text-[13px] text-red-600 transition-colors hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-950/30",onClick:Me(x=>{d.$emit("delete",v),a()},["stop"])},[Q(I(xs),{class:"h-4 w-4"}),pe(" "+K(v.packed?"Delete Package":"Delete"),1)],8,_l)])):W("",!0)]),_:2},1024)]))],10,hl))),128))]))]))}});function ja(e){return Math.round(e*1e3)/1e3}function zn(e){return e?Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>`${t}:${n.left}:${n.width}`).join("|"):""}function Fn(e,t){return Number.isFinite(e)?!Number.isFinite(t)||t<=0?ja(e):ja(e/t):e}function El(e,t,n,o,a){const l=B(!1),s=B(new Map);let r=null,i=null,c=null,d=null,f="",v="",x=null;const g=new Map;function u(){return e.value.nodes.filter(G=>G.type!=="hook").map(G=>G.id)}function y(){const G=u();return G.length>0&&G.every(Y=>s.value.has(Y))}function S(){return Array.from(s.value.entries()).sort(([G],[Y])=>G.localeCompare(Y)).map(([G,Y])=>`${G}:${Y.w}x${Y.h}:${Y.modelAnchorY??""}:${zn(Y.toolColumns)}`).join("|")}function _(){return new Set(e.value.nodes.map(G=>G.id))}function M(){r&&clearTimeout(r),i&&clearTimeout(i),c&&clearTimeout(c),r=null,i=null,c=null}function k(){return typeof ResizeObserver>"u"?null:x||(x=new ResizeObserver(G=>{for(const Y of G)for(const[H,E]of g)if(E===Y.target){b(H,E);break}}),x)}function N(G,Y){const H=g.get(G);if(H===Y)return;const E=k();H&&E?.unobserve(H),g.set(G,Y),E?.observe(Y)}function P(){const G=_();for(const[Y,H]of g)G.has(Y)||(x?.unobserve(H),g.delete(Y),s.value.delete(Y))}function L(){He(()=>{P();for(const[G,Y]of g)b(G,Y)})}function ne(){c&&clearTimeout(c),c=setTimeout(()=>{t.value||l.value||e.value.nodes.length===0||!y()||He(()=>{l.value=!0,n(C())})},800)}Pe(t,G=>{if(G){l.value=!1,s.value.clear(),v="",a?.(),M();return}e.value.nodes.length>0&&(L(),ne())}),Pe(()=>e.value.nodes.map(G=>G.id).join(","),G=>{G!==f&&(f=G,G&&(l.value=!1,v="",a?.(),M(),L(),ne()))});const q=O(()=>e.value.nodes.map(G=>{const Y=s.value.get(G.id);return Y?{...G,width:Y.w,height:Y.h}:G})),D=O(()=>{const G={};for(const[Y,H]of s.value)(H.modelAnchorY!==void 0||H.toolColumns)&&(G[Y]={modelAnchorY:H.modelAnchorY,toolColumns:H.toolColumns});return G});function C(){const G=q.value,Y=e.value.groups;if(G.length===0)return e.value.bounds;let H=1/0,E=1/0,F=-1/0,j=-1/0;for(const X of G)H=Math.min(H,X.x),E=Math.min(E,X.y),F=Math.max(F,X.x+X.width),j=Math.max(j,X.y+X.height);for(const X of Y)H=Math.min(H,X.x),E=Math.min(E,X.y),F=Math.max(F,X.x+X.width),j=Math.max(j,X.y+X.height);return{x:H,y:E,width:F-H,height:j-E}}function T(){d&&cancelAnimationFrame(d),d=requestAnimationFrame(()=>{const G=S();G!==v&&(v=G,o(Object.fromEntries(s.value))),!(t.value||!y())&&(r&&clearTimeout(r),r=setTimeout(()=>{t.value||!y()||(c&&clearTimeout(c),c=null,l.value=!0,He(()=>{n(C()),i&&clearTimeout(i),i=setTimeout(()=>n(C()),220)}))},180))})}function b(G,Y){He(()=>{const H=Y.offsetWidth,E=Y.offsetHeight;if(H<=0||E<=0)return;const F=Y.getBoundingClientRect(),j=H>0&&F.width>0?F.width/H:1,X=E>0&&F.height>0?F.height/E:1;let he;const se=Y.querySelector("[data-model-anchor]");if(se&&F.height>0){const le=se.getBoundingClientRect();le.height>0&&(he=Fn(le.top+le.height/2-F.top,X))}let fe;const z=Y.querySelectorAll("[data-tool-column]");if(z.length>0&&F.width>0){fe={};for(const le of z){const ie=le.dataset.toolColumn;if(!ie)continue;const ve=le.getBoundingClientRect();fe[ie]={left:Fn(ve.left-F.left,j),width:Fn(ve.width,j)}}}const U=s.value.get(G),J=U?.w!==H||U?.h!==E;if(!(U?.w===H&&U?.h===E&&U?.modelAnchorY===he&&zn(U?.toolColumns)===zn(fe))){if(s.value.set(G,{w:H,h:E,modelAnchorY:he,toolColumns:fe}),l.value&&!J){const le=S();le!==v&&(v=le,o(Object.fromEntries(s.value)));return}T()}})}function A(G,Y){N(G,Y),b(G,Y)}return Et(()=>{r&&clearTimeout(r),i&&clearTimeout(i),c&&clearTimeout(c),d&&cancelAnimationFrame(d),x?.disconnect(),x=null,g.clear()}),{layoutStable:l,measurements:s,nodesWithMeasuredSizes:q,nodeMetrics:D,measureNode:A,measuredBounds:C}}function Al(e){const t=B(null);let n=0,o="",a=0,l="",s=null,r=null;function i(v){const x=e.measurements.value.get(v.id);return{x:v.x,y:v.y,width:x?.w??v.width,height:x?.h??v.height}}function c(v){if(!e.shouldHandleClick())return;const x=v.target;x instanceof Element&&(x.closest("[data-canvas-node]")||x.closest("[data-canvas-group]"))||(t.value=null,e.onDeselect())}function d(v,x){if(!e.shouldHandleClick())return;const g=v.target;if(g instanceof Element&&g.closest("[data-canvas-node]"))return;const u=Date.now(),y=u-n<350&&o===x.id;if(n=u,o=x.id,!y){e.focusNode(x);return}const S=e.containerRef.value;if(!S)return;const _=S.getBoundingClientRect(),M=40,k=(_.width-M*2)/x.width,N=(_.height-M*2)/x.height;e.focusNode(x,Math.min(k,N,1.5))}function f(v){if(!e.shouldHandleClick())return;e.selectedNodeId.value||e.saveViewport(),e.onSelectNode(v);const x=i(v);t.value=x;const g=Date.now(),u=g-a<350&&l===v.id;a=g,l=v.id,e.focusNode(x,u?1.2:void 0)}return Pe(e.selectedNodeId,(v,x)=>{if(!v){t.value=null,x&&e.restoreViewport();return}const g=e.layout.value.nodes.find(u=>u.id===v);g&&(t.value=i(g))}),ea(()=>{s=new ResizeObserver(()=>{r&&clearTimeout(r),r=setTimeout(()=>{const v=t.value,x=e.containerRef.value;if(!v||!x||!e.layoutStable.value)return;const g=x.getBoundingClientRect();let u=e.viewportState.value.scale;const y=60;if(v.width>0&&v.height>0){const S=(g.width-y*2)/v.width,_=(g.height-y*2)/v.height,M=Math.min(S,_);u>M&&M>.1&&(u=M)}e.focusNode(v,u)},320)}),e.containerRef.value&&s.observe(e.containerRef.value)}),Et(()=>{s?.disconnect(),r&&clearTimeout(r)}),{handleCanvasClick:c,handleGroupClick:d,handleNodeSelect:f}}const en=6,Nl=250;function Pl(e,t={}){const{minScale:n=.1,maxScale:o=2.5,padding:a=80,panPadding:l=a}=t,s=B({x:0,y:0,scale:1}),r=B(!1),i=B(!1),c={x:0,y:0,viewX:0,viewY:0},d={x:0,y:0,time:0};let f=null,v=!1,x=0,g=null,u=null,y=null;const S=150;function _(){i.value=!0,u&&clearTimeout(u),u=setTimeout(()=>{i.value=!1,u=null},S)}let M=null,k=!1,N=!1,P=null;function L(){k=!0,N=!0}function ne(){g&&clearTimeout(g),g=setTimeout(()=>{const{x:m,y:w,scale:V}=s.value,oe=Math.round(m/V)*V,de=Math.round(w/V)*V;(oe!==m||de!==w)&&(s.value=b({x:oe,y:de,scale:V}))},120)}const q=O(()=>{const{x:m,y:w,scale:V}=s.value;return i.value?{transform:`translate3d(${m}px, ${w}px, 0) scale(${V})`,transformOrigin:"0 0",willChange:"transform"}:{transform:`translate3d(${m/V}px, ${w/V}px, 0)`,zoom:V,transformOrigin:"0 0",willChange:"transform"}}),D=O(()=>Math.round(s.value.scale*100));function C(m){return Math.min(o,Math.max(n,m))}function T(m,w,V){return Math.min(V,Math.max(w,m))}function b(m){const w=C(m.scale),V=e.value,oe=P;if(!V||!oe||oe.width<=0||oe.height<=0)return{...m,scale:w};const de=V.getBoundingClientRect();if(de.width<=0||de.height<=0)return{...m,scale:w};const te=Math.max(0,l)/w,re=Math.max(0,l)/w,be=(de.width/2-m.x)/w,ke=(de.height/2-m.y)/w,ge=T(be,oe.x-te,oe.x+oe.width+te),Se=T(ke,oe.y-re,oe.y+oe.height+re);return{x:de.width/2-ge*w,y:de.height/2-Se*w,scale:w}}function A(m,w=!1){s.value=b(m),w&&ne()}function G(m,w,V){const oe=C(m),de=s.value,te=oe/de.scale;A({x:w-(w-s.value.x)*te,y:V-(V-s.value.y)*te,scale:oe},!0)}function Y(m){const w=e.value;if(w){if(m.ctrlKey||m.metaKey){m.preventDefault(),m.stopPropagation?.(),L(),_();const V=w.getBoundingClientRect(),oe=m.clientX-V.left,de=m.clientY-V.top,te=Math.min(Math.abs(m.deltaY),10)/10,be=1+(m.deltaY>0?-1:1)*.03*te;G(s.value.scale*be,oe,de);return}m.preventDefault(),m.stopPropagation?.(),L(),_(),A({...s.value,x:s.value.x-m.deltaX,y:s.value.y-m.deltaY},!0)}}function H(m){m.button!==0&&m.button!==1||(f=m.pointerId,r.value=!1,c.x=m.clientX,c.y=m.clientY,c.viewX=s.value.x,c.viewY=s.value.y,d.x=m.clientX,d.y=m.clientY,d.time=Date.now(),v=!1)}function E(m){if(f!==m.pointerId)return;const w=m.clientX-d.x,V=m.clientY-d.y,oe=w*w+V*V;!r.value&&oe>en*en&&(r.value=!0,v||(m.currentTarget.setPointerCapture(m.pointerId),v=!0)),r.value&&(_(),A({...s.value,x:c.viewX+(m.clientX-c.x),y:c.viewY+(m.clientY-c.y)}))}function F(m){if(f!==m.pointerId)return;const w=m.clientX-d.x,V=m.clientY-d.y,oe=w*w+V*V,de=Date.now()-d.time<=Nl&&oe<=en*en;r.value&&L(),de||(x=Date.now()+32),r.value=!1,f=null,v&&(m.currentTarget?.releasePointerCapture(m.pointerId),v=!1),ne()}function j(){return Date.now()>=x}function X(){const m=e.value;if(!m)return{cx:0,cy:0};const w=m.getBoundingClientRect();return{cx:w.width/2,cy:w.height/2}}function he(){L(),_();const{cx:m,cy:w}=X();G(s.value.scale+.1,m,w)}function se(){L(),_();const{cx:m,cy:w}=X();G(s.value.scale-.1,m,w)}function fe(m,w={}){P=m.width>0&&m.height>0?{...m}:null;const V=e.value;if(!V||m.width===0||m.height===0||!w.force&&N)return;const oe=V.getBoundingClientRect(),de=(oe.width-a*2)/m.width,te=(oe.height-a*2)/m.height,re=C(Math.min(de,te,1));A({x:(oe.width-m.width*re)/2-m.x*re,y:(oe.height-m.height*re)/2-m.y*re,scale:re}),N=!1}function z(){N=!1}function U(){A({x:0,y:0,scale:1})}function J(m){P=m&&m.width>0&&m.height>0?{...m}:null,P&&(s.value=b(s.value))}function le(){M={...s.value},k=!1}function ie(){const m=M;M=null,!(!m||k)&&ve(m)}function ve(m,w){g&&(clearTimeout(g),g=null);const V={...s.value},oe=300,de=performance.now();y&&cancelAnimationFrame(y);function te(re){const be=Math.min((re-de)/oe,1),ke=1-Math.pow(1-be,3);_(),s.value=b({x:V.x+(m.x-V.x)*ke,y:V.y+(m.y-V.y)*ke,scale:V.scale+(m.scale-V.scale)*ke}),be<1?y=requestAnimationFrame(te):(s.value=b(w?w():m),y=null)}y=requestAnimationFrame(te)}function ee(){g&&(clearTimeout(g),g=null),u&&(clearTimeout(u),u=null),y&&(cancelAnimationFrame(y),y=null),f=null,v=!1,r.value=!1,i.value=!1}qr()&&Gr(ee);function Z(m,w){const V=e.value;if(!V)return;const oe=C(w??s.value.scale),de=m.x+m.width/2,te=m.y+m.height/2;function re(){const be=V.getBoundingClientRect();return{x:be.width/2-de*oe,y:be.height/2-te*oe,scale:oe}}ve(re(),re)}return{state:s,isPanning:r,transformStyle:q,scalePercent:D,onWheel:Y,onPointerDown:H,onPointerMove:E,onPointerUp:F,shouldHandleClick:j,zoomIn:he,zoomOut:se,fitToView:fe,resetAutoFitLock:z,focusNode:Z,resetView:U,setContentBounds:J,saveViewport:le,restoreViewport:ie}}function Ll(e){return!e.hasAgent||e.hasError?!1:e.loadingComposition?!0:e.hasRevealedStableDiagram?!1:!e.layoutStable||e.loadingAsyncDetail}const Rl={class:"pointer-events-none absolute inset-0 h-full w-full","aria-hidden":"true"},Ol=_e({__name:"CanvasGrid",setup(e){return(t,n)=>(p(),$("svg",Rl,[...n[0]||(n[0]=[h("defs",null,[h("pattern",{id:"canvas-dot-grid",x:"0",y:"0",width:"24",height:"24",patternUnits:"userSpaceOnUse"},[h("circle",{cx:"12",cy:"12",r:"1",class:"fill-neutral-400/20 dark:fill-neutral-500/20"})])],-1),h("rect",{width:"100%",height:"100%",fill:"url(#canvas-dot-grid)"},null,-1)])]))}}),Oe=8,Be=20,Ee=20,tn=18,Ge=20,nn=8,rt=8,Dl=12,Re=10,Bl=10,an=16,on=24,Vl=38,Xa=44,Ul=12;function Ka(e,t,n){const o=n==="left"||n==="right"?e.height:e.width;if(t<=1)return[n==="left"||n==="right"?e.y+e.height/2:e.x+e.width/2];const a=Math.min(Be,o/(t+1)),l=n==="left"||n==="right"?e.y:e.x,s=l+a,i=(l+o-a-s)/(t-1);return Array.from({length:t},(c,d)=>s+d*i)}function Hl(e){const t=new Set,n=[];for(const o of e){const a=[o.kind??"structural",o.from,o.to,o.sideId,o.toolKind??""].join("|");t.has(a)||(t.add(a),n.push(o))}return n}function yn(e){return{id:e.id,x:e.x-tn,y:e.y-tn,width:e.width+tn*2,height:e.height+tn*2}}function Ht(e,t,n=t){return e.map(o=>({id:o.id,x:o.x-t,y:o.y-n,width:o.width+t*2,height:o.height+n*2}))}function mn(e,t,n){return t>=e.x&&t<=e.x+e.width&&n>=e.y&&n<=e.y+e.height}function Ya(e){return{x:e.x+e.width/2,y:e.y+e.height/2}}function un(e,t,n){const o=Ya(e),a=Ya(t);return n.map(yn).filter(l=>mn(l,o.x,o.y)&&!mn(l,a.x,a.y))}function zl(e,t,n){const o=Math.min(e.x,t.x),a=Math.max(e.x+e.width,t.x+t.width),l=Math.min(e.y,t.y),s=Math.max(e.y+e.height,t.y+t.height);return n.map(yn).filter(r=>!mn(r,e.x+e.width/2,e.y+e.height/2)&&!mn(r,t.x+t.width/2,t.y+t.height/2)&&r.x<=a+Ee&&r.x+r.width>=o-Ee&&r.y<=s+Ee&&r.y+r.height>=l-Ee)}function Mt(e,t,n){const o=[{x:e.x+e.width/2,y:e.y+e.height/2},{x:t.x+t.width/2,y:t.y+t.height/2}];return n.filter(a=>!o.some(l=>l.x>=a.x&&l.x<=a.x+a.width&&l.y>=a.y&&l.y<=a.y+a.height)).map(yn)}function Ze(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n);for(const r of o){if(a.has(r.id))continue;const i=r.x-Ee,c=r.x+r.width+Ee,d=r.y-Ee,f=r.y+r.height+Ee;if(e>=d&&e<=f&&s>=i&&l<=c)return r}return null}function Ct(e,t,n,o,a,l=Ee,s=Ee){const r=Math.min(t,n),i=Math.max(t,n);for(const c of o){if(a.has(c.id))continue;const d=c.x-l,f=c.x+c.width+l,v=c.y-s,x=c.y+c.height+s;if(e>=d&&e<=f&&i>=v&&r<=x)return c}return null}function Gn(e,t,n,o,a,l,s){const r=Math.min(o,a),i=Math.max(o,a);let c=e;for(let d=0;d<6;d++){const f=Ze(c,t,n,l,s);if(!f)return c;const v=f.y-Ee-Ge,x=f.y+f.height+Ee+Ge,g=Math.abs(v-c)<=Math.abs(x-c)?v:x;c=Math.max(r-200,Math.min(i+200,g))}return c}function hn(e,t,n,o,a,l,s,r,i){let c=r<0?Math.min(e,i-1):Math.max(e,i+1);for(let d=0;d<6;d++){const f=Ze(c,t,n,l,s);if(!f)return c;c=r<0?f.y-Ee-Ge:f.y+f.height+Ee+Ge}return c}function So(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n);return _o(e,da(l,s,o,a))}function da(e,t,n,o,a=Ee+Ge,l=Ee){const s=[];for(const i of n){if(o.has(i.id))continue;const c=i.y-l;i.y+i.height+l<e||c>t||s.push([i.x-a,i.x+i.width+a])}if(s.length===0)return s;s.sort((i,c)=>i[0]-c[0]);const r=[s[0]];for(let i=1;i<s.length;i++){const c=r[r.length-1],d=s[i];d[0]<=c[1]?c[1]=Math.max(c[1],d[1]):r.push(d)}return r}function _o(e,t){if(t.length===0||!t.find(([s,r])=>e>=s&&e<=r))return e;const o=[t[0][0]-1,t[t.length-1][1]+1];for(let s=0;s<t.length-1;s++){const r=t[s][1]+1,i=t[s+1][0]-1;i>=r&&o.push((r+i)/2)}let a=o[0],l=Math.abs(a-e);for(const s of o){const r=Math.abs(s-e);r<l&&(a=s,l=r)}return a}function jt(e,t,n,o,a,l,s,r=Ee+Ge,i=Ee){const c=da(Math.min(t,n),Math.max(t,n),o,a,r,i);if(c.length===0)return e;let d=l<0?Math.min(e,s-1):Math.max(e,s+1);for(let f=0;f<c.length;f++){const v=c.find(([x,g])=>d>=x&&d<=g);if(!v)return d;d=l<0?v[0]-1:v[1]+1}return d}function qa(e,t){return e<=1?[0]:Array.from({length:e},(n,o)=>o*t)}function Io(e){if(e.length<=1)return[e];const t=[];return e.forEach((n,o)=>{const a=[...e.slice(0,o),...e.slice(o+1)];for(const l of Io(a))t.push([n,...l])}),t}function ua(e,t){if(e.orientation===t.orientation)return!1;const n=e.orientation==="horizontal"?e:t,o=e.orientation==="vertical"?e:t,a=Math.min(n.x1,n.x2),l=Math.max(n.x1,n.x2),s=Math.min(o.y1,o.y2),r=Math.max(o.y1,o.y2);return o.x1>a&&o.x1<l&&n.y1>s&&n.y1<r}function Fl(e,t,n,o,a,l){const s=[];return Math.abs(n-e)>=1&&s.push({orientation:"horizontal",x1:e,y1:t,x2:n,y2:t}),s.push({orientation:"vertical",x1:n,y1:t,x2:n,y2:o}),s.push({orientation:"horizontal",x1:n,y1:o,x2:a,y2:o}),s.push({orientation:"vertical",x1:a,y1:o,x2:a,y2:l}),s}function jl(e,t,n,o,a){if(Math.abs(e-n)<1)return`M ${e} ${t} L ${n} ${o}`;const l=Math.min(Oe,Math.abs(a-t)/2,Math.abs(o-a)/2,Math.abs(n-e)/2),s=n>e?1:-1,r=a>t?1:-1,i=o>a?1:-1;return[`M ${e} ${t}`,`L ${e} ${a-l*r}`,`Q ${e} ${a} ${e+l*s} ${a}`,`L ${n-l*s} ${a}`,`Q ${n} ${a} ${n} ${a+l*i}`,`L ${n} ${o}`].join(" ")}function Xl(e,t,n,o,a){return Math.abs(e-n)<1?[{orientation:"vertical",x1:e,y1:t,x2:n,y2:o}]:[{orientation:"vertical",x1:e,y1:t,x2:e,y2:a},{orientation:"horizontal",x1:e,y1:a,x2:n,y2:a},{orientation:"vertical",x1:n,y1:a,x2:n,y2:o}]}function bn(e,t,n){return{d:`M ${e} ${t} L ${n} ${t}`,segments:[{orientation:"horizontal",x1:e,y1:t,x2:n,y2:t}]}}function ca(e,t,n){return{d:`M ${e} ${t} L ${e} ${n}`,segments:[{orientation:"vertical",x1:e,y1:t,x2:e,y2:n}]}}function Ga(e,t,n,o){if(Math.abs(t-o)<1)return bn(e,t,n);if(Math.abs(e-n)<1)return ca(e,t,o);const a=n>e?1:-1,l=o>t?1:-1,s=Math.min(Oe,Math.abs(n-e)/2,Math.abs(o-t)/2);return{d:[`M ${e} ${t}`,`L ${n-s*a} ${t}`,`Q ${n} ${t} ${n} ${t+s*l}`,`L ${n} ${o}`].join(" "),segments:[{orientation:"horizontal",x1:e,y1:t,x2:n,y2:t},{orientation:"vertical",x1:n,y1:t,x2:n,y2:o}]}}function Kl(e,t,n,o,a){if(Math.abs(t-a)<1)return bn(e,t,o);const l=n>e?1:-1,s=o>n?1:-1,r=a>t?1:-1,i=Math.min(Oe,Math.abs(n-e)/2||Oe,Math.abs(a-t)/2||Oe,Math.abs(o-n)/2||Oe);return Math.abs(n-e)<2?Wn(e,t,o,a):{d:[`M ${e} ${t}`,`L ${n-i*l} ${t}`,`Q ${n} ${t} ${n} ${t+i*r}`,`L ${n} ${a-i*r}`,`Q ${n} ${a} ${n+i*s} ${a}`,`L ${o} ${a}`].join(" "),segments:[{orientation:"horizontal",x1:e,y1:t,x2:n,y2:t},{orientation:"vertical",x1:n,y1:t,x2:n,y2:a},{orientation:"horizontal",x1:n,y1:a,x2:o,y2:a}]}}function Wn(e,t,n,o){if(Math.abs(e-n)<1)return ca(e,t,o);if(Math.abs(t-o)<1)return bn(e,t,n);const a=n>e?1:-1,l=o>t?1:-1,s=Math.min(Oe,Math.abs(n-e)/2,Math.abs(o-t)/2);return{d:[`M ${e} ${t}`,`L ${e} ${o-s*l}`,`Q ${e} ${o} ${e+s*a} ${o}`,`L ${n} ${o}`].join(" "),segments:[{orientation:"vertical",x1:e,y1:t,x2:e,y2:o},{orientation:"horizontal",x1:e,y1:o,x2:n,y2:o}]}}function Yl(e,t,n,o,a,l,s){if(Math.abs(t-o)<1&&!Ze(t,e,n,a,l))return bn(e,t,n);if(Math.abs(e-n)<1&&!Ct(e,t,o,a,l))return ca(e,t,o);const r=!Ze(t,e,n,a,l)&&!Ct(n,t,o,a,l),i=!Ct(e,t,o,a,l)&&!Ze(o,e,n,a,l);return r&&i?s==="horizontal"?Ga(e,t,n,o):Wn(e,t,n,o):r?Ga(e,t,n,o):i?Wn(e,t,n,o):null}function ql(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function Eo(e,t){if(e.orientation==="horizontal"){const a=Math.min(e.x1,e.x2),l=Math.max(e.x1,e.x2);return l-a<2?null:{id:t,x:a,y:e.y1-nn,width:l-a,height:nn*2}}const n=Math.min(e.y1,e.y2),o=Math.max(e.y1,e.y2);return o-n<2?null:{id:t,x:e.x1-nn,y:n,width:nn*2,height:o-n}}function Wa(e,t,n){return e.some((o,a)=>{const l=Eo(o,`segment-${a}`);return l?t.some(s=>n.has(s.id)?!1:ql(l,s)):!1})}function Gl(e){const t=[];for(const n of e)n.segments.forEach((o,a)=>{const l=Eo(o,`edge:${n.id}:${a}`);l&&t.push(l)});return t}function jn(e,t,n,o,a){const l=[...un(e,t,n),...zl(e,t,n)],s=Array.from(new Map(l.map(r=>[r.id,r])).values());return s.length===0?o:a?Math.max(o,...s.map(r=>r.y+r.height+Ee+Ge)):Math.min(o,...s.map(r=>r.y-Ee-Ge))}function pt(e,t){const n=t?.[e.id],o=e.type==="model"?Vl:e.type==="side"||e.type==="prompt"||e.type==="tool"&&e.data.kind==="prompt"?Xa:e.height/2,a=n?.modelAnchorY??o;return e.y+Math.max(Be,Math.min(e.height-Be,a))}function pn(e,t,n,o,a,l){let s=l;const r=n<0?e.x:e.x+e.width;for(const i of o){if(a.has(i.id))continue;const c=i.y-Ee,d=i.y+i.height+Ee;if(!(t<c||t>d))if(n<0){const f=i.x+i.width+Ee;if(f>=r)continue;s=Math.min(s,r-f-1)}else{const f=i.x-Ee;if(f<=r)continue;s=Math.min(s,f-r-1)}}return Math.max(0,s)}function Wl(e,t,n,o,a,l){const s=t.y,r=t.x,i=[];for(const d of[-1,1]){const f=pn(e,s,d,a,l,Dl),v=r+d*Math.max(0,f);Ct(v,s,n,a,l,rt,rt)||i.push(v)}for(const d of[-1,1]){const f=pn(e,s,d,a,l,14);i.push(jt(r+d*f,s,n,a,l,d,r,rt,rt))}return Array.from(new Set(i.map(d=>Math.round(d*1e3)/1e3))).reduce((d,f)=>{const v=Ze(n,d,o,a,l),x=Ze(n,f,o,a,l);return!!x!=!!v?x?d:f:Math.abs(f-r)<Math.abs(d-r)?f:d})}function Ql(e,t,n,o,a,l,s,r){const i=t.x,c=t.y,d=o.x,f=o.y,v=Yl(i,c,d,f,s,r,"horizontal");if(v&&v.segments.length===1&&!Wa(v.segments,s,r))return v;const x=t.side==="left"?-1:1,u=pn(e,c,x,s,r,14),y=i+x*u,S=G=>!Ze(c,i,G,s,r),_=jt(y,c,f,s,r,x,i);if((d-i)*x>=0&&Math.abs(_-i)>1&&Math.abs(_-d)>1&&S(_)&&!Ct(_,c,f,s,r)&&!Ze(f,_,d,s,r)){const G=Kl(i,c,_,d,f);if(!Wa(G.segments,s,r))return G}let k=Gn(a,y,d,c,f,s,r),N=jt(y,c,k,s,r,x,i);S(N)||(N=S(y)?y:i),k=Gn(a,N,d,c,f,s,r);const P=Math.abs(N-i),L=o.side==="left"?n.x-(Be+24):n.x+n.width+Be+24,ne=l??So(L,k,f,s,r),q=N>i?1:-1,D=k>c?1:-1,C=ne>N?1:-1,T=f>k?1:-1,b=d>ne?1:-1,A=Math.min(Oe,Math.abs(P)/2||Oe,Math.abs(k-c)/2||Oe,Math.abs(ne-N)/2||Oe,Math.abs(f-k)/2||Oe,Math.abs(d-ne)/2||Oe);return P<2?{d:[`M ${i} ${c}`,`L ${i} ${k-A*D}`,`Q ${i} ${k} ${i+A*C} ${k}`,`L ${ne-A*C} ${k}`,`Q ${ne} ${k} ${ne} ${k+A*T}`,`L ${ne} ${f-A*T}`,`Q ${ne} ${f} ${ne+A*b} ${f}`,`L ${d} ${f}`].join(" "),segments:[{orientation:"vertical",x1:i,y1:c,x2:i,y2:k},{orientation:"horizontal",x1:i,y1:k,x2:ne,y2:k},{orientation:"vertical",x1:ne,y1:k,x2:ne,y2:f},{orientation:"horizontal",x1:ne,y1:f,x2:d,y2:f}]}:{d:[`M ${i} ${c}`,`L ${N-A*q} ${c}`,`Q ${N} ${c} ${N} ${c+A*D}`,`L ${N} ${k-A*D}`,`Q ${N} ${k} ${N+A*C} ${k}`,`L ${ne-A*C} ${k}`,`Q ${ne} ${k} ${ne} ${k+A*T}`,`L ${ne} ${f-A*T}`,`Q ${ne} ${f} ${ne+A*b} ${f}`,`L ${d} ${f}`].join(" "),segments:[{orientation:"horizontal",x1:i,y1:c,x2:N,y2:c},{orientation:"vertical",x1:N,y1:c,x2:N,y2:k},{orientation:"horizontal",x1:N,y1:k,x2:ne,y2:k},{orientation:"vertical",x1:ne,y1:k,x2:ne,y2:f},{orientation:"horizontal",x1:ne,y1:f,x2:d,y2:f}]}}function Jl(e,t,n,o,a,l,s,r){const i=t.x,c=t.y,d=n.x,f=n.y,v=t.side==="left"?-1:1,x=pn(e,c,v,s,r,14),g=i+v*x,u=a??jt(g,c,o,l,r,v,i,rt,rt),y=a!==null?o:hn(o,u,d,c,f,s,r,f>=c?1:-1,c),S=Math.abs(u-i),_=u>i?1:-1,M=y>c?1:-1,k=d>u?1:-1,N=f>y?1:-1,P=Math.min(Oe,Math.abs(S)/2||Oe,Math.abs(y-c)/2||Oe,Math.abs(d-u)/2||Oe,Math.abs(f-y)/2||Oe);return S<2?{d:[`M ${i} ${c}`,`L ${i} ${y-P*M}`,`Q ${i} ${y} ${i+P*k} ${y}`,`L ${d-P*k} ${y}`,`Q ${d} ${y} ${d} ${y+P*N}`,`L ${d} ${f}`].join(" "),segments:segmentsViaMidY(i,c,d,f,y)}:{d:[`M ${i} ${c}`,`L ${u-P*_} ${c}`,`Q ${u} ${c} ${u} ${c+P*M}`,`L ${u} ${y-P*M}`,`Q ${u} ${y} ${u+P*k} ${y}`,`L ${d-P*k} ${y}`,`Q ${d} ${y} ${d} ${y+P*N}`,`L ${d} ${f}`].join(" "),segments:[{orientation:"horizontal",x1:i,y1:c,x2:u,y2:c},{orientation:"vertical",x1:u,y1:c,x2:u,y2:y},{orientation:"horizontal",x1:u,y1:y,x2:d,y2:y},{orientation:"vertical",x1:d,y1:y,x2:d,y2:f}]}}function Zl(e){switch(e){case"outboard-left":case"sidebar-left":return"right";case"outboard-right":case"sidebar-right":return"left";case"below-row":return"top";default:return"left"}}function mt(e,t,n){if((n&&n.type==="model"?n.placementMode:void 0)==="below-row"){const r=e.x+e.width/2,c=(n?n.x+n.width/2:r)>=r?"right":"left";return{side:c,x:c==="right"?e.x+e.width:e.x,y:pt(e,t)}}if(n?.type==="model"&&ei(e))return{side:"left",x:e.x,y:pt(e,t)};const a=e.x+e.width/2,s=(n?n.x+n.width/2:a)>=a?"right":"left";return{side:s,x:s==="right"?e.x+e.width:e.x,y:pt(e,t)}}function ei(e){return e.type==="prompt"||e.type==="side"&&e.data.mode==="ai"||e.type==="tool"&&e.data.kind==="prompt"}const We=8,vn=6,ti=12,Qa=6;function Ye(e){return e.x+e.width/2}function ni(e){const t=[];for(const a of e){const l=t[t.length-1];l&&Math.abs(l.x-a.x)<1&&Math.abs(l.y-a.y)<1||t.push(a)}if(t.length===0)return"";if(t.length===1)return`M ${t[0].x} ${t[0].y}`;const n=[`M ${t[0].x} ${t[0].y}`];for(let a=1;a<t.length-1;a++){const l=t[a-1],s=t[a],r=t[a+1],i=Math.abs(s.x-l.x)+Math.abs(s.y-l.y),c=Math.abs(r.x-s.x)+Math.abs(r.y-s.y),d=Math.min(Oe,i/2,c/2);if(d<1){n.push(`L ${s.x} ${s.y}`);continue}const f=Math.sign(s.x-l.x),v=Math.sign(s.y-l.y),x=Math.sign(r.x-s.x),g=Math.sign(r.y-s.y),u={x:s.x-f*d,y:s.y-v*d},y={x:s.x+x*d,y:s.y+g*d};n.push(`L ${u.x} ${u.y}`),n.push(`Q ${s.x} ${s.y} ${y.x} ${y.y}`)}const o=t[t.length-1];return n.push(`L ${o.x} ${o.y}`),n.join(" ")}function ai(e){if(e.length===0)return"";const t=[{x:e[0].x1,y:e[0].y1},...e.map(n=>({x:n.x2,y:n.y2}))];return ni(t)}function Ja(e){return e.length===0?"":[{x:e[0].x1,y:e[0].y1},...e.map(n=>({x:n.x2,y:n.y2}))].map((n,o)=>`${o===0?"M":"L"} ${n.x} ${n.y}`).join(" ")}function oi(e){return e==="tool"||e==="provider"||e==="mcp"}function ri(e){return Math.round(e/ti)}function Qn(e){const t=[];for(let n=1;n<e.length;n++){const o=e[n-1],a=e[n];if(!(Math.abs(o.x-a.x)<1&&Math.abs(o.y-a.y)<1)){if(Math.abs(o.y-a.y)<1){t.push({orientation:"horizontal",x1:o.x,y1:o.y,x2:a.x,y2:o.y});continue}if(Math.abs(o.x-a.x)>=1&&Math.abs(o.y-a.y)>=1){t.push({orientation:"vertical",x1:o.x,y1:o.y,x2:o.x,y2:a.y}),t.push({orientation:"horizontal",x1:o.x,y1:a.y,x2:a.x,y2:a.y});continue}t.push({orientation:"vertical",x1:o.x,y1:o.y,x2:o.x,y2:a.y})}}return t}function Za(e,t,n,o,a,l,s){const r=a.rowLaneY,i=Qn([{x:e,y:t},{x:e,y:r},{x:n,y:r},{x:n,y:o}]),c=si(e,t,r,l,s),d=li(r,e,n,l,s)??ii(r,e,n,l,s),f=c??d;if(!f)return{d:Ja(i),segments:i};const v=n<e?-1:1,x=vn+Math.abs(a.aisleOffset),g=v<0?f.x-x:f.x+f.width+x,u=f.y+f.height+vn,y=a.rowIndex>0?u:Math.min(a.sourceLaneY,Math.max(r+We/2,u)),S=r>=t?Math.max(t+We,a.escapeLaneY):Math.min(t-We,y),_=Qn([{x:e,y:t},{x:e,y:S},{x:g,y:S},{x:g,y:r},{x:n,y:r},{x:n,y:o}]);return{d:Ja(_),segments:_}}function Ao(e,t){if(e.orientation!==t.orientation)return 0;if(e.orientation==="horizontal"){if(Math.abs(e.y1-t.y1)>1)return 0;const s=Math.min(e.x1,e.x2),r=Math.max(e.x1,e.x2),i=Math.min(t.x1,t.x2),c=Math.max(t.x1,t.x2);return Math.max(0,Math.min(r,c)-Math.max(s,i))}if(Math.abs(e.x1-t.x1)>1)return 0;const n=Math.min(e.y1,e.y2),o=Math.max(e.y1,e.y2),a=Math.min(t.y1,t.y2),l=Math.max(t.y1,t.y2);return Math.max(0,Math.min(o,l)-Math.max(n,a))}function si(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n),r=n>=t?1:-1;let i=null,c=Number.POSITIVE_INFINITY;for(const d of o)if(!a.has(d.id)&&e>d.x+1&&e<d.x+d.width-1&&Math.max(l,d.y+1)<Math.min(s,d.y+d.height-1)){const f=r>0?d.y:d.y+d.height,v=Math.abs(f-t);v<c&&(i=d,c=v)}return i}function li(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n),r=n>=t?1:-1;let i=null,c=Number.POSITIVE_INFINITY;for(const d of o)if(!a.has(d.id)&&e>d.y+1&&e<d.y+d.height-1&&Math.max(l,d.x+1)<Math.min(s,d.x+d.width-1)){const f=r>0?d.x:d.x+d.width,v=Math.abs(f-t);v<c&&(i=d,c=v)}return i}function ii(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n),r=n>=t?1:-1;let i=null,c=Number.POSITIVE_INFINITY;for(const d of o)if(!(a.has(d.id)||!d.id.includes("__model-"))&&e>d.y-We*4&&e<d.y+d.height+1&&Math.max(l,d.x+1)<Math.min(s,d.x+d.width-1)){const f=r>0?d.x:d.x+d.width,v=Math.abs(f-t);v<c&&(i=d,c=v)}return i}function di(e){let t=0;for(let n=0;n<e.length;n++)for(let o=n+1;o<e.length;o++)for(const a of e[n].segments)for(const l of e[o].segments)ua(a,l)&&(t+=1e4),t+=Ao(a,l)*25;return t}function eo(e,t){let n=0;for(const o of t)for(const a of e)for(const l of o.segments)ua(a,l)&&(n+=1e5),n+=Ao(a,l)*1e3;return n}function ui(e,t,n){return e.some(o=>o.orientation==="horizontal"?!!Ze(o.y1,o.x1,o.x2,t,n):!!Ct(o.x1,o.y1,o.y2,t,n))}function ci(e,t,n,o,a,l,s,r){const i=Xl(e,t,n,o,a);if(!ui(i,s,r))return{d:jl(e,t,n,o,a),segments:i};const c=_o(n+l,da(a,o,s,r,10,10)),d=hn(o-Math.min(Math.max((o-a)/4,Be),48),c,n,a,o,s,r,-1,o),f=Qn([{x:e,y:t},{x:e,y:a},{x:c,y:a},{x:c,y:d},{x:n,y:d},{x:n,y:o}]);return{d:ai(f),segments:f}}function to(e,t,n,o){return[...n,...Mt(e,t,o)]}function fi(e,t,n,o){const a=new Map;for(const x of e)a.set(x.id,x);const l=new Map,s=new Map;for(const x of t){if(!a.has(x.from)||!a.has(x.to))continue;const g=l.get(x.from);g?g.push(x):l.set(x.from,[x]);const u=s.get(x.to);u?u.push(x):s.set(x.to,[x])}for(const[,x]of l)x.sort((g,u)=>{const y=a.get(g.to),S=a.get(u.to);return y.x+y.width/2-(S.x+S.width/2)});for(const[,x]of s)x.sort((g,u)=>{const y=a.get(g.from),S=a.get(u.from);return y.x+y.width/2-(S.x+S.width/2)});const r=new Map,i=new Map;for(const[x,g]of l){const u=a.get(x);if(u.type==="agent"){g.forEach(y=>{const S=y.sideId==="a"?u.x+u.width*.25:u.x+u.width*.75;r.set(y.id,S)});continue}if(u.type==="side"&&g.some(y=>y.toolKind)){const S=u.data.tools||[],_=[];S.some(L=>L.kind==="tool"||L.kind==="provider"||L.kind==="mcp")&&_.push("function"),S.some(L=>L.kind==="prompt")&&_.push("prompt"),S.some(L=>L.kind==="subagent")&&_.push("subagent"),S.some(L=>L.kind==="handoff")&&_.push("handoff");const M=_.length>0?.45:1,k=_.length>0?(1-M)/_.length:0,N=new Map;for(const L of g){if(!L.toolKind||_.length===0)continue;const ne=L.toolKind==="tool"||L.toolKind==="provider"||L.toolKind==="mcp"?"function":L.toolKind,q=N.get(ne);q?q.push(L):N.set(ne,[L])}for(const[L,ne]of N)ne.sort((q,D)=>{const C=a.get(q.to),T=a.get(D.to);if(L==="function"){const b=C.y-T.y;if(Math.abs(b)>1)return b}return Ye(C)-Ye(T)});const P=o?.[u.id]?.toolColumns;for(const[L,ne]of N){let q,D;const C=P?.[L];if(C)q=u.x+C.left,D=u.x+C.left+C.width;else{const G=_.indexOf(L);if(G<0)continue;q=u.x+u.width*(M+G*k),D=u.x+u.width*(M+(G+1)*k)}const T=q+Be,b=D-Be,A=ne.length;ne.forEach((G,Y)=>{const H=A===1?(q+D)/2:T+(b-T)*Y/(A-1);r.set(G.id,H)})}g.forEach(L=>{if(r.has(L.id))return;if(L.toolKind&&_.length>0){const D=L.toolKind==="tool"||L.toolKind==="provider"||L.toolKind==="mcp"?"function":L.toolKind,C=_.indexOf(D);if(C>=0){const T=M+C*k+k/2;r.set(L.id,u.x+u.width*T);return}}const ne=a.get(L.to),q=ne.x+ne.width/2;r.set(L.id,Math.max(u.x+Be,Math.min(u.x+u.width-Be,q)))});continue}g.forEach(y=>{const S=a.get(y.to),_=S.x+S.width/2;r.set(y.id,Math.max(u.x+Be,Math.min(u.x+u.width-Be,_)))})}for(const[x,g]of s){const u=a.get(x),y=u.x+u.width/2;g.forEach(S=>i.set(S.id,y))}for(const[x,g]of l){const u=a.get(x);if(!u||g.length<=1)continue;const y=new Map;for(const S of g){const _=r.get(S.id);if(_===void 0)continue;const M=Math.round(_),k=y.get(M);k?k.push(S):y.set(M,[S])}for(const[S,_]of y){if(_.length<=1)continue;_.sort((k,N)=>{const P=a.get(k.to),L=a.get(N.to);return Ye(P)-Ye(L)});const M=r.get(_[0].id)??S;_.forEach((k,N)=>{const P=(N-(_.length-1)/2)*We;r.set(k.id,Math.max(u.x+Be,Math.min(u.x+u.width-Be,M+P)))})}}const c=Array.from(a.values()),d=new Map;for(const x of t){const g=a.get(x.from),u=a.get(x.to);if(!g||!u)continue;const y=d.get(x.from);y?y.push(x):d.set(x.from,[x])}for(const[,x]of d)x.sort((g,u)=>{const y=a.get(g.to),S=a.get(u.to),_=y.y-S.y;return Math.abs(_)>1?_:y.x+y.width/2-(S.x+S.width/2)});const f=new Map,v=new Map;for(const[x,g]of d){const u=a.get(x);if(!u||u.type!=="side")continue;const y=g.filter(Y=>oi(Y.toolKind)).filter(Y=>!!a.get(Y.to)).sort((Y,H)=>{const E=a.get(Y.to),F=a.get(H.to),j=E.y-F.y;return Math.abs(j)>1?j:E.x+E.width/2-(F.x+F.width/2)});if(y.length<=1)continue;const S=y.reduce((Y,H)=>Y+(r.get(H.id)??Ye(u)),0)/y.length,M=y.reduce((Y,H)=>Y+Ye(a.get(H.to)),0)/y.length<S,k=[],N=new Map;for(const Y of y){const H=a.get(Y.to),E=ri(H.y),F=N.get(E);if(F)F.push(Y);else{const j=[Y];N.set(E,j),k.push(j)}}k.sort((Y,H)=>a.get(Y[0].to).y-a.get(H[0].to).y);const P=Math.min(...y.map(Y=>a.get(Y.to).y)),L=u.y+u.height+8,ne=Math.max(L,P-8),q=y.length<=1?0:(ne-L)/(y.length-1);v.set(u.id,ne),k.forEach(Y=>{Y.sort((H,E)=>{const F=a.get(H.to),j=a.get(E.to);return Ye(F)-Ye(j)})});const D=[...y].sort((Y,H)=>(r.get(Y.id)??Ye(u))-(r.get(H.id)??Ye(u))),C=M,T=!M,b=[];for(const Y of[C,!C])for(const H of[T,!T])for(const E of[!1,!0])b.push({sourceReversed:Y,rowReversed:H,aisleReversed:E,preference:(Y===C?0:2)+(H===T?0:1)});let A=new Map,G=Number.POSITIVE_INFINITY;for(const Y of b){const H=new Map,E=new Map;D.forEach((se,fe)=>{H.set(se.id,fe),E.set(se.id,Y.sourceReversed?y.length-1-fe:fe)});const F=new Map,j=k[0]?.length??0;k.forEach((se,fe)=>{const z=Math.min(...se.map(ve=>a.get(ve.to).y)),U=Math.max(L,z-34),J=Math.max(U,z-10),le=se.length<=1?0:(J-U)/(se.length-1),ie=M?1:-1;se.forEach((ve,ee)=>{const Z=E.get(ve.id)??ee,m=Y.rowReversed?se.length-1-ee:ee,w=Y.aisleReversed?y.length-1-(H.get(ve.id)??ee):H.get(ve.id)??ee,V=fe===0&&se.length>1?L+ee*q:L+Z*q,oe=H.get(ve.id)??ee,de=fe===0?Math.max(V,U+m*le-We/2):ne-We+Math.max(0,oe-j)*2,te=M?u.x+u.width+vn:u.x-vn,re=(M?1:-1)*w*We,be=U+m*le,ke=Math.min(z-4,Math.max(be,V+We/2));F.set(ve.id,{rowIndex:fe,sourceLaneY:V,escapeLaneY:de,rowLaneY:ke,aisleX:te,aisleOffset:re,aisleDirection:ie})})});const X=y.map(se=>{const fe=a.get(se.to),z=r.get(se.id)??Ye(u),U=u.y+u.height,J=i.get(se.id)??Ye(fe),le=fe.y,ie=new Set([u.id,fe.id]),ve=to(u,fe,c,n);return Za(z,U,J,le,F.get(se.id),ve,ie)}),he=di(X)+Y.preference;he<G&&(G=he,A=F)}for(const[Y,H]of A)f.set(Y,H)}return t.map(x=>{const g=a.get(x.from),u=a.get(x.to);if(!g||!u)return null;const y=r.get(x.id)??g.x+g.width/2,S=g.y+g.height,_=i.get(x.id)??u.x+u.width/2,M=u.y,k=d.get(x.from)??[x],P=Math.max(0,k.findIndex(G=>G.id===x.id))-(k.length-1)/2,L=S+Math.min((M-S)/2,24)+P*We,q=v.get(x.from)&&g.type==="side"&&!f.has(x.id)?S:L,D=[...c,...Mt(g,u,n)],C=new Set([g.id,u.id]),T=f.get(x.id),b=T?to(g,u,c,n):D,A=T?Za(y,S,_,M,T,b,C):ci(y,S,_,M,Gn(q,y,_,S,M,D,C),P*We,D,C);return{id:x.id,d:A.d,sideId:x.sideId,kind:x.kind??"structural",toolKind:x.toolKind,sourceAnchor:{side:"bottom",x:y,y:S},targetAnchor:{side:"top",x:_,y:M},segments:A.segments}}).filter(x=>!!x)}function mi(e,t,n,o,a,l,s,r){if(e.length<=1)return t;const i=Io(t);let c=t,d=Number.POSITIVE_INFINITY;for(const f of i){const v=e.map((g,u)=>{const y=a.get(g.from),S=mt(y,l,n);return Fl(S.x,S.y,s.get(g.id)??S.x,r.get(g.id)??S.y,f[u],o)});let x=0;for(let g=0;g<v.length;g++)for(let u=g+1;u<v.length;u++)for(const y of v[g])for(const S of v[u])ua(y,S)&&(x+=1e3);x+=f.reduce((g,u,y)=>{const S=e[y];return g+Math.abs(u-(s.get(S.id)??u))},0),x<d&&(d=x,c=f)}return c}function hi(e,t,n){return{side:t,x:t==="right"?e.x+e.width:e.x,y:pt(e,n)}}function rn(e,t){let n=0;for(const o of e)for(const a of t){if(o.orientation==="horizontal"){const r=Math.min(o.x1,o.x2),i=Math.max(o.x1,o.x2);if(o.y1>=a.y&&o.y1<=a.y+a.height&&Math.max(r,a.x)<Math.min(i,a.x+a.width)){n++;break}continue}const l=Math.min(o.y1,o.y2),s=Math.max(o.y1,o.y2);if(o.x1>=a.x&&o.x1<=a.x+a.width&&Math.max(l,a.y)<Math.min(s,a.y+a.height)){n++;break}}return n}function no(e){return e.reduce((t,n)=>t+Math.abs(n.x2-n.x1)+Math.abs(n.y2-n.y1),0)}function pi(e,t,n,o,a=[],l=[]){const s=new Map;for(const g of e)s.set(g.id,g);const r=Array.from(s.values()),i=new Map;for(const g of t){const u=s.get(g.to);if(!u||u.type!=="model")continue;const y=u.placementMode,S=`${u.id}|${y??"side"}`,_=i.get(S);_?_.push(g):i.set(S,[g])}const c=new Map,d=new Map,f=new Map,v=new Map;for(const[,g]of i){const u=s.get(g[0].to),y=u.placementMode,S=Zl(y),_=[...g];if(S==="top"){_.sort((j,X)=>{const he=s.get(j.from),se=s.get(X.from);return he.x+he.width/2-(se.x+se.width/2)});const k=u.x+u.width/2,N=_.filter(j=>{const X=s.get(j.from);return X.x+X.width/2<k}),P=_.filter(j=>{const X=s.get(j.from);return X.x+X.width/2>=k}),L=[...N].reverse(),ne=[...P],q=[...L,...ne],D=Ka(u,q.length,"top"),C=q.every(j=>u.y>=mt(s.get(j.from),o,u).y),T=C?Math.max(...q.map(j=>{const X=s.get(j.from),he=mt(X,o,u),se=X.y+X.height+Ee+Ge,fe=jn(X,u,n,se,!0);return hn(fe,he.x,u.x+u.width/2,he.y,u.y,Ht([...r,...Mt(X,u,n),...un(X,u,n)],an,on),new Set([X.id,u.id]),1,he.y)})):Math.min(...q.map(j=>{const X=s.get(j.from),he=mt(X,o,u),se=X.y-Ee-Ge,fe=jn(X,u,n,se,!1);return hn(fe,he.x,u.x+u.width/2,he.y,u.y,Ht([...r,...Mt(X,u,n),...un(X,u,n)],an,on),new Set([X.id,u.id]),-1,he.y)})),b=qa(q.length,Re),A=b[b.length-1]??0,G=u.y-Bl,Y=C?G-A:T,H=[{isLeftApproach:!0,edges:N,startIndex:0,assignOrder:(j,X)=>{const he=s.get(j.from);return s.get(X.from).x-he.x}},{isLeftApproach:!1,edges:P,startIndex:L.length,assignOrder:(j,X)=>{const he=s.get(j.from),se=s.get(X.from);return he.x-se.x}}];for(const j of H){const X=j.edges;if(X.length===0)continue;const he=[...X].sort(j.assignOrder),se=[];for(const fe of he){const z=s.get(fe.from),U=mt(z,o,u),J=f.get(fe.id)??Y,le=new Set([z.id,u.id]),ie=Ht([...r,...Mt(z,u,n)],an,on);let ve=Wl(z,U,J,u.x+u.width/2,ie,le);const ee=Math.min(U.y,J),Z=Math.max(U.y,J);for(let m=0;m<6;m++){const w=se.find(oe=>Math.max(ee,oe.minY)<Math.min(Z,oe.maxY)&&Math.abs(ve-oe.exitX)<Re);if(!w)break;const V=w.exitX<=U.x?-1:1;ve=jt(w.exitX+V*Re,U.y,J,ie,le,V,U.x,rt,rt)}v.set(fe.id,ve),se.push({exitX:ve,minY:ee,maxY:Z})}}[...q].sort((j,X)=>{const he=s.get(j.from),se=s.get(X.from),fe=he.x+he.width/2,z=se.x+se.width/2,U=fe<k,J=z<k,le=v.get(j.id)??fe,ie=v.get(X.id)??z;return U!==J?Math.abs(le-k)-Math.abs(ie-k):U?C?ie-le:le-ie:C?le-ie:ie-le}).forEach((j,X)=>f.set(j.id,C?Y+b[X]:Y-b[X]));const F=mi(q,D,u,u.y,s,o,v,f);q.forEach((j,X)=>c.set(j.id,{side:"top",x:F[X],y:u.y}));continue}_.sort((k,N)=>{const P=s.get(k.from),L=s.get(N.from),ne=pt(P,o)-pt(L,o);return ne!==0?ne:P.x+P.width/2-(L.x+L.width/2)});const M=Ka(u,_.length,S);if(_.forEach((k,N)=>{const P=pt(u,o),L=_.length===1?mt(s.get(k.from),o,u).y:null;c.set(k.id,{side:S,x:S==="left"?u.x:u.x+u.width,y:_.length===1&&L!==null&&Math.abs(L-P)<=Ul?L:_.length===1?P:M[N]})}),_.length>1){const k=new Set([u.id,..._.map(C=>C.from)]),N=[...r,...n.filter(C=>![{x:u.x+u.width/2,y:u.y+u.height/2},..._.map(b=>{const A=s.get(b.from);return{x:A.x+A.width/2,y:A.y+A.height/2}})].some(b=>b.x>=C.x&&b.x<=C.x+C.width&&b.y>=C.y&&b.y<=C.y+C.height)).map(yn),...a],P=_.map(C=>c.get(C.id).y),L=S==="left"?u.x-(Be+24):u.x+u.width+Be+24,ne=So(L,Math.min(...P),Math.max(...P),N,k),q=qa(_.length,Re),D=S==="left"?-1:1;_.forEach((C,T)=>d.set(C.id,ne+D*q[T]))}}const x=[];return t.map(g=>{if(g.from===g.to)return null;const u=s.get(g.from),y=s.get(g.to);if(!u||!y||y.type!=="model")return null;const S=mt(u,o,y),_=c.get(g.id);if(!_)return null;const k=[...Ht([...r,...Mt(u,y,n),...un(u,y,n)],an,on),...a],N=new Set([u.id,y.id]),P=Ht(r.filter(H=>!N.has(H.id)),Qa,Qa),L=_.y>=S.y,ne=L?u.y+u.height+Ee+Ge:u.y-Ee-Ge,q=jn(u,y,n,ne,L),D=f.get(g.id)??q;let C=S,T=null;const b=S.side,G=[S,hi(u,b==="left"?"right":"left",o)],Y=[D,D-Re,D-Re*2,D-Re*4,D-Re*8,D-Re*16,D-Re*24,D+Re,D+Re*2,D+Re*4,D+Re*8,D+Re*16,D+Re*24];if(_.side==="top"){let H=Number.POSITIVE_INFINITY;const E=v.get(g.id)??null,F=E===null?[null]:[E,null];for(const j of G)for(const X of F)for(const he of Y){const se=Jl(u,j,_,he,X,k,k,N),fe=eo(se.segments,[...l,...x])+rn(se.segments,P)*5e4+rn(se.segments,a)*1e4+no(se.segments)*.01+Math.abs(he-D)*.2+(j.side===b?0:25)+(X===E?0:10);fe<H&&(H=fe,C=j,T=se)}}if(!T){let H=Number.POSITIVE_INFINITY;const E=d.get(g.id)??null,F=E===null?[null]:[E,null],j=L?1:-1,X=[D,D+j*Re,D+j*Re*2,D+j*Re*4,D+j*Re*8,D-j*Re];for(const he of G)for(const se of F)for(const fe of X){const z=Ql(u,he,y,_,fe,se,k,N),U=eo(z.segments,[...l,...x])+rn(z.segments,P)*5e4+rn(z.segments,a)*1e4+no(z.segments)*.01+Math.abs(fe-D)*.2+(he.side===b?0:25)+(se===E?0:10);U<H&&(H=U,C=he,T=z)}}return x.push({d:T.d,segments:T.segments}),{id:g.id,d:T.d,sideId:g.sideId,kind:"model",toolKind:g.toolKind,sourceAnchor:C,targetAnchor:_,segments:T.segments}}).filter(g=>!!g)}function vi(e){const t=Hl(e.edges),n=t.filter(l=>l.kind!=="model"),o=t.filter(l=>l.kind==="model"),a=fi(e.nodes,n,e.groups,e.nodeMetrics);return[...a,...pi(e.nodes,o,e.groups,e.nodeMetrics,Gl(a),a)]}const gi={class:"pointer-events-none absolute left-0 top-0 overflow-visible",width:"1",height:"1"},xi=["data-edge-id","data-edge-kind","data-edge-tool-kind","d","stroke-width","stroke-dasharray"],yi=_e({__name:"CanvasEdges",props:{nodes:{},edges:{},groups:{},selectedNodeId:{},hoveredNodeId:{},nodeMetrics:{}},setup(e){const t=e,n=O(()=>{const l=new Map;for(const s of t.edges)l.set(s.id,s);return l}),o=O(()=>vi({nodes:t.nodes,edges:t.edges,groups:t.groups,nodeMetrics:t.nodeMetrics}).map(l=>{const s=n.value.get(l.id);return{...l,highlighted:t.selectedNodeId===s?.from||t.selectedNodeId===s?.to,hovered:t.hoveredNodeId===s?.from||t.hoveredNodeId===s?.to}}));function a(l){return l.kind==="model"?l.hovered?"stroke-purple-500 dark:stroke-purple-400":l.highlighted?"stroke-purple-400 dark:stroke-purple-500":"stroke-neutral-400/60 dark:stroke-neutral-500/50":l.toolKind==="subagent"?l.hovered?"stroke-emerald-500 dark:stroke-emerald-400":l.highlighted?"stroke-emerald-400 dark:stroke-emerald-500":"stroke-neutral-300 dark:stroke-neutral-700":l.sideId==="a"?l.hovered?"stroke-sky-500 dark:stroke-sky-400":l.highlighted?"stroke-sky-400 dark:stroke-sky-500":"stroke-neutral-300 dark:stroke-neutral-700":l.hovered?"stroke-amber-500 dark:stroke-amber-400":l.highlighted?"stroke-amber-400 dark:stroke-amber-500":"stroke-neutral-300 dark:stroke-neutral-700"}return(l,s)=>(p(),$("svg",gi,[(p(!0),$($e,null,Ie(o.value,r=>(p(),$("path",{key:r.id,"data-edge-id":r.id,"data-edge-kind":r.kind,"data-edge-tool-kind":r.toolKind,d:r.d,class:ue(a(r)),"stroke-width":r.hovered?2.25:r.highlighted?2:1.5,"stroke-dasharray":r.kind==="model"?"4 4":void 0,fill:"none"},null,10,xi))),128))]))}}),bi={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function ki(e,t){return p(),$("svg",bi,[...t[0]||(t[0]=[h("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 12h14"},null,-1)])])}const wi=nt({name:"lucide-minus",render:ki}),$i={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Mi(e,t){return p(),$("svg",$i,[...t[0]||(t[0]=[h("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3m8 0h3a2 2 0 0 0 2-2v-3"},null,-1)])])}const Ti=nt({name:"lucide-maximize",render:Mi}),Ci={class:"absolute bottom-4 left-4 z-10 flex items-center gap-1 rounded-lg border border-neutral-200 bg-white/90 p-1 shadow-sm backdrop-blur-sm dark:border-neutral-700 dark:bg-neutral-900/90"},Si={class:"min-w-[3rem] text-center text-[11px] font-medium tabular-nums text-neutral-500 dark:text-neutral-400"},_i=_e({__name:"CanvasControls",props:{scalePercent:{}},emits:["zoom-in","zoom-out","fit-view"],setup(e){return(t,n)=>(p(),$("div",Ci,[h("button",{class:"flex h-7 w-7 items-center justify-center rounded transition-colors hover:bg-neutral-100 dark:hover:bg-neutral-800",title:"Zoom out",onClick:n[0]||(n[0]=o=>t.$emit("zoom-out"))},[Q(I(wi),{class:"h-3.5 w-3.5"})]),h("span",Si,K(e.scalePercent)+"% ",1),h("button",{class:"flex h-7 w-7 items-center justify-center rounded transition-colors hover:bg-neutral-100 dark:hover:bg-neutral-800",title:"Zoom in",onClick:n[1]||(n[1]=o=>t.$emit("zoom-in"))},[Q(I(xo),{class:"h-3.5 w-3.5"})]),n[3]||(n[3]=h("div",{class:"mx-0.5 h-4 w-px bg-neutral-200 dark:bg-neutral-700"},null,-1)),h("button",{class:"flex h-7 w-7 items-center justify-center rounded transition-colors hover:bg-neutral-100 dark:hover:bg-neutral-800",title:"Fit to view",onClick:n[2]||(n[2]=o=>t.$emit("fit-view"))},[Q(I(Ti),{class:"h-3.5 w-3.5"})])]))}}),Xe=_e({__name:"EditRegion",props:{target:{},active:{type:Boolean},as:{},editData:{},positioned:{type:Boolean,default:!0}},emits:["open","hover-target"],setup(e,{emit:t}){const n=e,o=t;function a(r,i,c){o("open",{target:r,anchorEl:i.currentTarget,editData:c})}function l(r,i){i.key!=="Enter"&&i.key!==" "||(i.preventDefault(),a(r,i,editData))}const s=O(()=>["group/edit-region cursor-pointer focus-visible:outline-none",n.positioned?"relative":""]);return(r,i)=>(p(),ce(lt(e.as||"div"),{role:"button",tabindex:"0","data-edit-active":e.active||null,class:ue(s.value),onClick:i[0]||(i[0]=Me(c=>a(e.target,c,e.editData),["stop"])),onKeydown:i[1]||(i[1]=c=>l(e.target,c)),onMouseenter:i[2]||(i[2]=c=>o("hover-target",e.target)),onMouseleave:i[3]||(i[3]=c=>o("hover-target",null))},{default:ye(()=>[i[4]||(i[4]=h("div",{class:"composition-edit-region-overlay"},null,-1)),lo(r.$slots,"default")]),_:3},40,["data-edit-active","class"]))}}),Ii={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ei(e,t){return p(),$("svg",Ii,[...t[0]||(t[0]=[h("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 21s-4-3-4-9s4-9 4-9m8 0s4 3 4 9s-4 9-4 9M15 9l-6 6m0-6l6 6"},null,-1)])])}const Jn=nt({name:"lucide-variable",render:Ei}),Ai={key:0,class:"mt-1.5 w-full border-collapse text-[11px]"},Ni={key:0,class:"ml-1 rounded bg-sky-100 px-1 py-px text-[9px] font-semibold uppercase tracking-wide text-sky-700 dark:bg-sky-950/50 dark:text-sky-300"},fa=_e({__name:"VariablesList",props:{variables:{},muted:{type:Boolean},flaggedNames:{default:()=>[]},flagLabel:{default:"env"}},setup(e){const t=e,n=O(()=>new Set(t.flaggedNames));return(o,a)=>(p(),$("div",null,[h("div",{class:ue(["flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em]",t.muted?"opacity-50":"text-neutral-400 dark:text-neutral-500"])},[Q(I(Jn),{class:"h-3 w-3"}),a[0]||(a[0]=pe(" Variables ",-1))],2),t.variables.length>0?(p(),$("table",Ai,[(p(!0),$($e,null,Ie(t.variables,l=>(p(),$("tr",{key:l.name},[h("td",{class:ue(["whitespace-nowrap pr-4 py-px font-mono",t.muted?"opacity-80":"text-neutral-800 dark:text-neutral-200"])},[h("span",null,K(l.name),1),n.value.has(l.name)?(p(),$("span",Ni,K(t.flagLabel),1)):W("",!0)],2),h("td",{class:ue(["whitespace-nowrap py-px text-right",t.muted?"opacity-40":"text-neutral-400 dark:text-neutral-500"])},K(l.type)+K(l.required?" *":""),3)]))),128))])):(p(),$("div",{key:1,class:ue(["mt-1.5 text-[11px] italic",t.muted?"opacity-40":"text-neutral-400 dark:text-neutral-600"])}," None ",2))]))}}),Pi="ring-2 agents-ring-selected ring-offset-2 ring-offset-white shadow-md dark:ring-offset-neutral-900",Li="ring-[3px] agents-ring-selected ring-offset-[6px] ring-offset-white shadow-lg dark:ring-offset-neutral-950";function gt(e,t){return e?Pi:t?Li:""}const Ri={class:"flex border-b border-neutral-200 dark:border-neutral-700"},Oi={class:"flex items-center justify-between gap-3 px-5 pt-3.5 pb-2"},Di={class:"ml-1 shrink-0 rounded-full border border-current/60 px-1.5 py-px text-[9.5px] font-semibold tracking-wider"},Bi={class:"flex items-center gap-3.5 px-5 pt-1 pb-3.5"},Vi=["src"],Ui={class:"min-w-0"},Hi={class:"whitespace-nowrap text-[16px] font-semibold leading-tight"},zi={class:"mt-0.5 whitespace-nowrap font-mono text-xs text-neutral-400 dark:text-neutral-500"},Fi={key:0,class:"px-5 pb-3"},ji={key:0,class:"mb-2 flex flex-wrap gap-1"},Xi={key:1,class:"max-w-[280px] text-[11px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Ki={class:"mt-1 max-w-[280px] text-[11px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Yi={class:"mt-auto grid grid-cols-[1fr_1px_1fr] border-t border-neutral-200 dark:border-neutral-700"},qi={class:"flex items-center gap-1.5 whitespace-nowrap text-[10px] font-bold uppercase tracking-[0.15em] text-sky-600 dark:text-sky-400"},Gi={class:"mt-0.5 whitespace-nowrap font-mono text-[11px] text-neutral-500 dark:text-neutral-400"},Wi={class:"mt-1.5 grid grid-cols-[auto_1fr] gap-x-3 text-[11px]"},Qi={class:"whitespace-nowrap py-[1px] text-neutral-400 dark:text-neutral-500"},Ji=["title"],Zi={class:"flex items-center gap-1.5 whitespace-nowrap text-[10px] font-bold uppercase tracking-[0.15em] text-amber-600 dark:text-amber-400"},ed={key:0,class:"mt-0.5 whitespace-nowrap font-mono text-[11px] text-neutral-500 dark:text-neutral-400"},td={key:1,class:"mt-0.5 text-[11px] text-neutral-400 dark:text-neutral-500"},nd={key:2,class:"mt-1.5 grid grid-cols-[auto_1fr] gap-x-3 text-[11px]"},ad={class:"whitespace-nowrap py-[1px] text-neutral-400 dark:text-neutral-500"},od=["title"],No=_e({__name:"AgentLockupCard",props:{data:{},selected:{type:Boolean},hovered:{type:Boolean},hoveredEditTarget:{},borderClass:{default:"border-neutral-900 dark:border-neutral-300"},backgroundClass:{default:"bg-white dark:bg-neutral-950"},actionLabel:{default:null},kindLabel:{default:null},accentTextClass:{default:null}},emits:["select","action","edit-surface","hover-edit-target"],setup(e,{emit:t}){const n=e,o=t,{activeSurface:a}=Kt();function l(C){const T=a.value?.target;return!T||T.entityType!=="agent"||T.entityId!==n.data.name?!1:T.section===C}function s(C){if(l(C))return!0;const T=n.hoveredEditTarget;return!T||T.entityType!=="agent"||T.entityId!==n.data.name?!1:T.section===C}function r(C){return{entityType:"agent",entityId:n.data.name,section:C}}const i=O(()=>n.data.type==="dual_ai"),c=O(()=>i.value?"Dual AI":"AI + Human"),d=O(()=>n.kindLabel?n.kindLabel:n.data._isSubagent?"Sub-agent":"Agent"),f=O(()=>n.accentTextClass?n.accentTextClass:n.data._isSubagent?"text-emerald-600 dark:text-emerald-400":"text-neutral-500 dark:text-neutral-400"),v=O(()=>n.data.side_a_label||"Side A"),x=O(()=>n.data.side_b_label||(i.value?"Side B":"Human")),g=O(()=>q({stopOnResponse:n.data.side_a_stop_on_response,stopTool:n.data.side_a_stop_tool,maxSteps:n.data.side_a_max_steps,endConversationTool:n.data.side_a_session_stop_tool})),u=O(()=>q({stopOnResponse:n.data.side_b_stop_on_response,stopTool:n.data.side_b_stop_tool,maxSteps:n.data.side_b_max_steps,endConversationTool:n.data.side_b_session_stop_tool})),y=O(()=>n.data._variables||[]),S=O(()=>Object.keys(n.data.env||{}).filter(C=>C.trim().length>0)),_=O(()=>{const C=new Set(y.value.map(T=>T.name));return S.value.filter(T=>C.has(T))}),M=O(()=>n.data.expose_as_tool&&n.data.tool_description?.trim()||null),k=O(()=>n.data._isSubagent&&M.value?M.value:n.data.description||null),N=O(()=>!n.data._isSubagent&&!!M.value),P=O(()=>{if(!i.value)return null;const C=n.data.max_session_turns;return typeof C!="number"?"unlimited session turns":`max ${C} session turn${C===1?"":"s"}`}),L=O(()=>{const C=[];return n.data.expose_as_tool&&!n.data._isSubagent&&C.push("tool"),P.value&&C.push(P.value),S.value.length>0&&C.push(`${S.value.length} env override${S.value.length===1?"":"s"}`),C}),ne=O(()=>!!k.value||N.value||L.value.length>0);function q(C){return[{key:"stop_on_response",label:"Stop on response",value:C.stopOnResponse?"On":"Off",active:C.stopOnResponse},{key:"stop_tool",label:"Stop tool",value:C.stopTool||"Off",active:!!C.stopTool},{key:"max_steps",label:"Max steps",value:D(C.maxSteps),active:C.maxSteps!==null&&C.maxSteps!==void 0},{key:"end_conversation",label:"End conversation tool",value:C.endConversationTool||"Off",active:!!C.endConversationTool}]}function D(C){return typeof C=="number"?String(C):"Unlimited"}return(C,T)=>(p(),$("div",{"data-canvas-node":"",class:ue(["absolute flex flex-col rounded-xl border text-neutral-900 transition-shadow select-none dark:text-neutral-100",e.borderClass,e.backgroundClass,I(gt)(e.selected,e.hovered)]),style:{width:"max-content"}},[h("div",Ri,[Q(Xe,{class:"min-w-0 flex-1",target:r("identity"),active:s("identity"),onOpen:T[1]||(T[1]=b=>o("edit-surface",b)),onHoverTarget:T[2]||(T[2]=b=>o("hover-edit-target",b))},{default:ye(()=>[h("div",Oi,[h("div",{class:ue(["flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.2em]",f.value])},[Q(I(tt),{class:"h-3 w-3"}),h("span",null,K(d.value),1),h("span",Di,K(c.value),1)],2),e.actionLabel?(p(),$("button",{key:0,type:"button",class:"shrink-0 rounded-md border border-neutral-200 px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.16em] text-neutral-500 transition-colors hover:border-neutral-300 hover:text-neutral-800 dark:border-neutral-700 dark:text-neutral-400 dark:hover:border-neutral-500 dark:hover:text-neutral-100",onClick:T[0]||(T[0]=Me(b=>C.$emit("action"),["stop"]))},K(e.actionLabel),1)):W("",!0)]),h("div",Bi,[h("img",{src:e.data.icon||I(na)(e.data.name),alt:"",class:"h-10 w-10 shrink-0 rounded-lg object-cover"},null,8,Vi),h("div",Ui,[h("div",Hi,K(e.data.title),1),h("div",zi,K(e.data.name),1)])]),ne.value?(p(),$("div",Fi,[L.value.length>0?(p(),$("div",ji,[(p(!0),$($e,null,Ie(L.value,b=>(p(),$("span",{key:b,class:"rounded-md bg-neutral-100 px-1.5 py-px font-mono text-[10px] lowercase tracking-wide text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400"},K(b),1))),128))])):W("",!0),k.value?(p(),$("p",Xi,K(k.value),1)):W("",!0),N.value?(p(),$("div",{key:2,class:ue(k.value?"mt-2":"")},[T[9]||(T[9]=h("div",{class:"text-[10px] font-bold uppercase tracking-[0.16em] text-neutral-400 dark:text-neutral-500"}," Tool use ",-1)),h("p",Ki,K(M.value),1)],2)):W("",!0)])):W("",!0)]),_:1},8,["target","active"]),Q(Xe,{"data-variables-section":"",class:"shrink-0 border-l border-neutral-200 px-4 py-3 dark:border-neutral-700",target:r("variables"),active:s("variables"),onOpen:T[3]||(T[3]=b=>o("edit-surface",b)),onHoverTarget:T[4]||(T[4]=b=>o("hover-edit-target",b))},{default:ye(()=>[Q(fa,{variables:y.value,"flagged-names":_.value,"flag-label":"env"},null,8,["variables","flagged-names"])]),_:1},8,["target","active"])]),h("div",Yi,[Q(Xe,{class:"px-3 py-2",target:r("side-a"),active:s("side-a"),onOpen:T[5]||(T[5]=b=>o("edit-surface",b)),onHoverTarget:T[6]||(T[6]=b=>o("hover-edit-target",b))},{default:ye(()=>[h("div",qi,[Q(I(tt),{class:"h-3 w-3"}),pe(" "+K(v.value),1)]),h("div",Gi,K(e.data.side_a_agent_prompt),1),h("dl",Wi,[(p(!0),$($e,null,Ie(g.value,b=>(p(),$($e,{key:b.key},[h("dt",Qi,K(b.label),1),h("dd",{class:ue(["whitespace-nowrap py-[1px] text-right font-mono",b.active?"text-sky-600 dark:text-sky-400":"text-neutral-400 dark:text-neutral-600"]),title:b.value},K(b.value),11,Ji)],64))),128))])]),_:1},8,["target","active"]),T[10]||(T[10]=h("div",{class:"bg-neutral-200 dark:bg-neutral-700"},null,-1)),Q(Xe,{class:"px-3 py-2",target:r("side-b"),active:s("side-b"),onOpen:T[7]||(T[7]=b=>o("edit-surface",b)),onHoverTarget:T[8]||(T[8]=b=>o("hover-edit-target",b))},{default:ye(()=>[h("div",Zi,[(p(),ce(lt(i.value?I(tt):I(aa)),{class:"h-3 w-3"})),pe(" "+K(x.value),1)]),e.data.side_b_agent_prompt?(p(),$("div",ed,K(e.data.side_b_agent_prompt),1)):(p(),$("div",td,"No prompt")),e.data.side_b_agent_prompt?(p(),$("dl",nd,[(p(!0),$($e,null,Ie(u.value,b=>(p(),$($e,{key:b.key},[h("dt",ad,K(b.label),1),h("dd",{class:ue(["whitespace-nowrap py-[1px] text-right font-mono",b.active?"text-amber-600 dark:text-amber-400":"text-neutral-400 dark:text-neutral-600"]),title:b.value},K(b.value),11,od)],64))),128))])):W("",!0)]),_:1},8,["target","active"])])],2))}}),rd=_e({__name:"AgentNode",props:{data:{},selected:{type:Boolean},hovered:{type:Boolean},hoveredEditTarget:{}},emits:["select","edit-surface","hover-edit-target"],setup(e){return(t,n)=>(p(),ce(No,{data:e.data,selected:e.selected,hovered:e.hovered,"hovered-edit-target":e.hoveredEditTarget,onSelect:n[0]||(n[0]=o=>t.$emit("select")),onEditSurface:n[1]||(n[1]=o=>t.$emit("edit-surface",o)),onHoverEditTarget:n[2]||(n[2]=o=>t.$emit("hover-edit-target",o))},null,8,["data","selected","hovered","hovered-edit-target"]))}}),sd={},ld={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",width:"1em",height:"1em",viewBox:"0 0 128 128",fill:"none",style:{transform:"translateY(-0.1em)"}};function id(e,t){return p(),$("svg",ld,[...t[0]||(t[0]=[h("rect",{width:"128",height:"128",rx:"6",fill:"#3178c6"},null,-1),h("path",{fill:"#fff","fill-rule":"evenodd","clip-rule":"evenodd",d:"m74.2622 99.468v14.026c2.2724 1.168 4.9598 2.045 8.0625 2.629 3.1027.585 6.3728.877 9.8105.877 3.3503 0 6.533-.321 9.5478-.964 3.016-.643 5.659-1.702 7.932-3.178 2.272-1.476 4.071-3.404 5.397-5.786 1.325-2.381 1.988-5.325 1.988-8.8313 0-2.5421-.379-4.7701-1.136-6.6841-.758-1.9139-1.85-3.6159-3.278-5.1062-1.427-1.4902-3.139-2.827-5.134-4.0104-1.996-1.1834-4.246-2.3011-6.752-3.353-1.8352-.7597-3.4812-1.4975-4.9378-2.2134-1.4567-.7159-2.6948-1.4464-3.7144-2.1915-1.0197-.7452-1.8063-1.5341-2.3598-2.3669-.5535-.8327-.8303-1.7751-.8303-2.827 0-.9643.2476-1.8336.7429-2.6079s1.1945-1.4391 2.0976-1.9943c.9031-.5551 2.0101-.9861 3.3211-1.2929 1.311-.3069 2.7676-.4603 4.3699-.4603 1.1658 0 2.3958.0877 3.6928.263 1.296.1753 2.6.4456 3.911.8109 1.311.3652 2.585.8254 3.824 1.3806 1.238.5552 2.381 1.198 3.43 1.9285v-13.1051c-2.127-.8182-4.45-1.4245-6.97-1.819s-5.411-.5917-8.6744-.5917c-3.3211 0-6.4674.3579-9.439 1.0738-2.9715.7159-5.5862 1.8336-7.844 3.353-2.2578 1.5195-4.0422 3.4553-5.3531 5.8075-1.311 2.3522-1.9665 5.1646-1.9665 8.4373 0 4.1785 1.2017 7.7433 3.6052 10.6945 2.4035 2.9513 6.0523 5.4496 10.9466 7.495 1.9228.7889 3.7145 1.5633 5.375 2.323 1.6606.7597 3.0954 1.5486 4.3044 2.3668s2.1628 1.7094 2.8618 2.6736c.7.9643 1.049 2.06 1.049 3.2873 0 .9062-.218 1.7462-.655 2.5202s-1.1 1.446-1.9885 2.016c-.8886.57-1.9956 1.016-3.3212 1.337-1.3255.321-2.8768.482-4.6539.482-3.0299 0-6.0305-.533-9.0021-1.6-2.9715-1.066-5.7245-2.666-8.2591-4.799zm-23.5596-34.9136h18.2974v-11.5544h-51v11.5544h18.2079v51.4456h14.4947z"},null,-1)])])}const Xt=fo(sd,[["render",id]]),dd={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function ud(e,t){return p(),$("svg",dd,[...t[0]||(t[0]=[h("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[h("path",{d:"m18 5l-2.414-2.414A2 2 0 0 0 14.172 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2"}),h("path",{d:"M21.378 12.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506zM8 18h1"})],-1)])])}const Po=nt({name:"lucide-file-pen-line",render:ud}),cd={class:"relative"},fd={class:"flex items-start gap-1.5"},md=["aria-label"],hd={key:1,class:"mt-0.5 inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center"},pd={class:"min-w-0 flex-1"},vd={class:"flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-1"},gd={key:0,class:"text-[12px] leading-none font-semibold text-rose-500 dark:text-rose-400","aria-label":"Required"},xd={key:1,class:"rounded-md bg-neutral-100 px-1.5 py-px font-mono text-[10px] text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400"},yd={key:0,class:"mt-0.5 max-w-[32rem] break-words text-[10px] leading-relaxed text-neutral-400 dark:text-neutral-500"},bd={key:0},kd=_e({__name:"DataTreeRow",props:{node:{},depth:{},collapsed:{}},emits:["toggle"],setup(e,{emit:t}){const n=e,o=t,a=O(()=>(n.node.children?.length??0)>0),l=O(()=>a.value?!n.collapsed.has(n.node.id):!1),s=O(()=>({paddingLeft:`${n.depth*20}px`})),r=O(()=>n.depth===0);return(i,c)=>{const d=At("DataTreeRow",!0);return p(),$("div",cd,[h("div",{style:De(s.value),class:"py-1.5"},[h("div",fd,[a.value?(p(),$("button",{key:0,type:"button",class:"mt-0.5 inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center rounded text-neutral-400 transition-colors hover:bg-neutral-100 hover:text-neutral-600 dark:text-neutral-500 dark:hover:bg-neutral-900 dark:hover:text-neutral-300","aria-label":`${l.value?"Collapse":"Expand"} ${e.node.label}`,onClick:c[0]||(c[0]=Me(f=>o("toggle",e.node.id),["stop"]))},[Q(I(yo),{class:ue(["h-3 w-3 transition-transform",l.value?"rotate-90":""])},null,8,["class"])],8,md)):(p(),$("span",hd,[...c[2]||(c[2]=[h("span",{class:"inline-block h-1.5 w-1.5 rounded-full bg-neutral-300 dark:bg-neutral-600"},null,-1)])])),h("div",pd,[h("div",vd,[h("span",{class:ue(["truncate font-mono",r.value?"text-[12px] text-neutral-900 dark:text-neutral-100":"text-[11px] text-neutral-700 dark:text-neutral-300"])},K(e.node.label),3),e.node.required?(p(),$("span",gd," * ")):W("",!0),e.node.value?(p(),$("span",xd,K(e.node.value),1)):W("",!0)]),e.node.description?(p(),$("div",yd,K(e.node.description),1)):W("",!0)])])],4),a.value&&l.value?(p(),$("div",bd,[(p(!0),$($e,null,Ie(e.node.children,f=>(p(),ce(d,{key:f.id,node:f,depth:e.depth+1,collapsed:e.collapsed,onToggle:c[1]||(c[1]=v=>o("toggle",v))},null,8,["node","depth","collapsed"]))),128))])):W("",!0),a.value&&l.value?(p(),$("div",{key:1,class:"pointer-events-none absolute bottom-0 w-px bg-neutral-200 dark:bg-neutral-800",style:De({top:"22px",left:`${e.depth*20+7}px`})},null,4)):W("",!0)])}}}),wd={key:0,class:"text-[11px] italic text-neutral-400 dark:text-neutral-600"},$d={key:1},Lo=_e({__name:"DataTreeView",props:{nodes:{},emptyLabel:{default:"No fields"}},setup(e){const t=e,n=B(new Set);function o(l,s){for(const r of l)s(r),r.children?.length&&o(r.children,s)}Pe(()=>t.nodes,l=>{const s=new Set;o(l,r=>{(r.children?.length??0)>0&&!r.defaultExpanded&&s.add(r.id)}),n.value=s},{immediate:!0,deep:!0});function a(l){const s=new Set(n.value);s.has(l)?s.delete(l):s.add(l),n.value=s}return(l,s)=>e.nodes.length===0?(p(),$("div",wd,K(e.emptyLabel),1)):(p(),$("div",$d,[(p(!0),$($e,null,Ie(e.nodes,r=>(p(),ce(kd,{key:r.id,node:r,depth:0,collapsed:n.value,onToggle:a},null,8,["node","collapsed"]))),128))]))}});function zt(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function ao(e){return typeof e=="string"?JSON.stringify(e):typeof e=="number"||typeof e=="boolean"?String(e):e===null?"null":Array.isArray(e)?`[${e.length}]`:typeof e=="object"?"{…}":"—"}function Md(e){return e?Array.isArray(e.enum)&&e.enum.length>0?`enum(${e.enum.length})`:Array.isArray(e.type)&&e.type.length>0?e.type.join(" | "):typeof e.type=="string"&&e.type.length>0?e.type:Array.isArray(e.oneOf)&&e.oneOf.length>0?`oneOf(${e.oneOf.length})`:Array.isArray(e.anyOf)&&e.anyOf.length>0?`anyOf(${e.anyOf.length})`:Array.isArray(e.allOf)&&e.allOf.length>0?`allOf(${e.allOf.length})`:e.properties&&typeof e.properties=="object"?"object":e.items?"array":"const"in e?"const":"value":"—"}function Tt(e,t,n,o=!1){const a=[];if(t.properties&&typeof t.properties=="object"){const s=new Set(Array.isArray(t.required)?t.required:[]);a.push(...Object.entries(t.properties).map(([r,i])=>Tt(r,zt(i)?i:{},`${n}.properties.${r}`,s.has(r))))}if(t.items){const s=Array.isArray(t.items)?t.items:[t.items];a.push(...s.map((r,i)=>Tt(s.length===1?"items":`item ${i+1}`,zt(r)?r:{},`${n}.items.${i}`,!0)))}for(const[s,r]of[["oneOf",t.oneOf],["anyOf",t.anyOf],["allOf",t.allOf]])!Array.isArray(r)||r.length===0||a.push(...r.map((i,c)=>Tt(`${s} ${c+1}`,zt(i)?i:{},`${n}.${s}.${c}`,!0)));zt(t.additionalProperties)&&a.push(Tt("additional",t.additionalProperties,`${n}.additional`,!1));const l=[];if(typeof t.description=="string"&&t.description.trim()&&l.push(t.description.trim()),Array.isArray(t.enum)&&t.enum.length>0){const s=t.enum.slice(0,3).map(ao).join(", "),r=t.enum.length>3?", …":"";l.push(s+r)}else"const"in t&&l.push(ao(t.const));return{id:n,label:e,value:Md(t),description:l.join(" • ")||null,required:o,children:a.length>0?a:void 0,defaultExpanded:n.split(".").length<=3}}function ma(e){if(!e||typeof e!="object")return[];const t=e.properties&&typeof e.properties=="object"?e.properties:null;if(t){const n=new Set(Array.isArray(e.required)?e.required:[]);return Object.entries(t).map(([o,a])=>Tt(o,zt(a)?a:{},`schema.${o}`,n.has(o)))}return[Tt("value",e,"schema.value",!0)]}function Td(e){const t=e.reasoning?.effort;return t==="low"||t==="medium"||t==="high"?t:"off"}function Cd(e){const t=e.reasoning?.maxTokens;return typeof t=="number"?t.toLocaleString():"—"}function Ro(e,t){const n=Td(e),o=[{key:"tool",label:"Tool",rows:[{kind:"value",label:"Tool choice",value:e.tool_choice,active:!0},{kind:"toggle",label:"Parallel calls",enabled:e.parallel_tool_calls}]},{key:"context",label:"Context",rows:[{kind:"toggle",label:"Chat history",enabled:e.include_chat},{kind:"toggle",label:"Past tool calls",enabled:e.include_past_tools},{kind:"toggle",label:"Reasoning in history",enabled:e.include_reasoning}]},{key:"reasoning",label:"Reasoning",rows:[{kind:"value",label:"Effort",value:n,active:n!=="off"},{kind:"value",label:"Max tokens",value:Cd(e),active:typeof e.reasoning?.maxTokens=="number"},{kind:"toggle",label:"Exclude from response",enabled:e.reasoning?.exclude===!0}]}];return t&&o.push({key:"response",label:"Response",rows:[{kind:"toggle",label:"Chat history",enabled:t.include_text_response!==!1},{kind:"toggle",label:"Tool calls",enabled:t.include_tool_calls!==!1},{kind:"toggle",label:"Errors",enabled:t.include_errors!==!1}]}),o}function oo(e,t){if(!e)return null;const n=t[e];if(n)return n;for(const o of Object.values(t))if(o.name===e)return o;return null}async function Oo(e){const[t,n]=await Promise.all([e.toolsCatalog?Promise.resolve(e.toolsCatalog):Qe("/tools"),e.models?Promise.resolve(e.models):Qe("/models").then(o=>Object.fromEntries(o.models.map(a=>[a.id,a])))]);return{toolsCatalog:t,models:n}}async function Sd(e,t={}){const n=await ot(e);if(!n)return null;try{const{toolsCatalog:o,models:a}=await Oo(t);return Bo(n,{toolsCatalog:o,models:a})}catch{return{prompt:n,nestedTools:[],model:null}}}async function Do(e,t={}){if(e.length===0)return[];const n=await Oo(t).catch(()=>null);return(await Promise.all(e.map(async a=>[a,await ot(a)]))).map(([a,l])=>l?n?[a,Bo(l,n)]:[a,{prompt:l,nestedTools:[],model:null}]:[a,null])}function Bo(e,t){const n=e.tools.map(a=>hs(a,t.toolsCatalog,t.models)),o=oo(e.model_id,t.models)||oo(e.model_name,t.models);return{prompt:e,nestedTools:n,model:o}}async function Vo(e){try{return(await Qe(`/agents/${encodeURIComponent(e)}`)).agent}catch{return null}}async function _d(e,t={}){const[n,o,a]=await Promise.all([e.kind==="tool"?vo(e.name):Promise.resolve(null),e.kind==="prompt"?Sd(e.name,t):Promise.resolve(null),e.kind==="handoff"?Vo(e.name):Promise.resolve(null)]);return{functionTool:n,promptTool:o,handoffAgent:a}}async function Id(e,t){const[n,o,a]=await Promise.all([Promise.all(e.functionTools.map(async l=>[l,await vo(l)])),Do(e.promptTools,t),Promise.all(e.handoffs.map(async l=>[l,await Vo(l)]))]);return{functionTools:Object.fromEntries(n),promptTools:Object.fromEntries(o),handoffs:Object.fromEntries(a)}}const Ed={class:"flex"},Ad={class:"flex min-w-0 flex-1 flex-col"},Nd={class:"flex items-start justify-between gap-4 px-5 py-3.5"},Pd={class:"min-w-0 flex-1"},Ld={key:0,class:"ml-1 shrink-0 rounded-full border border-current/60 px-1.5 py-px text-[9.5px] font-semibold tracking-wider"},Rd={class:"mt-3"},Od={class:"whitespace-nowrap font-mono text-[14px] font-semibold text-neutral-900 dark:text-neutral-100"},Dd={key:0,class:"mt-1 max-w-[220px] text-[11px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Bd={class:"flex shrink-0 items-start gap-2"},Vd=["onKeydown"],Ud={"data-model-anchor":"",class:"flex items-center gap-3 rounded-lg border border-neutral-100 bg-neutral-50/80 px-3 py-2 dark:border-neutral-800 dark:bg-neutral-900/30"},Hd={class:"flex items-start gap-2"},zd=["src"],Fd={class:"leading-tight"},jd={class:"whitespace-nowrap text-[13px] font-semibold text-neutral-900 dark:text-neutral-100"},Xd={class:"whitespace-nowrap font-mono text-[10px] text-neutral-400 dark:text-neutral-500"},Kd={key:0,class:"group relative border-l border-neutral-200 pl-3 dark:border-neutral-800"},Yd={class:"grid shrink-0 grid-cols-2 gap-x-1.5 gap-y-1","aria-label":"Model capabilities"},qd=["aria-label"],Gd={role:"tooltip",class:"pointer-events-none invisible absolute right-0 top-full z-50 mt-2 w-max rounded-md border border-neutral-200 bg-white px-3 py-2 text-left shadow-lg opacity-0 transition-opacity group-hover:visible group-hover:opacity-100 dark:border-neutral-700 dark:bg-neutral-900"},Wd={class:"grid grid-cols-[auto_1fr] items-center gap-x-2 gap-y-1 text-[11px]"},Qd={class:"flex items-center"},Jd={class:"flex min-h-0 flex-1"},Zd={class:"text-[9px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},eu={class:"mt-1 space-y-[2px] text-[11px]"},tu={class:"whitespace-nowrap text-neutral-500 dark:text-neutral-400"},nu={class:"flex min-w-0 flex-1 flex-col border-l border-neutral-200 dark:border-neutral-700"},au={class:"mb-1 flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},ou={class:"flex shrink-0 min-w-[12rem] max-w-64 flex-col border-l border-neutral-200 dark:border-neutral-700"},ru={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},su={key:0,class:"mt-1.5 space-y-1"},lu={class:"flex flex-wrap items-center gap-x-1.5 gap-y-0.5"},iu={class:"font-mono font-medium text-neutral-800 dark:text-neutral-200"},du={key:0,class:"rounded bg-amber-100 px-1 py-px font-mono text-[9px] lowercase tracking-wide text-amber-700 dark:bg-amber-950/50 dark:text-amber-300"},uu={key:1,class:"mt-1.5 text-[11px] italic text-neutral-400 dark:text-neutral-600"},cu={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-fuchsia-500 dark:text-fuchsia-400"},fu={key:0,class:"mt-1.5 space-y-1"},mu={class:"font-mono font-medium text-neutral-800 dark:text-neutral-200"},hu={key:0,class:"mt-1 flex items-center gap-1.5 text-[10px] text-neutral-400 dark:text-neutral-500"},pu=["src"],vu={class:"font-medium text-neutral-500 dark:text-neutral-400"},gu={key:1,class:"truncate"},xu={key:1,class:"mt-1.5 text-[11px] italic text-neutral-400 dark:text-neutral-600"},yu={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-sky-500 dark:text-sky-400"},bu={key:0,class:"mt-1.5 space-y-1"},ku={class:"font-mono font-medium text-neutral-800 dark:text-neutral-200"},wu={key:1,class:"mt-1.5 text-[11px] italic text-neutral-400 dark:text-neutral-600"},$u={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-emerald-500 dark:text-emerald-400"},Mu={key:0,class:"mt-1.5 space-y-1"},Tu={class:"font-mono font-medium text-neutral-800 dark:text-neutral-200"},Cu={key:1,class:"mt-1.5 text-[11px] italic text-neutral-400 dark:text-neutral-600"},Uo=_e({__name:"PromptCard",props:{prompt:{},tools:{},toolConfig:{},variables:{},variableEnvNames:{},label:{},modelName:{},modelProvider:{},modelActual:{},modelIconSrc:{},modelCapabilities:{},borderClass:{},accentTextClass:{},selected:{type:Boolean},hovered:{type:Boolean},hoveredEditTarget:{},refreshEpoch:{}},emits:["select","edit-surface","hover-edit-target"],setup(e,{emit:t}){const n=e,o=t,a=O(()=>n.tools.filter(T=>T.kind==="tool"||T.kind==="provider"||T.kind==="mcp")),l=O(()=>n.tools.filter(T=>T.kind==="prompt")),s=O(()=>n.tools.filter(T=>T.kind==="subagent")),r=O(()=>n.tools.filter(T=>T.kind==="handoff")),i=O(()=>n.variables||ra(n.prompt)),c=O(()=>n.variableEnvNames||sa(n.prompt)),d=O(()=>!!n.label),f=O(()=>n.toolConfig?"Sub-prompt":"Prompt"),v=O(()=>n.modelName||n.prompt.model_name);O(()=>n.modelProvider||n.prompt.model_provider);const x=O(()=>n.modelActual||n.prompt.model_id),g=O(()=>{const T=n.modelCapabilities||{};return[{key:"images",label:"Vision",enabled:T.supportsImages===!0},{key:"tools",label:"Tool Calls",enabled:T.supportsToolCalls===!0},{key:"stream",label:"Streaming",enabled:T.supportsStreaming===!0},{key:"json",label:"JSON",enabled:T.supportsJsonMode===!0}]}),u=O(()=>!!n.modelCapabilities&&Object.keys(n.modelCapabilities).length>0),y=O(()=>ma(n.prompt.required_schema)),S=B({}),_=O(()=>Ro(n.prompt,n.toolConfig));Pe(()=>[l.value.map(T=>T.name).join(""),n.refreshEpoch??0],async()=>{const T=l.value.map(A=>A.name);if(T.length===0){S.value={};return}const b=await Do(T);S.value=Object.fromEntries(b)},{immediate:!0});function M(T){return S.value[T.name]?.model||T.resolvedModel||null}function k(T){const b=M(T);if(b)return Ve(`/api/providers/${encodeURIComponent(b.provider)}/icon?model=${encodeURIComponent(b.model)}`);const A=S.value[T.name];return A?.prompt?Ve(`/api/providers/${encodeURIComponent(A.prompt.model_provider)}/icon?model=${encodeURIComponent(A.prompt.model_id)}`):""}function N(T){const b=M(T);return b?b.name:S.value[T.name]?.prompt.model_name||T.model||null}function P(T){const b=M(T);return b?b.provider:S.value[T.name]?.prompt.model_provider||null}function L(T,b){return{entityType:"prompt",entityId:n.prompt.name,section:T,defaultToolTab:b}}const{activeSurface:ne}=Kt();function q(T,b){const A=ne.value?.target;return!(!A||A.entityType!=="prompt"||A.entityId!==n.prompt.name||A.section!==T||b!==void 0&&A.defaultToolTab!==b)}function D(T,b){if(q(T,b))return!0;const A=n.hoveredEditTarget;return!(!A||A.entityType!=="prompt"||A.entityId!==n.prompt.name||A.section!==T||b!==void 0&&A.defaultToolTab!==b)}function C(T){const b=T.currentTarget;b instanceof HTMLElement&&o("edit-surface",{target:L("prompt"),anchorEl:b})}return(T,b)=>(p(),$("div",{"data-canvas-node":"",role:"button",tabindex:"0",onClick:b[18]||(b[18]=Me(A=>T.$emit("select"),["stop"])),onKeydown:[b[19]||(b[19]=Fe(Me(A=>T.$emit("select"),["prevent","stop"]),["enter"])),b[20]||(b[20]=Fe(Me(A=>T.$emit("select"),["prevent","stop"]),["space"]))],class:ue(["absolute cursor-pointer rounded-xl border bg-white transition-shadow select-none dark:bg-neutral-950",e.borderClass,I(gt)(e.selected,e.hovered)])},[h("div",Ed,[h("div",Ad,[Q(Xe,{as:"header",class:"border-b border-neutral-200 dark:border-neutral-700",target:L("basic"),active:D("basic"),onOpen:b[2]||(b[2]=A=>o("edit-surface",A)),onHoverTarget:b[3]||(b[3]=A=>o("hover-edit-target",A))},{default:ye(()=>[h("div",Nd,[h("div",Pd,[h("div",{class:ue(["flex items-center gap-1.5 whitespace-nowrap text-[10px] font-bold uppercase tracking-[0.2em]",e.accentTextClass])},[Q(I(vt),{class:"h-3 w-3"}),h("span",null,K(f.value),1),d.value?(p(),$("span",Ld,K(e.label),1)):W("",!0)],2),h("div",Rd,[h("div",Od,K(e.prompt.name),1),e.prompt.tool_description?(p(),$("div",Dd,K(e.prompt.tool_description),1)):W("",!0)])]),h("div",Bd,[h("button",{type:"button",class:ue(["inline-flex h-8 w-8 items-center justify-center rounded-md border border-neutral-200 bg-white text-neutral-500 transition-colors hover:border-neutral-300 hover:text-neutral-900 dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-400 dark:hover:border-neutral-700 dark:hover:text-neutral-100",D("prompt")?"border-neutral-900 text-neutral-900 dark:border-neutral-100 dark:text-neutral-100":""]),title:"Edit prompt text","aria-label":"Edit prompt text",onClick:Me(C,["stop"]),onKeydown:[Fe(Me(C,["prevent","stop"]),["enter"]),Fe(Me(C,["prevent","stop"]),["space"])],onMouseenter:b[0]||(b[0]=Me(A=>o("hover-edit-target",L("prompt")),["stop"])),onMouseleave:b[1]||(b[1]=Me(A=>o("hover-edit-target",null),["stop"]))},[Q(I(Po),{class:"h-3.5 w-3.5"})],42,Vd),h("div",Ud,[h("div",Hd,[e.modelIconSrc?(p(),$("img",{key:0,src:e.modelIconSrc,alt:"",class:"mt-[3px] h-4 w-4 shrink-0 rounded-sm"},null,8,zd)):W("",!0),h("div",Fd,[h("div",jd,K(v.value),1),h("div",Xd,K(x.value),1)])]),u.value?(p(),$("div",Kd,[h("div",Yd,[(p(!0),$($e,null,Ie(g.value,A=>(p(),$("span",{key:A.key,"aria-label":`${A.label}: ${A.enabled?"supported":"not supported"}`,class:ue(["h-1.5 w-1.5 rounded-full",A.enabled?"bg-emerald-500 shadow-[0_0_0_2px_rgba(16,185,129,0.16)]":"bg-neutral-300 dark:bg-neutral-700"])},null,10,qd))),128))]),h("div",Gd,[b[21]||(b[21]=h("div",{class:"mb-1.5 text-[9px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"}," Capabilities ",-1)),h("dl",Wd,[(p(!0),$($e,null,Ie(g.value,A=>(p(),$($e,{key:A.key},[h("dt",Qd,[h("span",{class:ue(["h-1.5 w-1.5 rounded-full",A.enabled?"bg-emerald-500 shadow-[0_0_0_2px_rgba(16,185,129,0.16)]":"bg-neutral-300 dark:bg-neutral-700"])},null,2)]),h("dd",{class:ue(["whitespace-nowrap",A.enabled?"text-neutral-800 dark:text-neutral-200":"text-neutral-400 dark:text-neutral-600"])},K(A.label),3)],64))),128))])])])):W("",!0)])])])]),_:1},8,["target","active"]),h("div",Jd,[Q(Xe,{class:"shrink-0 px-5 py-3",target:L("behavior"),active:D("behavior"),onOpen:b[4]||(b[4]=A=>o("edit-surface",A)),onHoverTarget:b[5]||(b[5]=A=>o("hover-edit-target",A))},{default:ye(()=>[(p(!0),$($e,null,Ie(_.value,(A,G)=>(p(),$("div",{key:A.key,class:ue(["py-2",G>0?"border-t border-neutral-200 dark:border-neutral-700":""])},[h("div",Zd,K(A.label),1),h("dl",eu,[(p(!0),$($e,null,Ie(A.rows,Y=>(p(),$("div",{key:Y.label,class:"flex items-baseline justify-between gap-x-6"},[h("dt",tu,K(Y.label),1),Y.kind==="toggle"?(p(),$("dd",{key:0,class:ue(["whitespace-nowrap font-mono",Y.enabled?"text-emerald-600 dark:text-emerald-400":"text-neutral-400 dark:text-neutral-600"])},K(Y.enabled?"on":"off"),3)):(p(),$("dd",{key:1,class:ue(["whitespace-nowrap font-mono",Y.active?"text-neutral-800 dark:text-neutral-200":"text-neutral-400 dark:text-neutral-600"])},K(Y.value),3))]))),128))])],2))),128))]),_:1},8,["target","active"]),h("div",nu,[Q(Xe,{class:"flex-[1_1_auto] px-5 py-3",target:L("schema"),active:D("schema"),onOpen:b[6]||(b[6]=A=>o("edit-surface",A)),onHoverTarget:b[7]||(b[7]=A=>o("hover-edit-target",A))},{default:ye(()=>[h("div",au,[Q(I($t),{class:"h-3 w-3"}),b[22]||(b[22]=pe(" Input schema ",-1))]),Q(Lo,{nodes:y.value,"empty-label":"None"},null,8,["nodes"])]),_:1},8,["target","active"]),Q(Xe,{"data-variables-section":"",class:"flex-[1_1_auto] border-t border-neutral-200 px-5 py-3 dark:border-neutral-700",target:L("variables"),active:D("variables"),onOpen:b[8]||(b[8]=A=>o("edit-surface",A)),onHoverTarget:b[9]||(b[9]=A=>o("hover-edit-target",A))},{default:ye(()=>[Q(fa,{variables:i.value,"flagged-names":c.value},null,8,["variables","flagged-names"])]),_:1},8,["target","active"])])])]),h("div",ou,[Q(Xe,{"data-tool-column":"function",class:"flex-[1_1_25%] px-4 py-3",target:L("tools","functions"),active:D("tools","functions"),onOpen:b[10]||(b[10]=A=>o("edit-surface",A)),onHoverTarget:b[11]||(b[11]=A=>o("hover-edit-target",A))},{default:ye(()=>[h("div",ru,[Q(Xt,{class:"h-3 w-3"}),b[23]||(b[23]=pe(" Functions ",-1))]),a.value.length>0?(p(),$("div",su,[(p(!0),$($e,null,Ie(a.value,A=>(p(),$("div",{key:A.name,class:"text-[11px]"},[h("div",lu,[h("span",iu,K(A.displayName),1),A.config.immediate?(p(),$("span",du," immediate ")):W("",!0)])]))),128))])):(p(),$("div",uu,"None"))]),_:1},8,["target","active"]),Q(Xe,{"data-tool-column":"prompt",class:"flex-[1_1_25%] border-t border-neutral-200 px-4 py-3 dark:border-neutral-700",target:L("tools","sub-prompts"),active:D("tools","sub-prompts"),onOpen:b[12]||(b[12]=A=>o("edit-surface",A)),onHoverTarget:b[13]||(b[13]=A=>o("hover-edit-target",A))},{default:ye(()=>[h("div",cu,[Q(I(vt),{class:"h-3 w-3"}),b[24]||(b[24]=pe(" Sub-prompts ",-1))]),l.value.length>0?(p(),$("div",fu,[(p(!0),$($e,null,Ie(l.value,A=>(p(),$("div",{key:A.name,class:"text-[11px]"},[h("div",mu,K(A.displayName),1),N(A)?(p(),$("div",hu,[k(A)?(p(),$("img",{key:0,src:k(A),alt:"",class:"h-3.5 w-3.5 shrink-0 rounded-sm"},null,8,pu)):W("",!0),h("span",vu,K(N(A)),1),P(A)?(p(),$("span",gu,K(P(A)),1)):W("",!0)])):W("",!0)]))),128))])):(p(),$("div",xu,"None"))]),_:1},8,["target","active"]),Q(Xe,{"data-tool-column":"handoff",class:"flex-[1_1_25%] border-t border-neutral-200 px-4 py-3 dark:border-neutral-700",target:L("tools","handoffs"),active:D("tools","handoffs"),onOpen:b[14]||(b[14]=A=>o("edit-surface",A)),onHoverTarget:b[15]||(b[15]=A=>o("hover-edit-target",A))},{default:ye(()=>[h("div",yu,[Q(I(oa),{class:"h-3 w-3"}),b[25]||(b[25]=pe(" Handoffs ",-1))]),r.value.length>0?(p(),$("div",bu,[(p(!0),$($e,null,Ie(r.value,A=>(p(),$("div",{key:A.name,class:"text-[11px]"},[h("div",ku,K(A.displayName),1)]))),128))])):(p(),$("div",wu,"None"))]),_:1},8,["target","active"]),Q(Xe,{"data-tool-column":"subagent",class:"flex-[1_1_25%] border-t border-neutral-200 px-4 py-3 dark:border-neutral-700",target:L("tools","sub-agents"),active:D("tools","sub-agents"),onOpen:b[16]||(b[16]=A=>o("edit-surface",A)),onHoverTarget:b[17]||(b[17]=A=>o("hover-edit-target",A))},{default:ye(()=>[h("div",$u,[Q(I(tt),{class:"h-3 w-3"}),b[26]||(b[26]=pe(" Sub-agents ",-1))]),s.value.length>0?(p(),$("div",Mu,[(p(!0),$($e,null,Ie(s.value,A=>(p(),$("div",{key:A.name,class:"text-[11px]"},[h("div",Tu,K(A.displayName),1)]))),128))])):(p(),$("div",Cu,"None"))]),_:1},8,["target","active"])])])],34))}}),Su={class:"flex items-center gap-2.5 px-5 pt-4 pb-3"},_u={class:"text-[15px] font-semibold text-neutral-900 dark:text-neutral-100"},Iu=_e({__name:"SidePromptNode",props:{data:{},selected:{type:Boolean},hovered:{type:Boolean},hoveredEditTarget:{},refreshEpoch:{}},emits:["select","edit-surface","hover-edit-target"],setup(e){const t=e,n=O(()=>t.data.mode==="human"),o=O(()=>{const s=t.data.model;return s?Ve(`/api/providers/${encodeURIComponent(s.provider)}/icon?model=${encodeURIComponent(s.model)}`):t.data.prompt?Ve(`/api/providers/${encodeURIComponent(t.data.prompt.model_provider)}/icon?model=${encodeURIComponent(t.data.prompt.model_id)}`):""}),a=O(()=>t.data.id==="a"?"border-sky-500 dark:border-sky-600":"border-amber-500 dark:border-amber-600"),l=O(()=>t.data.id==="a"?"text-sky-600 dark:text-sky-400":"text-amber-600 dark:text-amber-400");return(s,r)=>n.value?(p(),$("div",{key:0,"data-canvas-node":"",role:"button",tabindex:"0",onClick:r[0]||(r[0]=Me(i=>s.$emit("select"),["stop"])),onKeydown:[r[1]||(r[1]=Fe(Me(i=>s.$emit("select"),["prevent","stop"]),["enter"])),r[2]||(r[2]=Fe(Me(i=>s.$emit("select"),["prevent","stop"]),["space"]))],class:ue(["absolute cursor-pointer rounded-xl border bg-white transition-shadow select-none dark:bg-neutral-950",a.value,I(gt)(e.selected,e.hovered)])},[h("div",Su,[Q(I(aa),{class:ue(["h-5 w-5 shrink-0",l.value])},null,8,["class"]),h("span",_u,K(e.data.label),1)]),r[6]||(r[6]=h("div",{class:"border-t border-neutral-100 px-5 py-3 text-xs text-neutral-400 dark:border-neutral-800 dark:text-neutral-500"}," Receives user messages and input. ",-1))],34)):e.data.prompt?(p(),ce(Uo,{key:1,prompt:e.data.prompt,tools:e.data.tools,variables:e.data.variables,"variable-env-names":e.data.variableEnvNames,label:e.data.label,"model-name":e.data.model?.name,"model-provider":e.data.model?.provider,"model-actual":e.data.model?.model,"model-icon-src":o.value,"model-capabilities":e.data.model?.capabilities,"border-class":a.value,"accent-text-class":l.value,selected:e.selected,hovered:e.hovered,"hovered-edit-target":e.hoveredEditTarget,"refresh-epoch":e.refreshEpoch,onSelect:r[3]||(r[3]=i=>s.$emit("select")),onEditSurface:r[4]||(r[4]=i=>s.$emit("edit-surface",i)),onHoverEditTarget:r[5]||(r[5]=i=>s.$emit("hover-edit-target",i))},null,8,["prompt","tools","variables","variable-env-names","label","model-name","model-provider","model-actual","model-icon-src","model-capabilities","border-class","accent-text-class","selected","hovered","hovered-edit-target","refresh-epoch"])):W("",!0)}}),Eu={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Au(e,t){return p(),$("svg",Eu,[...t[0]||(t[0]=[Wr('<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M6 3v12"></path><circle cx="18" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle><path d="M18 9a9 9 0 0 1-9 9"></path></g>',1)])])}const Nu=nt({name:"lucide-git-branch",render:Au}),Pu={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Lu(e,t){return p(),$("svg",Pu,[...t[0]||(t[0]=[h("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 22v-5M9 8V2m6 6V2m3 6v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z"},null,-1)])])}const ro=nt({name:"lucide-plug",render:Lu}),Ru={class:"border-b border-neutral-200 dark:border-neutral-700"},Ou={class:"flex items-center justify-between gap-3 px-4 pt-3 pb-1.5"},Du={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.2em] text-neutral-500 dark:text-neutral-400"},Bu={key:0,class:"flex flex-wrap items-center gap-1"},Vu={class:"flex items-start justify-between gap-5 px-4 pt-1 pb-3"},Uu={class:"min-w-0 flex-1"},Hu={class:"truncate font-mono text-[13px] font-semibold text-neutral-900 dark:text-neutral-100"},zu={key:0,class:"w-56 shrink-0 text-balance text-left text-[10.5px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Fu={key:0,class:"px-5 py-3"},ju={class:"min-w-[320px] max-w-[380px]"},Xu={class:"mb-1 flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},Ku=_e({__name:"FunctionToolCard",props:{tool:{},detail:{},selected:{type:Boolean},hovered:{type:Boolean}},emits:["select"],setup(e){const t=e,n=O(()=>ma(t.detail.schema)),o=O(()=>t.detail.variables.length>0),a=O(()=>n.value.length>0),l=O(()=>{const s=[];return typeof t.tool.config.blocking=="boolean"&&s.push({label:t.tool.config.blocking?"blocking":"background",accent:!1}),t.tool.config.optional&&s.push({label:"optional",accent:!1}),t.tool.config.immediate&&s.push({label:"immediate",accent:!0}),s});return(s,r)=>(p(),$("div",{"data-canvas-node":"",role:"button",tabindex:"0",onClick:r[0]||(r[0]=Me(i=>s.$emit("select"),["stop"])),onKeydown:[r[1]||(r[1]=Fe(Me(i=>s.$emit("select"),["prevent","stop"]),["enter"])),r[2]||(r[2]=Fe(Me(i=>s.$emit("select"),["prevent","stop"]),["space"]))],class:ue(["absolute cursor-pointer overflow-hidden rounded-xl border border-neutral-300 bg-white transition-shadow select-none dark:border-neutral-700 dark:bg-neutral-950",I(gt)(e.selected,e.hovered)]),style:{width:"max-content"}},[h("header",Ru,[h("div",Ou,[h("div",Du,[Q(Xt,{class:"h-3 w-3"}),r[3]||(r[3]=h("span",null,"Function",-1))]),l.value.length>0?(p(),$("div",Bu,[(p(!0),$($e,null,Ie(l.value,i=>(p(),$("span",{key:i.label,class:ue(["rounded-md px-1.5 py-px font-mono text-[10px] lowercase tracking-wide",i.accent?"bg-amber-100 text-amber-700 dark:bg-amber-950/50 dark:text-amber-300":"bg-neutral-100 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400"])},K(i.label),3))),128))])):W("",!0)]),h("div",Vu,[h("div",Uu,[h("div",Hu,K(e.tool.displayName),1)]),e.detail.description?(p(),$("p",zu,K(e.detail.description),1)):W("",!0)])]),o.value||a.value?(p(),$("div",Fu,[h("div",ju,[o.value?(p(),ce(fa,{key:0,variables:e.detail.variables},null,8,["variables"])):W("",!0),a.value?(p(),$("div",{key:1,class:ue([o.value?"mt-3 border-t border-neutral-200 pt-3 dark:border-neutral-700":""])},[h("div",Xu,[Q(I($t),{class:"h-3 w-3"}),r[4]||(r[4]=pe(" Args ",-1))]),Q(Lo,{nodes:n.value,"empty-label":"No args"},null,8,["nodes"])],2)):W("",!0)])])):W("",!0)],34))}}),Yu={class:"flex items-center gap-2 text-[10px] font-bold uppercase tracking-[0.2em] opacity-60"},qu={class:"mt-1.5 truncate text-sm font-semibold text-neutral-900 dark:text-neutral-100"},Gu={key:0,class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},Wu=_e({__name:"ToolNode",props:{data:{},selected:{type:Boolean},hovered:{type:Boolean},hoveredEditTarget:{},refreshEpoch:{}},emits:["select","edit-surface","hover-edit-target","view-agent","detail-loading"],setup(e,{emit:t}){const n=e,o=t,a={tool:{label:"Function",classes:"border-neutral-300 bg-white dark:border-neutral-700 dark:bg-neutral-950",icon:Xt},prompt:{label:"Prompt Tool",classes:"border-fuchsia-300 bg-fuchsia-50/90 dark:border-fuchsia-700 dark:bg-fuchsia-950/30",icon:vt},subagent:{label:"Subagent",classes:"border-emerald-300 bg-emerald-50/90 dark:border-emerald-700 dark:bg-emerald-950/30",icon:Nu},handoff:{label:"Handoff",classes:"border-sky-300 bg-sky-50/90 dark:border-sky-700 dark:bg-sky-950/30",icon:oa},provider:{label:"Provider",classes:"border-amber-300 bg-amber-50/90 dark:border-amber-700 dark:bg-amber-950/30",icon:ro},mcp:{label:"MCP",classes:"border-violet-300 bg-violet-50/90 dark:border-violet-700 dark:bg-violet-950/30",icon:ro},unknown:{label:"Tool",classes:"border-neutral-300 bg-white dark:border-neutral-700 dark:bg-neutral-950",icon:sn}},l=O(()=>a[n.data.kind]||a.unknown),s=O(()=>n.data.kind==="tool"),r=O(()=>n.data.kind==="prompt"),i=O(()=>n.data.kind==="handoff"),c=O(()=>{const N=n.data.description;return N?N.length>48?N.slice(0,45)+"...":N:""}),d=B(null),f=B(null),v=B([]),x=B(null),g=B(null),u=O(()=>n.data.kind==="tool"||n.data.kind==="prompt"||n.data.kind==="handoff");let y=0;Pe(()=>[n.data.name,n.refreshEpoch??0],async()=>{const N=++y;u.value&&o("detail-loading",!0);try{const P=await _d(n.data);if(N!==y)return;f.value=P.functionTool,d.value=P.promptTool?.prompt||null,v.value=P.promptTool?.nestedTools||[],g.value=P.promptTool?.model||null,x.value=P.handoffAgent}finally{N===y&&u.value&&o("detail-loading",!1)}},{immediate:!0});const S=O(()=>g.value?Ve(`/api/providers/${encodeURIComponent(g.value.provider)}/icon?model=${encodeURIComponent(g.value.model)}`):d.value?Ve(`/api/providers/${encodeURIComponent(d.value.model_provider)}/icon?model=${encodeURIComponent(d.value.model_id)}`):""),_=O(()=>g.value?.name||d.value?.model_name),M=O(()=>g.value?.provider||d.value?.model_provider),k=O(()=>g.value?.model||d.value?.model_id||null);return(N,P)=>s.value&&f.value?(p(),ce(Ku,{key:0,tool:e.data,detail:f.value,selected:e.selected,hovered:e.hovered,onSelect:P[0]||(P[0]=L=>o("select"))},null,8,["tool","detail","selected","hovered"])):r.value&&d.value?(p(),ce(Uo,{key:1,prompt:d.value,tools:v.value,"tool-config":e.data.config,variables:I(ra)(d.value),"variable-env-names":I(sa)(d.value),"model-name":_.value,"model-provider":M.value,"model-actual":k.value,"model-icon-src":S.value,"model-capabilities":g.value?.capabilities,"border-class":"border-fuchsia-500 dark:border-fuchsia-600","accent-text-class":"text-fuchsia-600 dark:text-fuchsia-400",selected:e.selected,hovered:e.hovered,"hovered-edit-target":e.hoveredEditTarget,onSelect:P[1]||(P[1]=L=>o("select")),onEditSurface:P[2]||(P[2]=L=>o("edit-surface",L)),onHoverEditTarget:P[3]||(P[3]=L=>o("hover-edit-target",L)),"refresh-epoch":e.refreshEpoch},null,8,["prompt","tools","tool-config","variables","variable-env-names","model-name","model-provider","model-actual","model-icon-src","model-capabilities","selected","hovered","hovered-edit-target","refresh-epoch"])):i.value&&x.value?(p(),ce(No,{key:2,data:x.value,selected:e.selected,hovered:e.hovered,"hovered-edit-target":e.hoveredEditTarget,"border-class":"border-sky-400 dark:border-sky-500","background-class":"bg-sky-50/90 dark:bg-sky-950/30","kind-label":"Handoff","accent-text-class":"text-sky-600 dark:text-sky-400","action-label":"View agent",onSelect:P[4]||(P[4]=L=>o("select")),onAction:P[5]||(P[5]=L=>o("view-agent",x.value.name)),onEditSurface:P[6]||(P[6]=L=>o("edit-surface",L)),onHoverEditTarget:P[7]||(P[7]=L=>o("hover-edit-target",L))},null,8,["data","selected","hovered","hovered-edit-target"])):(p(),$("div",{key:3,"data-canvas-node":"",role:"button",tabindex:"0",onClick:P[8]||(P[8]=Me(L=>o("select"),["stop"])),onKeydown:[P[9]||(P[9]=Fe(Me(L=>o("select"),["prevent","stop"]),["enter"])),P[10]||(P[10]=Fe(Me(L=>o("select"),["prevent","stop"]),["space"]))],class:ue(["absolute cursor-pointer rounded-xl border px-4 py-3 transition-shadow select-none",l.value.classes,I(gt)(e.selected,e.hovered)])},[h("div",Yu,[(p(),ce(lt(l.value.icon),{class:"h-3.5 w-3.5"})),pe(" "+K(l.value.label),1)]),h("div",qu,K(e.data.displayName),1),c.value?(p(),$("div",Gu,K(c.value),1)):W("",!0)],34))}}),Qu={class:"flex items-center gap-2 text-[10px] font-bold uppercase tracking-[0.2em] text-neutral-500 dark:text-neutral-400"},Ju={class:"mt-1.5 truncate text-sm font-medium text-neutral-900 dark:text-neutral-100"},Zu=_e({__name:"HookNode",props:{data:{},selected:{type:Boolean},hovered:{type:Boolean}},emits:["select"],setup(e){return(t,n)=>(p(),$("div",{"data-canvas-node":"",role:"button",tabindex:"0",onClick:n[0]||(n[0]=Me(o=>t.$emit("select"),["stop"])),onKeydown:[n[1]||(n[1]=Fe(Me(o=>t.$emit("select"),["prevent","stop"]),["enter"])),n[2]||(n[2]=Fe(Me(o=>t.$emit("select"),["prevent","stop"]),["space"]))],class:ue(["absolute cursor-pointer rounded-xl border px-4 py-3 transition-shadow select-none","border-neutral-200 bg-neutral-50/80 dark:border-neutral-800 dark:bg-neutral-900/80",I(gt)(e.selected,e.hovered)])},[h("div",Qu,[Q(I(Yn),{class:"h-3.5 w-3.5"}),n[3]||(n[3]=pe(" Hook ",-1))]),h("div",Ju,K(e.data.hook),1)],34))}}),ec={class:"flex items-center gap-1.5 whitespace-nowrap px-4 pt-3 pb-1.5 text-[10px] font-bold uppercase tracking-[0.2em] text-neutral-500 dark:text-neutral-400"},tc={key:0,class:"ml-1 shrink-0 rounded-full border border-current/60 px-1.5 py-px text-[9.5px] font-semibold tracking-wider"},nc={"data-model-anchor":"",class:"flex items-center gap-2 px-4 pt-0.5 pb-3"},ac=["src"],oc={class:"min-w-0"},rc={class:"truncate text-[14px] font-semibold text-neutral-900 dark:text-neutral-100"},sc={key:0,class:"truncate font-mono text-[10px] text-neutral-400 dark:text-neutral-500"},lc={key:1,class:"truncate text-[10px] text-neutral-400 dark:text-neutral-500"},ic={key:0},dc={key:1,class:"text-neutral-300 dark:text-neutral-600 mx-1"},uc={key:2},cc={key:0,class:"grid grid-cols-2 border-t border-neutral-200 dark:border-neutral-700"},fc={key:1,class:"grid grid-cols-2 border-t border-neutral-200 text-[10px] text-neutral-400 dark:border-neutral-700 dark:text-neutral-500"},mc={class:"text-[9px] uppercase leading-tight tracking-[0.14em]"},hc={class:"mt-0.5 font-mono text-[11px] leading-tight text-neutral-600 dark:text-neutral-300"},pc={key:2,class:"space-y-1 border-t border-neutral-200 px-4 py-2 text-[10px] text-neutral-400 dark:border-neutral-700 dark:text-neutral-500"},vc={class:"uppercase tracking-[0.16em]"},gc={class:"min-w-0 truncate font-mono text-right"},xc=_e({__name:"ModelNode",props:{data:{},selected:{type:Boolean},hovered:{type:Boolean},hoveredEditTarget:{}},emits:["select","edit-surface","hover-edit-target"],setup(e,{emit:t}){const n=e,o=t,{activeSurface:a}=Kt(),l=O(()=>({entityType:"model",entityId:n.data.id})),s=O(()=>Ft(a.value?.target,l.value)||Ft(n.hoveredEditTarget,l.value)),r=O(()=>Ve(`/api/providers/${encodeURIComponent(n.data.provider)}/icon?model=${encodeURIComponent(n.data.model||"")}`)),i=O(()=>{const _=n.data.capabilities||{};return[{key:"images",label:"Vision",enabled:_.supportsImages===!0},{key:"tools",label:"Tool Calls",enabled:_.supportsToolCalls===!0},{key:"stream",label:"Streaming",enabled:_.supportsStreaming===!0},{key:"json",label:"JSON",enabled:_.supportsJsonMode===!0}]}),c=O(()=>n.data.providerTools||[]),d=O(()=>n.data.fallbacks||[]),f=O(()=>{const _=n.data.capabilities||{},M=[];return typeof _.maxContextTokens=="number"&&M.push({label:"Max context",value:_.maxContextTokens.toLocaleString()}),typeof _.maxOutputTokens=="number"&&M.push({label:"Max output",value:_.maxOutputTokens.toLocaleString()}),M}),v=_=>{if(_==null||Number.isNaN(_))return null;if(_===0)return"$0";const M=_>=1?_.toFixed(2):_.toFixed(4);return`$${parseFloat(M)}`},x=_=>{if(!_)return null;const M=v(_.min),k=v(_.max);return!M||!k?null:M===k?M:`${M}-${k}`},g=O(()=>{const _=n.data.pricing_range?.input;return _?x(_):v(n.data.input_price)}),u=O(()=>{const _=n.data.pricing_range?.output;return _?x(_):v(n.data.output_price)}),y=O(()=>!!(g.value||u.value)),S=O(()=>{const _=[];if(c.value.length>0){const M=c.value.slice(0,2).join(", "),k=c.value.length>2?", …":"";_.push({label:"Provider tools",value:M+k})}if(d.value.length>0){const M=d.value.slice(0,2).map(N=>N.name).join(", "),k=d.value.length>2?", …":"";_.push({label:"Fallbacks",value:M+k})}return _});return(_,M)=>(p(),ce(Xe,{"data-canvas-node":"","data-canvas-model-node":"",target:l.value,active:s.value,"edit-data":e.data,positioned:!1,class:ue(["absolute overflow-hidden rounded-xl border border-neutral-300 bg-white transition-shadow select-none dark:border-neutral-700 dark:bg-neutral-950",I(gt)(e.selected,e.hovered)]),onOpen:M[1]||(M[1]=k=>o("edit-surface",k)),onHoverTarget:M[2]||(M[2]=k=>o("hover-edit-target",k))},{default:ye(()=>[h("header",null,[h("div",ec,[Q(I(mo),{class:"h-3 w-3"}),M[3]||(M[3]=h("span",null,"Model",-1)),e.data.provider?(p(),$("span",tc,K(e.data.provider),1)):W("",!0)]),h("div",nc,[h("img",{src:r.value,alt:"",class:"h-5 w-5 shrink-0 rounded-sm",onError:M[0]||(M[0]=k=>k.target.style.visibility="hidden")},null,40,ac),h("div",oc,[h("div",rc,K(e.data.name),1),e.data.model&&e.data.model!==e.data.name?(p(),$("div",sc,K(e.data.model),1)):W("",!0),y.value?(p(),$("div",lc,[g.value?(p(),$("span",ic,[M[4]||(M[4]=h("span",{class:"text-neutral-300 dark:text-neutral-600"},"in",-1)),pe(" "+K(g.value)+"/M ",1)])):W("",!0),g.value&&u.value?(p(),$("span",dc,"·")):W("",!0),u.value?(p(),$("span",uc,[M[5]||(M[5]=h("span",{class:"text-neutral-300 dark:text-neutral-600"},"out",-1)),pe(" "+K(u.value)+"/M ",1)])):W("",!0)])):W("",!0)])])]),i.value.length>0?(p(),$("div",cc,[(p(!0),$($e,null,Ie(i.value,(k,N)=>(p(),$("div",{key:k.key,class:ue(["flex items-center gap-2 px-4 py-2",N%2===1?"border-l border-neutral-200 dark:border-neutral-700":"",N>=2?"border-t border-neutral-200 dark:border-neutral-700":""])},[h("span",{class:ue(["h-1.5 w-1.5 shrink-0 rounded-full",k.enabled?"bg-emerald-500 shadow-[0_0_0_2px_rgba(16,185,129,0.16)]":"bg-neutral-300 dark:bg-neutral-700"])},null,2),h("span",{class:ue(["text-[11px] leading-tight",k.enabled?"text-neutral-700 dark:text-neutral-300":"text-neutral-400 dark:text-neutral-500"])},K(k.label),3)],2))),128))])):W("",!0),f.value.length>0?(p(),$("div",fc,[(p(!0),$($e,null,Ie(f.value,(k,N)=>(p(),$("div",{key:k.label,class:ue(["px-4 py-2",N>0?"border-l border-neutral-200 dark:border-neutral-700":""])},[h("div",mc,K(k.label),1),h("div",hc,K(k.value),1)],2))),128))])):W("",!0),S.value.length>0?(p(),$("div",pc,[(p(!0),$($e,null,Ie(S.value,k=>(p(),$("div",{key:k.label,class:"flex items-baseline justify-between gap-3"},[h("span",vc,K(k.label),1),h("span",gc,K(k.value),1)]))),128))])):W("",!0)]),_:1},8,["target","active","edit-data","class"]))}}),yc={class:"relative flex-1 overflow-hidden bg-neutral-100/50 dark:bg-neutral-950/50"},bc=["aria-label","onClick","onKeydown"],kc={class:"pointer-events-none absolute inset-0 h-full w-full","aria-hidden":"true"},wc=["id"],$c=["fill"],Mc={class:"absolute -top-3 left-4 z-10 flex items-center gap-2 rounded bg-white px-2 py-0.5 dark:bg-neutral-900"},Tc={class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-600 dark:text-neutral-300"},Cc={key:0,class:"absolute inset-0 z-10 flex items-center justify-center bg-neutral-100 dark:bg-neutral-950"},Sc={key:0,class:"absolute left-4 right-4 top-4 z-10 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-800 dark:border-amber-800 dark:bg-amber-950/80 dark:text-amber-100"},_c={key:1,class:"absolute inset-0 flex flex-col items-center justify-center gap-3 text-neutral-400 dark:text-neutral-600"},Ic=_e({__name:"CompositionCanvas",props:{layout:{},selectedNodeId:{},hoveredNodeId:{},hoveredEditTarget:{},refreshingNodeId:{},refreshEpoch:{},loading:{type:Boolean},error:{},hasAgent:{type:Boolean}},emits:["select-node","view-agent","deselect","nodes-measured","hover-node","open-edit-surface"],setup(e,{emit:t}){const n=e,o=t,a=B(null),l=B(new Set);Pe(()=>n.layout.nodes.map(ee=>ee.id).join(","),ee=>{const Z=new Set(ee?ee.split(","):[]);l.value=new Set([...l.value].filter(m=>Z.has(m)))},{immediate:!0});function s(ee,Z){const m=new Set(l.value);Z?m.add(ee):m.delete(ee),l.value=m}const r=O(()=>l.value.size>0),i=B(!1),{state:c,isPanning:d,transformStyle:f,scalePercent:v,onWheel:x,onPointerDown:g,onPointerMove:u,onPointerUp:y,shouldHandleClick:S,zoomIn:_,zoomOut:M,fitToView:k,resetAutoFitLock:N,focusNode:P,setContentBounds:L,saveViewport:ne,restoreViewport:q}=Pl(a,{maxScale:1.2,panPadding:40});Pe(c,()=>os(),{deep:!0,flush:"post"}),Pa(ee=>{const Z=a.value;Z&&(Z.addEventListener("wheel",x,{passive:!1}),ee(()=>Z.removeEventListener("wheel",x)))}),Qr(()=>{a.value?.removeEventListener("wheel",x)});const D=Ln(n,"layout"),C=Ln(n,"loading"),T=Ln(n,"selectedNodeId"),{layoutStable:b,measurements:A,nodesWithMeasuredSizes:G,nodeMetrics:Y,measureNode:H,measuredBounds:E}=El(D,C,ee=>k(ee,{force:!1}),ee=>o("nodes-measured",ee),N);Pe(()=>n.loading,ee=>{ee&&(i.value=!1)}),Pe([b,r],([ee,Z])=>{ee&&!Z&&(i.value=!0)},{immediate:!0});const F=O(()=>Ll({hasAgent:n.hasAgent,hasError:!!n.error,loadingComposition:n.loading,layoutStable:b.value,loadingAsyncDetail:r.value,hasRevealedStableDiagram:i.value}));function j(ee,Z){if(Z instanceof HTMLElement){H(ee,Z);return}if(!Z||typeof Z!="object"||!("$el"in Z))return;const m=Z.$el;m instanceof HTMLElement&&H(ee,m)}Pa(()=>{if(!n.hasAgent||n.layout.nodes.length===0){L(null);return}L(E())});function X(ee){if(ee.type==="agent"||ee.type==="side"||ee.type==="model")return!0;if(ee.type!=="tool")return!1;const Z=ee.data.kind;return Z==="prompt"||Z==="handoff"}const he=O(()=>{const ee=n.hoveredNodeId;if(!ee)return null;const Z=n.layout.nodes.find(w=>w.id===ee);if(!Z||!X(Z))return null;const m=new Set([ee]);for(const w of n.layout.edges)w.from===ee&&m.add(w.to),w.to===ee&&m.add(w.from);return m});function se(ee){const Z=he.value;return Z?Z.has(ee)?{}:{opacity:"0.25",transition:"opacity 120ms ease-out"}:{}}function fe(ee){const Z=he.value;if(!Z)return!0;const m=n.layout.groups.find(w=>w.id===ee);if(!m)return!0;for(const w of n.layout.nodes)if(Z.has(w.id)&&w.x>=m.x&&w.y>=m.y&&w.x+w.width<=m.x+m.width&&w.y+w.height<=m.y+m.height)return!0;return!1}const{handleCanvasClick:z,handleGroupClick:U,handleNodeSelect:J}=Al({containerRef:a,layout:D,selectedNodeId:T,layoutStable:b,measurements:A,viewportState:c,shouldHandleClick:S,focusNode:P,saveViewport:ne,restoreViewport:q,onSelectNode:ee=>o("select-node",ee),onDeselect:()=>o("deselect")});function le(ee,Z){o("open-edit-surface",{...Z,node:ee})}function ie(ee,Z){o("hover-node",ee.id,Z)}function ve(ee,Z){ee.key!=="Enter"&&ee.key!==" "||(ee.preventDefault(),ee.stopPropagation(),U(ee,Z))}return(ee,Z)=>(p(),$("div",yc,[h("div",{ref_key:"containerRef",ref:a,class:ue(["absolute inset-0",I(d)?"cursor-grabbing":"cursor-grab"]),onPointerdown:Z[6]||(Z[6]=(...m)=>I(g)&&I(g)(...m)),onPointermove:Z[7]||(Z[7]=(...m)=>I(u)&&I(u)(...m)),onPointerup:Z[8]||(Z[8]=(...m)=>I(y)&&I(y)(...m)),onPointercancel:Z[9]||(Z[9]=(...m)=>I(y)&&I(y)(...m)),onClick:Z[10]||(Z[10]=(...m)=>I(z)&&I(z)(...m))},[Q(Ol),h("div",{class:"absolute origin-top-left will-change-transform",style:De({...I(f),opacity:I(b)?1:0,transition:I(b)?"opacity 200ms ease-out":"none",pointerEvents:I(b)?"auto":"none"})},[(p(!0),$($e,null,Ie(e.layout.groups,m=>(p(),$($e,{key:m.id},[m.subagent?.multiInstance?(p(),$("div",{key:0,class:"absolute border border-neutral-200/40 bg-[#f3f3f3] dark:border-neutral-700/25 dark:bg-[#1a1a1a]",style:De({left:`${m.x+6}px`,top:`${m.y+6}px`,width:`${m.width}px`,height:`${m.height}px`,borderRadius:"8px"})},null,4)):W("",!0),m.subagent?.multiInstance?(p(),$("div",{key:1,class:"absolute border border-neutral-200/50 bg-[#f5f5f5] dark:border-neutral-700/35 dark:bg-[#1c1c1c]",style:De({left:`${m.x+3}px`,top:`${m.y+3}px`,width:`${m.width}px`,height:`${m.height}px`,borderRadius:"8px"})},null,4)):W("",!0),h("div",{"data-canvas-group":"",class:"absolute cursor-pointer select-none border border-neutral-200/60 bg-[#f7f7f7] transition-opacity duration-150 ease-out dark:border-neutral-700/50 dark:bg-[#1e1e1e]",role:"button",tabindex:"0","aria-label":`Focus ${m.label}`,onClick:Me(w=>I(U)(w,m),["stop"]),onKeydown:w=>ve(w,m),style:De({left:`${m.x}px`,top:`${m.y}px`,width:`${m.width}px`,height:`${m.height}px`,borderRadius:"8px",opacity:fe(m.id)?1:.3})},[(p(),$("svg",kc,[h("defs",null,[h("pattern",{id:"subgrid-"+m.id,x:"0",y:"0",width:"20",height:"20",patternUnits:"userSpaceOnUse"},[...Z[12]||(Z[12]=[h("circle",{cx:"10",cy:"10",r:"0.75",class:"fill-neutral-400/15 dark:fill-neutral-500/15"},null,-1)])],8,wc)]),h("rect",{width:"100%",height:"100%",fill:`url(#subgrid-${m.id})`},null,8,$c)])),h("div",Mc,[h("span",Tc,K(m.label),1),m.subagent?(p(),$($e,{key:0},[h("span",{class:ue(["inline-flex items-center rounded-full px-1.5 py-px text-[9px] font-medium",m.subagent.resumable?"bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-400":"bg-neutral-100 text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400"])},K(m.subagent.resumable?"Resumable":"Blocking"),3),h("span",{class:ue(["inline-flex items-center rounded-full px-1.5 py-px text-[9px] font-medium",m.subagent.multiInstance?"bg-sky-100 text-sky-700 dark:bg-sky-900/40 dark:text-sky-400":"bg-neutral-100 text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400"])},K(m.subagent.multiInstance?"Multi":"Single"),3)],64)):W("",!0)])],44,bc)],64))),128)),e.layout.nodes.length>0?(p(),ce(yi,{key:0,nodes:I(G),edges:e.layout.edges,groups:e.layout.groups,"node-metrics":I(Y),"selected-node-id":e.selectedNodeId,"hovered-node-id":e.hoveredNodeId},null,8,["nodes","edges","groups","node-metrics","selected-node-id","hovered-node-id"])):W("",!0),(p(!0),$($e,null,Ie(e.layout.nodes,m=>(p(),$($e,{key:m.id},[m.type==="agent"?(p(),ce(rd,{key:0,ref_for:!0,ref:w=>j(m.id,w),"data-canvas-node-id":m.id,data:m.data,selected:e.selectedNodeId===m.id,hovered:e.hoveredNodeId===m.id,"hovered-edit-target":e.hoveredEditTarget,"refresh-epoch":e.refreshEpoch,style:De({left:`${m.x}px`,top:`${m.y}px`,width:"max-content",minWidth:`${m.width}px`,...se(m.id)}),onSelect:w=>I(J)(m),onEditSurface:w=>le(m,w),onHoverEditTarget:w=>ie(m,w),onMouseenter:w=>o("hover-node",m.id),onMouseleave:Z[0]||(Z[0]=w=>o("hover-node",null))},null,8,["data-canvas-node-id","data","selected","hovered","hovered-edit-target","refresh-epoch","style","onSelect","onEditSurface","onHoverEditTarget","onMouseenter"])):m.type==="side"?(p(),ce(Iu,{key:1,ref_for:!0,ref:w=>j(m.id,w),"data-canvas-node-id":m.id,data:m.data,selected:e.selectedNodeId===m.id,hovered:e.hoveredNodeId===m.id,"hovered-edit-target":e.hoveredEditTarget,style:De({left:`${m.x}px`,top:`${m.y}px`,width:"max-content",minWidth:`${m.width}px`,...se(m.id)}),onSelect:w=>I(J)(m),onEditSurface:w=>le(m,w),onHoverEditTarget:w=>ie(m,w),onMouseenter:w=>o("hover-node",m.id),onMouseleave:Z[1]||(Z[1]=w=>o("hover-node",null))},null,8,["data-canvas-node-id","data","selected","hovered","hovered-edit-target","style","onSelect","onEditSurface","onHoverEditTarget","onMouseenter"])):m.type==="tool"?(p(),ce(Wu,{key:2,ref_for:!0,ref:w=>j(m.id,w),"data-canvas-node-id":m.id,data:m.data,selected:e.selectedNodeId===m.id,hovered:e.hoveredNodeId===m.id,"hovered-edit-target":e.hoveredEditTarget,"refresh-epoch":e.refreshEpoch,style:De(m.data.kind==="tool"?{left:`${m.x}px`,top:`${m.y}px`,width:"max-content",minWidth:`${m.width}px`,...se(m.id)}:["prompt","handoff"].includes(m.data.kind)?{left:`${m.x}px`,top:`${m.y}px`,width:"max-content",minWidth:`${m.width}px`,...se(m.id)}:{left:`${m.x}px`,top:`${m.y}px`,width:`${m.width}px`,height:`${m.height}px`,...se(m.id)}),onSelect:w=>I(J)(m),onEditSurface:w=>le(m,w),onHoverEditTarget:w=>ie(m,w),onViewAgent:Z[2]||(Z[2]=w=>o("view-agent",w)),onDetailLoading:w=>s(m.id,w),onMouseenter:w=>o("hover-node",m.id),onMouseleave:Z[3]||(Z[3]=w=>o("hover-node",null))},null,8,["data-canvas-node-id","data","selected","hovered","hovered-edit-target","refresh-epoch","style","onSelect","onEditSurface","onHoverEditTarget","onDetailLoading","onMouseenter"])):m.type==="hook"?(p(),ce(Zu,{key:3,"data-canvas-node-id":m.id,data:m.data,selected:e.selectedNodeId===m.id,hovered:e.hoveredNodeId===m.id,style:De({left:`${m.x}px`,top:`${m.y}px`,width:`${m.width}px`,height:`${m.height}px`,...se(m.id)}),onSelect:w=>I(J)(m),onMouseenter:w=>o("hover-node",m.id),onMouseleave:Z[4]||(Z[4]=w=>o("hover-node",null))},null,8,["data-canvas-node-id","data","selected","hovered","style","onSelect","onMouseenter"])):m.type==="model"?(p(),ce(xc,{key:4,ref_for:!0,ref:w=>j(m.id,w),"data-canvas-node-id":m.id,data:m.data,selected:e.selectedNodeId===m.id,hovered:e.hoveredNodeId===m.id,"hovered-edit-target":e.hoveredEditTarget,style:De({left:`${m.x}px`,top:`${m.y}px`,width:`${m.width}px`,minHeight:`${m.height}px`,...se(m.id)}),onSelect:w=>I(J)(m),onEditSurface:w=>le(m,w),onHoverEditTarget:w=>ie(m,w),onMouseenter:w=>o("hover-node",m.id),onMouseleave:Z[5]||(Z[5]=w=>o("hover-node",null))},null,8,["data-canvas-node-id","data","selected","hovered","hovered-edit-target","style","onSelect","onEditSurface","onHoverEditTarget","onMouseenter"])):W("",!0),e.refreshingNodeId===m.id?(p(),$("div",{key:5,class:"absolute flex items-center justify-center rounded-xl bg-white/70 dark:bg-neutral-950/70",style:De({left:`${m.x}px`,top:`${m.y}px`,width:`${I(A).get(m.id)?.w??m.width}px`,height:`${I(A).get(m.id)?.h??m.height}px`})},[...Z[13]||(Z[13]=[h("div",{class:"h-4 w-4 animate-spin rounded-full border-2 border-neutral-300 border-t-neutral-600 dark:border-neutral-600 dark:border-t-neutral-300"},null,-1)])],4)):W("",!0)],64))),128))],4)],34),Q(io,{"leave-active-class":"transition-opacity duration-200 ease-out","leave-to-class":"opacity-0"},{default:ye(()=>[F.value?(p(),$("div",Cc,[...Z[14]||(Z[14]=[h("div",{class:"flex items-center gap-2 rounded-full border border-neutral-300 bg-white/80 px-3 py-2 text-xs font-medium text-neutral-600 shadow-sm dark:border-neutral-700 dark:bg-neutral-900/80 dark:text-neutral-300"},[h("span",{class:"h-3.5 w-3.5 animate-spin rounded-full border-2 border-neutral-300 border-t-neutral-700 dark:border-neutral-600 dark:border-t-neutral-200"}),pe(" Preparing diagram ")],-1)])])):W("",!0)]),_:1}),e.error?(p(),$("div",Sc,K(e.error),1)):W("",!0),!e.hasAgent&&!e.loading&&!e.error?(p(),$("div",_c,[Q(I(ho),{class:"h-12 w-12 opacity-40"}),Z[15]||(Z[15]=h("div",{class:"text-sm"},"Select an agent to view its composition",-1))])):W("",!0),e.hasAgent&&I(b)?(p(),ce(_i,{key:2,"scale-percent":I(v),onZoomIn:I(_),onZoomOut:I(M),onFitView:Z[11]||(Z[11]=m=>I(k)(I(E)(),{force:!0}))},null,8,["scale-percent","onZoomIn","onZoomOut"])):W("",!0)]))}}),Ec=_e({__name:"InspectorPanel",props:{node:{},compositionSummary:{}},emits:["saved","close"],setup(e,{emit:t}){const n=e,o=t,a=B("inspect"),l=B(null),s=B(null),r=B(null),i=B(null),{saving:c,apiError:d,saveAgent:f,clearAgentError:v}=po(),{saving:x,apiError:g,savePrompt:u,clearPromptError:y}=rs(),{saving:S,apiError:_,saveModel:M,clearModelError:k}=ss(),N=O(()=>c.value||x.value||S.value),P=O(()=>a.value==="edit-prompt"?g.value:a.value==="edit-model"?_.value:d.value);function L(T){return T?.id||T?.name||null}Pe(()=>n.node,T=>{if(v(),y(),k(),!T){a.value="inspect",l.value=null;return}if(T.type==="agent")l.value=T.value,a.value="edit-agent";else if(T.type==="side"){const b=T.value;b.prompt?(l.value=b.prompt,a.value="edit-prompt"):(a.value="inspect",l.value=null)}else T.type==="model"?(l.value=T.value,a.value="edit-model"):(a.value="inspect",l.value=null)});async function ne(T){(await f({mode:"edit",data:T,editingId:n.node?.type==="agent"?n.node.value.name:void 0,formNode:s.value?.formNode})).ok&&(a.value="inspect",l.value=null,o("saved"))}async function q(T){const b=L(l.value);(await u({mode:"edit",data:T,editingId:b,formNode:r.value?.formNode})).ok&&(a.value="inspect",l.value=null,o("saved"))}async function D(T){const b=L(l.value);(await M({mode:"edit",data:T,editingId:b,formNode:i.value?.formNode})).ok&&(a.value="inspect",l.value=null,o("saved"))}function C(){a.value="inspect",l.value=null,v(),y(),k(),o("close")}return(T,b)=>(p(),$("div",null,[a.value==="edit-agent"?(p(),ce(go,{key:0,ref_key:"agentModalRef",ref:s,"model-value":!0,"edit-agent":l.value,mode:"edit",saving:N.value,"api-error":P.value,onSave:ne,"onUpdate:modelValue":C},null,8,["edit-agent","saving","api-error"])):W("",!0),a.value==="edit-prompt"?(p(),ce(ys,{key:1,ref_key:"promptModalRef",ref:r,"model-value":!0,"edit-prompt":l.value,mode:"edit",saving:N.value,onSave:q,"onUpdate:modelValue":C},null,8,["edit-prompt","saving"])):W("",!0),a.value==="edit-model"?(p(),ce(bs,{key:2,ref_key:"modelModalRef",ref:i,"model-value":!0,"edit-model":l.value,mode:"edit",saving:N.value,onSave:D,"onUpdate:modelValue":C},null,8,["edit-model","saving"])):W("",!0)]))}}),Ac={class:"relative"},Nc={key:1,class:"mt-[2px] inline-block h-3 w-3 shrink-0"},Pc=["src"],Lc={class:"min-w-0 flex-1"},Rc={class:"flex min-w-0 items-start gap-2"},Oc={key:0,class:"mt-[1px] shrink-0 text-[11px] leading-none font-semibold text-rose-500 dark:text-rose-400","aria-label":"Required"},Dc=["onKeydown"],Bc={key:2,class:"ml-auto shrink-0 truncate pl-2 text-[10px] text-neutral-400 dark:text-neutral-500",style:{"max-width":"35%"}},Vc={key:0,class:"mt-1 flex flex-wrap gap-1"},Uc={key:2,class:"mt-1 grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5 text-[10.5px]"},Hc={class:"truncate text-neutral-400 dark:text-neutral-500"},zc={key:0,class:"relative"},Fc=10,jc=_e({__name:"StructureTreeRow",props:{node:{},depth:{},collapsed:{},selectedCanvasNodeId:{},hoveredCanvasNodeId:{},hoveredEditTarget:{},inheritedEditSurface:{},inheritedAnchorEl:{}},emits:["select","edit","hover","toggle"],setup(e,{emit:t}){const n={tool:Xt,prompt:vt,subagent:tt,handoff:oa,provider:$t,mcp:$t,unknown:sn},o={agent:tt,side:tt,prompt:vt,model:mo,variables:Jn,variable:Jn,hooks:Yn,hook:Yn,tools:sn,tool:Xt,subagent:tt,config:Oa,section:Oa,schema:$t},a={tool:"text-neutral-600 dark:text-neutral-400",prompt:"text-fuchsia-600 dark:text-fuchsia-400",subagent:"text-emerald-600 dark:text-emerald-400",handoff:"text-sky-600 dark:text-sky-400",provider:"text-amber-600 dark:text-amber-400",mcp:"text-violet-600 dark:text-violet-400",unknown:"text-neutral-500 dark:text-neutral-400"},l={neutral:"bg-neutral-100 text-neutral-600 dark:bg-neutral-900 dark:text-neutral-400",sky:"bg-sky-100 text-sky-700 dark:bg-sky-950/50 dark:text-sky-300",amber:"bg-amber-100 text-amber-700 dark:bg-amber-950/50 dark:text-amber-300",emerald:"bg-emerald-100 text-emerald-700 dark:bg-emerald-950/50 dark:text-emerald-300",fuchsia:"bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-950/50 dark:text-fuchsia-300",violet:"bg-violet-100 text-violet-700 dark:bg-violet-950/50 dark:text-violet-300",rose:"bg-rose-100 text-rose-700 dark:bg-rose-950/50 dark:text-rose-300"},s={neutral:"text-neutral-700 dark:text-neutral-300",sky:"text-sky-600 dark:text-sky-400",amber:"text-amber-600 dark:text-amber-400",emerald:"text-emerald-600 dark:text-emerald-400",fuchsia:"text-fuchsia-600 dark:text-fuchsia-400",violet:"text-violet-600 dark:text-violet-400",rose:"text-rose-600 dark:text-rose-400"},r=e,i=t,{activeSurface:c}=Kt(),d=B(null),f=B(!1),v=O(()=>r.node.editSurface??r.inheritedEditSurface??null),x=O(()=>r.node.editSurface?d.value:r.inheritedAnchorEl??null),g=O(()=>{const z=r.node.editSurface;return z?.entityType!=="prompt"||r.node.kind!=="prompt"&&r.node.toolKind!=="prompt"?null:{entityType:"prompt",entityId:z.entityId,section:"prompt"}}),u=O(()=>!!r.node.children&&r.node.children.length>0),y=O(()=>u.value||r.node.collapsibleBody===!0),S=O(()=>!!r.node.isRoot),_=O(()=>S.value?!0:!r.collapsed.has(r.node.id)),M=O(()=>r.selectedCanvasNodeId===r.node.canvasNodeId);function k(z){if(!z)return!1;const U=[...r.node.children||[]];for(;U.length>0;){const J=U.pop();if(J.cardBacked===!0&&J.canvasNodeId===z)return!0;J.children?.length&&U.push(...J.children)}return!1}const N=O(()=>d.value&&c.value?.anchorEl===d.value?!0:!r.node.editSurface||r.node.anchorOnlyEditSurface?!1:Ft(r.node.editSurface,c.value?.target)?!0:c.value?!1:r.node.cardBacked===!0&&M.value&&!k(r.selectedCanvasNodeId)),P=O(()=>c.value||r.node.anchorOnlyEditSurface?!1:Ft(r.node.editSurface,r.hoveredEditTarget)?!0:r.hoveredEditTarget?!1:r.node.cardBacked===!0&&r.hoveredCanvasNodeId===r.node.canvasNodeId&&!k(r.hoveredCanvasNodeId??null)),L=O(()=>Ft(c.value?.target,g.value)),ne=O(()=>S.value?0:Math.max(0,r.depth-1)),q=O(()=>ne.value*Fc),D=O(()=>{const z=r.node;return(z.kind==="tools"||z.kind==="tool")&&z.toolKind?n[z.toolKind]||sn:z.kind==="side"&&z.detail==="Human"?aa:o[z.kind]||$t}),C=O(()=>{const z=r.node;return z.kind!=="agent"&&z.kind!=="subagent"?null:z.avatarSrc?z.avatarSrc:z.avatarSeed?na(z.avatarSeed):null}),T=O(()=>{const z=r.node;return z.kind==="agent"?"text-neutral-700 dark:text-neutral-200":z.kind==="side"?z.id.endsWith("side-a")?"text-sky-600 dark:text-sky-400":"text-amber-600 dark:text-amber-400":z.kind==="prompt"&&z.tone?s[z.tone]:z.kind==="prompt"||z.kind==="model"?"text-neutral-500 dark:text-neutral-400":z.kind==="subagent"?"text-emerald-600 dark:text-emerald-400":z.kind==="hook"||z.kind==="hooks"?"text-neutral-500 dark:text-neutral-400":(z.kind==="tool"||z.kind==="tools")&&z.toolKind?a[z.toolKind]||"text-neutral-500":"text-neutral-500 dark:text-neutral-400"}),b=O(()=>{const z=r.node;return z.kind==="agent"||z.kind==="subagent"||z.kind==="tool"&&z.toolKind==="handoff"}),A=O(()=>{const z=["group relative flex items-start gap-1.5 px-2 cursor-pointer select-none transition-colors"];return z.push(b.value?"py-[6px] text-[12.5px]":"py-[4px]"),b.value&&z.push("relative z-[1] structure-row-agent-bg"),N.value?z.push("rounded-r-md structure-row-active"):P.value?z.push("rounded-md structure-row-hover"):b.value?z.push("rounded-md"):z.push("rounded-md agents-surface-hover"),r.node.virtual&&!M.value&&!N.value&&z.push("text-neutral-600 dark:text-neutral-400"),z.join(" ")}),G=O(()=>{const z=r.node,U=["truncate"],J=z.kind==="tool"&&z.toolKind==="handoff",le=z.kind==="variable"||z.kind==="schema"&&z.hideIcon===!0||z.kind==="tool"&&!J;return z.cardBacked?U.push(le?"font-semibold text-neutral-900 dark:text-neutral-50":"font-medium text-neutral-900 dark:text-neutral-50"):U.push("font-normal text-neutral-700 dark:text-neutral-300"),le&&U.push("font-mono text-[11.5px]"),U.join(" ")});function Y(z){return["rounded px-1.5 py-px text-[9px] font-semibold lowercase tracking-wide",z.mono?"font-mono":"",l[z.tone||"neutral"]].join(" ")}function H(z){return z.active===!1?"text-neutral-400 dark:text-neutral-600":s[z.tone||"neutral"]||s.neutral}function E(z){z.stopPropagation(),!S.value&&i("toggle",r.node.id)}function F(z){z.stopPropagation(),j()}function j(){if(f.value){f.value=!1;return}if(v.value&&x.value){i("edit",v.value,x.value,r.node.canvasNodeId,r.node.editData);return}i("select",r.node.canvasNodeId),!S.value&&y.value&&!_.value&&i("toggle",r.node.id)}function X(z){z.key!=="Enter"&&z.key!==" "||(z.preventDefault(),z.stopPropagation(),j())}function he(z){z.button===0&&(!v.value||!x.value||(z.stopPropagation(),f.value=!0,i("edit",v.value,x.value,r.node.canvasNodeId,r.node.editData)))}function se(){i("hover",r.node.canvasNodeId,v.value)}function fe(z){z.stopPropagation();const U=g.value,J=z.currentTarget;!U||!(J instanceof HTMLElement)||i("edit",U,J,r.node.canvasNodeId,r.node.editData)}return(z,U)=>{const J=At("StructureTreeRow",!0),le=Jr("auto-animate");return p(),$("div",Ac,[h("div",{class:"mx-1",style:De({paddingLeft:`${q.value}px`})},[N.value?(p(),$("div",{key:0,class:ue(["pointer-events-none absolute bottom-0 top-0 z-[2] w-px bg-accent-500"]),style:De({left:`${q.value+5}px`})},null,4)):W("",!0),h("div",{ref_key:"rowRef",ref:d,class:ue(A.value),role:"button",tabindex:"0",onClick:F,onKeydown:X,onPointerdown:he,onMouseenter:se},[y.value&&!S.value?(p(),ce(I(yo),{key:0,class:ue(["mt-[2px] h-3 w-3 shrink-0 text-neutral-400 transition-transform",_.value?"rotate-90":""]),onClick:E},null,8,["class"])):S.value?W("",!0):(p(),$("span",Nc)),C.value?(p(),$("img",{key:2,src:C.value,alt:"",class:"mt-[1px] h-4 w-4 shrink-0 rounded object-cover"},null,8,Pc)):e.node.hideIcon?W("",!0):(p(),ce(lt(D.value),{key:3,class:ue(["mt-[1px] h-3.5 w-3.5 shrink-0",T.value])},null,8,["class"])),h("div",Lc,[h("div",Rc,[h("span",{class:ue(G.value)},K(e.node.label),3),e.node.required?(p(),$("span",Oc," * ")):W("",!0),g.value?(p(),ce(I(ls),{key:1,content:"Edit prompt text",position:"right",disabled:L.value},{default:ye(()=>[h("button",{type:"button",class:ue(["mt-[-2px] inline-flex h-5 w-5 shrink-0 cursor-pointer items-center justify-center rounded text-neutral-400 transition-colors hover:text-neutral-900 dark:text-neutral-500 dark:hover:text-neutral-100",L.value?"text-accent-700 dark:text-accent-300":""]),"aria-label":"Edit prompt text",onClick:fe,onPointerdown:U[0]||(U[0]=Me(()=>{},["stop"])),onKeydown:[Fe(Me(fe,["prevent","stop"]),["enter"]),Fe(Me(fe,["prevent","stop"]),["space"])],onMouseenter:U[1]||(U[1]=Me(ie=>i("hover",e.node.canvasNodeId,g.value),["stop"])),onMouseleave:U[2]||(U[2]=Me(ie=>i("hover",e.node.canvasNodeId,v.value),["stop"]))},[Q(I(Po),{class:"h-3.5 w-3.5"})],42,Dc)]),_:1},8,["disabled"])):W("",!0),e.node.detail?(p(),$("span",Bc,K(e.node.detail),1)):W("",!0)]),(!e.node.collapsibleBody||_.value)&&e.node.badges&&e.node.badges.length>0?(p(),$("div",Vc,[(p(!0),$($e,null,Ie(e.node.badges,ie=>(p(),$("span",{key:ie.label,class:ue(Y(ie))},K(ie.label),3))),128))])):W("",!0),(!e.node.collapsibleBody||_.value)&&e.node.description?(p(),$("div",{key:1,class:ue(["mt-1 text-[10.5px] leading-relaxed text-neutral-500 dark:text-neutral-400",e.node.virtual&&!M.value?"opacity-90":""])},K(e.node.description),3)):W("",!0),(!e.node.collapsibleBody||_.value)&&e.node.metaRows&&e.node.metaRows.length>0?(p(),$("dl",Uc,[(p(!0),$($e,null,Ie(e.node.metaRows,ie=>(p(),$($e,{key:ie.label},[h("dt",Hc,K(ie.label),1),h("dd",{class:ue(["truncate text-right",ie.mono!==!1?"font-mono":"",H(ie)])},K(ie.value),3)],64))),128))])):W("",!0)])],34)],4),u.value?Zr((p(),$("div",zc,[_.value?(p(!0),$($e,{key:0},Ie(e.node.children,ie=>(p(),ce(J,{key:ie.id,node:ie,depth:e.depth+1,collapsed:e.collapsed,"selected-canvas-node-id":e.selectedCanvasNodeId,"hovered-canvas-node-id":e.hoveredCanvasNodeId,"hovered-edit-target":e.hoveredEditTarget,"inherited-edit-surface":v.value,"inherited-anchor-el":x.value,onSelect:U[3]||(U[3]=ve=>i("select",ve)),onEdit:U[4]||(U[4]=(ve,ee,Z,m)=>i("edit",ve,ee,Z,m)),onHover:U[5]||(U[5]=(ve,ee)=>i("hover",ve,ee)),onToggle:U[6]||(U[6]=ve=>i("toggle",ve))},null,8,["node","depth","collapsed","selected-canvas-node-id","hovered-canvas-node-id","hovered-edit-target","inherited-edit-surface","inherited-anchor-el"]))),128)):W("",!0),_.value&&!S.value?(p(),$("div",{key:1,class:"pointer-events-none absolute bottom-0 top-0 w-px bg-neutral-200 dark:bg-neutral-800",style:De({left:`${q.value+14}px`})},null,4)):W("",!0)])),[[le,{duration:60,easing:"ease-out"}]]):W("",!0)])}}});function Xc(e,t,n){let o=!1;function a(l){if(l.defaultCollapsed&&!n.has(l.id)&&(n.add(l.id),t.has(l.id)||(t.add(l.id),o=!0)),l.children)for(const s of l.children)a(s)}return a(e),o}const Kc={class:"structure-tree flex h-full flex-col overflow-hidden border-r border-neutral-200 dark:border-neutral-800"},Yc={key:0,class:"px-3 py-4 text-xs text-neutral-400 dark:text-neutral-500"},qc=_e({__name:"StructureTree",props:{root:{},selectedCanvasNodeId:{},hoveredCanvasNodeId:{},hoveredEditTarget:{}},emits:["select","edit","hover"],setup(e,{emit:t}){const n=e,o=t,a=B(new Set),l=B(null),s=B(new Set);function r(d){return Xc(d,a.value,s.value)}Pe(()=>n.root,d=>{d&&(d.id!==l.value&&(a.value=new Set,s.value=new Set,l.value=d.id),r(d)&&(a.value=new Set(a.value)))},{immediate:!0});function i(d){const f=new Set(a.value);f.has(d)?f.delete(d):f.add(d),a.value=f,s.value=new Set(s.value).add(d)}const c=O(()=>!!n.root);return(d,f)=>(p(),$("div",Kc,[h("div",{class:"flex-1 overflow-y-auto py-1.5 text-[12px]",onMouseleave:f[3]||(f[3]=v=>o("hover",null,null))},[c.value?(p(),ce(jc,{key:1,node:e.root,depth:0,collapsed:a.value,"selected-canvas-node-id":e.selectedCanvasNodeId,"hovered-canvas-node-id":e.hoveredCanvasNodeId,"hovered-edit-target":e.hoveredEditTarget,onSelect:f[0]||(f[0]=v=>o("select",v)),onEdit:f[1]||(f[1]=(v,x,g,u)=>o("edit",v,x,g,u)),onHover:f[2]||(f[2]=(v,x)=>o("hover",v,x)),onToggle:i},null,8,["node","collapsed","selected-canvas-node-id","hovered-canvas-node-id","hovered-edit-target"])):(p(),$("div",Yc," Select an agent to view its structure. "))],32)]))}});function Ke(e,t,n){return{entityType:"prompt",entityId:e,section:t,defaultToolTab:n}}function gn(e,t){return{entityType:"agent",entityId:e,section:t}}function Gc(e){return{entityType:"model",entityId:e.id}}function Wc(e){let t=0;function n(o){for(const a of o)t+=1,a.children?.length&&n(a.children)}return n(e),t}function Ho(e,t,n){return e.map(o=>({id:`${n}${o.id}`,kind:"schema",label:o.label,detail:o.value||void 0,required:o.required,canvasNodeId:t,virtual:!0,hideIcon:!0,defaultCollapsed:(o.children?.length??0)>0?!o.defaultExpanded:void 0,children:o.children?.length?Ho(o.children,t,`${n}${o.id}__`):void 0}))}function ha(e,t,n,o){const a=ma(e);return{id:`${n}schema`,kind:"schema",label:"Input schema",detail:a.length>0?`${Wc(a)}`:"None",canvasNodeId:t,virtual:!0,editSurface:o,defaultCollapsed:a.length>0,children:a.length>0?Ho(a,t,`${n}schema__`):void 0}}function zo(e){const t=[];if(e.expose_as_tool&&t.push({label:"tool",tone:"neutral",mono:!0}),e.type==="dual_ai"){const o=e.max_session_turns;t.push({label:typeof o=="number"?`max ${o} session turn${o===1?"":"s"}`:"unlimited session turns",tone:"neutral",mono:!0})}const n=Object.keys(e.env||{}).filter(o=>o.trim().length>0);return n.length>0&&t.push({label:`${n.length} env override${n.length===1?"":"s"}`,tone:"sky",mono:!0}),t}function kn(e,t,n,o=[],a){const l=new Set(o);return{id:`${n}variables`,kind:"variables",label:"Variables",detail:e.length>0?`${e.length}`:"None",canvasNodeId:t,virtual:!0,editSurface:a,defaultCollapsed:e.length>0,children:e.length>0?e.map(s=>{const r=[];return s.required&&r.push({label:"required",tone:"rose",mono:!0}),s.scoped&&r.push({label:"scoped",tone:"violet",mono:!0}),l.has(s.name)&&r.push({label:"env",tone:"sky",mono:!0}),{id:`${n}variable-${s.name}`,kind:"variable",label:s.name,detail:s.type,badges:r.length>0?r:void 0,required:s.required,canvasNodeId:t,virtual:!0,hideIcon:!0}}):void 0}}function Fo(e,t,n){return e.length===0?null:{id:`${n}hooks`,kind:"hooks",label:"Hooks",detail:`${e.length}`,canvasNodeId:t,virtual:!0,children:e.map((o,a)=>({id:`${n}hook-${a}-${o.id}`,kind:"hook",label:o.hook,detail:o.id!==o.hook?o.id:void 0,canvasNodeId:t,virtual:!0,hideIcon:!0}))}}function wt(e){const t=[];return typeof e.config.blocking=="boolean"&&t.push({label:e.config.blocking?"blocking":"background",tone:"neutral",mono:!0}),e.config.optional&&t.push({label:"optional",tone:"violet",mono:!0}),e.config.immediate&&t.push({label:"immediate",tone:"amber",mono:!0}),t}function jo(e,t,n,o,a){const l=Ke(o,"behavior"),s=Ro(e,a).map(r=>({id:`${n}${r.key==="tool"?"tooling":r.key}`,kind:"section",label:r.label,canvasNodeId:t,virtual:!0,hideIcon:!0,editSurface:l,metaRows:r.rows.map(Qc)}));return{id:`${n}config`,kind:"config",label:"Prompt Config",canvasNodeId:t,virtual:!0,editSurface:l,defaultCollapsed:!0,children:s}}function Qc(e){return e.kind==="toggle"?{label:e.label,value:e.enabled?"on":"off",active:e.enabled,tone:"emerald",mono:!0}:{label:e.label,value:e.value,active:e.active,mono:!0}}function Xo(e,t,n,o,a){if(!e.model&&!e.modelName)return null;const l=[];if((e.model?.providerTools||[]).length>0){const i=e.model.providerTools.slice(0,2).join(", "),c=e.model.providerTools.length>2?", …":"";l.push({label:"Provider tools",value:i+c,active:!0,mono:!0})}const s=e.modelActual||e.model?.model||void 0,r=s&&s!==(e.modelName||e.model?.name||"Model")?s:void 0;return{id:`${o}model`,kind:"model",label:e.modelName||e.model?.name||"Model",detail:r,metaRows:l.length>0?l:void 0,canvasNodeId:e.model?To(t,e.model.id):n,virtual:!e.model,cardBacked:!!e.model,editSurface:e.model?Gc(e.model):a,editData:e.model||void 0}}function Jc(e,t,n,o){return{id:`${n}config`,kind:"config",label:"Side Config",canvasNodeId:t,virtual:!0,defaultCollapsed:!0,collapsibleBody:!0,editSurface:o,metaRows:[{label:"Stop on response",value:e.stopOnResponse?"On":"Off",active:e.stopOnResponse,tone:e.id==="a"?"sky":"amber",mono:!0},{label:"Stop tool",value:e.stopTool||"Off",active:!!e.stopTool,tone:e.id==="a"?"sky":"amber",mono:!0},{label:"Max steps",value:typeof e.maxSteps=="number"?String(e.maxSteps):"Unlimited",active:typeof e.maxSteps=="number",tone:e.id==="a"?"sky":"amber",mono:!0},{label:"End conversation tool",value:e.sessionStopTool||"Off",active:!!e.sessionStopTool,tone:e.id==="a"?"sky":"amber",mono:!0}]}}function Zc(e,t,n,o){const a={};for(const r of e){const i=r.kind==="provider"||r.kind==="mcp"?"tool":r.kind;(a[i]||=[]).push(r)}const s=[{key:"tool",label:"Functions"},{key:"prompt",label:"Sub-prompts"},{key:"handoff",label:"Handoffs"},{key:"subagent",label:"Sub-agents"}].map(({key:r,label:i})=>{const c=a[r]||[],d=r==="prompt"?"sub-prompts":r==="handoff"?"handoffs":r==="subagent"?"sub-agents":"functions";return{id:`${n}group-${r}`,kind:"tools",toolKind:r,label:i,detail:`${c.length}`,canvasNodeId:t,virtual:!0,editSurface:Ke(o,"tools",d),children:c.length>0?c.map((f,v)=>({id:`${n}${r}-${v}-${f.name}`,kind:f.kind==="subagent"?"subagent":"tool",label:f.displayName||f.name,detail:f.kind==="prompt"&&(f.resolvedModel?.name||f.model)||void 0,badges:wt(f),canvasNodeId:t,virtual:!0,toolKind:f.kind,hideIcon:!0})):void 0}});return[{id:`${n}tools`,kind:"tools",label:"Tools",detail:`${e.length}`,canvasNodeId:t,virtual:!0,editSurface:Ke(o,"tools","functions"),anchorOnlyEditSurface:!0,children:s}]}function ef(e,t,n){const o=[],a=ha(e.schema,t,`${n}args__`);return a.label="Args",a.defaultCollapsed=(a.children?.length??0)>0?!0:void 0,(a.children?.length??0)>0&&o.push(a),e.variables.length>0&&o.push(kn(e.variables,t,`${n}detail__`)),o}function tf(e,t,n,o,a){const l=[],s=t.prompt.name,r=Ke(s,"basic"),i=Xo({model:t.model,modelName:t.model?.name||t.prompt.model_name,modelProvider:t.model?.provider||t.prompt.model_provider,modelActual:t.model?.model||t.prompt.model_id},o,n,`${a}prompt__`,r);i&&l.push(i),l.push(jo(t.prompt,n,`${a}prompt__`,s,e.config)),l.push(ha(t.prompt.required_schema,n,`${a}prompt__`,Ke(s,"schema"))),l.push(kn(ra(t.prompt),n,`${a}prompt__`,sa(t.prompt),Ke(s,"variables"))),l.push(...Zc(t.nestedTools,n,`${a}prompt__`,s));const c=Fo(t.prompt.hooks.map(d=>({id:d,hook:d})),n,`${a}prompt__`);return c&&l.push(c),l}function nf(e,t,n){return[{id:"a",label:e.side_a_label||"Side A",promptName:e.side_a_agent_prompt,stopOnResponse:e.side_a_stop_on_response,stopTool:e.side_a_stop_tool,maxSteps:e.side_a_max_steps,sessionStopTool:e.side_a_session_stop_tool},{id:"b",label:e.side_b_label||(e.type==="dual_ai"?"Side B":"Human"),promptName:e.side_b_agent_prompt,stopOnResponse:e.side_b_stop_on_response,stopTool:e.side_b_stop_tool,maxSteps:e.side_b_max_steps,sessionStopTool:e.side_b_session_stop_tool}].map(a=>({id:`${n}side-${a.id}`,kind:"side",label:a.label,detail:a.promptName||"No prompt",canvasNodeId:t,virtual:!0,editSurface:gn(e.name,a.id==="a"?"side-a":"side-b"),metaRows:a.promptName?[{label:"Stop on response",value:a.stopOnResponse?"On":"Off",active:a.stopOnResponse,tone:a.id==="a"?"sky":"amber",mono:!0},{label:"Stop tool",value:a.stopTool||"Off",active:!!a.stopTool,tone:a.id==="a"?"sky":"amber",mono:!0},{label:"Max steps",value:typeof a.maxSteps=="number"?String(a.maxSteps):"Unlimited",active:typeof a.maxSteps=="number",tone:a.id==="a"?"sky":"amber",mono:!0},{label:"End conversation tool",value:a.sessionStopTool||"Off",active:!!a.sessionStopTool,tone:a.id==="a"?"sky":"amber",mono:!0}]:void 0}))}function af(e,t,n,o,a,l,s){if(!e.prompt)return null;const r=e.prompt.name,i=`${l}prompt__`,c=[],d=Ke(r,"basic"),f=Ke(r,"schema"),v=Ke(r,"variables"),x=Ke(r,"tools"),g=Xo({model:e.model,modelName:e.model?.name||e.prompt.model_name,modelProvider:e.model?.provider||e.prompt.model_provider,modelActual:e.model?.model||e.prompt.model_id},o,a,i,d);g&&c.push(g),c.push(jo(e.prompt,a,i,r)),c.push(ha(e.prompt.required_schema,a,i,f)),c.push(kn(e.variables,a,i,e.variableEnvNames||[],v));const u={};for(const M of e.tools){const k=M.kind==="provider"||M.kind==="mcp"?"tool":M.kind;(u[k]||=[]).push(M)}const y=new Map;e.tools.forEach((M,k)=>y.set(M,k));const S=[{key:"tool",label:"Functions"},{key:"prompt",label:"Sub-prompts"},{key:"handoff",label:"Handoffs"},{key:"subagent",label:"Sub-agents"}];c.push({id:`${i}tools`,kind:"tools",label:"Tools",detail:`${e.tools.length}`,canvasNodeId:a,virtual:!0,editSurface:x,children:S.map(({key:M,label:k})=>{const N=u[M]||[],P=M==="prompt"?"sub-prompts":M==="handoff"?"handoffs":M==="subagent"?"sub-agents":"functions";return{id:`${i}group-${M}`,kind:"tools",toolKind:M,label:k,detail:`${N.length}`,canvasNodeId:a,virtual:!0,editSurface:Ke(r,"tools",P),children:N.length>0?N.map(L=>of(i,n,o,e,L,y.get(L),r,t,s)):void 0}})});const _=Fo(e.hooks,a,i);return _&&c.push(_),{id:`${l}prompt`,kind:"prompt",tone:e.id==="a"?"sky":"amber",label:e.prompt.name,canvasNodeId:a,virtual:!0,cardBacked:!0,editSurface:d,children:c}}function of(e,t,n,o,a,l,s,r,i){const d=a.kind==="subagent"||a.kind==="handoff"||a.kind==="prompt"?ln(t,o.id,l):ia(t,o.id),f=`${e}tool-${o.id}-${l}-${a.name}`,v=a.kind==="prompt"?"sub-prompts":a.kind==="handoff"?"handoffs":a.kind==="subagent"?"sub-agents":"functions",x=Ke(s,"tools",v);if(a.kind==="subagent"&&r[a.name]){const g=r[a.name],u=Mo(t,o.id,l,a.kind,a.name),y=a.config.resumable,S=wt(a);return y&&typeof y=="object"&&S.push({label:y.max_instances===null||(y.max_instances??0)>1?"multi":"single",tone:"sky",mono:!0}),{id:f,kind:"subagent",label:g.agent.title||a.displayName,detail:a.name,badges:S.length>0?S:void 0,canvasNodeId:fn(u),toolKind:a.kind,avatarSrc:g.agent.icon||void 0,avatarSeed:g.agent.name,cardBacked:!0,editSurface:x,children:Ko(g.agent,g.sides,r,u,n,`${f}__`,i).children}}if(a.kind==="prompt"){const g=i.promptTools[a.name];return{id:f,kind:"tool",label:a.displayName||a.name,detail:g?.model?.name||g?.prompt.model_name||a.model||void 0,badges:wt(a),canvasNodeId:d,toolKind:a.kind,cardBacked:!0,editSurface:Ke(a.name,"basic"),children:g?tf(a,g,d,n,`${f}__`):void 0,hideIcon:!0}}if(a.kind==="handoff"){const g=i.handoffs[a.name];return{id:f,kind:"tool",label:g?.title||a.displayName||a.name,detail:g?.name||void 0,badges:g?zo(g):wt(a),canvasNodeId:d,toolKind:a.kind,defaultCollapsed:g?!0:void 0,cardBacked:!0,editSurface:x,children:g?nf(g,d,`${f}__`):void 0,hideIcon:!0}}if(a.kind==="tool"||a.kind==="provider"||a.kind==="mcp"){const g=i.functionTools[a.name];return{id:f,kind:"tool",label:a.displayName||a.name,badges:wt(a),canvasNodeId:d,toolKind:a.kind,defaultCollapsed:g?!0:void 0,cardBacked:!0,editSurface:x,children:g?ef(g,d,`${f}__`):void 0,hideIcon:!0}}return{id:f,kind:"tool",label:a.displayName||a.name,badges:wt(a),canvasNodeId:d,toolKind:a.kind,hideIcon:!0,editSurface:x}}function rf(e,t,n,o,a,l,s){const r=ia(o,t.id),i=`${l}side-${t.id}__`,c=gn(e,t.id==="a"?"side-a":"side-b"),d=[];if(t.mode==="human")return{id:`${l}side-${t.id}`,kind:"side",label:t.label,detail:"Human",canvasNodeId:r,cardBacked:!0,editSurface:c,children:[]};d.push(Jc(t,r,i,c));const f=af(t,n,o,a,r,i,s);return f&&d.push(f),{id:`${l}side-${t.id}`,kind:"side",label:t.label,canvasNodeId:r,editSurface:c,children:d}}function Ko(e,t,n,o,a,l,s,r=!1){const i=fn(o),c=gn(e.name,"variables"),d=[kn(e._variables||[],i,`${l}agent__`,Object.keys(e.env||{}),c),...t.map(f=>rf(e.name,f,n,o,a,l,s))];return{id:`${l}agent`,kind:"agent",label:e.title||e.name,detail:e.name,badges:zo(e),canvasNodeId:i,avatarSrc:e.icon||void 0,avatarSeed:e.name,isRoot:r||void 0,cardBacked:!0,editSurface:gn(e.name,"identity"),children:d}}function sf(e,t,n,o){const a=$o(e.id||e.name),l=`${e.id||e.name}__`;return Ko(e,t,n,a,a,l,o,!0)}function lf(e,t){const n=new Set,o=new Set,a=new Set,l=new Set;function s(r){for(const i of r)for(const c of i.tools)if(c.kind==="tool"&&n.add(c.name),c.kind==="prompt"&&o.add(c.name),c.kind==="handoff"&&a.add(c.name),c.kind==="subagent"){const d=t[c.name];if(!d||l.has(d.agentName))continue;l.add(d.agentName),s(d.sides)}}return s(e),{functionTools:[...n].sort(),promptTools:[...o].sort(),handoffs:[...a].sort()}}function df(e,t,n,o,a,l){const s=B({functionTools:{},promptTools:{},handoffs:{}});let r=0;return Pe(()=>e.value?{agentId:e.value.id||e.value.name,plan:lf(t.value,n.value),modelKeys:Object.keys(o.value),toolKeys:Object.keys(a.value),refreshEpoch:l?.value??0}:null,async i=>{const c=e.value;if(!i||!c){s.value={functionTools:{},promptTools:{},handoffs:{}};return}const d=++r,f=await Id(i.plan,{toolsCatalog:a.value,models:o.value});d===r&&(s.value=f)},{immediate:!0}),O(()=>{const i=e.value;return i?sf(i,t.value,n.value,s.value):null})}const Yo=_e({__name:"ExtractCopyToggle",props:{value:{},disabled:{type:Boolean}},emits:["update:value"],setup(e,{emit:t}){const n=t,o=a=>{n("update:value",a)};return(a,l)=>{const s=At("FormKit");return p(),ce(s,{type:"toggle",value:e.value,"on-value":"extract","off-value":"copy","on-value-label":"extract","off-value-label":"copy",disabled:e.disabled,classes:{outer:"$remove:mb-4",wrapper:"$remove:items-center flex-row-reverse justify-end items-center",inner:"h-5",track:"h-5 w-10 rounded-full",thumb:"h-4 w-4",valueLabel:"text-xs text-neutral-600 dark:text-neutral-400 mr-2 flex items-center font-normal"},onInput:o},null,8,["value","disabled"])}}}),uf={class:"font-mono text-sm"},cf={class:"flex items-center gap-2 py-1.5"},ff={class:"text-neutral-600 dark:text-neutral-400"},mf={class:"ml-auto"},qo=_e({name:"TreeChildren",props:{children:{type:Array,required:!0},getSelection:{type:Function,required:!0},setSelection:{type:Function,required:!0},isShared:{type:Function,required:!0},getTypeColor:{type:Function,required:!0}},setup(e){return()=>e.children.length===0?null:Ne("div",{class:"ml-4"},e.children.map((t,n)=>Ne("div",{class:"relative",key:t.uid},[n<e.children.length-1?Ne("div",{class:"absolute left-0 top-0 bottom-0 border-l border-neutral-300 dark:border-neutral-700"}):Ne("div",{class:"absolute left-0 top-0 h-3 border-l border-neutral-300 dark:border-neutral-700"}),Ne("div",{class:"absolute left-0 top-3 w-4 border-t border-neutral-300 dark:border-neutral-700"}),Ne("div",{class:"pl-5"},[Ne("div",{class:"flex items-center gap-2 py-1.5"},[Ne("span",{class:"text-neutral-600 dark:text-neutral-400"},t.name),Ne(It,{variant:e.getTypeColor(t.type),size:"sm"},()=>t.type),e.isShared(t)?Ne("span",{class:"text-xs text-amber-600 dark:text-amber-400",title:`Used by: ${t.sharedWith.join(", ")}`},`(used in ${t.sharedWith.length} other${t.sharedWith.length>1?"s":""})`):null,t.isDuplicate?null:Ne("div",{class:"ml-auto"},[Ne(Yo,{value:e.getSelection(t),disabled:e.isShared(t),"onUpdate:value":o=>e.setSelection(t,o),title:e.isShared(t)?"Cannot extract items shared with other agents":""})])]),t.children.length>0?Ne(qo,{children:t.children,getSelection:e.getSelection,setSelection:e.setSelection,isShared:e.isShared,getTypeColor:e.getTypeColor}):null])])))}}),hf=_e({__name:"DependencyTree",props:{analysis:{},selections:{}},emits:["update:selection"],setup(e,{emit:t}){const n=e,o=t,a=O(()=>{const d=n.analysis,f=[];let v=0;const x=(M,k)=>{for(const N of M){const P=`${k}:${N.name}`;f.push({...N,type:k,uid:`${P}:${v++}`})}};x(d.constituents.agents,"agent"),x(d.constituents.prompts,"prompt"),x(d.constituents.tools,"tool"),x(d.constituents.models,"model"),x(d.constituents.hooks,"hook");const g=new Map,u=`agent:${d.agent}`;for(const M of f){const k=M.parentKey||u;`${M.type}:${M.name}`===u&&!M.parentKey||(g.has(k)||g.set(k,[]),g.get(k).push(M))}const y=new Set,S=M=>{const k=`${M.type}:${M.name}`,N=y.has(k);y.add(k);const P=[],L=g.get(k)||[];for(const ne of L)P.push(S(ne));return{name:M.name,type:M.type,filePath:M.filePath,sharedWith:M.sharedWith,discoveredVia:M.discoveredVia,children:P,uid:M.uid,isDuplicate:N}},_=f.find(M=>M.type==="agent"&&M.name===d.agent&&!M.parentKey);return _?S(_):{name:d.agent,type:"agent",filePath:"",sharedWith:[],discoveredVia:"static",children:[],uid:"root",isDuplicate:!1}}),l=d=>`${d.type}:${d.name}`,s=d=>n.selections.get(l(d))||"extract",r=(d,f)=>{o("update:selection",l(d),f)},i=d=>d.sharedWith.length>0,c=d=>{switch(d){case"agent":return"accent";case"prompt":return"secondary";case"tool":return"success";case"model":return"warning";case"hook":return"default"}};return(d,f)=>(p(),$("div",uf,[h("div",cf,[h("span",ff,K(a.value.name),1),Q(I(It),{variant:c(a.value.type),size:"sm"},{default:ye(()=>[pe(K(a.value.type),1)]),_:1},8,["variant"]),h("div",mf,[Q(Yo,{value:s(a.value),"onUpdate:value":f[0]||(f[0]=v=>r(a.value,v))},null,8,["value"])])]),(p(),ce(lt(I(qo)),{children:a.value.children,"get-selection":s,"set-selection":r,"is-shared":i,"get-type-color":c},null,8,["children"]))]))}}),pf={key:0,class:"flex items-center justify-center py-12"},vf={key:1,class:"py-4"},gf={key:2,class:"py-4 space-y-4"},xf={class:"space-y-2"},yf={class:"text-sm opacity-80"},bf={class:"text-sm opacity-80"},kf={class:"space-y-4"},wf={class:"grid grid-cols-2 gap-4"},$f={class:"col-span-2"},Mf={class:"col-span-2"},Tf={class:"col-span-2"},Cf={key:0,class:"mt-3 space-y-3"},Sf={class:"flex gap-2 border-b border-neutral-200 dark:border-neutral-700"},_f={key:0},If=["innerHTML"],Ef={class:"space-y-4"},Af={class:"list-disc list-inside space-y-1"},Nf={class:"border border-neutral-200 dark:border-neutral-700 rounded-lg p-4 bg-neutral-50 dark:bg-neutral-900/50"},Pf={class:"flex justify-between"},Lf=_e({__name:"PackModal",props:{modelValue:{type:Boolean},agent:{}},emits:["update:modelValue","packed"],setup(e,{emit:t}){cn.setOptions({gfm:!0,breaks:!0});const n=[{value:"MIT",label:"MIT"},{value:"Apache-2.0",label:"Apache 2.0"},{value:"ISC",label:"ISC"},{value:"GPL-3.0",label:"GPL 3.0"},{value:"BSD-3-Clause",label:"BSD 3-Clause"},{value:"Unlicensed",label:"Unlicensed / Proprietary"}],o=e,a=t,l=O({get:()=>o.modelValue,set:H=>a("update:modelValue",H)}),s=B(null),r=B(!1),i=B(!1),c=B(null),d=B(null);let f=null;const v=B(""),x=B("1.0.0"),g=B("MIT"),u=B(""),y=B(null),S=B(""),_=B("edit"),M=B(!1),k=O(()=>S.value?cn(S.value):""),N=B(new Map);Pe(()=>o.modelValue,async H=>{H&&o.agent?await Promise.all([L(),ne()]):P()});const P=()=>{Y(),s.value=null,c.value=null,d.value=null,N.value=new Map,v.value="",x.value="1.0.0",g.value="MIT",u.value="",S.value="",_.value="edit",M.value=!1,st(y)},L=async()=>{if(o.agent){r.value=!0,c.value=null;try{const H=await fetch(Ve(`/api/pack/${o.agent.id}/analyze`)),E=await H.json();if(!H.ok){c.value=E.error||"Failed to analyze agent";return}if(s.value=E,E.generatedReadme)S.value=E.generatedReadme;else{const F=q(o.agent?.id||"agent");S.value=D(F,o.agent?.id||"agent",E.agentDescription)}T(E)}catch(H){c.value=H instanceof Error?H.message:"Failed to analyze agent"}finally{r.value=!1}}},ne=async()=>{if(o.agent)try{const H=await fetch(Ve(`/api/pack/${o.agent.id}/metadata`));if(H.ok){const E=await H.json();v.value=E.packageName,x.value=C(E.version),g.value=E.license||"MIT",u.value=E.licenseOwner||""}else v.value=q(o.agent.id),x.value="1.0.0",g.value="MIT",u.value=""}catch{v.value=q(o.agent?.id||"agent"),x.value="1.0.0",g.value="MIT",u.value=""}},q=H=>`standardagent-${H.toLowerCase().replace(/_/g,"-")}`,D=(H,E,F)=>`# ${H}
|
|
2
2
|
|
|
3
|
-
${
|
|
3
|
+
${F||"A Standard Agent package."}
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -25,8 +25,8 @@ const thread = await client.createThread({
|
|
|
25
25
|
## License
|
|
26
26
|
|
|
27
27
|
MIT
|
|
28
|
-
`,C=H=>{const E=H.split(".");if(E.length<3)return`${H}.1`;const
|
|
28
|
+
`,C=H=>{const E=H.split(".");if(E.length<3)return`${H}.1`;const F=parseInt(E[2],10);return`${E[0]}.${E[1]}.${F+1}`},T=H=>{const E=new Map,F=new Set;for(const j of H.constituents.agents){const X=`agent:${j.name}`;F.has(X)||(F.add(X),E.set(X,j.sharedWith.length>0?"copy":"extract"))}for(const j of H.constituents.prompts){const X=`prompt:${j.name}`;F.has(X)||(F.add(X),E.set(X,j.sharedWith.length>0?"copy":"extract"))}for(const j of H.constituents.tools){const X=`tool:${j.name}`;F.has(X)||(F.add(X),E.set(X,j.sharedWith.length>0?"copy":"extract"))}for(const j of H.constituents.models){const X=`model:${j.name}`;F.has(X)||(F.add(X),E.set(X,j.sharedWith.length>0?"copy":"extract"))}for(const j of H.constituents.hooks){const X=`hook:${j.name}`;F.has(X)||(F.add(X),E.set(X,j.sharedWith.length>0?"copy":"extract"))}N.value=E},b=(H,E)=>{N.value.set(H,E),N.value=new Map(N.value)},A=async()=>{if(!(!o.agent||!s.value)){st(y),i.value=!0,c.value=null,d.value=null;try{const H=Array.from(N.value.entries()).map(([j,X])=>{const[he,se]=j.split(":");let fe="";const z=he==="agent"?"agents":he+"s",J=(s.value?.constituents[z]||[]).find(le=>le.name===se);return J&&(fe=J.filePath),{name:se,type:he,filePath:fe,mode:X}}),E=await fetch(Ve(`/api/pack/${o.agent.id}`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({itemSelections:H,packageName:v.value,version:x.value,license:g.value,licenseOwner:u.value,readme:S.value})}),F=await E.json();if(!E.ok){_t(F,y);return}d.value={success:!0,outputPath:F.outputPath,filesCreated:F.filesCreated,packageId:F.packageId},Y(),f=setTimeout(()=>{a("packed",{outputPath:F.outputPath,packageId:F.packageId}),f=null},1500)}catch(H){const E=H instanceof Error?H.message:"Failed to pack agent";_t({error:E},y)||(c.value=E)}finally{i.value=!1}}},G=()=>{Y(),l.value=!1};function Y(){f&&(clearTimeout(f),f=null)}return Et(Y),(H,E)=>{const F=At("FormKit");return p(),ce(la,{modelValue:l.value,"onUpdate:modelValue":E[9]||(E[9]=j=>l.value=j),title:`Pack Agent: ${e.agent?.title||e.agent?.id||""}`,width:"max-w-2xl","min-height":"min-h-[20rem]"},{footer:ye(()=>[h("div",Pf,[Q(I(St),{variant:"ghost",onClick:G},{default:ye(()=>[...E[16]||(E[16]=[pe(" Cancel ",-1)])]),_:1}),Q(I(St),{variant:"primary",disabled:r.value||i.value||!s.value||d.value?.success,type:"submit",form:"pack-agent-form"},{default:ye(()=>[i.value?(p(),$($e,{key:0},[Q(ht,{size:"sm",class:"mr-2"}),E[17]||(E[17]=pe(" Packing... ",-1))],64)):(p(),$($e,{key:1},[pe(" Pack Agent ")],64))]),_:1},8,["disabled"])])]),default:ye(()=>[r.value?(p(),$("div",pf,[Q(ht,{size:"lg"})])):c.value&&!s.value?(p(),$("div",vf,[Q(I(ze),{variant:"error"},{default:ye(()=>[pe(K(c.value),1)]),_:1})])):d.value?.success?(p(),$("div",gf,[Q(I(ze),{variant:"success"},{default:ye(()=>[h("div",xf,[E[10]||(E[10]=h("p",{class:"font-medium"},"Agent packed successfully!",-1)),h("p",yf," Output: "+K(d.value.outputPath),1),h("p",bf,K(d.value.filesCreated?.length)+" files created ",1)])]),_:1})])):s.value?(p(),ce(F,{key:3,type:"form",id:"pack-agent-form",actions:!1,disabled:i.value,onSubmit:A,onNode:E[8]||(E[8]=j=>y.value=j),"form-class":"$reset space-y-6"},{default:ye(()=>[Q(I(ta),{node:y.value||void 0},null,8,["node"]),h("div",kf,[E[12]||(E[12]=h("h3",{class:"text-sm font-semibold text-neutral-700 dark:text-neutral-300 uppercase tracking-wider"}," Package Details ",-1)),h("div",wf,[h("div",$f,[Q(F,{type:"text",name:"packageName",modelValue:v.value,"onUpdate:modelValue":E[0]||(E[0]=j=>v.value=j),label:"Package Name",help:"npm package name (lowercase, no spaces)",placeholder:"standardagent-my-agent",validation:"required|npmPackageName","validation-visibility":"submit"},null,8,["modelValue"])]),Q(F,{type:"text",name:"version",modelValue:x.value,"onUpdate:modelValue":E[1]||(E[1]=j=>x.value=j),label:"Version",help:"Semver format (X.Y.Z)",placeholder:"1.0.0",validation:"required|semverVersion","validation-visibility":"submit"},null,8,["modelValue"]),Q(F,{type:"selectSearch",name:"license",modelValue:g.value,"onUpdate:modelValue":E[2]||(E[2]=j=>g.value=j),label:"License",options:n,clearable:!1},null,8,["modelValue"]),h("div",Mf,[Q(F,{type:"text",name:"licenseOwner",modelValue:u.value,"onUpdate:modelValue":E[3]||(E[3]=j=>u.value=j),label:"License Owner",help:"Copyright holder name (e.g., your name or company)",placeholder:"Your Name or Company"},null,8,["modelValue"])]),h("div",Tf,[h("button",{type:"button",class:"flex items-center gap-2 text-sm font-medium text-neutral-700 dark:text-neutral-300 hover:text-neutral-900 dark:hover:text-neutral-100",onClick:E[4]||(E[4]=j=>M.value=!M.value)},[(p(),ce(lt(M.value?I(uo):I(co)),{class:"w-4 h-4"})),E[11]||(E[11]=pe(" README ",-1))]),M.value?(p(),$("div",Cf,[h("div",Sf,[h("button",{type:"button",class:ue(["px-3 py-1.5 text-sm font-medium border-b-2 -mb-px transition-colors",_.value==="edit"?"border-primary-500 text-primary-600 dark:text-primary-400":"border-transparent text-neutral-500 hover:text-neutral-700 dark:hover:text-neutral-300"]),onClick:E[5]||(E[5]=j=>_.value="edit")}," Edit ",2),h("button",{type:"button",class:ue(["px-3 py-1.5 text-sm font-medium border-b-2 -mb-px transition-colors",_.value==="preview"?"border-primary-500 text-primary-600 dark:text-primary-400":"border-transparent text-neutral-500 hover:text-neutral-700 dark:hover:text-neutral-300"]),onClick:E[6]||(E[6]=j=>_.value="preview")}," Preview ",2)]),_.value==="edit"?(p(),$("div",_f,[Q(F,{type:"textarea",name:"readme",modelValue:S.value,"onUpdate:modelValue":E[7]||(E[7]=j=>S.value=j),rows:10,"outer-class":"$reset mb-0",placeholder:`# Package Name
|
|
29
29
|
|
|
30
|
-
Description...`},null,8,["modelValue"])])):(p(),w("div",{key:1,class:"prose prose-sm dark:prose-invert max-w-none p-4 rounded-md border border-neutral-200 dark:border-neutral-700 bg-white dark:bg-neutral-800 min-h-[200px] max-h-[400px] overflow-y-auto",innerHTML:k.value},null,8,Af))])):W("",!0)])])]),E[15]||(E[15]=m("hr",{class:"border-neutral-200 dark:border-neutral-700"},null,-1)),m("div",Nf,[E[14]||(E[14]=m("h3",{class:"text-sm font-semibold text-neutral-700 dark:text-neutral-300 uppercase tracking-wider"}," Items to Include ",-1)),Q(I(ze),{variant:"info"},{default:ye(()=>[...E[13]||(E[13]=[m("div",{class:"space-y-1"},[m("p",null,[m("strong",null,"Extract"),pe(": Moves the file into the package and removes it from your workspace. Use this for items only used by this agent. ")]),m("p",null,[m("strong",null,"Copy"),pe(": Copies the file into the package but keeps the original. Required for items shared with other agents. ")])],-1)])]),_:1}),c.value?(p(),ce(I(ze),{key:0,variant:"error"},{default:ye(()=>[pe(K(c.value),1)]),_:1})):W("",!0),s.value.warnings.length>0?(p(),ce(I(ze),{key:1,variant:"warning"},{default:ye(()=>[m("ul",Lf,[(p(!0),w($e,null,Ie(s.value.warnings,F=>(p(),w("li",{key:F},K(F),1))),128))])]),_:1})):W("",!0),m("div",Pf,[Q(vf,{analysis:s.value,selections:N.value,"onUpdate:selection":b},null,8,["analysis","selections"])])])]),_:1},8,["disabled"])):W("",!0)]),_:1},8,["modelValue","title"])}}}),Df={class:"font-mono text-sm"},Bf={class:"mb-3 text-xs text-neutral-500 dark:text-neutral-400"},Vf={class:"flex items-center gap-2 py-1.5"},Uf={class:"text-neutral-600 dark:text-neutral-400"},Hf={key:0,class:"ml-auto text-xs text-amber-600 dark:text-amber-400"},zf={key:1,class:"ml-auto text-xs text-emerald-600 dark:text-emerald-400"},jf={key:0,class:"text-center py-8 text-neutral-500 dark:text-neutral-400"},Go=_e({name:"TreeChildren",props:{children:{type:Array,required:!0},getTypeColor:{type:Function,required:!0}},setup(e){return()=>e.children.length===0?null:Ne("div",{class:"ml-4"},e.children.map((t,n)=>Ne("div",{class:"relative",key:t.uid},[n<e.children.length-1?Ne("div",{class:"absolute left-0 top-0 bottom-0 border-l border-neutral-300 dark:border-neutral-700"}):Ne("div",{class:"absolute left-0 top-0 h-3 border-l border-neutral-300 dark:border-neutral-700"}),Ne("div",{class:"absolute left-0 top-3 w-4 border-t border-neutral-300 dark:border-neutral-700"}),Ne("div",{class:"pl-5"},[Ne("div",{class:"flex items-center gap-2 py-1.5"},[Ne("span",{class:"text-neutral-600 dark:text-neutral-400"},t.name),Ne(It,{variant:e.getTypeColor(t.type),size:"sm"},()=>t.type),t.isDuplicate?null:t.existsGlobally?Ne("span",{class:"ml-auto text-xs text-amber-600 dark:text-amber-400"},"already exists"):Ne("span",{class:"ml-auto text-xs text-emerald-600 dark:text-emerald-400"},"will unpack")]),t.children.length>0?Ne(Go,{children:t.children,getTypeColor:e.getTypeColor}):null])])))}}),Ff=_e({__name:"UnpackTree",props:{analysis:{}},setup(e){const t=e,n=O(()=>{const s=t.analysis,r=[];let i=0;for(const g of s.items)r.push({...g,uid:`${g.type}:${g.name}:${i++}`});const c=new Map,d=[];for(const g of r)g.parentKey?(c.has(g.parentKey)||c.set(g.parentKey,[]),c.get(g.parentKey).push(g)):d.push(g);const f=new Set,v=g=>{const u=`${g.type}:${g.name}`,y=f.has(u);f.add(u);const S=[],_=c.get(u)||[];for(const M of _)S.push(v(M));return{name:g.name,type:g.type,existsGlobally:g.existsGlobally,action:g.action,children:S,uid:g.uid,isDuplicate:y}},x=[];for(const g of d)g.type==="agent"&&x.push(v(g));if(x.length===0)for(const g of d)x.push(v(g));return x}),o=s=>{switch(s){case"agent":return"accent";case"prompt":return"secondary";case"tool":return"success";case"model":return"warning";case"hook":return"default"}},a=O(()=>{const s=new Set;for(const r of t.analysis.items)s.add(`${r.type}:${r.name}`);return s.size}),l=O(()=>{const s=new Set;let r=0;for(const i of t.analysis.items){const c=`${i.type}:${i.name}`;s.has(c)||(s.add(c),i.existsGlobally||r++)}return r});return(s,r)=>(p(),w("div",Df,[m("div",Bf,K(l.value)+" of "+K(a.value)+" items will be unpacked ",1),(p(!0),w($e,null,Ie(n.value,i=>(p(),w("div",{key:i.uid},[m("div",Vf,[m("span",Uf,K(i.name),1),Q(I(It),{variant:o(i.type),size:"sm"},{default:ye(()=>[pe(K(i.type),1)]),_:2},1032,["variant"]),i.existsGlobally?(p(),w("span",Hf," already exists ")):(p(),w("span",zf," will unpack "))]),(p(),ce(lt(I(Go)),{children:i.children,"get-type-color":o},null,8,["children"]))]))),128)),n.value.length===0?(p(),w("div",jf," No items found in this package. ")):W("",!0)]))}}),Xf={key:0,class:"flex items-center justify-center py-12"},Kf={key:1,class:"py-4"},Yf={key:2,class:"py-4"},qf={class:"space-y-2"},Gf={class:"text-sm opacity-80"},Wf={key:0,class:"text-sm opacity-80"},Qf={key:1,class:"text-sm opacity-80"},Jf={class:"text-sm text-neutral-600 dark:text-neutral-400"},Zf={class:"font-mono"},em={class:"list-disc list-inside space-y-1"},tm={class:"border border-neutral-200 dark:border-neutral-700 rounded-lg p-4 bg-neutral-50 dark:bg-neutral-900/50 max-h-80 overflow-y-auto"},nm={key:2,class:"flex items-center gap-2"},am={class:"flex justify-between"},om=_e({__name:"UnpackModal",props:{modelValue:{type:Boolean},agent:{}},emits:["update:modelValue","unpacked"],setup(e,{emit:t}){const n=e,o=t,a=O({get:()=>n.modelValue,set:M=>o("update:modelValue",M)}),l=B(null),s=B(!1),r=B(!1),i=B(null),c=B(null);let d=null;const f=B(!1),v=B(null);Le(()=>n.modelValue,async M=>{M&&n.agent?.packageId?await x():(y(),l.value=null,i.value=null,c.value=null,f.value=!1,st(v))});const x=async()=>{if(n.agent?.packageId){s.value=!0,i.value=null;try{const M=await fetch(Ve(`/api/unpack/${encodeURIComponent(n.agent.packageId)}/analyze`)),k=await M.json();if(!M.ok){i.value=k.error||"Failed to analyze package";return}l.value=k}catch(M){i.value=M instanceof Error?M.message:"Failed to analyze package"}finally{s.value=!1}}},g=async()=>{if(!(!n.agent?.packageId||!l.value)){r.value=!0,i.value=null,c.value=null,st(v);try{const M=l.value.items.filter((L,P,ne)=>ne.findIndex(q=>q.type===L.type&&q.name===L.name)===P).map(L=>({name:L.name,type:L.type,action:L.existsGlobally?"skip":"generate"})),k=await fetch(Ve(`/api/unpack/${encodeURIComponent(n.agent.packageId)}`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({itemSelections:M,deletePackage:f.value})}),N=await k.json();if(!k.ok){_t(N,v);return}c.value={success:!0,filesGenerated:N.filesGenerated,filesSkipped:N.filesSkipped,packageDeleted:N.packageDeleted},y(),d=setTimeout(()=>{o("unpacked"),d=null},1500)}catch(M){const k=M instanceof Error?M.message:"Failed to unpack agent";_t({error:k},v)||(i.value=k)}finally{r.value=!1}}},u=()=>{y(),st(v),a.value=!1};function y(){d&&(clearTimeout(d),d=null)}Et(y);const S=O(()=>{if(!l.value)return 0;const M=new Set;let k=0;for(const N of l.value.items){const L=`${N.type}:${N.name}`;M.has(L)||(M.add(L),N.existsGlobally||k++)}return k}),_=O(()=>l.value?.source==="local");return(M,k)=>{const N=At("FormKit");return p(),ce(la,{modelValue:a.value,"onUpdate:modelValue":k[2]||(k[2]=L=>a.value=L),title:`Unpack: ${e.agent?.title||e.agent?.id||""}`,width:"max-w-2xl","min-height":"min-h-[20rem]"},{footer:ye(()=>[m("div",am,[Q(I(St),{variant:"ghost",onClick:u},{default:ye(()=>[...k[6]||(k[6]=[pe(" Cancel ",-1)])]),_:1}),Q(I(St),{variant:"primary",disabled:s.value||r.value||!l.value||c.value?.success||S.value===0,type:"submit",form:"unpack-agent-form"},{default:ye(()=>[r.value?(p(),w($e,{key:0},[Q(ht,{size:"sm",class:"mr-2"}),k[7]||(k[7]=pe(" Unpacking... ",-1))],64)):(p(),w($e,{key:1},[pe(" Unpack "+K(S.value)+" "+K(S.value===1?"item":"items"),1)],64))]),_:1},8,["disabled"])])]),default:ye(()=>[s.value?(p(),w("div",Xf,[Q(ht,{size:"lg"})])):i.value&&!l.value?(p(),w("div",Kf,[Q(I(ze),{variant:"error"},{default:ye(()=>[pe(K(i.value),1)]),_:1})])):c.value?.success?(p(),w("div",Yf,[Q(I(ze),{variant:"success"},{default:ye(()=>[m("div",qf,[k[3]||(k[3]=m("p",{class:"font-medium"},"Agent unpacked successfully!",-1)),m("p",Gf,K(c.value.filesGenerated?.length||0)+" files unpacked ",1),(c.value.filesSkipped?.length||0)>0?(p(),w("p",Wf,K(c.value.filesSkipped?.length)+" files skipped (already exist) ",1)):W("",!0),c.value.packageDeleted?(p(),w("p",Qf," Package was deleted from agents/packed/ ")):W("",!0)])]),_:1})])):l.value?(p(),ce(N,{key:3,type:"form",id:"unpack-agent-form",actions:!1,disabled:r.value,onSubmit:g,onNode:k[1]||(k[1]=L=>v.value=L),"form-class":"$reset space-y-4"},{default:ye(()=>[Q(I(ta),{node:v.value||void 0},null,8,["node"]),m("div",Jf,[m("p",null,[k[4]||(k[4]=pe("Package: ",-1)),m("span",Zf,K(l.value.packageId),1),pe(" v"+K(l.value.version),1)]),m("p",null,"Source: "+K(l.value.source==="npm"?"npm package":"local (agents/packed/)"),1)]),i.value?(p(),ce(I(ze),{key:0,variant:"error"},{default:ye(()=>[pe(K(i.value),1)]),_:1})):W("",!0),l.value.warnings.length>0?(p(),ce(I(ze),{key:1,variant:"warning"},{default:ye(()=>[m("ul",em,[(p(!0),w($e,null,Ie(l.value.warnings,L=>(p(),w("li",{key:L},K(L),1))),128))])]),_:1})):W("",!0),m("div",tm,[Q(Ff,{analysis:l.value},null,8,["analysis"])]),_.value?(p(),w("div",nm,[Q(N,{type:"checkbox",name:"deletePackage",modelValue:f.value,"onUpdate:modelValue":k[0]||(k[0]=L=>f.value=L),label:"Delete package after unpacking","outer-class":"$reset mb-0"},null,8,["modelValue"]),k[5]||(k[5]=m("span",{class:"text-xs text-neutral-500"},"(removes from agents/packed/)",-1))])):W("",!0)]),_:1},8,["disabled"])):W("",!0)]),_:1},8,["modelValue","title"])}}}),rm={key:0,class:"space-y-4"},sm={class:"space-y-2"},lm={class:"font-medium"},im={key:0,class:"text-sm opacity-80"},dm={key:1,class:"text-sm opacity-70"},um={key:2,class:"text-sm"},cm=["href"],fm={key:0,class:"space-y-2"},mm={class:"text-xs bg-neutral-100 dark:bg-neutral-800 p-3 rounded-md overflow-x-auto max-h-40 whitespace-pre-wrap"},hm={class:"space-y-3"},pm={key:0,class:"flex items-center gap-2 text-neutral-500"},vm={key:2,class:"p-4 rounded-lg border border-neutral-200 dark:border-neutral-700 bg-neutral-50 dark:bg-neutral-900/50"},gm={class:"flex items-center gap-3 mb-3"},xm={class:"text-lg font-semibold text-neutral-900 dark:text-neutral-100"},ym={key:0,class:"text-sm text-neutral-600 dark:text-neutral-400 mb-3"},bm={key:1,class:"mt-3"},km=["innerHTML"],wm={key:0,class:"border-neutral-200 dark:border-neutral-700"},$m={key:1,class:"flex items-center gap-2 text-neutral-500"},Mm={class:"space-y-2 text-sm"},Tm={class:"bg-neutral-200 dark:bg-neutral-700 px-1 rounded"},Cm={class:"list-decimal list-inside space-y-1 ml-2"},Sm={class:"whitespace-pre-wrap text-sm"},_m={class:"flex justify-between"},Im="https://registry.npmjs.org",Em=_e({__name:"PublishModal",props:{modelValue:{type:Boolean},packageId:{},outputPath:{}},emits:["update:modelValue","published"],setup(e,{emit:t}){cn.setOptions({gfm:!0,breaks:!0});const n=e,o=t,a=O({get:()=>n.modelValue,set:D=>o("update:modelValue",D)}),l=B(null),s=B(!1),r=B(null),i=B(!1),c=B(null),d=B(!1),f=O(()=>l.value?.readme?cn(l.value.readme):""),v=B(""),x=B("default"),g=B(""),u=B(!1),y=B(null),S=B(!1),_=B(null),M=B(null),k=async()=>{s.value=!0,r.value=null;try{const D=await fetch(Ve(`/api/pack/${encodeURIComponent(n.packageId)}/packed-info`));if(D.ok)l.value=await D.json();else{const C=await D.json();r.value=C.error||"Failed to load package info"}}catch(D){r.value=D instanceof Error?D.message:"Failed to load package info"}finally{s.value=!1}},N=async()=>{d.value=!0;try{const D=await fetch(Ve("/api/pack/npm-token-status"));D.ok&&(c.value=await D.json())}catch{c.value=null}finally{d.value=!1}};Le(()=>n.modelValue,D=>{D&&(v.value="",x.value="default",g.value="",u.value=!1,_.value=null,M.value=null,st(y),c.value=null,l.value=null,r.value=null,i.value=!1,k(),N())});const L=O(()=>x.value==="default"?Im:g.value),P=async()=>{st(y),S.value=!0,_.value=null,M.value=null;try{const D={registry:L.value,dryRun:u.value};v.value.trim()&&(D.token=v.value.trim());const C=await fetch(Ve(`/api/pack/${encodeURIComponent(n.packageId)}/publish`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(D)}),T=await C.json();if(!C.ok){const b=T.output?`${T.error||"Failed to publish package"}
|
|
30
|
+
Description...`},null,8,["modelValue"])])):(p(),$("div",{key:1,class:"prose prose-sm dark:prose-invert max-w-none p-4 rounded-md border border-neutral-200 dark:border-neutral-700 bg-white dark:bg-neutral-800 min-h-[200px] max-h-[400px] overflow-y-auto",innerHTML:k.value},null,8,If))])):W("",!0)])])]),E[15]||(E[15]=h("hr",{class:"border-neutral-200 dark:border-neutral-700"},null,-1)),h("div",Ef,[E[14]||(E[14]=h("h3",{class:"text-sm font-semibold text-neutral-700 dark:text-neutral-300 uppercase tracking-wider"}," Items to Include ",-1)),Q(I(ze),{variant:"info"},{default:ye(()=>[...E[13]||(E[13]=[h("div",{class:"space-y-1"},[h("p",null,[h("strong",null,"Extract"),pe(": Moves the file into the package and removes it from your workspace. Use this for items only used by this agent. ")]),h("p",null,[h("strong",null,"Copy"),pe(": Copies the file into the package but keeps the original. Required for items shared with other agents. ")])],-1)])]),_:1}),c.value?(p(),ce(I(ze),{key:0,variant:"error"},{default:ye(()=>[pe(K(c.value),1)]),_:1})):W("",!0),s.value.warnings.length>0?(p(),ce(I(ze),{key:1,variant:"warning"},{default:ye(()=>[h("ul",Af,[(p(!0),$($e,null,Ie(s.value.warnings,j=>(p(),$("li",{key:j},K(j),1))),128))])]),_:1})):W("",!0),h("div",Nf,[Q(hf,{analysis:s.value,selections:N.value,"onUpdate:selection":b},null,8,["analysis","selections"])])])]),_:1},8,["disabled"])):W("",!0)]),_:1},8,["modelValue","title"])}}}),Rf={class:"font-mono text-sm"},Of={class:"mb-3 text-xs text-neutral-500 dark:text-neutral-400"},Df={class:"flex items-center gap-2 py-1.5"},Bf={class:"text-neutral-600 dark:text-neutral-400"},Vf={key:0,class:"ml-auto text-xs text-amber-600 dark:text-amber-400"},Uf={key:1,class:"ml-auto text-xs text-emerald-600 dark:text-emerald-400"},Hf={key:0,class:"text-center py-8 text-neutral-500 dark:text-neutral-400"},Go=_e({name:"TreeChildren",props:{children:{type:Array,required:!0},getTypeColor:{type:Function,required:!0}},setup(e){return()=>e.children.length===0?null:Ne("div",{class:"ml-4"},e.children.map((t,n)=>Ne("div",{class:"relative",key:t.uid},[n<e.children.length-1?Ne("div",{class:"absolute left-0 top-0 bottom-0 border-l border-neutral-300 dark:border-neutral-700"}):Ne("div",{class:"absolute left-0 top-0 h-3 border-l border-neutral-300 dark:border-neutral-700"}),Ne("div",{class:"absolute left-0 top-3 w-4 border-t border-neutral-300 dark:border-neutral-700"}),Ne("div",{class:"pl-5"},[Ne("div",{class:"flex items-center gap-2 py-1.5"},[Ne("span",{class:"text-neutral-600 dark:text-neutral-400"},t.name),Ne(It,{variant:e.getTypeColor(t.type),size:"sm"},()=>t.type),t.isDuplicate?null:t.existsGlobally?Ne("span",{class:"ml-auto text-xs text-amber-600 dark:text-amber-400"},"already exists"):Ne("span",{class:"ml-auto text-xs text-emerald-600 dark:text-emerald-400"},"will unpack")]),t.children.length>0?Ne(Go,{children:t.children,getTypeColor:e.getTypeColor}):null])])))}}),zf=_e({__name:"UnpackTree",props:{analysis:{}},setup(e){const t=e,n=O(()=>{const s=t.analysis,r=[];let i=0;for(const g of s.items)r.push({...g,uid:`${g.type}:${g.name}:${i++}`});const c=new Map,d=[];for(const g of r)g.parentKey?(c.has(g.parentKey)||c.set(g.parentKey,[]),c.get(g.parentKey).push(g)):d.push(g);const f=new Set,v=g=>{const u=`${g.type}:${g.name}`,y=f.has(u);f.add(u);const S=[],_=c.get(u)||[];for(const M of _)S.push(v(M));return{name:g.name,type:g.type,existsGlobally:g.existsGlobally,action:g.action,children:S,uid:g.uid,isDuplicate:y}},x=[];for(const g of d)g.type==="agent"&&x.push(v(g));if(x.length===0)for(const g of d)x.push(v(g));return x}),o=s=>{switch(s){case"agent":return"accent";case"prompt":return"secondary";case"tool":return"success";case"model":return"warning";case"hook":return"default"}},a=O(()=>{const s=new Set;for(const r of t.analysis.items)s.add(`${r.type}:${r.name}`);return s.size}),l=O(()=>{const s=new Set;let r=0;for(const i of t.analysis.items){const c=`${i.type}:${i.name}`;s.has(c)||(s.add(c),i.existsGlobally||r++)}return r});return(s,r)=>(p(),$("div",Rf,[h("div",Of,K(l.value)+" of "+K(a.value)+" items will be unpacked ",1),(p(!0),$($e,null,Ie(n.value,i=>(p(),$("div",{key:i.uid},[h("div",Df,[h("span",Bf,K(i.name),1),Q(I(It),{variant:o(i.type),size:"sm"},{default:ye(()=>[pe(K(i.type),1)]),_:2},1032,["variant"]),i.existsGlobally?(p(),$("span",Vf," already exists ")):(p(),$("span",Uf," will unpack "))]),(p(),ce(lt(I(Go)),{children:i.children,"get-type-color":o},null,8,["children"]))]))),128)),n.value.length===0?(p(),$("div",Hf," No items found in this package. ")):W("",!0)]))}}),Ff={key:0,class:"flex items-center justify-center py-12"},jf={key:1,class:"py-4"},Xf={key:2,class:"py-4"},Kf={class:"space-y-2"},Yf={class:"text-sm opacity-80"},qf={key:0,class:"text-sm opacity-80"},Gf={key:1,class:"text-sm opacity-80"},Wf={class:"text-sm text-neutral-600 dark:text-neutral-400"},Qf={class:"font-mono"},Jf={class:"list-disc list-inside space-y-1"},Zf={class:"border border-neutral-200 dark:border-neutral-700 rounded-lg p-4 bg-neutral-50 dark:bg-neutral-900/50 max-h-80 overflow-y-auto"},em={key:2,class:"flex items-center gap-2"},tm={class:"flex justify-between"},nm=_e({__name:"UnpackModal",props:{modelValue:{type:Boolean},agent:{}},emits:["update:modelValue","unpacked"],setup(e,{emit:t}){const n=e,o=t,a=O({get:()=>n.modelValue,set:M=>o("update:modelValue",M)}),l=B(null),s=B(!1),r=B(!1),i=B(null),c=B(null);let d=null;const f=B(!1),v=B(null);Pe(()=>n.modelValue,async M=>{M&&n.agent?.packageId?await x():(y(),l.value=null,i.value=null,c.value=null,f.value=!1,st(v))});const x=async()=>{if(n.agent?.packageId){s.value=!0,i.value=null;try{const M=await fetch(Ve(`/api/unpack/${encodeURIComponent(n.agent.packageId)}/analyze`)),k=await M.json();if(!M.ok){i.value=k.error||"Failed to analyze package";return}l.value=k}catch(M){i.value=M instanceof Error?M.message:"Failed to analyze package"}finally{s.value=!1}}},g=async()=>{if(!(!n.agent?.packageId||!l.value)){r.value=!0,i.value=null,c.value=null,st(v);try{const M=l.value.items.filter((P,L,ne)=>ne.findIndex(q=>q.type===P.type&&q.name===P.name)===L).map(P=>({name:P.name,type:P.type,action:P.existsGlobally?"skip":"generate"})),k=await fetch(Ve(`/api/unpack/${encodeURIComponent(n.agent.packageId)}`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({itemSelections:M,deletePackage:f.value})}),N=await k.json();if(!k.ok){_t(N,v);return}c.value={success:!0,filesGenerated:N.filesGenerated,filesSkipped:N.filesSkipped,packageDeleted:N.packageDeleted},y(),d=setTimeout(()=>{o("unpacked"),d=null},1500)}catch(M){const k=M instanceof Error?M.message:"Failed to unpack agent";_t({error:k},v)||(i.value=k)}finally{r.value=!1}}},u=()=>{y(),st(v),a.value=!1};function y(){d&&(clearTimeout(d),d=null)}Et(y);const S=O(()=>{if(!l.value)return 0;const M=new Set;let k=0;for(const N of l.value.items){const P=`${N.type}:${N.name}`;M.has(P)||(M.add(P),N.existsGlobally||k++)}return k}),_=O(()=>l.value?.source==="local");return(M,k)=>{const N=At("FormKit");return p(),ce(la,{modelValue:a.value,"onUpdate:modelValue":k[2]||(k[2]=P=>a.value=P),title:`Unpack: ${e.agent?.title||e.agent?.id||""}`,width:"max-w-2xl","min-height":"min-h-[20rem]"},{footer:ye(()=>[h("div",tm,[Q(I(St),{variant:"ghost",onClick:u},{default:ye(()=>[...k[6]||(k[6]=[pe(" Cancel ",-1)])]),_:1}),Q(I(St),{variant:"primary",disabled:s.value||r.value||!l.value||c.value?.success||S.value===0,type:"submit",form:"unpack-agent-form"},{default:ye(()=>[r.value?(p(),$($e,{key:0},[Q(ht,{size:"sm",class:"mr-2"}),k[7]||(k[7]=pe(" Unpacking... ",-1))],64)):(p(),$($e,{key:1},[pe(" Unpack "+K(S.value)+" "+K(S.value===1?"item":"items"),1)],64))]),_:1},8,["disabled"])])]),default:ye(()=>[s.value?(p(),$("div",Ff,[Q(ht,{size:"lg"})])):i.value&&!l.value?(p(),$("div",jf,[Q(I(ze),{variant:"error"},{default:ye(()=>[pe(K(i.value),1)]),_:1})])):c.value?.success?(p(),$("div",Xf,[Q(I(ze),{variant:"success"},{default:ye(()=>[h("div",Kf,[k[3]||(k[3]=h("p",{class:"font-medium"},"Agent unpacked successfully!",-1)),h("p",Yf,K(c.value.filesGenerated?.length||0)+" files unpacked ",1),(c.value.filesSkipped?.length||0)>0?(p(),$("p",qf,K(c.value.filesSkipped?.length)+" files skipped (already exist) ",1)):W("",!0),c.value.packageDeleted?(p(),$("p",Gf," Package was deleted from agents/packed/ ")):W("",!0)])]),_:1})])):l.value?(p(),ce(N,{key:3,type:"form",id:"unpack-agent-form",actions:!1,disabled:r.value,onSubmit:g,onNode:k[1]||(k[1]=P=>v.value=P),"form-class":"$reset space-y-4"},{default:ye(()=>[Q(I(ta),{node:v.value||void 0},null,8,["node"]),h("div",Wf,[h("p",null,[k[4]||(k[4]=pe("Package: ",-1)),h("span",Qf,K(l.value.packageId),1),pe(" v"+K(l.value.version),1)]),h("p",null,"Source: "+K(l.value.source==="npm"?"npm package":"local (agents/packed/)"),1)]),i.value?(p(),ce(I(ze),{key:0,variant:"error"},{default:ye(()=>[pe(K(i.value),1)]),_:1})):W("",!0),l.value.warnings.length>0?(p(),ce(I(ze),{key:1,variant:"warning"},{default:ye(()=>[h("ul",Jf,[(p(!0),$($e,null,Ie(l.value.warnings,P=>(p(),$("li",{key:P},K(P),1))),128))])]),_:1})):W("",!0),h("div",Zf,[Q(zf,{analysis:l.value},null,8,["analysis"])]),_.value?(p(),$("div",em,[Q(N,{type:"checkbox",name:"deletePackage",modelValue:f.value,"onUpdate:modelValue":k[0]||(k[0]=P=>f.value=P),label:"Delete package after unpacking","outer-class":"$reset mb-0"},null,8,["modelValue"]),k[5]||(k[5]=h("span",{class:"text-xs text-neutral-500"},"(removes from agents/packed/)",-1))])):W("",!0)]),_:1},8,["disabled"])):W("",!0)]),_:1},8,["modelValue","title"])}}}),am={key:0,class:"space-y-4"},om={class:"space-y-2"},rm={class:"font-medium"},sm={key:0,class:"text-sm opacity-80"},lm={key:1,class:"text-sm opacity-70"},im={key:2,class:"text-sm"},dm=["href"],um={key:0,class:"space-y-2"},cm={class:"text-xs bg-neutral-100 dark:bg-neutral-800 p-3 rounded-md overflow-x-auto max-h-40 whitespace-pre-wrap"},fm={class:"space-y-3"},mm={key:0,class:"flex items-center gap-2 text-neutral-500"},hm={key:2,class:"p-4 rounded-lg border border-neutral-200 dark:border-neutral-700 bg-neutral-50 dark:bg-neutral-900/50"},pm={class:"flex items-center gap-3 mb-3"},vm={class:"text-lg font-semibold text-neutral-900 dark:text-neutral-100"},gm={key:0,class:"text-sm text-neutral-600 dark:text-neutral-400 mb-3"},xm={key:1,class:"mt-3"},ym=["innerHTML"],bm={key:0,class:"border-neutral-200 dark:border-neutral-700"},km={key:1,class:"flex items-center gap-2 text-neutral-500"},wm={class:"space-y-2 text-sm"},$m={class:"bg-neutral-200 dark:bg-neutral-700 px-1 rounded"},Mm={class:"list-decimal list-inside space-y-1 ml-2"},Tm={class:"whitespace-pre-wrap text-sm"},Cm={class:"flex justify-between"},Sm="https://registry.npmjs.org",_m=_e({__name:"PublishModal",props:{modelValue:{type:Boolean},packageId:{},outputPath:{}},emits:["update:modelValue","published"],setup(e,{emit:t}){cn.setOptions({gfm:!0,breaks:!0});const n=e,o=t,a=O({get:()=>n.modelValue,set:D=>o("update:modelValue",D)}),l=B(null),s=B(!1),r=B(null),i=B(!1),c=B(null),d=B(!1),f=O(()=>l.value?.readme?cn(l.value.readme):""),v=B(""),x=B("default"),g=B(""),u=B(!1),y=B(null),S=B(!1),_=B(null),M=B(null),k=async()=>{s.value=!0,r.value=null;try{const D=await fetch(Ve(`/api/pack/${encodeURIComponent(n.packageId)}/packed-info`));if(D.ok)l.value=await D.json();else{const C=await D.json();r.value=C.error||"Failed to load package info"}}catch(D){r.value=D instanceof Error?D.message:"Failed to load package info"}finally{s.value=!1}},N=async()=>{d.value=!0;try{const D=await fetch(Ve("/api/pack/npm-token-status"));D.ok&&(c.value=await D.json())}catch{c.value=null}finally{d.value=!1}};Pe(()=>n.modelValue,D=>{D&&(v.value="",x.value="default",g.value="",u.value=!1,_.value=null,M.value=null,st(y),c.value=null,l.value=null,r.value=null,i.value=!1,k(),N())});const P=O(()=>x.value==="default"?Sm:g.value),L=async()=>{st(y),S.value=!0,_.value=null,M.value=null;try{const D={registry:P.value,dryRun:u.value};v.value.trim()&&(D.token=v.value.trim());const C=await fetch(Ve(`/api/pack/${encodeURIComponent(n.packageId)}/publish`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(D)}),T=await C.json();if(!C.ok){const b=T.output?`${T.error||"Failed to publish package"}
|
|
31
31
|
|
|
32
|
-
${T.output}`:T.error||"Failed to publish package";_t({...T,error:b},y);return}M.value={success:!0,packageName:T.packageName,version:T.version,output:T.output,url:T.url,tokenSource:T.tokenSource},u.value||o("published",{packageName:T.packageName,version:T.version,url:T.url})}catch(D){const C=D instanceof Error?D.message:"Failed to publish package";_t({error:C},y)||(_.value=C)}finally{S.value=!1}},ne=()=>{st(y),a.value=!1},q=()=>u.value?"Dry run completed successfully!":"Package published successfully!";return(D,C)=>{const T=At("FormKit");return p(),ce(la,{modelValue:a.value,"onUpdate:modelValue":C[6]||(C[6]=b=>a.value=b),title:"Publish to npm",width:"max-w-lg","min-height":"min-h-[16rem]"},{footer:ye(()=>[m("div",_m,[Q(I(St),{variant:"ghost",onClick:ne},{default:ye(()=>[pe(K(M.value?.success?"Close":"Cancel"),1)]),_:1}),M.value?.success?W("",!0):(p(),ce(I(St),{key:0,variant:"primary",disabled:S.value||d.value,type:"submit",form:"publish-package-form"},{default:ye(()=>[S.value?(p(),w($e,{key:0},[Q(ht,{size:"sm",class:"mr-2"}),C[19]||(C[19]=pe(" Publishing... ",-1))],64)):(p(),w($e,{key:1},[pe(K(u.value?"Validate":"Publish"),1)],64))]),_:1},8,["disabled"]))])]),default:ye(()=>[M.value?.success?(p(),w("div",rm,[Q(I(ze),{variant:u.value?"info":"success"},{default:ye(()=>[m("div",sm,[m("p",lm,K(q()),1),M.value.packageName?(p(),w("p",im," Package: "+K(M.value.packageName)+"@"+K(M.value.version),1)):W("",!0),M.value.tokenSource==="environment"?(p(),w("p",dm," Token: from NPM_TOKEN environment variable ")):W("",!0),M.value.url&&!u.value?(p(),w("p",um,[m("a",{href:M.value.url,target:"_blank",rel:"noopener noreferrer",class:"text-primary-600 dark:text-primary-400 hover:underline"}," View on npm ",8,cm)])):W("",!0)])]),_:1},8,["variant"]),M.value.output?(p(),w("div",fm,[C[7]||(C[7]=m("p",{class:"text-sm font-medium text-neutral-700 dark:text-neutral-300"},"Output:",-1)),m("pre",mm,K(M.value.output),1)])):W("",!0)])):(p(),ce(T,{key:1,type:"form",id:"publish-package-form",actions:!1,disabled:S.value,onSubmit:P,onNode:C[5]||(C[5]=b=>y.value=b),"form-class":"$reset space-y-4"},{default:ye(()=>[Q(I(ta),{node:y.value||void 0},null,8,["node"]),m("div",hm,[s.value?(p(),w("div",pm,[Q(ht,{size:"sm"}),C[8]||(C[8]=m("span",{class:"text-sm"},"Loading package info...",-1))])):r.value?(p(),ce(I(ze),{key:1,variant:"error"},{default:ye(()=>[pe(K(r.value),1)]),_:1})):l.value?(p(),w("div",vm,[m("div",gm,[m("h3",xm,K(l.value.packageName),1),Q(I(It),{variant:"secondary"},{default:ye(()=>[pe("v"+K(l.value.version),1)]),_:1}),l.value.license?(p(),ce(I(It),{key:0,variant:"default"},{default:ye(()=>[pe(K(l.value.license),1)]),_:1})):W("",!0)]),l.value.author?(p(),w("p",ym," by "+K(l.value.author),1)):W("",!0),l.value.readme?(p(),w("div",bm,[m("button",{type:"button",class:"flex items-center gap-2 text-sm font-medium text-neutral-600 dark:text-neutral-400 hover:text-neutral-800 dark:hover:text-neutral-200",onClick:C[0]||(C[0]=b=>i.value=!i.value)},[(p(),ce(lt(i.value?I(uo):I(co)),{class:"w-4 h-4"})),C[9]||(C[9]=pe(" README ",-1))]),i.value?(p(),w("div",{key:0,class:"mt-2 prose prose-sm dark:prose-invert max-w-none p-3 rounded-md border border-neutral-200 dark:border-neutral-700 bg-white dark:bg-neutral-800 max-h-[200px] overflow-y-auto",innerHTML:f.value},null,8,km)):W("",!0)])):W("",!0)])):W("",!0)]),l.value?(p(),w("hr",wm)):W("",!0),d.value?(p(),w("div",$m,[Q(ht,{size:"sm"}),C[10]||(C[10]=m("span",{class:"text-sm"},"Checking npm token configuration...",-1))])):c.value?.hasToken?(p(),ce(I(ze),{key:2,variant:"success"},{default:ye(()=>[...C[11]||(C[11]=[m("p",{class:"text-sm"},[m("strong",null,"NPM_TOKEN found"),pe(" in your environment. Your token will be used automatically. ")],-1)])]),_:1})):c.value&&!c.value.hasToken?(p(),ce(I(ze),{key:3,variant:"warning"},{default:ye(()=>[m("div",Mm,[C[17]||(C[17]=m("p",null,[m("strong",null,"No NPM_TOKEN configured.")],-1)),m("p",null,[C[12]||(C[12]=pe("To publish packages, create an npm token and add it to your ",-1)),m("code",Tm,K(c.value.envFile),1),C[13]||(C[13]=pe(" file:",-1))]),m("ol",Cm,[C[15]||(C[15]=m("li",null,[pe("Run: "),m("code",{class:"bg-neutral-200 dark:bg-neutral-700 px-1 rounded"},"npm token create")],-1)),m("li",null,[pe("Add to "+K(c.value.envFile)+": ",1),C[14]||(C[14]=m("code",{class:"bg-neutral-200 dark:bg-neutral-700 px-1 rounded"},"NPM_TOKEN=npm_xxxxx",-1))]),C[16]||(C[16]=m("li",null,"Restart the dev server",-1))]),C[18]||(C[18]=m("p",{class:"pt-2"},"Or enter a token below for this session only:",-1))])]),_:1})):W("",!0),_.value?(p(),ce(I(ze),{key:4,variant:"error"},{default:ye(()=>[m("pre",Sm,K(_.value),1)]),_:1})):W("",!0),!c.value?.hasToken&&!d.value?(p(),ce(T,{key:5,type:"password",name:"token",modelValue:v.value,"onUpdate:modelValue":C[1]||(C[1]=b=>v.value=b),label:"npm Token",help:"Create a token at npmjs.com/settings/tokens",placeholder:"npm_xxxxxxxxxxxx",autocomplete:"off",validation:"required|apiKey","validation-visibility":"submit","validation-messages":{required:"npm token is required"}},null,8,["modelValue"])):W("",!0),Q(T,{type:"radio",name:"registryType",modelValue:x.value,"onUpdate:modelValue":C[2]||(C[2]=b=>x.value=b),label:"Registry",options:[{value:"default",label:"npm (default)"},{value:"custom",label:"Custom registry"}]},null,8,["modelValue"]),x.value==="custom"?(p(),ce(T,{key:6,type:"url",name:"customRegistry",modelValue:g.value,"onUpdate:modelValue":C[3]||(C[3]=b=>g.value=b),label:"Custom registry URL",placeholder:"https://registry.example.com",validation:"required|httpsUrl","validation-visibility":"submit","validation-messages":{required:"Registry URL is required"}},null,8,["modelValue"])):W("",!0),Q(T,{type:"checkbox",name:"dryRun",modelValue:u.value,"onUpdate:modelValue":C[4]||(C[4]=b=>u.value=b),label:"Dry run (validate without publishing)"},null,8,["modelValue"])]),_:1},8,["disabled"]))]),_:1},8,["modelValue"])}}});function Am(e){return e.type==="side"&&e.data.mode==="human"}function Nm(e){switch(e.type){case"agent":return{type:"agent",value:e.data};case"side":return{type:"side",value:e.data};case"prompt":return{type:"prompt",value:e.data};case"model":return{type:"model",value:e.data};case"tool":return{type:"tool",value:e.data};case"hook":return{type:"hook",value:e.data};default:return e}}const Lm=.3;function Pm(e,t,n){let o=null;for(const a of e){if(a.id==="agents")continue;a.offsetLeft-t<n*Lm&&(o=a.id)}return o}function Xn(e){return e?.replace("#","")||""||null}function Rm(e){return e?`#${e}`:""}function Om(e,t){return e.path===t.path&&!e.hash&&e.query.agent===t.query.agent&&e.query.thread===t.query.thread}const Dm={class:"relative flex h-full overflow-hidden"},Bm={key:0,class:"absolute left-0 right-0 top-0 z-40 border-b border-red-200 bg-red-50 px-6 py-3 text-sm text-red-800 dark:border-red-800 dark:bg-red-950/80 dark:text-red-100"},Vm={class:"flex h-full gap-3"},Um={class:"text-[13px] font-bold [writing-mode:vertical-rl] rotate-180"},Hm={key:0,class:"font-normal text-neutral-500 [margin-inline-start:0.25rem] dark:text-neutral-400"},zm={class:"text-[13px] font-bold [writing-mode:vertical-rl] rotate-180"},jm={key:0,class:"font-normal text-neutral-500 [margin-inline-start:0.25rem] dark:text-neutral-400"},Fm={class:"flex h-full flex-col rounded-xl overflow-hidden border border-black/10 bg-white dark:border-white/10 dark:bg-neutral-900"},Xm={class:"px-4 py-3 border-b border-neutral-200 dark:border-neutral-800 shrink-0"},Km={class:"flex items-center justify-between"},Ym={class:"flex items-center gap-2"},qm={key:0,class:"text-xs text-neutral-500 dark:text-neutral-400"},Gm=200,Wm=560,Qm=320,Jm="composition.threadDetailSplitPercent",Kn=480,Zm=600,so=360,eh=_e({__name:"CompositionView",setup(e){const t=xn(),n=Zn(),o=R=>R==="agent"||R==="side-a"||R==="side-b"?"config":R==="files"||R==="kv"||R==="effects"||R==="config"||R==="info"||R==="logs"?R:"logs",a=R=>typeof R=="string"&&R?R:"/",l=B(o(t.query.inspector)),s=B(a(t.query.filePath)),r=B(0),i=R=>{n.replace({path:t.path,query:{...t.query,...R.inspector?{inspector:R.inspector}:{},...R.filePath?{filePath:R.filePath}:{}},hash:t.hash})},c=R=>{l.value=R,i({inspector:R})},d=R=>{s.value=R,i({filePath:R})},f=()=>{r.value+=1},v=B(null),x=ls(),{openEditSurface:g,closeEditSurface:u}=Kt(),{selectedAgentId:y,setSelectedAgent:S}=is(),{searchableAgents:_,selectedAgentId:M,selectedAgentDetail:k,selectedAgentSummary:N,selectedNode:L,sideCompositions:P,subagentCompositions:ne,compositionSummary:q,models:D,toolsCatalog:C,agentSearch:T,loadingIndex:b,loadingComposition:A,loadError:G,compositionError:Y,loadIndex:H,refreshIndex:E,selectAgent:j,selectInspectorNode:F,deselectNode:X,refreshComposition:he,isRouteSyncing:se}=$s(),fe=O(()=>M.value||y.value),z=O(()=>k.value?.type||N.value?.type||null),U=O(()=>k.value?.id||N.value?.id||fe.value||null),J=O(()=>k.value?.name||N.value?.name||U.value||null),le=O(()=>k.value?.title||N.value?.title||J.value||null),ie=O(()=>k.value?.side_a_agent_prompt||N.value?.side_a_agent_prompt||null),ve=O(()=>k.value?.side_b_agent_prompt||N.value?.side_b_agent_prompt||null),ee=B({}),Z=zs(k,P,ne,ee,D),h=B(null),$=B(0),V=cf(k,P,ne,D,C,$),oe=B(null),de=B(null);function te(R){const ae=Z.value.nodes.find(me=>me.id===R);ae&&_a(ae)}function re(R,ae=null){oe.value=R,de.value=ae}function be(R,ae,me,Ae){x&&(dt.value=!0,X(),g({target:R,anchorEl:ae,canvasNodeId:me,editData:Ae,onSaved:()=>jr(me)}),h.value=me)}const ke=Pa("composition.structureTreeWidth",Qm),ge=B(!1);function Se(R){return Math.min(Wm,Math.max(Gm,R))}ke.value=Se(ke.value);function we(R){R.preventDefault();const ae=R.clientX,me=ke.value;ge.value=!0;const Ae=Ra(window,"pointermove",bt=>{ke.value=Se(me+(bt.clientX-ae))}),Ue=Ra(window,["pointerup","pointercancel"],()=>{ge.value=!1,Ae(),Ue()})}const xe=B(null),Te=B(null),Ce=B(null),Je=B(!1),Pe=B(!1),Fe=B(null),xt=Pa(Jm,40),it=B(!1),wn=B({}),pa=O(()=>fe.value?qt.value[fe.value]??0:0),va=O(()=>{const R=nt.value;if(!R)return 0;const ae=wn.value[R];return ae??(ba.value?.id===R?ba.value.stats?.message_count??0:0)});function ga(){Je.value=!Je.value}function $n(){Pe.value=!Pe.value}function Mn(R,ae,me){return Math.min(me,Math.max(ae,R))}function xa(R){const ae=Fe.value;if(!ae)return Mn(R,25,70);const me=ae.getBoundingClientRect().width;if(me<=0)return Mn(R,25,70);const Ae=Math.min(Zm,Math.max(so,me-Kn)),Ue=Kn/me*100,bt=100-Ae/me*100;return Mn(R,Math.min(Ue,bt),Math.max(Ue,bt))}xt.value=xa(xt.value);const Wo=O(()=>{if(!Pe.value)return{flex:`0 0 ${xt.value}%`,minWidth:`${Kn}px`}}),Qo=O(()=>({minWidth:`${so}px`}));function Tn(R){const ae=Fe.value;if(!ae)return;const me=ae.getBoundingClientRect();me.width<=0||(xt.value=xa((R.clientX-me.left)/me.width*100))}function Nt(){it.value&&(it.value=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("pointermove",Tn),window.removeEventListener("pointerup",Nt),window.removeEventListener("pointercancel",Nt))}function Jo(R){Pe.value||(R.preventDefault(),R.currentTarget instanceof HTMLElement&&R.currentTarget.setPointerCapture(R.pointerId),it.value=!0,document.body.style.cursor="col-resize",document.body.style.userSelect="none",Tn(R),window.addEventListener("pointermove",Tn),window.addEventListener("pointerup",Nt),window.addEventListener("pointercancel",Nt))}function ya(R){const ae=nt.value;ae&&(wn.value={...wn.value,[ae]:R})}const{selectedThreadId:nt,selectedThread:ba,selectedMessageId:Zo,selectedLogId:er,selectedEffectId:ka,selectedEffectRef:tr,highlightedWorkblockLogId:nr,hoveredLogId:ar,hoveredWorkblockLogId:or,showThreadModal:Cn,editingThread:rr,draftThreadId:wa,isCreatingThreadDraft:Sn,handleThreadSelect:sr,handleThreadsLoaded:lr,handleMessageClick:ir,handleMessageHover:dr,handleLogClick:ur,handleLogHover:cr,handleLogsLoaded:fr,handleLogsDeleted:mr,handleThreadDeleted:hr,handleEditThread:pr,handleCreateThread:vr,handleThreadCreated:gr,handleCancelCreateThread:xr,handleThreadUpdated:yr}=js({selectedAgentId:M,threadListPaneRef:xe,messagesPaneRef:Te,logsPaneRef:Ce}),$a=async()=>{yr(),await E(),await he()},br=O(()=>{if(!Sn.value)return null;const R=N.value,ae=fe.value||R?.id||"";return{id:wa,agent_id:ae,user_id:null,tags:[],parent:null,terminated:null,created_at:Math.floor(Date.now()/1e3)+1,agent:{name:ae||"new_thread",title:R?.title||"New thread",type:R?.type||"ai_human"}}}),kr=O(()=>nt.value===wa?null:nt.value),Yt=B("all"),Lt=B("title"),Pt=B("asc");function wr(R){Lt.value===R?Pt.value=Pt.value==="asc"?"desc":"asc":(Lt.value=R,Pt.value="asc")}const Ma=O(()=>{let R=_.value;return Yt.value!=="all"&&(R=R.filter(ae=>ae.type===Yt.value)),R}),{threadCounts:qt,refreshThreadCounts:Ta}=Xs(Ma),$r=O(()=>{const R=Ma.value,ae=Pt.value==="asc"?1:-1;return[...R].sort((me,Ae)=>{if(Lt.value==="threads"){const Ue=(qt.value[me.id]??0)-(qt.value[Ae.id]??0);return(Ue!==0?Ue:me.title.localeCompare(Ae.title))*ae}if(Lt.value==="type"){const Ue=me.type.localeCompare(Ae.type);return(Ue!==0?Ue:me.title.localeCompare(Ae.title))*ae}return me.title.localeCompare(Ae.title)*ae})}),Ca=B(null),Rt=B(!1),Ot=B("edit"),Gt=B(!1),Wt=B(!1),Qt=B(!1),_n=B(!1),Dt=B(null),In=B(null),En=B(null),Jt=B(null),Bt=B(null),{saving:Mr,apiError:Tr,saveAgent:Cr,deleteAgent:Sr,clearAgentError:Sa}=po();function _r(){x&&(Dt.value=null,Ot.value="add",Sa(),Rt.value=!0)}function Ir(R){x&&(Dt.value=R,Ot.value="edit",Sa(),Rt.value=!0)}function Er(R){x&&(In.value=R,Gt.value=!0)}function Ar(R){x&&(En.value=R,Wt.value=!0)}function Nr(R){x&&(Jt.value=R,Qt.value=!0)}async function Lr(R){x&&(Bt.value=R,_n.value=!0)}async function Pr(){const R=Bt.value;if(Bt.value=null,!(!R||!x))try{if(!(await Sr(R)).ok)return;M.value===R.id&&(M.value=null,k.value=null,h.value=null,X()),H()}catch{}}async function Rr(R){if(!x)return;const ae=Dt.value?.id;if((await Cr({mode:Ot.value,data:R,editingId:ae,formNode:Ca.value?.formNode})).ok){Rt.value=!1,Dt.value=null,H();const Ae=Ot.value==="add"?R.name:ae;Ae&&M.value===Ae&&j(Ae,!1)}}function Or(){Gt.value=!1,In.value=null,H()}function Dr(){Wt.value=!1,En.value=null,H()}function Br(){Qt.value=!1,Jt.value=null}const An=B(!1);function Vr(R){R!==M.value?(An.value=!0,Nn(R)):yt("threads")}function Nn(R){R!==M.value&&(u("agent-changed"),h.value=null,ee.value={},S(R),n.replace({path:t.path,query:{...t.query,agent:R,thread:void 0},hash:t.hash||""}),j(R))}function Ur(R){Nn(R)}const dt=B(!1),Vt=B(null);function _a(R){if(u("node-selected"),h.value=R.id,Am(R)){dt.value=!0,X();return}dt.value=!1,F(Nm(R))}function Ia(){u("canvas-deselect"),h.value=null,dt.value=!1,X()}function Hr(R){ee.value=R}async function zr(){const R=h.value;if(h.value=null,dt.value=!1,X(),M.value){Vt.value=R,await E();const ae=await he();$.value+=1,Vt.value=null,ae&&(A.value=!0,ee.value={},j(M.value,!1))}}async function jr(R){if(h.value=null,dt.value=!1,X(),M.value){Vt.value=R,await E();const ae=await he();$.value+=1,Vt.value=null,ae&&(A.value=!0,ee.value={},j(M.value,!1))}}function Fr(){v.value?.scrollTo({left:0,behavior:"smooth"})}let Ut=null,Ea=!0;function Aa(){const R=v.value;if(!R)return;const ae=Array.from(R.querySelectorAll("[data-section]")).map(Ae=>({id:Ae.dataset.section||"",offsetLeft:Ae.offsetLeft})).filter(Ae=>Ae.id),me=Pm(ae,R.scrollLeft,R.clientWidth);Rn.value=me,Ut&&clearTimeout(Ut),Ut=setTimeout(()=>{if(Ea)return;const Ae=Xn(t.hash);if(me!==Ae){const Ue=Rm(me);n.replace({path:t.path,query:t.query,hash:Ue})}},150)}function Xr(R){lr(R),An.value&&(An.value=!1,He(()=>yt("threads")))}function Na(R){gr(R),Ta(),He(()=>yt("threads"))}function Kr(R){hr(R),Ta()}function Ln(R){Rn.value!==R&&yt(R)}function yt(R,ae=!1){const me=v.value;if(!me)return;const Ae=me.querySelector(`[data-section="${R}"]`);Ae&&me.scrollTo({left:Ae.offsetLeft,behavior:ae?"instant":"smooth"})}return Le(()=>t.query.agent,(R,ae)=>{if(b.value||se())return;const me=typeof R=="string"?R:null;me&&me!==M.value&&j(me,!1)}),Le(()=>t.query.inspector,R=>{const ae=o(R);ae!==l.value&&(l.value=ae)},{immediate:!0}),Le(()=>t.query.filePath,R=>{const ae=a(R);ae!==s.value&&(s.value=ae)},{immediate:!0}),Le(()=>t.hash,R=>{const ae=Xn(R);ae&&He(()=>yt(ae))}),es((R,ae)=>{Om(R,ae)&&He(()=>Fr())}),ea(()=>{H(),v.value?.addEventListener("scroll",Aa,{passive:!0});const R=Xn(t.hash);R&&He(()=>yt(R,!0)),He(()=>{Ea=!1})}),Et(()=>{v.value?.removeEventListener("scroll",Aa),Rn.value=null,Ut&&clearTimeout(Ut),Nt()}),(R,ae)=>(p(),w("div",Dm,[I(G)?(p(),w("div",Bm,K(I(G)),1)):W("",!0),m("div",{ref_key:"scrollContainerRef",ref:v,"data-composition-scroll":"",class:"composition-scroll-container flex-1 overflow-x-auto overflow-y-hidden",style:{"container-type":"inline-size"}},[m("div",Vm,[m("div",{class:"snap-section snap-center -ml-px shrink-0 rounded-xl overflow-hidden border border-black/10 bg-white dark:border-white/10 dark:bg-neutral-900","data-section":"agents",onClick:ae[2]||(ae[2]=me=>Ln("agents"))},[Q(Al,{agents:$r.value,"selected-id":I(M),loading:I(b),search:I(T),"type-filter":Yt.value,"sort-by":Lt.value,"sort-dir":Pt.value,"thread-counts":I(qt),readonly:!I(x),"onUpdate:search":ae[0]||(ae[0]=me=>T.value=me),"onUpdate:typeFilter":ae[1]||(ae[1]=me=>Yt.value=me),onSort:wr,onSelect:Nn,onViewThreads:Vr,onAdd:_r,onEdit:Ir,onPack:Er,onUnpack:Ar,onDelete:Lr,onPublish:Nr},null,8,["agents","selected-id","loading","search","type-filter","sort-by","sort-dir","thread-counts","readonly"])]),m("div",{class:"snap-section snap-center shrink-0 flex h-full rounded-xl overflow-hidden border border-black/10 bg-white dark:border-white/10 dark:bg-neutral-900","data-section":"threads",onClick:ae[3]||(ae[3]=me=>Ln("threads")),style:{width:"calc(100cqi - 128px)"}},[m("div",{class:ue(["threads-col shrink-0 flex flex-col transition-[width,min-width] duration-200",{"threads-col--collapsed":Je.value}])},[Je.value?(p(),w("button",{key:0,type:"button",class:"group flex h-full w-full flex-col items-center gap-2 bg-white px-2 py-4 text-neutral-700 transition-colors hover:text-black dark:bg-neutral-900 dark:text-neutral-300 dark:hover:text-white",title:"Expand Threads pane","aria-label":"Expand Threads pane",onClick:Me(ga,["stop"])},[Q(I(ds),{class:"h-5 w-5 shrink-0"}),m("span",Um,[ae[13]||(ae[13]=pe(" Threads",-1)),pa.value>0?(p(),w("span",Hm,K(pa.value),1)):W("",!0)])])):(p(),ce(hs,{key:1,ref_key:"threadListPaneRef",ref:xe,"selected-thread-id":I(nt),"optimistic-thread":br.value,"agent-id":fe.value,"show-collapse-button":!1,onCollapse:ga,onSelectThread:I(sr),onCreateThread:I(vr),onThreadsLoaded:Xr},null,8,["selected-thread-id","optimistic-thread","agent-id","onSelectThread","onCreateThread"]))],2),m("div",{ref_key:"threadDetailColsRef",ref:Fe,class:ue(["thread-detail-cols min-w-0 flex-1",{"thread-detail-cols--messages-collapsed":Pe.value}])},[m("div",{class:ue(["messages-col flex flex-col min-w-0 overflow-hidden chevron-header-divider transition-[width,min-width] duration-200",{"messages-col--collapsed":Pe.value,"chevron-header-divider--shallow":Je.value}]),style:De(Wo.value)},[Pe.value?(p(),w("button",{key:0,type:"button",class:"group flex h-full w-full flex-col items-center gap-2 bg-white px-2 py-4 text-neutral-700 transition-colors hover:text-black dark:bg-neutral-900 dark:text-neutral-300 dark:hover:text-white",title:"Expand Messages pane","aria-label":"Expand Messages pane",onClick:Me($n,["stop"])},[Q(I(vt),{class:"h-5 w-5 shrink-0"}),m("span",zm,[ae[14]||(ae[14]=pe(" Messages",-1)),va.value>0?(p(),w("span",jm,K(va.value),1)):W("",!0)])])):I(nt)&&!I(Sn)?(p(),ce(I(us),{key:1,"thread-id":I(nt),preload:!0,live:!0,"include-silent":!0,"use-workblocks":!0,"use-subagent-blocks":!0},{default:ye(()=>[Q(Da,{ref_key:"messagesPaneRef",ref:Te,"thread-id":I(nt),"selected-message-id":I(Zo),"selected-log-id":I(nr),"selected-effect-id":I(ka),"hovered-log-id":I(or),"show-collapse-button":!1,onCollapse:$n,onMessageCountChanged:ya,onMessageClick:I(ir),onMessageHover:I(dr),onLogsDeleted:I(mr),onFilesChanged:f},null,8,["thread-id","selected-message-id","selected-log-id","selected-effect-id","hovered-log-id","onMessageClick","onMessageHover","onLogsDeleted"])]),_:1},8,["thread-id"])):(p(),ce(Da,{key:2,ref_key:"messagesPaneRef",ref:Te,"thread-id":null,"create-thread-draft":I(Sn),"locked-agent-id":fe.value,"selected-message-id":null,"selected-log-id":null,"selected-effect-id":null,"hovered-log-id":null,"show-collapse-button":!1,onCollapse:$n,onMessageCountChanged:ya,onFilesChanged:f,onCancelCreateThread:I(xr),onThreadCreated:Na},null,8,["create-thread-draft","locked-agent-id","onCancelCreateThread"]))],6),Pe.value?W("",!0):(p(),w("div",{key:0,class:ue(["thread-detail-resizer",{"thread-detail-resizer--active":it.value}]),role:"separator","aria-orientation":"vertical",title:"Resize messages and logs",onPointerdown:Jo},null,34)),m("div",{class:ue(["logs-col flex flex-col chevron-header-divider",{"chevron-header-divider--shallow":Pe.value,"chevron-header-divider--no-body-line":!Pe.value}]),style:De(Qo.value)},[Q(ps,{ref_key:"logsPaneRef",ref:Ce,"thread-id":kr.value,"agent-id":U.value,"agent-name":J.value,"agent-title":le.value,"agent-type":z.value,"side-a-prompt-name":ie.value,"side-b-prompt-name":ve.value,"selected-log-id":I(er),"selected-effect-id":I(ka),"selected-effect-ref":I(tr),"hovered-log-id":I(ar),"active-tab":l.value,"file-path":s.value,"files-refresh-key":r.value,"onUpdate:activeTab":c,"onUpdate:filePath":d,onLogClick:I(ur),onLogHover:I(cr),onLogsLoaded:I(fr),onThreadDeleted:Kr,onEditThread:I(pr),onThreadUpdated:$a},null,8,["thread-id","agent-id","agent-name","agent-title","agent-type","side-a-prompt-name","side-b-prompt-name","selected-log-id","selected-effect-id","selected-effect-ref","hovered-log-id","active-tab","file-path","files-refresh-key","onLogClick","onLogHover","onLogsLoaded","onEditThread"])],6)],2)]),m("div",{class:"snap-section snap-end shrink-0 pr-4","data-section":"structure",onClick:ae[5]||(ae[5]=me=>Ln("structure")),style:{width:"calc(100cqi - 48px)"}},[m("div",Fm,[m("div",Xm,[m("div",Km,[m("div",Ym,[Q(I(ho),{class:"h-[18px] w-[18px] shrink-0 opacity-60"}),ae[15]||(ae[15]=m("h2",{class:"text-base font-bold"},"Structure",-1)),I(N)?(p(),w("span",qm,K(I(N).title||I(M)),1)):W("",!0)])])]),m("div",{class:ue(["flex flex-1 min-h-0",ge.value?"select-none":""])},[m("div",{class:"shrink-0 flex h-full flex-col",style:De({width:`${I(ke)}px`})},[Q(Wc,{root:I(V),"selected-canvas-node-id":h.value,"hovered-canvas-node-id":oe.value,"hovered-edit-target":de.value,onSelect:te,onEdit:be,onHover:re},null,8,["root","selected-canvas-node-id","hovered-canvas-node-id","hovered-edit-target"])],4),m("div",{class:ue(["structure-tree-resizer group relative h-full w-[5px] shrink-0 cursor-col-resize -mx-[2px] z-10",ge.value?"is-resizing":""]),onPointerdown:we,role:"separator","aria-orientation":"vertical","aria-label":"Resize structure tree"},[m("div",{class:ue(["pointer-events-none absolute inset-y-0 left-1/2 w-px -translate-x-1/2 bg-transparent group-hover:bg-accent-500/60 transition-colors",ge.value?"!bg-accent-500":""])},null,2)],34),Q(Ac,{class:"flex-1 min-w-0",layout:I(Z),"selected-node-id":h.value,"hovered-node-id":oe.value,"hovered-edit-target":de.value,"refreshing-node-id":Vt.value,"refresh-epoch":$.value,loading:I(A),error:I(Y),"has-agent":!!I(k),onSelectNode:_a,onViewAgent:Ur,onDeselect:Ia,onNodesMeasured:Hr,onHoverNode:re,onOpenEditSurface:ae[4]||(ae[4]=({target:me,anchorEl:Ae,node:Ue,editData:bt})=>be(me,Ae,Ue.id,bt))},null,8,["layout","selected-node-id","hovered-node-id","hovered-edit-target","refreshing-node-id","refresh-epoch","loading","error","has-agent"])],2)])])])],512),Q(Nc,{node:h.value&&!dt.value?I(L):null,"composition-summary":I(q),onSaved:zr,onClose:Ia},null,8,["node","composition-summary"]),I(x)?(p(),w($e,{key:1},[Q(go,{ref_key:"agentModalRef",ref:Ca,modelValue:Rt.value,"onUpdate:modelValue":ae[6]||(ae[6]=me=>Rt.value=me),mode:Ot.value,"edit-agent":Dt.value,saving:I(Mr),"api-error":I(Tr),readonly:!I(x),onSave:Rr},null,8,["modelValue","mode","edit-agent","saving","api-error","readonly"]),Q(Of,{modelValue:Gt.value,"onUpdate:modelValue":ae[7]||(ae[7]=me=>Gt.value=me),agent:In.value,onPacked:Or},null,8,["modelValue","agent"]),Q(om,{modelValue:Wt.value,"onUpdate:modelValue":ae[8]||(ae[8]=me=>Wt.value=me),agent:En.value,onUnpacked:Dr},null,8,["modelValue","agent"]),Q(Em,{modelValue:Qt.value,"onUpdate:modelValue":ae[9]||(ae[9]=me=>Qt.value=me),"package-id":Jt.value?.packageId??"","output-path":"agents/packed/"+(Jt.value?.packageId??""),onPublished:Br},null,8,["modelValue","package-id","output-path"]),Q(bs,{modelValue:_n.value,"onUpdate:modelValue":ae[10]||(ae[10]=me=>_n.value=me),title:"Delete Agent",message:Bt.value?.packed?"Are you sure you want to delete this packed agent and all its contents?":"Are you sure you want to delete this agent?","confirm-text":"Delete",onConfirm:Pr,onCancel:ae[11]||(ae[11]=me=>Bt.value=null)},null,8,["modelValue","message"])],64)):W("",!0),Q(vs,{modelValue:I(Cn),"onUpdate:modelValue":ae[12]||(ae[12]=me=>ts(Cn)?Cn.value=me:null),"edit-thread":I(rr),"locked-agent-id":fe.value,onThreadCreated:Na,onThreadUpdated:$a},null,8,["modelValue","edit-thread","locked-agent-id"])]))}}),gh=fo(eh,[["__scopeId","data-v-9d3e8a1c"]]);export{gh as default};
|
|
32
|
+
${T.output}`:T.error||"Failed to publish package";_t({...T,error:b},y);return}M.value={success:!0,packageName:T.packageName,version:T.version,output:T.output,url:T.url,tokenSource:T.tokenSource},u.value||o("published",{packageName:T.packageName,version:T.version,url:T.url})}catch(D){const C=D instanceof Error?D.message:"Failed to publish package";_t({error:C},y)||(_.value=C)}finally{S.value=!1}},ne=()=>{st(y),a.value=!1},q=()=>u.value?"Dry run completed successfully!":"Package published successfully!";return(D,C)=>{const T=At("FormKit");return p(),ce(la,{modelValue:a.value,"onUpdate:modelValue":C[6]||(C[6]=b=>a.value=b),title:"Publish to npm",width:"max-w-lg","min-height":"min-h-[16rem]"},{footer:ye(()=>[h("div",Cm,[Q(I(St),{variant:"ghost",onClick:ne},{default:ye(()=>[pe(K(M.value?.success?"Close":"Cancel"),1)]),_:1}),M.value?.success?W("",!0):(p(),ce(I(St),{key:0,variant:"primary",disabled:S.value||d.value,type:"submit",form:"publish-package-form"},{default:ye(()=>[S.value?(p(),$($e,{key:0},[Q(ht,{size:"sm",class:"mr-2"}),C[19]||(C[19]=pe(" Publishing... ",-1))],64)):(p(),$($e,{key:1},[pe(K(u.value?"Validate":"Publish"),1)],64))]),_:1},8,["disabled"]))])]),default:ye(()=>[M.value?.success?(p(),$("div",am,[Q(I(ze),{variant:u.value?"info":"success"},{default:ye(()=>[h("div",om,[h("p",rm,K(q()),1),M.value.packageName?(p(),$("p",sm," Package: "+K(M.value.packageName)+"@"+K(M.value.version),1)):W("",!0),M.value.tokenSource==="environment"?(p(),$("p",lm," Token: from NPM_TOKEN environment variable ")):W("",!0),M.value.url&&!u.value?(p(),$("p",im,[h("a",{href:M.value.url,target:"_blank",rel:"noopener noreferrer",class:"text-primary-600 dark:text-primary-400 hover:underline"}," View on npm ",8,dm)])):W("",!0)])]),_:1},8,["variant"]),M.value.output?(p(),$("div",um,[C[7]||(C[7]=h("p",{class:"text-sm font-medium text-neutral-700 dark:text-neutral-300"},"Output:",-1)),h("pre",cm,K(M.value.output),1)])):W("",!0)])):(p(),ce(T,{key:1,type:"form",id:"publish-package-form",actions:!1,disabled:S.value,onSubmit:L,onNode:C[5]||(C[5]=b=>y.value=b),"form-class":"$reset space-y-4"},{default:ye(()=>[Q(I(ta),{node:y.value||void 0},null,8,["node"]),h("div",fm,[s.value?(p(),$("div",mm,[Q(ht,{size:"sm"}),C[8]||(C[8]=h("span",{class:"text-sm"},"Loading package info...",-1))])):r.value?(p(),ce(I(ze),{key:1,variant:"error"},{default:ye(()=>[pe(K(r.value),1)]),_:1})):l.value?(p(),$("div",hm,[h("div",pm,[h("h3",vm,K(l.value.packageName),1),Q(I(It),{variant:"secondary"},{default:ye(()=>[pe("v"+K(l.value.version),1)]),_:1}),l.value.license?(p(),ce(I(It),{key:0,variant:"default"},{default:ye(()=>[pe(K(l.value.license),1)]),_:1})):W("",!0)]),l.value.author?(p(),$("p",gm," by "+K(l.value.author),1)):W("",!0),l.value.readme?(p(),$("div",xm,[h("button",{type:"button",class:"flex items-center gap-2 text-sm font-medium text-neutral-600 dark:text-neutral-400 hover:text-neutral-800 dark:hover:text-neutral-200",onClick:C[0]||(C[0]=b=>i.value=!i.value)},[(p(),ce(lt(i.value?I(uo):I(co)),{class:"w-4 h-4"})),C[9]||(C[9]=pe(" README ",-1))]),i.value?(p(),$("div",{key:0,class:"mt-2 prose prose-sm dark:prose-invert max-w-none p-3 rounded-md border border-neutral-200 dark:border-neutral-700 bg-white dark:bg-neutral-800 max-h-[200px] overflow-y-auto",innerHTML:f.value},null,8,ym)):W("",!0)])):W("",!0)])):W("",!0)]),l.value?(p(),$("hr",bm)):W("",!0),d.value?(p(),$("div",km,[Q(ht,{size:"sm"}),C[10]||(C[10]=h("span",{class:"text-sm"},"Checking npm token configuration...",-1))])):c.value?.hasToken?(p(),ce(I(ze),{key:2,variant:"success"},{default:ye(()=>[...C[11]||(C[11]=[h("p",{class:"text-sm"},[h("strong",null,"NPM_TOKEN found"),pe(" in your environment. Your token will be used automatically. ")],-1)])]),_:1})):c.value&&!c.value.hasToken?(p(),ce(I(ze),{key:3,variant:"warning"},{default:ye(()=>[h("div",wm,[C[17]||(C[17]=h("p",null,[h("strong",null,"No NPM_TOKEN configured.")],-1)),h("p",null,[C[12]||(C[12]=pe("To publish packages, create an npm token and add it to your ",-1)),h("code",$m,K(c.value.envFile),1),C[13]||(C[13]=pe(" file:",-1))]),h("ol",Mm,[C[15]||(C[15]=h("li",null,[pe("Run: "),h("code",{class:"bg-neutral-200 dark:bg-neutral-700 px-1 rounded"},"npm token create")],-1)),h("li",null,[pe("Add to "+K(c.value.envFile)+": ",1),C[14]||(C[14]=h("code",{class:"bg-neutral-200 dark:bg-neutral-700 px-1 rounded"},"NPM_TOKEN=npm_xxxxx",-1))]),C[16]||(C[16]=h("li",null,"Restart the dev server",-1))]),C[18]||(C[18]=h("p",{class:"pt-2"},"Or enter a token below for this session only:",-1))])]),_:1})):W("",!0),_.value?(p(),ce(I(ze),{key:4,variant:"error"},{default:ye(()=>[h("pre",Tm,K(_.value),1)]),_:1})):W("",!0),!c.value?.hasToken&&!d.value?(p(),ce(T,{key:5,type:"password",name:"token",modelValue:v.value,"onUpdate:modelValue":C[1]||(C[1]=b=>v.value=b),label:"npm Token",help:"Create a token at npmjs.com/settings/tokens",placeholder:"npm_xxxxxxxxxxxx",autocomplete:"off",validation:"required|apiKey","validation-visibility":"submit","validation-messages":{required:"npm token is required"}},null,8,["modelValue"])):W("",!0),Q(T,{type:"radio",name:"registryType",modelValue:x.value,"onUpdate:modelValue":C[2]||(C[2]=b=>x.value=b),label:"Registry",options:[{value:"default",label:"npm (default)"},{value:"custom",label:"Custom registry"}]},null,8,["modelValue"]),x.value==="custom"?(p(),ce(T,{key:6,type:"url",name:"customRegistry",modelValue:g.value,"onUpdate:modelValue":C[3]||(C[3]=b=>g.value=b),label:"Custom registry URL",placeholder:"https://registry.example.com",validation:"required|httpsUrl","validation-visibility":"submit","validation-messages":{required:"Registry URL is required"}},null,8,["modelValue"])):W("",!0),Q(T,{type:"checkbox",name:"dryRun",modelValue:u.value,"onUpdate:modelValue":C[4]||(C[4]=b=>u.value=b),label:"Dry run (validate without publishing)"},null,8,["modelValue"])]),_:1},8,["disabled"]))]),_:1},8,["modelValue"])}}});function Im(e){return e.type==="side"&&e.data.mode==="human"}function Em(e){switch(e.type){case"agent":return{type:"agent",value:e.data};case"side":return{type:"side",value:e.data};case"prompt":return{type:"prompt",value:e.data};case"model":return{type:"model",value:e.data};case"tool":return{type:"tool",value:e.data};case"hook":return{type:"hook",value:e.data};default:return e}}const Am=.3;function Nm(e,t,n){let o=null;for(const a of e){if(a.id==="agents")continue;a.offsetLeft-t<n*Am&&(o=a.id)}return o}function Xn(e){return e?.replace("#","")||""||null}function Pm(e){return e?`#${e}`:""}function Lm(e,t){return e.path===t.path&&!e.hash&&e.query.agent===t.query.agent&&e.query.thread===t.query.thread}const Rm={class:"relative flex h-full overflow-hidden"},Om={key:0,class:"absolute left-0 right-0 top-0 z-40 border-b border-red-200 bg-red-50 px-6 py-3 text-sm text-red-800 dark:border-red-800 dark:bg-red-950/80 dark:text-red-100"},Dm={class:"flex h-full gap-3"},Bm={class:"text-[13px] font-bold [writing-mode:vertical-rl] rotate-180"},Vm={key:0,class:"font-normal text-neutral-500 [margin-inline-start:0.25rem] dark:text-neutral-400"},Um={class:"text-[13px] font-bold [writing-mode:vertical-rl] rotate-180"},Hm={key:0,class:"font-normal text-neutral-500 [margin-inline-start:0.25rem] dark:text-neutral-400"},zm={class:"flex h-full flex-col rounded-xl overflow-hidden border border-black/10 bg-white dark:border-white/10 dark:bg-neutral-900"},Fm={class:"px-4 py-3 border-b border-neutral-200 dark:border-neutral-800 shrink-0"},jm={class:"flex items-center justify-between"},Xm={class:"flex items-center gap-2"},Km={key:0,class:"text-xs text-neutral-500 dark:text-neutral-400"},Ym=200,qm=560,Gm=320,Wm="composition.threadDetailSplitPercent",Kn=480,Qm=600,so=360,Jm=_e({__name:"CompositionView",setup(e){const t=xn(),n=Zn(),o=R=>R==="agent"||R==="side-a"||R==="side-b"?"config":R==="files"||R==="kv"||R==="effects"||R==="config"||R==="info"||R==="logs"?R:"logs",a=R=>typeof R=="string"&&R?R:"/",l=B(o(t.query.inspector)),s=B(a(t.query.filePath)),r=B(0),i=R=>{n.replace({path:t.path,query:{...t.query,...R.inspector?{inspector:R.inspector}:{},...R.filePath?{filePath:R.filePath}:{}},hash:t.hash})},c=R=>{l.value=R,i({inspector:R})},d=R=>{s.value=R,i({filePath:R})},f=()=>{r.value+=1},v=B(null),x=is(),{openEditSurface:g,closeEditSurface:u}=Kt(),{selectedAgentId:y,setSelectedAgent:S}=ds(),{searchableAgents:_,selectedAgentId:M,selectedAgentDetail:k,selectedAgentSummary:N,selectedNode:P,sideCompositions:L,subagentCompositions:ne,compositionSummary:q,models:D,toolsCatalog:C,agentSearch:T,loadingIndex:b,loadingComposition:A,loadError:G,compositionError:Y,loadIndex:H,refreshIndex:E,selectAgent:F,selectInspectorNode:j,deselectNode:X,refreshComposition:he,isRouteSyncing:se}=Ms(),fe=O(()=>M.value||y.value),z=O(()=>k.value?.type||N.value?.type||null),U=O(()=>k.value?.id||N.value?.id||fe.value||null),J=O(()=>k.value?.name||N.value?.name||U.value||null),le=O(()=>k.value?.title||N.value?.title||J.value||null),ie=O(()=>k.value?.side_a_agent_prompt||N.value?.side_a_agent_prompt||null),ve=O(()=>k.value?.side_b_agent_prompt||N.value?.side_b_agent_prompt||null),ee=B({}),Z=Fs(k,L,ne,ee,D),m=B(null),w=B(0),V=df(k,L,ne,D,C,w),oe=B(null),de=B(null);function te(R){const ae=Z.value.nodes.find(me=>me.id===R);ae&&_a(ae)}function re(R,ae=null){oe.value=R,de.value=ae}function be(R,ae,me,Ae){x&&(dt.value=!0,X(),g({target:R,anchorEl:ae,canvasNodeId:me,editData:Ae,threadId:et.value,onSaved:()=>Fr(me)}),m.value=me)}const ke=La("composition.structureTreeWidth",Gm),ge=B(!1);function Se(R){return Math.min(qm,Math.max(Ym,R))}ke.value=Se(ke.value);function we(R){R.preventDefault();const ae=R.clientX,me=ke.value;ge.value=!0;const Ae=Ra(window,"pointermove",bt=>{ke.value=Se(me+(bt.clientX-ae))}),Ue=Ra(window,["pointerup","pointercancel"],()=>{ge.value=!1,Ae(),Ue()})}const xe=B(null),Te=B(null),Ce=B(null),Je=B(!1),Le=B(!1),je=B(null),xt=La(Wm,40),it=B(!1),wn=B({}),pa=O(()=>fe.value?qt.value[fe.value]??0:0),va=O(()=>{const R=et.value;if(!R)return 0;const ae=wn.value[R];return ae??(ba.value?.id===R?ba.value.stats?.message_count??0:0)});function ga(){Je.value=!Je.value}function $n(){Le.value=!Le.value}function Mn(R,ae,me){return Math.min(me,Math.max(ae,R))}function xa(R){const ae=je.value;if(!ae)return Mn(R,25,70);const me=ae.getBoundingClientRect().width;if(me<=0)return Mn(R,25,70);const Ae=Math.min(Qm,Math.max(so,me-Kn)),Ue=Kn/me*100,bt=100-Ae/me*100;return Mn(R,Math.min(Ue,bt),Math.max(Ue,bt))}xt.value=xa(xt.value);const Wo=O(()=>{if(!Le.value)return{flex:`0 0 ${xt.value}%`,minWidth:`${Kn}px`}}),Qo=O(()=>({minWidth:`${so}px`}));function Tn(R){const ae=je.value;if(!ae)return;const me=ae.getBoundingClientRect();me.width<=0||(xt.value=xa((R.clientX-me.left)/me.width*100))}function Nt(){it.value&&(it.value=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("pointermove",Tn),window.removeEventListener("pointerup",Nt),window.removeEventListener("pointercancel",Nt))}function Jo(R){Le.value||(R.preventDefault(),R.currentTarget instanceof HTMLElement&&R.currentTarget.setPointerCapture(R.pointerId),it.value=!0,document.body.style.cursor="col-resize",document.body.style.userSelect="none",Tn(R),window.addEventListener("pointermove",Tn),window.addEventListener("pointerup",Nt),window.addEventListener("pointercancel",Nt))}function ya(R){const ae=et.value;ae&&(wn.value={...wn.value,[ae]:R})}const{selectedThreadId:et,selectedThread:ba,selectedMessageId:Zo,selectedLogId:er,selectedEffectId:ka,selectedEffectRef:tr,highlightedWorkblockLogId:nr,hoveredLogId:ar,hoveredWorkblockLogId:or,showThreadModal:Cn,editingThread:rr,draftThreadId:wa,isCreatingThreadDraft:Sn,handleThreadSelect:sr,handleThreadsLoaded:lr,handleMessageClick:ir,handleMessageHover:dr,handleLogClick:ur,handleLogHover:cr,handleLogsLoaded:fr,handleLogsDeleted:mr,handleThreadDeleted:hr,handleEditThread:pr,handleCreateThread:vr,handleThreadCreated:gr,handleCancelCreateThread:xr,handleThreadUpdated:yr}=js({selectedAgentId:M,threadListPaneRef:xe,messagesPaneRef:Te,logsPaneRef:Ce}),$a=async()=>{yr(),await E(),await he()},br=O(()=>{if(!Sn.value)return null;const R=N.value,ae=fe.value||R?.id||"";return{id:wa,agent_id:ae,user_id:null,tags:[],parent:null,terminated:null,created_at:Math.floor(Date.now()/1e3)+1,agent:{name:ae||"new_thread",title:R?.title||"New thread",type:R?.type||"ai_human"}}}),kr=O(()=>et.value===wa?null:et.value),Yt=B("all"),Pt=B("title"),Lt=B("asc");function wr(R){Pt.value===R?Lt.value=Lt.value==="asc"?"desc":"asc":(Pt.value=R,Lt.value="asc")}const Ma=O(()=>{let R=_.value;return Yt.value!=="all"&&(R=R.filter(ae=>ae.type===Yt.value)),R}),{threadCounts:qt,refreshThreadCounts:Ta}=Ks(Ma),$r=O(()=>{const R=Ma.value,ae=Lt.value==="asc"?1:-1;return[...R].sort((me,Ae)=>{if(Pt.value==="threads"){const Ue=(qt.value[me.id]??0)-(qt.value[Ae.id]??0);return(Ue!==0?Ue:me.title.localeCompare(Ae.title))*ae}if(Pt.value==="type"){const Ue=me.type.localeCompare(Ae.type);return(Ue!==0?Ue:me.title.localeCompare(Ae.title))*ae}return me.title.localeCompare(Ae.title)*ae})}),Ca=B(null),Rt=B(!1),Ot=B("edit"),Gt=B(!1),Wt=B(!1),Qt=B(!1),_n=B(!1),Dt=B(null),In=B(null),En=B(null),Jt=B(null),Bt=B(null),{saving:Mr,apiError:Tr,saveAgent:Cr,deleteAgent:Sr,clearAgentError:Sa}=po();function _r(){x&&(Dt.value=null,Ot.value="add",Sa(),Rt.value=!0)}function Ir(R){x&&(Dt.value=R,Ot.value="edit",Sa(),Rt.value=!0)}function Er(R){x&&(In.value=R,Gt.value=!0)}function Ar(R){x&&(En.value=R,Wt.value=!0)}function Nr(R){x&&(Jt.value=R,Qt.value=!0)}async function Pr(R){x&&(Bt.value=R,_n.value=!0)}async function Lr(){const R=Bt.value;if(Bt.value=null,!(!R||!x))try{if(!(await Sr(R)).ok)return;M.value===R.id&&(M.value=null,k.value=null,m.value=null,X()),H()}catch{}}async function Rr(R){if(!x)return;const ae=Dt.value?.id;if((await Cr({mode:Ot.value,data:R,editingId:ae,formNode:Ca.value?.formNode})).ok){Rt.value=!1,Dt.value=null,H();const Ae=Ot.value==="add"?R.name:ae;Ae&&M.value===Ae&&F(Ae,!1)}}function Or(){Gt.value=!1,In.value=null,H()}function Dr(){Wt.value=!1,En.value=null,H()}function Br(){Qt.value=!1,Jt.value=null}const An=B(!1);function Vr(R){R!==M.value?(An.value=!0,Nn(R)):yt("threads")}function Nn(R){R!==M.value&&(u("agent-changed"),m.value=null,ee.value={},S(R),n.replace({path:t.path,query:{...t.query,agent:R,thread:void 0},hash:t.hash||""}),F(R))}function Ur(R){Nn(R)}const dt=B(!1),Vt=B(null);function _a(R){if(u("node-selected"),m.value=R.id,Im(R)){dt.value=!0,X();return}dt.value=!1,j(Em(R))}function Ia(){u("canvas-deselect"),m.value=null,dt.value=!1,X()}function Hr(R){ee.value=R}async function zr(){const R=m.value;if(m.value=null,dt.value=!1,X(),M.value){Vt.value=R,await E();const ae=await he();w.value+=1,Vt.value=null,ae&&(A.value=!0,ee.value={},F(M.value,!1))}}async function Fr(R){if(m.value=null,dt.value=!1,X(),M.value){Vt.value=R,await E();const ae=await he();w.value+=1,Vt.value=null,ae&&(A.value=!0,ee.value={},F(M.value,!1))}}function jr(){v.value?.scrollTo({left:0,behavior:"smooth"})}let Ut=null,Ea=!0;function Aa(){const R=v.value;if(!R)return;const ae=Array.from(R.querySelectorAll("[data-section]")).map(Ae=>({id:Ae.dataset.section||"",offsetLeft:Ae.offsetLeft})).filter(Ae=>Ae.id),me=Nm(ae,R.scrollLeft,R.clientWidth);Rn.value=me,Ut&&clearTimeout(Ut),Ut=setTimeout(()=>{if(Ea)return;const Ae=Xn(t.hash);if(me!==Ae){const Ue=Pm(me);n.replace({path:t.path,query:t.query,hash:Ue})}},150)}function Xr(R){lr(R),An.value&&(An.value=!1,He(()=>yt("threads")))}function Na(R){gr(R),Ta(),He(()=>yt("threads"))}function Kr(R){hr(R),Ta()}function Pn(R){Rn.value!==R&&yt(R)}function yt(R,ae=!1){const me=v.value;if(!me)return;const Ae=me.querySelector(`[data-section="${R}"]`);Ae&&me.scrollTo({left:Ae.offsetLeft,behavior:ae?"instant":"smooth"})}return Pe(()=>t.query.agent,(R,ae)=>{if(b.value||se())return;const me=typeof R=="string"?R:null;me&&me!==M.value&&F(me,!1)}),Pe(()=>t.query.inspector,R=>{const ae=o(R);ae!==l.value&&(l.value=ae)},{immediate:!0}),Pe(()=>t.query.filePath,R=>{const ae=a(R);ae!==s.value&&(s.value=ae)},{immediate:!0}),Pe(()=>t.hash,R=>{const ae=Xn(R);ae&&He(()=>yt(ae))}),es((R,ae)=>{Lm(R,ae)&&He(()=>jr())}),ea(()=>{H(),v.value?.addEventListener("scroll",Aa,{passive:!0});const R=Xn(t.hash);R&&He(()=>yt(R,!0)),He(()=>{Ea=!1})}),Et(()=>{v.value?.removeEventListener("scroll",Aa),Rn.value=null,Ut&&clearTimeout(Ut),Nt()}),(R,ae)=>(p(),$("div",Rm,[I(G)?(p(),$("div",Om,K(I(G)),1)):W("",!0),h("div",{ref_key:"scrollContainerRef",ref:v,"data-composition-scroll":"",class:"composition-scroll-container flex-1 overflow-x-auto overflow-y-hidden",style:{"container-type":"inline-size"}},[h("div",Dm,[h("div",{class:"snap-section snap-center -ml-px shrink-0 rounded-xl overflow-hidden border border-black/10 bg-white dark:border-white/10 dark:bg-neutral-900","data-section":"agents",onClick:ae[2]||(ae[2]=me=>Pn("agents"))},[Q(Il,{agents:$r.value,"selected-id":I(M),loading:I(b),search:I(T),"type-filter":Yt.value,"sort-by":Pt.value,"sort-dir":Lt.value,"thread-counts":I(qt),readonly:!I(x),"onUpdate:search":ae[0]||(ae[0]=me=>T.value=me),"onUpdate:typeFilter":ae[1]||(ae[1]=me=>Yt.value=me),onSort:wr,onSelect:Nn,onViewThreads:Vr,onAdd:_r,onEdit:Ir,onPack:Er,onUnpack:Ar,onDelete:Pr,onPublish:Nr},null,8,["agents","selected-id","loading","search","type-filter","sort-by","sort-dir","thread-counts","readonly"])]),h("div",{class:"snap-section snap-center shrink-0 flex h-full rounded-xl overflow-hidden border border-black/10 bg-white dark:border-white/10 dark:bg-neutral-900","data-section":"threads",onClick:ae[3]||(ae[3]=me=>Pn("threads")),style:{width:"calc(100cqi - 128px)"}},[h("div",{class:ue(["threads-col shrink-0 flex flex-col transition-[width,min-width] duration-200",{"threads-col--collapsed":Je.value}])},[Je.value?(p(),$("button",{key:0,type:"button",class:"group flex h-full w-full flex-col items-center gap-2 bg-white px-2 py-4 text-neutral-700 transition-colors hover:text-black dark:bg-neutral-900 dark:text-neutral-300 dark:hover:text-white",title:"Expand Threads pane","aria-label":"Expand Threads pane",onClick:Me(ga,["stop"])},[Q(I(us),{class:"h-5 w-5 shrink-0"}),h("span",Bm,[ae[13]||(ae[13]=pe(" Threads",-1)),pa.value>0?(p(),$("span",Vm,K(pa.value),1)):W("",!0)])])):(p(),ce(ps,{key:1,ref_key:"threadListPaneRef",ref:xe,"selected-thread-id":I(et),"optimistic-thread":br.value,"agent-id":fe.value,"show-collapse-button":!1,onCollapse:ga,onSelectThread:I(sr),onCreateThread:I(vr),onThreadsLoaded:Xr},null,8,["selected-thread-id","optimistic-thread","agent-id","onSelectThread","onCreateThread"]))],2),h("div",{ref_key:"threadDetailColsRef",ref:je,class:ue(["thread-detail-cols min-w-0 flex-1",{"thread-detail-cols--messages-collapsed":Le.value}])},[h("div",{class:ue(["messages-col flex flex-col min-w-0 overflow-hidden chevron-header-divider transition-[width,min-width] duration-200",{"messages-col--collapsed":Le.value,"chevron-header-divider--shallow":Je.value}]),style:De(Wo.value)},[Le.value?(p(),$("button",{key:0,type:"button",class:"group flex h-full w-full flex-col items-center gap-2 bg-white px-2 py-4 text-neutral-700 transition-colors hover:text-black dark:bg-neutral-900 dark:text-neutral-300 dark:hover:text-white",title:"Expand Messages pane","aria-label":"Expand Messages pane",onClick:Me($n,["stop"])},[Q(I(vt),{class:"h-5 w-5 shrink-0"}),h("span",Um,[ae[14]||(ae[14]=pe(" Messages",-1)),va.value>0?(p(),$("span",Hm,K(va.value),1)):W("",!0)])])):I(et)&&!I(Sn)?(p(),ce(I(cs),{key:1,"thread-id":I(et),preload:!0,live:!0,"include-silent":!0,"use-workblocks":!0,"use-subagent-blocks":!0},{default:ye(()=>[Q(Da,{ref_key:"messagesPaneRef",ref:Te,"thread-id":I(et),"selected-message-id":I(Zo),"selected-log-id":I(nr),"selected-effect-id":I(ka),"hovered-log-id":I(or),"show-collapse-button":!1,onCollapse:$n,onMessageCountChanged:ya,onMessageClick:I(ir),onMessageHover:I(dr),onLogsDeleted:I(mr),onFilesChanged:f},null,8,["thread-id","selected-message-id","selected-log-id","selected-effect-id","hovered-log-id","onMessageClick","onMessageHover","onLogsDeleted"])]),_:1},8,["thread-id"])):(p(),ce(Da,{key:2,ref_key:"messagesPaneRef",ref:Te,"thread-id":null,"create-thread-draft":I(Sn),"locked-agent-id":fe.value,"selected-message-id":null,"selected-log-id":null,"selected-effect-id":null,"hovered-log-id":null,"show-collapse-button":!1,onCollapse:$n,onMessageCountChanged:ya,onFilesChanged:f,onCancelCreateThread:I(xr),onThreadCreated:Na},null,8,["create-thread-draft","locked-agent-id","onCancelCreateThread"]))],6),Le.value?W("",!0):(p(),$("div",{key:0,class:ue(["thread-detail-resizer",{"thread-detail-resizer--active":it.value}]),role:"separator","aria-orientation":"vertical",title:"Resize messages and logs",onPointerdown:Jo},null,34)),h("div",{class:ue(["logs-col flex flex-col chevron-header-divider",{"chevron-header-divider--shallow":Le.value,"chevron-header-divider--no-body-line":!Le.value}]),style:De(Qo.value)},[Q(vs,{ref_key:"logsPaneRef",ref:Ce,"thread-id":kr.value,"agent-id":U.value,"agent-name":J.value,"agent-title":le.value,"agent-type":z.value,"side-a-prompt-name":ie.value,"side-b-prompt-name":ve.value,"selected-log-id":I(er),"selected-effect-id":I(ka),"selected-effect-ref":I(tr),"hovered-log-id":I(ar),"active-tab":l.value,"file-path":s.value,"files-refresh-key":r.value,"onUpdate:activeTab":c,"onUpdate:filePath":d,onLogClick:I(ur),onLogHover:I(cr),onLogsLoaded:I(fr),onThreadDeleted:Kr,onEditThread:I(pr),onThreadUpdated:$a},null,8,["thread-id","agent-id","agent-name","agent-title","agent-type","side-a-prompt-name","side-b-prompt-name","selected-log-id","selected-effect-id","selected-effect-ref","hovered-log-id","active-tab","file-path","files-refresh-key","onLogClick","onLogHover","onLogsLoaded","onEditThread"])],6)],2)]),h("div",{class:"snap-section snap-end shrink-0 pr-4","data-section":"structure",onClick:ae[5]||(ae[5]=me=>Pn("structure")),style:{width:"calc(100cqi - 48px)"}},[h("div",zm,[h("div",Fm,[h("div",jm,[h("div",Xm,[Q(I(ho),{class:"h-[18px] w-[18px] shrink-0 opacity-60"}),ae[15]||(ae[15]=h("h2",{class:"text-base font-bold"},"Structure",-1)),I(N)?(p(),$("span",Km,K(I(N).title||I(M)),1)):W("",!0)])])]),h("div",{class:ue(["flex flex-1 min-h-0",ge.value?"select-none":""])},[h("div",{class:"shrink-0 flex h-full flex-col",style:De({width:`${I(ke)}px`})},[Q(qc,{root:I(V),"selected-canvas-node-id":m.value,"hovered-canvas-node-id":oe.value,"hovered-edit-target":de.value,onSelect:te,onEdit:be,onHover:re},null,8,["root","selected-canvas-node-id","hovered-canvas-node-id","hovered-edit-target"])],4),h("div",{class:ue(["structure-tree-resizer group relative h-full w-[5px] shrink-0 cursor-col-resize -mx-[2px] z-10",ge.value?"is-resizing":""]),onPointerdown:we,role:"separator","aria-orientation":"vertical","aria-label":"Resize structure tree"},[h("div",{class:ue(["pointer-events-none absolute inset-y-0 left-1/2 w-px -translate-x-1/2 bg-transparent group-hover:bg-accent-500/60 transition-colors",ge.value?"!bg-accent-500":""])},null,2)],34),Q(Ic,{class:"flex-1 min-w-0",layout:I(Z),"selected-node-id":m.value,"hovered-node-id":oe.value,"hovered-edit-target":de.value,"refreshing-node-id":Vt.value,"refresh-epoch":w.value,loading:I(A),error:I(Y),"has-agent":!!I(k),onSelectNode:_a,onViewAgent:Ur,onDeselect:Ia,onNodesMeasured:Hr,onHoverNode:re,onOpenEditSurface:ae[4]||(ae[4]=({target:me,anchorEl:Ae,node:Ue,editData:bt})=>be(me,Ae,Ue.id,bt))},null,8,["layout","selected-node-id","hovered-node-id","hovered-edit-target","refreshing-node-id","refresh-epoch","loading","error","has-agent"])],2)])])])],512),Q(Ec,{node:m.value&&!dt.value?I(P):null,"composition-summary":I(q),onSaved:zr,onClose:Ia},null,8,["node","composition-summary"]),I(x)?(p(),$($e,{key:1},[Q(go,{ref_key:"agentModalRef",ref:Ca,modelValue:Rt.value,"onUpdate:modelValue":ae[6]||(ae[6]=me=>Rt.value=me),mode:Ot.value,"edit-agent":Dt.value,saving:I(Mr),"api-error":I(Tr),readonly:!I(x),onSave:Rr},null,8,["modelValue","mode","edit-agent","saving","api-error","readonly"]),Q(Lf,{modelValue:Gt.value,"onUpdate:modelValue":ae[7]||(ae[7]=me=>Gt.value=me),agent:In.value,onPacked:Or},null,8,["modelValue","agent"]),Q(nm,{modelValue:Wt.value,"onUpdate:modelValue":ae[8]||(ae[8]=me=>Wt.value=me),agent:En.value,onUnpacked:Dr},null,8,["modelValue","agent"]),Q(_m,{modelValue:Qt.value,"onUpdate:modelValue":ae[9]||(ae[9]=me=>Qt.value=me),"package-id":Jt.value?.packageId??"","output-path":"agents/packed/"+(Jt.value?.packageId??""),onPublished:Br},null,8,["modelValue","package-id","output-path"]),Q(ks,{modelValue:_n.value,"onUpdate:modelValue":ae[10]||(ae[10]=me=>_n.value=me),title:"Delete Agent",message:Bt.value?.packed?"Are you sure you want to delete this packed agent and all its contents?":"Are you sure you want to delete this agent?","confirm-text":"Delete",onConfirm:Lr,onCancel:ae[11]||(ae[11]=me=>Bt.value=null)},null,8,["modelValue","message"])],64)):W("",!0),Q(gs,{modelValue:I(Cn),"onUpdate:modelValue":ae[12]||(ae[12]=me=>ts(Cn)?Cn.value=me:null),"edit-thread":I(rr),"locked-agent-id":fe.value,onThreadCreated:Na,onThreadUpdated:$a},null,8,["modelValue","edit-thread","locked-agent-id"])]))}}),ph=fo(Jm,[["__scopeId","data-v-4c1a52a6"]]);export{ph as default};
|