@standardagents/builder 0.18.3 → 0.19.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 +89 -21
- package/dist/built-in-routes.js.map +1 -1
- package/dist/client/CompositionView.js +1 -1
- package/dist/client/ConfirmDialog.vue_vue_type_script_setup_true_lang.js +1 -1
- 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/PromptsView.js +1 -1
- package/dist/client/ProvidersView.js +1 -1
- package/dist/client/ThreadInspectorPane.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/client/ToolsView.js +1 -1
- package/dist/client/assets/index.css +1 -1
- package/dist/client/index.js +2 -2
- package/dist/index.js +17 -2
- package/dist/index.js.map +1 -1
- package/dist/plugin.js +10 -2
- package/dist/plugin.js.map +1 -1
- package/dist/runtime.d.ts +1 -0
- package/dist/runtime.js +7 -0
- package/dist/runtime.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as D,c as O,Y as xn,X as Zn,w as Pe,h as ze,t as Kr,A as st,b as $,e as p,f as m,d as Ie,o as ea,a as At,K as Me,j as Q,q as W,J as I,u as K,F as $e,l as _e,m as ue,s as fe,z as ce,Z as lo,k as xe,ac as Yr,ad as qr,B as lt,g as Gr,O as vt,n as De,P as je,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 io,ah as uo,W as La,ai as es,aj as ts,ak as Ra}from"./vue.js";import{I as tt,g as ns,h as na,i as gt,j as as,u as Kt,k as aa,m as co,n as Mt,o as oa,a as Ue,p as jt,q as fo,t as mo,v as os,w as ho,x as rs,y as ss,z as Oa,A as ls,B as ht,C as Ve,_ as _t,e as rt,f as It,D as is,E as ds,F as Rn,G as us,T as cs}from"./index.js";import{f as Qe,b as nt,a as at,s as fs,u as ms,c as hs,d as po,g as ra,e as sa,A as vo,_ as ps,h as Da,i as vs,C as gs}from"./ThreadInspectorPane.vue_vue_type_script_setup_true_lang.js";import{I as go}from"./plus.js";import{I as On,_ as Et}from"./package.js";import{I as Dn,a as Bn,b as Vn,c as xs,d as xo}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"./timeAgo.js";import"./CopyButton.vue_vue_type_script_setup_true_lang.js";import"./check.js";import"./copy.js";import"./JsonViewer.js";function ws(){const e=D([]),t=D({}),n=D({}),o=D({}),a=D(!0),l=D(null),s=D(""),r=O(()=>{const u=s.value.trim().toLowerCase();return u?e.value.filter(d=>d.name.toLowerCase().includes(u)||d.title.toLowerCase().includes(u)||d.type.toLowerCase().includes(u)):e.value});async function i(){a.value=!0,l.value=null;try{const[u,d,f,g]=await Promise.all([Qe("/agents"),Qe("/models"),Qe("/tools"),Qe("/hooks")]);e.value=(u.agents||[]).sort((y,x)=>y.name.localeCompare(x.name)),t.value=Object.fromEntries((d.models||[]).map(y=>[y.id,y])),n.value=f||{},o.value=Object.fromEntries((g.hooks||[]).map(y=>[y.id,y]))}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=D(null),a=D(null),l=D(null),s=D(null),r=D(null),i=D({}),u=D(!1),d=D(null);let f=0,g=0,y=0;function x(){return{models:e.models.value,toolsCatalog:e.toolsCatalog.value,hooks:e.hooks.value}}const c=O(()=>{const G=a.value;return G?[nt(G,"a",l.value,x()),nt(G,"b",s.value,x())]:[]}),b=O(()=>{const G=c.value;return{promptCount:G.filter(Y=>!!Y.prompt).length,toolCount:G.reduce((Y,P)=>Y+P.tools.length,0),outgoingCount:G.reduce((Y,P)=>Y+P.outgoingAgents.length,0),variableCount:G.reduce((Y,P)=>Y+P.variables.length,0)}});function C(G,Y){return G===f&&o.value===Y}async function S(G){const Y=++y;try{await n.replace({query:{...t.query,agent:G}})}catch{}finally{Y===y&&(y=0)}}function T(){return y>0}async function k(G,Y,P){const M=++g,v=new Set;for(const q of G)for(const V of q.outgoingAgents)V.kind==="subagent"&&v.add(V.name);if(v.size===0){M===g&&C(Y,P)&&(i.value={});return}const _={};await Promise.all([...v].map(async q=>{if(e.agents.value.find(H=>H.name===q&&!H.packed))try{const E=(await Qe(`/agents/${encodeURIComponent(q)}`)).agent,[j,F]=await Promise.all([at(E.side_a_agent_prompt),at(E.side_b_agent_prompt)]);if(M!==g||!C(Y,P))return;_[q]={agentName:q,agent:E,sides:[nt(E,"a",j,x()),nt(E,"b",F,x())]}}catch{}})),M===g&&C(Y,P)&&(i.value=_)}async function A(G,Y=!0){const P=e.agents.value.find(v=>v.id===G||v.name===G);if(!P)return;const M=++f;if(o.value=P.id,r.value={type:"agent",value:P},i.value={},!fs(P)){a.value=null,l.value=null,s.value=null,d.value="Packed agents are not yet supported in the composition browser.",u.value=!1,Y&&S(P.id);return}u.value=!0,d.value=null,Y&&S(P.id);try{const v=await Qe(`/agents/${encodeURIComponent(P.name)}`),[_,q]=await Promise.all([at(v.agent.side_a_agent_prompt),at(v.agent.side_b_agent_prompt)]);if(!C(M,P.id))return;a.value=v.agent,l.value=_,s.value=q,r.value={type:"agent",value:v.agent};const V=[nt(v.agent,"a",_,x()),nt(v.agent,"b",q,x())];k(V,M,P.id)}catch{if(!C(M,P.id))return;d.value="Unable to load the selected agent composition.",a.value=null,l.value=null,s.value=null}finally{C(M,P.id)&&(u.value=!1)}}function N(G){r.value=G}function L(){a.value?r.value={type:"agent",value:a.value}:r.value=null}async function te(){const G=a.value,Y=o.value;if(!G||!Y)return!1;const P=++f;try{const M=await Qe(`/agents/${encodeURIComponent(G.name)}`),[v,_]=await Promise.all([at(M.agent.side_a_agent_prompt),at(M.agent.side_b_agent_prompt)]);if(!C(P,Y))return!1;const q=(l.value?.tools?.length??0)+(s.value?.tools?.length??0),V=(v?.tools?.length??0)+(_?.tools?.length??0),E=M.agent.side_a_agent_prompt!==G.side_a_agent_prompt||M.agent.side_b_agent_prompt!==G.side_b_agent_prompt||q!==V;a.value=M.agent,l.value=v,s.value=_;const j=[nt(M.agent,"a",v,x()),nt(M.agent,"b",_,x())];return k(j,P,Y),E}catch{return!0}}return{selectedAgentId:o,selectedAgentDetail:a,selectedNode:r,sideCompositions:c,subagentCompositions:i,compositionSummary:b,loadingComposition:u,compositionError:d,selectAgent:A,selectInspectorNode:N,deselectNode:L,refreshComposition:te,isRouteSyncing:T}}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 yo(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 bo(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}-${bo(t)}-${yo(t)}${o}`}function ko(e,...t){return`${e}${t.join(Ba)}${Ba}`}function wo(e){return ko(qn("agent",e))}function $o(e,t,n,o,a){return ko(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`,Mo=(e,t)=>`${e}model-${bo(t)}-${yo(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,wt=36,Un=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 c of e.modelUsages){const b=`${c.model.id}|${c.consumerNodeId}`;if(s.has(b))continue;s.add(b);const C=l.get(c.model.id);C?C.push(c):l.set(c.model.id,[c])}const r=new Map;for(const c of e.nodes)r.set(c.id,c);const i=e.width,u=0,d=[],f=e.groups.map(c=>({x:c.x,y:c.y,w:c.width,h:c.height}));function g(c,b){return b.x>=c.x&&b.y>=c.y&&b.x+b.w<=c.x+c.w&&b.y+b.h<=c.y+c.h}function y(c,b,C,S,T=16){const k=Math.min(b,C),A=Math.max(b,C);return S.some(N=>A>N.x-T&&k<N.x+N.w+T&&c>N.y-T&&c<N.y+N.h+T)}function x(c,b,C,S,T=16){const k=Math.min(b,C),A=Math.max(b,C);return S.some(N=>A>N.y-T&&k<N.y+N.h+T&&c>N.x-T&&c<N.x+N.w+T)}for(const[c,b]of l){const C=b.map(E=>({usage:E,node:r.get(E.consumerNodeId)})).filter(E=>!!E.node);if(C.length===0)continue;const S=C.map(E=>Hs(E.node,n)),T=C.map(E=>ft(E.node,n)),k=f.filter(E=>T.every(j=>g(E,j))),A=f.filter(E=>!k.includes(E)),N=b[0].model,L=Mo(t,c),te=n[L],G=te?.w??dn,Y=te?.h??Bs;let P=0,M=0,v;if(C.length===1){const E=C[0],j=ft(E.node,n),F=za(E.node),X=F||E.usage.sideId==="a"?"outboard-left":"outboard-right",pe=j.y+j.h/2-Y/2,se=X==="outboard-left"?j.x-qe-G:j.x+j.w+qe,me=j.x+j.w/2-G/2,z=j.y+j.h+qe,U=new Set(C.map(ne=>ne.node.id)),J=[...d,...e.nodes.filter(ne=>!U.has(ne.id)).map(ne=>ft(ne,n)),...A],le=[se],ie=[pe],ve=[me],ee=[z];for(const ne of J)X==="outboard-left"?le.push(ne.x-qe-G):le.push(ne.x+ne.w+qe),ie.push(ne.y-Y-ct),ie.push(ne.y+ne.h+ct),ve.push(ne.x-G-ct),ve.push(ne.x+ne.w+ct),ee.push(ne.y-Y-ct),ee.push(ne.y+ne.h+ct);let Z=se,h=pe,w=Number.POSITIVE_INFINITY,B=null;const oe=new Set,de=[{mode:X,xs:le,ys:ie},{mode:"below-row",xs:ve,ys:ee}];for(const ne of de)for(const re of ne.xs)for(const be of ne.ys){const ke=`${ne.mode}:${Math.round(re)}:${Math.round(be)}`;if(oe.has(ke)||(oe.add(ke),ne.mode==="outboard-left"&&re+G>j.x-8)||ne.mode==="outboard-right"&&re<j.x+j.w+8)continue;const ge=J.filter(ye=>Hn({x:re,y:be,w:G,h:Y},{x:ye.x,y:ye.y,w:ye.w,h:ye.h})).length,Se=ne.mode==="below-row"?x(j.x+j.w/2,j.y+j.h,be,J):y(j.y+j.h/2,ne.mode==="outboard-left"?re+G:j.x+j.w,ne.mode==="outboard-left"?j.x:re,J),we=ge*1e4+(Se?12e3:0)+Math.abs(re-se)/10+Math.abs(be-(ne.mode==="below-row"?z:pe))+(ne.mode==="below-row"?10:0);if(F&&ne.mode!=="below-row"&&ge===0){const ye=(Se?1e3:0)+Math.abs(re-se)/10+Math.abs(be-pe);(!B||ye<B.penalty)&&(B={x:re,y:be,penalty:ye,mode:ne.mode})}we<w&&(w=we,Z=re,h=be,v=ne.mode)}B&&(Z=B.x,h=B.y,v=B.mode),v||(v=X),P=Z,M=h}else{let E=1/0,j=-1/0,F=1/0,X=-1/0;for(const U of C){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 pe=j-E,se=X-F,me=ja(S.map(U=>U.x)),z=ja(S.map(U=>U.y));if(pe>=se){const U=me-G/2,J=new Set(C.map(B=>B.node.id)),le=e.nodes.filter(B=>!J.has(B.id)).map(B=>ft(B,n)).filter(B=>B.y+B.h>X),ie=A.filter(B=>B.y+B.h>X),ve=[...le,...ie],ee=[U];for(const B of ve)ee.push(B.x-qe-G),ee.push(B.x+B.w+qe);let Z=U,h=1/0;const w=new Set;for(const B of ee){const oe=Math.round(B);if(w.has(oe))continue;w.add(oe);const de=ve.filter(be=>Hn({x:B,y:X+qe,w:G,h:Y},{x:be.x,y:be.y,w:be.w,h:be.h})).length,ne=Math.abs(B-U)/1e3,re=de+ne;re<h&&(h=re,Z=B)}P=Z,M=X+qe,v="below-row"}else{const U=C.every(ve=>za(ve.node)),J=C.filter(ve=>ve.usage.sideId==="a").length,le=C.length-J,ie=!U&&le>=J;P=ie?Math.max(i,j)+Ha:Math.min(u,E)-Ha-G,M=z-Y/2,v=ie?"sidebar-right":"sidebar-left"}}const _=Y+ct,q=8;let V=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}}),...A];for(;V<q&&H.some(E=>Hn({x:P,y:M,w:G,h:Y},E));)M+=_,V++;d.push({x:P,y:M,w:G,h:Y}),o.push({id:L,type:"model",x:P,y:M,width:G,height:Y,placementMode:v,data:N});for(const E of C)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 u=o.get(i.to);u?u.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,u)=>u.id.length-i.id.length);for(const i of r){const u=i.id.endsWith(s)?i.id.slice(0,i.id.length-s.length):i.id;for(const[d,f]of o){const g=a.get(d);if(!g||!f.every(C=>C.startsWith(u)))continue;const y=Math.min(i.x,g.x-l),x=Math.min(i.y,g.y-l),c=Math.max(i.x+i.width,g.x+g.width+l),b=Math.max(i.y+i.height,g.y+g.height+l);i.x=y,i.y=x,i.width=c-y,i.height=b-x}}for(const i of r){const u=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(u)||d.id.length<=i.id.length)continue;const f=Math.min(i.x,d.x),g=Math.min(i.y,d.y),y=Math.max(i.x+i.width,d.x+d.width),x=Math.max(i.y+i.height,d.y+d.height);i.x=f,i.y=g,i.width=y-f,i.height=x-g}}}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 ja(e){if(e.length===0)return 0;let t=0;for(const n of e)t+=n;return t/e.length}function Hn(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 To(e,t,n,o,a,l){const s=[],r=[],i=[],u=[];function d(w){if(!w)return null;const B=l[w];if(B)return B;for(const oe of Object.values(l))if(oe.name===w)return oe;return null}const f=fn(o),g=a[f],y=g?.w??Cs,x=g?.h??Ss,c=0,b=x+Ua;function C(w,B){const oe=a[B];if(oe)return oe;if(w.mode==="human")return{w:Va,h:_s};const de=240,ne=w.variables.length*24,re=w.tools.length*32,be=de+Math.max(ne,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 S=t.filter(w=>w.id==="a"),T=t.filter(w=>w.id==="b");function k(w){return w.map(B=>{const oe=B.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=$o(o,B.id,ke,ge.kind,ge.name),ye=n[ge.name],Te=To(ye.agent,ye.sides,n,we,a,l),Ce=(dn+qe+12)*2;de.push({width:Te.width+wt*2+Ce,height:Te.height+Un+wt,isSubagent:!0,modelReserveLeft:Ce,modelReserveRight:0,subagentName:ge.name,subagentNodeId:fn(we),subagentGroupId:Ts(we),subTree:Te})}else{const we=ln(o,B.id,ke),ye=a[we];de.push({width:ye?.w??(ge.kind==="tool"?As:ge.kind==="prompt"?Ps:ge.kind==="handoff"?Rs:Is),height:ye?.h??(ge.kind==="tool"?Ns:ge.kind==="prompt"?Ls:ge.kind==="handoff"?Os:Es),isSubagent:!1})}}const ne=ia(o,B.id),{w:re,h:be}=C(B,ne);return{side:B,leaves:de,sideH:be,sideW:re,sideNodeId:ne,externalTools:oe}})}const A=k(S),N=k(T),L=new Map,te=new Set;function G(w,B,oe){if(!w)return;const de=`${w.id}|${oe}`;if(te.has(de))return;te.add(de);const ne=L.get(w.id);if(ne){B==="a"?ne.hasLeftConsumer=!0:ne.hasRightConsumer=!0;return}L.set(w.id,{hasLeftConsumer:B==="a",hasRightConsumer:B==="b"})}for(const w of[...A,...N]){G(w.side.model,w.side.id,w.sideNodeId);for(let B=0;B<w.externalTools.length;B++){const oe=w.externalTools[B];oe.kind==="prompt"&&G(d(oe.model),w.side.id,ln(o,w.side.id,B))}for(const B of w.leaves)if(!(!B.isSubagent||!B.subTree))for(const oe of B.subTree.modelUsages)G(oe.model,oe.sideId,oe.consumerNodeId)}function Y(w){if(!w)return!1;const B=L.get(w.id);return!!B?.hasRightConsumer&&!B?.hasLeftConsumer}function P(w,B){if(w.length===0)return{card:{minX:0,maxX:0},leaves:null,full:{minX:0,maxX:0}};let oe=0,de=1/0,ne=-1/0,re=1/0,be=-1/0;for(const ge of w){const{side:Se,leaves:we,sideW:ye,externalTools:Te}=ge,Ce=B==="left"?oe-ye:oe,Je=B==="right"&&Y(Se.model)?dn+qe:0;if(de=Math.min(de,Ce-Je),ne=Math.max(ne,Ce+ye),Te.length>0){const Le=M(Ce,ye,Te,we);for(let Fe=0;Fe<we.length;Fe++){const yt=B==="right"&&Te[Fe]?.kind==="prompt"&&Y(d(Te[Fe]?.model))?dn+qe:0,it=Le[Fe];re=Math.min(re,it.x-yt),be=Math.max(be,it.x+we[Fe].width)}}oe+=(B==="left"?-1:1)*(ye+Zt)}const ke=re!==1/0;return{card:{minX:de,maxX:ne},leaves:ke?{minX:re,maxX:be}:null,full:{minX:ke?Math.min(de,re):de,maxX:ke?Math.max(ne,be):ne}}}function M(w,B,oe,de){const ne=new Array(de.length),re=de.map((ye,Te)=>({index:Te,leaf:ye,tool:oe[Te]})),be=re.filter(ye=>v(ye.tool)),ke=new Set(be.map(ye=>ye.index)),ge=[];be.length>0&&ge.push(_(be,B*3));for(const ye of re)ke.has(ye.index)||ge.push(_([ye],Number.POSITIVE_INFINITY));ge.sort((ye,Te)=>ye.firstIndex-Te.firstIndex);const Se=ge.reduce((ye,Te)=>ye+Te.width,0)+Math.max(0,ge.length-1)*ut;let we=w+B/2-Se/2;for(const ye of ge){for(const Te of ye.positions)ne[Te.index]={x:we+Te.x,yOffset:Te.yOffset};we+=ye.width+ut}return ne}function v(w){return w?.kind==="tool"||w?.kind==="provider"||w?.kind==="mcp"}function _(w,B){const oe=Math.max(...w.map(we=>we.leaf.width),0),de=Number.isFinite(B)?Math.max(B,oe):Number.POSITIVE_INFINITY,ne=[];let re=null;const be=()=>{re&&re.items.length>0&&ne.push(re),re={items:[],width:0,height:0}};be();for(const we of w){re||be();const ye=re.items.length===0?we.leaf.width:re.width+ut+we.leaf.width;re.items.length>0&&ye>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&&ne.push(re);const ke=Math.max(...ne.map(we=>we.width),0),ge=[];let Se=0;for(const we of ne){let ye=(ke-we.width)/2;for(const Te of we.items)ge.push({index:Te.index,x:ye,yOffset:Se}),ye+=Te.leaf.width+ut;Se+=we.height+ut}return{firstIndex:Math.min(...w.map(we=>we.index)),width:ke,height:ne.reduce((we,ye)=>we+ye.height,0)+Math.max(0,ne.length-1)*ut,positions:ge}}const q=P(A,"left"),V=P(N,"right"),H=q.card.maxX-V.card.minX+Zt,E=q.leaves&&V.leaves?q.leaves.maxX-V.leaves.minX+Zt:0,j=Math.max(Ds,H,E),F=Math.max(y/2,j/2-q.full.minX);let X=b;function pe(w,B,oe,de,ne,re,be){const ke=ln(o,B,be);if(!de.isSubagent||!de.subTree){if(s.push({id:ke,type:"tool",x:ne,y:re,width:de.width,height:de.height,data:oe,sideId:B}),r.push({id:`${w}-to-${ke}`,from:w,to:ke,sideId:B,toolKind:oe.kind}),oe.kind==="prompt"){const Ce=d(oe.model);Ce&&u.push({consumerNodeId:ke,sideId:B,model:Ce})}X=Math.max(X,re+de.height);return}const ge=de.subTree,Se=ne+(de.modelReserveLeft??0),we=re+Un;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)u.push(Ce);r.push({id:`${w}-to-${de.subagentNodeId}`,from:w,to:de.subagentNodeId,sideId:B,toolKind:oe.kind});const ye=oe.config||{},Te=ye.resumable;i.push({id:de.subagentGroupId,label:n[de.subagentName]?.agent.title||de.subagentName,x:Se-wt,y:re,width:ge.width+wt*2,height:ge.height+Un+wt,sideId:B,subagent:{blocking:!!ye.blocking,resumable:!!Te,multiInstance:!!Te&&typeof Te=="object"&&(Te.max_instances===null||(Te.max_instances??0)>1),immediate:!!ye.immediate}}),X=Math.max(X,we+ge.height+wt)}function se(w,B){let oe=B==="left"?F-j/2:F+j/2;for(const de of w){const{side:ne,leaves:re,sideH:be,sideW:ke,sideNodeId:ge,externalTools:Se}=de,we=Se.filter(v).length,ye=we>5?(we-5)*10:0,Te=b+be+Ua+ye,Ce=B==="left"?oe-ke:oe;if(s.push({id:ge,type:"side",x:Ce,y:b,width:ke,height:be,data:ne,sideId:ne.id}),r.push({id:`${f}-to-${ge}`,from:f,to:ge,sideId:ne.id}),ne.model&&u.push({consumerNodeId:ge,sideId:ne.id,model:ne.model}),X=Math.max(X,b+be),Se.length>0){const Je=M(Ce,ke,Se,re);for(let Le=0;Le<Se.length;Le++){const Fe=Je[Le];pe(ge,ne.id,Se[Le],re[Le],Fe.x,Te+Fe.yOffset,Le)}}oe+=(B==="left"?-1:1)*(ke+Zt)}}se(A,"left"),se(N,"right");const me=new Set(Object.keys(e.env||{})),z=new Set,U=t.flatMap(w=>w.variables).filter(w=>me.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:F-y/2,y:c,width:y,height:x,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,h=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:u,width:Z,height:h}}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=wo(e.id||e.name),s=To(e,t,n,l,o,a),r=[...s.nodes],i=[...s.edges],u=[...s.groups],{modelNodes:d,modelEdges:f}=Vs(s,l,o);r.push(...d),i.push(...f),Us(u,d,f);let g=0,y=0,x=s.width,c=s.height;for(const b of d)b.x<g&&(g=b.x),b.y<y&&(y=b.y),b.x+b.width>x&&(x=b.x+b.width),b.y+b.height>c&&(c=b.y+b.height);for(const b of u)b.x<g&&(g=b.x),b.y<y&&(y=b.y),b.x+b.width>x&&(x=b.x+b.width),b.y+b.height>c&&(c=b.y+b.height);if(g<0||y<0){const b=-Math.min(g,0),C=-Math.min(y,0);for(const S of r)S.x+=b,S.y+=C;for(const S of u)S.x+=b,S.y+=C;x+=b,c+=C}return{nodes:r,edges:i,groups:u,bounds:{x:0,y:0,width:x,height:c}}}function js(e,t,n,o,a){return O(()=>zs(e.value,t.value,n.value,o.value,a.value))}function Fs(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})},u=U=>{s.replace({path:l.path,query:{...l.query,inspector:U},hash:l.hash})},d=r(),f=D(d),g=D(null),y="__draft_new_thread__",x=D(!1);let c=!1;Pe(f,U=>{if(c||U===y)return;const J=r();U!==J&&i(U)}),Pe(()=>l.query.thread,U=>{if(c)return;const J=typeof U=="string"?U:null;if(J&&g.value&&!g.value.has(J)){c=!0,f.value=null,i(null),ze(()=>{c=!1});return}J!==f.value&&(f.value=J)},{immediate:!0});const b=D(null),C=D(null),S=D(null),T=D(null),k=D(null),A=D(null),N=D(null),L=D(!1),te=D(null),{thread:G}=ms(O(()=>f.value===y?null:f.value));let Y=!1;Pe(t,()=>{if(!Y){Y=!0;return}c=!0,f.value=null,b.value=null,C.value=null,S.value=null,T.value=null,k.value=null,A.value=null,N.value=null,ze(()=>{c=!1})}),Pe(f,()=>{b.value=null,C.value=null,S.value=null,T.value=null,k.value=null});const P=U=>{A.value=U,N.value=U},M=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:G,selectedMessageId:b,selectedLogId:C,selectedEffectId:S,selectedEffectRef:T,highlightedWorkblockLogId:k,hoveredLogId:A,hoveredWorkblockLogId:N,showThreadModal:L,editingThread:te,draftThreadId:y,isCreatingThreadDraft:x,handleThreadSelect:U=>{f.value=U},handleThreadsLoaded:(U,J)=>{c=!1,g.value=J?new Set(J):null,f.value&&g.value&&!g.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(b.value=U,le){S.value=le.id??null,T.value=le,C.value=null,k.value=null,u("effects"),await ze(),a.value?.selectEffectByReference(le);return}if(S.value=null,T.value=null,!J){C.value=null,k.value=null;return}const ie=a.value;if(!ie){C.value=J,k.value=J;return}const ve=!ie.hasLog(J);if(ve&&ie.setLoadingForLog(!0),C.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:P,handleLogClick:U=>{C.value=U,S.value=null,T.value=null,b.value=null;const J=o.value;if(!J){k.value=U;return}if(J.scrollToLogId(U)){k.value=U;return}const le=M(U);le&&le!==U&&J.scrollToLogId(le),k.value=le??U},handleLogHover:U=>{if(A.value=U,!U){N.value=null;return}N.value=M(U)??U},handleLogsLoaded:U=>{U&&(C.value=U)},handleLogsDeleted:U=>{a.value?.removeLogsByIds(U)},handleThreadDeleted:U=>{f.value=null,b.value=null,C.value=null,S.value=null,T.value=null,k.value=null,A.value=null,N.value=null,n.value?.refetch()},handleEditThread:()=>{G.value&&(te.value=G.value,L.value=!0)},handleCreateThread:()=>{te.value=null,L.value=!1,x.value=!0,f.value=y},handleThreadCreated:U=>{x.value=!1,n.value?.refetch(),f.value=U,ze(()=>o.value?.focusComposer())},handleCancelCreateThread:()=>{x.value=!1,f.value===y&&(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=D({}),n=D(!1),o=D(null),a=O(()=>Xs(Kr(e))),l=O(()=>a.value.join(""));let s=0;async function r(i={}){const u=++s,d=a.value;if(d.length===0){t.value={},o.value=null,n.value=!1;return}const f={...t.value},g=i.force?d:d.filter(y=>f[y]===void 0);if(g.length===0){o.value=null,n.value=!1;return}n.value=!0,o.value=null;try{const y=await Promise.all(g.map(async x=>{try{const c=await Qe(`/threads?agent_id=${encodeURIComponent(x)}&limit=1`);return[x,c.total??0]}catch{return[x,0]}}));if(u!==s)return;for(const[x,c]of y)f[x]=c;t.value=f}catch{u===s&&(o.value="Unable to load thread counts.")}finally{u===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]=[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 Gs=st({name:"lucide-package-open",render:qs}),Ws={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Qs(e,t){return p(),$("svg",Ws,[...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 Js=st({name:"lucide-ellipsis-vertical",render:Qs}),Zs={class:"px-4 py-3 border-b border-neutral-200 dark:border-neutral-800"},el={class:"flex items-center justify-between"},tl={class:"flex items-center gap-2"},nl={key:0,class:"text-xs font-mono text-neutral-500 dark:text-neutral-400"},al={class:"flex items-center gap-2 border-b border-neutral-200 px-5 py-2.5 dark:border-neutral-800"},ol={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"},rl=["value"],sl={class:"flex shrink-0 overflow-hidden rounded-md border border-neutral-200 text-[11px] dark:border-neutral-700"},ll=["onClick"],il={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"},dl={key:0,class:"flex-1 px-5 py-5 text-sm text-neutral-500 dark:text-neutral-400"},ul={key:1,class:"flex-1 px-5 py-5 text-sm text-neutral-500 dark:text-neutral-400"},cl={key:2,class:"flex-1 overflow-y-auto"},fl=["data-agent-id","onClick"],ml={class:"flex items-center justify-center"},hl=["src"],pl={class:"flex min-w-0 items-center gap-2"},vl=["onClick","aria-label"],gl={key:0,class:"text-[11px] font-mono"},xl={class:"min-w-0"},yl={key:0,class:"relative flex items-center justify-center","data-agent-menu":""},bl=["aria-label","aria-expanded","onClick"],kl={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"},wl=["onClick"],$l=["onClick"],Ml=["onClick"],Tl=["onClick"],Cl=["onClick"],Sl=Ie({__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=D(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)),At(()=>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 u(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"]))},[m("div",Zs,[m("div",el,[m("div",tl,[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(),$("span",nl," ("+K(e.agents.length)+") ",1)):W("",!0)])])]),m("div",al,[m("label",ol,[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]=g=>d.$emit("update:search",g.target.value)),class:"w-full bg-transparent outline-none placeholder:text-neutral-400"},null,40,rl)]),m("div",sl,[(p(),$($e,null,_e(r,g=>m("button",{key:g.value,type:"button",class:ue(["px-2.5 py-1.5 font-medium transition-colors",e.typeFilter===g.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:y=>d.$emit("update:typeFilter",g.value)},K(g.label),11,ll)),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]=g=>d.$emit("add"))},[Q(I(go),{class:"h-3.5 w-3.5"}),f[7]||(f[7]=fe(" New Agent ",-1))]))]),m("div",il,[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]=g=>d.$emit("sort","title"))},[f[8]||(f[8]=fe(" Title ",-1)),e.sortBy==="title"&&e.sortDir==="asc"?(p(),ce(I(Dn),{key:0,class:"h-3 w-3"})):e.sortBy==="title"&&e.sortDir==="desc"?(p(),ce(I(Bn),{key:1,class:"h-3 w-3"})):(p(),ce(I(Vn),{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]=g=>d.$emit("sort","threads"))},[f[9]||(f[9]=fe(" Threads ",-1)),e.sortBy==="threads"&&e.sortDir==="asc"?(p(),ce(I(Dn),{key:0,class:"h-3 w-3"})):e.sortBy==="threads"&&e.sortDir==="desc"?(p(),ce(I(Bn),{key:1,class:"h-3 w-3"})):(p(),ce(I(Vn),{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]=g=>d.$emit("sort","type"))},[f[10]||(f[10]=fe(" Type ",-1)),e.sortBy==="type"&&e.sortDir==="asc"?(p(),ce(I(Dn),{key:0,class:"h-3 w-3"})):e.sortBy==="type"&&e.sortDir==="desc"?(p(),ce(I(Bn),{key:1,class:"h-3 w-3"})):(p(),ce(I(Vn),{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(),$("div",dl," Loading agents... ")):e.agents.length===0?(p(),$("div",ul," No agents match this search. ")):(p(),$("div",cl,[(p(!0),$($e,null,_e(e.agents,g=>(p(),$("div",{key:g.id,"data-agent-id":g.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===g.id?"agents-surface-selected agents-border-selected":"agents-surface-hover"]),onClick:y=>d.$emit("select",g.id)},[m("div",ml,[m("img",{src:g.icon||I(na)(g.id),alt:"",class:"h-9 w-9 rounded-md object-cover"},null,8,hl)]),m("div",pl,[g.packed?(p(),ce(I(On),{key:0,class:"h-4 w-4 shrink-0 text-blue-500",title:`Packed agent from ${g.packageId}`},null,8,["title"])):W("",!0),m("span",{class:ue(["truncate font-medium",e.selectedId===g.id?"agents-text-selected":"text-neutral-900 dark:text-neutral-100"])},K(g.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===g.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300",e.threadCounts[g.id]>0?"":"opacity-30"]]),onClick:Me(y=>s("view-threads",g.id),["stop"]),title:"View threads","aria-label":`View threads for ${g.title}`},[Q(I(gt),{class:"h-3.5 w-3.5"}),e.threadCounts[g.id]>0?(p(),$("span",gl,K(e.threadCounts[g.id]),1)):W("",!0)],10,vl),m("div",{class:ue(e.selectedId===g.id?"agents-text-selected-muted":"text-neutral-500 dark:text-neutral-400")},K(i(g.type)),3),m("div",xl,[m("div",{class:ue(["truncate",e.selectedId===g.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===g.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},"A",2),fe(" "+K(u(g,"a")),1)],2),m("div",{class:ue(["truncate",e.selectedId===g.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===g.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},"B",2),fe(" "+K(u(g,"b")),1)],2)]),e.readonly?W("",!0):(p(),$("div",yl,[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 ${g.title}`,"aria-expanded":n.value===g.id,onClick:Me(y=>o(g.id),["stop"])},[Q(I(Js),{class:"h-4 w-4"})],8,bl),Q(lo,{"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:xe(()=>[n.value===g.id?(p(),$("div",kl,[g.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(y=>{d.$emit("edit",g),a()},["stop"])},[Q(I(as),{class:"h-4 w-4 text-neutral-400"}),f[14]||(f[14]=fe(" Edit ",-1))],8,wl)),g.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(y=>{d.$emit("pack",g),a()},["stop"])},[Q(I(On),{class:"h-4 w-4 text-neutral-400"}),f[15]||(f[15]=fe(" Pack ",-1))],8,$l)),g.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(y=>{d.$emit("unpack",g),a()},["stop"])},[Q(I(Gs),{class:"h-4 w-4 text-neutral-400"}),f[16]||(f[16]=fe(" Unpack ",-1))],8,Ml)):W("",!0),g.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(y=>{d.$emit("publish",g),a()},["stop"])},[Q(I(On),{class:"h-4 w-4 text-neutral-400"}),f[17]||(f[17]=fe(" Publish Package ",-1))],8,Tl)):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(y=>{d.$emit("delete",g),a()},["stop"])},[Q(I(xs),{class:"h-4 w-4"}),fe(" "+K(g.packed?"Delete Package":"Delete"),1)],8,Cl)])):W("",!0)]),_:2},1024)]))],10,fl))),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 _l(e,t,n,o,a){const l=D(!1),s=D(new Map);let r=null,i=null,u=null,d=null,f="",g="",y=null;const x=new Map;function c(){return e.value.nodes.filter(q=>q.type!=="hook").map(q=>q.id)}function b(){const q=c();return q.length>0&&q.every(V=>s.value.has(V))}function C(){return Array.from(s.value.entries()).sort(([q],[V])=>q.localeCompare(V)).map(([q,V])=>`${q}:${V.w}x${V.h}:${V.modelAnchorY??""}:${zn(V.toolColumns)}`).join("|")}function S(){return new Set(e.value.nodes.map(q=>q.id))}function T(){r&&clearTimeout(r),i&&clearTimeout(i),u&&clearTimeout(u),r=null,i=null,u=null}function k(){return typeof ResizeObserver>"u"?null:y||(y=new ResizeObserver(q=>{for(const V of q)for(const[H,E]of x)if(E===V.target){v(H,E);break}}),y)}function A(q,V){const H=x.get(q);if(H===V)return;const E=k();H&&E?.unobserve(H),x.set(q,V),E?.observe(V)}function N(){const q=S();for(const[V,H]of x)q.has(V)||(y?.unobserve(H),x.delete(V),s.value.delete(V))}function L(){ze(()=>{N();for(const[q,V]of x)v(q,V)})}function te(){u&&clearTimeout(u),u=setTimeout(()=>{t.value||l.value||e.value.nodes.length===0||!b()||ze(()=>{l.value=!0,n(P())})},800)}Pe(t,q=>{if(q){l.value=!1,s.value.clear(),g="",a?.(),T();return}e.value.nodes.length>0&&(L(),te())}),Pe(()=>e.value.nodes.map(q=>q.id).join(","),q=>{q!==f&&(f=q,q&&(l.value=!1,g="",a?.(),T(),L(),te()))});const G=O(()=>e.value.nodes.map(q=>{const V=s.value.get(q.id);return V?{...q,width:V.w,height:V.h}:q})),Y=O(()=>{const q={};for(const[V,H]of s.value)(H.modelAnchorY!==void 0||H.toolColumns)&&(q[V]={modelAnchorY:H.modelAnchorY,toolColumns:H.toolColumns});return q});function P(){const q=G.value,V=e.value.groups;if(q.length===0)return e.value.bounds;let H=1/0,E=1/0,j=-1/0,F=-1/0;for(const X of q)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 V)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 M(){d&&cancelAnimationFrame(d),d=requestAnimationFrame(()=>{const q=C();q!==g&&(g=q,o(Object.fromEntries(s.value))),!(t.value||!b())&&(r&&clearTimeout(r),r=setTimeout(()=>{t.value||!b()||(u&&clearTimeout(u),u=null,l.value=!0,ze(()=>{n(P()),i&&clearTimeout(i),i=setTimeout(()=>n(P()),220)}))},180))})}function v(q,V){ze(()=>{const H=V.offsetWidth,E=V.offsetHeight;if(H<=0||E<=0)return;const j=V.getBoundingClientRect(),F=H>0&&j.width>0?j.width/H:1,X=E>0&&j.height>0?j.height/E:1;let pe;const se=V.querySelector("[data-model-anchor]");if(se&&j.height>0){const le=se.getBoundingClientRect();le.height>0&&(pe=jn(le.top+le.height/2-j.top,X))}let me;const z=V.querySelectorAll("[data-tool-column]");if(z.length>0&&j.width>0){me={};for(const le of z){const ie=le.dataset.toolColumn;if(!ie)continue;const ve=le.getBoundingClientRect();me[ie]={left:jn(ve.left-j.left,F),width:jn(ve.width,F)}}}const U=s.value.get(q),J=U?.w!==H||U?.h!==E;if(!(U?.w===H&&U?.h===E&&U?.modelAnchorY===pe&&zn(U?.toolColumns)===zn(me))){if(s.value.set(q,{w:H,h:E,modelAnchorY:pe,toolColumns:me}),l.value&&!J){const le=C();le!==g&&(g=le,o(Object.fromEntries(s.value)));return}M()}})}function _(q,V){A(q,V),v(q,V)}return At(()=>{r&&clearTimeout(r),i&&clearTimeout(i),u&&clearTimeout(u),d&&cancelAnimationFrame(d),y?.disconnect(),y=null,x.clear()}),{layoutStable:l,measurements:s,nodesWithMeasuredSizes:G,nodeMetrics:Y,measureNode:_,measuredBounds:P}}function Il(e){const t=D(null);let n=0,o="",a=0,l="",s=null,r=null;function i(g){const y=e.measurements.value.get(g.id);return{x:g.x,y:g.y,width:y?.w??g.width,height:y?.h??g.height}}function u(g){if(!e.shouldHandleClick())return;const y=g.target;y instanceof Element&&(y.closest("[data-canvas-node]")||y.closest("[data-canvas-group]"))||(t.value=null,e.onDeselect())}function d(g,y){if(!e.shouldHandleClick())return;const x=g.target;if(x instanceof Element&&x.closest("[data-canvas-node]"))return;const c=Date.now(),b=c-n<350&&o===y.id;if(n=c,o=y.id,!b){e.focusNode(y);return}const C=e.containerRef.value;if(!C)return;const S=C.getBoundingClientRect(),T=40,k=(S.width-T*2)/y.width,A=(S.height-T*2)/y.height;e.focusNode(y,Math.min(k,A,1.5))}function f(g){if(!e.shouldHandleClick())return;e.selectedNodeId.value||e.saveViewport(),e.onSelectNode(g);const y=i(g);t.value=y;const x=Date.now(),c=x-a<350&&l===g.id;a=x,l=g.id,e.focusNode(y,c?1.2:void 0)}return Pe(e.selectedNodeId,(g,y)=>{if(!g){t.value=null,y&&e.restoreViewport();return}const x=e.layout.value.nodes.find(c=>c.id===g);x&&(t.value=i(x))}),ea(()=>{s=new ResizeObserver(()=>{r&&clearTimeout(r),r=setTimeout(()=>{const g=t.value,y=e.containerRef.value;if(!g||!y||!e.layoutStable.value)return;const x=y.getBoundingClientRect();let c=e.viewportState.value.scale;const b=60;if(g.width>0&&g.height>0){const C=(x.width-b*2)/g.width,S=(x.height-b*2)/g.height,T=Math.min(C,S);c>T&&T>.1&&(c=T)}e.focusNode(g,c)},320)}),e.containerRef.value&&s.observe(e.containerRef.value)}),At(()=>{s?.disconnect(),r&&clearTimeout(r)}),{handleCanvasClick:u,handleGroupClick:d,handleNodeSelect:f}}const en=6,El=250;function Al(e,t={}){const{minScale:n=.1,maxScale:o=2.5,padding:a=80,panPadding:l=a}=t,s=D({x:0,y:0,scale:1}),r=D(!1),i=D(!1),u={x:0,y:0,viewX:0,viewY:0},d={x:0,y:0,time:0};let f=null,g=!1,y=0,x=null,c=null,b=null;const C=150;function S(){i.value=!0,c&&clearTimeout(c),c=setTimeout(()=>{i.value=!1,c=null},C)}let T=null,k=!1,A=!1,N=null;function L(){k=!0,A=!0}function te(){x&&clearTimeout(x),x=setTimeout(()=>{const{x:h,y:w,scale:B}=s.value,oe=Math.round(h/B)*B,de=Math.round(w/B)*B;(oe!==h||de!==w)&&(s.value=v({x:oe,y:de,scale:B}))},120)}const G=O(()=>{const{x:h,y:w,scale:B}=s.value;return i.value?{transform:`translate3d(${h}px, ${w}px, 0) scale(${B})`,transformOrigin:"0 0",willChange:"transform"}:{transform:`translate3d(${h/B}px, ${w/B}px, 0)`,zoom:B,transformOrigin:"0 0",willChange:"transform"}}),Y=O(()=>Math.round(s.value.scale*100));function P(h){return Math.min(o,Math.max(n,h))}function M(h,w,B){return Math.min(B,Math.max(w,h))}function v(h){const w=P(h.scale),B=e.value,oe=N;if(!B||!oe||oe.width<=0||oe.height<=0)return{...h,scale:w};const de=B.getBoundingClientRect();if(de.width<=0||de.height<=0)return{...h,scale:w};const ne=Math.max(0,l)/w,re=Math.max(0,l)/w,be=(de.width/2-h.x)/w,ke=(de.height/2-h.y)/w,ge=M(be,oe.x-ne,oe.x+oe.width+ne),Se=M(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 _(h,w=!1){s.value=v(h),w&&te()}function q(h,w,B){const oe=P(h),de=s.value,ne=oe/de.scale;_({x:w-(w-s.value.x)*ne,y:B-(B-s.value.y)*ne,scale:oe},!0)}function V(h){const w=e.value;if(w){if(h.ctrlKey||h.metaKey){h.preventDefault(),h.stopPropagation?.(),L(),S();const B=w.getBoundingClientRect(),oe=h.clientX-B.left,de=h.clientY-B.top,ne=Math.min(Math.abs(h.deltaY),10)/10,be=1+(h.deltaY>0?-1:1)*.03*ne;q(s.value.scale*be,oe,de);return}h.preventDefault(),h.stopPropagation?.(),L(),S(),_({...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,u.x=h.clientX,u.y=h.clientY,u.viewX=s.value.x,u.viewY=s.value.y,d.x=h.clientX,d.y=h.clientY,d.time=Date.now(),g=!1)}function E(h){if(f!==h.pointerId)return;const w=h.clientX-d.x,B=h.clientY-d.y,oe=w*w+B*B;!r.value&&oe>en*en&&(r.value=!0,g||(h.currentTarget.setPointerCapture(h.pointerId),g=!0)),r.value&&(S(),_({...s.value,x:u.viewX+(h.clientX-u.x),y:u.viewY+(h.clientY-u.y)}))}function j(h){if(f!==h.pointerId)return;const w=h.clientX-d.x,B=h.clientY-d.y,oe=w*w+B*B,de=Date.now()-d.time<=El&&oe<=en*en;r.value&&L(),de||(y=Date.now()+32),r.value=!1,f=null,g&&(h.currentTarget?.releasePointerCapture(h.pointerId),g=!1),te()}function F(){return Date.now()>=y}function X(){const h=e.value;if(!h)return{cx:0,cy:0};const w=h.getBoundingClientRect();return{cx:w.width/2,cy:w.height/2}}function pe(){L(),S();const{cx:h,cy:w}=X();q(s.value.scale+.1,h,w)}function se(){L(),S();const{cx:h,cy:w}=X();q(s.value.scale-.1,h,w)}function me(h,w={}){N=h.width>0&&h.height>0?{...h}:null;const B=e.value;if(!B||h.width===0||h.height===0||!w.force&&A)return;const oe=B.getBoundingClientRect(),de=(oe.width-a*2)/h.width,ne=(oe.height-a*2)/h.height,re=P(Math.min(de,ne,1));_({x:(oe.width-h.width*re)/2-h.x*re,y:(oe.height-h.height*re)/2-h.y*re,scale:re}),A=!1}function z(){A=!1}function U(){_({x:0,y:0,scale:1})}function J(h){N=h&&h.width>0&&h.height>0?{...h}:null,N&&(s.value=v(s.value))}function le(){T={...s.value},k=!1}function ie(){const h=T;T=null,!(!h||k)&&ve(h)}function ve(h,w){x&&(clearTimeout(x),x=null);const B={...s.value},oe=300,de=performance.now();b&&cancelAnimationFrame(b);function ne(re){const be=Math.min((re-de)/oe,1),ke=1-Math.pow(1-be,3);S(),s.value=v({x:B.x+(h.x-B.x)*ke,y:B.y+(h.y-B.y)*ke,scale:B.scale+(h.scale-B.scale)*ke}),be<1?b=requestAnimationFrame(ne):(s.value=v(w?w():h),b=null)}b=requestAnimationFrame(ne)}function ee(){x&&(clearTimeout(x),x=null),c&&(clearTimeout(c),c=null),b&&(cancelAnimationFrame(b),b=null),f=null,g=!1,r.value=!1,i.value=!1}Yr()&&qr(ee);function Z(h,w){const B=e.value;if(!B)return;const oe=P(w??s.value.scale),de=h.x+h.width/2,ne=h.y+h.height/2;function re(){const be=B.getBoundingClientRect();return{x:be.width/2-de*oe,y:be.height/2-ne*oe,scale:oe}}ve(re(),re)}return{state:s,isPanning:r,transformStyle:G,scalePercent:Y,onWheel:V,onPointerDown:H,onPointerMove:E,onPointerUp:j,shouldHandleClick:F,zoomIn:pe,zoomOut:se,fitToView:me,resetAutoFitLock:z,focusNode:Z,resetView:U,setContentBounds:J,saveViewport:le,restoreViewport:ie}}function Nl(e){return!e.hasAgent||e.hasError?!1:e.loadingComposition?!0:e.hasRevealedStableDiagram?!1:!e.layoutStable||e.loadingAsyncDetail}const Pl={class:"pointer-events-none absolute inset-0 h-full w-full","aria-hidden":"true"},Ll=Ie({__name:"CanvasGrid",setup(e){return(t,n)=>(p(),$("svg",Pl,[...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,ot=8,Rl=12,Re=10,Ol=10,an=16,on=24,Dl=38,Xa=44,Bl=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},(u,d)=>s+d*i)}function Vl(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 Ul(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 Tt(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,u=r.x+r.width+Ee,d=r.y-Ee,f=r.y+r.height+Ee;if(e>=d&&e<=f&&s>=i&&l<=u)return r}return null}function St(e,t,n,o,a,l=Ee,s=Ee){const r=Math.min(t,n),i=Math.max(t,n);for(const u of o){if(a.has(u.id))continue;const d=u.x-l,f=u.x+u.width+l,g=u.y-s,y=u.y+u.height+s;if(e>=d&&e<=f&&i>=g&&r<=y)return u}return null}function Gn(e,t,n,o,a,l,s){const r=Math.min(o,a),i=Math.max(o,a);let u=e;for(let d=0;d<6;d++){const f=Ze(u,t,n,l,s);if(!f)return u;const g=f.y-Ee-Ge,y=f.y+f.height+Ee+Ge,x=Math.abs(g-u)<=Math.abs(y-u)?g:y;u=Math.max(r-200,Math.min(i+200,x))}return u}function hn(e,t,n,o,a,l,s,r,i){let u=r<0?Math.min(e,i-1):Math.max(e,i+1);for(let d=0;d<6;d++){const f=Ze(u,t,n,l,s);if(!f)return u;u=r<0?f.y-Ee-Ge:f.y+f.height+Ee+Ge}return u}function Co(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n);return So(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 u=i.y-l;i.y+i.height+l<e||u>t||s.push([i.x-a,i.x+i.width+a])}if(s.length===0)return s;s.sort((i,u)=>i[0]-u[0]);const r=[s[0]];for(let i=1;i<s.length;i++){const u=r[r.length-1],d=s[i];d[0]<=u[1]?u[1]=Math.max(u[1],d[1]):r.push(d)}return r}function So(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 u=da(Math.min(t,n),Math.max(t,n),o,a,r,i);if(u.length===0)return e;let d=l<0?Math.min(e,s-1):Math.max(e,s+1);for(let f=0;f<u.length;f++){const g=u.find(([y,x])=>d>=y&&d<=x);if(!g)return d;d=l<0?g[0]-1:g[1]+1}return d}function qa(e,t){return e<=1?[0]:Array.from({length:e},(n,o)=>o*t)}function _o(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 _o(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 Hl(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 zl(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 jl(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 Fl(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 Xl(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&&!St(e,t,o,a,l))return ca(e,t,o);const r=!Ze(t,e,n,a,l)&&!St(n,t,o,a,l),i=!St(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 Kl(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 Io(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=Io(o,`segment-${a}`);return l?t.some(s=>n.has(s.id)?!1:Kl(l,s)):!1})}function Yl(e){const t=[];for(const n of e)n.segments.forEach((o,a)=>{const l=Io(o,`edge:${n.id}:${a}`);l&&t.push(l)});return t}function Fn(e,t,n,o,a){const l=[...un(e,t,n),...Ul(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"?Dl: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 u=i.y-Ee,d=i.y+i.height+Ee;if(!(t<u||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 ql(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,Rl),g=r+d*Math.max(0,f);St(g,s,n,a,l,ot,ot)||i.push(g)}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,ot,ot))}return Array.from(new Set(i.map(d=>Math.round(d*1e3)/1e3))).reduce((d,f)=>{const g=Ze(n,d,o,a,l),y=Ze(n,f,o,a,l);return!!y!=!!g?y?d:f:Math.abs(f-r)<Math.abs(d-r)?f:d})}function Gl(e,t,n,o,a,l,s,r){const i=t.x,u=t.y,d=o.x,f=o.y,g=Xl(i,u,d,f,s,r,"horizontal");if(g&&g.segments.length===1&&!Wa(g.segments,s,r))return g;const y=t.side==="left"?-1:1,c=pn(e,u,y,s,r,14),b=i+y*c,C=q=>!Ze(u,i,q,s,r),S=Ft(b,u,f,s,r,y,i);if((d-i)*y>=0&&Math.abs(S-i)>1&&Math.abs(S-d)>1&&C(S)&&!St(S,u,f,s,r)&&!Ze(f,S,d,s,r)){const q=Fl(i,u,S,d,f);if(!Wa(q.segments,s,r))return q}let k=Gn(a,b,d,u,f,s,r),A=Ft(b,u,k,s,r,y,i);C(A)||(A=C(b)?b:i),k=Gn(a,A,d,u,f,s,r);const N=Math.abs(A-i),L=o.side==="left"?n.x-(Be+24):n.x+n.width+Be+24,te=l??Co(L,k,f,s,r),G=A>i?1:-1,Y=k>u?1:-1,P=te>A?1:-1,M=f>k?1:-1,v=d>te?1:-1,_=Math.min(Oe,Math.abs(N)/2||Oe,Math.abs(k-u)/2||Oe,Math.abs(te-A)/2||Oe,Math.abs(f-k)/2||Oe,Math.abs(d-te)/2||Oe);return N<2?{d:[`M ${i} ${u}`,`L ${i} ${k-_*Y}`,`Q ${i} ${k} ${i+_*P} ${k}`,`L ${te-_*P} ${k}`,`Q ${te} ${k} ${te} ${k+_*M}`,`L ${te} ${f-_*M}`,`Q ${te} ${f} ${te+_*v} ${f}`,`L ${d} ${f}`].join(" "),segments:[{orientation:"vertical",x1:i,y1:u,x2:i,y2:k},{orientation:"horizontal",x1:i,y1:k,x2:te,y2:k},{orientation:"vertical",x1:te,y1:k,x2:te,y2:f},{orientation:"horizontal",x1:te,y1:f,x2:d,y2:f}]}:{d:[`M ${i} ${u}`,`L ${A-_*G} ${u}`,`Q ${A} ${u} ${A} ${u+_*Y}`,`L ${A} ${k-_*Y}`,`Q ${A} ${k} ${A+_*P} ${k}`,`L ${te-_*P} ${k}`,`Q ${te} ${k} ${te} ${k+_*M}`,`L ${te} ${f-_*M}`,`Q ${te} ${f} ${te+_*v} ${f}`,`L ${d} ${f}`].join(" "),segments:[{orientation:"horizontal",x1:i,y1:u,x2:A,y2:u},{orientation:"vertical",x1:A,y1:u,x2:A,y2:k},{orientation:"horizontal",x1:A,y1:k,x2:te,y2:k},{orientation:"vertical",x1:te,y1:k,x2:te,y2:f},{orientation:"horizontal",x1:te,y1:f,x2:d,y2:f}]}}function Wl(e,t,n,o,a,l,s,r){const i=t.x,u=t.y,d=n.x,f=n.y,g=t.side==="left"?-1:1,y=pn(e,u,g,s,r,14),x=i+g*y,c=a??Ft(x,u,o,l,r,g,i,ot,ot),b=a!==null?o:hn(o,c,d,u,f,s,r,f>=u?1:-1,u),C=Math.abs(c-i),S=c>i?1:-1,T=b>u?1:-1,k=d>c?1:-1,A=f>b?1:-1,N=Math.min(Oe,Math.abs(C)/2||Oe,Math.abs(b-u)/2||Oe,Math.abs(d-c)/2||Oe,Math.abs(f-b)/2||Oe);return C<2?{d:[`M ${i} ${u}`,`L ${i} ${b-N*T}`,`Q ${i} ${b} ${i+N*k} ${b}`,`L ${d-N*k} ${b}`,`Q ${d} ${b} ${d} ${b+N*A}`,`L ${d} ${f}`].join(" "),segments:segmentsViaMidY(i,u,d,f,b)}:{d:[`M ${i} ${u}`,`L ${c-N*S} ${u}`,`Q ${c} ${u} ${c} ${u+N*T}`,`L ${c} ${b-N*T}`,`Q ${c} ${b} ${c+N*k} ${b}`,`L ${d-N*k} ${b}`,`Q ${d} ${b} ${d} ${b+N*A}`,`L ${d} ${f}`].join(" "),segments:[{orientation:"horizontal",x1:i,y1:u,x2:c,y2:u},{orientation:"vertical",x1:c,y1:u,x2:c,y2:b},{orientation:"horizontal",x1:c,y1:b,x2:d,y2:b},{orientation:"vertical",x1:d,y1:b,x2:d,y2:f}]}}function Ql(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,u=(n?n.x+n.width/2:r)>=r?"right":"left";return{side:u,x:u==="right"?e.x+e.width:e.x,y:pt(e,t)}}if(n?.type==="model"&&Jl(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 Jl(e){return e.type==="prompt"||e.type==="side"&&e.data.mode==="ai"||e.type==="tool"&&e.data.kind==="prompt"}const We=8,vn=6,Zl=12,Qa=6;function Ye(e){return e.x+e.width/2}function ei(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),u=Math.abs(r.x-s.x)+Math.abs(r.y-s.y),d=Math.min(Oe,i/2,u/2);if(d<1){n.push(`L ${s.x} ${s.y}`);continue}const f=Math.sign(s.x-l.x),g=Math.sign(s.y-l.y),y=Math.sign(r.x-s.x),x=Math.sign(r.y-s.y),c={x:s.x-f*d,y:s.y-g*d},b={x:s.x+y*d,y:s.y+x*d};n.push(`L ${c.x} ${c.y}`),n.push(`Q ${s.x} ${s.y} ${b.x} ${b.y}`)}const o=t[t.length-1];return n.push(`L ${o.x} ${o.y}`),n.join(" ")}function ti(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 ei(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 ni(e){return e==="tool"||e==="provider"||e==="mcp"}function ai(e){return Math.round(e/Zl)}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}]),u=oi(e,t,r,l,s),d=ri(r,e,n,l,s)??si(r,e,n,l,s),f=u??d;if(!f)return{d:Ja(i),segments:i};const g=n<e?-1:1,y=vn+Math.abs(a.aisleOffset),x=g<0?f.x-y:f.x+f.width+y,c=f.y+f.height+vn,b=a.rowIndex>0?c:Math.min(a.sourceLaneY,Math.max(r+We/2,c)),C=r>=t?Math.max(t+We,a.escapeLaneY):Math.min(t-We,b),S=Qn([{x:e,y:t},{x:e,y:C},{x,y:C},{x,y:r},{x:n,y:r},{x:n,y:o}]);return{d:Ja(S),segments:S}}function Eo(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),u=Math.max(t.x1,t.x2);return Math.max(0,Math.min(r,u)-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 oi(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n),r=n>=t?1:-1;let i=null,u=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,g=Math.abs(f-t);g<u&&(i=d,u=g)}return i}function ri(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n),r=n>=t?1:-1;let i=null,u=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,g=Math.abs(f-t);g<u&&(i=d,u=g)}return i}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,u=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,g=Math.abs(f-t);g<u&&(i=d,u=g)}return i}function li(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+=Eo(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+=Eo(a,l)*1e3;return n}function ii(e,t,n){return e.some(o=>o.orientation==="horizontal"?!!Ze(o.y1,o.x1,o.x2,t,n):!!St(o.x1,o.y1,o.y2,t,n))}function di(e,t,n,o,a,l,s,r){const i=jl(e,t,n,o,a);if(!ii(i,s,r))return{d:zl(e,t,n,o,a),segments:i};const u=So(n+l,da(a,o,s,r,10,10)),d=hn(o-Math.min(Math.max((o-a)/4,Be),48),u,n,a,o,s,r,-1,o),f=Qn([{x:e,y:t},{x:e,y:a},{x:u,y:a},{x:u,y:d},{x:n,y:d},{x:n,y:o}]);return{d:ti(f),segments:f}}function to(e,t,n,o){return[...n,...Tt(e,t,o)]}function ui(e,t,n,o){const a=new Map;for(const y of e)a.set(y.id,y);const l=new Map,s=new Map;for(const y of t){if(!a.has(y.from)||!a.has(y.to))continue;const x=l.get(y.from);x?x.push(y):l.set(y.from,[y]);const c=s.get(y.to);c?c.push(y):s.set(y.to,[y])}for(const[,y]of l)y.sort((x,c)=>{const b=a.get(x.to),C=a.get(c.to);return b.x+b.width/2-(C.x+C.width/2)});for(const[,y]of s)y.sort((x,c)=>{const b=a.get(x.from),C=a.get(c.from);return b.x+b.width/2-(C.x+C.width/2)});const r=new Map,i=new Map;for(const[y,x]of l){const c=a.get(y);if(c.type==="agent"){x.forEach(b=>{const C=b.sideId==="a"?c.x+c.width*.25:c.x+c.width*.75;r.set(b.id,C)});continue}if(c.type==="side"&&x.some(b=>b.toolKind)){const C=c.data.tools||[],S=[];C.some(L=>L.kind==="tool"||L.kind==="provider"||L.kind==="mcp")&&S.push("function"),C.some(L=>L.kind==="prompt")&&S.push("prompt"),C.some(L=>L.kind==="subagent")&&S.push("subagent"),C.some(L=>L.kind==="handoff")&&S.push("handoff");const T=S.length>0?.45:1,k=S.length>0?(1-T)/S.length:0,A=new Map;for(const L of x){if(!L.toolKind||S.length===0)continue;const te=L.toolKind==="tool"||L.toolKind==="provider"||L.toolKind==="mcp"?"function":L.toolKind,G=A.get(te);G?G.push(L):A.set(te,[L])}for(const[L,te]of A)te.sort((G,Y)=>{const P=a.get(G.to),M=a.get(Y.to);if(L==="function"){const v=P.y-M.y;if(Math.abs(v)>1)return v}return Ye(P)-Ye(M)});const N=o?.[c.id]?.toolColumns;for(const[L,te]of A){let G,Y;const P=N?.[L];if(P)G=c.x+P.left,Y=c.x+P.left+P.width;else{const q=S.indexOf(L);if(q<0)continue;G=c.x+c.width*(T+q*k),Y=c.x+c.width*(T+(q+1)*k)}const M=G+Be,v=Y-Be,_=te.length;te.forEach((q,V)=>{const H=_===1?(G+Y)/2:M+(v-M)*V/(_-1);r.set(q.id,H)})}x.forEach(L=>{if(r.has(L.id))return;if(L.toolKind&&S.length>0){const Y=L.toolKind==="tool"||L.toolKind==="provider"||L.toolKind==="mcp"?"function":L.toolKind,P=S.indexOf(Y);if(P>=0){const M=T+P*k+k/2;r.set(L.id,c.x+c.width*M);return}}const te=a.get(L.to),G=te.x+te.width/2;r.set(L.id,Math.max(c.x+Be,Math.min(c.x+c.width-Be,G)))});continue}x.forEach(b=>{const C=a.get(b.to),S=C.x+C.width/2;r.set(b.id,Math.max(c.x+Be,Math.min(c.x+c.width-Be,S)))})}for(const[y,x]of s){const c=a.get(y),b=c.x+c.width/2;x.forEach(C=>i.set(C.id,b))}for(const[y,x]of l){const c=a.get(y);if(!c||x.length<=1)continue;const b=new Map;for(const C of x){const S=r.get(C.id);if(S===void 0)continue;const T=Math.round(S),k=b.get(T);k?k.push(C):b.set(T,[C])}for(const[C,S]of b){if(S.length<=1)continue;S.sort((k,A)=>{const N=a.get(k.to),L=a.get(A.to);return Ye(N)-Ye(L)});const T=r.get(S[0].id)??C;S.forEach((k,A)=>{const N=(A-(S.length-1)/2)*We;r.set(k.id,Math.max(c.x+Be,Math.min(c.x+c.width-Be,T+N)))})}}const u=Array.from(a.values()),d=new Map;for(const y of t){const x=a.get(y.from),c=a.get(y.to);if(!x||!c)continue;const b=d.get(y.from);b?b.push(y):d.set(y.from,[y])}for(const[,y]of d)y.sort((x,c)=>{const b=a.get(x.to),C=a.get(c.to),S=b.y-C.y;return Math.abs(S)>1?S:b.x+b.width/2-(C.x+C.width/2)});const f=new Map,g=new Map;for(const[y,x]of d){const c=a.get(y);if(!c||c.type!=="side")continue;const b=x.filter(V=>ni(V.toolKind)).filter(V=>!!a.get(V.to)).sort((V,H)=>{const E=a.get(V.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(b.length<=1)continue;const C=b.reduce((V,H)=>V+(r.get(H.id)??Ye(c)),0)/b.length,T=b.reduce((V,H)=>V+Ye(a.get(H.to)),0)/b.length<C,k=[],A=new Map;for(const V of b){const H=a.get(V.to),E=ai(H.y),j=A.get(E);if(j)j.push(V);else{const F=[V];A.set(E,F),k.push(F)}}k.sort((V,H)=>a.get(V[0].to).y-a.get(H[0].to).y);const N=Math.min(...b.map(V=>a.get(V.to).y)),L=c.y+c.height+8,te=Math.max(L,N-8),G=b.length<=1?0:(te-L)/(b.length-1);g.set(c.id,te),k.forEach(V=>{V.sort((H,E)=>{const j=a.get(H.to),F=a.get(E.to);return Ye(j)-Ye(F)})});const Y=[...b].sort((V,H)=>(r.get(V.id)??Ye(c))-(r.get(H.id)??Ye(c))),P=T,M=!T,v=[];for(const V of[P,!P])for(const H of[M,!M])for(const E of[!1,!0])v.push({sourceReversed:V,rowReversed:H,aisleReversed:E,preference:(V===P?0:2)+(H===M?0:1)});let _=new Map,q=Number.POSITIVE_INFINITY;for(const V of v){const H=new Map,E=new Map;Y.forEach((se,me)=>{H.set(se.id,me),E.set(se.id,V.sourceReversed?b.length-1-me:me)});const j=new Map,F=k[0]?.length??0;k.forEach((se,me)=>{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=T?1:-1;se.forEach((ve,ee)=>{const Z=E.get(ve.id)??ee,h=V.rowReversed?se.length-1-ee:ee,w=V.aisleReversed?b.length-1-(H.get(ve.id)??ee):H.get(ve.id)??ee,B=me===0&&se.length>1?L+ee*G:L+Z*G,oe=H.get(ve.id)??ee,de=me===0?Math.max(B,U+h*le-We/2):te-We+Math.max(0,oe-F)*2,ne=T?c.x+c.width+vn:c.x-vn,re=(T?1:-1)*w*We,be=U+h*le,ke=Math.min(z-4,Math.max(be,B+We/2));j.set(ve.id,{rowIndex:me,sourceLaneY:B,escapeLaneY:de,rowLaneY:ke,aisleX:ne,aisleOffset:re,aisleDirection:ie})})});const X=b.map(se=>{const me=a.get(se.to),z=r.get(se.id)??Ye(c),U=c.y+c.height,J=i.get(se.id)??Ye(me),le=me.y,ie=new Set([c.id,me.id]),ve=to(c,me,u,n);return Za(z,U,J,le,j.get(se.id),ve,ie)}),pe=li(X)+V.preference;pe<q&&(q=pe,_=j)}for(const[V,H]of _)f.set(V,H)}return t.map(y=>{const x=a.get(y.from),c=a.get(y.to);if(!x||!c)return null;const b=r.get(y.id)??x.x+x.width/2,C=x.y+x.height,S=i.get(y.id)??c.x+c.width/2,T=c.y,k=d.get(y.from)??[y],N=Math.max(0,k.findIndex(q=>q.id===y.id))-(k.length-1)/2,L=C+Math.min((T-C)/2,24)+N*We,G=g.get(y.from)&&x.type==="side"&&!f.has(y.id)?C:L,Y=[...u,...Tt(x,c,n)],P=new Set([x.id,c.id]),M=f.get(y.id),v=M?to(x,c,u,n):Y,_=M?Za(b,C,S,T,M,v,P):di(b,C,S,T,Gn(G,b,S,C,T,Y,P),N*We,Y,P);return{id:y.id,d:_.d,sideId:y.sideId,kind:y.kind??"structural",toolKind:y.toolKind,sourceAnchor:{side:"bottom",x:b,y:C},targetAnchor:{side:"top",x:S,y:T},segments:_.segments}}).filter(y=>!!y)}function ci(e,t,n,o,a,l,s,r){if(e.length<=1)return t;const i=_o(t);let u=t,d=Number.POSITIVE_INFINITY;for(const f of i){const g=e.map((x,c)=>{const b=a.get(x.from),C=mt(b,l,n);return Hl(C.x,C.y,s.get(x.id)??C.x,r.get(x.id)??C.y,f[c],o)});let y=0;for(let x=0;x<g.length;x++)for(let c=x+1;c<g.length;c++)for(const b of g[x])for(const C of g[c])ua(b,C)&&(y+=1e3);y+=f.reduce((x,c,b)=>{const C=e[b];return x+Math.abs(c-(s.get(C.id)??c))},0),y<d&&(d=y,u=f)}return u}function fi(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 mi(e,t,n,o,a=[],l=[]){const s=new Map;for(const x of e)s.set(x.id,x);const r=Array.from(s.values()),i=new Map;for(const x of t){const c=s.get(x.to);if(!c||c.type!=="model")continue;const b=c.placementMode,C=`${c.id}|${b??"side"}`,S=i.get(C);S?S.push(x):i.set(C,[x])}const u=new Map,d=new Map,f=new Map,g=new Map;for(const[,x]of i){const c=s.get(x[0].to),b=c.placementMode,C=Ql(b),S=[...x];if(C==="top"){S.sort((F,X)=>{const pe=s.get(F.from),se=s.get(X.from);return pe.x+pe.width/2-(se.x+se.width/2)});const k=c.x+c.width/2,A=S.filter(F=>{const X=s.get(F.from);return X.x+X.width/2<k}),N=S.filter(F=>{const X=s.get(F.from);return X.x+X.width/2>=k}),L=[...A].reverse(),te=[...N],G=[...L,...te],Y=Ka(c,G.length,"top"),P=G.every(F=>c.y>=mt(s.get(F.from),o,c).y),M=P?Math.max(...G.map(F=>{const X=s.get(F.from),pe=mt(X,o,c),se=X.y+X.height+Ee+Ge,me=Fn(X,c,n,se,!0);return hn(me,pe.x,c.x+c.width/2,pe.y,c.y,Ht([...r,...Tt(X,c,n),...un(X,c,n)],an,on),new Set([X.id,c.id]),1,pe.y)})):Math.min(...G.map(F=>{const X=s.get(F.from),pe=mt(X,o,c),se=X.y-Ee-Ge,me=Fn(X,c,n,se,!1);return hn(me,pe.x,c.x+c.width/2,pe.y,c.y,Ht([...r,...Tt(X,c,n),...un(X,c,n)],an,on),new Set([X.id,c.id]),-1,pe.y)})),v=qa(G.length,Re),_=v[v.length-1]??0,q=c.y-Ol,V=P?q-_:M,H=[{isLeftApproach:!0,edges:A,startIndex:0,assignOrder:(F,X)=>{const pe=s.get(F.from);return s.get(X.from).x-pe.x}},{isLeftApproach:!1,edges:N,startIndex:L.length,assignOrder:(F,X)=>{const pe=s.get(F.from),se=s.get(X.from);return pe.x-se.x}}];for(const F of H){const X=F.edges;if(X.length===0)continue;const pe=[...X].sort(F.assignOrder),se=[];for(const me of pe){const z=s.get(me.from),U=mt(z,o,c),J=f.get(me.id)??V,le=new Set([z.id,c.id]),ie=Ht([...r,...Tt(z,c,n)],an,on);let ve=ql(z,U,J,c.x+c.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 w=se.find(oe=>Math.max(ee,oe.minY)<Math.min(Z,oe.maxY)&&Math.abs(ve-oe.exitX)<Re);if(!w)break;const B=w.exitX<=U.x?-1:1;ve=Ft(w.exitX+B*Re,U.y,J,ie,le,B,U.x,ot,ot)}g.set(me.id,ve),se.push({exitX:ve,minY:ee,maxY:Z})}}[...G].sort((F,X)=>{const pe=s.get(F.from),se=s.get(X.from),me=pe.x+pe.width/2,z=se.x+se.width/2,U=me<k,J=z<k,le=g.get(F.id)??me,ie=g.get(X.id)??z;return U!==J?Math.abs(le-k)-Math.abs(ie-k):U?P?ie-le:le-ie:P?le-ie:ie-le}).forEach((F,X)=>f.set(F.id,P?V+v[X]:V-v[X]));const j=ci(G,Y,c,c.y,s,o,g,f);G.forEach((F,X)=>u.set(F.id,{side:"top",x:j[X],y:c.y}));continue}S.sort((k,A)=>{const N=s.get(k.from),L=s.get(A.from),te=pt(N,o)-pt(L,o);return te!==0?te:N.x+N.width/2-(L.x+L.width/2)});const T=Ka(c,S.length,C);if(S.forEach((k,A)=>{const N=pt(c,o),L=S.length===1?mt(s.get(k.from),o,c).y:null;u.set(k.id,{side:C,x:C==="left"?c.x:c.x+c.width,y:S.length===1&&L!==null&&Math.abs(L-N)<=Bl?L:S.length===1?N:T[A]})}),S.length>1){const k=new Set([c.id,...S.map(P=>P.from)]),A=[...r,...n.filter(P=>![{x:c.x+c.width/2,y:c.y+c.height/2},...S.map(v=>{const _=s.get(v.from);return{x:_.x+_.width/2,y:_.y+_.height/2}})].some(v=>v.x>=P.x&&v.x<=P.x+P.width&&v.y>=P.y&&v.y<=P.y+P.height)).map(yn),...a],N=S.map(P=>u.get(P.id).y),L=C==="left"?c.x-(Be+24):c.x+c.width+Be+24,te=Co(L,Math.min(...N),Math.max(...N),A,k),G=qa(S.length,Re),Y=C==="left"?-1:1;S.forEach((P,M)=>d.set(P.id,te+Y*G[M]))}}const y=[];return t.map(x=>{if(x.from===x.to)return null;const c=s.get(x.from),b=s.get(x.to);if(!c||!b||b.type!=="model")return null;const C=mt(c,o,b),S=u.get(x.id);if(!S)return null;const k=[...Ht([...r,...Tt(c,b,n),...un(c,b,n)],an,on),...a],A=new Set([c.id,b.id]),N=Ht(r.filter(H=>!A.has(H.id)),Qa,Qa),L=S.y>=C.y,te=L?c.y+c.height+Ee+Ge:c.y-Ee-Ge,G=Fn(c,b,n,te,L),Y=f.get(x.id)??G;let P=C,M=null;const v=C.side,q=[C,fi(c,v==="left"?"right":"left",o)],V=[Y,Y-Re,Y-Re*2,Y-Re*4,Y-Re*8,Y-Re*16,Y-Re*24,Y+Re,Y+Re*2,Y+Re*4,Y+Re*8,Y+Re*16,Y+Re*24];if(S.side==="top"){let H=Number.POSITIVE_INFINITY;const E=g.get(x.id)??null,j=E===null?[null]:[E,null];for(const F of q)for(const X of j)for(const pe of V){const se=Wl(c,F,S,pe,X,k,k,A),me=eo(se.segments,[...l,...y])+rn(se.segments,N)*5e4+rn(se.segments,a)*1e4+no(se.segments)*.01+Math.abs(pe-Y)*.2+(F.side===v?0:25)+(X===E?0:10);me<H&&(H=me,P=F,M=se)}}if(!M){let H=Number.POSITIVE_INFINITY;const E=d.get(x.id)??null,j=E===null?[null]:[E,null],F=L?1:-1,X=[Y,Y+F*Re,Y+F*Re*2,Y+F*Re*4,Y+F*Re*8,Y-F*Re];for(const pe of q)for(const se of j)for(const me of X){const z=Gl(c,pe,b,S,me,se,k,A),U=eo(z.segments,[...l,...y])+rn(z.segments,N)*5e4+rn(z.segments,a)*1e4+no(z.segments)*.01+Math.abs(me-Y)*.2+(pe.side===v?0:25)+(se===E?0:10);U<H&&(H=U,P=pe,M=z)}}return y.push({d:M.d,segments:M.segments}),{id:x.id,d:M.d,sideId:x.sideId,kind:"model",toolKind:x.toolKind,sourceAnchor:P,targetAnchor:S,segments:M.segments}}).filter(x=>!!x)}function hi(e){const t=Vl(e.edges),n=t.filter(l=>l.kind!=="model"),o=t.filter(l=>l.kind==="model"),a=ui(e.nodes,n,e.groups,e.nodeMetrics);return[...a,...mi(e.nodes,o,e.groups,e.nodeMetrics,Yl(a),a)]}const pi={class:"pointer-events-none absolute left-0 top-0 overflow-visible",width:"1",height:"1"},vi=["data-edge-id","data-edge-kind","data-edge-tool-kind","d","stroke-width","stroke-dasharray"],gi=Ie({__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(()=>hi({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",pi,[(p(!0),$($e,null,_e(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,vi))),128))]))}}),xi={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function yi(e,t){return p(),$("svg",xi,[...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 bi=st({name:"lucide-minus",render:yi}),ki={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function wi(e,t){return p(),$("svg",ki,[...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 $i=st({name:"lucide-maximize",render:wi}),Mi={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"},Ti={class:"min-w-[3rem] text-center text-[11px] font-medium tabular-nums text-neutral-500 dark:text-neutral-400"},Ci=Ie({__name:"CanvasControls",props:{scalePercent:{}},emits:["zoom-in","zoom-out","fit-view"],setup(e){return(t,n)=>(p(),$("div",Mi,[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(bi),{class:"h-3.5 w-3.5"})]),m("span",Ti,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(go),{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($i),{class:"h-3.5 w-3.5"})])]))}}),Xe=Ie({__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,u){o("open",{target:r,anchorEl:i.currentTarget,editData:u})}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(u=>a(e.target,u,e.editData),["stop"])),onKeydown:i[1]||(i[1]=u=>l(e.target,u)),onMouseenter:i[2]||(i[2]=u=>o("hover-target",e.target)),onMouseleave:i[3]||(i[3]=u=>o("hover-target",null))},{default:xe(()=>[i[4]||(i[4]=m("div",{class:"composition-edit-region-overlay"},null,-1)),Gr(r.$slots,"default")]),_:3},40,["data-edit-active","class"]))}}),Si={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function _i(e,t){return p(),$("svg",Si,[...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=st({name:"lucide-variable",render:_i}),Ii={key:0,class:"mt-1.5 w-full border-collapse text-[11px]"},Ei={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=Ie({__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,[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]=fe(" Variables ",-1))],2),t.variables.length>0?(p(),$("table",Ii,[(p(!0),$($e,null,_e(t.variables,l=>(p(),$("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(),$("span",Ei,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(),$("div",{key:1,class:ue(["mt-1.5 text-[11px] italic",t.muted?"opacity-40":"text-neutral-400 dark:text-neutral-600"])}," None ",2))]))}}),Ai="ring-2 agents-ring-selected ring-offset-2 ring-offset-white shadow-md dark:ring-offset-neutral-900",Ni="ring-[3px] agents-ring-selected ring-offset-[6px] ring-offset-white shadow-lg dark:ring-offset-neutral-950";function xt(e,t){return e?Ai:t?Ni:""}const Pi={class:"flex border-b border-neutral-200 dark:border-neutral-700"},Li={class:"flex items-center justify-between gap-3 px-5 pt-3.5 pb-2"},Ri={class:"ml-1 shrink-0 rounded-full border border-current/60 px-1.5 py-px text-[9.5px] font-semibold tracking-wider"},Oi={class:"flex items-center gap-3.5 px-5 pt-1 pb-3.5"},Di=["src"],Bi={class:"min-w-0"},Vi={class:"whitespace-nowrap text-[16px] font-semibold leading-tight"},Ui={class:"mt-0.5 whitespace-nowrap font-mono text-xs text-neutral-400 dark:text-neutral-500"},Hi={key:0,class:"px-5 pb-3"},zi={key:0,class:"mb-2 flex flex-wrap gap-1"},ji={key:1,class:"max-w-[280px] text-[11px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Fi={class:"mt-1 max-w-[280px] text-[11px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Xi={class:"mt-auto grid grid-cols-[1fr_1px_1fr] border-t border-neutral-200 dark:border-neutral-700"},Ki={class:"flex items-center gap-1.5 whitespace-nowrap text-[10px] font-bold uppercase tracking-[0.15em] text-sky-600 dark:text-sky-400"},Yi={class:"mt-0.5 whitespace-nowrap font-mono text-[11px] text-neutral-500 dark:text-neutral-400"},qi={class:"mt-1.5 grid grid-cols-[auto_1fr] gap-x-3 text-[11px]"},Gi={class:"whitespace-nowrap py-[1px] text-neutral-400 dark:text-neutral-500"},Wi=["title"],Qi={class:"flex items-center gap-1.5 whitespace-nowrap text-[10px] font-bold uppercase tracking-[0.15em] text-amber-600 dark:text-amber-400"},Ji={key:0,class:"mt-0.5 whitespace-nowrap font-mono text-[11px] text-neutral-500 dark:text-neutral-400"},Zi={key:1,class:"mt-0.5 text-[11px] text-neutral-400 dark:text-neutral-500"},ed={key:2,class:"mt-1.5 grid grid-cols-[auto_1fr] gap-x-3 text-[11px]"},td={class:"whitespace-nowrap py-[1px] text-neutral-400 dark:text-neutral-500"},nd=["title"],Ao=Ie({__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(P){const M=a.value?.target;return!M||M.entityType!=="agent"||M.entityId!==n.data.name?!1:M.section===P}function s(P){if(l(P))return!0;const M=n.hoveredEditTarget;return!M||M.entityType!=="agent"||M.entityId!==n.data.name?!1:M.section===P}function r(P){return{entityType:"agent",entityId:n.data.name,section:P}}const i=O(()=>n.data.type==="dual_ai"),u=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"),g=O(()=>n.data.side_a_label||"Side A"),y=O(()=>n.data.side_b_label||(i.value?"Side B":"Human")),x=O(()=>G({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})),c=O(()=>G({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})),b=O(()=>n.data._variables||[]),C=O(()=>Object.keys(n.data.env||{}).filter(P=>P.trim().length>0)),S=O(()=>{const P=new Set(b.value.map(M=>M.name));return C.value.filter(M=>P.has(M))}),T=O(()=>n.data.expose_as_tool&&n.data.tool_description?.trim()||null),k=O(()=>n.data._isSubagent&&T.value?T.value:n.data.description||null),A=O(()=>!n.data._isSubagent&&!!T.value),N=O(()=>{if(!i.value)return null;const P=n.data.max_session_turns;return typeof P!="number"?"unlimited session turns":`max ${P} session turn${P===1?"":"s"}`}),L=O(()=>{const P=[];return n.data.expose_as_tool&&!n.data._isSubagent&&P.push("tool"),N.value&&P.push(N.value),C.value.length>0&&P.push(`${C.value.length} env override${C.value.length===1?"":"s"}`),P}),te=O(()=>!!k.value||A.value||L.value.length>0);function G(P){return[{key:"stop_on_response",label:"Stop on response",value:P.stopOnResponse?"On":"Off",active:P.stopOnResponse},{key:"stop_tool",label:"Stop tool",value:P.stopTool||"Off",active:!!P.stopTool},{key:"max_steps",label:"Max steps",value:Y(P.maxSteps),active:P.maxSteps!==null&&P.maxSteps!==void 0},{key:"end_conversation",label:"End conversation tool",value:P.endConversationTool||"Off",active:!!P.endConversationTool}]}function Y(P){return typeof P=="number"?String(P):"Unlimited"}return(P,M)=>(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(xt)(e.selected,e.hovered)]),style:{width:"max-content"}},[m("div",Pi,[Q(Xe,{class:"min-w-0 flex-1",target:r("identity"),active:s("identity"),onOpen:M[1]||(M[1]=v=>o("edit-surface",v)),onHoverTarget:M[2]||(M[2]=v=>o("hover-edit-target",v))},{default:xe(()=>[m("div",Li,[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",Ri,K(u.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:M[0]||(M[0]=Me(v=>P.$emit("action"),["stop"]))},K(e.actionLabel),1)):W("",!0)]),m("div",Oi,[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,Di),m("div",Bi,[m("div",Vi,K(e.data.title),1),m("div",Ui,K(e.data.name),1)])]),te.value?(p(),$("div",Hi,[L.value.length>0?(p(),$("div",zi,[(p(!0),$($e,null,_e(L.value,v=>(p(),$("span",{key:v,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(v),1))),128))])):W("",!0),k.value?(p(),$("p",ji,K(k.value),1)):W("",!0),A.value?(p(),$("div",{key:2,class:ue(k.value?"mt-2":"")},[M[9]||(M[9]=m("div",{class:"text-[10px] font-bold uppercase tracking-[0.16em] text-neutral-400 dark:text-neutral-500"}," Tool use ",-1)),m("p",Fi,K(T.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:M[3]||(M[3]=v=>o("edit-surface",v)),onHoverTarget:M[4]||(M[4]=v=>o("hover-edit-target",v))},{default:xe(()=>[Q(fa,{variables:b.value,"flagged-names":S.value,"flag-label":"env"},null,8,["variables","flagged-names"])]),_:1},8,["target","active"])]),m("div",Xi,[Q(Xe,{class:"px-3 py-2",target:r("side-a"),active:s("side-a"),onOpen:M[5]||(M[5]=v=>o("edit-surface",v)),onHoverTarget:M[6]||(M[6]=v=>o("hover-edit-target",v))},{default:xe(()=>[m("div",Ki,[Q(I(tt),{class:"h-3 w-3"}),fe(" "+K(g.value),1)]),m("div",Yi,K(e.data.side_a_agent_prompt),1),m("dl",qi,[(p(!0),$($e,null,_e(x.value,v=>(p(),$($e,{key:v.key},[m("dt",Gi,K(v.label),1),m("dd",{class:ue(["whitespace-nowrap py-[1px] text-right font-mono",v.active?"text-sky-600 dark:text-sky-400":"text-neutral-400 dark:text-neutral-600"]),title:v.value},K(v.value),11,Wi)],64))),128))])]),_:1},8,["target","active"]),M[10]||(M[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:M[7]||(M[7]=v=>o("edit-surface",v)),onHoverTarget:M[8]||(M[8]=v=>o("hover-edit-target",v))},{default:xe(()=>[m("div",Qi,[(p(),ce(lt(i.value?I(tt):I(aa)),{class:"h-3 w-3"})),fe(" "+K(y.value),1)]),e.data.side_b_agent_prompt?(p(),$("div",Ji,K(e.data.side_b_agent_prompt),1)):(p(),$("div",Zi,"No prompt")),e.data.side_b_agent_prompt?(p(),$("dl",ed,[(p(!0),$($e,null,_e(c.value,v=>(p(),$($e,{key:v.key},[m("dt",td,K(v.label),1),m("dd",{class:ue(["whitespace-nowrap py-[1px] text-right font-mono",v.active?"text-amber-600 dark:text-amber-400":"text-neutral-400 dark:text-neutral-600"]),title:v.value},K(v.value),11,nd)],64))),128))])):W("",!0)]),_:1},8,["target","active"])])],2))}}),ad=Ie({__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(Ao,{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"]))}}),od={},rd={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 sd(e,t){return p(),$("svg",rd,[...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=co(od,[["render",sd]]),ld={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function id(e,t){return p(),$("svg",ld,[...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 No=st({name:"lucide-file-pen-line",render:id}),dd={class:"relative"},ud={class:"flex items-start gap-1.5"},cd=["aria-label"],fd={key:1,class:"mt-0.5 inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center"},md={class:"min-w-0 flex-1"},hd={class:"flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-1"},pd={key:0,class:"text-[12px] leading-none font-semibold text-rose-500 dark:text-rose-400","aria-label":"Required"},vd={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"},gd={key:0,class:"mt-0.5 max-w-[32rem] break-words text-[10px] leading-relaxed text-neutral-400 dark:text-neutral-500"},xd={key:0},yd=Ie({__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,u)=>{const d=vt("DataTreeRow",!0);return p(),$("div",dd,[m("div",{style:De(s.value),class:"py-1.5"},[m("div",ud,[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:u[0]||(u[0]=Me(f=>o("toggle",e.node.id),["stop"]))},[Q(I(xo),{class:ue(["h-3 w-3 transition-transform",l.value?"rotate-90":""])},null,8,["class"])],8,cd)):(p(),$("span",fd,[...u[2]||(u[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",md,[m("div",hd,[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(),$("span",pd," * ")):W("",!0),e.node.value?(p(),$("span",vd,K(e.node.value),1)):W("",!0)]),e.node.description?(p(),$("div",gd,K(e.node.description),1)):W("",!0)])])],4),a.value&&l.value?(p(),$("div",xd,[(p(!0),$($e,null,_e(e.node.children,f=>(p(),ce(d,{key:f.id,node:f,depth:e.depth+1,collapsed:e.collapsed,onToggle:u[1]||(u[1]=g=>o("toggle",g))},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)])}}}),bd={key:0,class:"text-[11px] italic text-neutral-400 dark:text-neutral-600"},kd={key:1},Po=Ie({__name:"DataTreeView",props:{nodes:{},emptyLabel:{default:"No fields"}},setup(e){const t=e,n=D(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",bd,K(e.emptyLabel),1)):(p(),$("div",kd,[(p(!0),$($e,null,_e(e.nodes,r=>(p(),ce(yd,{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 wd(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 Ct(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])=>Ct(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)=>Ct(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,u)=>Ct(`${s} ${u+1}`,zt(i)?i:{},`${n}.${s}.${u}`,!0)));zt(t.additionalProperties)&&a.push(Ct("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:wd(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])=>Ct(o,zt(a)?a:{},`schema.${o}`,n.has(o)))}return[Ct("value",e,"schema.value",!0)]}function $d(e){const t=e.reasoning?.effort;return t==="low"||t==="medium"||t==="high"?t:"off"}function Md(e){const t=e.reasoning?.maxTokens;return typeof t=="number"?t.toLocaleString():"—"}function Lo(e,t){const n=$d(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:Md(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 Ro(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 Td(e,t={}){const n=await at(e);if(!n)return null;try{const{toolsCatalog:o,models:a}=await Ro(t);return Do(n,{toolsCatalog:o,models:a})}catch{return{prompt:n,nestedTools:[],model:null}}}async function Oo(e,t={}){if(e.length===0)return[];const n=await Ro(t).catch(()=>null);return(await Promise.all(e.map(async a=>[a,await at(a)]))).map(([a,l])=>l?n?[a,Do(l,n)]:[a,{prompt:l,nestedTools:[],model:null}]:[a,null])}function Do(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 Bo(e){try{return(await Qe(`/agents/${encodeURIComponent(e)}`)).agent}catch{return null}}async function Cd(e,t={}){const[n,o,a]=await Promise.all([e.kind==="tool"?po(e.name):Promise.resolve(null),e.kind==="prompt"?Td(e.name,t):Promise.resolve(null),e.kind==="handoff"?Bo(e.name):Promise.resolve(null)]);return{functionTool:n,promptTool:o,handoffAgent:a}}async function Sd(e,t){const[n,o,a]=await Promise.all([Promise.all(e.functionTools.map(async l=>[l,await po(l)])),Oo(e.promptTools,t),Promise.all(e.handoffs.map(async l=>[l,await Bo(l)]))]);return{functionTools:Object.fromEntries(n),promptTools:Object.fromEntries(o),handoffs:Object.fromEntries(a)}}const _d={class:"flex"},Id={class:"flex min-w-0 flex-1 flex-col"},Ed={class:"flex items-start justify-between gap-4 px-5 py-3.5"},Ad={class:"min-w-0 flex-1"},Nd={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"},Pd={class:"mt-3"},Ld={class:"whitespace-nowrap font-mono text-[14px] font-semibold text-neutral-900 dark:text-neutral-100"},Rd={key:0,class:"mt-1 max-w-[220px] text-[11px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Od={class:"flex shrink-0 items-start gap-2"},Dd=["onKeydown"],Bd={"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"},Vd={class:"flex items-start gap-2"},Ud=["src"],Hd={class:"leading-tight"},zd={class:"whitespace-nowrap text-[13px] font-semibold text-neutral-900 dark:text-neutral-100"},jd={class:"whitespace-nowrap font-mono text-[10px] text-neutral-400 dark:text-neutral-500"},Fd={key:0,class:"group relative border-l border-neutral-200 pl-3 dark:border-neutral-800"},Xd={class:"grid shrink-0 grid-cols-2 gap-x-1.5 gap-y-1","aria-label":"Model capabilities"},Kd=["aria-label"],Yd={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"},qd={class:"grid grid-cols-[auto_1fr] items-center gap-x-2 gap-y-1 text-[11px]"},Gd={class:"flex items-center"},Wd={class:"flex min-h-0 flex-1"},Qd={class:"text-[9px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},Jd={class:"mt-1 space-y-[2px] text-[11px]"},Zd={class:"whitespace-nowrap text-neutral-500 dark:text-neutral-400"},eu={class:"flex min-w-0 flex-1 flex-col border-l border-neutral-200 dark:border-neutral-700"},tu={class:"mb-1 flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},nu={class:"flex shrink-0 min-w-[12rem] max-w-64 flex-col border-l border-neutral-200 dark:border-neutral-700"},au={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},ou={key:0,class:"mt-1.5 space-y-1"},ru={class:"flex flex-wrap items-center gap-x-1.5 gap-y-0.5"},su={class:"font-mono font-medium text-neutral-800 dark:text-neutral-200"},lu={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"},iu={key:1,class:"mt-1.5 text-[11px] italic text-neutral-400 dark:text-neutral-600"},du={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-fuchsia-500 dark:text-fuchsia-400"},uu={key:0,class:"mt-1.5 space-y-1"},cu={class:"font-mono font-medium text-neutral-800 dark:text-neutral-200"},fu={key:0,class:"mt-1 flex items-center gap-1.5 text-[10px] text-neutral-400 dark:text-neutral-500"},mu=["src"],hu={class:"font-medium text-neutral-500 dark:text-neutral-400"},pu={key:1,class:"truncate"},vu={key:1,class:"mt-1.5 text-[11px] italic text-neutral-400 dark:text-neutral-600"},gu={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-sky-500 dark:text-sky-400"},xu={key:0,class:"mt-1.5 space-y-1"},yu={class:"font-mono font-medium text-neutral-800 dark:text-neutral-200"},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-emerald-500 dark:text-emerald-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"},Vo=Ie({__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(M=>M.kind==="tool"||M.kind==="provider"||M.kind==="mcp")),l=O(()=>n.tools.filter(M=>M.kind==="prompt")),s=O(()=>n.tools.filter(M=>M.kind==="subagent")),r=O(()=>n.tools.filter(M=>M.kind==="handoff")),i=O(()=>n.variables||ra(n.prompt)),u=O(()=>n.variableEnvNames||sa(n.prompt)),d=O(()=>!!n.label),f=O(()=>n.toolConfig?"Sub-prompt":"Prompt"),g=O(()=>n.modelName||n.prompt.model_name);O(()=>n.modelProvider||n.prompt.model_provider);const y=O(()=>n.modelActual||n.prompt.model_id),x=O(()=>{const M=n.modelCapabilities||{};return[{key:"images",label:"Vision",enabled:M.supportsImages===!0},{key:"tools",label:"Tool Calls",enabled:M.supportsToolCalls===!0},{key:"stream",label:"Streaming",enabled:M.supportsStreaming===!0},{key:"json",label:"JSON",enabled:M.supportsJsonMode===!0}]}),c=O(()=>!!n.modelCapabilities&&Object.keys(n.modelCapabilities).length>0),b=O(()=>ma(n.prompt.required_schema)),C=D({}),S=O(()=>Lo(n.prompt,n.toolConfig));Pe(()=>[l.value.map(M=>M.name).join(""),n.refreshEpoch??0],async()=>{const M=l.value.map(_=>_.name);if(M.length===0){C.value={};return}const v=await Oo(M);C.value=Object.fromEntries(v)},{immediate:!0});function T(M){return C.value[M.name]?.model||M.resolvedModel||null}function k(M){const v=T(M);if(v)return Ue(`/api/providers/${encodeURIComponent(v.provider)}/icon?model=${encodeURIComponent(v.model)}`);const _=C.value[M.name];return _?.prompt?Ue(`/api/providers/${encodeURIComponent(_.prompt.model_provider)}/icon?model=${encodeURIComponent(_.prompt.model_id)}`):""}function A(M){const v=T(M);return v?v.name:C.value[M.name]?.prompt.model_name||M.model||null}function N(M){const v=T(M);return v?v.provider:C.value[M.name]?.prompt.model_provider||null}function L(M,v){return{entityType:"prompt",entityId:n.prompt.name,section:M,defaultToolTab:v}}const{activeSurface:te}=Kt();function G(M,v){const _=te.value?.target;return!(!_||_.entityType!=="prompt"||_.entityId!==n.prompt.name||_.section!==M||v!==void 0&&_.defaultToolTab!==v)}function Y(M,v){if(G(M,v))return!0;const _=n.hoveredEditTarget;return!(!_||_.entityType!=="prompt"||_.entityId!==n.prompt.name||_.section!==M||v!==void 0&&_.defaultToolTab!==v)}function P(M){const v=M.currentTarget;v instanceof HTMLElement&&o("edit-surface",{target:L("prompt"),anchorEl:v})}return(M,v)=>(p(),$("div",{"data-canvas-node":"",role:"button",tabindex:"0",onClick:v[18]||(v[18]=Me(_=>M.$emit("select"),["stop"])),onKeydown:[v[19]||(v[19]=je(Me(_=>M.$emit("select"),["prevent","stop"]),["enter"])),v[20]||(v[20]=je(Me(_=>M.$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(xt)(e.selected,e.hovered)])},[m("div",_d,[m("div",Id,[Q(Xe,{as:"header",class:"border-b border-neutral-200 dark:border-neutral-700",target:L("basic"),active:Y("basic"),onOpen:v[2]||(v[2]=_=>o("edit-surface",_)),onHoverTarget:v[3]||(v[3]=_=>o("hover-edit-target",_))},{default:xe(()=>[m("div",Ed,[m("div",Ad,[m("div",{class:ue(["flex items-center gap-1.5 whitespace-nowrap text-[10px] font-bold uppercase tracking-[0.2em]",e.accentTextClass])},[Q(I(gt),{class:"h-3 w-3"}),m("span",null,K(f.value),1),d.value?(p(),$("span",Nd,K(e.label),1)):W("",!0)],2),m("div",Pd,[m("div",Ld,K(e.prompt.name),1),e.prompt.tool_description?(p(),$("div",Rd,K(e.prompt.tool_description),1)):W("",!0)])]),m("div",Od,[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",Y("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(P,["stop"]),onKeydown:[je(Me(P,["prevent","stop"]),["enter"]),je(Me(P,["prevent","stop"]),["space"])],onMouseenter:v[0]||(v[0]=Me(_=>o("hover-edit-target",L("prompt")),["stop"])),onMouseleave:v[1]||(v[1]=Me(_=>o("hover-edit-target",null),["stop"]))},[Q(I(No),{class:"h-3.5 w-3.5"})],42,Dd),m("div",Bd,[m("div",Vd,[e.modelIconSrc?(p(),$("img",{key:0,src:e.modelIconSrc,alt:"",class:"mt-[3px] h-4 w-4 shrink-0 rounded-sm"},null,8,Ud)):W("",!0),m("div",Hd,[m("div",zd,K(g.value),1),m("div",jd,K(y.value),1)])]),c.value?(p(),$("div",Fd,[m("div",Xd,[(p(!0),$($e,null,_e(x.value,_=>(p(),$("span",{key:_.key,"aria-label":`${_.label}: ${_.enabled?"supported":"not supported"}`,class:ue(["h-1.5 w-1.5 rounded-full",_.enabled?"bg-emerald-500 shadow-[0_0_0_2px_rgba(16,185,129,0.16)]":"bg-neutral-300 dark:bg-neutral-700"])},null,10,Kd))),128))]),m("div",Yd,[v[21]||(v[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",qd,[(p(!0),$($e,null,_e(x.value,_=>(p(),$($e,{key:_.key},[m("dt",Gd,[m("span",{class:ue(["h-1.5 w-1.5 rounded-full",_.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",_.enabled?"text-neutral-800 dark:text-neutral-200":"text-neutral-400 dark:text-neutral-600"])},K(_.label),3)],64))),128))])])])):W("",!0)])])])]),_:1},8,["target","active"]),m("div",Wd,[Q(Xe,{class:"shrink-0 px-5 py-3",target:L("behavior"),active:Y("behavior"),onOpen:v[4]||(v[4]=_=>o("edit-surface",_)),onHoverTarget:v[5]||(v[5]=_=>o("hover-edit-target",_))},{default:xe(()=>[(p(!0),$($e,null,_e(S.value,(_,q)=>(p(),$("div",{key:_.key,class:ue(["py-2",q>0?"border-t border-neutral-200 dark:border-neutral-700":""])},[m("div",Qd,K(_.label),1),m("dl",Jd,[(p(!0),$($e,null,_e(_.rows,V=>(p(),$("div",{key:V.label,class:"flex items-baseline justify-between gap-x-6"},[m("dt",Zd,K(V.label),1),V.kind==="toggle"?(p(),$("dd",{key:0,class:ue(["whitespace-nowrap font-mono",V.enabled?"text-emerald-600 dark:text-emerald-400":"text-neutral-400 dark:text-neutral-600"])},K(V.enabled?"on":"off"),3)):(p(),$("dd",{key:1,class:ue(["whitespace-nowrap font-mono",V.active?"text-neutral-800 dark:text-neutral-200":"text-neutral-400 dark:text-neutral-600"])},K(V.value),3))]))),128))])],2))),128))]),_:1},8,["target","active"]),m("div",eu,[Q(Xe,{class:"flex-[1_1_auto] px-5 py-3",target:L("schema"),active:Y("schema"),onOpen:v[6]||(v[6]=_=>o("edit-surface",_)),onHoverTarget:v[7]||(v[7]=_=>o("hover-edit-target",_))},{default:xe(()=>[m("div",tu,[Q(I(Mt),{class:"h-3 w-3"}),v[22]||(v[22]=fe(" Input schema ",-1))]),Q(Po,{nodes:b.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:Y("variables"),onOpen:v[8]||(v[8]=_=>o("edit-surface",_)),onHoverTarget:v[9]||(v[9]=_=>o("hover-edit-target",_))},{default:xe(()=>[Q(fa,{variables:i.value,"flagged-names":u.value},null,8,["variables","flagged-names"])]),_:1},8,["target","active"])])])]),m("div",nu,[Q(Xe,{"data-tool-column":"function",class:"flex-[1_1_25%] px-4 py-3",target:L("tools","functions"),active:Y("tools","functions"),onOpen:v[10]||(v[10]=_=>o("edit-surface",_)),onHoverTarget:v[11]||(v[11]=_=>o("hover-edit-target",_))},{default:xe(()=>[m("div",au,[Q(Xt,{class:"h-3 w-3"}),v[23]||(v[23]=fe(" Functions ",-1))]),a.value.length>0?(p(),$("div",ou,[(p(!0),$($e,null,_e(a.value,_=>(p(),$("div",{key:_.name,class:"text-[11px]"},[m("div",ru,[m("span",su,K(_.displayName),1),_.config.immediate?(p(),$("span",lu," immediate ")):W("",!0)])]))),128))])):(p(),$("div",iu,"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:Y("tools","sub-prompts"),onOpen:v[12]||(v[12]=_=>o("edit-surface",_)),onHoverTarget:v[13]||(v[13]=_=>o("hover-edit-target",_))},{default:xe(()=>[m("div",du,[Q(I(gt),{class:"h-3 w-3"}),v[24]||(v[24]=fe(" Sub-prompts ",-1))]),l.value.length>0?(p(),$("div",uu,[(p(!0),$($e,null,_e(l.value,_=>(p(),$("div",{key:_.name,class:"text-[11px]"},[m("div",cu,K(_.displayName),1),A(_)?(p(),$("div",fu,[k(_)?(p(),$("img",{key:0,src:k(_),alt:"",class:"h-3.5 w-3.5 shrink-0 rounded-sm"},null,8,mu)):W("",!0),m("span",hu,K(A(_)),1),N(_)?(p(),$("span",pu,K(N(_)),1)):W("",!0)])):W("",!0)]))),128))])):(p(),$("div",vu,"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:Y("tools","handoffs"),onOpen:v[14]||(v[14]=_=>o("edit-surface",_)),onHoverTarget:v[15]||(v[15]=_=>o("hover-edit-target",_))},{default:xe(()=>[m("div",gu,[Q(I(oa),{class:"h-3 w-3"}),v[25]||(v[25]=fe(" Handoffs ",-1))]),r.value.length>0?(p(),$("div",xu,[(p(!0),$($e,null,_e(r.value,_=>(p(),$("div",{key:_.name,class:"text-[11px]"},[m("div",yu,K(_.displayName),1)]))),128))])):(p(),$("div",bu,"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:Y("tools","sub-agents"),onOpen:v[16]||(v[16]=_=>o("edit-surface",_)),onHoverTarget:v[17]||(v[17]=_=>o("hover-edit-target",_))},{default:xe(()=>[m("div",ku,[Q(I(tt),{class:"h-3 w-3"}),v[26]||(v[26]=fe(" Sub-agents ",-1))]),s.value.length>0?(p(),$("div",wu,[(p(!0),$($e,null,_e(s.value,_=>(p(),$("div",{key:_.name,class:"text-[11px]"},[m("div",$u,K(_.displayName),1)]))),128))])):(p(),$("div",Mu,"None"))]),_:1},8,["target","active"])])])],34))}}),Tu={class:"flex items-center gap-2.5 px-5 pt-4 pb-3"},Cu={class:"text-[15px] font-semibold text-neutral-900 dark:text-neutral-100"},Su=Ie({__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?Ue(`/api/providers/${encodeURIComponent(s.provider)}/icon?model=${encodeURIComponent(s.model)}`):t.data.prompt?Ue(`/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]=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(xt)(e.selected,e.hovered)])},[m("div",Tu,[Q(I(aa),{class:ue(["h-5 w-5 shrink-0",l.value])},null,8,["class"]),m("span",Cu,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(Vo,{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)}}),_u={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Iu(e,t){return p(),$("svg",_u,[...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 Eu=st({name:"lucide-git-branch",render:Iu}),Au={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Nu(e,t){return p(),$("svg",Au,[...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=st({name:"lucide-plug",render:Nu}),Pu={class:"border-b border-neutral-200 dark:border-neutral-700"},Lu={class:"flex items-center justify-between gap-3 px-4 pt-3 pb-1.5"},Ru={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.2em] text-neutral-500 dark:text-neutral-400"},Ou={key:0,class:"flex flex-wrap items-center gap-1"},Du={class:"flex items-start justify-between gap-5 px-4 pt-1 pb-3"},Bu={class:"min-w-0 flex-1"},Vu={class:"truncate font-mono text-[13px] font-semibold text-neutral-900 dark:text-neutral-100"},Uu={key:0,class:"w-56 shrink-0 text-balance text-left text-[10.5px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Hu={key:0,class:"px-5 py-3"},zu={class:"min-w-[320px] max-w-[380px]"},ju={class:"mb-1 flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},Fu=Ie({__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]=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(xt)(e.selected,e.hovered)]),style:{width:"max-content"}},[m("header",Pu,[m("div",Lu,[m("div",Ru,[Q(Xt,{class:"h-3 w-3"}),r[3]||(r[3]=m("span",null,"Function",-1))]),l.value.length>0?(p(),$("div",Ou,[(p(!0),$($e,null,_e(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)]),m("div",Du,[m("div",Bu,[m("div",Vu,K(e.tool.displayName),1)]),e.detail.description?(p(),$("p",Uu,K(e.detail.description),1)):W("",!0)])]),o.value||a.value?(p(),$("div",Hu,[m("div",zu,[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":""])},[m("div",ju,[Q(I(Mt),{class:"h-3 w-3"}),r[4]||(r[4]=fe(" Args ",-1))]),Q(Po,{nodes:n.value,"empty-label":"No args"},null,8,["nodes"])],2)):W("",!0)])])):W("",!0)],34))}}),Xu={class:"flex items-center gap-2 text-[10px] font-bold uppercase tracking-[0.2em] opacity-60"},Ku={class:"mt-1.5 truncate text-sm font-semibold text-neutral-900 dark:text-neutral-100"},Yu={key:0,class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},qu=Ie({__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:gt},subagent:{label:"Subagent",classes:"border-emerald-300 bg-emerald-50/90 dark:border-emerald-700 dark:bg-emerald-950/30",icon:Eu},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"),u=O(()=>{const A=n.data.description;return A?A.length>48?A.slice(0,45)+"...":A:""}),d=D(null),f=D(null),g=D([]),y=D(null),x=D(null),c=O(()=>n.data.kind==="tool"||n.data.kind==="prompt"||n.data.kind==="handoff");let b=0;Pe(()=>[n.data.name,n.refreshEpoch??0],async()=>{const A=++b;c.value&&o("detail-loading",!0);try{const N=await Cd(n.data);if(A!==b)return;f.value=N.functionTool,d.value=N.promptTool?.prompt||null,g.value=N.promptTool?.nestedTools||[],x.value=N.promptTool?.model||null,y.value=N.handoffAgent}finally{A===b&&c.value&&o("detail-loading",!1)}},{immediate:!0});const C=O(()=>x.value?Ue(`/api/providers/${encodeURIComponent(x.value.provider)}/icon?model=${encodeURIComponent(x.value.model)}`):d.value?Ue(`/api/providers/${encodeURIComponent(d.value.model_provider)}/icon?model=${encodeURIComponent(d.value.model_id)}`):""),S=O(()=>x.value?.name||d.value?.model_name),T=O(()=>x.value?.provider||d.value?.model_provider),k=O(()=>x.value?.model||d.value?.model_id||null);return(A,N)=>s.value&&f.value?(p(),ce(Fu,{key:0,tool:e.data,detail:f.value,selected:e.selected,hovered:e.hovered,onSelect:N[0]||(N[0]=L=>o("select"))},null,8,["tool","detail","selected","hovered"])):r.value&&d.value?(p(),ce(Vo,{key:1,prompt:d.value,tools:g.value,"tool-config":e.data.config,variables:I(ra)(d.value),"variable-env-names":I(sa)(d.value),"model-name":S.value,"model-provider":T.value,"model-actual":k.value,"model-icon-src":C.value,"model-capabilities":x.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:N[1]||(N[1]=L=>o("select")),onEditSurface:N[2]||(N[2]=L=>o("edit-surface",L)),onHoverEditTarget:N[3]||(N[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&&y.value?(p(),ce(Ao,{key:2,data:y.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:N[4]||(N[4]=L=>o("select")),onAction:N[5]||(N[5]=L=>o("view-agent",y.value.name)),onEditSurface:N[6]||(N[6]=L=>o("edit-surface",L)),onHoverEditTarget:N[7]||(N[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:N[8]||(N[8]=Me(L=>o("select"),["stop"])),onKeydown:[N[9]||(N[9]=je(Me(L=>o("select"),["prevent","stop"]),["enter"])),N[10]||(N[10]=je(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(xt)(e.selected,e.hovered)])},[m("div",Xu,[(p(),ce(lt(l.value.icon),{class:"h-3.5 w-3.5"})),fe(" "+K(l.value.label),1)]),m("div",Ku,K(e.data.displayName),1),u.value?(p(),$("div",Yu,K(u.value),1)):W("",!0)],34))}}),Gu={class:"flex items-center gap-2 text-[10px] font-bold uppercase tracking-[0.2em] text-neutral-500 dark:text-neutral-400"},Wu={class:"mt-1.5 truncate text-sm font-medium text-neutral-900 dark:text-neutral-100"},Qu=Ie({__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]=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(xt)(e.selected,e.hovered)])},[m("div",Gu,[Q(I(Yn),{class:"h-3.5 w-3.5"}),n[3]||(n[3]=fe(" Hook ",-1))]),m("div",Wu,K(e.data.hook),1)],34))}}),Ju={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"},Zu={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"},ec={"data-model-anchor":"",class:"flex items-center gap-2 px-4 pt-0.5 pb-3"},tc=["src"],nc={class:"min-w-0"},ac={class:"truncate text-[14px] font-semibold text-neutral-900 dark:text-neutral-100"},oc={key:0,class:"truncate font-mono text-[10px] text-neutral-400 dark:text-neutral-500"},rc={key:1,class:"truncate text-[10px] text-neutral-400 dark:text-neutral-500"},sc={key:0},lc={key:1,class:"text-neutral-300 dark:text-neutral-600 mx-1"},ic={key:2},dc={key:0,class:"grid grid-cols-2 border-t border-neutral-200 dark:border-neutral-700"},uc={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"},cc={class:"text-[9px] uppercase leading-tight tracking-[0.14em]"},fc={class:"mt-0.5 font-mono text-[11px] leading-tight text-neutral-600 dark:text-neutral-300"},mc={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"},hc={class:"uppercase tracking-[0.16em]"},pc={class:"min-w-0 truncate font-mono text-right"},vc=Ie({__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(()=>Ue(`/api/providers/${encodeURIComponent(n.data.provider)}/icon?model=${encodeURIComponent(n.data.model||"")}`)),i=O(()=>{const S=n.data.capabilities||{};return[{key:"images",label:"Vision",enabled:S.supportsImages===!0},{key:"tools",label:"Tool Calls",enabled:S.supportsToolCalls===!0},{key:"stream",label:"Streaming",enabled:S.supportsStreaming===!0},{key:"json",label:"JSON",enabled:S.supportsJsonMode===!0}]}),u=O(()=>n.data.providerTools||[]),d=O(()=>n.data.fallbacks||[]),f=O(()=>{const S=n.data.capabilities||{},T=[];return typeof S.maxContextTokens=="number"&&T.push({label:"Max context",value:S.maxContextTokens.toLocaleString()}),typeof S.maxOutputTokens=="number"&&T.push({label:"Max output",value:S.maxOutputTokens.toLocaleString()}),T}),g=S=>{if(S==null||Number.isNaN(S))return null;if(S===0)return"$0";const T=S>=1?S.toFixed(2):S.toFixed(4);return`$${parseFloat(T)}`},y=S=>{if(!S)return null;const T=g(S.min),k=g(S.max);return!T||!k?null:T===k?T:`${T}-${k}`},x=O(()=>{const S=n.data.pricing_range?.input;return S?y(S):g(n.data.input_price)}),c=O(()=>{const S=n.data.pricing_range?.output;return S?y(S):g(n.data.output_price)}),b=O(()=>!!(x.value||c.value)),C=O(()=>{const S=[];if(u.value.length>0){const T=u.value.slice(0,2).join(", "),k=u.value.length>2?", …":"";S.push({label:"Provider tools",value:T+k})}if(d.value.length>0){const T=d.value.slice(0,2).map(A=>A.name).join(", "),k=d.value.length>2?", …":"";S.push({label:"Fallbacks",value:T+k})}return S});return(S,T)=>(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(xt)(e.selected,e.hovered)]),onOpen:T[1]||(T[1]=k=>o("edit-surface",k)),onHoverTarget:T[2]||(T[2]=k=>o("hover-edit-target",k))},{default:xe(()=>[m("header",null,[m("div",Ju,[Q(I(fo),{class:"h-3 w-3"}),T[3]||(T[3]=m("span",null,"Model",-1)),e.data.provider?(p(),$("span",Zu,K(e.data.provider),1)):W("",!0)]),m("div",ec,[m("img",{src:r.value,alt:"",class:"h-5 w-5 shrink-0 rounded-sm",onError:T[0]||(T[0]=k=>k.target.style.visibility="hidden")},null,40,tc),m("div",nc,[m("div",ac,K(e.data.name),1),e.data.model&&e.data.model!==e.data.name?(p(),$("div",oc,K(e.data.model),1)):W("",!0),b.value?(p(),$("div",rc,[x.value?(p(),$("span",sc,[T[4]||(T[4]=m("span",{class:"text-neutral-300 dark:text-neutral-600"},"in",-1)),fe(" "+K(x.value)+"/M ",1)])):W("",!0),x.value&&c.value?(p(),$("span",lc,"·")):W("",!0),c.value?(p(),$("span",ic,[T[5]||(T[5]=m("span",{class:"text-neutral-300 dark:text-neutral-600"},"out",-1)),fe(" "+K(c.value)+"/M ",1)])):W("",!0)])):W("",!0)])])]),i.value.length>0?(p(),$("div",dc,[(p(!0),$($e,null,_e(i.value,(k,A)=>(p(),$("div",{key:k.key,class:ue(["flex items-center gap-2 px-4 py-2",A%2===1?"border-l border-neutral-200 dark:border-neutral-700":"",A>=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(),$("div",uc,[(p(!0),$($e,null,_e(f.value,(k,A)=>(p(),$("div",{key:k.label,class:ue(["px-4 py-2",A>0?"border-l border-neutral-200 dark:border-neutral-700":""])},[m("div",cc,K(k.label),1),m("div",fc,K(k.value),1)],2))),128))])):W("",!0),C.value.length>0?(p(),$("div",mc,[(p(!0),$($e,null,_e(C.value,k=>(p(),$("div",{key:k.label,class:"flex items-baseline justify-between gap-3"},[m("span",hc,K(k.label),1),m("span",pc,K(k.value),1)]))),128))])):W("",!0)]),_:1},8,["target","active","edit-data","class"]))}}),gc={class:"relative flex-1 overflow-hidden bg-neutral-100/50 dark:bg-neutral-950/50"},xc=["aria-label","onClick","onKeydown"],yc={class:"pointer-events-none absolute inset-0 h-full w-full","aria-hidden":"true"},bc=["id"],kc=["fill"],wc={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"},$c={class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-600 dark:text-neutral-300"},Mc={key:0,class:"absolute inset-0 z-10 flex items-center justify-center bg-neutral-100 dark:bg-neutral-950"},Tc={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"},Cc={key:1,class:"absolute inset-0 flex flex-col items-center justify-center gap-3 text-neutral-400 dark:text-neutral-600"},Sc=Ie({__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=D(null),l=D(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(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=D(!1),{state:u,isPanning:d,transformStyle:f,scalePercent:g,onWheel:y,onPointerDown:x,onPointerMove:c,onPointerUp:b,shouldHandleClick:C,zoomIn:S,zoomOut:T,fitToView:k,resetAutoFitLock:A,focusNode:N,setContentBounds:L,saveViewport:te,restoreViewport:G}=Al(a,{maxScale:1.2,panPadding:40});Pe(u,()=>os(),{deep:!0,flush:"post"}),Pa(ee=>{const Z=a.value;Z&&(Z.addEventListener("wheel",y,{passive:!1}),ee(()=>Z.removeEventListener("wheel",y)))}),Qr(()=>{a.value?.removeEventListener("wheel",y)});const Y=Ln(n,"layout"),P=Ln(n,"loading"),M=Ln(n,"selectedNodeId"),{layoutStable:v,measurements:_,nodesWithMeasuredSizes:q,nodeMetrics:V,measureNode:H,measuredBounds:E}=_l(Y,P,ee=>k(ee,{force:!1}),ee=>o("nodes-measured",ee),A);Pe(()=>n.loading,ee=>{ee&&(i.value=!1)}),Pe([v,r],([ee,Z])=>{ee&&!Z&&(i.value=!0)},{immediate:!0});const j=O(()=>Nl({hasAgent:n.hasAgent,hasError:!!n.error,loadingComposition:n.loading,layoutStable:v.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)}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 pe=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 h=new Set([ee]);for(const w of n.layout.edges)w.from===ee&&h.add(w.to),w.to===ee&&h.add(w.from);return h});function se(ee){const Z=pe.value;return Z?Z.has(ee)?{}:{opacity:"0.25",transition:"opacity 120ms ease-out"}:{}}function me(ee){const Z=pe.value;if(!Z)return!0;const h=n.layout.groups.find(w=>w.id===ee);if(!h)return!0;for(const w of n.layout.nodes)if(Z.has(w.id)&&w.x>=h.x&&w.y>=h.y&&w.x+w.width<=h.x+h.width&&w.y+w.height<=h.y+h.height)return!0;return!1}const{handleCanvasClick:z,handleGroupClick:U,handleNodeSelect:J}=Il({containerRef:a,layout:Y,selectedNodeId:M,layoutStable:v,measurements:_,viewportState:u,shouldHandleClick:C,focusNode:N,saveViewport:te,restoreViewport:G,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",gc,[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(x)&&I(x)(...h)),onPointermove:Z[7]||(Z[7]=(...h)=>I(c)&&I(c)(...h)),onPointerup:Z[8]||(Z[8]=(...h)=>I(b)&&I(b)(...h)),onPointercancel:Z[9]||(Z[9]=(...h)=>I(b)&&I(b)(...h)),onClick:Z[10]||(Z[10]=(...h)=>I(z)&&I(z)(...h))},[Q(Ll),m("div",{class:"absolute origin-top-left will-change-transform",style:De({...I(f),opacity:I(v)?1:0,transition:I(v)?"opacity 200ms ease-out":"none",pointerEvents:I(v)?"auto":"none"})},[(p(!0),$($e,null,_e(e.layout.groups,h=>(p(),$($e,{key:h.id},[h.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:`${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(),$("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(w=>I(U)(w,h),["stop"]),onKeydown:w=>ve(w,h),style:De({left:`${h.x}px`,top:`${h.y}px`,width:`${h.width}px`,height:`${h.height}px`,borderRadius:"8px",opacity:me(h.id)?1:.3})},[(p(),$("svg",yc,[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,bc)]),m("rect",{width:"100%",height:"100%",fill:`url(#subgrid-${h.id})`},null,8,kc)])),m("div",wc,[m("span",$c,K(h.label),1),h.subagent?(p(),$($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,xc)],64))),128)),e.layout.nodes.length>0?(p(),ce(gi,{key:0,nodes:I(q),edges:e.layout.edges,groups:e.layout.groups,"node-metrics":I(V),"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,_e(e.layout.nodes,h=>(p(),$($e,{key:h.id},[h.type==="agent"?(p(),ce(ad,{key:0,ref_for:!0,ref:w=>F(h.id,w),"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:w=>I(J)(h),onEditSurface:w=>le(h,w),onHoverEditTarget:w=>ie(h,w),onMouseenter:w=>o("hover-node",h.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"])):h.type==="side"?(p(),ce(Su,{key:1,ref_for:!0,ref:w=>F(h.id,w),"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:w=>I(J)(h),onEditSurface:w=>le(h,w),onHoverEditTarget:w=>ie(h,w),onMouseenter:w=>o("hover-node",h.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"])):h.type==="tool"?(p(),ce(qu,{key:2,ref_for:!0,ref:w=>F(h.id,w),"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:w=>I(J)(h),onEditSurface:w=>le(h,w),onHoverEditTarget:w=>ie(h,w),onViewAgent:Z[2]||(Z[2]=w=>o("view-agent",w)),onDetailLoading:w=>s(h.id,w),onMouseenter:w=>o("hover-node",h.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"])):h.type==="hook"?(p(),ce(Qu,{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:w=>I(J)(h),onMouseenter:w=>o("hover-node",h.id),onMouseleave:Z[4]||(Z[4]=w=>o("hover-node",null))},null,8,["data-canvas-node-id","data","selected","hovered","style","onSelect","onMouseenter"])):h.type==="model"?(p(),ce(vc,{key:4,ref_for:!0,ref:w=>F(h.id,w),"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:w=>I(J)(h),onEditSurface:w=>le(h,w),onHoverEditTarget:w=>ie(h,w),onMouseenter:w=>o("hover-node",h.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===h.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:`${h.x}px`,top:`${h.y}px`,width:`${I(_).get(h.id)?.w??h.width}px`,height:`${I(_).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(lo,{"leave-active-class":"transition-opacity duration-200 ease-out","leave-to-class":"opacity-0"},{default:xe(()=>[j.value?(p(),$("div",Mc,[...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"}),fe(" Preparing diagram ")],-1)])])):W("",!0)]),_:1}),e.error?(p(),$("div",Tc,K(e.error),1)):W("",!0),!e.hasAgent&&!e.loading&&!e.error?(p(),$("div",Cc,[Q(I(mo),{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(v)?(p(),ce(Ci,{key:2,"scale-percent":I(g),onZoomIn:I(S),onZoomOut:I(T),onFitView:Z[11]||(Z[11]=h=>I(k)(I(E)(),{force:!0}))},null,8,["scale-percent","onZoomIn","onZoomOut"])):W("",!0)]))}}),_c=Ie({__name:"InspectorPanel",props:{node:{},compositionSummary:{}},emits:["saved","close"],setup(e,{emit:t}){const n=e,o=t,a=D("inspect"),l=D(null),s=D(null),r=D(null),i=D(null),{saving:u,apiError:d,saveAgent:f,clearAgentError:g}=ho(),{saving:y,apiError:x,savePrompt:c,clearPromptError:b}=rs(),{saving:C,apiError:S,saveModel:T,clearModelError:k}=ss(),A=O(()=>u.value||y.value||C.value),N=O(()=>a.value==="edit-prompt"?x.value:a.value==="edit-model"?S.value:d.value);function L(M){return M?.id||M?.name||null}Pe(()=>n.node,M=>{if(g(),b(),k(),!M){a.value="inspect",l.value=null;return}if(M.type==="agent")l.value=M.value,a.value="edit-agent";else if(M.type==="side"){const v=M.value;v.prompt?(l.value=v.prompt,a.value="edit-prompt"):(a.value="inspect",l.value=null)}else M.type==="model"?(l.value=M.value,a.value="edit-model"):(a.value="inspect",l.value=null)});async function te(M){(await f({mode:"edit",data:M,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 G(M){const v=L(l.value);(await c({mode:"edit",data:M,editingId:v,formNode:r.value?.formNode})).ok&&(a.value="inspect",l.value=null,o("saved"))}async function Y(M){const v=L(l.value);(await T({mode:"edit",data:M,editingId:v,formNode:i.value?.formNode})).ok&&(a.value="inspect",l.value=null,o("saved"))}function P(){a.value="inspect",l.value=null,g(),b(),k(),o("close")}return(M,v)=>(p(),$("div",null,[a.value==="edit-agent"?(p(),ce(vo,{key:0,ref_key:"agentModalRef",ref:s,"model-value":!0,"edit-agent":l.value,mode:"edit",saving:A.value,"api-error":N.value,onSave:te,"onUpdate:modelValue":P},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:A.value,onSave:G,"onUpdate:modelValue":P},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:A.value,onSave:Y,"onUpdate:modelValue":P},null,8,["edit-model","saving"])):W("",!0)]))}}),Ic={class:"relative"},Ec={key:1,class:"mt-[2px] inline-block h-3 w-3 shrink-0"},Ac=["src"],Nc={class:"min-w-0 flex-1"},Pc={class:"flex min-w-0 items-start gap-2"},Lc={key:0,class:"mt-[1px] shrink-0 text-[11px] leading-none font-semibold text-rose-500 dark:text-rose-400","aria-label":"Required"},Rc=["onKeydown"],Oc={key:2,class:"ml-auto shrink-0 truncate pl-2 text-[10px] text-neutral-400 dark:text-neutral-500",style:{"max-width":"35%"}},Dc={key:0,class:"mt-1 flex flex-wrap gap-1"},Bc={key:2,class:"mt-1 grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5 text-[10.5px]"},Vc={class:"truncate text-neutral-400 dark:text-neutral-500"},Uc={key:0,class:"relative"},Hc=10,zc=Ie({__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:gt,subagent:tt,handoff:oa,provider:Mt,mcp:Mt,unknown:sn},o={agent:tt,side:tt,prompt:gt,model:fo,variables:Jn,variable:Jn,hooks:Yn,hook:Yn,tools:sn,tool:Xt,subagent:tt,config:Oa,section:Oa,schema:Mt},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:u}=Kt(),d=D(null),f=D(!1),g=O(()=>r.node.editSurface??r.inheritedEditSurface??null),y=O(()=>r.node.editSurface?d.value:r.inheritedAnchorEl??null),x=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"}}),c=O(()=>!!r.node.children&&r.node.children.length>0),b=O(()=>c.value||r.node.collapsibleBody===!0),C=O(()=>!!r.node.isRoot),S=O(()=>C.value?!0:!r.collapsed.has(r.node.id)),T=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 A=O(()=>d.value&&u.value?.anchorEl===d.value?!0:!r.node.editSurface||r.node.anchorOnlyEditSurface?!1:jt(r.node.editSurface,u.value?.target)?!0:u.value?!1:r.node.cardBacked===!0&&T.value&&!k(r.selectedCanvasNodeId)),N=O(()=>u.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)),L=O(()=>jt(u.value?.target,x.value)),te=O(()=>C.value?0:Math.max(0,r.depth-1)),G=O(()=>te.value*Hc),Y=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]||Mt}),P=O(()=>{const z=r.node;return z.kind!=="agent"&&z.kind!=="subagent"?null:z.avatarSrc?z.avatarSrc:z.avatarSeed?na(z.avatarSeed):null}),M=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"}),v=O(()=>{const z=r.node;return z.kind==="agent"||z.kind==="subagent"||z.kind==="tool"&&z.toolKind==="handoff"}),_=O(()=>{const z=["group relative flex items-start gap-1.5 px-2 cursor-pointer select-none transition-colors"];return z.push(v.value?"py-[6px] text-[12.5px]":"py-[4px]"),v.value&&z.push("relative z-[1] structure-row-agent-bg"),A.value?z.push("rounded-r-md structure-row-active"):N.value?z.push("rounded-md structure-row-hover"):v.value?z.push("rounded-md"):z.push("rounded-md agents-surface-hover"),r.node.virtual&&!T.value&&!A.value&&z.push("text-neutral-600 dark:text-neutral-400"),z.join(" ")}),q=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 V(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(),!C.value&&i("toggle",r.node.id)}function j(z){z.stopPropagation(),F()}function F(){if(f.value){f.value=!1;return}if(g.value&&y.value){i("edit",g.value,y.value,r.node.canvasNodeId,r.node.editData);return}i("select",r.node.canvasNodeId),!C.value&&b.value&&!S.value&&i("toggle",r.node.id)}function X(z){z.key!=="Enter"&&z.key!==" "||(z.preventDefault(),z.stopPropagation(),F())}function pe(z){z.button===0&&(!g.value||!y.value||(z.stopPropagation(),f.value=!0,i("edit",g.value,y.value,r.node.canvasNodeId,r.node.editData)))}function se(){i("hover",r.node.canvasNodeId,g.value)}function me(z){z.stopPropagation();const U=x.value,J=z.currentTarget;!U||!(J instanceof HTMLElement)||i("edit",U,J,r.node.canvasNodeId,r.node.editData)}return(z,U)=>{const J=vt("StructureTreeRow",!0),le=Jr("auto-animate");return p(),$("div",Ic,[m("div",{class:"mx-1",style:De({paddingLeft:`${G.value}px`})},[A.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:`${G.value+5}px`})},null,4)):W("",!0),m("div",{ref_key:"rowRef",ref:d,class:ue(_.value),role:"button",tabindex:"0",onClick:j,onKeydown:X,onPointerdown:pe,onMouseenter:se},[b.value&&!C.value?(p(),ce(I(xo),{key:0,class:ue(["mt-[2px] h-3 w-3 shrink-0 text-neutral-400 transition-transform",S.value?"rotate-90":""]),onClick:E},null,8,["class"])):C.value?W("",!0):(p(),$("span",Ec)),P.value?(p(),$("img",{key:2,src:P.value,alt:"",class:"mt-[1px] h-4 w-4 shrink-0 rounded object-cover"},null,8,Ac)):e.node.hideIcon?W("",!0):(p(),ce(lt(Y.value),{key:3,class:ue(["mt-[1px] h-3.5 w-3.5 shrink-0",M.value])},null,8,["class"])),m("div",Nc,[m("div",Pc,[m("span",{class:ue(q.value)},K(e.node.label),3),e.node.required?(p(),$("span",Lc," * ")):W("",!0),x.value?(p(),ce(I(ls),{key:1,content:"Edit prompt text",position:"right",disabled:L.value},{default:xe(()=>[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",L.value?"text-accent-700 dark:text-accent-300":""]),"aria-label":"Edit prompt text",onClick:me,onPointerdown:U[0]||(U[0]=Me(()=>{},["stop"])),onKeydown:[je(Me(me,["prevent","stop"]),["enter"]),je(Me(me,["prevent","stop"]),["space"])],onMouseenter:U[1]||(U[1]=Me(ie=>i("hover",e.node.canvasNodeId,x.value),["stop"])),onMouseleave:U[2]||(U[2]=Me(ie=>i("hover",e.node.canvasNodeId,g.value),["stop"]))},[Q(I(No),{class:"h-3.5 w-3.5"})],42,Rc)]),_:1},8,["disabled"])):W("",!0),e.node.detail?(p(),$("span",Oc,K(e.node.detail),1)):W("",!0)]),(!e.node.collapsibleBody||S.value)&&e.node.badges&&e.node.badges.length>0?(p(),$("div",Dc,[(p(!0),$($e,null,_e(e.node.badges,ie=>(p(),$("span",{key:ie.label,class:ue(V(ie))},K(ie.label),3))),128))])):W("",!0),(!e.node.collapsibleBody||S.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&&!T.value?"opacity-90":""])},K(e.node.description),3)):W("",!0),(!e.node.collapsibleBody||S.value)&&e.node.metaRows&&e.node.metaRows.length>0?(p(),$("dl",Bc,[(p(!0),$($e,null,_e(e.node.metaRows,ie=>(p(),$($e,{key:ie.label},[m("dt",Vc,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),c.value?Zr((p(),$("div",Uc,[S.value?(p(!0),$($e,{key:0},_e(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":g.value,"inherited-anchor-el":y.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),S.value&&!C.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:`${G.value+14}px`})},null,4)):W("",!0)])),[[le,{duration:60,easing:"ease-out"}]]):W("",!0)])}}});function jc(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 Fc={class:"structure-tree flex h-full flex-col overflow-hidden border-r border-neutral-200 dark:border-neutral-800"},Xc={key:0,class:"px-3 py-4 text-xs text-neutral-400 dark:text-neutral-500"},Kc=Ie({__name:"StructureTree",props:{root:{},selectedCanvasNodeId:{},hoveredCanvasNodeId:{},hoveredEditTarget:{}},emits:["select","edit","hover"],setup(e,{emit:t}){const n=e,o=t,a=D(new Set),l=D(null),s=D(new Set);function r(d){return jc(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 u=O(()=>!!n.root);return(d,f)=>(p(),$("div",Fc,[m("div",{class:"flex-1 overflow-y-auto py-1.5 text-[12px]",onMouseleave:f[3]||(f[3]=g=>o("hover",null,null))},[u.value?(p(),ce(zc,{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]=g=>o("select",g)),onEdit:f[1]||(f[1]=(g,y,x,c)=>o("edit",g,y,x,c)),onHover:f[2]||(f[2]=(g,y)=>o("hover",g,y)),onToggle:i},null,8,["node","collapsed","selected-canvas-node-id","hovered-canvas-node-id","hovered-edit-target"])):(p(),$("div",Xc," 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 Yc(e){return{entityType:"model",entityId:e.id}}function qc(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 Uo(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?Uo(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?`${qc(a)}`:"None",canvasNodeId:t,virtual:!0,editSurface:o,defaultCollapsed:a.length>0,children:a.length>0?Uo(a,t,`${n}schema__`):void 0}}function Ho(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 zo(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 $t(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=Lo(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(Gc)}));return{id:`${n}config`,kind:"config",label:"Prompt Config",canvasNodeId:t,virtual:!0,editSurface:l,defaultCollapsed:!0,children:s}}function Gc(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 Fo(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(", "),u=e.model.providerTools.length>2?", …":"";l.push({label:"Provider tools",value:i+u,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?Mo(t,e.model.id):n,virtual:!e.model,cardBacked:!!e.model,editSurface:e.model?Yc(e.model):a,editData:e.model||void 0}}function Wc(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 Qc(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 u=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:`${u.length}`,canvasNodeId:t,virtual:!0,editSurface:Ke(o,"tools",d),children:u.length>0?u.map((f,g)=>({id:`${n}${r}-${g}-${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:$t(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 Jc(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 Zc(e,t,n,o,a){const l=[],s=t.prompt.name,r=Ke(s,"basic"),i=Fo({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(...Qc(t.nestedTools,n,`${a}prompt__`,s));const u=zo(t.prompt.hooks.map(d=>({id:d,hook:d})),n,`${a}prompt__`);return u&&l.push(u),l}function ef(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 tf(e,t,n,o,a,l,s){if(!e.prompt)return null;const r=e.prompt.name,i=`${l}prompt__`,u=[],d=Ke(r,"basic"),f=Ke(r,"schema"),g=Ke(r,"variables"),y=Ke(r,"tools"),x=Fo({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);x&&u.push(x),u.push(jo(e.prompt,a,i,r)),u.push(ha(e.prompt.required_schema,a,i,f)),u.push(kn(e.variables,a,i,e.variableEnvNames||[],g));const c={};for(const T of e.tools){const k=T.kind==="provider"||T.kind==="mcp"?"tool":T.kind;(c[k]||=[]).push(T)}const b=new Map;e.tools.forEach((T,k)=>b.set(T,k));const C=[{key:"tool",label:"Functions"},{key:"prompt",label:"Sub-prompts"},{key:"handoff",label:"Handoffs"},{key:"subagent",label:"Sub-agents"}];u.push({id:`${i}tools`,kind:"tools",label:"Tools",detail:`${e.tools.length}`,canvasNodeId:a,virtual:!0,editSurface:y,children:C.map(({key:T,label:k})=>{const A=c[T]||[],N=T==="prompt"?"sub-prompts":T==="handoff"?"handoffs":T==="subagent"?"sub-agents":"functions";return{id:`${i}group-${T}`,kind:"tools",toolKind:T,label:k,detail:`${A.length}`,canvasNodeId:a,virtual:!0,editSurface:Ke(r,"tools",N),children:A.length>0?A.map(L=>nf(i,n,o,e,L,b.get(L),r,t,s)):void 0}})});const S=zo(e.hooks,a,i);return S&&u.push(S),{id:`${l}prompt`,kind:"prompt",tone:e.id==="a"?"sky":"amber",label:e.prompt.name,canvasNodeId:a,virtual:!0,cardBacked:!0,editSurface:d,children:u}}function nf(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}`,g=a.kind==="prompt"?"sub-prompts":a.kind==="handoff"?"handoffs":a.kind==="subagent"?"sub-agents":"functions",y=Ke(s,"tools",g);if(a.kind==="subagent"&&r[a.name]){const x=r[a.name],c=$o(t,o.id,l,a.kind,a.name),b=a.config.resumable,C=$t(a);return b&&typeof b=="object"&&C.push({label:b.max_instances===null||(b.max_instances??0)>1?"multi":"single",tone:"sky",mono:!0}),{id:f,kind:"subagent",label:x.agent.title||a.displayName,detail:a.name,badges:C.length>0?C:void 0,canvasNodeId:fn(c),toolKind:a.kind,avatarSrc:x.agent.icon||void 0,avatarSeed:x.agent.name,cardBacked:!0,editSurface:y,children:Xo(x.agent,x.sides,r,c,n,`${f}__`,i).children}}if(a.kind==="prompt"){const x=i.promptTools[a.name];return{id:f,kind:"tool",label:a.displayName||a.name,detail:x?.model?.name||x?.prompt.model_name||a.model||void 0,badges:$t(a),canvasNodeId:d,toolKind:a.kind,cardBacked:!0,editSurface:Ke(a.name,"basic"),children:x?Zc(a,x,d,n,`${f}__`):void 0,hideIcon:!0}}if(a.kind==="handoff"){const x=i.handoffs[a.name];return{id:f,kind:"tool",label:x?.title||a.displayName||a.name,detail:x?.name||void 0,badges:x?Ho(x):$t(a),canvasNodeId:d,toolKind:a.kind,defaultCollapsed:x?!0:void 0,cardBacked:!0,editSurface:y,children:x?ef(x,d,`${f}__`):void 0,hideIcon:!0}}if(a.kind==="tool"||a.kind==="provider"||a.kind==="mcp"){const x=i.functionTools[a.name];return{id:f,kind:"tool",label:a.displayName||a.name,badges:$t(a),canvasNodeId:d,toolKind:a.kind,defaultCollapsed:x?!0:void 0,cardBacked:!0,editSurface:y,children:x?Jc(x,d,`${f}__`):void 0,hideIcon:!0}}return{id:f,kind:"tool",label:a.displayName||a.name,badges:$t(a),canvasNodeId:d,toolKind:a.kind,hideIcon:!0,editSurface:y}}function af(e,t,n,o,a,l,s){const r=ia(o,t.id),i=`${l}side-${t.id}__`,u=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:u,children:[]};d.push(Wc(t,r,i,u));const f=tf(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:u,children:d}}function Xo(e,t,n,o,a,l,s,r=!1){const i=fn(o),u=gn(e.name,"variables"),d=[kn(e._variables||[],i,`${l}agent__`,Object.keys(e.env||{}),u),...t.map(f=>af(e.name,f,n,o,a,l,s))];return{id:`${l}agent`,kind:"agent",label:e.title||e.name,detail:e.name,badges:Ho(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 of(e,t,n,o){const a=wo(e.id||e.name),l=`${e.id||e.name}__`;return Xo(e,t,n,a,a,l,o,!0)}function rf(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 u of i.tools)if(u.kind==="tool"&&n.add(u.name),u.kind==="prompt"&&o.add(u.name),u.kind==="handoff"&&a.add(u.name),u.kind==="subagent"){const d=t[u.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 sf(e,t,n,o,a,l){const s=D({functionTools:{},promptTools:{},handoffs:{}});let r=0;return Pe(()=>e.value?{agentId:e.value.id||e.value.name,plan:rf(t.value,n.value),modelKeys:Object.keys(o.value),toolKeys:Object.keys(a.value),refreshEpoch:l?.value??0}:null,async i=>{const u=e.value;if(!i||!u){s.value={functionTools:{},promptTools:{},handoffs:{}};return}const d=++r,f=await Sd(i.plan,{toolsCatalog:a.value,models:o.value});d===r&&(s.value=f)},{immediate:!0}),O(()=>{const i=e.value;return i?of(i,t.value,n.value,s.value):null})}const Ko=Ie({__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=vt("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"])}}}),lf={class:"font-mono text-sm"},df={class:"flex items-center gap-2 py-1.5"},uf={class:"text-neutral-600 dark:text-neutral-400"},cf={class:"ml-auto"},Yo=Ie({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(Et,{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(Ko,{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(Yo,{children:t.children,getSelection:e.getSelection,setSelection:e.setSelection,isShared:e.isShared,getTypeColor:e.getTypeColor}):null])])))}}),ff=Ie({__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 g=0;const y=(T,k)=>{for(const A of T){const N=`${k}:${A.name}`;f.push({...A,type:k,uid:`${N}:${g++}`})}};y(d.constituents.agents,"agent"),y(d.constituents.prompts,"prompt"),y(d.constituents.tools,"tool"),y(d.constituents.models,"model"),y(d.constituents.hooks,"hook");const x=new Map,c=`agent:${d.agent}`;for(const T of f){const k=T.parentKey||c;`${T.type}:${T.name}`===c&&!T.parentKey||(x.has(k)||x.set(k,[]),x.get(k).push(T))}const b=new Set,C=T=>{const k=`${T.type}:${T.name}`,A=b.has(k);b.add(k);const N=[],L=x.get(k)||[];for(const te of L)N.push(C(te));return{name:T.name,type:T.type,filePath:T.filePath,sharedWith:T.sharedWith,discoveredVia:T.discoveredVia,children:N,uid:T.uid,isDuplicate:A}},S=f.find(T=>T.type==="agent"&&T.name===d.agent&&!T.parentKey);return S?C(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,u=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",lf,[m("div",df,[m("span",uf,K(a.value.name),1),Q(I(Et),{variant:u(a.value.type),size:"sm"},{default:xe(()=>[fe(K(a.value.type),1)]),_:1},8,["variant"]),m("div",cf,[Q(Ko,{value:s(a.value),"onUpdate:value":f[0]||(f[0]=g=>r(a.value,g))},null,8,["value"])])]),(p(),ce(lt(I(Yo)),{children:a.value.children,"get-selection":s,"set-selection":r,"is-shared":i,"get-type-color":u},null,8,["children"]))]))}}),mf={key:0,class:"flex items-center justify-center py-12"},hf={key:1,class:"py-4"},pf={key:2,class:"py-4 space-y-4"},vf={class:"space-y-2"},gf={class:"text-sm opacity-80"},xf={class:"text-sm opacity-80"},yf={class:"space-y-4"},bf={class:"grid grid-cols-2 gap-4"},kf={class:"col-span-2"},wf={class:"col-span-2"},$f={class:"col-span-2"},Mf={key:0,class:"mt-3 space-y-3"},Tf={class:"flex gap-2 border-b border-neutral-200 dark:border-neutral-700"},Cf={key:0},Sf=["innerHTML"],_f={class:"space-y-4"},If={class:"list-disc list-inside space-y-1"},Ef={class:"border border-neutral-200 dark:border-neutral-700 rounded-lg p-4 bg-neutral-50 dark:bg-neutral-900/50"},Af={class:"flex justify-between"},Nf=Ie({__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=D(null),r=D(!1),i=D(!1),u=D(null),d=D(null);let f=null;const g=D(""),y=D("1.0.0"),x=D("MIT"),c=D(""),b=D(null),C=D(""),S=D("edit"),T=D(!1),k=O(()=>C.value?cn(C.value):""),A=D(new Map);Pe(()=>o.modelValue,async H=>{H&&o.agent?await Promise.all([L(),te()]):N()});const N=()=>{V(),s.value=null,u.value=null,d.value=null,A.value=new Map,g.value="",y.value="1.0.0",x.value="MIT",c.value="",C.value="",S.value="edit",T.value=!1,rt(b)},L=async()=>{if(o.agent){r.value=!0,u.value=null;try{const H=await fetch(Ue(`/api/pack/${o.agent.id}/analyze`)),E=await H.json();if(!H.ok){u.value=E.error||"Failed to analyze agent";return}if(s.value=E,E.generatedReadme)C.value=E.generatedReadme;else{const j=G(o.agent?.id||"agent");C.value=Y(j,o.agent?.id||"agent",E.agentDescription)}M(E)}catch(H){u.value=H instanceof Error?H.message:"Failed to analyze agent"}finally{r.value=!1}}},te=async()=>{if(o.agent)try{const H=await fetch(Ue(`/api/pack/${o.agent.id}/metadata`));if(H.ok){const E=await H.json();g.value=E.packageName,y.value=P(E.version),x.value=E.license||"MIT",c.value=E.licenseOwner||""}else g.value=G(o.agent.id),y.value="1.0.0",x.value="MIT",c.value=""}catch{g.value=G(o.agent?.id||"agent"),y.value="1.0.0",x.value="MIT",c.value=""}},G=H=>`standardagent-${H.toLowerCase().replace(/_/g,"-")}`,Y=(H,E,j)=>`# ${H}
|
|
1
|
+
import{r as D,c as O,Y as xn,X as Zn,w as Pe,h as ze,t as Kr,A as st,b as $,e as p,f as m,d as Ie,o as ea,a as At,K as Me,j as Q,q as W,J as I,u as K,F as $e,l as _e,m as ue,s as fe,z as ce,Z as lo,k as xe,ac as Yr,ad as qr,B as lt,g as Gr,O as vt,n as De,P as je,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 io,ah as uo,W as La,ai as es,aj as ts,ak as Ra}from"./vue.js";import{I as tt,g as ns,h as na,i as gt,j as as,u as Kt,k as aa,m as co,n as Mt,o as oa,b as Ue,p as jt,q as fo,t as mo,v as os,w as ho,x as rs,y as ss,z as Oa,A as ls,B as ht,C as Ve,_ as _t,e as rt,f as It,D as is,E as ds,F as Rn,G as us,T as cs}from"./index.js";import{f as Qe,b as nt,a as at,s as fs,u as ms,c as hs,d as po,g as ra,e as sa,A as vo,_ as ps,h as Da,i as vs,C as gs}from"./ThreadInspectorPane.vue_vue_type_script_setup_true_lang.js";import{I as go}from"./plus.js";import{I as On,_ as Et}from"./package.js";import{I as Dn,a as Bn,b as Vn,c as xs,d as xo}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"./timeAgo.js";import"./CopyButton.vue_vue_type_script_setup_true_lang.js";import"./check.js";import"./copy.js";import"./JsonViewer.js";function ws(){const e=D([]),t=D({}),n=D({}),o=D({}),a=D(!0),l=D(null),s=D(""),r=O(()=>{const u=s.value.trim().toLowerCase();return u?e.value.filter(d=>d.name.toLowerCase().includes(u)||d.title.toLowerCase().includes(u)||d.type.toLowerCase().includes(u)):e.value});async function i(){a.value=!0,l.value=null;try{const[u,d,f,g]=await Promise.all([Qe("/agents"),Qe("/models"),Qe("/tools"),Qe("/hooks")]);e.value=(u.agents||[]).sort((y,x)=>y.name.localeCompare(x.name)),t.value=Object.fromEntries((d.models||[]).map(y=>[y.id,y])),n.value=f||{},o.value=Object.fromEntries((g.hooks||[]).map(y=>[y.id,y]))}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=D(null),a=D(null),l=D(null),s=D(null),r=D(null),i=D({}),u=D(!1),d=D(null);let f=0,g=0,y=0;function x(){return{models:e.models.value,toolsCatalog:e.toolsCatalog.value,hooks:e.hooks.value}}const c=O(()=>{const G=a.value;return G?[nt(G,"a",l.value,x()),nt(G,"b",s.value,x())]:[]}),b=O(()=>{const G=c.value;return{promptCount:G.filter(Y=>!!Y.prompt).length,toolCount:G.reduce((Y,P)=>Y+P.tools.length,0),outgoingCount:G.reduce((Y,P)=>Y+P.outgoingAgents.length,0),variableCount:G.reduce((Y,P)=>Y+P.variables.length,0)}});function C(G,Y){return G===f&&o.value===Y}async function S(G){const Y=++y;try{await n.replace({query:{...t.query,agent:G}})}catch{}finally{Y===y&&(y=0)}}function T(){return y>0}async function k(G,Y,P){const M=++g,v=new Set;for(const q of G)for(const V of q.outgoingAgents)V.kind==="subagent"&&v.add(V.name);if(v.size===0){M===g&&C(Y,P)&&(i.value={});return}const _={};await Promise.all([...v].map(async q=>{if(e.agents.value.find(H=>H.name===q&&!H.packed))try{const E=(await Qe(`/agents/${encodeURIComponent(q)}`)).agent,[j,F]=await Promise.all([at(E.side_a_agent_prompt),at(E.side_b_agent_prompt)]);if(M!==g||!C(Y,P))return;_[q]={agentName:q,agent:E,sides:[nt(E,"a",j,x()),nt(E,"b",F,x())]}}catch{}})),M===g&&C(Y,P)&&(i.value=_)}async function A(G,Y=!0){const P=e.agents.value.find(v=>v.id===G||v.name===G);if(!P)return;const M=++f;if(o.value=P.id,r.value={type:"agent",value:P},i.value={},!fs(P)){a.value=null,l.value=null,s.value=null,d.value="Packed agents are not yet supported in the composition browser.",u.value=!1,Y&&S(P.id);return}u.value=!0,d.value=null,Y&&S(P.id);try{const v=await Qe(`/agents/${encodeURIComponent(P.name)}`),[_,q]=await Promise.all([at(v.agent.side_a_agent_prompt),at(v.agent.side_b_agent_prompt)]);if(!C(M,P.id))return;a.value=v.agent,l.value=_,s.value=q,r.value={type:"agent",value:v.agent};const V=[nt(v.agent,"a",_,x()),nt(v.agent,"b",q,x())];k(V,M,P.id)}catch{if(!C(M,P.id))return;d.value="Unable to load the selected agent composition.",a.value=null,l.value=null,s.value=null}finally{C(M,P.id)&&(u.value=!1)}}function N(G){r.value=G}function L(){a.value?r.value={type:"agent",value:a.value}:r.value=null}async function te(){const G=a.value,Y=o.value;if(!G||!Y)return!1;const P=++f;try{const M=await Qe(`/agents/${encodeURIComponent(G.name)}`),[v,_]=await Promise.all([at(M.agent.side_a_agent_prompt),at(M.agent.side_b_agent_prompt)]);if(!C(P,Y))return!1;const q=(l.value?.tools?.length??0)+(s.value?.tools?.length??0),V=(v?.tools?.length??0)+(_?.tools?.length??0),E=M.agent.side_a_agent_prompt!==G.side_a_agent_prompt||M.agent.side_b_agent_prompt!==G.side_b_agent_prompt||q!==V;a.value=M.agent,l.value=v,s.value=_;const j=[nt(M.agent,"a",v,x()),nt(M.agent,"b",_,x())];return k(j,P,Y),E}catch{return!0}}return{selectedAgentId:o,selectedAgentDetail:a,selectedNode:r,sideCompositions:c,subagentCompositions:i,compositionSummary:b,loadingComposition:u,compositionError:d,selectAgent:A,selectInspectorNode:N,deselectNode:L,refreshComposition:te,isRouteSyncing:T}}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 yo(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 bo(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}-${bo(t)}-${yo(t)}${o}`}function ko(e,...t){return`${e}${t.join(Ba)}${Ba}`}function wo(e){return ko(qn("agent",e))}function $o(e,t,n,o,a){return ko(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`,Mo=(e,t)=>`${e}model-${bo(t)}-${yo(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,wt=36,Un=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 c of e.modelUsages){const b=`${c.model.id}|${c.consumerNodeId}`;if(s.has(b))continue;s.add(b);const C=l.get(c.model.id);C?C.push(c):l.set(c.model.id,[c])}const r=new Map;for(const c of e.nodes)r.set(c.id,c);const i=e.width,u=0,d=[],f=e.groups.map(c=>({x:c.x,y:c.y,w:c.width,h:c.height}));function g(c,b){return b.x>=c.x&&b.y>=c.y&&b.x+b.w<=c.x+c.w&&b.y+b.h<=c.y+c.h}function y(c,b,C,S,T=16){const k=Math.min(b,C),A=Math.max(b,C);return S.some(N=>A>N.x-T&&k<N.x+N.w+T&&c>N.y-T&&c<N.y+N.h+T)}function x(c,b,C,S,T=16){const k=Math.min(b,C),A=Math.max(b,C);return S.some(N=>A>N.y-T&&k<N.y+N.h+T&&c>N.x-T&&c<N.x+N.w+T)}for(const[c,b]of l){const C=b.map(E=>({usage:E,node:r.get(E.consumerNodeId)})).filter(E=>!!E.node);if(C.length===0)continue;const S=C.map(E=>Hs(E.node,n)),T=C.map(E=>ft(E.node,n)),k=f.filter(E=>T.every(j=>g(E,j))),A=f.filter(E=>!k.includes(E)),N=b[0].model,L=Mo(t,c),te=n[L],G=te?.w??dn,Y=te?.h??Bs;let P=0,M=0,v;if(C.length===1){const E=C[0],j=ft(E.node,n),F=za(E.node),X=F||E.usage.sideId==="a"?"outboard-left":"outboard-right",pe=j.y+j.h/2-Y/2,se=X==="outboard-left"?j.x-qe-G:j.x+j.w+qe,me=j.x+j.w/2-G/2,z=j.y+j.h+qe,U=new Set(C.map(ne=>ne.node.id)),J=[...d,...e.nodes.filter(ne=>!U.has(ne.id)).map(ne=>ft(ne,n)),...A],le=[se],ie=[pe],ve=[me],ee=[z];for(const ne of J)X==="outboard-left"?le.push(ne.x-qe-G):le.push(ne.x+ne.w+qe),ie.push(ne.y-Y-ct),ie.push(ne.y+ne.h+ct),ve.push(ne.x-G-ct),ve.push(ne.x+ne.w+ct),ee.push(ne.y-Y-ct),ee.push(ne.y+ne.h+ct);let Z=se,h=pe,w=Number.POSITIVE_INFINITY,B=null;const oe=new Set,de=[{mode:X,xs:le,ys:ie},{mode:"below-row",xs:ve,ys:ee}];for(const ne of de)for(const re of ne.xs)for(const be of ne.ys){const ke=`${ne.mode}:${Math.round(re)}:${Math.round(be)}`;if(oe.has(ke)||(oe.add(ke),ne.mode==="outboard-left"&&re+G>j.x-8)||ne.mode==="outboard-right"&&re<j.x+j.w+8)continue;const ge=J.filter(ye=>Hn({x:re,y:be,w:G,h:Y},{x:ye.x,y:ye.y,w:ye.w,h:ye.h})).length,Se=ne.mode==="below-row"?x(j.x+j.w/2,j.y+j.h,be,J):y(j.y+j.h/2,ne.mode==="outboard-left"?re+G:j.x+j.w,ne.mode==="outboard-left"?j.x:re,J),we=ge*1e4+(Se?12e3:0)+Math.abs(re-se)/10+Math.abs(be-(ne.mode==="below-row"?z:pe))+(ne.mode==="below-row"?10:0);if(F&&ne.mode!=="below-row"&&ge===0){const ye=(Se?1e3:0)+Math.abs(re-se)/10+Math.abs(be-pe);(!B||ye<B.penalty)&&(B={x:re,y:be,penalty:ye,mode:ne.mode})}we<w&&(w=we,Z=re,h=be,v=ne.mode)}B&&(Z=B.x,h=B.y,v=B.mode),v||(v=X),P=Z,M=h}else{let E=1/0,j=-1/0,F=1/0,X=-1/0;for(const U of C){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 pe=j-E,se=X-F,me=ja(S.map(U=>U.x)),z=ja(S.map(U=>U.y));if(pe>=se){const U=me-G/2,J=new Set(C.map(B=>B.node.id)),le=e.nodes.filter(B=>!J.has(B.id)).map(B=>ft(B,n)).filter(B=>B.y+B.h>X),ie=A.filter(B=>B.y+B.h>X),ve=[...le,...ie],ee=[U];for(const B of ve)ee.push(B.x-qe-G),ee.push(B.x+B.w+qe);let Z=U,h=1/0;const w=new Set;for(const B of ee){const oe=Math.round(B);if(w.has(oe))continue;w.add(oe);const de=ve.filter(be=>Hn({x:B,y:X+qe,w:G,h:Y},{x:be.x,y:be.y,w:be.w,h:be.h})).length,ne=Math.abs(B-U)/1e3,re=de+ne;re<h&&(h=re,Z=B)}P=Z,M=X+qe,v="below-row"}else{const U=C.every(ve=>za(ve.node)),J=C.filter(ve=>ve.usage.sideId==="a").length,le=C.length-J,ie=!U&&le>=J;P=ie?Math.max(i,j)+Ha:Math.min(u,E)-Ha-G,M=z-Y/2,v=ie?"sidebar-right":"sidebar-left"}}const _=Y+ct,q=8;let V=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}}),...A];for(;V<q&&H.some(E=>Hn({x:P,y:M,w:G,h:Y},E));)M+=_,V++;d.push({x:P,y:M,w:G,h:Y}),o.push({id:L,type:"model",x:P,y:M,width:G,height:Y,placementMode:v,data:N});for(const E of C)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 u=o.get(i.to);u?u.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,u)=>u.id.length-i.id.length);for(const i of r){const u=i.id.endsWith(s)?i.id.slice(0,i.id.length-s.length):i.id;for(const[d,f]of o){const g=a.get(d);if(!g||!f.every(C=>C.startsWith(u)))continue;const y=Math.min(i.x,g.x-l),x=Math.min(i.y,g.y-l),c=Math.max(i.x+i.width,g.x+g.width+l),b=Math.max(i.y+i.height,g.y+g.height+l);i.x=y,i.y=x,i.width=c-y,i.height=b-x}}for(const i of r){const u=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(u)||d.id.length<=i.id.length)continue;const f=Math.min(i.x,d.x),g=Math.min(i.y,d.y),y=Math.max(i.x+i.width,d.x+d.width),x=Math.max(i.y+i.height,d.y+d.height);i.x=f,i.y=g,i.width=y-f,i.height=x-g}}}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 ja(e){if(e.length===0)return 0;let t=0;for(const n of e)t+=n;return t/e.length}function Hn(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 To(e,t,n,o,a,l){const s=[],r=[],i=[],u=[];function d(w){if(!w)return null;const B=l[w];if(B)return B;for(const oe of Object.values(l))if(oe.name===w)return oe;return null}const f=fn(o),g=a[f],y=g?.w??Cs,x=g?.h??Ss,c=0,b=x+Ua;function C(w,B){const oe=a[B];if(oe)return oe;if(w.mode==="human")return{w:Va,h:_s};const de=240,ne=w.variables.length*24,re=w.tools.length*32,be=de+Math.max(ne,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 S=t.filter(w=>w.id==="a"),T=t.filter(w=>w.id==="b");function k(w){return w.map(B=>{const oe=B.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=$o(o,B.id,ke,ge.kind,ge.name),ye=n[ge.name],Te=To(ye.agent,ye.sides,n,we,a,l),Ce=(dn+qe+12)*2;de.push({width:Te.width+wt*2+Ce,height:Te.height+Un+wt,isSubagent:!0,modelReserveLeft:Ce,modelReserveRight:0,subagentName:ge.name,subagentNodeId:fn(we),subagentGroupId:Ts(we),subTree:Te})}else{const we=ln(o,B.id,ke),ye=a[we];de.push({width:ye?.w??(ge.kind==="tool"?As:ge.kind==="prompt"?Ps:ge.kind==="handoff"?Rs:Is),height:ye?.h??(ge.kind==="tool"?Ns:ge.kind==="prompt"?Ls:ge.kind==="handoff"?Os:Es),isSubagent:!1})}}const ne=ia(o,B.id),{w:re,h:be}=C(B,ne);return{side:B,leaves:de,sideH:be,sideW:re,sideNodeId:ne,externalTools:oe}})}const A=k(S),N=k(T),L=new Map,te=new Set;function G(w,B,oe){if(!w)return;const de=`${w.id}|${oe}`;if(te.has(de))return;te.add(de);const ne=L.get(w.id);if(ne){B==="a"?ne.hasLeftConsumer=!0:ne.hasRightConsumer=!0;return}L.set(w.id,{hasLeftConsumer:B==="a",hasRightConsumer:B==="b"})}for(const w of[...A,...N]){G(w.side.model,w.side.id,w.sideNodeId);for(let B=0;B<w.externalTools.length;B++){const oe=w.externalTools[B];oe.kind==="prompt"&&G(d(oe.model),w.side.id,ln(o,w.side.id,B))}for(const B of w.leaves)if(!(!B.isSubagent||!B.subTree))for(const oe of B.subTree.modelUsages)G(oe.model,oe.sideId,oe.consumerNodeId)}function Y(w){if(!w)return!1;const B=L.get(w.id);return!!B?.hasRightConsumer&&!B?.hasLeftConsumer}function P(w,B){if(w.length===0)return{card:{minX:0,maxX:0},leaves:null,full:{minX:0,maxX:0}};let oe=0,de=1/0,ne=-1/0,re=1/0,be=-1/0;for(const ge of w){const{side:Se,leaves:we,sideW:ye,externalTools:Te}=ge,Ce=B==="left"?oe-ye:oe,Je=B==="right"&&Y(Se.model)?dn+qe:0;if(de=Math.min(de,Ce-Je),ne=Math.max(ne,Ce+ye),Te.length>0){const Le=M(Ce,ye,Te,we);for(let Fe=0;Fe<we.length;Fe++){const yt=B==="right"&&Te[Fe]?.kind==="prompt"&&Y(d(Te[Fe]?.model))?dn+qe:0,it=Le[Fe];re=Math.min(re,it.x-yt),be=Math.max(be,it.x+we[Fe].width)}}oe+=(B==="left"?-1:1)*(ye+Zt)}const ke=re!==1/0;return{card:{minX:de,maxX:ne},leaves:ke?{minX:re,maxX:be}:null,full:{minX:ke?Math.min(de,re):de,maxX:ke?Math.max(ne,be):ne}}}function M(w,B,oe,de){const ne=new Array(de.length),re=de.map((ye,Te)=>({index:Te,leaf:ye,tool:oe[Te]})),be=re.filter(ye=>v(ye.tool)),ke=new Set(be.map(ye=>ye.index)),ge=[];be.length>0&&ge.push(_(be,B*3));for(const ye of re)ke.has(ye.index)||ge.push(_([ye],Number.POSITIVE_INFINITY));ge.sort((ye,Te)=>ye.firstIndex-Te.firstIndex);const Se=ge.reduce((ye,Te)=>ye+Te.width,0)+Math.max(0,ge.length-1)*ut;let we=w+B/2-Se/2;for(const ye of ge){for(const Te of ye.positions)ne[Te.index]={x:we+Te.x,yOffset:Te.yOffset};we+=ye.width+ut}return ne}function v(w){return w?.kind==="tool"||w?.kind==="provider"||w?.kind==="mcp"}function _(w,B){const oe=Math.max(...w.map(we=>we.leaf.width),0),de=Number.isFinite(B)?Math.max(B,oe):Number.POSITIVE_INFINITY,ne=[];let re=null;const be=()=>{re&&re.items.length>0&&ne.push(re),re={items:[],width:0,height:0}};be();for(const we of w){re||be();const ye=re.items.length===0?we.leaf.width:re.width+ut+we.leaf.width;re.items.length>0&&ye>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&&ne.push(re);const ke=Math.max(...ne.map(we=>we.width),0),ge=[];let Se=0;for(const we of ne){let ye=(ke-we.width)/2;for(const Te of we.items)ge.push({index:Te.index,x:ye,yOffset:Se}),ye+=Te.leaf.width+ut;Se+=we.height+ut}return{firstIndex:Math.min(...w.map(we=>we.index)),width:ke,height:ne.reduce((we,ye)=>we+ye.height,0)+Math.max(0,ne.length-1)*ut,positions:ge}}const q=P(A,"left"),V=P(N,"right"),H=q.card.maxX-V.card.minX+Zt,E=q.leaves&&V.leaves?q.leaves.maxX-V.leaves.minX+Zt:0,j=Math.max(Ds,H,E),F=Math.max(y/2,j/2-q.full.minX);let X=b;function pe(w,B,oe,de,ne,re,be){const ke=ln(o,B,be);if(!de.isSubagent||!de.subTree){if(s.push({id:ke,type:"tool",x:ne,y:re,width:de.width,height:de.height,data:oe,sideId:B}),r.push({id:`${w}-to-${ke}`,from:w,to:ke,sideId:B,toolKind:oe.kind}),oe.kind==="prompt"){const Ce=d(oe.model);Ce&&u.push({consumerNodeId:ke,sideId:B,model:Ce})}X=Math.max(X,re+de.height);return}const ge=de.subTree,Se=ne+(de.modelReserveLeft??0),we=re+Un;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)u.push(Ce);r.push({id:`${w}-to-${de.subagentNodeId}`,from:w,to:de.subagentNodeId,sideId:B,toolKind:oe.kind});const ye=oe.config||{},Te=ye.resumable;i.push({id:de.subagentGroupId,label:n[de.subagentName]?.agent.title||de.subagentName,x:Se-wt,y:re,width:ge.width+wt*2,height:ge.height+Un+wt,sideId:B,subagent:{blocking:!!ye.blocking,resumable:!!Te,multiInstance:!!Te&&typeof Te=="object"&&(Te.max_instances===null||(Te.max_instances??0)>1),immediate:!!ye.immediate}}),X=Math.max(X,we+ge.height+wt)}function se(w,B){let oe=B==="left"?F-j/2:F+j/2;for(const de of w){const{side:ne,leaves:re,sideH:be,sideW:ke,sideNodeId:ge,externalTools:Se}=de,we=Se.filter(v).length,ye=we>5?(we-5)*10:0,Te=b+be+Ua+ye,Ce=B==="left"?oe-ke:oe;if(s.push({id:ge,type:"side",x:Ce,y:b,width:ke,height:be,data:ne,sideId:ne.id}),r.push({id:`${f}-to-${ge}`,from:f,to:ge,sideId:ne.id}),ne.model&&u.push({consumerNodeId:ge,sideId:ne.id,model:ne.model}),X=Math.max(X,b+be),Se.length>0){const Je=M(Ce,ke,Se,re);for(let Le=0;Le<Se.length;Le++){const Fe=Je[Le];pe(ge,ne.id,Se[Le],re[Le],Fe.x,Te+Fe.yOffset,Le)}}oe+=(B==="left"?-1:1)*(ke+Zt)}}se(A,"left"),se(N,"right");const me=new Set(Object.keys(e.env||{})),z=new Set,U=t.flatMap(w=>w.variables).filter(w=>me.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:F-y/2,y:c,width:y,height:x,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,h=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:u,width:Z,height:h}}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=wo(e.id||e.name),s=To(e,t,n,l,o,a),r=[...s.nodes],i=[...s.edges],u=[...s.groups],{modelNodes:d,modelEdges:f}=Vs(s,l,o);r.push(...d),i.push(...f),Us(u,d,f);let g=0,y=0,x=s.width,c=s.height;for(const b of d)b.x<g&&(g=b.x),b.y<y&&(y=b.y),b.x+b.width>x&&(x=b.x+b.width),b.y+b.height>c&&(c=b.y+b.height);for(const b of u)b.x<g&&(g=b.x),b.y<y&&(y=b.y),b.x+b.width>x&&(x=b.x+b.width),b.y+b.height>c&&(c=b.y+b.height);if(g<0||y<0){const b=-Math.min(g,0),C=-Math.min(y,0);for(const S of r)S.x+=b,S.y+=C;for(const S of u)S.x+=b,S.y+=C;x+=b,c+=C}return{nodes:r,edges:i,groups:u,bounds:{x:0,y:0,width:x,height:c}}}function js(e,t,n,o,a){return O(()=>zs(e.value,t.value,n.value,o.value,a.value))}function Fs(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})},u=U=>{s.replace({path:l.path,query:{...l.query,inspector:U},hash:l.hash})},d=r(),f=D(d),g=D(null),y="__draft_new_thread__",x=D(!1);let c=!1;Pe(f,U=>{if(c||U===y)return;const J=r();U!==J&&i(U)}),Pe(()=>l.query.thread,U=>{if(c)return;const J=typeof U=="string"?U:null;if(J&&g.value&&!g.value.has(J)){c=!0,f.value=null,i(null),ze(()=>{c=!1});return}J!==f.value&&(f.value=J)},{immediate:!0});const b=D(null),C=D(null),S=D(null),T=D(null),k=D(null),A=D(null),N=D(null),L=D(!1),te=D(null),{thread:G}=ms(O(()=>f.value===y?null:f.value));let Y=!1;Pe(t,()=>{if(!Y){Y=!0;return}c=!0,f.value=null,b.value=null,C.value=null,S.value=null,T.value=null,k.value=null,A.value=null,N.value=null,ze(()=>{c=!1})}),Pe(f,()=>{b.value=null,C.value=null,S.value=null,T.value=null,k.value=null});const P=U=>{A.value=U,N.value=U},M=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:G,selectedMessageId:b,selectedLogId:C,selectedEffectId:S,selectedEffectRef:T,highlightedWorkblockLogId:k,hoveredLogId:A,hoveredWorkblockLogId:N,showThreadModal:L,editingThread:te,draftThreadId:y,isCreatingThreadDraft:x,handleThreadSelect:U=>{f.value=U},handleThreadsLoaded:(U,J)=>{c=!1,g.value=J?new Set(J):null,f.value&&g.value&&!g.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(b.value=U,le){S.value=le.id??null,T.value=le,C.value=null,k.value=null,u("effects"),await ze(),a.value?.selectEffectByReference(le);return}if(S.value=null,T.value=null,!J){C.value=null,k.value=null;return}const ie=a.value;if(!ie){C.value=J,k.value=J;return}const ve=!ie.hasLog(J);if(ve&&ie.setLoadingForLog(!0),C.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:P,handleLogClick:U=>{C.value=U,S.value=null,T.value=null,b.value=null;const J=o.value;if(!J){k.value=U;return}if(J.scrollToLogId(U)){k.value=U;return}const le=M(U);le&&le!==U&&J.scrollToLogId(le),k.value=le??U},handleLogHover:U=>{if(A.value=U,!U){N.value=null;return}N.value=M(U)??U},handleLogsLoaded:U=>{U&&(C.value=U)},handleLogsDeleted:U=>{a.value?.removeLogsByIds(U)},handleThreadDeleted:U=>{f.value=null,b.value=null,C.value=null,S.value=null,T.value=null,k.value=null,A.value=null,N.value=null,n.value?.refetch()},handleEditThread:()=>{G.value&&(te.value=G.value,L.value=!0)},handleCreateThread:()=>{te.value=null,L.value=!1,x.value=!0,f.value=y},handleThreadCreated:U=>{x.value=!1,n.value?.refetch(),f.value=U,ze(()=>o.value?.focusComposer())},handleCancelCreateThread:()=>{x.value=!1,f.value===y&&(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=D({}),n=D(!1),o=D(null),a=O(()=>Xs(Kr(e))),l=O(()=>a.value.join(""));let s=0;async function r(i={}){const u=++s,d=a.value;if(d.length===0){t.value={},o.value=null,n.value=!1;return}const f={...t.value},g=i.force?d:d.filter(y=>f[y]===void 0);if(g.length===0){o.value=null,n.value=!1;return}n.value=!0,o.value=null;try{const y=await Promise.all(g.map(async x=>{try{const c=await Qe(`/threads?agent_id=${encodeURIComponent(x)}&limit=1`);return[x,c.total??0]}catch{return[x,0]}}));if(u!==s)return;for(const[x,c]of y)f[x]=c;t.value=f}catch{u===s&&(o.value="Unable to load thread counts.")}finally{u===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]=[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 Gs=st({name:"lucide-package-open",render:qs}),Ws={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Qs(e,t){return p(),$("svg",Ws,[...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 Js=st({name:"lucide-ellipsis-vertical",render:Qs}),Zs={class:"px-4 py-3 border-b border-neutral-200 dark:border-neutral-800"},el={class:"flex items-center justify-between"},tl={class:"flex items-center gap-2"},nl={key:0,class:"text-xs font-mono text-neutral-500 dark:text-neutral-400"},al={class:"flex items-center gap-2 border-b border-neutral-200 px-5 py-2.5 dark:border-neutral-800"},ol={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"},rl=["value"],sl={class:"flex shrink-0 overflow-hidden rounded-md border border-neutral-200 text-[11px] dark:border-neutral-700"},ll=["onClick"],il={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"},dl={key:0,class:"flex-1 px-5 py-5 text-sm text-neutral-500 dark:text-neutral-400"},ul={key:1,class:"flex-1 px-5 py-5 text-sm text-neutral-500 dark:text-neutral-400"},cl={key:2,class:"flex-1 overflow-y-auto"},fl=["data-agent-id","onClick"],ml={class:"flex items-center justify-center"},hl=["src"],pl={class:"flex min-w-0 items-center gap-2"},vl=["onClick","aria-label"],gl={key:0,class:"text-[11px] font-mono"},xl={class:"min-w-0"},yl={key:0,class:"relative flex items-center justify-center","data-agent-menu":""},bl=["aria-label","aria-expanded","onClick"],kl={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"},wl=["onClick"],$l=["onClick"],Ml=["onClick"],Tl=["onClick"],Cl=["onClick"],Sl=Ie({__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=D(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)),At(()=>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 u(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"]))},[m("div",Zs,[m("div",el,[m("div",tl,[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(),$("span",nl," ("+K(e.agents.length)+") ",1)):W("",!0)])])]),m("div",al,[m("label",ol,[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]=g=>d.$emit("update:search",g.target.value)),class:"w-full bg-transparent outline-none placeholder:text-neutral-400"},null,40,rl)]),m("div",sl,[(p(),$($e,null,_e(r,g=>m("button",{key:g.value,type:"button",class:ue(["px-2.5 py-1.5 font-medium transition-colors",e.typeFilter===g.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:y=>d.$emit("update:typeFilter",g.value)},K(g.label),11,ll)),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]=g=>d.$emit("add"))},[Q(I(go),{class:"h-3.5 w-3.5"}),f[7]||(f[7]=fe(" New Agent ",-1))]))]),m("div",il,[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]=g=>d.$emit("sort","title"))},[f[8]||(f[8]=fe(" Title ",-1)),e.sortBy==="title"&&e.sortDir==="asc"?(p(),ce(I(Dn),{key:0,class:"h-3 w-3"})):e.sortBy==="title"&&e.sortDir==="desc"?(p(),ce(I(Bn),{key:1,class:"h-3 w-3"})):(p(),ce(I(Vn),{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]=g=>d.$emit("sort","threads"))},[f[9]||(f[9]=fe(" Threads ",-1)),e.sortBy==="threads"&&e.sortDir==="asc"?(p(),ce(I(Dn),{key:0,class:"h-3 w-3"})):e.sortBy==="threads"&&e.sortDir==="desc"?(p(),ce(I(Bn),{key:1,class:"h-3 w-3"})):(p(),ce(I(Vn),{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]=g=>d.$emit("sort","type"))},[f[10]||(f[10]=fe(" Type ",-1)),e.sortBy==="type"&&e.sortDir==="asc"?(p(),ce(I(Dn),{key:0,class:"h-3 w-3"})):e.sortBy==="type"&&e.sortDir==="desc"?(p(),ce(I(Bn),{key:1,class:"h-3 w-3"})):(p(),ce(I(Vn),{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(),$("div",dl," Loading agents... ")):e.agents.length===0?(p(),$("div",ul," No agents match this search. ")):(p(),$("div",cl,[(p(!0),$($e,null,_e(e.agents,g=>(p(),$("div",{key:g.id,"data-agent-id":g.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===g.id?"agents-surface-selected agents-border-selected":"agents-surface-hover"]),onClick:y=>d.$emit("select",g.id)},[m("div",ml,[m("img",{src:g.icon||I(na)(g.id),alt:"",class:"h-9 w-9 rounded-md object-cover"},null,8,hl)]),m("div",pl,[g.packed?(p(),ce(I(On),{key:0,class:"h-4 w-4 shrink-0 text-blue-500",title:`Packed agent from ${g.packageId}`},null,8,["title"])):W("",!0),m("span",{class:ue(["truncate font-medium",e.selectedId===g.id?"agents-text-selected":"text-neutral-900 dark:text-neutral-100"])},K(g.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===g.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300",e.threadCounts[g.id]>0?"":"opacity-30"]]),onClick:Me(y=>s("view-threads",g.id),["stop"]),title:"View threads","aria-label":`View threads for ${g.title}`},[Q(I(gt),{class:"h-3.5 w-3.5"}),e.threadCounts[g.id]>0?(p(),$("span",gl,K(e.threadCounts[g.id]),1)):W("",!0)],10,vl),m("div",{class:ue(e.selectedId===g.id?"agents-text-selected-muted":"text-neutral-500 dark:text-neutral-400")},K(i(g.type)),3),m("div",xl,[m("div",{class:ue(["truncate",e.selectedId===g.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===g.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},"A",2),fe(" "+K(u(g,"a")),1)],2),m("div",{class:ue(["truncate",e.selectedId===g.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===g.id?"agents-text-selected-muted":"text-neutral-400 dark:text-neutral-500"])},"B",2),fe(" "+K(u(g,"b")),1)],2)]),e.readonly?W("",!0):(p(),$("div",yl,[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 ${g.title}`,"aria-expanded":n.value===g.id,onClick:Me(y=>o(g.id),["stop"])},[Q(I(Js),{class:"h-4 w-4"})],8,bl),Q(lo,{"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:xe(()=>[n.value===g.id?(p(),$("div",kl,[g.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(y=>{d.$emit("edit",g),a()},["stop"])},[Q(I(as),{class:"h-4 w-4 text-neutral-400"}),f[14]||(f[14]=fe(" Edit ",-1))],8,wl)),g.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(y=>{d.$emit("pack",g),a()},["stop"])},[Q(I(On),{class:"h-4 w-4 text-neutral-400"}),f[15]||(f[15]=fe(" Pack ",-1))],8,$l)),g.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(y=>{d.$emit("unpack",g),a()},["stop"])},[Q(I(Gs),{class:"h-4 w-4 text-neutral-400"}),f[16]||(f[16]=fe(" Unpack ",-1))],8,Ml)):W("",!0),g.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(y=>{d.$emit("publish",g),a()},["stop"])},[Q(I(On),{class:"h-4 w-4 text-neutral-400"}),f[17]||(f[17]=fe(" Publish Package ",-1))],8,Tl)):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(y=>{d.$emit("delete",g),a()},["stop"])},[Q(I(xs),{class:"h-4 w-4"}),fe(" "+K(g.packed?"Delete Package":"Delete"),1)],8,Cl)])):W("",!0)]),_:2},1024)]))],10,fl))),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 _l(e,t,n,o,a){const l=D(!1),s=D(new Map);let r=null,i=null,u=null,d=null,f="",g="",y=null;const x=new Map;function c(){return e.value.nodes.filter(q=>q.type!=="hook").map(q=>q.id)}function b(){const q=c();return q.length>0&&q.every(V=>s.value.has(V))}function C(){return Array.from(s.value.entries()).sort(([q],[V])=>q.localeCompare(V)).map(([q,V])=>`${q}:${V.w}x${V.h}:${V.modelAnchorY??""}:${zn(V.toolColumns)}`).join("|")}function S(){return new Set(e.value.nodes.map(q=>q.id))}function T(){r&&clearTimeout(r),i&&clearTimeout(i),u&&clearTimeout(u),r=null,i=null,u=null}function k(){return typeof ResizeObserver>"u"?null:y||(y=new ResizeObserver(q=>{for(const V of q)for(const[H,E]of x)if(E===V.target){v(H,E);break}}),y)}function A(q,V){const H=x.get(q);if(H===V)return;const E=k();H&&E?.unobserve(H),x.set(q,V),E?.observe(V)}function N(){const q=S();for(const[V,H]of x)q.has(V)||(y?.unobserve(H),x.delete(V),s.value.delete(V))}function L(){ze(()=>{N();for(const[q,V]of x)v(q,V)})}function te(){u&&clearTimeout(u),u=setTimeout(()=>{t.value||l.value||e.value.nodes.length===0||!b()||ze(()=>{l.value=!0,n(P())})},800)}Pe(t,q=>{if(q){l.value=!1,s.value.clear(),g="",a?.(),T();return}e.value.nodes.length>0&&(L(),te())}),Pe(()=>e.value.nodes.map(q=>q.id).join(","),q=>{q!==f&&(f=q,q&&(l.value=!1,g="",a?.(),T(),L(),te()))});const G=O(()=>e.value.nodes.map(q=>{const V=s.value.get(q.id);return V?{...q,width:V.w,height:V.h}:q})),Y=O(()=>{const q={};for(const[V,H]of s.value)(H.modelAnchorY!==void 0||H.toolColumns)&&(q[V]={modelAnchorY:H.modelAnchorY,toolColumns:H.toolColumns});return q});function P(){const q=G.value,V=e.value.groups;if(q.length===0)return e.value.bounds;let H=1/0,E=1/0,j=-1/0,F=-1/0;for(const X of q)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 V)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 M(){d&&cancelAnimationFrame(d),d=requestAnimationFrame(()=>{const q=C();q!==g&&(g=q,o(Object.fromEntries(s.value))),!(t.value||!b())&&(r&&clearTimeout(r),r=setTimeout(()=>{t.value||!b()||(u&&clearTimeout(u),u=null,l.value=!0,ze(()=>{n(P()),i&&clearTimeout(i),i=setTimeout(()=>n(P()),220)}))},180))})}function v(q,V){ze(()=>{const H=V.offsetWidth,E=V.offsetHeight;if(H<=0||E<=0)return;const j=V.getBoundingClientRect(),F=H>0&&j.width>0?j.width/H:1,X=E>0&&j.height>0?j.height/E:1;let pe;const se=V.querySelector("[data-model-anchor]");if(se&&j.height>0){const le=se.getBoundingClientRect();le.height>0&&(pe=jn(le.top+le.height/2-j.top,X))}let me;const z=V.querySelectorAll("[data-tool-column]");if(z.length>0&&j.width>0){me={};for(const le of z){const ie=le.dataset.toolColumn;if(!ie)continue;const ve=le.getBoundingClientRect();me[ie]={left:jn(ve.left-j.left,F),width:jn(ve.width,F)}}}const U=s.value.get(q),J=U?.w!==H||U?.h!==E;if(!(U?.w===H&&U?.h===E&&U?.modelAnchorY===pe&&zn(U?.toolColumns)===zn(me))){if(s.value.set(q,{w:H,h:E,modelAnchorY:pe,toolColumns:me}),l.value&&!J){const le=C();le!==g&&(g=le,o(Object.fromEntries(s.value)));return}M()}})}function _(q,V){A(q,V),v(q,V)}return At(()=>{r&&clearTimeout(r),i&&clearTimeout(i),u&&clearTimeout(u),d&&cancelAnimationFrame(d),y?.disconnect(),y=null,x.clear()}),{layoutStable:l,measurements:s,nodesWithMeasuredSizes:G,nodeMetrics:Y,measureNode:_,measuredBounds:P}}function Il(e){const t=D(null);let n=0,o="",a=0,l="",s=null,r=null;function i(g){const y=e.measurements.value.get(g.id);return{x:g.x,y:g.y,width:y?.w??g.width,height:y?.h??g.height}}function u(g){if(!e.shouldHandleClick())return;const y=g.target;y instanceof Element&&(y.closest("[data-canvas-node]")||y.closest("[data-canvas-group]"))||(t.value=null,e.onDeselect())}function d(g,y){if(!e.shouldHandleClick())return;const x=g.target;if(x instanceof Element&&x.closest("[data-canvas-node]"))return;const c=Date.now(),b=c-n<350&&o===y.id;if(n=c,o=y.id,!b){e.focusNode(y);return}const C=e.containerRef.value;if(!C)return;const S=C.getBoundingClientRect(),T=40,k=(S.width-T*2)/y.width,A=(S.height-T*2)/y.height;e.focusNode(y,Math.min(k,A,1.5))}function f(g){if(!e.shouldHandleClick())return;e.selectedNodeId.value||e.saveViewport(),e.onSelectNode(g);const y=i(g);t.value=y;const x=Date.now(),c=x-a<350&&l===g.id;a=x,l=g.id,e.focusNode(y,c?1.2:void 0)}return Pe(e.selectedNodeId,(g,y)=>{if(!g){t.value=null,y&&e.restoreViewport();return}const x=e.layout.value.nodes.find(c=>c.id===g);x&&(t.value=i(x))}),ea(()=>{s=new ResizeObserver(()=>{r&&clearTimeout(r),r=setTimeout(()=>{const g=t.value,y=e.containerRef.value;if(!g||!y||!e.layoutStable.value)return;const x=y.getBoundingClientRect();let c=e.viewportState.value.scale;const b=60;if(g.width>0&&g.height>0){const C=(x.width-b*2)/g.width,S=(x.height-b*2)/g.height,T=Math.min(C,S);c>T&&T>.1&&(c=T)}e.focusNode(g,c)},320)}),e.containerRef.value&&s.observe(e.containerRef.value)}),At(()=>{s?.disconnect(),r&&clearTimeout(r)}),{handleCanvasClick:u,handleGroupClick:d,handleNodeSelect:f}}const en=6,El=250;function Al(e,t={}){const{minScale:n=.1,maxScale:o=2.5,padding:a=80,panPadding:l=a}=t,s=D({x:0,y:0,scale:1}),r=D(!1),i=D(!1),u={x:0,y:0,viewX:0,viewY:0},d={x:0,y:0,time:0};let f=null,g=!1,y=0,x=null,c=null,b=null;const C=150;function S(){i.value=!0,c&&clearTimeout(c),c=setTimeout(()=>{i.value=!1,c=null},C)}let T=null,k=!1,A=!1,N=null;function L(){k=!0,A=!0}function te(){x&&clearTimeout(x),x=setTimeout(()=>{const{x:h,y:w,scale:B}=s.value,oe=Math.round(h/B)*B,de=Math.round(w/B)*B;(oe!==h||de!==w)&&(s.value=v({x:oe,y:de,scale:B}))},120)}const G=O(()=>{const{x:h,y:w,scale:B}=s.value;return i.value?{transform:`translate3d(${h}px, ${w}px, 0) scale(${B})`,transformOrigin:"0 0",willChange:"transform"}:{transform:`translate3d(${h/B}px, ${w/B}px, 0)`,zoom:B,transformOrigin:"0 0",willChange:"transform"}}),Y=O(()=>Math.round(s.value.scale*100));function P(h){return Math.min(o,Math.max(n,h))}function M(h,w,B){return Math.min(B,Math.max(w,h))}function v(h){const w=P(h.scale),B=e.value,oe=N;if(!B||!oe||oe.width<=0||oe.height<=0)return{...h,scale:w};const de=B.getBoundingClientRect();if(de.width<=0||de.height<=0)return{...h,scale:w};const ne=Math.max(0,l)/w,re=Math.max(0,l)/w,be=(de.width/2-h.x)/w,ke=(de.height/2-h.y)/w,ge=M(be,oe.x-ne,oe.x+oe.width+ne),Se=M(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 _(h,w=!1){s.value=v(h),w&&te()}function q(h,w,B){const oe=P(h),de=s.value,ne=oe/de.scale;_({x:w-(w-s.value.x)*ne,y:B-(B-s.value.y)*ne,scale:oe},!0)}function V(h){const w=e.value;if(w){if(h.ctrlKey||h.metaKey){h.preventDefault(),h.stopPropagation?.(),L(),S();const B=w.getBoundingClientRect(),oe=h.clientX-B.left,de=h.clientY-B.top,ne=Math.min(Math.abs(h.deltaY),10)/10,be=1+(h.deltaY>0?-1:1)*.03*ne;q(s.value.scale*be,oe,de);return}h.preventDefault(),h.stopPropagation?.(),L(),S(),_({...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,u.x=h.clientX,u.y=h.clientY,u.viewX=s.value.x,u.viewY=s.value.y,d.x=h.clientX,d.y=h.clientY,d.time=Date.now(),g=!1)}function E(h){if(f!==h.pointerId)return;const w=h.clientX-d.x,B=h.clientY-d.y,oe=w*w+B*B;!r.value&&oe>en*en&&(r.value=!0,g||(h.currentTarget.setPointerCapture(h.pointerId),g=!0)),r.value&&(S(),_({...s.value,x:u.viewX+(h.clientX-u.x),y:u.viewY+(h.clientY-u.y)}))}function j(h){if(f!==h.pointerId)return;const w=h.clientX-d.x,B=h.clientY-d.y,oe=w*w+B*B,de=Date.now()-d.time<=El&&oe<=en*en;r.value&&L(),de||(y=Date.now()+32),r.value=!1,f=null,g&&(h.currentTarget?.releasePointerCapture(h.pointerId),g=!1),te()}function F(){return Date.now()>=y}function X(){const h=e.value;if(!h)return{cx:0,cy:0};const w=h.getBoundingClientRect();return{cx:w.width/2,cy:w.height/2}}function pe(){L(),S();const{cx:h,cy:w}=X();q(s.value.scale+.1,h,w)}function se(){L(),S();const{cx:h,cy:w}=X();q(s.value.scale-.1,h,w)}function me(h,w={}){N=h.width>0&&h.height>0?{...h}:null;const B=e.value;if(!B||h.width===0||h.height===0||!w.force&&A)return;const oe=B.getBoundingClientRect(),de=(oe.width-a*2)/h.width,ne=(oe.height-a*2)/h.height,re=P(Math.min(de,ne,1));_({x:(oe.width-h.width*re)/2-h.x*re,y:(oe.height-h.height*re)/2-h.y*re,scale:re}),A=!1}function z(){A=!1}function U(){_({x:0,y:0,scale:1})}function J(h){N=h&&h.width>0&&h.height>0?{...h}:null,N&&(s.value=v(s.value))}function le(){T={...s.value},k=!1}function ie(){const h=T;T=null,!(!h||k)&&ve(h)}function ve(h,w){x&&(clearTimeout(x),x=null);const B={...s.value},oe=300,de=performance.now();b&&cancelAnimationFrame(b);function ne(re){const be=Math.min((re-de)/oe,1),ke=1-Math.pow(1-be,3);S(),s.value=v({x:B.x+(h.x-B.x)*ke,y:B.y+(h.y-B.y)*ke,scale:B.scale+(h.scale-B.scale)*ke}),be<1?b=requestAnimationFrame(ne):(s.value=v(w?w():h),b=null)}b=requestAnimationFrame(ne)}function ee(){x&&(clearTimeout(x),x=null),c&&(clearTimeout(c),c=null),b&&(cancelAnimationFrame(b),b=null),f=null,g=!1,r.value=!1,i.value=!1}Yr()&&qr(ee);function Z(h,w){const B=e.value;if(!B)return;const oe=P(w??s.value.scale),de=h.x+h.width/2,ne=h.y+h.height/2;function re(){const be=B.getBoundingClientRect();return{x:be.width/2-de*oe,y:be.height/2-ne*oe,scale:oe}}ve(re(),re)}return{state:s,isPanning:r,transformStyle:G,scalePercent:Y,onWheel:V,onPointerDown:H,onPointerMove:E,onPointerUp:j,shouldHandleClick:F,zoomIn:pe,zoomOut:se,fitToView:me,resetAutoFitLock:z,focusNode:Z,resetView:U,setContentBounds:J,saveViewport:le,restoreViewport:ie}}function Nl(e){return!e.hasAgent||e.hasError?!1:e.loadingComposition?!0:e.hasRevealedStableDiagram?!1:!e.layoutStable||e.loadingAsyncDetail}const Pl={class:"pointer-events-none absolute inset-0 h-full w-full","aria-hidden":"true"},Ll=Ie({__name:"CanvasGrid",setup(e){return(t,n)=>(p(),$("svg",Pl,[...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,ot=8,Rl=12,Re=10,Ol=10,an=16,on=24,Dl=38,Xa=44,Bl=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},(u,d)=>s+d*i)}function Vl(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 Ul(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 Tt(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,u=r.x+r.width+Ee,d=r.y-Ee,f=r.y+r.height+Ee;if(e>=d&&e<=f&&s>=i&&l<=u)return r}return null}function St(e,t,n,o,a,l=Ee,s=Ee){const r=Math.min(t,n),i=Math.max(t,n);for(const u of o){if(a.has(u.id))continue;const d=u.x-l,f=u.x+u.width+l,g=u.y-s,y=u.y+u.height+s;if(e>=d&&e<=f&&i>=g&&r<=y)return u}return null}function Gn(e,t,n,o,a,l,s){const r=Math.min(o,a),i=Math.max(o,a);let u=e;for(let d=0;d<6;d++){const f=Ze(u,t,n,l,s);if(!f)return u;const g=f.y-Ee-Ge,y=f.y+f.height+Ee+Ge,x=Math.abs(g-u)<=Math.abs(y-u)?g:y;u=Math.max(r-200,Math.min(i+200,x))}return u}function hn(e,t,n,o,a,l,s,r,i){let u=r<0?Math.min(e,i-1):Math.max(e,i+1);for(let d=0;d<6;d++){const f=Ze(u,t,n,l,s);if(!f)return u;u=r<0?f.y-Ee-Ge:f.y+f.height+Ee+Ge}return u}function Co(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n);return So(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 u=i.y-l;i.y+i.height+l<e||u>t||s.push([i.x-a,i.x+i.width+a])}if(s.length===0)return s;s.sort((i,u)=>i[0]-u[0]);const r=[s[0]];for(let i=1;i<s.length;i++){const u=r[r.length-1],d=s[i];d[0]<=u[1]?u[1]=Math.max(u[1],d[1]):r.push(d)}return r}function So(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 u=da(Math.min(t,n),Math.max(t,n),o,a,r,i);if(u.length===0)return e;let d=l<0?Math.min(e,s-1):Math.max(e,s+1);for(let f=0;f<u.length;f++){const g=u.find(([y,x])=>d>=y&&d<=x);if(!g)return d;d=l<0?g[0]-1:g[1]+1}return d}function qa(e,t){return e<=1?[0]:Array.from({length:e},(n,o)=>o*t)}function _o(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 _o(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 Hl(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 zl(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 jl(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 Fl(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 Xl(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&&!St(e,t,o,a,l))return ca(e,t,o);const r=!Ze(t,e,n,a,l)&&!St(n,t,o,a,l),i=!St(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 Kl(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 Io(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=Io(o,`segment-${a}`);return l?t.some(s=>n.has(s.id)?!1:Kl(l,s)):!1})}function Yl(e){const t=[];for(const n of e)n.segments.forEach((o,a)=>{const l=Io(o,`edge:${n.id}:${a}`);l&&t.push(l)});return t}function Fn(e,t,n,o,a){const l=[...un(e,t,n),...Ul(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"?Dl: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 u=i.y-Ee,d=i.y+i.height+Ee;if(!(t<u||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 ql(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,Rl),g=r+d*Math.max(0,f);St(g,s,n,a,l,ot,ot)||i.push(g)}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,ot,ot))}return Array.from(new Set(i.map(d=>Math.round(d*1e3)/1e3))).reduce((d,f)=>{const g=Ze(n,d,o,a,l),y=Ze(n,f,o,a,l);return!!y!=!!g?y?d:f:Math.abs(f-r)<Math.abs(d-r)?f:d})}function Gl(e,t,n,o,a,l,s,r){const i=t.x,u=t.y,d=o.x,f=o.y,g=Xl(i,u,d,f,s,r,"horizontal");if(g&&g.segments.length===1&&!Wa(g.segments,s,r))return g;const y=t.side==="left"?-1:1,c=pn(e,u,y,s,r,14),b=i+y*c,C=q=>!Ze(u,i,q,s,r),S=Ft(b,u,f,s,r,y,i);if((d-i)*y>=0&&Math.abs(S-i)>1&&Math.abs(S-d)>1&&C(S)&&!St(S,u,f,s,r)&&!Ze(f,S,d,s,r)){const q=Fl(i,u,S,d,f);if(!Wa(q.segments,s,r))return q}let k=Gn(a,b,d,u,f,s,r),A=Ft(b,u,k,s,r,y,i);C(A)||(A=C(b)?b:i),k=Gn(a,A,d,u,f,s,r);const N=Math.abs(A-i),L=o.side==="left"?n.x-(Be+24):n.x+n.width+Be+24,te=l??Co(L,k,f,s,r),G=A>i?1:-1,Y=k>u?1:-1,P=te>A?1:-1,M=f>k?1:-1,v=d>te?1:-1,_=Math.min(Oe,Math.abs(N)/2||Oe,Math.abs(k-u)/2||Oe,Math.abs(te-A)/2||Oe,Math.abs(f-k)/2||Oe,Math.abs(d-te)/2||Oe);return N<2?{d:[`M ${i} ${u}`,`L ${i} ${k-_*Y}`,`Q ${i} ${k} ${i+_*P} ${k}`,`L ${te-_*P} ${k}`,`Q ${te} ${k} ${te} ${k+_*M}`,`L ${te} ${f-_*M}`,`Q ${te} ${f} ${te+_*v} ${f}`,`L ${d} ${f}`].join(" "),segments:[{orientation:"vertical",x1:i,y1:u,x2:i,y2:k},{orientation:"horizontal",x1:i,y1:k,x2:te,y2:k},{orientation:"vertical",x1:te,y1:k,x2:te,y2:f},{orientation:"horizontal",x1:te,y1:f,x2:d,y2:f}]}:{d:[`M ${i} ${u}`,`L ${A-_*G} ${u}`,`Q ${A} ${u} ${A} ${u+_*Y}`,`L ${A} ${k-_*Y}`,`Q ${A} ${k} ${A+_*P} ${k}`,`L ${te-_*P} ${k}`,`Q ${te} ${k} ${te} ${k+_*M}`,`L ${te} ${f-_*M}`,`Q ${te} ${f} ${te+_*v} ${f}`,`L ${d} ${f}`].join(" "),segments:[{orientation:"horizontal",x1:i,y1:u,x2:A,y2:u},{orientation:"vertical",x1:A,y1:u,x2:A,y2:k},{orientation:"horizontal",x1:A,y1:k,x2:te,y2:k},{orientation:"vertical",x1:te,y1:k,x2:te,y2:f},{orientation:"horizontal",x1:te,y1:f,x2:d,y2:f}]}}function Wl(e,t,n,o,a,l,s,r){const i=t.x,u=t.y,d=n.x,f=n.y,g=t.side==="left"?-1:1,y=pn(e,u,g,s,r,14),x=i+g*y,c=a??Ft(x,u,o,l,r,g,i,ot,ot),b=a!==null?o:hn(o,c,d,u,f,s,r,f>=u?1:-1,u),C=Math.abs(c-i),S=c>i?1:-1,T=b>u?1:-1,k=d>c?1:-1,A=f>b?1:-1,N=Math.min(Oe,Math.abs(C)/2||Oe,Math.abs(b-u)/2||Oe,Math.abs(d-c)/2||Oe,Math.abs(f-b)/2||Oe);return C<2?{d:[`M ${i} ${u}`,`L ${i} ${b-N*T}`,`Q ${i} ${b} ${i+N*k} ${b}`,`L ${d-N*k} ${b}`,`Q ${d} ${b} ${d} ${b+N*A}`,`L ${d} ${f}`].join(" "),segments:segmentsViaMidY(i,u,d,f,b)}:{d:[`M ${i} ${u}`,`L ${c-N*S} ${u}`,`Q ${c} ${u} ${c} ${u+N*T}`,`L ${c} ${b-N*T}`,`Q ${c} ${b} ${c+N*k} ${b}`,`L ${d-N*k} ${b}`,`Q ${d} ${b} ${d} ${b+N*A}`,`L ${d} ${f}`].join(" "),segments:[{orientation:"horizontal",x1:i,y1:u,x2:c,y2:u},{orientation:"vertical",x1:c,y1:u,x2:c,y2:b},{orientation:"horizontal",x1:c,y1:b,x2:d,y2:b},{orientation:"vertical",x1:d,y1:b,x2:d,y2:f}]}}function Ql(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,u=(n?n.x+n.width/2:r)>=r?"right":"left";return{side:u,x:u==="right"?e.x+e.width:e.x,y:pt(e,t)}}if(n?.type==="model"&&Jl(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 Jl(e){return e.type==="prompt"||e.type==="side"&&e.data.mode==="ai"||e.type==="tool"&&e.data.kind==="prompt"}const We=8,vn=6,Zl=12,Qa=6;function Ye(e){return e.x+e.width/2}function ei(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),u=Math.abs(r.x-s.x)+Math.abs(r.y-s.y),d=Math.min(Oe,i/2,u/2);if(d<1){n.push(`L ${s.x} ${s.y}`);continue}const f=Math.sign(s.x-l.x),g=Math.sign(s.y-l.y),y=Math.sign(r.x-s.x),x=Math.sign(r.y-s.y),c={x:s.x-f*d,y:s.y-g*d},b={x:s.x+y*d,y:s.y+x*d};n.push(`L ${c.x} ${c.y}`),n.push(`Q ${s.x} ${s.y} ${b.x} ${b.y}`)}const o=t[t.length-1];return n.push(`L ${o.x} ${o.y}`),n.join(" ")}function ti(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 ei(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 ni(e){return e==="tool"||e==="provider"||e==="mcp"}function ai(e){return Math.round(e/Zl)}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}]),u=oi(e,t,r,l,s),d=ri(r,e,n,l,s)??si(r,e,n,l,s),f=u??d;if(!f)return{d:Ja(i),segments:i};const g=n<e?-1:1,y=vn+Math.abs(a.aisleOffset),x=g<0?f.x-y:f.x+f.width+y,c=f.y+f.height+vn,b=a.rowIndex>0?c:Math.min(a.sourceLaneY,Math.max(r+We/2,c)),C=r>=t?Math.max(t+We,a.escapeLaneY):Math.min(t-We,b),S=Qn([{x:e,y:t},{x:e,y:C},{x,y:C},{x,y:r},{x:n,y:r},{x:n,y:o}]);return{d:Ja(S),segments:S}}function Eo(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),u=Math.max(t.x1,t.x2);return Math.max(0,Math.min(r,u)-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 oi(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n),r=n>=t?1:-1;let i=null,u=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,g=Math.abs(f-t);g<u&&(i=d,u=g)}return i}function ri(e,t,n,o,a){const l=Math.min(t,n),s=Math.max(t,n),r=n>=t?1:-1;let i=null,u=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,g=Math.abs(f-t);g<u&&(i=d,u=g)}return i}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,u=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,g=Math.abs(f-t);g<u&&(i=d,u=g)}return i}function li(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+=Eo(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+=Eo(a,l)*1e3;return n}function ii(e,t,n){return e.some(o=>o.orientation==="horizontal"?!!Ze(o.y1,o.x1,o.x2,t,n):!!St(o.x1,o.y1,o.y2,t,n))}function di(e,t,n,o,a,l,s,r){const i=jl(e,t,n,o,a);if(!ii(i,s,r))return{d:zl(e,t,n,o,a),segments:i};const u=So(n+l,da(a,o,s,r,10,10)),d=hn(o-Math.min(Math.max((o-a)/4,Be),48),u,n,a,o,s,r,-1,o),f=Qn([{x:e,y:t},{x:e,y:a},{x:u,y:a},{x:u,y:d},{x:n,y:d},{x:n,y:o}]);return{d:ti(f),segments:f}}function to(e,t,n,o){return[...n,...Tt(e,t,o)]}function ui(e,t,n,o){const a=new Map;for(const y of e)a.set(y.id,y);const l=new Map,s=new Map;for(const y of t){if(!a.has(y.from)||!a.has(y.to))continue;const x=l.get(y.from);x?x.push(y):l.set(y.from,[y]);const c=s.get(y.to);c?c.push(y):s.set(y.to,[y])}for(const[,y]of l)y.sort((x,c)=>{const b=a.get(x.to),C=a.get(c.to);return b.x+b.width/2-(C.x+C.width/2)});for(const[,y]of s)y.sort((x,c)=>{const b=a.get(x.from),C=a.get(c.from);return b.x+b.width/2-(C.x+C.width/2)});const r=new Map,i=new Map;for(const[y,x]of l){const c=a.get(y);if(c.type==="agent"){x.forEach(b=>{const C=b.sideId==="a"?c.x+c.width*.25:c.x+c.width*.75;r.set(b.id,C)});continue}if(c.type==="side"&&x.some(b=>b.toolKind)){const C=c.data.tools||[],S=[];C.some(L=>L.kind==="tool"||L.kind==="provider"||L.kind==="mcp")&&S.push("function"),C.some(L=>L.kind==="prompt")&&S.push("prompt"),C.some(L=>L.kind==="subagent")&&S.push("subagent"),C.some(L=>L.kind==="handoff")&&S.push("handoff");const T=S.length>0?.45:1,k=S.length>0?(1-T)/S.length:0,A=new Map;for(const L of x){if(!L.toolKind||S.length===0)continue;const te=L.toolKind==="tool"||L.toolKind==="provider"||L.toolKind==="mcp"?"function":L.toolKind,G=A.get(te);G?G.push(L):A.set(te,[L])}for(const[L,te]of A)te.sort((G,Y)=>{const P=a.get(G.to),M=a.get(Y.to);if(L==="function"){const v=P.y-M.y;if(Math.abs(v)>1)return v}return Ye(P)-Ye(M)});const N=o?.[c.id]?.toolColumns;for(const[L,te]of A){let G,Y;const P=N?.[L];if(P)G=c.x+P.left,Y=c.x+P.left+P.width;else{const q=S.indexOf(L);if(q<0)continue;G=c.x+c.width*(T+q*k),Y=c.x+c.width*(T+(q+1)*k)}const M=G+Be,v=Y-Be,_=te.length;te.forEach((q,V)=>{const H=_===1?(G+Y)/2:M+(v-M)*V/(_-1);r.set(q.id,H)})}x.forEach(L=>{if(r.has(L.id))return;if(L.toolKind&&S.length>0){const Y=L.toolKind==="tool"||L.toolKind==="provider"||L.toolKind==="mcp"?"function":L.toolKind,P=S.indexOf(Y);if(P>=0){const M=T+P*k+k/2;r.set(L.id,c.x+c.width*M);return}}const te=a.get(L.to),G=te.x+te.width/2;r.set(L.id,Math.max(c.x+Be,Math.min(c.x+c.width-Be,G)))});continue}x.forEach(b=>{const C=a.get(b.to),S=C.x+C.width/2;r.set(b.id,Math.max(c.x+Be,Math.min(c.x+c.width-Be,S)))})}for(const[y,x]of s){const c=a.get(y),b=c.x+c.width/2;x.forEach(C=>i.set(C.id,b))}for(const[y,x]of l){const c=a.get(y);if(!c||x.length<=1)continue;const b=new Map;for(const C of x){const S=r.get(C.id);if(S===void 0)continue;const T=Math.round(S),k=b.get(T);k?k.push(C):b.set(T,[C])}for(const[C,S]of b){if(S.length<=1)continue;S.sort((k,A)=>{const N=a.get(k.to),L=a.get(A.to);return Ye(N)-Ye(L)});const T=r.get(S[0].id)??C;S.forEach((k,A)=>{const N=(A-(S.length-1)/2)*We;r.set(k.id,Math.max(c.x+Be,Math.min(c.x+c.width-Be,T+N)))})}}const u=Array.from(a.values()),d=new Map;for(const y of t){const x=a.get(y.from),c=a.get(y.to);if(!x||!c)continue;const b=d.get(y.from);b?b.push(y):d.set(y.from,[y])}for(const[,y]of d)y.sort((x,c)=>{const b=a.get(x.to),C=a.get(c.to),S=b.y-C.y;return Math.abs(S)>1?S:b.x+b.width/2-(C.x+C.width/2)});const f=new Map,g=new Map;for(const[y,x]of d){const c=a.get(y);if(!c||c.type!=="side")continue;const b=x.filter(V=>ni(V.toolKind)).filter(V=>!!a.get(V.to)).sort((V,H)=>{const E=a.get(V.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(b.length<=1)continue;const C=b.reduce((V,H)=>V+(r.get(H.id)??Ye(c)),0)/b.length,T=b.reduce((V,H)=>V+Ye(a.get(H.to)),0)/b.length<C,k=[],A=new Map;for(const V of b){const H=a.get(V.to),E=ai(H.y),j=A.get(E);if(j)j.push(V);else{const F=[V];A.set(E,F),k.push(F)}}k.sort((V,H)=>a.get(V[0].to).y-a.get(H[0].to).y);const N=Math.min(...b.map(V=>a.get(V.to).y)),L=c.y+c.height+8,te=Math.max(L,N-8),G=b.length<=1?0:(te-L)/(b.length-1);g.set(c.id,te),k.forEach(V=>{V.sort((H,E)=>{const j=a.get(H.to),F=a.get(E.to);return Ye(j)-Ye(F)})});const Y=[...b].sort((V,H)=>(r.get(V.id)??Ye(c))-(r.get(H.id)??Ye(c))),P=T,M=!T,v=[];for(const V of[P,!P])for(const H of[M,!M])for(const E of[!1,!0])v.push({sourceReversed:V,rowReversed:H,aisleReversed:E,preference:(V===P?0:2)+(H===M?0:1)});let _=new Map,q=Number.POSITIVE_INFINITY;for(const V of v){const H=new Map,E=new Map;Y.forEach((se,me)=>{H.set(se.id,me),E.set(se.id,V.sourceReversed?b.length-1-me:me)});const j=new Map,F=k[0]?.length??0;k.forEach((se,me)=>{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=T?1:-1;se.forEach((ve,ee)=>{const Z=E.get(ve.id)??ee,h=V.rowReversed?se.length-1-ee:ee,w=V.aisleReversed?b.length-1-(H.get(ve.id)??ee):H.get(ve.id)??ee,B=me===0&&se.length>1?L+ee*G:L+Z*G,oe=H.get(ve.id)??ee,de=me===0?Math.max(B,U+h*le-We/2):te-We+Math.max(0,oe-F)*2,ne=T?c.x+c.width+vn:c.x-vn,re=(T?1:-1)*w*We,be=U+h*le,ke=Math.min(z-4,Math.max(be,B+We/2));j.set(ve.id,{rowIndex:me,sourceLaneY:B,escapeLaneY:de,rowLaneY:ke,aisleX:ne,aisleOffset:re,aisleDirection:ie})})});const X=b.map(se=>{const me=a.get(se.to),z=r.get(se.id)??Ye(c),U=c.y+c.height,J=i.get(se.id)??Ye(me),le=me.y,ie=new Set([c.id,me.id]),ve=to(c,me,u,n);return Za(z,U,J,le,j.get(se.id),ve,ie)}),pe=li(X)+V.preference;pe<q&&(q=pe,_=j)}for(const[V,H]of _)f.set(V,H)}return t.map(y=>{const x=a.get(y.from),c=a.get(y.to);if(!x||!c)return null;const b=r.get(y.id)??x.x+x.width/2,C=x.y+x.height,S=i.get(y.id)??c.x+c.width/2,T=c.y,k=d.get(y.from)??[y],N=Math.max(0,k.findIndex(q=>q.id===y.id))-(k.length-1)/2,L=C+Math.min((T-C)/2,24)+N*We,G=g.get(y.from)&&x.type==="side"&&!f.has(y.id)?C:L,Y=[...u,...Tt(x,c,n)],P=new Set([x.id,c.id]),M=f.get(y.id),v=M?to(x,c,u,n):Y,_=M?Za(b,C,S,T,M,v,P):di(b,C,S,T,Gn(G,b,S,C,T,Y,P),N*We,Y,P);return{id:y.id,d:_.d,sideId:y.sideId,kind:y.kind??"structural",toolKind:y.toolKind,sourceAnchor:{side:"bottom",x:b,y:C},targetAnchor:{side:"top",x:S,y:T},segments:_.segments}}).filter(y=>!!y)}function ci(e,t,n,o,a,l,s,r){if(e.length<=1)return t;const i=_o(t);let u=t,d=Number.POSITIVE_INFINITY;for(const f of i){const g=e.map((x,c)=>{const b=a.get(x.from),C=mt(b,l,n);return Hl(C.x,C.y,s.get(x.id)??C.x,r.get(x.id)??C.y,f[c],o)});let y=0;for(let x=0;x<g.length;x++)for(let c=x+1;c<g.length;c++)for(const b of g[x])for(const C of g[c])ua(b,C)&&(y+=1e3);y+=f.reduce((x,c,b)=>{const C=e[b];return x+Math.abs(c-(s.get(C.id)??c))},0),y<d&&(d=y,u=f)}return u}function fi(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 mi(e,t,n,o,a=[],l=[]){const s=new Map;for(const x of e)s.set(x.id,x);const r=Array.from(s.values()),i=new Map;for(const x of t){const c=s.get(x.to);if(!c||c.type!=="model")continue;const b=c.placementMode,C=`${c.id}|${b??"side"}`,S=i.get(C);S?S.push(x):i.set(C,[x])}const u=new Map,d=new Map,f=new Map,g=new Map;for(const[,x]of i){const c=s.get(x[0].to),b=c.placementMode,C=Ql(b),S=[...x];if(C==="top"){S.sort((F,X)=>{const pe=s.get(F.from),se=s.get(X.from);return pe.x+pe.width/2-(se.x+se.width/2)});const k=c.x+c.width/2,A=S.filter(F=>{const X=s.get(F.from);return X.x+X.width/2<k}),N=S.filter(F=>{const X=s.get(F.from);return X.x+X.width/2>=k}),L=[...A].reverse(),te=[...N],G=[...L,...te],Y=Ka(c,G.length,"top"),P=G.every(F=>c.y>=mt(s.get(F.from),o,c).y),M=P?Math.max(...G.map(F=>{const X=s.get(F.from),pe=mt(X,o,c),se=X.y+X.height+Ee+Ge,me=Fn(X,c,n,se,!0);return hn(me,pe.x,c.x+c.width/2,pe.y,c.y,Ht([...r,...Tt(X,c,n),...un(X,c,n)],an,on),new Set([X.id,c.id]),1,pe.y)})):Math.min(...G.map(F=>{const X=s.get(F.from),pe=mt(X,o,c),se=X.y-Ee-Ge,me=Fn(X,c,n,se,!1);return hn(me,pe.x,c.x+c.width/2,pe.y,c.y,Ht([...r,...Tt(X,c,n),...un(X,c,n)],an,on),new Set([X.id,c.id]),-1,pe.y)})),v=qa(G.length,Re),_=v[v.length-1]??0,q=c.y-Ol,V=P?q-_:M,H=[{isLeftApproach:!0,edges:A,startIndex:0,assignOrder:(F,X)=>{const pe=s.get(F.from);return s.get(X.from).x-pe.x}},{isLeftApproach:!1,edges:N,startIndex:L.length,assignOrder:(F,X)=>{const pe=s.get(F.from),se=s.get(X.from);return pe.x-se.x}}];for(const F of H){const X=F.edges;if(X.length===0)continue;const pe=[...X].sort(F.assignOrder),se=[];for(const me of pe){const z=s.get(me.from),U=mt(z,o,c),J=f.get(me.id)??V,le=new Set([z.id,c.id]),ie=Ht([...r,...Tt(z,c,n)],an,on);let ve=ql(z,U,J,c.x+c.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 w=se.find(oe=>Math.max(ee,oe.minY)<Math.min(Z,oe.maxY)&&Math.abs(ve-oe.exitX)<Re);if(!w)break;const B=w.exitX<=U.x?-1:1;ve=Ft(w.exitX+B*Re,U.y,J,ie,le,B,U.x,ot,ot)}g.set(me.id,ve),se.push({exitX:ve,minY:ee,maxY:Z})}}[...G].sort((F,X)=>{const pe=s.get(F.from),se=s.get(X.from),me=pe.x+pe.width/2,z=se.x+se.width/2,U=me<k,J=z<k,le=g.get(F.id)??me,ie=g.get(X.id)??z;return U!==J?Math.abs(le-k)-Math.abs(ie-k):U?P?ie-le:le-ie:P?le-ie:ie-le}).forEach((F,X)=>f.set(F.id,P?V+v[X]:V-v[X]));const j=ci(G,Y,c,c.y,s,o,g,f);G.forEach((F,X)=>u.set(F.id,{side:"top",x:j[X],y:c.y}));continue}S.sort((k,A)=>{const N=s.get(k.from),L=s.get(A.from),te=pt(N,o)-pt(L,o);return te!==0?te:N.x+N.width/2-(L.x+L.width/2)});const T=Ka(c,S.length,C);if(S.forEach((k,A)=>{const N=pt(c,o),L=S.length===1?mt(s.get(k.from),o,c).y:null;u.set(k.id,{side:C,x:C==="left"?c.x:c.x+c.width,y:S.length===1&&L!==null&&Math.abs(L-N)<=Bl?L:S.length===1?N:T[A]})}),S.length>1){const k=new Set([c.id,...S.map(P=>P.from)]),A=[...r,...n.filter(P=>![{x:c.x+c.width/2,y:c.y+c.height/2},...S.map(v=>{const _=s.get(v.from);return{x:_.x+_.width/2,y:_.y+_.height/2}})].some(v=>v.x>=P.x&&v.x<=P.x+P.width&&v.y>=P.y&&v.y<=P.y+P.height)).map(yn),...a],N=S.map(P=>u.get(P.id).y),L=C==="left"?c.x-(Be+24):c.x+c.width+Be+24,te=Co(L,Math.min(...N),Math.max(...N),A,k),G=qa(S.length,Re),Y=C==="left"?-1:1;S.forEach((P,M)=>d.set(P.id,te+Y*G[M]))}}const y=[];return t.map(x=>{if(x.from===x.to)return null;const c=s.get(x.from),b=s.get(x.to);if(!c||!b||b.type!=="model")return null;const C=mt(c,o,b),S=u.get(x.id);if(!S)return null;const k=[...Ht([...r,...Tt(c,b,n),...un(c,b,n)],an,on),...a],A=new Set([c.id,b.id]),N=Ht(r.filter(H=>!A.has(H.id)),Qa,Qa),L=S.y>=C.y,te=L?c.y+c.height+Ee+Ge:c.y-Ee-Ge,G=Fn(c,b,n,te,L),Y=f.get(x.id)??G;let P=C,M=null;const v=C.side,q=[C,fi(c,v==="left"?"right":"left",o)],V=[Y,Y-Re,Y-Re*2,Y-Re*4,Y-Re*8,Y-Re*16,Y-Re*24,Y+Re,Y+Re*2,Y+Re*4,Y+Re*8,Y+Re*16,Y+Re*24];if(S.side==="top"){let H=Number.POSITIVE_INFINITY;const E=g.get(x.id)??null,j=E===null?[null]:[E,null];for(const F of q)for(const X of j)for(const pe of V){const se=Wl(c,F,S,pe,X,k,k,A),me=eo(se.segments,[...l,...y])+rn(se.segments,N)*5e4+rn(se.segments,a)*1e4+no(se.segments)*.01+Math.abs(pe-Y)*.2+(F.side===v?0:25)+(X===E?0:10);me<H&&(H=me,P=F,M=se)}}if(!M){let H=Number.POSITIVE_INFINITY;const E=d.get(x.id)??null,j=E===null?[null]:[E,null],F=L?1:-1,X=[Y,Y+F*Re,Y+F*Re*2,Y+F*Re*4,Y+F*Re*8,Y-F*Re];for(const pe of q)for(const se of j)for(const me of X){const z=Gl(c,pe,b,S,me,se,k,A),U=eo(z.segments,[...l,...y])+rn(z.segments,N)*5e4+rn(z.segments,a)*1e4+no(z.segments)*.01+Math.abs(me-Y)*.2+(pe.side===v?0:25)+(se===E?0:10);U<H&&(H=U,P=pe,M=z)}}return y.push({d:M.d,segments:M.segments}),{id:x.id,d:M.d,sideId:x.sideId,kind:"model",toolKind:x.toolKind,sourceAnchor:P,targetAnchor:S,segments:M.segments}}).filter(x=>!!x)}function hi(e){const t=Vl(e.edges),n=t.filter(l=>l.kind!=="model"),o=t.filter(l=>l.kind==="model"),a=ui(e.nodes,n,e.groups,e.nodeMetrics);return[...a,...mi(e.nodes,o,e.groups,e.nodeMetrics,Yl(a),a)]}const pi={class:"pointer-events-none absolute left-0 top-0 overflow-visible",width:"1",height:"1"},vi=["data-edge-id","data-edge-kind","data-edge-tool-kind","d","stroke-width","stroke-dasharray"],gi=Ie({__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(()=>hi({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",pi,[(p(!0),$($e,null,_e(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,vi))),128))]))}}),xi={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function yi(e,t){return p(),$("svg",xi,[...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 bi=st({name:"lucide-minus",render:yi}),ki={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function wi(e,t){return p(),$("svg",ki,[...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 $i=st({name:"lucide-maximize",render:wi}),Mi={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"},Ti={class:"min-w-[3rem] text-center text-[11px] font-medium tabular-nums text-neutral-500 dark:text-neutral-400"},Ci=Ie({__name:"CanvasControls",props:{scalePercent:{}},emits:["zoom-in","zoom-out","fit-view"],setup(e){return(t,n)=>(p(),$("div",Mi,[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(bi),{class:"h-3.5 w-3.5"})]),m("span",Ti,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(go),{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($i),{class:"h-3.5 w-3.5"})])]))}}),Xe=Ie({__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,u){o("open",{target:r,anchorEl:i.currentTarget,editData:u})}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(u=>a(e.target,u,e.editData),["stop"])),onKeydown:i[1]||(i[1]=u=>l(e.target,u)),onMouseenter:i[2]||(i[2]=u=>o("hover-target",e.target)),onMouseleave:i[3]||(i[3]=u=>o("hover-target",null))},{default:xe(()=>[i[4]||(i[4]=m("div",{class:"composition-edit-region-overlay"},null,-1)),Gr(r.$slots,"default")]),_:3},40,["data-edit-active","class"]))}}),Si={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function _i(e,t){return p(),$("svg",Si,[...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=st({name:"lucide-variable",render:_i}),Ii={key:0,class:"mt-1.5 w-full border-collapse text-[11px]"},Ei={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=Ie({__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,[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]=fe(" Variables ",-1))],2),t.variables.length>0?(p(),$("table",Ii,[(p(!0),$($e,null,_e(t.variables,l=>(p(),$("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(),$("span",Ei,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(),$("div",{key:1,class:ue(["mt-1.5 text-[11px] italic",t.muted?"opacity-40":"text-neutral-400 dark:text-neutral-600"])}," None ",2))]))}}),Ai="ring-2 agents-ring-selected ring-offset-2 ring-offset-white shadow-md dark:ring-offset-neutral-900",Ni="ring-[3px] agents-ring-selected ring-offset-[6px] ring-offset-white shadow-lg dark:ring-offset-neutral-950";function xt(e,t){return e?Ai:t?Ni:""}const Pi={class:"flex border-b border-neutral-200 dark:border-neutral-700"},Li={class:"flex items-center justify-between gap-3 px-5 pt-3.5 pb-2"},Ri={class:"ml-1 shrink-0 rounded-full border border-current/60 px-1.5 py-px text-[9.5px] font-semibold tracking-wider"},Oi={class:"flex items-center gap-3.5 px-5 pt-1 pb-3.5"},Di=["src"],Bi={class:"min-w-0"},Vi={class:"whitespace-nowrap text-[16px] font-semibold leading-tight"},Ui={class:"mt-0.5 whitespace-nowrap font-mono text-xs text-neutral-400 dark:text-neutral-500"},Hi={key:0,class:"px-5 pb-3"},zi={key:0,class:"mb-2 flex flex-wrap gap-1"},ji={key:1,class:"max-w-[280px] text-[11px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Fi={class:"mt-1 max-w-[280px] text-[11px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Xi={class:"mt-auto grid grid-cols-[1fr_1px_1fr] border-t border-neutral-200 dark:border-neutral-700"},Ki={class:"flex items-center gap-1.5 whitespace-nowrap text-[10px] font-bold uppercase tracking-[0.15em] text-sky-600 dark:text-sky-400"},Yi={class:"mt-0.5 whitespace-nowrap font-mono text-[11px] text-neutral-500 dark:text-neutral-400"},qi={class:"mt-1.5 grid grid-cols-[auto_1fr] gap-x-3 text-[11px]"},Gi={class:"whitespace-nowrap py-[1px] text-neutral-400 dark:text-neutral-500"},Wi=["title"],Qi={class:"flex items-center gap-1.5 whitespace-nowrap text-[10px] font-bold uppercase tracking-[0.15em] text-amber-600 dark:text-amber-400"},Ji={key:0,class:"mt-0.5 whitespace-nowrap font-mono text-[11px] text-neutral-500 dark:text-neutral-400"},Zi={key:1,class:"mt-0.5 text-[11px] text-neutral-400 dark:text-neutral-500"},ed={key:2,class:"mt-1.5 grid grid-cols-[auto_1fr] gap-x-3 text-[11px]"},td={class:"whitespace-nowrap py-[1px] text-neutral-400 dark:text-neutral-500"},nd=["title"],Ao=Ie({__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(P){const M=a.value?.target;return!M||M.entityType!=="agent"||M.entityId!==n.data.name?!1:M.section===P}function s(P){if(l(P))return!0;const M=n.hoveredEditTarget;return!M||M.entityType!=="agent"||M.entityId!==n.data.name?!1:M.section===P}function r(P){return{entityType:"agent",entityId:n.data.name,section:P}}const i=O(()=>n.data.type==="dual_ai"),u=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"),g=O(()=>n.data.side_a_label||"Side A"),y=O(()=>n.data.side_b_label||(i.value?"Side B":"Human")),x=O(()=>G({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})),c=O(()=>G({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})),b=O(()=>n.data._variables||[]),C=O(()=>Object.keys(n.data.env||{}).filter(P=>P.trim().length>0)),S=O(()=>{const P=new Set(b.value.map(M=>M.name));return C.value.filter(M=>P.has(M))}),T=O(()=>n.data.expose_as_tool&&n.data.tool_description?.trim()||null),k=O(()=>n.data._isSubagent&&T.value?T.value:n.data.description||null),A=O(()=>!n.data._isSubagent&&!!T.value),N=O(()=>{if(!i.value)return null;const P=n.data.max_session_turns;return typeof P!="number"?"unlimited session turns":`max ${P} session turn${P===1?"":"s"}`}),L=O(()=>{const P=[];return n.data.expose_as_tool&&!n.data._isSubagent&&P.push("tool"),N.value&&P.push(N.value),C.value.length>0&&P.push(`${C.value.length} env override${C.value.length===1?"":"s"}`),P}),te=O(()=>!!k.value||A.value||L.value.length>0);function G(P){return[{key:"stop_on_response",label:"Stop on response",value:P.stopOnResponse?"On":"Off",active:P.stopOnResponse},{key:"stop_tool",label:"Stop tool",value:P.stopTool||"Off",active:!!P.stopTool},{key:"max_steps",label:"Max steps",value:Y(P.maxSteps),active:P.maxSteps!==null&&P.maxSteps!==void 0},{key:"end_conversation",label:"End conversation tool",value:P.endConversationTool||"Off",active:!!P.endConversationTool}]}function Y(P){return typeof P=="number"?String(P):"Unlimited"}return(P,M)=>(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(xt)(e.selected,e.hovered)]),style:{width:"max-content"}},[m("div",Pi,[Q(Xe,{class:"min-w-0 flex-1",target:r("identity"),active:s("identity"),onOpen:M[1]||(M[1]=v=>o("edit-surface",v)),onHoverTarget:M[2]||(M[2]=v=>o("hover-edit-target",v))},{default:xe(()=>[m("div",Li,[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",Ri,K(u.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:M[0]||(M[0]=Me(v=>P.$emit("action"),["stop"]))},K(e.actionLabel),1)):W("",!0)]),m("div",Oi,[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,Di),m("div",Bi,[m("div",Vi,K(e.data.title),1),m("div",Ui,K(e.data.name),1)])]),te.value?(p(),$("div",Hi,[L.value.length>0?(p(),$("div",zi,[(p(!0),$($e,null,_e(L.value,v=>(p(),$("span",{key:v,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(v),1))),128))])):W("",!0),k.value?(p(),$("p",ji,K(k.value),1)):W("",!0),A.value?(p(),$("div",{key:2,class:ue(k.value?"mt-2":"")},[M[9]||(M[9]=m("div",{class:"text-[10px] font-bold uppercase tracking-[0.16em] text-neutral-400 dark:text-neutral-500"}," Tool use ",-1)),m("p",Fi,K(T.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:M[3]||(M[3]=v=>o("edit-surface",v)),onHoverTarget:M[4]||(M[4]=v=>o("hover-edit-target",v))},{default:xe(()=>[Q(fa,{variables:b.value,"flagged-names":S.value,"flag-label":"env"},null,8,["variables","flagged-names"])]),_:1},8,["target","active"])]),m("div",Xi,[Q(Xe,{class:"px-3 py-2",target:r("side-a"),active:s("side-a"),onOpen:M[5]||(M[5]=v=>o("edit-surface",v)),onHoverTarget:M[6]||(M[6]=v=>o("hover-edit-target",v))},{default:xe(()=>[m("div",Ki,[Q(I(tt),{class:"h-3 w-3"}),fe(" "+K(g.value),1)]),m("div",Yi,K(e.data.side_a_agent_prompt),1),m("dl",qi,[(p(!0),$($e,null,_e(x.value,v=>(p(),$($e,{key:v.key},[m("dt",Gi,K(v.label),1),m("dd",{class:ue(["whitespace-nowrap py-[1px] text-right font-mono",v.active?"text-sky-600 dark:text-sky-400":"text-neutral-400 dark:text-neutral-600"]),title:v.value},K(v.value),11,Wi)],64))),128))])]),_:1},8,["target","active"]),M[10]||(M[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:M[7]||(M[7]=v=>o("edit-surface",v)),onHoverTarget:M[8]||(M[8]=v=>o("hover-edit-target",v))},{default:xe(()=>[m("div",Qi,[(p(),ce(lt(i.value?I(tt):I(aa)),{class:"h-3 w-3"})),fe(" "+K(y.value),1)]),e.data.side_b_agent_prompt?(p(),$("div",Ji,K(e.data.side_b_agent_prompt),1)):(p(),$("div",Zi,"No prompt")),e.data.side_b_agent_prompt?(p(),$("dl",ed,[(p(!0),$($e,null,_e(c.value,v=>(p(),$($e,{key:v.key},[m("dt",td,K(v.label),1),m("dd",{class:ue(["whitespace-nowrap py-[1px] text-right font-mono",v.active?"text-amber-600 dark:text-amber-400":"text-neutral-400 dark:text-neutral-600"]),title:v.value},K(v.value),11,nd)],64))),128))])):W("",!0)]),_:1},8,["target","active"])])],2))}}),ad=Ie({__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(Ao,{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"]))}}),od={},rd={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 sd(e,t){return p(),$("svg",rd,[...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=co(od,[["render",sd]]),ld={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function id(e,t){return p(),$("svg",ld,[...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 No=st({name:"lucide-file-pen-line",render:id}),dd={class:"relative"},ud={class:"flex items-start gap-1.5"},cd=["aria-label"],fd={key:1,class:"mt-0.5 inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center"},md={class:"min-w-0 flex-1"},hd={class:"flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-1"},pd={key:0,class:"text-[12px] leading-none font-semibold text-rose-500 dark:text-rose-400","aria-label":"Required"},vd={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"},gd={key:0,class:"mt-0.5 max-w-[32rem] break-words text-[10px] leading-relaxed text-neutral-400 dark:text-neutral-500"},xd={key:0},yd=Ie({__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,u)=>{const d=vt("DataTreeRow",!0);return p(),$("div",dd,[m("div",{style:De(s.value),class:"py-1.5"},[m("div",ud,[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:u[0]||(u[0]=Me(f=>o("toggle",e.node.id),["stop"]))},[Q(I(xo),{class:ue(["h-3 w-3 transition-transform",l.value?"rotate-90":""])},null,8,["class"])],8,cd)):(p(),$("span",fd,[...u[2]||(u[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",md,[m("div",hd,[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(),$("span",pd," * ")):W("",!0),e.node.value?(p(),$("span",vd,K(e.node.value),1)):W("",!0)]),e.node.description?(p(),$("div",gd,K(e.node.description),1)):W("",!0)])])],4),a.value&&l.value?(p(),$("div",xd,[(p(!0),$($e,null,_e(e.node.children,f=>(p(),ce(d,{key:f.id,node:f,depth:e.depth+1,collapsed:e.collapsed,onToggle:u[1]||(u[1]=g=>o("toggle",g))},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)])}}}),bd={key:0,class:"text-[11px] italic text-neutral-400 dark:text-neutral-600"},kd={key:1},Po=Ie({__name:"DataTreeView",props:{nodes:{},emptyLabel:{default:"No fields"}},setup(e){const t=e,n=D(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",bd,K(e.emptyLabel),1)):(p(),$("div",kd,[(p(!0),$($e,null,_e(e.nodes,r=>(p(),ce(yd,{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 wd(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 Ct(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])=>Ct(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)=>Ct(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,u)=>Ct(`${s} ${u+1}`,zt(i)?i:{},`${n}.${s}.${u}`,!0)));zt(t.additionalProperties)&&a.push(Ct("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:wd(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])=>Ct(o,zt(a)?a:{},`schema.${o}`,n.has(o)))}return[Ct("value",e,"schema.value",!0)]}function $d(e){const t=e.reasoning?.effort;return t==="low"||t==="medium"||t==="high"?t:"off"}function Md(e){const t=e.reasoning?.maxTokens;return typeof t=="number"?t.toLocaleString():"—"}function Lo(e,t){const n=$d(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:Md(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 Ro(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 Td(e,t={}){const n=await at(e);if(!n)return null;try{const{toolsCatalog:o,models:a}=await Ro(t);return Do(n,{toolsCatalog:o,models:a})}catch{return{prompt:n,nestedTools:[],model:null}}}async function Oo(e,t={}){if(e.length===0)return[];const n=await Ro(t).catch(()=>null);return(await Promise.all(e.map(async a=>[a,await at(a)]))).map(([a,l])=>l?n?[a,Do(l,n)]:[a,{prompt:l,nestedTools:[],model:null}]:[a,null])}function Do(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 Bo(e){try{return(await Qe(`/agents/${encodeURIComponent(e)}`)).agent}catch{return null}}async function Cd(e,t={}){const[n,o,a]=await Promise.all([e.kind==="tool"?po(e.name):Promise.resolve(null),e.kind==="prompt"?Td(e.name,t):Promise.resolve(null),e.kind==="handoff"?Bo(e.name):Promise.resolve(null)]);return{functionTool:n,promptTool:o,handoffAgent:a}}async function Sd(e,t){const[n,o,a]=await Promise.all([Promise.all(e.functionTools.map(async l=>[l,await po(l)])),Oo(e.promptTools,t),Promise.all(e.handoffs.map(async l=>[l,await Bo(l)]))]);return{functionTools:Object.fromEntries(n),promptTools:Object.fromEntries(o),handoffs:Object.fromEntries(a)}}const _d={class:"flex"},Id={class:"flex min-w-0 flex-1 flex-col"},Ed={class:"flex items-start justify-between gap-4 px-5 py-3.5"},Ad={class:"min-w-0 flex-1"},Nd={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"},Pd={class:"mt-3"},Ld={class:"whitespace-nowrap font-mono text-[14px] font-semibold text-neutral-900 dark:text-neutral-100"},Rd={key:0,class:"mt-1 max-w-[220px] text-[11px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Od={class:"flex shrink-0 items-start gap-2"},Dd=["onKeydown"],Bd={"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"},Vd={class:"flex items-start gap-2"},Ud=["src"],Hd={class:"leading-tight"},zd={class:"whitespace-nowrap text-[13px] font-semibold text-neutral-900 dark:text-neutral-100"},jd={class:"whitespace-nowrap font-mono text-[10px] text-neutral-400 dark:text-neutral-500"},Fd={key:0,class:"group relative border-l border-neutral-200 pl-3 dark:border-neutral-800"},Xd={class:"grid shrink-0 grid-cols-2 gap-x-1.5 gap-y-1","aria-label":"Model capabilities"},Kd=["aria-label"],Yd={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"},qd={class:"grid grid-cols-[auto_1fr] items-center gap-x-2 gap-y-1 text-[11px]"},Gd={class:"flex items-center"},Wd={class:"flex min-h-0 flex-1"},Qd={class:"text-[9px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},Jd={class:"mt-1 space-y-[2px] text-[11px]"},Zd={class:"whitespace-nowrap text-neutral-500 dark:text-neutral-400"},eu={class:"flex min-w-0 flex-1 flex-col border-l border-neutral-200 dark:border-neutral-700"},tu={class:"mb-1 flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},nu={class:"flex shrink-0 min-w-[12rem] max-w-64 flex-col border-l border-neutral-200 dark:border-neutral-700"},au={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},ou={key:0,class:"mt-1.5 space-y-1"},ru={class:"flex flex-wrap items-center gap-x-1.5 gap-y-0.5"},su={class:"font-mono font-medium text-neutral-800 dark:text-neutral-200"},lu={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"},iu={key:1,class:"mt-1.5 text-[11px] italic text-neutral-400 dark:text-neutral-600"},du={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-fuchsia-500 dark:text-fuchsia-400"},uu={key:0,class:"mt-1.5 space-y-1"},cu={class:"font-mono font-medium text-neutral-800 dark:text-neutral-200"},fu={key:0,class:"mt-1 flex items-center gap-1.5 text-[10px] text-neutral-400 dark:text-neutral-500"},mu=["src"],hu={class:"font-medium text-neutral-500 dark:text-neutral-400"},pu={key:1,class:"truncate"},vu={key:1,class:"mt-1.5 text-[11px] italic text-neutral-400 dark:text-neutral-600"},gu={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-sky-500 dark:text-sky-400"},xu={key:0,class:"mt-1.5 space-y-1"},yu={class:"font-mono font-medium text-neutral-800 dark:text-neutral-200"},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-emerald-500 dark:text-emerald-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"},Vo=Ie({__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(M=>M.kind==="tool"||M.kind==="provider"||M.kind==="mcp")),l=O(()=>n.tools.filter(M=>M.kind==="prompt")),s=O(()=>n.tools.filter(M=>M.kind==="subagent")),r=O(()=>n.tools.filter(M=>M.kind==="handoff")),i=O(()=>n.variables||ra(n.prompt)),u=O(()=>n.variableEnvNames||sa(n.prompt)),d=O(()=>!!n.label),f=O(()=>n.toolConfig?"Sub-prompt":"Prompt"),g=O(()=>n.modelName||n.prompt.model_name);O(()=>n.modelProvider||n.prompt.model_provider);const y=O(()=>n.modelActual||n.prompt.model_id),x=O(()=>{const M=n.modelCapabilities||{};return[{key:"images",label:"Vision",enabled:M.supportsImages===!0},{key:"tools",label:"Tool Calls",enabled:M.supportsToolCalls===!0},{key:"stream",label:"Streaming",enabled:M.supportsStreaming===!0},{key:"json",label:"JSON",enabled:M.supportsJsonMode===!0}]}),c=O(()=>!!n.modelCapabilities&&Object.keys(n.modelCapabilities).length>0),b=O(()=>ma(n.prompt.required_schema)),C=D({}),S=O(()=>Lo(n.prompt,n.toolConfig));Pe(()=>[l.value.map(M=>M.name).join(""),n.refreshEpoch??0],async()=>{const M=l.value.map(_=>_.name);if(M.length===0){C.value={};return}const v=await Oo(M);C.value=Object.fromEntries(v)},{immediate:!0});function T(M){return C.value[M.name]?.model||M.resolvedModel||null}function k(M){const v=T(M);if(v)return Ue(`/api/providers/${encodeURIComponent(v.provider)}/icon?model=${encodeURIComponent(v.model)}`);const _=C.value[M.name];return _?.prompt?Ue(`/api/providers/${encodeURIComponent(_.prompt.model_provider)}/icon?model=${encodeURIComponent(_.prompt.model_id)}`):""}function A(M){const v=T(M);return v?v.name:C.value[M.name]?.prompt.model_name||M.model||null}function N(M){const v=T(M);return v?v.provider:C.value[M.name]?.prompt.model_provider||null}function L(M,v){return{entityType:"prompt",entityId:n.prompt.name,section:M,defaultToolTab:v}}const{activeSurface:te}=Kt();function G(M,v){const _=te.value?.target;return!(!_||_.entityType!=="prompt"||_.entityId!==n.prompt.name||_.section!==M||v!==void 0&&_.defaultToolTab!==v)}function Y(M,v){if(G(M,v))return!0;const _=n.hoveredEditTarget;return!(!_||_.entityType!=="prompt"||_.entityId!==n.prompt.name||_.section!==M||v!==void 0&&_.defaultToolTab!==v)}function P(M){const v=M.currentTarget;v instanceof HTMLElement&&o("edit-surface",{target:L("prompt"),anchorEl:v})}return(M,v)=>(p(),$("div",{"data-canvas-node":"",role:"button",tabindex:"0",onClick:v[18]||(v[18]=Me(_=>M.$emit("select"),["stop"])),onKeydown:[v[19]||(v[19]=je(Me(_=>M.$emit("select"),["prevent","stop"]),["enter"])),v[20]||(v[20]=je(Me(_=>M.$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(xt)(e.selected,e.hovered)])},[m("div",_d,[m("div",Id,[Q(Xe,{as:"header",class:"border-b border-neutral-200 dark:border-neutral-700",target:L("basic"),active:Y("basic"),onOpen:v[2]||(v[2]=_=>o("edit-surface",_)),onHoverTarget:v[3]||(v[3]=_=>o("hover-edit-target",_))},{default:xe(()=>[m("div",Ed,[m("div",Ad,[m("div",{class:ue(["flex items-center gap-1.5 whitespace-nowrap text-[10px] font-bold uppercase tracking-[0.2em]",e.accentTextClass])},[Q(I(gt),{class:"h-3 w-3"}),m("span",null,K(f.value),1),d.value?(p(),$("span",Nd,K(e.label),1)):W("",!0)],2),m("div",Pd,[m("div",Ld,K(e.prompt.name),1),e.prompt.tool_description?(p(),$("div",Rd,K(e.prompt.tool_description),1)):W("",!0)])]),m("div",Od,[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",Y("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(P,["stop"]),onKeydown:[je(Me(P,["prevent","stop"]),["enter"]),je(Me(P,["prevent","stop"]),["space"])],onMouseenter:v[0]||(v[0]=Me(_=>o("hover-edit-target",L("prompt")),["stop"])),onMouseleave:v[1]||(v[1]=Me(_=>o("hover-edit-target",null),["stop"]))},[Q(I(No),{class:"h-3.5 w-3.5"})],42,Dd),m("div",Bd,[m("div",Vd,[e.modelIconSrc?(p(),$("img",{key:0,src:e.modelIconSrc,alt:"",class:"mt-[3px] h-4 w-4 shrink-0 rounded-sm"},null,8,Ud)):W("",!0),m("div",Hd,[m("div",zd,K(g.value),1),m("div",jd,K(y.value),1)])]),c.value?(p(),$("div",Fd,[m("div",Xd,[(p(!0),$($e,null,_e(x.value,_=>(p(),$("span",{key:_.key,"aria-label":`${_.label}: ${_.enabled?"supported":"not supported"}`,class:ue(["h-1.5 w-1.5 rounded-full",_.enabled?"bg-emerald-500 shadow-[0_0_0_2px_rgba(16,185,129,0.16)]":"bg-neutral-300 dark:bg-neutral-700"])},null,10,Kd))),128))]),m("div",Yd,[v[21]||(v[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",qd,[(p(!0),$($e,null,_e(x.value,_=>(p(),$($e,{key:_.key},[m("dt",Gd,[m("span",{class:ue(["h-1.5 w-1.5 rounded-full",_.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",_.enabled?"text-neutral-800 dark:text-neutral-200":"text-neutral-400 dark:text-neutral-600"])},K(_.label),3)],64))),128))])])])):W("",!0)])])])]),_:1},8,["target","active"]),m("div",Wd,[Q(Xe,{class:"shrink-0 px-5 py-3",target:L("behavior"),active:Y("behavior"),onOpen:v[4]||(v[4]=_=>o("edit-surface",_)),onHoverTarget:v[5]||(v[5]=_=>o("hover-edit-target",_))},{default:xe(()=>[(p(!0),$($e,null,_e(S.value,(_,q)=>(p(),$("div",{key:_.key,class:ue(["py-2",q>0?"border-t border-neutral-200 dark:border-neutral-700":""])},[m("div",Qd,K(_.label),1),m("dl",Jd,[(p(!0),$($e,null,_e(_.rows,V=>(p(),$("div",{key:V.label,class:"flex items-baseline justify-between gap-x-6"},[m("dt",Zd,K(V.label),1),V.kind==="toggle"?(p(),$("dd",{key:0,class:ue(["whitespace-nowrap font-mono",V.enabled?"text-emerald-600 dark:text-emerald-400":"text-neutral-400 dark:text-neutral-600"])},K(V.enabled?"on":"off"),3)):(p(),$("dd",{key:1,class:ue(["whitespace-nowrap font-mono",V.active?"text-neutral-800 dark:text-neutral-200":"text-neutral-400 dark:text-neutral-600"])},K(V.value),3))]))),128))])],2))),128))]),_:1},8,["target","active"]),m("div",eu,[Q(Xe,{class:"flex-[1_1_auto] px-5 py-3",target:L("schema"),active:Y("schema"),onOpen:v[6]||(v[6]=_=>o("edit-surface",_)),onHoverTarget:v[7]||(v[7]=_=>o("hover-edit-target",_))},{default:xe(()=>[m("div",tu,[Q(I(Mt),{class:"h-3 w-3"}),v[22]||(v[22]=fe(" Input schema ",-1))]),Q(Po,{nodes:b.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:Y("variables"),onOpen:v[8]||(v[8]=_=>o("edit-surface",_)),onHoverTarget:v[9]||(v[9]=_=>o("hover-edit-target",_))},{default:xe(()=>[Q(fa,{variables:i.value,"flagged-names":u.value},null,8,["variables","flagged-names"])]),_:1},8,["target","active"])])])]),m("div",nu,[Q(Xe,{"data-tool-column":"function",class:"flex-[1_1_25%] px-4 py-3",target:L("tools","functions"),active:Y("tools","functions"),onOpen:v[10]||(v[10]=_=>o("edit-surface",_)),onHoverTarget:v[11]||(v[11]=_=>o("hover-edit-target",_))},{default:xe(()=>[m("div",au,[Q(Xt,{class:"h-3 w-3"}),v[23]||(v[23]=fe(" Functions ",-1))]),a.value.length>0?(p(),$("div",ou,[(p(!0),$($e,null,_e(a.value,_=>(p(),$("div",{key:_.name,class:"text-[11px]"},[m("div",ru,[m("span",su,K(_.displayName),1),_.config.immediate?(p(),$("span",lu," immediate ")):W("",!0)])]))),128))])):(p(),$("div",iu,"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:Y("tools","sub-prompts"),onOpen:v[12]||(v[12]=_=>o("edit-surface",_)),onHoverTarget:v[13]||(v[13]=_=>o("hover-edit-target",_))},{default:xe(()=>[m("div",du,[Q(I(gt),{class:"h-3 w-3"}),v[24]||(v[24]=fe(" Sub-prompts ",-1))]),l.value.length>0?(p(),$("div",uu,[(p(!0),$($e,null,_e(l.value,_=>(p(),$("div",{key:_.name,class:"text-[11px]"},[m("div",cu,K(_.displayName),1),A(_)?(p(),$("div",fu,[k(_)?(p(),$("img",{key:0,src:k(_),alt:"",class:"h-3.5 w-3.5 shrink-0 rounded-sm"},null,8,mu)):W("",!0),m("span",hu,K(A(_)),1),N(_)?(p(),$("span",pu,K(N(_)),1)):W("",!0)])):W("",!0)]))),128))])):(p(),$("div",vu,"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:Y("tools","handoffs"),onOpen:v[14]||(v[14]=_=>o("edit-surface",_)),onHoverTarget:v[15]||(v[15]=_=>o("hover-edit-target",_))},{default:xe(()=>[m("div",gu,[Q(I(oa),{class:"h-3 w-3"}),v[25]||(v[25]=fe(" Handoffs ",-1))]),r.value.length>0?(p(),$("div",xu,[(p(!0),$($e,null,_e(r.value,_=>(p(),$("div",{key:_.name,class:"text-[11px]"},[m("div",yu,K(_.displayName),1)]))),128))])):(p(),$("div",bu,"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:Y("tools","sub-agents"),onOpen:v[16]||(v[16]=_=>o("edit-surface",_)),onHoverTarget:v[17]||(v[17]=_=>o("hover-edit-target",_))},{default:xe(()=>[m("div",ku,[Q(I(tt),{class:"h-3 w-3"}),v[26]||(v[26]=fe(" Sub-agents ",-1))]),s.value.length>0?(p(),$("div",wu,[(p(!0),$($e,null,_e(s.value,_=>(p(),$("div",{key:_.name,class:"text-[11px]"},[m("div",$u,K(_.displayName),1)]))),128))])):(p(),$("div",Mu,"None"))]),_:1},8,["target","active"])])])],34))}}),Tu={class:"flex items-center gap-2.5 px-5 pt-4 pb-3"},Cu={class:"text-[15px] font-semibold text-neutral-900 dark:text-neutral-100"},Su=Ie({__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?Ue(`/api/providers/${encodeURIComponent(s.provider)}/icon?model=${encodeURIComponent(s.model)}`):t.data.prompt?Ue(`/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]=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(xt)(e.selected,e.hovered)])},[m("div",Tu,[Q(I(aa),{class:ue(["h-5 w-5 shrink-0",l.value])},null,8,["class"]),m("span",Cu,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(Vo,{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)}}),_u={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Iu(e,t){return p(),$("svg",_u,[...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 Eu=st({name:"lucide-git-branch",render:Iu}),Au={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Nu(e,t){return p(),$("svg",Au,[...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=st({name:"lucide-plug",render:Nu}),Pu={class:"border-b border-neutral-200 dark:border-neutral-700"},Lu={class:"flex items-center justify-between gap-3 px-4 pt-3 pb-1.5"},Ru={class:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.2em] text-neutral-500 dark:text-neutral-400"},Ou={key:0,class:"flex flex-wrap items-center gap-1"},Du={class:"flex items-start justify-between gap-5 px-4 pt-1 pb-3"},Bu={class:"min-w-0 flex-1"},Vu={class:"truncate font-mono text-[13px] font-semibold text-neutral-900 dark:text-neutral-100"},Uu={key:0,class:"w-56 shrink-0 text-balance text-left text-[10.5px] leading-relaxed text-neutral-500 dark:text-neutral-400"},Hu={key:0,class:"px-5 py-3"},zu={class:"min-w-[320px] max-w-[380px]"},ju={class:"mb-1 flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-[0.18em] text-neutral-400 dark:text-neutral-500"},Fu=Ie({__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]=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(xt)(e.selected,e.hovered)]),style:{width:"max-content"}},[m("header",Pu,[m("div",Lu,[m("div",Ru,[Q(Xt,{class:"h-3 w-3"}),r[3]||(r[3]=m("span",null,"Function",-1))]),l.value.length>0?(p(),$("div",Ou,[(p(!0),$($e,null,_e(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)]),m("div",Du,[m("div",Bu,[m("div",Vu,K(e.tool.displayName),1)]),e.detail.description?(p(),$("p",Uu,K(e.detail.description),1)):W("",!0)])]),o.value||a.value?(p(),$("div",Hu,[m("div",zu,[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":""])},[m("div",ju,[Q(I(Mt),{class:"h-3 w-3"}),r[4]||(r[4]=fe(" Args ",-1))]),Q(Po,{nodes:n.value,"empty-label":"No args"},null,8,["nodes"])],2)):W("",!0)])])):W("",!0)],34))}}),Xu={class:"flex items-center gap-2 text-[10px] font-bold uppercase tracking-[0.2em] opacity-60"},Ku={class:"mt-1.5 truncate text-sm font-semibold text-neutral-900 dark:text-neutral-100"},Yu={key:0,class:"mt-0.5 truncate text-[11px] text-neutral-500 dark:text-neutral-400"},qu=Ie({__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:gt},subagent:{label:"Subagent",classes:"border-emerald-300 bg-emerald-50/90 dark:border-emerald-700 dark:bg-emerald-950/30",icon:Eu},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"),u=O(()=>{const A=n.data.description;return A?A.length>48?A.slice(0,45)+"...":A:""}),d=D(null),f=D(null),g=D([]),y=D(null),x=D(null),c=O(()=>n.data.kind==="tool"||n.data.kind==="prompt"||n.data.kind==="handoff");let b=0;Pe(()=>[n.data.name,n.refreshEpoch??0],async()=>{const A=++b;c.value&&o("detail-loading",!0);try{const N=await Cd(n.data);if(A!==b)return;f.value=N.functionTool,d.value=N.promptTool?.prompt||null,g.value=N.promptTool?.nestedTools||[],x.value=N.promptTool?.model||null,y.value=N.handoffAgent}finally{A===b&&c.value&&o("detail-loading",!1)}},{immediate:!0});const C=O(()=>x.value?Ue(`/api/providers/${encodeURIComponent(x.value.provider)}/icon?model=${encodeURIComponent(x.value.model)}`):d.value?Ue(`/api/providers/${encodeURIComponent(d.value.model_provider)}/icon?model=${encodeURIComponent(d.value.model_id)}`):""),S=O(()=>x.value?.name||d.value?.model_name),T=O(()=>x.value?.provider||d.value?.model_provider),k=O(()=>x.value?.model||d.value?.model_id||null);return(A,N)=>s.value&&f.value?(p(),ce(Fu,{key:0,tool:e.data,detail:f.value,selected:e.selected,hovered:e.hovered,onSelect:N[0]||(N[0]=L=>o("select"))},null,8,["tool","detail","selected","hovered"])):r.value&&d.value?(p(),ce(Vo,{key:1,prompt:d.value,tools:g.value,"tool-config":e.data.config,variables:I(ra)(d.value),"variable-env-names":I(sa)(d.value),"model-name":S.value,"model-provider":T.value,"model-actual":k.value,"model-icon-src":C.value,"model-capabilities":x.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:N[1]||(N[1]=L=>o("select")),onEditSurface:N[2]||(N[2]=L=>o("edit-surface",L)),onHoverEditTarget:N[3]||(N[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&&y.value?(p(),ce(Ao,{key:2,data:y.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:N[4]||(N[4]=L=>o("select")),onAction:N[5]||(N[5]=L=>o("view-agent",y.value.name)),onEditSurface:N[6]||(N[6]=L=>o("edit-surface",L)),onHoverEditTarget:N[7]||(N[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:N[8]||(N[8]=Me(L=>o("select"),["stop"])),onKeydown:[N[9]||(N[9]=je(Me(L=>o("select"),["prevent","stop"]),["enter"])),N[10]||(N[10]=je(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(xt)(e.selected,e.hovered)])},[m("div",Xu,[(p(),ce(lt(l.value.icon),{class:"h-3.5 w-3.5"})),fe(" "+K(l.value.label),1)]),m("div",Ku,K(e.data.displayName),1),u.value?(p(),$("div",Yu,K(u.value),1)):W("",!0)],34))}}),Gu={class:"flex items-center gap-2 text-[10px] font-bold uppercase tracking-[0.2em] text-neutral-500 dark:text-neutral-400"},Wu={class:"mt-1.5 truncate text-sm font-medium text-neutral-900 dark:text-neutral-100"},Qu=Ie({__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]=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(xt)(e.selected,e.hovered)])},[m("div",Gu,[Q(I(Yn),{class:"h-3.5 w-3.5"}),n[3]||(n[3]=fe(" Hook ",-1))]),m("div",Wu,K(e.data.hook),1)],34))}}),Ju={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"},Zu={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"},ec={"data-model-anchor":"",class:"flex items-center gap-2 px-4 pt-0.5 pb-3"},tc=["src"],nc={class:"min-w-0"},ac={class:"truncate text-[14px] font-semibold text-neutral-900 dark:text-neutral-100"},oc={key:0,class:"truncate font-mono text-[10px] text-neutral-400 dark:text-neutral-500"},rc={key:1,class:"truncate text-[10px] text-neutral-400 dark:text-neutral-500"},sc={key:0},lc={key:1,class:"text-neutral-300 dark:text-neutral-600 mx-1"},ic={key:2},dc={key:0,class:"grid grid-cols-2 border-t border-neutral-200 dark:border-neutral-700"},uc={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"},cc={class:"text-[9px] uppercase leading-tight tracking-[0.14em]"},fc={class:"mt-0.5 font-mono text-[11px] leading-tight text-neutral-600 dark:text-neutral-300"},mc={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"},hc={class:"uppercase tracking-[0.16em]"},pc={class:"min-w-0 truncate font-mono text-right"},vc=Ie({__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(()=>Ue(`/api/providers/${encodeURIComponent(n.data.provider)}/icon?model=${encodeURIComponent(n.data.model||"")}`)),i=O(()=>{const S=n.data.capabilities||{};return[{key:"images",label:"Vision",enabled:S.supportsImages===!0},{key:"tools",label:"Tool Calls",enabled:S.supportsToolCalls===!0},{key:"stream",label:"Streaming",enabled:S.supportsStreaming===!0},{key:"json",label:"JSON",enabled:S.supportsJsonMode===!0}]}),u=O(()=>n.data.providerTools||[]),d=O(()=>n.data.fallbacks||[]),f=O(()=>{const S=n.data.capabilities||{},T=[];return typeof S.maxContextTokens=="number"&&T.push({label:"Max context",value:S.maxContextTokens.toLocaleString()}),typeof S.maxOutputTokens=="number"&&T.push({label:"Max output",value:S.maxOutputTokens.toLocaleString()}),T}),g=S=>{if(S==null||Number.isNaN(S))return null;if(S===0)return"$0";const T=S>=1?S.toFixed(2):S.toFixed(4);return`$${parseFloat(T)}`},y=S=>{if(!S)return null;const T=g(S.min),k=g(S.max);return!T||!k?null:T===k?T:`${T}-${k}`},x=O(()=>{const S=n.data.pricing_range?.input;return S?y(S):g(n.data.input_price)}),c=O(()=>{const S=n.data.pricing_range?.output;return S?y(S):g(n.data.output_price)}),b=O(()=>!!(x.value||c.value)),C=O(()=>{const S=[];if(u.value.length>0){const T=u.value.slice(0,2).join(", "),k=u.value.length>2?", …":"";S.push({label:"Provider tools",value:T+k})}if(d.value.length>0){const T=d.value.slice(0,2).map(A=>A.name).join(", "),k=d.value.length>2?", …":"";S.push({label:"Fallbacks",value:T+k})}return S});return(S,T)=>(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(xt)(e.selected,e.hovered)]),onOpen:T[1]||(T[1]=k=>o("edit-surface",k)),onHoverTarget:T[2]||(T[2]=k=>o("hover-edit-target",k))},{default:xe(()=>[m("header",null,[m("div",Ju,[Q(I(fo),{class:"h-3 w-3"}),T[3]||(T[3]=m("span",null,"Model",-1)),e.data.provider?(p(),$("span",Zu,K(e.data.provider),1)):W("",!0)]),m("div",ec,[m("img",{src:r.value,alt:"",class:"h-5 w-5 shrink-0 rounded-sm",onError:T[0]||(T[0]=k=>k.target.style.visibility="hidden")},null,40,tc),m("div",nc,[m("div",ac,K(e.data.name),1),e.data.model&&e.data.model!==e.data.name?(p(),$("div",oc,K(e.data.model),1)):W("",!0),b.value?(p(),$("div",rc,[x.value?(p(),$("span",sc,[T[4]||(T[4]=m("span",{class:"text-neutral-300 dark:text-neutral-600"},"in",-1)),fe(" "+K(x.value)+"/M ",1)])):W("",!0),x.value&&c.value?(p(),$("span",lc,"·")):W("",!0),c.value?(p(),$("span",ic,[T[5]||(T[5]=m("span",{class:"text-neutral-300 dark:text-neutral-600"},"out",-1)),fe(" "+K(c.value)+"/M ",1)])):W("",!0)])):W("",!0)])])]),i.value.length>0?(p(),$("div",dc,[(p(!0),$($e,null,_e(i.value,(k,A)=>(p(),$("div",{key:k.key,class:ue(["flex items-center gap-2 px-4 py-2",A%2===1?"border-l border-neutral-200 dark:border-neutral-700":"",A>=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(),$("div",uc,[(p(!0),$($e,null,_e(f.value,(k,A)=>(p(),$("div",{key:k.label,class:ue(["px-4 py-2",A>0?"border-l border-neutral-200 dark:border-neutral-700":""])},[m("div",cc,K(k.label),1),m("div",fc,K(k.value),1)],2))),128))])):W("",!0),C.value.length>0?(p(),$("div",mc,[(p(!0),$($e,null,_e(C.value,k=>(p(),$("div",{key:k.label,class:"flex items-baseline justify-between gap-3"},[m("span",hc,K(k.label),1),m("span",pc,K(k.value),1)]))),128))])):W("",!0)]),_:1},8,["target","active","edit-data","class"]))}}),gc={class:"relative flex-1 overflow-hidden bg-neutral-100/50 dark:bg-neutral-950/50"},xc=["aria-label","onClick","onKeydown"],yc={class:"pointer-events-none absolute inset-0 h-full w-full","aria-hidden":"true"},bc=["id"],kc=["fill"],wc={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"},$c={class:"text-[10px] font-semibold uppercase tracking-wider text-neutral-600 dark:text-neutral-300"},Mc={key:0,class:"absolute inset-0 z-10 flex items-center justify-center bg-neutral-100 dark:bg-neutral-950"},Tc={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"},Cc={key:1,class:"absolute inset-0 flex flex-col items-center justify-center gap-3 text-neutral-400 dark:text-neutral-600"},Sc=Ie({__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=D(null),l=D(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(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=D(!1),{state:u,isPanning:d,transformStyle:f,scalePercent:g,onWheel:y,onPointerDown:x,onPointerMove:c,onPointerUp:b,shouldHandleClick:C,zoomIn:S,zoomOut:T,fitToView:k,resetAutoFitLock:A,focusNode:N,setContentBounds:L,saveViewport:te,restoreViewport:G}=Al(a,{maxScale:1.2,panPadding:40});Pe(u,()=>os(),{deep:!0,flush:"post"}),Pa(ee=>{const Z=a.value;Z&&(Z.addEventListener("wheel",y,{passive:!1}),ee(()=>Z.removeEventListener("wheel",y)))}),Qr(()=>{a.value?.removeEventListener("wheel",y)});const Y=Ln(n,"layout"),P=Ln(n,"loading"),M=Ln(n,"selectedNodeId"),{layoutStable:v,measurements:_,nodesWithMeasuredSizes:q,nodeMetrics:V,measureNode:H,measuredBounds:E}=_l(Y,P,ee=>k(ee,{force:!1}),ee=>o("nodes-measured",ee),A);Pe(()=>n.loading,ee=>{ee&&(i.value=!1)}),Pe([v,r],([ee,Z])=>{ee&&!Z&&(i.value=!0)},{immediate:!0});const j=O(()=>Nl({hasAgent:n.hasAgent,hasError:!!n.error,loadingComposition:n.loading,layoutStable:v.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)}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 pe=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 h=new Set([ee]);for(const w of n.layout.edges)w.from===ee&&h.add(w.to),w.to===ee&&h.add(w.from);return h});function se(ee){const Z=pe.value;return Z?Z.has(ee)?{}:{opacity:"0.25",transition:"opacity 120ms ease-out"}:{}}function me(ee){const Z=pe.value;if(!Z)return!0;const h=n.layout.groups.find(w=>w.id===ee);if(!h)return!0;for(const w of n.layout.nodes)if(Z.has(w.id)&&w.x>=h.x&&w.y>=h.y&&w.x+w.width<=h.x+h.width&&w.y+w.height<=h.y+h.height)return!0;return!1}const{handleCanvasClick:z,handleGroupClick:U,handleNodeSelect:J}=Il({containerRef:a,layout:Y,selectedNodeId:M,layoutStable:v,measurements:_,viewportState:u,shouldHandleClick:C,focusNode:N,saveViewport:te,restoreViewport:G,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",gc,[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(x)&&I(x)(...h)),onPointermove:Z[7]||(Z[7]=(...h)=>I(c)&&I(c)(...h)),onPointerup:Z[8]||(Z[8]=(...h)=>I(b)&&I(b)(...h)),onPointercancel:Z[9]||(Z[9]=(...h)=>I(b)&&I(b)(...h)),onClick:Z[10]||(Z[10]=(...h)=>I(z)&&I(z)(...h))},[Q(Ll),m("div",{class:"absolute origin-top-left will-change-transform",style:De({...I(f),opacity:I(v)?1:0,transition:I(v)?"opacity 200ms ease-out":"none",pointerEvents:I(v)?"auto":"none"})},[(p(!0),$($e,null,_e(e.layout.groups,h=>(p(),$($e,{key:h.id},[h.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:`${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(),$("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(w=>I(U)(w,h),["stop"]),onKeydown:w=>ve(w,h),style:De({left:`${h.x}px`,top:`${h.y}px`,width:`${h.width}px`,height:`${h.height}px`,borderRadius:"8px",opacity:me(h.id)?1:.3})},[(p(),$("svg",yc,[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,bc)]),m("rect",{width:"100%",height:"100%",fill:`url(#subgrid-${h.id})`},null,8,kc)])),m("div",wc,[m("span",$c,K(h.label),1),h.subagent?(p(),$($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,xc)],64))),128)),e.layout.nodes.length>0?(p(),ce(gi,{key:0,nodes:I(q),edges:e.layout.edges,groups:e.layout.groups,"node-metrics":I(V),"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,_e(e.layout.nodes,h=>(p(),$($e,{key:h.id},[h.type==="agent"?(p(),ce(ad,{key:0,ref_for:!0,ref:w=>F(h.id,w),"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:w=>I(J)(h),onEditSurface:w=>le(h,w),onHoverEditTarget:w=>ie(h,w),onMouseenter:w=>o("hover-node",h.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"])):h.type==="side"?(p(),ce(Su,{key:1,ref_for:!0,ref:w=>F(h.id,w),"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:w=>I(J)(h),onEditSurface:w=>le(h,w),onHoverEditTarget:w=>ie(h,w),onMouseenter:w=>o("hover-node",h.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"])):h.type==="tool"?(p(),ce(qu,{key:2,ref_for:!0,ref:w=>F(h.id,w),"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:w=>I(J)(h),onEditSurface:w=>le(h,w),onHoverEditTarget:w=>ie(h,w),onViewAgent:Z[2]||(Z[2]=w=>o("view-agent",w)),onDetailLoading:w=>s(h.id,w),onMouseenter:w=>o("hover-node",h.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"])):h.type==="hook"?(p(),ce(Qu,{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:w=>I(J)(h),onMouseenter:w=>o("hover-node",h.id),onMouseleave:Z[4]||(Z[4]=w=>o("hover-node",null))},null,8,["data-canvas-node-id","data","selected","hovered","style","onSelect","onMouseenter"])):h.type==="model"?(p(),ce(vc,{key:4,ref_for:!0,ref:w=>F(h.id,w),"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:w=>I(J)(h),onEditSurface:w=>le(h,w),onHoverEditTarget:w=>ie(h,w),onMouseenter:w=>o("hover-node",h.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===h.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:`${h.x}px`,top:`${h.y}px`,width:`${I(_).get(h.id)?.w??h.width}px`,height:`${I(_).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(lo,{"leave-active-class":"transition-opacity duration-200 ease-out","leave-to-class":"opacity-0"},{default:xe(()=>[j.value?(p(),$("div",Mc,[...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"}),fe(" Preparing diagram ")],-1)])])):W("",!0)]),_:1}),e.error?(p(),$("div",Tc,K(e.error),1)):W("",!0),!e.hasAgent&&!e.loading&&!e.error?(p(),$("div",Cc,[Q(I(mo),{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(v)?(p(),ce(Ci,{key:2,"scale-percent":I(g),onZoomIn:I(S),onZoomOut:I(T),onFitView:Z[11]||(Z[11]=h=>I(k)(I(E)(),{force:!0}))},null,8,["scale-percent","onZoomIn","onZoomOut"])):W("",!0)]))}}),_c=Ie({__name:"InspectorPanel",props:{node:{},compositionSummary:{}},emits:["saved","close"],setup(e,{emit:t}){const n=e,o=t,a=D("inspect"),l=D(null),s=D(null),r=D(null),i=D(null),{saving:u,apiError:d,saveAgent:f,clearAgentError:g}=ho(),{saving:y,apiError:x,savePrompt:c,clearPromptError:b}=rs(),{saving:C,apiError:S,saveModel:T,clearModelError:k}=ss(),A=O(()=>u.value||y.value||C.value),N=O(()=>a.value==="edit-prompt"?x.value:a.value==="edit-model"?S.value:d.value);function L(M){return M?.id||M?.name||null}Pe(()=>n.node,M=>{if(g(),b(),k(),!M){a.value="inspect",l.value=null;return}if(M.type==="agent")l.value=M.value,a.value="edit-agent";else if(M.type==="side"){const v=M.value;v.prompt?(l.value=v.prompt,a.value="edit-prompt"):(a.value="inspect",l.value=null)}else M.type==="model"?(l.value=M.value,a.value="edit-model"):(a.value="inspect",l.value=null)});async function te(M){(await f({mode:"edit",data:M,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 G(M){const v=L(l.value);(await c({mode:"edit",data:M,editingId:v,formNode:r.value?.formNode})).ok&&(a.value="inspect",l.value=null,o("saved"))}async function Y(M){const v=L(l.value);(await T({mode:"edit",data:M,editingId:v,formNode:i.value?.formNode})).ok&&(a.value="inspect",l.value=null,o("saved"))}function P(){a.value="inspect",l.value=null,g(),b(),k(),o("close")}return(M,v)=>(p(),$("div",null,[a.value==="edit-agent"?(p(),ce(vo,{key:0,ref_key:"agentModalRef",ref:s,"model-value":!0,"edit-agent":l.value,mode:"edit",saving:A.value,"api-error":N.value,onSave:te,"onUpdate:modelValue":P},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:A.value,onSave:G,"onUpdate:modelValue":P},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:A.value,onSave:Y,"onUpdate:modelValue":P},null,8,["edit-model","saving"])):W("",!0)]))}}),Ic={class:"relative"},Ec={key:1,class:"mt-[2px] inline-block h-3 w-3 shrink-0"},Ac=["src"],Nc={class:"min-w-0 flex-1"},Pc={class:"flex min-w-0 items-start gap-2"},Lc={key:0,class:"mt-[1px] shrink-0 text-[11px] leading-none font-semibold text-rose-500 dark:text-rose-400","aria-label":"Required"},Rc=["onKeydown"],Oc={key:2,class:"ml-auto shrink-0 truncate pl-2 text-[10px] text-neutral-400 dark:text-neutral-500",style:{"max-width":"35%"}},Dc={key:0,class:"mt-1 flex flex-wrap gap-1"},Bc={key:2,class:"mt-1 grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5 text-[10.5px]"},Vc={class:"truncate text-neutral-400 dark:text-neutral-500"},Uc={key:0,class:"relative"},Hc=10,zc=Ie({__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:gt,subagent:tt,handoff:oa,provider:Mt,mcp:Mt,unknown:sn},o={agent:tt,side:tt,prompt:gt,model:fo,variables:Jn,variable:Jn,hooks:Yn,hook:Yn,tools:sn,tool:Xt,subagent:tt,config:Oa,section:Oa,schema:Mt},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:u}=Kt(),d=D(null),f=D(!1),g=O(()=>r.node.editSurface??r.inheritedEditSurface??null),y=O(()=>r.node.editSurface?d.value:r.inheritedAnchorEl??null),x=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"}}),c=O(()=>!!r.node.children&&r.node.children.length>0),b=O(()=>c.value||r.node.collapsibleBody===!0),C=O(()=>!!r.node.isRoot),S=O(()=>C.value?!0:!r.collapsed.has(r.node.id)),T=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 A=O(()=>d.value&&u.value?.anchorEl===d.value?!0:!r.node.editSurface||r.node.anchorOnlyEditSurface?!1:jt(r.node.editSurface,u.value?.target)?!0:u.value?!1:r.node.cardBacked===!0&&T.value&&!k(r.selectedCanvasNodeId)),N=O(()=>u.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)),L=O(()=>jt(u.value?.target,x.value)),te=O(()=>C.value?0:Math.max(0,r.depth-1)),G=O(()=>te.value*Hc),Y=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]||Mt}),P=O(()=>{const z=r.node;return z.kind!=="agent"&&z.kind!=="subagent"?null:z.avatarSrc?z.avatarSrc:z.avatarSeed?na(z.avatarSeed):null}),M=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"}),v=O(()=>{const z=r.node;return z.kind==="agent"||z.kind==="subagent"||z.kind==="tool"&&z.toolKind==="handoff"}),_=O(()=>{const z=["group relative flex items-start gap-1.5 px-2 cursor-pointer select-none transition-colors"];return z.push(v.value?"py-[6px] text-[12.5px]":"py-[4px]"),v.value&&z.push("relative z-[1] structure-row-agent-bg"),A.value?z.push("rounded-r-md structure-row-active"):N.value?z.push("rounded-md structure-row-hover"):v.value?z.push("rounded-md"):z.push("rounded-md agents-surface-hover"),r.node.virtual&&!T.value&&!A.value&&z.push("text-neutral-600 dark:text-neutral-400"),z.join(" ")}),q=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 V(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(),!C.value&&i("toggle",r.node.id)}function j(z){z.stopPropagation(),F()}function F(){if(f.value){f.value=!1;return}if(g.value&&y.value){i("edit",g.value,y.value,r.node.canvasNodeId,r.node.editData);return}i("select",r.node.canvasNodeId),!C.value&&b.value&&!S.value&&i("toggle",r.node.id)}function X(z){z.key!=="Enter"&&z.key!==" "||(z.preventDefault(),z.stopPropagation(),F())}function pe(z){z.button===0&&(!g.value||!y.value||(z.stopPropagation(),f.value=!0,i("edit",g.value,y.value,r.node.canvasNodeId,r.node.editData)))}function se(){i("hover",r.node.canvasNodeId,g.value)}function me(z){z.stopPropagation();const U=x.value,J=z.currentTarget;!U||!(J instanceof HTMLElement)||i("edit",U,J,r.node.canvasNodeId,r.node.editData)}return(z,U)=>{const J=vt("StructureTreeRow",!0),le=Jr("auto-animate");return p(),$("div",Ic,[m("div",{class:"mx-1",style:De({paddingLeft:`${G.value}px`})},[A.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:`${G.value+5}px`})},null,4)):W("",!0),m("div",{ref_key:"rowRef",ref:d,class:ue(_.value),role:"button",tabindex:"0",onClick:j,onKeydown:X,onPointerdown:pe,onMouseenter:se},[b.value&&!C.value?(p(),ce(I(xo),{key:0,class:ue(["mt-[2px] h-3 w-3 shrink-0 text-neutral-400 transition-transform",S.value?"rotate-90":""]),onClick:E},null,8,["class"])):C.value?W("",!0):(p(),$("span",Ec)),P.value?(p(),$("img",{key:2,src:P.value,alt:"",class:"mt-[1px] h-4 w-4 shrink-0 rounded object-cover"},null,8,Ac)):e.node.hideIcon?W("",!0):(p(),ce(lt(Y.value),{key:3,class:ue(["mt-[1px] h-3.5 w-3.5 shrink-0",M.value])},null,8,["class"])),m("div",Nc,[m("div",Pc,[m("span",{class:ue(q.value)},K(e.node.label),3),e.node.required?(p(),$("span",Lc," * ")):W("",!0),x.value?(p(),ce(I(ls),{key:1,content:"Edit prompt text",position:"right",disabled:L.value},{default:xe(()=>[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",L.value?"text-accent-700 dark:text-accent-300":""]),"aria-label":"Edit prompt text",onClick:me,onPointerdown:U[0]||(U[0]=Me(()=>{},["stop"])),onKeydown:[je(Me(me,["prevent","stop"]),["enter"]),je(Me(me,["prevent","stop"]),["space"])],onMouseenter:U[1]||(U[1]=Me(ie=>i("hover",e.node.canvasNodeId,x.value),["stop"])),onMouseleave:U[2]||(U[2]=Me(ie=>i("hover",e.node.canvasNodeId,g.value),["stop"]))},[Q(I(No),{class:"h-3.5 w-3.5"})],42,Rc)]),_:1},8,["disabled"])):W("",!0),e.node.detail?(p(),$("span",Oc,K(e.node.detail),1)):W("",!0)]),(!e.node.collapsibleBody||S.value)&&e.node.badges&&e.node.badges.length>0?(p(),$("div",Dc,[(p(!0),$($e,null,_e(e.node.badges,ie=>(p(),$("span",{key:ie.label,class:ue(V(ie))},K(ie.label),3))),128))])):W("",!0),(!e.node.collapsibleBody||S.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&&!T.value?"opacity-90":""])},K(e.node.description),3)):W("",!0),(!e.node.collapsibleBody||S.value)&&e.node.metaRows&&e.node.metaRows.length>0?(p(),$("dl",Bc,[(p(!0),$($e,null,_e(e.node.metaRows,ie=>(p(),$($e,{key:ie.label},[m("dt",Vc,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),c.value?Zr((p(),$("div",Uc,[S.value?(p(!0),$($e,{key:0},_e(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":g.value,"inherited-anchor-el":y.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),S.value&&!C.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:`${G.value+14}px`})},null,4)):W("",!0)])),[[le,{duration:60,easing:"ease-out"}]]):W("",!0)])}}});function jc(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 Fc={class:"structure-tree flex h-full flex-col overflow-hidden border-r border-neutral-200 dark:border-neutral-800"},Xc={key:0,class:"px-3 py-4 text-xs text-neutral-400 dark:text-neutral-500"},Kc=Ie({__name:"StructureTree",props:{root:{},selectedCanvasNodeId:{},hoveredCanvasNodeId:{},hoveredEditTarget:{}},emits:["select","edit","hover"],setup(e,{emit:t}){const n=e,o=t,a=D(new Set),l=D(null),s=D(new Set);function r(d){return jc(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 u=O(()=>!!n.root);return(d,f)=>(p(),$("div",Fc,[m("div",{class:"flex-1 overflow-y-auto py-1.5 text-[12px]",onMouseleave:f[3]||(f[3]=g=>o("hover",null,null))},[u.value?(p(),ce(zc,{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]=g=>o("select",g)),onEdit:f[1]||(f[1]=(g,y,x,c)=>o("edit",g,y,x,c)),onHover:f[2]||(f[2]=(g,y)=>o("hover",g,y)),onToggle:i},null,8,["node","collapsed","selected-canvas-node-id","hovered-canvas-node-id","hovered-edit-target"])):(p(),$("div",Xc," 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 Yc(e){return{entityType:"model",entityId:e.id}}function qc(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 Uo(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?Uo(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?`${qc(a)}`:"None",canvasNodeId:t,virtual:!0,editSurface:o,defaultCollapsed:a.length>0,children:a.length>0?Uo(a,t,`${n}schema__`):void 0}}function Ho(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 zo(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 $t(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=Lo(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(Gc)}));return{id:`${n}config`,kind:"config",label:"Prompt Config",canvasNodeId:t,virtual:!0,editSurface:l,defaultCollapsed:!0,children:s}}function Gc(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 Fo(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(", "),u=e.model.providerTools.length>2?", …":"";l.push({label:"Provider tools",value:i+u,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?Mo(t,e.model.id):n,virtual:!e.model,cardBacked:!!e.model,editSurface:e.model?Yc(e.model):a,editData:e.model||void 0}}function Wc(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 Qc(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 u=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:`${u.length}`,canvasNodeId:t,virtual:!0,editSurface:Ke(o,"tools",d),children:u.length>0?u.map((f,g)=>({id:`${n}${r}-${g}-${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:$t(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 Jc(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 Zc(e,t,n,o,a){const l=[],s=t.prompt.name,r=Ke(s,"basic"),i=Fo({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(...Qc(t.nestedTools,n,`${a}prompt__`,s));const u=zo(t.prompt.hooks.map(d=>({id:d,hook:d})),n,`${a}prompt__`);return u&&l.push(u),l}function ef(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 tf(e,t,n,o,a,l,s){if(!e.prompt)return null;const r=e.prompt.name,i=`${l}prompt__`,u=[],d=Ke(r,"basic"),f=Ke(r,"schema"),g=Ke(r,"variables"),y=Ke(r,"tools"),x=Fo({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);x&&u.push(x),u.push(jo(e.prompt,a,i,r)),u.push(ha(e.prompt.required_schema,a,i,f)),u.push(kn(e.variables,a,i,e.variableEnvNames||[],g));const c={};for(const T of e.tools){const k=T.kind==="provider"||T.kind==="mcp"?"tool":T.kind;(c[k]||=[]).push(T)}const b=new Map;e.tools.forEach((T,k)=>b.set(T,k));const C=[{key:"tool",label:"Functions"},{key:"prompt",label:"Sub-prompts"},{key:"handoff",label:"Handoffs"},{key:"subagent",label:"Sub-agents"}];u.push({id:`${i}tools`,kind:"tools",label:"Tools",detail:`${e.tools.length}`,canvasNodeId:a,virtual:!0,editSurface:y,children:C.map(({key:T,label:k})=>{const A=c[T]||[],N=T==="prompt"?"sub-prompts":T==="handoff"?"handoffs":T==="subagent"?"sub-agents":"functions";return{id:`${i}group-${T}`,kind:"tools",toolKind:T,label:k,detail:`${A.length}`,canvasNodeId:a,virtual:!0,editSurface:Ke(r,"tools",N),children:A.length>0?A.map(L=>nf(i,n,o,e,L,b.get(L),r,t,s)):void 0}})});const S=zo(e.hooks,a,i);return S&&u.push(S),{id:`${l}prompt`,kind:"prompt",tone:e.id==="a"?"sky":"amber",label:e.prompt.name,canvasNodeId:a,virtual:!0,cardBacked:!0,editSurface:d,children:u}}function nf(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}`,g=a.kind==="prompt"?"sub-prompts":a.kind==="handoff"?"handoffs":a.kind==="subagent"?"sub-agents":"functions",y=Ke(s,"tools",g);if(a.kind==="subagent"&&r[a.name]){const x=r[a.name],c=$o(t,o.id,l,a.kind,a.name),b=a.config.resumable,C=$t(a);return b&&typeof b=="object"&&C.push({label:b.max_instances===null||(b.max_instances??0)>1?"multi":"single",tone:"sky",mono:!0}),{id:f,kind:"subagent",label:x.agent.title||a.displayName,detail:a.name,badges:C.length>0?C:void 0,canvasNodeId:fn(c),toolKind:a.kind,avatarSrc:x.agent.icon||void 0,avatarSeed:x.agent.name,cardBacked:!0,editSurface:y,children:Xo(x.agent,x.sides,r,c,n,`${f}__`,i).children}}if(a.kind==="prompt"){const x=i.promptTools[a.name];return{id:f,kind:"tool",label:a.displayName||a.name,detail:x?.model?.name||x?.prompt.model_name||a.model||void 0,badges:$t(a),canvasNodeId:d,toolKind:a.kind,cardBacked:!0,editSurface:Ke(a.name,"basic"),children:x?Zc(a,x,d,n,`${f}__`):void 0,hideIcon:!0}}if(a.kind==="handoff"){const x=i.handoffs[a.name];return{id:f,kind:"tool",label:x?.title||a.displayName||a.name,detail:x?.name||void 0,badges:x?Ho(x):$t(a),canvasNodeId:d,toolKind:a.kind,defaultCollapsed:x?!0:void 0,cardBacked:!0,editSurface:y,children:x?ef(x,d,`${f}__`):void 0,hideIcon:!0}}if(a.kind==="tool"||a.kind==="provider"||a.kind==="mcp"){const x=i.functionTools[a.name];return{id:f,kind:"tool",label:a.displayName||a.name,badges:$t(a),canvasNodeId:d,toolKind:a.kind,defaultCollapsed:x?!0:void 0,cardBacked:!0,editSurface:y,children:x?Jc(x,d,`${f}__`):void 0,hideIcon:!0}}return{id:f,kind:"tool",label:a.displayName||a.name,badges:$t(a),canvasNodeId:d,toolKind:a.kind,hideIcon:!0,editSurface:y}}function af(e,t,n,o,a,l,s){const r=ia(o,t.id),i=`${l}side-${t.id}__`,u=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:u,children:[]};d.push(Wc(t,r,i,u));const f=tf(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:u,children:d}}function Xo(e,t,n,o,a,l,s,r=!1){const i=fn(o),u=gn(e.name,"variables"),d=[kn(e._variables||[],i,`${l}agent__`,Object.keys(e.env||{}),u),...t.map(f=>af(e.name,f,n,o,a,l,s))];return{id:`${l}agent`,kind:"agent",label:e.title||e.name,detail:e.name,badges:Ho(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 of(e,t,n,o){const a=wo(e.id||e.name),l=`${e.id||e.name}__`;return Xo(e,t,n,a,a,l,o,!0)}function rf(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 u of i.tools)if(u.kind==="tool"&&n.add(u.name),u.kind==="prompt"&&o.add(u.name),u.kind==="handoff"&&a.add(u.name),u.kind==="subagent"){const d=t[u.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 sf(e,t,n,o,a,l){const s=D({functionTools:{},promptTools:{},handoffs:{}});let r=0;return Pe(()=>e.value?{agentId:e.value.id||e.value.name,plan:rf(t.value,n.value),modelKeys:Object.keys(o.value),toolKeys:Object.keys(a.value),refreshEpoch:l?.value??0}:null,async i=>{const u=e.value;if(!i||!u){s.value={functionTools:{},promptTools:{},handoffs:{}};return}const d=++r,f=await Sd(i.plan,{toolsCatalog:a.value,models:o.value});d===r&&(s.value=f)},{immediate:!0}),O(()=>{const i=e.value;return i?of(i,t.value,n.value,s.value):null})}const Ko=Ie({__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=vt("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"])}}}),lf={class:"font-mono text-sm"},df={class:"flex items-center gap-2 py-1.5"},uf={class:"text-neutral-600 dark:text-neutral-400"},cf={class:"ml-auto"},Yo=Ie({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(Et,{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(Ko,{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(Yo,{children:t.children,getSelection:e.getSelection,setSelection:e.setSelection,isShared:e.isShared,getTypeColor:e.getTypeColor}):null])])))}}),ff=Ie({__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 g=0;const y=(T,k)=>{for(const A of T){const N=`${k}:${A.name}`;f.push({...A,type:k,uid:`${N}:${g++}`})}};y(d.constituents.agents,"agent"),y(d.constituents.prompts,"prompt"),y(d.constituents.tools,"tool"),y(d.constituents.models,"model"),y(d.constituents.hooks,"hook");const x=new Map,c=`agent:${d.agent}`;for(const T of f){const k=T.parentKey||c;`${T.type}:${T.name}`===c&&!T.parentKey||(x.has(k)||x.set(k,[]),x.get(k).push(T))}const b=new Set,C=T=>{const k=`${T.type}:${T.name}`,A=b.has(k);b.add(k);const N=[],L=x.get(k)||[];for(const te of L)N.push(C(te));return{name:T.name,type:T.type,filePath:T.filePath,sharedWith:T.sharedWith,discoveredVia:T.discoveredVia,children:N,uid:T.uid,isDuplicate:A}},S=f.find(T=>T.type==="agent"&&T.name===d.agent&&!T.parentKey);return S?C(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,u=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",lf,[m("div",df,[m("span",uf,K(a.value.name),1),Q(I(Et),{variant:u(a.value.type),size:"sm"},{default:xe(()=>[fe(K(a.value.type),1)]),_:1},8,["variant"]),m("div",cf,[Q(Ko,{value:s(a.value),"onUpdate:value":f[0]||(f[0]=g=>r(a.value,g))},null,8,["value"])])]),(p(),ce(lt(I(Yo)),{children:a.value.children,"get-selection":s,"set-selection":r,"is-shared":i,"get-type-color":u},null,8,["children"]))]))}}),mf={key:0,class:"flex items-center justify-center py-12"},hf={key:1,class:"py-4"},pf={key:2,class:"py-4 space-y-4"},vf={class:"space-y-2"},gf={class:"text-sm opacity-80"},xf={class:"text-sm opacity-80"},yf={class:"space-y-4"},bf={class:"grid grid-cols-2 gap-4"},kf={class:"col-span-2"},wf={class:"col-span-2"},$f={class:"col-span-2"},Mf={key:0,class:"mt-3 space-y-3"},Tf={class:"flex gap-2 border-b border-neutral-200 dark:border-neutral-700"},Cf={key:0},Sf=["innerHTML"],_f={class:"space-y-4"},If={class:"list-disc list-inside space-y-1"},Ef={class:"border border-neutral-200 dark:border-neutral-700 rounded-lg p-4 bg-neutral-50 dark:bg-neutral-900/50"},Af={class:"flex justify-between"},Nf=Ie({__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=D(null),r=D(!1),i=D(!1),u=D(null),d=D(null);let f=null;const g=D(""),y=D("1.0.0"),x=D("MIT"),c=D(""),b=D(null),C=D(""),S=D("edit"),T=D(!1),k=O(()=>C.value?cn(C.value):""),A=D(new Map);Pe(()=>o.modelValue,async H=>{H&&o.agent?await Promise.all([L(),te()]):N()});const N=()=>{V(),s.value=null,u.value=null,d.value=null,A.value=new Map,g.value="",y.value="1.0.0",x.value="MIT",c.value="",C.value="",S.value="edit",T.value=!1,rt(b)},L=async()=>{if(o.agent){r.value=!0,u.value=null;try{const H=await fetch(Ue(`/api/pack/${o.agent.id}/analyze`)),E=await H.json();if(!H.ok){u.value=E.error||"Failed to analyze agent";return}if(s.value=E,E.generatedReadme)C.value=E.generatedReadme;else{const j=G(o.agent?.id||"agent");C.value=Y(j,o.agent?.id||"agent",E.agentDescription)}M(E)}catch(H){u.value=H instanceof Error?H.message:"Failed to analyze agent"}finally{r.value=!1}}},te=async()=>{if(o.agent)try{const H=await fetch(Ue(`/api/pack/${o.agent.id}/metadata`));if(H.ok){const E=await H.json();g.value=E.packageName,y.value=P(E.version),x.value=E.license||"MIT",c.value=E.licenseOwner||""}else g.value=G(o.agent.id),y.value="1.0.0",x.value="MIT",c.value=""}catch{g.value=G(o.agent?.id||"agent"),y.value="1.0.0",x.value="MIT",c.value=""}},G=H=>`standardagent-${H.toLowerCase().replace(/_/g,"-")}`,Y=(H,E,j)=>`# ${H}
|
|
2
2
|
|
|
3
3
|
${j||"A Standard Agent package."}
|
|
4
4
|
|