(()=>{const v=window.React;if(!v)return;const i=v.createElement,{useState:N,useEffect:V}=v,t={bg:"var(--app-bg, #05070c)",surface:"var(--app-surface, #0d1220)",elevated:"var(--app-elevated, #121829)",rule:"var(--app-rule, #1e2536)",ink:"var(--app-ink, #e8ecf5)",inkSoft:"var(--app-ink-soft, #9aa4bd)",inkFaint:"var(--app-ink-faint, #5c6785)",accent:"var(--app-accent, #00f3ff)",accentDim:"var(--app-accent-dim, rgba(0,243,255,.12))",running:"var(--app-running, #f5b942)",success:"var(--app-success, #35d48a)",warn:"var(--app-warn, #f5b942)",fail:"var(--app-fail, #f43f6c)",mono:"var(--app-mono, 'JetBrains Mono', 'SFMono-Regular', Consolas, monospace)"},$={zoom:100,selectedId:"n1",nodes:[{id:"n1",col:2,row:0,title:"Plan: reconcile May AP ledger",type:"gate",state:"ok",started:"06:30:02",durationMs:1400,summary:"Approved \xB7 5 sub-goals",output:`goals=[fetch, match, flag, post, report]
budget=\u20AC0.50 confidence=0.91`},{id:"n2",col:1,row:1,title:"fetch-invoices",type:"tool",state:"ok",started:"06:30:04",durationMs:3120,summary:"412 invoices \xB7 Stripe + GCS",output:`pulled 412 invoices
span=2026-05-01..05-31`},{id:"n3",col:3,row:1,title:"fetch-bank-statements",type:"tool",state:"ok",started:"06:30:04",durationMs:2870,summary:"388 lines \xB7 2 accounts",output:`accounts=[EUR-main, EUR-fees]
lines=388`},{id:"n4",col:1,row:2,title:"normalize-currency",type:"agent",state:"ok",started:"06:30:08",durationMs:5400,summary:"FX @ ECB daily",output:"converted 71 non-EUR rows"},{id:"n5",col:3,row:2,title:"match-agt",type:"agent",state:"ok",started:"06:30:08",durationMs:12400,summary:"372 / 412 auto-matched",output:`90.3% matched
residual=40 rows`},{id:"n6",col:2,row:3,title:"reconciliation-ledger.parquet",type:"artifact",state:"ok",started:"06:30:21",durationMs:900,summary:"gs://aaas-fin/discovery/2026-05",output:"rows=412 size=2.1MB"},{id:"n7",col:1,row:4,title:"flag-exceptions-agt (long-running deep-research pass over residual rows)",type:"agent",state:"running",started:"06:30:22",durationMs:0,summary:"scoring 40 residuals\u2026",output:`streaming\u2026
17/40 scored
ETA 40s`},{id:"n8",col:3,row:4,title:"vendor-enrich-tool",type:"tool",state:"blocked",started:"\u2014",durationMs:0,summary:"waiting on rate-limit",output:`blocked: OpenCorporates 429
retry-after=120s`},{id:"n9",col:0,row:5,title:"post-to-ledger-gate",type:"gate",state:"idle",started:"\u2014",durationMs:0,summary:"awaits n7",output:"gate: requires exceptions cleared"},{id:"n10",col:2,row:5,title:"anomaly-detect-agt",type:"agent",state:"failed",started:"06:30:31",durationMs:2100,summary:"model timeout",output:`FAILED: upstream 504
after 2 retries`},{id:"n11",col:4,row:5,title:"notify-slack-tool",type:"tool",state:"idle",started:"\u2014",durationMs:0,summary:"awaits n8",output:"idle"},{id:"n12",col:0,row:6,title:"AP-report-May.pdf",type:"artifact",state:"idle",started:"\u2014",durationMs:0,summary:"awaits n9",output:"idle"},{id:"n13",col:3,row:6,title:"retry-anomaly-agt",type:"agent",state:"idle",started:"\u2014",durationMs:0,summary:"awaits n10 review",output:"idle"},{id:"n14",col:2,row:4,title:"human-review-gate",type:"gate",state:"blocked",started:"\u2014",durationMs:0,summary:"needs operator",output:"blocked: 1 approval pending"}],edges:[{from:"n1",to:"n2",kind:"dep"},{from:"n1",to:"n3",kind:"dep"},{from:"n2",to:"n4",kind:"data"},{from:"n3",to:"n5",kind:"data"},{from:"n4",to:"n6",kind:"data"},{from:"n5",to:"n6",kind:"data"},{from:"n6",to:"n7",kind:"data"},{from:"n6",to:"n8",kind:"dep"},{from:"n6",to:"n14",kind:"dep"},{from:"n7",to:"n9",kind:"dep"},{from:"n8",to:"n11",kind:"dep"},{from:"n8",to:"n10",kind:"data",state:"failed"},{from:"n9",to:"n12",kind:"data"},{from:"n10",to:"n13",kind:"dep",state:"failed"}],source:"seed"};function M(e){return e==="running"?t.running:e==="ok"?t.success:e==="blocked"?t.warn:e==="failed"?t.fail:null}function C(e){const l={ok:["OK",t.success],running:["LIVE",t.running],run:["LIVE",t.running],blocked:["BLOCKED",t.warn],warn:["WARN",t.warn],failed:["FAIL",t.fail],fail:["FAIL",t.fail],idle:["IDLE",t.inkFaint]}[e]||[String(e||"\u2014").toUpperCase(),t.inkFaint];return{label:l[0],color:l[1]}}const F=250,D=152,S=44,R=34,_=200,L=86;function K(e,p){const l=(Number.isFinite(p)?p:100)/100,u=Array.isArray(e)?e:[];let n=0,o=0;u.forEach(c=>{c&&(Number.isFinite(c.col)&&(n=Math.max(n,c.col)),Number.isFinite(c.row)&&(o=Math.max(o,c.row)))});const s=(S*2+n*F+_)*l,m=(R*2+o*D+L)*l,a={};return u.forEach(c=>{if(!c||!c.id)return;const x=Number.isFinite(c.col)?c.col:0,r=Number.isFinite(c.row)?c.row:0;a[c.id]={x:(S+x*F)*l,y:(R+r*D)*l,w:_*l,h:L*l}}),{z:l,width:s,height:m,pos:a}}function O(e,p,l){const u=Array.isArray(e)?e:[],n=[];return u.forEach((o,s)=>{if(!o)return;const m=p[o.from],a=p[o.to];if(!m||!a)return;const c=m.x+m.w/2,x=m.y+m.h,r=a.x+a.w/2,w=a.y,z=(x+w)/2,d=o.state==="failed",y=d?t.fail:o.kind==="data"?t.accent:t.rule,f=`${o.from}-${o.to}-${s}`;n.push(i("path",{key:`ln-${f}`,d:`M${c} ${x} C${c} ${z} ${r} ${z} ${r} ${w}`,stroke:y,strokeWidth:1.5*l,strokeDasharray:d?"5 4":void 0,fill:"none"}));const h=5*l;n.push(i("path",{key:`ah-${f}`,d:`M${r-h} ${w-h} L${r} ${w} L${r+h} ${w-h}`,stroke:y,strokeWidth:1.5*l,fill:"none",strokeLinecap:"round",strokeLinejoin:"round"}))}),n}function W(e,p,l,u,n){if(!e||!e.id)return null;const o=p[e.id];if(!o)return null;const s=M(e.state),m=e.state==="running";return i("button",{key:e.id,type:"button",title:e.title||e.id,"aria-selected":!!u,className:`zui-node${m?" zui-pulse":""}${u?" on":""}`,onClick:()=>n(e.id),style:{left:o.x,top:o.y,width:o.w,height:o.h,borderLeftColor:s||t.rule}},[i("div",{key:"hd",className:"zui-node-head"},[i("span",{key:"dot",className:"zui-node-dot",style:{background:s||t.inkFaint,boxShadow:s?`0 0 8px ${s}`:"none"}}),i("span",{key:"ty",className:"zui-node-type mono"},e.type||"\u2014")]),i("div",{key:"ti",className:"zui-node-title"},e.title||e.id),i("div",{key:"su",className:"zui-node-summary"},e.summary||"\u2014")])}function G(e,p,l,u,n){const{z:o,width:s,height:m,pos:a}=K(e,l),x=(Array.isArray(e)?e:[]).map(r=>W(r,a,o,r&&r.id===u,n)).filter(Boolean);return i("div",{className:"zui-whiteboard-inner",style:{width:Math.max(s,1),height:Math.max(m,1)}},[i("svg",{key:"edges",className:"zui-edges",width:Math.max(s,1),height:Math.max(m,1),viewBox:`0 0 ${Math.max(s,1)} ${Math.max(m,1)}`},O(p,a,o)),...x])}function Y(e,p,l){const u=Array.isArray(e)?e:[],n=160,o=110;let s=0,m=0;u.forEach(r=>{r&&(Number.isFinite(r.col)&&(s=Math.max(s,r.col)),Number.isFinite(r.row)&&(m=Math.max(m,r.row)))});const a=n/(s+1),c=o/(m+1),x=u.map(r=>{if(!r||!r.id)return null;const w=Number.isFinite(r.col)?r.col:0,z=Number.isFinite(r.row)?r.row:0;return i("rect",{key:r.id,x:w*a+3,y:z*c+2,width:Math.max(2,a-6),height:Math.max(2,c-4),rx:2,fill:M(r.state)||t.rule,opacity:r.id===p?1:.55,className:"zui-minimap-rect",onClick:()=>l(r.id)})}).filter(Boolean);return i("svg",{viewBox:`0 0 ${n} ${o}`,width:n,height:o,className:"zui-minimap"},x)}function P(e,p,l,u){return i("div",{className:"zui-zoom-ctl"},[i("button",{key:"out",type:"button",className:"zui-zoom-btn","aria-label":"Zoom out",title:"Zoom out",onClick:p},"\u2212"),i("button",{key:"fit",type:"button",className:"zui-zoom-btn","aria-label":"Fit to view",title:"Fit to view",onClick:u},"\u2922"),i("button",{key:"in",type:"button",className:"zui-zoom-btn","aria-label":"Zoom in",title:"Zoom in",onClick:l},"+"),i("span",{key:"pct",className:"zui-zoom-pct mono"},`${Number.isFinite(e)?e:100}%`)])}function q(e,p,l){const u=Array.isArray(e)?e:[];return i("div",{className:"zui-outline-tree",role:"tree"},u.map(n=>{if(!n||!n.id)return null;const o=C(n.state),s=n.id===p;return i("button",{key:n.id,type:"button",role:"treeitem","aria-selected":s,className:`zui-outline-row${s?" on":""}`,onClick:()=>l(n.id)},[i("span",{key:"dot",className:"zui-outline-dot",style:{background:o.color}}),i("span",{key:"ti",className:"zui-outline-title"},n.title||n.id)])}).filter(Boolean))}function H(e,p,l,u){if(!e)return i("div",{className:"zui-detail-empty"},"No node selected \u2014 pick one on the whiteboard or in the outline.");const n=C(e.state),o=e.durationMs?`${(e.durationMs/1e3).toFixed(1)}s`:"\u2014",s=e.state==="failed"||e.state==="ok";return i("div",{className:"zui-detail"},[i("div",{key:"hd",className:"zui-detail-head"},[i("div",{key:"chips",className:"zui-detail-chips"},[i("span",{key:"ty",className:"zui-detail-type mono"},e.type||"\u2014"),i("span",{key:"st",className:"zui-chip mono",style:{color:n.color,borderColor:n.color}},n.label)]),i("div",{key:"ti",className:"zui-detail-title"},e.title||e.id||"\u2014")]),i("div",{key:"bd",className:"zui-detail-body"},[i("div",{key:"meta",className:"zui-detail-meta-row"},[i("div",{key:"st"},[i("div",{className:"zui-overline"},"Started"),i("div",{className:"mono zui-detail-val"},e.started||"\u2014")]),i("div",{key:"du"},[i("div",{className:"zui-overline"},"Duration"),i("div",{className:"mono zui-detail-val"},o)])]),i("div",{key:"res"},[i("div",{className:"zui-overline"},"Result"),i("div",{className:"zui-detail-summary"},e.summary||"\u2014")]),i("div",{key:"out"},[i("div",{className:"zui-overline"},"Raw output"),i("pre",{className:"mono zui-detail-output"},e.output||"\u2014")]),i("details",{key:"outline",className:"zui-outline-details"},[i("summary",{key:"s",className:"zui-outline-summary"},`Outline (${l})`),u])]),i("div",{key:"ft",className:"zui-detail-actions"},[i("button",{key:"rerun",type:"button",className:"zui-detail-rerun",disabled:!s,onClick:p},"Re-run node"),i("button",{key:"note",type:"button",className:"zui-detail-note"},"Add note")])])}const T="zui-canvas-kind-style";function j(){if(document.getElementById(T))return;const e=document.createElement("style");e.id=T,e.textContent=`
.zuicanvas{display:flex;flex-direction:column;gap:14px;height:100%;min-height:0;padding:1.5rem;overflow:auto;font-size:14px;color:${t.ink};}
.zuicanvas .mono{font-family:${t.mono};}
.zui-src{margin:0;font-size:.68rem;color:${t.inkFaint};}
.zui-body{display:flex;gap:14px;align-items:stretch;min-height:0;flex:1;}
.zui-board{flex:1;min-width:0;position:relative;height:620px;border:1px solid ${t.rule};border-radius:12px;overflow:hidden;background:${t.bg};background-image:radial-gradient(${t.rule} 1px, transparent 1px);background-size:24px 24px;}
.zui-board-scroll{position:absolute;inset:0;overflow:auto;}
.zui-whiteboard-inner{position:relative;}
.zui-edges{position:absolute;inset:0;pointer-events:none;top:0;left:0;}
.zui-node{position:absolute;text-align:left;cursor:pointer;overflow:hidden;background:${t.surface};border:1px solid ${t.rule};border-left-width:3px;border-left-style:solid;border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:3px;font-family:inherit;transition:box-shadow .15s ease;box-shadow:0 2px 10px rgba(0,0,0,.25);}
.zui-node.on{box-shadow:0 0 0 2px ${t.accent}, 0 0 18px rgba(0,243,255,.3);}
.zui-node-head{display:flex;align-items:center;gap:6px;}
.zui-node-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
.zui-node-type{font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:${t.inkFaint};}
.zui-node-title{font-size:12.5px;font-weight:600;color:${t.ink};line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.zui-node-summary{font-size:11px;color:${t.inkSoft};line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
@keyframes zuiPulse{0%,100%{opacity:1}50%{opacity:.45}}
.zui-pulse .zui-node-dot{animation:zuiPulse 1.6s ease-in-out infinite;}
.zui-zoom-wrap{position:absolute;left:14px;bottom:14px;}
.zui-zoom-ctl{display:flex;align-items:center;gap:2px;padding:4px;border-radius:9px;border:1px solid ${t.rule};background:${t.surface};}
.zui-zoom-btn{width:28px;height:28px;border:none;background:transparent;color:${t.ink};cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;font-size:14px;}
.zui-zoom-btn:hover{background:${t.accentDim};}
.zui-zoom-pct{min-width:44px;text-align:center;font-size:.72rem;color:${t.inkSoft};}
.zui-minimap-wrap{position:absolute;right:14px;bottom:14px;border:1px solid ${t.rule};border-radius:8px;overflow:hidden;background:${t.surface};padding:4px;}
.zui-minimap-rect{cursor:pointer;}
.zui-detail-rail{width:360px;flex-shrink:0;border:1px solid ${t.rule};border-radius:12px;background:${t.elevated};display:flex;flex-direction:column;overflow:hidden;}
.zui-detail-empty{padding:16px 18px;color:${t.inkFaint};font-size:12.5px;}
.zui-detail-head{padding:16px 18px;border-bottom:1px solid ${t.rule};}
.zui-detail-chips{display:flex;align-items:center;gap:8px;margin-bottom:10px;}
.zui-detail-type{font-size:.6rem;text-transform:uppercase;letter-spacing:.08em;padding:2px 7px;border-radius:5px;border:1px solid ${t.rule};color:${t.inkFaint};}
.zui-chip{font-size:9.5px;font-weight:700;letter-spacing:.06em;padding:2px 8px;border-radius:999px;border:1px solid;width:fit-content;display:inline-block;}
.zui-detail-title{font-size:.98rem;font-weight:650;color:${t.ink};line-height:1.35;}
.zui-detail-body{padding:16px 18px;display:flex;flex-direction:column;gap:16px;overflow-y:auto;flex:1;}
.zui-detail-meta-row{display:flex;gap:22px;}
.zui-overline{font-size:.5rem;color:${t.inkFaint};margin-bottom:5px;text-transform:uppercase;letter-spacing:.1em;}
.zui-detail-val{font-size:.82rem;color:${t.ink};}
.zui-detail-summary{font-size:.85rem;color:${t.inkSoft};line-height:1.5;}
.zui-detail-output{margin:0;font-size:.72rem;line-height:1.5;color:${t.inkSoft};background:${t.bg};border:1px solid ${t.rule};border-radius:8px;padding:12px;white-space:pre-wrap;max-height:150px;overflow:auto;}
.zui-outline-details{border-top:1px solid ${t.rule};padding-top:12px;}
.zui-outline-summary{font-size:.62rem;color:${t.inkSoft};cursor:pointer;}
.zui-outline-tree{margin-top:10px;display:flex;flex-direction:column;gap:1px;max-height:220px;overflow:auto;}
.zui-outline-row{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:none;background:transparent;border-radius:6px;cursor:pointer;text-align:left;font-size:.78rem;color:${t.ink};}
.zui-outline-row.on{background:${t.accentDim};}
.zui-outline-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.zui-outline-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.zui-detail-actions{padding:14px 18px;border-top:1px solid ${t.rule};display:flex;gap:10px;}
.zui-detail-rerun{flex:1;height:38px;border-radius:9px;border:1px solid rgba(244,63,108,.4);background:transparent;color:${t.fail};font-weight:600;font-size:.78rem;cursor:pointer;}
.zui-detail-rerun:disabled{opacity:.4;cursor:not-allowed;}
.zui-detail-note{flex:1;height:38px;border-radius:9px;border:1px solid ${t.rule};background:transparent;color:${t.ink};font-weight:500;font-size:.78rem;cursor:pointer;}
@media(max-width:1100px){.zui-body{flex-direction:column;}.zui-detail-rail{width:100%;}.zui-board{height:420px;}}
`,document.head.appendChild(e)}function b(){const e=window.KIND_REGISTRY&&window.KIND_REGISTRY.zuiCanvas;return e&&e.data||$}function Z(){j();const[e,p]=N(b),[l,u]=N(()=>{const d=b();return Number.isFinite(d&&d.zoom)?d.zoom:100}),[n,o]=N(()=>{const d=b(),y=Array.isArray(d&&d.nodes)?d.nodes:[];return d&&d.selectedId||y[0]&&y[0].id||null});V(()=>{function d(){const y=b();p(y),o(f=>{const h=Array.isArray(y.nodes)?y.nodes:[];return f&&h.some(k=>k&&k.id===f)?f:y.selectedId||h[0]&&h[0].id||null})}return window.addEventListener("zui-canvas-live-hydrated",d),()=>window.removeEventListener("zui-canvas-live-hydrated",d)},[]);const s=Array.isArray(e&&e.nodes)?e.nodes:[],m=Array.isArray(e&&e.edges)?e.edges:[],a=s.find(d=>d&&d.id===n)||s[0]||null,c=()=>u(d=>Math.max(40,(d||100)-15)),x=()=>u(d=>Math.min(160,(d||100)+15)),r=()=>u(100),w=()=>{a&&(typeof window.zuiCanvasRerunNode=="function"?window.zuiCanvasRerunNode(a.id):console.info(`[zui-canvas] re-run requested for ${a.id} (no live adapter loaded \u2014 no-op)`))};function z(d){if(!a)return;if(d.key==="Enter"){(a.state==="failed"||a.state==="ok")&&(d.preventDefault(),w());return}const f={ArrowUp:[0,-1],ArrowDown:[0,1],ArrowLeft:[-1,0],ArrowRight:[1,0]}[d.key];if(!f)return;d.preventDefault();const h=Number.isFinite(a.col)?a.col:0,k=Number.isFinite(a.row)?a.row:0;let E=null,U=Number.POSITIVE_INFINITY;s.forEach(g=>{if(!g||!g.id||g.id===a.id)return;const X=Number.isFinite(g.col)?g.col:0,J=Number.isFinite(g.row)?g.row:0,I=X-h,A=J-k;if(f[0]!==0&&Math.sign(I)!==f[0]||f[1]!==0&&Math.sign(A)!==f[1])return;const B=I*I+A*A;B<U&&(U=B,E=g)}),E&&o(E.id)}return i("div",{className:"zuicanvas",tabIndex:0,onKeyDown:z},[e&&e.source?i("p",{key:"src",className:"zui-src"},`source: ${e.source}`):null,i("div",{key:"body",className:"zui-body"},[i("div",{key:"board",className:"zui-board"},[i("div",{key:"scroll",className:"zui-board-scroll"},G(s,m,l,a&&a.id,o)),i("div",{key:"zoom",className:"zui-zoom-wrap"},P(l,c,x,r)),i("div",{key:"mm",className:"zui-minimap-wrap"},Y(s,a&&a.id,o))]),i("div",{key:"detail",className:"zui-detail-rail"},H(a,w,s.length,q(s,a&&a.id,o)))])])}window.ZUI_CANVAS_VIEW_FN=Z,window.VIEWS=window.VIEWS||{},window.VIEWS.zuiCanvas=Z,window.KIND_REGISTRY=window.KIND_REGISTRY||{},window.KIND_REGISTRY.zuiCanvas=window.KIND_REGISTRY.zuiCanvas||{id:"zuiCanvas",label:"Process Tree",workspaceLabel:"Process Tree Whiteboard",workspaceIcon:"account_tree",description:"Agent process tree \u2014 grid-laid nodes with dependency/data edges, minimap, and a node detail rail (state, duration, output, re-run).",defaultView:"zuiCanvas",defaultDetail:"none",agentTreatment:"implicit",primaryAction:{label:"Fit to view",kind:"primary",icon:"fit_screen"},secondaryActions:[{label:"Export",icon:"download"}],heroKpis:[{label:"Nodes",value:"142",trend:"flat"},{label:"Depth",value:"7",trend:"flat"},{label:"Running",value:"3",trend:"up"},{label:"Blocked",value:"1",trend:"down"},{label:"Failed",value:"0",trend:"up"}],data:$},window.ZUI_CANVAS_SEED=$})();
