pmx-canvas 0.3.0 → 0.3.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/CHANGELOG.md +38 -0
- package/dist/canvas/index.js +2 -2
- package/dist/types/cli/daemon.d.ts +74 -0
- package/dist/types/cli/watch.d.ts +2 -2
- package/dist/types/client/canvas/CanvasViewport.d.ts +1 -1
- package/dist/types/client/canvas/CommandPalette.d.ts +1 -1
- package/dist/types/client/canvas/Minimap.d.ts +1 -1
- package/dist/types/client/nodes/FileNode.d.ts +1 -1
- package/dist/types/client/nodes/ImageNode.d.ts +1 -1
- package/dist/types/client/nodes/InlineFormatBar.d.ts +1 -1
- package/dist/types/client/nodes/MarkdownNode.d.ts +1 -1
- package/dist/types/client/nodes/PromptNode.d.ts +1 -1
- package/dist/types/client/nodes/ResponseNode.d.ts +1 -1
- package/dist/types/server/canvas-schema.d.ts +1 -1
- package/dist/types/server/html-primitives.d.ts +1 -1
- package/dist/types/server/index.d.ts +4 -4
- package/dist/types/server/operations/index.d.ts +1 -1
- package/dist/types/server/operations/ops/ax-read.d.ts +2 -0
- package/dist/types/server/operations/ops/canvas-wire.d.ts +2 -0
- package/dist/types/server/operations/ops/ext-app.d.ts +2 -0
- package/docs/http-api.md +28 -0
- package/docs/plans/plan-009-tech-debt-backlog.md +5 -5
- package/docs/tech-debt-assessment-2026-07.md +2 -2
- package/package.json +5 -2
- package/skills/pmx-canvas/SKILL.md +3 -1
- package/skills/pmx-canvas/references/full-reference.md +10 -3
- package/src/cli/agent.ts +1861 -1548
- package/src/cli/daemon.ts +460 -0
- package/src/cli/index.ts +63 -326
- package/src/cli/watch.ts +2 -10
- package/src/client/App.tsx +48 -46
- package/src/client/canvas/AttentionHistory.tsx +11 -1
- package/src/client/canvas/CanvasNode.tsx +41 -29
- package/src/client/canvas/CanvasViewport.tsx +101 -66
- package/src/client/canvas/CommandPalette.tsx +61 -27
- package/src/client/canvas/ContextMenu.tsx +13 -20
- package/src/client/canvas/ContextPinBar.tsx +1 -5
- package/src/client/canvas/ContextPinHud.tsx +1 -6
- package/src/client/canvas/DockedNode.tsx +4 -4
- package/src/client/canvas/EdgeLayer.tsx +37 -36
- package/src/client/canvas/ExpandedNodeOverlay.tsx +69 -45
- package/src/client/canvas/FocusFieldLayer.tsx +20 -22
- package/src/client/canvas/IntentLayer.tsx +31 -14
- package/src/client/canvas/Minimap.tsx +11 -16
- package/src/client/canvas/SelectionBar.tsx +4 -11
- package/src/client/canvas/ShortcutOverlay.tsx +3 -1
- package/src/client/canvas/SnapshotPanel.tsx +77 -95
- package/src/client/canvas/auto-fit.ts +15 -14
- package/src/client/canvas/snap-guides.ts +12 -12
- package/src/client/canvas/use-node-resize.ts +1 -5
- package/src/client/canvas/use-pan-zoom.ts +25 -26
- package/src/client/ext-app/bridge.ts +3 -12
- package/src/client/icons.tsx +63 -20
- package/src/client/nodes/ContextNode.tsx +14 -25
- package/src/client/nodes/ExtAppFrame.tsx +60 -39
- package/src/client/nodes/FileNode.tsx +74 -62
- package/src/client/nodes/GroupNode.tsx +4 -6
- package/src/client/nodes/HtmlNode.tsx +76 -46
- package/src/client/nodes/ImageNode.tsx +18 -27
- package/src/client/nodes/InlineFormatBar.tsx +4 -21
- package/src/client/nodes/InlineMarkdownEditor.tsx +0 -1
- package/src/client/nodes/LedgerNode.tsx +10 -4
- package/src/client/nodes/MarkdownNode.tsx +3 -10
- package/src/client/nodes/McpAppNode.tsx +26 -22
- package/src/client/nodes/MdFormatBar.tsx +10 -7
- package/src/client/nodes/PromptNode.tsx +23 -51
- package/src/client/nodes/ResponseNode.tsx +3 -13
- package/src/client/nodes/StatusNode.tsx +5 -9
- package/src/client/nodes/StatusSummary.tsx +2 -8
- package/src/client/nodes/WebpageNode.tsx +20 -14
- package/src/client/nodes/iframe-document-url.ts +25 -16
- package/src/client/nodes/image-warnings.ts +1 -7
- package/src/client/nodes/md-format.ts +20 -5
- package/src/client/state/attention-bridge.ts +4 -9
- package/src/client/state/attention-store.ts +1 -7
- package/src/client/state/canvas-store.ts +52 -36
- package/src/client/state/intent-bridge.ts +176 -112
- package/src/client/state/intent-store.ts +4 -1
- package/src/client/state/sse-bridge.ts +53 -70
- package/src/json-render/catalog.ts +12 -16
- package/src/json-render/charts/components.tsx +16 -20
- package/src/json-render/charts/extra-components.tsx +8 -16
- package/src/json-render/charts/extra-definitions.ts +1 -2
- package/src/json-render/charts/tufte-components.tsx +37 -20
- package/src/json-render/charts/tufte-definitions.ts +8 -2
- package/src/json-render/renderer/index.tsx +42 -22
- package/src/json-render/schema.ts +6 -3
- package/src/json-render/server.ts +33 -39
- package/src/mcp/canvas-access.ts +35 -21
- package/src/mcp/server.ts +132 -70
- package/src/server/agent-context.ts +63 -36
- package/src/server/ax-context.ts +7 -5
- package/src/server/ax-interaction.ts +176 -43
- package/src/server/ax-state-manager.ts +182 -39
- package/src/server/ax-state.ts +142 -47
- package/src/server/canvas-db.ts +213 -95
- package/src/server/canvas-operations.ts +177 -120
- package/src/server/canvas-provenance.ts +1 -4
- package/src/server/canvas-schema.ts +454 -73
- package/src/server/canvas-serialization.ts +27 -35
- package/src/server/canvas-state.ts +150 -58
- package/src/server/chart-template.ts +4 -5
- package/src/server/code-graph.ts +19 -6
- package/src/server/diagram-presets.ts +28 -29
- package/src/server/ext-app-lookup.ts +3 -12
- package/src/server/html-node-summary.ts +19 -10
- package/src/server/html-primitives.ts +326 -97
- package/src/server/html-surface.ts +6 -9
- package/src/server/image-source.ts +6 -4
- package/src/server/index.ts +320 -217
- package/src/server/intent-registry.ts +2 -5
- package/src/server/mcp-app-candidate.ts +5 -10
- package/src/server/mcp-app-host.ts +14 -38
- package/src/server/mcp-app-runtime.ts +12 -20
- package/src/server/mutation-history.ts +15 -5
- package/src/server/operations/composites.ts +1 -3
- package/src/server/operations/http.ts +2 -3
- package/src/server/operations/index.ts +7 -1
- package/src/server/operations/invoker.ts +4 -3
- package/src/server/operations/mcp.ts +22 -30
- package/src/server/operations/ops/annotation.ts +122 -10
- package/src/server/operations/ops/app.ts +98 -73
- package/src/server/operations/ops/ax-await.ts +17 -10
- package/src/server/operations/ops/ax-read.ts +347 -0
- package/src/server/operations/ops/ax-shared.ts +2 -7
- package/src/server/operations/ops/ax-state.ts +32 -14
- package/src/server/operations/ops/ax-timeline.ts +32 -19
- package/src/server/operations/ops/ax-work.ts +54 -37
- package/src/server/operations/ops/batch.ts +39 -14
- package/src/server/operations/ops/canvas-wire.ts +91 -0
- package/src/server/operations/ops/edges.ts +37 -25
- package/src/server/operations/ops/ext-app.ts +346 -0
- package/src/server/operations/ops/groups.ts +49 -20
- package/src/server/operations/ops/intent.ts +18 -12
- package/src/server/operations/ops/json-render.ts +239 -98
- package/src/server/operations/ops/nodes.ts +298 -109
- package/src/server/operations/ops/query.ts +46 -28
- package/src/server/operations/ops/snapshots.ts +35 -26
- package/src/server/operations/ops/validate.ts +2 -1
- package/src/server/operations/ops/viewport.ts +60 -16
- package/src/server/operations/ops/webview.ts +44 -18
- package/src/server/operations/registry.ts +2 -3
- package/src/server/operations/types.ts +7 -5
- package/src/server/operations/webview-runner.ts +1 -3
- package/src/server/placement.ts +8 -18
- package/src/server/server.ts +108 -1027
- package/src/server/spatial-analysis.ts +39 -25
- package/src/server/trace-manager.ts +3 -8
- package/src/server/web-artifacts.ts +23 -27
- package/src/server/webpage-node.ts +5 -13
- package/src/shared/auto-arrange.ts +12 -5
- package/src/shared/content-height-reporter.ts +8 -6
- package/src/shared/ext-app-tool-result.ts +2 -6
- package/src/shared/placement.ts +1 -4
- package/src/shared/semantic-attention.ts +39 -37
- package/src/shared/surface.ts +8 -4
package/dist/canvas/index.js
CHANGED
|
@@ -19,7 +19,7 @@ var UP=Object.create;var{getPrototypeOf:gP,defineProperty:c0,getOwnPropertyNames
|
|
|
19
19
|
|
|
20
20
|
${G}${K}
|
|
21
21
|
|
|
22
|
-
`}}};w6.tableCaption={filter:["caption"],replacement:()=>""};w6.tableColgroup={filter:["colgroup","col"],replacement:()=>""};w6.tableSection={filter:["thead","tbody","tfoot"],replacement:function($){return $}};function mk($){var v=$.parentNode;return v.nodeName==="THEAD"||v.firstChild===$&&(v.nodeName==="TABLE"||Ek(v))&&Vk.call($.childNodes,function(g){return g.nodeName==="TH"})}function Ek($){var v=$.previousSibling;return $.nodeName==="TBODY"&&(!v||v.nodeName==="THEAD"&&/^\s*$/i.test(v.textContent))}function q3($,v=null,g=null){if(g===null)g=jk.call(v.parentNode.childNodes,v);var _=" ";if(g===0)_="| ";let U=$.trim().replace(/\n\r/g,"<br>").replace(/\n/g,"<br>");U=U.replace(/\|+/g,"\\|");while(U.length<3)U+=" ";if(v)U=lk(U,v," ");return _+U+" |"}function X3($){if(!$.childNodes)return!1;for(let v=0;v<$.childNodes.length;v++){let g=$.childNodes[v];if(g.nodeName==="TABLE")return!0;if(X3(g))return!0}return!1}var X2=($,v)=>{if(!$.childNodes)return!1;for(let g=0;g<$.childNodes.length;g++){let _=$.childNodes[g];if(v==="code"&&q2&&q2(_))return!0;if(v.includes(_.nodeName))return!0;if(X2(_,v))return!0}return!1},w3=($,v)=>{let g=["UL","OL","H1","H2","H3","H4","H5","H6","HR","BLOCKQUOTE"];if(v.preserveNestedTables)g.push("TABLE");return X2($,"code")||X2($,g)};function w2($){let v=I3.get($);if(v!==void 0)return v;let g=ck($);return I3.set($,g),g}function ck($){if(!$)return!0;if(!$.rows)return!0;if($.rows.length===1&&$.rows[0].childNodes.length<=1)return!0;if(X3($))return!0;return!1}function ik($){let v=$.parentNode;while(v.nodeName!=="DIV")if(v=v.parentNode,!v)return null;return v}function Z3($){let v=$.parentNode;while(v.nodeName!=="TABLE")if(v=v.parentNode,!v)return null;return v}function lk($,v,g){let _=v.getAttribute("colspan")||1;for(let U=1;U<_;U++)$+=" | "+g.repeat(3);return $}function S3($){let v=0;for(let g=0;g<$.rows.length;g++){let U=$.rows[g].childNodes.length;if(U>v)v=U}return v}function M3($){q2=$.isCodeBlock,F3=$.options,$.keep(function(g){if(g.nodeName==="TABLE"&&w3(g,$.options))return!0;return!1});for(var v in w6)$.addRule(v,w6[v])}function Q3($){$.addRule("taskListItems",{filter:function(v){let g=v.parentNode,_=g.parentNode;return v.type==="checkbox"&&(g.nodeName==="LI"||g.nodeName==="LABEL"&&_&&_.nodeName==="LI")},replacement:function(v,g){return(g.checked?"[x]":"[ ]")+" "}})}function hk($){$.use([H3,L3,M3,Q3])}N3.gfm=hk;N3.highlightedCodeBlock=H3;N3.strikethrough=L3;N3.tables=M3;N3.taskListItems=Q3});var cg,k$,uG,x0,P6,MG,RG,yG,DG,p0,i0,l0,PP,fg={},mg=[],kP=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,ig=Array.isArray;function $6($,v){for(var g in v)$[g]=v[g];return $}function o0($){$&&$.parentNode&&$.parentNode.removeChild($)}function IP($,v,g){var _,U,z,b={};for(z in v)z=="key"?_=v[z]:z=="ref"?U=v[z]:b[z]=v[z];if(arguments.length>2&&(b.children=arguments.length>3?cg.call(arguments,2):g),typeof $=="function"&&$.defaultProps!=null)for(z in $.defaultProps)b[z]===void 0&&(b[z]=$.defaultProps[z]);return Cg($,b,_,U,null)}function Cg($,v,g,_,U){var z={type:$,props:v,key:g,ref:_,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:U==null?++uG:U,__i:-1,__u:0};return U==null&&k$.vnode!=null&&k$.vnode(z),z}function e$($){return $.children}function z4($,v){this.props=$,this.context=v}function b4($,v){if(v==null)return $.__?b4($.__,$.__i+1):null;for(var g;v<$.__k.length;v++)if((g=$.__k[v])!=null&&g.__e!=null)return g.__e;return typeof $.type=="function"?b4($):null}function HP($){if($.__P&&$.__d){var v=$.__v,g=v.__e,_=[],U=[],z=$6({},v);z.__v=v.__v+1,k$.vnode&&k$.vnode(z),n0($.__P,z,v,$.__n,$.__P.namespaceURI,32&v.__u?[g]:null,_,g==null?b4(v):g,!!(32&v.__u),U),z.__v=v.__v,z.__.__k[z.__i]=z,CG(_,z,U),v.__e=v.__=null,z.__e!=g&&TG(z)}}function TG($){if(($=$.__)!=null&&$.__c!=null)return $.__e=$.__c.base=null,$.__k.some(function(v){if(v!=null&&v.__e!=null)return $.__e=$.__c.base=v.__e}),TG($)}function QG($){(!$.__d&&($.__d=!0)&&P6.push($)&&!Eg.__r++||MG!=k$.debounceRendering)&&((MG=k$.debounceRendering)||RG)(Eg)}function Eg(){try{for(var $,v=1;P6.length;)P6.length>v&&P6.sort(yG),$=P6.shift(),v=P6.length,HP($)}finally{P6.length=Eg.__r=0}}function jG($,v,g,_,U,z,b,J,G,K,W){var B,k,P,A,H,I,F,Y=_&&_.__k||mg,X=v.length;for(G=LP(g,v,Y,G,X),B=0;B<X;B++)(P=g.__k[B])!=null&&(k=P.__i!=-1&&Y[P.__i]||fg,P.__i=B,I=n0($,P,k,U,z,b,J,G,K,W),A=P.__e,P.ref&&k.ref!=P.ref&&(k.ref&&t0(k.ref,null,P),W.push(P.ref,P.__c||A,P)),H==null&&A!=null&&(H=A),(F=!!(4&P.__u))||k.__k===P.__k?G=VG(P,G,$,F):typeof P.type=="function"&&I!==void 0?G=I:A&&(G=A.nextSibling),P.__u&=-7);return g.__e=H,G}function LP($,v,g,_,U){var z,b,J,G,K,W=g.length,B=W,k=0;for($.__k=Array(U),z=0;z<U;z++)(b=v[z])!=null&&typeof b!="boolean"&&typeof b!="function"?(typeof b=="string"||typeof b=="number"||typeof b=="bigint"||b.constructor==String?b=$.__k[z]=Cg(null,b,null,null,null):ig(b)?b=$.__k[z]=Cg(e$,{children:b},null,null,null):b.constructor===void 0&&b.__b>0?b=$.__k[z]=Cg(b.type,b.props,b.key,b.ref?b.ref:null,b.__v):$.__k[z]=b,G=z+k,b.__=$,b.__b=$.__b+1,J=null,(K=b.__i=FP(b,g,G,B))!=-1&&(B--,(J=g[K])&&(J.__u|=2)),J==null||J.__v==null?(K==-1&&(U>W?k--:U<W&&k++),typeof b.type!="function"&&(b.__u|=4)):K!=G&&(K==G-1?k--:K==G+1?k++:(K>G?k--:k++,b.__u|=4))):$.__k[z]=null;if(B)for(z=0;z<W;z++)(J=g[z])!=null&&(2&J.__u)==0&&(J.__e==_&&(_=b4(J)),mG(J,J));return _}function VG($,v,g,_){var U,z;if(typeof $.type=="function"){for(U=$.__k,z=0;U&&z<U.length;z++)U[z]&&(U[z].__=$,v=VG(U[z],v,g,_));return v}$.__e!=v&&(_&&(v&&$.type&&!v.parentNode&&(v=b4($)),g.insertBefore($.__e,v||null)),v=$.__e);do v=v&&v.nextSibling;while(v!=null&&v.nodeType==8);return v}function FP($,v,g,_){var U,z,b,J=$.key,G=$.type,K=v[g],W=K!=null&&(2&K.__u)==0;if(K===null&&J==null||W&&J==K.key&&G==K.type)return g;if(_>(W?1:0)){for(U=g-1,z=g+1;U>=0||z<v.length;)if((K=v[b=U>=0?U--:z++])!=null&&(2&K.__u)==0&&J==K.key&&G==K.type)return b}return-1}function NG($,v,g){v[0]=="-"?$.setProperty(v,g==null?"":g):$[v]=g==null?"":typeof g!="number"||kP.test(v)?g:g+"px"}function Vg($,v,g,_,U){var z,b;$:if(v=="style")if(typeof g=="string")$.style.cssText=g;else{if(typeof _=="string"&&($.style.cssText=_=""),_)for(v in _)g&&v in g||NG($.style,v,"");if(g)for(v in g)_&&g[v]==_[v]||NG($.style,v,g[v])}else if(v[0]=="o"&&v[1]=="n")z=v!=(v=v.replace(DG,"$1")),b=v.toLowerCase(),v=b in $||v=="onFocusOut"||v=="onFocusIn"?b.slice(2):v.slice(2),$.l||($.l={}),$.l[v+z]=g,g?_?g.u=_.u:(g.u=p0,$.addEventListener(v,z?l0:i0,z)):$.removeEventListener(v,z?l0:i0,z);else{if(U=="http://www.w3.org/2000/svg")v=v.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(v!="width"&&v!="height"&&v!="href"&&v!="list"&&v!="form"&&v!="tabIndex"&&v!="download"&&v!="rowSpan"&&v!="colSpan"&&v!="role"&&v!="popover"&&v in $)try{$[v]=g==null?"":g;break $}catch(J){}typeof g=="function"||(g==null||g===!1&&v[4]!="-"?$.removeAttribute(v):$.setAttribute(v,v=="popover"&&g==1?"":g))}}function rG($){return function(v){if(this.l){var g=this.l[v.type+$];if(v.t==null)v.t=p0++;else if(v.t<g.u)return;return g(k$.event?k$.event(v):v)}}}function n0($,v,g,_,U,z,b,J,G,K){var W,B,k,P,A,H,I,F,Y,X,Q,u,E,M,n,t=v.type;if(v.constructor!==void 0)return null;128&g.__u&&(G=!!(32&g.__u),z=[J=v.__e=g.__e]),(W=k$.__b)&&W(v);$:if(typeof t=="function")try{if(F=v.props,Y=t.prototype&&t.prototype.render,X=(W=t.contextType)&&_[W.__c],Q=W?X?X.props.value:W.__:_,g.__c?I=(B=v.__c=g.__c).__=B.__E:(Y?v.__c=B=new t(F,Q):(v.__c=B=new z4(F,Q),B.constructor=t,B.render=AP),X&&X.sub(B),B.state||(B.state={}),B.__n=_,k=B.__d=!0,B.__h=[],B._sb=[]),Y&&B.__s==null&&(B.__s=B.state),Y&&t.getDerivedStateFromProps!=null&&(B.__s==B.state&&(B.__s=$6({},B.__s)),$6(B.__s,t.getDerivedStateFromProps(F,B.__s))),P=B.props,A=B.state,B.__v=v,k)Y&&t.getDerivedStateFromProps==null&&B.componentWillMount!=null&&B.componentWillMount(),Y&&B.componentDidMount!=null&&B.__h.push(B.componentDidMount);else{if(Y&&t.getDerivedStateFromProps==null&&F!==P&&B.componentWillReceiveProps!=null&&B.componentWillReceiveProps(F,Q),v.__v==g.__v||!B.__e&&B.shouldComponentUpdate!=null&&B.shouldComponentUpdate(F,B.__s,Q)===!1){v.__v!=g.__v&&(B.props=F,B.state=B.__s,B.__d=!1),v.__e=g.__e,v.__k=g.__k,v.__k.some(function(r){r&&(r.__=v)}),mg.push.apply(B.__h,B._sb),B._sb=[],B.__h.length&&b.push(B);break $}B.componentWillUpdate!=null&&B.componentWillUpdate(F,B.__s,Q),Y&&B.componentDidUpdate!=null&&B.__h.push(function(){B.componentDidUpdate(P,A,H)})}if(B.context=Q,B.props=F,B.__P=$,B.__e=!1,u=k$.__r,E=0,Y)B.state=B.__s,B.__d=!1,u&&u(v),W=B.render(B.props,B.state,B.context),mg.push.apply(B.__h,B._sb),B._sb=[];else do B.__d=!1,u&&u(v),W=B.render(B.props,B.state,B.context),B.state=B.__s;while(B.__d&&++E<25);B.state=B.__s,B.getChildContext!=null&&(_=$6($6({},_),B.getChildContext())),Y&&!k&&B.getSnapshotBeforeUpdate!=null&&(H=B.getSnapshotBeforeUpdate(P,A)),M=W!=null&&W.type===e$&&W.key==null?fG(W.props.children):W,J=jG($,ig(M)?M:[M],v,g,_,U,z,b,J,G,K),B.base=v.__e,v.__u&=-161,B.__h.length&&b.push(B),I&&(B.__E=B.__=null)}catch(r){if(v.__v=null,G||z!=null)if(r.then){for(v.__u|=G?160:128;J&&J.nodeType==8&&J.nextSibling;)J=J.nextSibling;z[z.indexOf(J)]=null,v.__e=J}else{for(n=z.length;n--;)o0(z[n]);h0(v)}else v.__e=g.__e,v.__k=g.__k,r.then||h0(v);k$.__e(r,v,g)}else z==null&&v.__v==g.__v?(v.__k=g.__k,v.__e=g.__e):J=v.__e=YP(g.__e,v,g,_,U,z,b,G,K);return(W=k$.diffed)&&W(v),128&v.__u?void 0:J}function h0($){$&&($.__c&&($.__c.__e=!0),$.__k&&$.__k.some(h0))}function CG($,v,g){for(var _=0;_<g.length;_++)t0(g[_],g[++_],g[++_]);k$.__c&&k$.__c(v,$),$.some(function(U){try{$=U.__h,U.__h=[],$.some(function(z){z.call(U)})}catch(z){k$.__e(z,U.__v)}})}function fG($){return typeof $!="object"||$==null||$.__b>0?$:ig($)?$.map(fG):$6({},$)}function YP($,v,g,_,U,z,b,J,G){var K,W,B,k,P,A,H,I=g.props||fg,F=v.props,Y=v.type;if(Y=="svg"?U="http://www.w3.org/2000/svg":Y=="math"?U="http://www.w3.org/1998/Math/MathML":U||(U="http://www.w3.org/1999/xhtml"),z!=null){for(K=0;K<z.length;K++)if((P=z[K])&&"setAttribute"in P==!!Y&&(Y?P.localName==Y:P.nodeType==3)){$=P,z[K]=null;break}}if($==null){if(Y==null)return document.createTextNode(F);$=document.createElementNS(U,Y,F.is&&F),J&&(k$.__m&&k$.__m(v,z),J=!1),z=null}if(Y==null)I===F||J&&$.data==F||($.data=F);else{if(z=z&&cg.call($.childNodes),!J&&z!=null)for(I={},K=0;K<$.attributes.length;K++)I[(P=$.attributes[K]).name]=P.value;for(K in I)P=I[K],K=="dangerouslySetInnerHTML"?B=P:K=="children"||(K in F)||K=="value"&&("defaultValue"in F)||K=="checked"&&("defaultChecked"in F)||Vg($,K,null,P,U);for(K in F)P=F[K],K=="children"?k=P:K=="dangerouslySetInnerHTML"?W=P:K=="value"?A=P:K=="checked"?H=P:J&&typeof P!="function"||I[K]===P||Vg($,K,P,I[K],U);if(W)J||B&&(W.__html==B.__html||W.__html==$.innerHTML)||($.innerHTML=W.__html),v.__k=[];else if(B&&($.innerHTML=""),jG(v.type=="template"?$.content:$,ig(k)?k:[k],v,g,_,Y=="foreignObject"?"http://www.w3.org/1999/xhtml":U,z,b,z?z[0]:g.__k&&b4(g,0),J,G),z!=null)for(K=z.length;K--;)o0(z[K]);J||(K="value",Y=="progress"&&A==null?$.removeAttribute("value"):A!=null&&(A!==$[K]||Y=="progress"&&!A||Y=="option"&&A!=I[K])&&Vg($,K,A,I[K],U),K="checked",H!=null&&H!=$[K]&&Vg($,K,H,I[K],U))}return $}function t0($,v,g){try{if(typeof $=="function"){var _=typeof $.__u=="function";_&&$.__u(),_&&v==null||($.__u=$(v))}else $.current=v}catch(U){k$.__e(U,g)}}function mG($,v,g){var _,U;if(k$.unmount&&k$.unmount($),(_=$.ref)&&(_.current&&_.current!=$.__e||t0(_,null,v)),(_=$.__c)!=null){if(_.componentWillUnmount)try{_.componentWillUnmount()}catch(z){k$.__e(z,v)}_.base=_.__P=null}if(_=$.__k)for(U=0;U<_.length;U++)_[U]&&mG(_[U],v,g||typeof $.type!="function");g||o0($.__e),$.__c=$.__=$.__e=void 0}function AP($,v,g){return this.constructor($,g)}function EG($,v,g){var _,U,z,b;v==document&&(v=document.documentElement),k$.__&&k$.__($,v),U=(_=typeof g=="function")?null:g&&g.__k||v.__k,z=[],b=[],n0(v,$=(!_&&g||v).__k=IP(e$,null,[$]),U||fg,fg,v.namespaceURI,!_&&g?[g]:U?null:v.firstChild?cg.call(v.childNodes):null,z,!_&&g?g:U?U.__e:v.firstChild,_,b),CG(z,$,b)}cg=mg.slice,k$={__e:function($,v,g,_){for(var U,z,b;v=v.__;)if((U=v.__c)&&!U.__)try{if((z=U.constructor)&&z.getDerivedStateFromError!=null&&(U.setState(z.getDerivedStateFromError($)),b=U.__d),U.componentDidCatch!=null&&(U.componentDidCatch($,_||{}),b=U.__d),b)return U.__E=U}catch(J){$=J}throw $}},uG=0,x0=function($){return $!=null&&$.constructor===void 0},z4.prototype.setState=function($,v){var g;g=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=$6({},this.state),typeof $=="function"&&($=$($6({},g),this.props)),$&&$6(g,$),$!=null&&this.__v&&(v&&this._sb.push(v),QG(this))},z4.prototype.forceUpdate=function($){this.__v&&(this.__e=!0,$&&this.__h.push($),QG(this))},z4.prototype.render=e$,P6=[],RG=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,yG=function($,v){return $.__v.__b-v.__v.__b},Eg.__r=0,DG=/(PointerCapture)$|Capture$/i,p0=0,i0=rG(!1),l0=rG(!0),PP=0;var J4,f$,d0,cG,FU=0,tG=[],l$=k$,iG=l$.__b,lG=l$.__r,hG=l$.diffed,xG=l$.__c,pG=l$.unmount,oG=l$.__;function hg($,v){l$.__h&&l$.__h(f$,$,FU||v),FU=0;var g=f$.__H||(f$.__H={__:[],__h:[]});return $>=g.__.length&&g.__.push({}),g.__[$]}function x($){return FU=1,qP(dG,$)}function qP($,v,g){var _=hg(J4++,2);if(_.t=$,!_.__c&&(_.__=[g?g(v):dG(void 0,v),function(J){var G=_.__N?_.__N[0]:_.__[0],K=_.t(G,J);G!==K&&(_.__N=[K,_.__[1]],_.__c.setState({}))}],_.__c=f$,!f$.__f)){var U=function(J,G,K){if(!_.__c.__H)return!0;var W=_.__c.__H.__.filter(function(k){return k.__c});if(W.every(function(k){return!k.__N}))return!z||z.call(this,J,G,K);var B=_.__c.props!==J;return W.some(function(k){if(k.__N){var P=k.__[0];k.__=k.__N,k.__N=void 0,P!==k.__[0]&&(B=!0)}}),z&&z.call(this,J,G,K)||B};f$.__f=!0;var{shouldComponentUpdate:z,componentWillUpdate:b}=f$;f$.componentWillUpdate=function(J,G,K){if(this.__e){var W=z;z=void 0,U(J,G,K),z=W}b&&b.call(this,J,G,K)},f$.shouldComponentUpdate=U}return _.__N||_.__}function m($,v){var g=hg(J4++,3);!l$.__s&&s0(g.__H,v)&&(g.__=$,g.u=v,f$.__H.__h.push(g))}function xg($,v){var g=hg(J4++,4);!l$.__s&&s0(g.__H,v)&&(g.__=$,g.u=v,f$.__h.push(g))}function V($){return FU=5,t$(function(){return{current:$}},[])}function t$($,v){var g=hg(J4++,7);return s0(g.__H,v)&&(g.__=$(),g.__H=v,g.__h=$),g.__}function N($,v){return FU=8,t$(function(){return $},v)}function XP(){for(var $;$=tG.shift();){var v=$.__H;if($.__P&&v)try{v.__h.some(lg),v.__h.some(a0),v.__h=[]}catch(g){v.__h=[],l$.__e(g,$.__v)}}}l$.__b=function($){f$=null,iG&&iG($)},l$.__=function($,v){$&&v.__k&&v.__k.__m&&($.__m=v.__k.__m),oG&&oG($,v)},l$.__r=function($){lG&&lG($),J4=0;var v=(f$=$.__c).__H;v&&(d0===f$?(v.__h=[],f$.__h=[],v.__.some(function(g){g.__N&&(g.__=g.__N),g.u=g.__N=void 0})):(v.__h.some(lg),v.__h.some(a0),v.__h=[],J4=0)),d0=f$},l$.diffed=function($){hG&&hG($);var v=$.__c;v&&v.__H&&(v.__H.__h.length&&(tG.push(v)!==1&&cG===l$.requestAnimationFrame||((cG=l$.requestAnimationFrame)||wP)(XP)),v.__H.__.some(function(g){g.u&&(g.__H=g.u),g.u=void 0})),d0=f$=null},l$.__c=function($,v){v.some(function(g){try{g.__h.some(lg),g.__h=g.__h.filter(function(_){return!_.__||a0(_)})}catch(_){v.some(function(U){U.__h&&(U.__h=[])}),v=[],l$.__e(_,g.__v)}}),xG&&xG($,v)},l$.unmount=function($){pG&&pG($);var v,g=$.__c;g&&g.__H&&(g.__H.__.some(function(_){try{lg(_)}catch(U){v=U}}),g.__H=void 0,v&&l$.__e(v,g.__v))};var nG=typeof requestAnimationFrame=="function";function wP($){var v,g=function(){clearTimeout(_),nG&&cancelAnimationFrame(v),setTimeout($)},_=setTimeout(g,35);nG&&(v=requestAnimationFrame(g))}function lg($){var v=f$,g=$.__c;typeof g=="function"&&($.__c=void 0,g()),f$=v}function a0($){var v=f$;$.__c=$.__(),f$=v}function s0($,v){return!$||$.length!==v.length||v.some(function(g,_){return g!==$[_]})}function dG($,v){return typeof v=="function"?v($):v}var ZP=Symbol.for("preact-signals");function tg(){if(!(v6>1)){var $,v=!1;(function(){var U=og;og=void 0;while(U!==void 0){if(U.S.v===U.v)U.S.i=U.i;U=U.o}})();while(YU!==void 0){var g=YU;YU=void 0,pg++;while(g!==void 0){var _=g.u;if(g.u=void 0,g.f&=-3,!(8&g.f)&&eG(g))try{g.c()}catch(U){if(!v)$=U,v=!0}g=_}}if(pg=0,v6--,v)throw $}else v6--}function U6($){if(v6>0)return $();e0=++SP,v6++;try{return $()}finally{tg()}}var A$=void 0;function $2($){var v=A$;A$=void 0;try{return $()}finally{A$=v}}var aG,YU=void 0,v6=0,pg=0,SP=0,e0=0,og=void 0,ng=0;function sG($){if(A$!==void 0){var v=$.n;if(v===void 0||v.t!==A$){if(v={i:0,S:$,p:A$.s,n:void 0,t:A$,e:void 0,x:void 0,r:v},A$.s!==void 0)A$.s.n=v;if(A$.s=v,$.n=v,32&A$.f)$.S(v);return v}else if(v.i===-1){if(v.i=0,v.n!==void 0){if(v.n.p=v.p,v.p!==void 0)v.p.n=v.n;v.p=A$.s,v.n=void 0,A$.s.n=v,A$.s=v}return v}}}function n$($,v){this.v=$,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=v==null?void 0:v.watched,this.Z=v==null?void 0:v.unwatched,this.name=v==null?void 0:v.name}n$.prototype.brand=ZP;n$.prototype.h=function(){return!0};n$.prototype.S=function($){var v=this,g=this.t;if(g!==$&&$.e===void 0)if($.x=g,this.t=$,g!==void 0)g.e=$;else $2(function(){var _;(_=v.W)==null||_.call(v)})};n$.prototype.U=function($){var v=this;if(this.t!==void 0){var{e:g,x:_}=$;if(g!==void 0)g.x=_,$.e=void 0;if(_!==void 0)_.e=g,$.x=void 0;if($===this.t){if(this.t=_,_===void 0)$2(function(){var U;(U=v.Z)==null||U.call(v)})}}};n$.prototype.subscribe=function($){var v=this;return k6(function(){var g=v.value,_=A$;A$=void 0;try{$(g)}finally{A$=_}},{name:"sub"})};n$.prototype.valueOf=function(){return this.value};n$.prototype.toString=function(){return this.value+""};n$.prototype.toJSON=function(){return this.value};n$.prototype.peek=function(){var $=A$;A$=void 0;try{return this.value}finally{A$=$}};Object.defineProperty(n$.prototype,"value",{get:function(){var $=sG(this);if($!==void 0)$.i=this.i;return this.v},set:function($){if($!==this.v){if(pg>100)throw Error("Cycle detected");(function(g){if(v6!==0&&pg===0){if(g.l!==e0)g.l=e0,og={S:g,v:g.v,i:g.i,o:og}}})(this),this.v=$,this.i++,ng++,v6++;try{for(var v=this.t;v!==void 0;v=v.x)v.t.N()}finally{tg()}}}});function B$($,v){return new n$($,v)}function eG($){for(var v=$.s;v!==void 0;v=v.n)if(v.S.i!==v.i||!v.S.h()||v.S.i!==v.i)return!0;return!1}function $K($){for(var v=$.s;v!==void 0;v=v.n){var g=v.S.n;if(g!==void 0)v.r=g;if(v.S.n=v,v.i=-1,v.n===void 0){$.s=v;break}}}function vK($){var v=$.s,g=void 0;while(v!==void 0){var _=v.p;if(v.i===-1){if(v.S.U(v),_!==void 0)_.n=v.n;if(v.n!==void 0)v.n.p=_}else g=v;if(v.S.n=v.r,v.r!==void 0)v.r=void 0;v=_}$.s=g}function i6($,v){n$.call(this,void 0),this.x=$,this.s=void 0,this.g=ng-1,this.f=4,this.W=v==null?void 0:v.watched,this.Z=v==null?void 0:v.unwatched,this.name=v==null?void 0:v.name}i6.prototype=new n$;i6.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32)return!0;if(this.f&=-5,this.g===ng)return!0;if(this.g=ng,this.f|=1,this.i>0&&!eG(this))return this.f&=-2,!0;var $=A$;try{$K(this),A$=this;var v=this.x();if(16&this.f||this.v!==v||this.i===0)this.v=v,this.f&=-17,this.i++}catch(g){this.v=g,this.f|=16,this.i++}return A$=$,vK(this),this.f&=-2,!0};i6.prototype.S=function($){if(this.t===void 0){this.f|=36;for(var v=this.s;v!==void 0;v=v.n)v.S.S(v)}n$.prototype.S.call(this,$)};i6.prototype.U=function($){if(this.t!==void 0){if(n$.prototype.U.call(this,$),this.t===void 0){this.f&=-33;for(var v=this.s;v!==void 0;v=v.n)v.S.U(v)}}};i6.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var $=this.t;$!==void 0;$=$.x)$.t.N()}};Object.defineProperty(i6.prototype,"value",{get:function(){if(1&this.f)throw Error("Cycle detected");var $=sG(this);if(this.h(),$!==void 0)$.i=this.i;if(16&this.f)throw this.v;return this.v}});function l6($,v){return new i6($,v)}function UK($){var v=$.m;if($.m=void 0,typeof v=="function"){v6++;var g=A$;A$=void 0;try{v()}catch(_){throw $.f&=-2,$.f|=8,v2($),_}finally{A$=g,tg()}}}function v2($){for(var v=$.s;v!==void 0;v=v.n)v.S.U(v);$.x=void 0,$.s=void 0,UK($)}function MP($){if(A$!==this)throw Error("Out-of-order effect");if(vK(this),A$=$,this.f&=-2,8&this.f)v2(this);tg()}function O4($,v){if(this.x=$,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=v==null?void 0:v.name,aG)aG.push(this)}O4.prototype.c=function(){var $=this.S();try{if(8&this.f)return;if(this.x===void 0)return;var v=this.x();if(typeof v=="function")this.m=v}finally{$()}};O4.prototype.S=function(){if(1&this.f)throw Error("Cycle detected");this.f|=1,this.f&=-9,UK(this),$K(this),v6++;var $=A$;return A$=this,MP.bind(this,$)};O4.prototype.N=function(){if(!(2&this.f))this.f|=2,this.u=YU,YU=this};O4.prototype.d=function(){if(this.f|=8,!(1&this.f))v2(this)};O4.prototype.dispose=function(){this.d()};function k6($,v){var g=new O4($,v);try{g.c()}catch(U){throw g.d(),U}var _=g.d.bind(g);return _[Symbol.dispose]=_,_}var U2,g2,dg,QP=typeof window<"u"&&!!window.__PREACT_SIGNALS_DEVTOOLS__,gK=[],_K=[];k6(function(){U2=this.N})();function G4($,v){k$[$]=v.bind(null,k$[$]||function(){})}function ag($){if(dg){var v=dg;dg=void 0,v()}dg=$&&$.S()}function zK($){var v=this,g=$.data,_=rP(g);_.value=g;var U=t$(function(){var J=v,G=v.__v;while(G=G.__)if(G.__c){G.__c.__$f|=4;break}var K=l6(function(){var P=_.value.value;return P===0?0:P===!0?"":P||""}),W=l6(function(){return!Array.isArray(K.value)&&!x0(K.value)}),B=k6(function(){if(this.N=bK,W.value){var P=K.value;if(J.__v&&J.__v.__e&&J.__v.__e.nodeType===3)J.__v.__e.data=P}}),k=v.__$u.d;return v.__$u.d=function(){B(),k.call(this)},[W,K]},[]),z=U[0],b=U[1];return z.value?b.peek():b.value}zK.displayName="ReactiveTextNode";Object.defineProperties(n$.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:zK},props:{configurable:!0,get:function(){var $=this;return{data:{get value(){return $.value}}}}},__b:{configurable:!0,value:1}});G4("__b",function($,v){if(typeof v.type=="string"){var g,_=v.props;for(var U in _)if(U!=="children"){var z=_[U];if(z instanceof n$){if(!g)v.__np=g={};g[U]=z,_[U]=z.peek()}}}$(v)});G4("__r",function($,v){if($(v),v.type!==e$){ag();var g,_=v.__c;if(_){if(_.__$f&=-2,(g=_.__$u)===void 0)_.__$u=g=function(U,z){var b;return k6(function(){b=this},{name:z}),b.c=U,b}(function(){var U;if(QP)(U=g.y)==null||U.call(g);_.__$f|=1,_.setState({})},typeof v.type=="function"?v.type.displayName||v.type.name:"")}g2=_,ag(g)}});G4("__e",function($,v,g,_){ag(),g2=void 0,$(v,g,_)});G4("diffed",function($,v){ag(),g2=void 0;var g;if(typeof v.type=="string"&&(g=v.__e)){var{__np:_,props:U}=v;if(_){var z=g.U;if(z)for(var b in z){var J=z[b];if(J!==void 0&&!(b in _))J.d(),z[b]=void 0}else z={},g.U=z;for(var G in _){var K=z[G],W=_[G];if(K===void 0)K=NP(g,G,W),z[G]=K;else K.o(W,U)}for(var B in _)U[B]=_[B]}}$(v)});function NP($,v,g,_){var U=v in $&&$.ownerSVGElement===void 0,z=B$(g),b=g.peek();return{o:function(J,G){z.value=J,b=J.peek()},d:k6(function(){this.N=bK;var J=z.value.value;if(b!==J)if(b=void 0,U)$[v]=J;else if(J!=null&&(J!==!1||v[4]==="-"))$.setAttribute(v,J);else $.removeAttribute(v);else b=void 0})}}G4("unmount",function($,v){if(typeof v.type=="string"){var g=v.__e;if(g){var _=g.U;if(_){g.U=void 0;for(var U in _){var z=_[U];if(z)z.d()}}}v.__np=void 0}else{var b=v.__c;if(b){var J=b.__$u;if(J)b.__$u=void 0,J.d()}}$(v)});G4("__h",function($,v,g,_){if(_<3||_===9)v.__$f|=2;$(v,g,_)});z4.prototype.shouldComponentUpdate=function($,v){if(this.__R)return!0;var g=this.__$u,_=g&&g.s!==void 0;for(var U in v)return!0;if(this.__f||typeof this.u=="boolean"&&this.u===!0){var z=2&this.__$f;if(!(_||z||4&this.__$f))return!0;if(1&this.__$f)return!0}else{if(!(_||4&this.__$f))return!0;if(3&this.__$f)return!0}for(var b in $)if(b!=="__source"&&$[b]!==this.props[b])return!0;for(var J in this.props)if(!(J in $))return!0;return!1};function rP($,v){return t$(function(){return B$($,v)},[])}var uP=typeof requestAnimationFrame>"u"?setTimeout:function($){var v=function(){clearTimeout(g),cancelAnimationFrame(_),$()},g=setTimeout(v,35),_=requestAnimationFrame(v)},RP=function($){queueMicrotask(function(){queueMicrotask($)})};function yP(){U6(function(){var $;while($=gK.shift())U2.call($)})}function DP(){if(gK.push(this)===1)(k$.requestAnimationFrame||uP)(yP)}function TP(){U6(function(){var $;while($=_K.shift())U2.call($)})}function bK(){if(_K.push(this)===1)(k$.requestAnimationFrame||RP)(TP)}function JK($,v){var g=V($);g.current=$,m(function(){return k6(function(){return this.N=DP,g.current()},v)},[])}var sg=B$(null),AU=B$([]),W4=B$(new Set),B4=B$(new Set),eg=B$([]),$_=B$(new Set),I6=B$(!1),K4=B$(0);function OK(){sg.value=null,AU.value=[],W4.value=new Set,B4.value=new Set,eg.value=[],$_.value=new Set,I6.value=!1,K4.value=0}function v_(){I6.value=!0,K4.value=0}function U_(){I6.value=!1}function GK($,v,g){W4.value=new Set($),B4.value=new Set(v),eg.value=g}function g_($){sg.value=$}function KK($,v=6){if(AU.value=[$,...AU.value].slice(0,v),!I6.value)K4.value=Math.min(99,K4.value+1)}function __($){$_.value=new Set($)}var $v={markdown:"MD","mcp-app":"APP",webpage:"WEB","json-render":"UI",graph:"GRAPH",prompt:"ASK",response:"ANS",status:"STATUS",context:"CONTEXT",ledger:"LOG",trace:"TRACE",file:"FILE",image:"IMG",html:"HTML",group:"GROUP"},z_=new Set(["markdown","mcp-app","webpage","json-render","graph","context","ledger","file","image","html"]);function WK($){return $.type==="mcp-app"&&$.data.mode==="ext-app"&&$.data.serverName==="Excalidraw"&&$.data.toolName==="create_view"}function BK($){if($.length===0)return null;let{POSITIVE_INFINITY:v,POSITIVE_INFINITY:g,NEGATIVE_INFINITY:_,NEGATIVE_INFINITY:U}=Number;for(let z of $)v=Math.min(v,z.position.x),g=Math.min(g,z.position.y),_=Math.max(_,z.position.x+z.size.width),U=Math.max(U,z.position.y+z.size.height);if(!Number.isFinite(v)||!Number.isFinite(g))return null;return{x:v-40,y:g-40-32,width:_-v+80,height:U-g+80+32}}function jP($){let v=$.filter((G)=>!G.pinned&&G.dockPosition===null),g=new Map(v.map((G)=>[G.id,G])),_=new Map,U=[],z=new Map;for(let G of v){if(G.type==="group")continue;let K=typeof G.data.parentGroup==="string"?G.data.parentGroup:"",W=K?g.get(K):void 0;if(!W||W.type!=="group")continue;if(!z.has(K))z.set(K,[]);z.get(K).push(G)}let b=v.filter((G)=>G.type==="group").sort((G,K)=>G.position.y-K.position.y||G.position.x-K.position.x);for(let G of b){let K=z.get(G.id)??[];if(K.length===0){let P=`unit:${G.id}`;U.push({id:P,memberIds:[G.id],origin:{...G.position},size:{...G.size},sortKey:{x:G.position.x,y:G.position.y}}),_.set(G.id,P);continue}let W=K.map((P)=>({position:P.position,size:P.size})),B=BK(W);if(!B)continue;let k=`group:${G.id}`;U.push({id:k,memberIds:K.map((P)=>P.id),origin:{x:B.x,y:B.y},size:{width:B.width,height:B.height},sortKey:{x:B.x,y:B.y},groupId:G.id}),_.set(G.id,k);for(let P of K)_.set(P.id,k)}let J=v.filter((G)=>!_.has(G.id)).sort((G,K)=>G.position.y-K.position.y||G.position.x-K.position.x);for(let G of J){let K=`unit:${G.id}`;U.push({id:K,memberIds:[G.id],origin:{...G.position},size:{...G.size},sortKey:{x:G.position.x,y:G.position.y}}),_.set(G.id,K)}return{units:U,nodesById:g,nodeToUnit:_}}function VP($,v,g){let _=new Map,U=new Map,z=new Map,b=new Map;for(let J of $)_.set(J.id,new Set),U.set(J.id,new Set),z.set(J.id,0),b.set(J.id,0);for(let J of g){let G=v.get(J.from),K=v.get(J.to);if(!G||!K||G===K)continue;if(!_.get(G).has(K))_.get(G).add(K),b.set(G,(b.get(G)??0)+1),z.set(K,(z.get(K)??0)+1);U.get(G).add(K),U.get(K).add(G)}return{outgoing:_,undirected:U,indegree:z,outdegree:b}}function CP($,v){let g=new Map($.map((z)=>[z.id,z])),_=new Set,U=[];for(let z of $){if(_.has(z.id))continue;let b=[z.id],J=[];_.add(z.id);while(b.length>0){let K=b.pop();J.push(K);for(let W of v.get(K)??[]){if(_.has(W))continue;_.add(W),b.push(W)}}let G=J.map((K)=>g.get(K)).filter((K)=>K!==void 0).sort((K,W)=>K.sortKey.y-W.sortKey.y||K.sortKey.x-W.sortKey.x);U.push(G)}return U.sort((z,b)=>z[0].sortKey.y-b[0].sortKey.y||z[0].sortKey.x-b[0].sortKey.x)}function fP($){let v=new Map,g=0,_=0,U=0,z=0,b=Math.max(900,Math.ceil(Math.sqrt($.reduce((J,G)=>J+G.size.width*G.size.height,0))));for(let J of $){if(g>0&&g+J.size.width>b)g=0,_+=U+72,U=0;v.set(J.id,{x:g,y:_}),g+=J.size.width+96,U=Math.max(U,J.size.height),z=Math.max(z,g-96)}return{positions:v,size:{width:Math.max(0,z),height:_+U},sortKey:$[0].sortKey}}function mP($,v,g,_,U){if($.length===1)return{positions:new Map([[$[0].id,{x:0,y:0}]]),size:{...$[0].size},sortKey:$[0].sortKey};let z=new Set($.map((Y)=>Y.id)),b=$.filter((Y)=>(_.get(Y.id)??0)===0&&(U.get(Y.id)??0)>0).sort((Y,X)=>Y.sortKey.x-X.sortKey.x||Y.sortKey.y-X.sortKey.y),J=b.length>0?b:[$.slice().sort((Y,X)=>Y.sortKey.x-X.sortKey.x||Y.sortKey.y-X.sortKey.y)[0]],G=new Map,K=J.map((Y)=>Y.id);for(let Y of J)G.set(Y.id,0);while(K.length>0){let Y=K.shift(),X=G.get(Y)??0;for(let Q of g.get(Y)??[]){if(!z.has(Q)||G.has(Q))continue;G.set(Q,X+1),K.push(Q)}}let W=0;for(let Y of $){if(G.has(Y.id))continue;G.set(Y.id,W),W+=1}let B=new Map;for(let Y of $){let X=G.get(Y.id)??0;if(!B.has(X))B.set(X,[]);B.get(X).push(Y)}let k=Array.from(B.keys()).sort((Y,X)=>Y-X);for(let Y of k)B.get(Y).sort((X,Q)=>X.sortKey.y-Q.sortKey.y||X.sortKey.x-Q.sortKey.x);let P=new Map,A=new Map,H=0;for(let Y of k){let X=B.get(Y),Q=X.reduce((E,M,n)=>E+M.size.height+(n>0?72:0),0),u=Math.max(...X.map((E)=>E.size.width));P.set(Y,Q),A.set(Y,u),H=Math.max(H,Q)}let I=new Map,F=0;for(let Y of k){let X=B.get(Y),Q=P.get(Y)??0,u=A.get(Y)??0,E=Math.max(0,(H-Q)/2);for(let M of X)I.set(M.id,{x:F,y:E}),E+=M.size.height+72;F+=u+96}return{positions:I,size:{width:Math.max(0,F-96),height:H},sortKey:$[0].sortKey}}function EP($){let v=new Map,g=40,_=80,U=0;for(let z of $){if(g>40&&g+z.size.width>3200)g=40,_+=U+180,U=0;for(let[b,J]of z.positions.entries())v.set(b,{x:g+J.x,y:_+J.y});g+=z.size.width+220,U=Math.max(U,z.size.height)}return v}function _2($,v,g){let{units:_,nodesById:U,nodeToUnit:z}=jP($),b=new Map,J=new Map;if(_.length===0)return{nodePositions:b,groupBounds:J};let{outgoing:G,undirected:K,indegree:W,outdegree:B}=VP(_,z,v),k=CP(_,K).map((A)=>g==="graph"?mP(A,G,K,W,B):fP(A)),P=EP(k);for(let A of _){let H=P.get(A.id);if(!H)continue;let I=H.x-A.origin.x,F=H.y-A.origin.y;if(A.groupId){let Q=[];for(let E of A.memberIds){let M=U.get(E);if(!M)continue;let n={x:M.position.x+I,y:M.position.y+F};b.set(E,n),Q.push({position:n,size:M.size})}let u=BK(Q);if(u)J.set(A.groupId,u);continue}let Y=A.memberIds[0],X=U.get(Y);if(!X)continue;b.set(Y,{x:X.position.x+I,y:X.position.y+F})}return{nodePositions:b,groupBounds:J}}function z2($,v){console.error(`[intent-bridge] ${$} failed`,v)}async function m$($,v,g,_){try{return await(await fetch(v,_)).json()}catch(U){return z2($,U),g}}async function cP($,v,g){try{return{ok:(await fetch(v,g)).ok}}catch(_){return z2($,_),{ok:!1}}}async function PK($,v,g){try{await fetch(v,g)}catch(_){z2($,_)}}async function kK($,v={}){return m$("sendIntent","/api/workbench/intent",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:$,payload:v})})}async function b2($){let g=`Veto: do not ${$.label?.trim()||`${$.kind} intent`}${$.reason?` — ${$.reason}`:""}.`;if((await m$("vetoGhostIntent",`/api/canvas/ax/intent/${encodeURIComponent($.id)}`,{ok:!1,cleared:!1},{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({vetoed:!0})})).cleared!==!0)return!1;return await PK("vetoGhostSteering","/api/canvas/ax/steer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:g,source:"browser"})}),!0}async function g6($){return(await m$("renderMarkdown","/api/render",{},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({markdown:$})})).html??""}async function qU($){return m$("fetchFile",`/api/file?path=${encodeURIComponent($)}`,{content:""})}async function IK($,v){return m$("saveFile","/api/file/save",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:$,content:v})})}async function b_($){return cP("openWorkbenchFile","/api/workbench/open",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:$})})}async function J_($){return m$("saveCanvasTheme","/api/canvas/theme",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:$})})}async function HK(){return[]}async function XU($,v,g,_,U){if(!$.trim())return{ok:!1,error:"Prompt text is required"};return m$("submitCanvasPrompt","/api/canvas/prompt",{ok:!1,error:"Network error"},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:$,...v?{position:v}:{},...g?{parentNodeId:g}:{},..._&&_.length>0?{contextNodeIds:_}:{},...U?{threadNodeId:U}:{}})})}async function LK($,v){return XU(v,void 0,void 0,void 0,$)}async function FK($,v={}){await PK("pushCanvasUpdate","/api/canvas/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({updates:$,...v.recordHistory===!1?{recordHistory:!1}:{}})})}async function P4($,v,g,_){return m$("createEdgeFromClient","/api/canvas/edge",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:$,to:v,type:g,label:_})})}async function lv($){return m$("createNodeFromClient","/api/canvas/node",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify($)})}async function wv($,v){return m$("updateNodeFromClient",`/api/canvas/node/${encodeURIComponent($)}`,{ok:!1},{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)})}async function O_($,v){return m$("refreshWebpageNodeFromClient",`/api/canvas/node/${encodeURIComponent($)}/refresh`,{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(v?{url:v}:{})})}async function G_($){return m$("removeNodeFromClient",`/api/canvas/node/${encodeURIComponent($)}`,{ok:!1},{method:"DELETE"})}async function YK(){return m$("fetchAxSurfaceState","/api/canvas/ax/surface-snapshot",null)}async function AK($,v){return m$("openNodeInSystemBrowserRequest","/api/canvas/open-external",{ok:!1,opened:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({nodeId:$,url:v})})}async function H6($){return m$("submitAxInteractionFromClient","/api/canvas/ax/interaction",{ok:!1,code:"request-failed",error:"Request failed"},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sourceSurface:"native-node",...$,source:"browser"})})}async function qK($,v={}){return m$("updateViewportFromClient","/api/canvas/viewport",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...$,...v.recordHistory===!1?{recordHistory:!1}:{}})})}async function K_($){return m$("createGroupFromClient","/api/canvas/group",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify($)})}async function XK($){return m$("ungroupFromClient","/api/canvas/group/ungroup",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({groupId:$})})}async function wK(){return m$("listSnapshots","/api/canvas/snapshots?all=true",[])}async function ZK($){return m$("saveSnapshot","/api/canvas/snapshots",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:$})})}async function SK($){return m$("restoreSnapshot",`/api/canvas/snapshots/${$}`,{ok:!1},{method:"POST"})}async function MK($){return m$("deleteSnapshot",`/api/canvas/snapshots/${$}`,{ok:!1},{method:"DELETE"})}function wU($,v){console.error(`[canvas-store] ${$} failed`,v)}var I$=B$({x:0,y:0,scale:1}),T=B$(new Map),c$=B$(new Map),I4=B$(new Map),y$=B$(null),h6=B$("connecting"),H4=B$(""),B_=B$(!1),T$=B$("dark"),x6=B$(!1),F6=B$(null),E$=B$(null),hv=B$(null),Zv=null,k4=void 0,QK=100,iP=2500,P_=B$(null),rv=B$(null),Y6=B$(null),h$=B$(new Set),D$=B$(new Set);function uK($,v){if(!$)return new Set;let g=new Set;for(let _ of v.values()){if(_.from===$)g.add(_.to);if(_.to===$)g.add(_.from)}return g}var RK=l6(()=>uK(y$.value,c$.value));function NK($,v){let g=new Set;for(let _ of $)if(v.has(_))g.add(_);return g}function rK($,v){if($.size!==v.size)return!1;for(let g of $)if(!v.has(g))return!1;return!0}function yK($){let v=new Set(h$.value);if(v.has($))v.delete($);else v.add($);h$.value=v}function DK($){h$.value=new Set($)}function jv(){if(h$.value.size===0)return;h$.value=new Set}function L4($){let v=new Set(D$.value);if(v.has($))v.delete($);else v.add($);D$.value=v,d$(),k_(v)}function TK($){let v=new Set(D$.value);for(let g of $)v.add(g);D$.value=v,d$(),k_(v)}function jK(){if(D$.value.size===0)return;D$.value=new Set,d$(),k_(new Set)}function VK($){D$.value=new Set($)}function CK(){let $=D$.value;if($.size===0)return[];return Array.from($).map((v)=>T.value.get(v)).filter((v)=>v!==void 0)}function k_($){fetch("/api/canvas/context-pins",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({nodeIds:Array.from($)})}).catch((v)=>{wU("syncContextPinsToServer",v)})}var W_=1;function _6($){U6(()=>{let v=new Map(T.value);if($.zIndex>=W_)W_=$.zIndex+1;v.set($.id,$),T.value=v,y$.value=$.id})}function Pv($,v){O2($,v)}function O2($,v,g={}){let _=T.value.get($);if(!_)return;let U=new Map(T.value);if(_.type==="group"&&v.position&&g.skipGroupChildTranslation!==!0){let b=v.position.x-_.position.x,J=v.position.y-_.position.y;if(b!==0||J!==0){let G=Array.isArray(_.data.children)?_.data.children.filter((K)=>typeof K==="string"):[];for(let K of G){let W=U.get(K);if(!W||W.type==="group")continue;U.set(K,{...W,position:{x:W.position.x+b,y:W.position.y+J}})}}}U.set($,{..._,...v}),T.value=U;let z=U.get($)?.data.appCheckpoint?.updatedAt;if(hv.value===$&&z!==void 0&&z!==k4)J2($)}function U$($,v){let g=T.value.get($);if(!g)return;Pv($,{data:{...g.data,...v}})}function F4($){lP($);let v=new Map(T.value);if(v.delete($),T.value=v,y$.value===$)y$.value=null;if(E$.value===$)E$.value=null;if(h$.value.has($)){let g=new Set(h$.value);g.delete($),h$.value=g}if(D$.value.has($)){let g=new Set(D$.value);g.delete($),D$.value=g,k_(g)}}function I_($){let v=new Map(c$.value);v.set($.id,$),c$.value=v}function fK($){let v=new Map(c$.value);v.delete($),c$.value=v}function lP($){let v=!1,g=new Map(c$.value);for(let[_,U]of g)if(U.from===$||U.to===$)g.delete(_),v=!0;if(v)c$.value=g}function hP($){let v=new Map(I4.value);if(!v.delete($))return;I4.value=v}async function G2($){try{return{ok:(await fetch("/api/canvas/annotation",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify($)})).ok}}catch(v){return wU("createAnnotationFromClient",v),{ok:!1}}}async function mK($){try{let v=await fetch(`/api/canvas/annotation/${encodeURIComponent($)}`,{method:"DELETE"});if(v.ok)hP($);return{ok:v.ok}}catch(v){return wU("removeAnnotationFromClient",v),{ok:!1}}}function Y4($,v){if(!T.value.get($))return;Pv($,{size:v})}function A6($){if(!T.value.get($))return;Pv($,{zIndex:W_++}),y$.value=$}function q6($){let v=T.value.get($);if(!v)return;Pv($,{collapsed:!v.collapsed})}function EK(){for(let $ of T.value.values())if($.type==="context"&&$.dockPosition==="right"&&!$.collapsed)Pv($.id,{collapsed:!0})}var H_=l6(()=>{for(let $ of T.value.values())if($.type==="context"&&$.dockPosition==="right"&&!$.collapsed)return!0;return!1});function K2($,v){if(!T.value.get($))return;Pv($,{dockPosition:v}),d$()}function A4($){let v=T.value.get($);if(!v)return;let g=I$.value,_=(window.innerWidth/2-g.x)/g.scale,U=(window.innerHeight/2-g.y)/g.scale;Pv($,{dockPosition:null,position:{x:_-v.size.width/2,y:U-v.size.height/2}}),d$()}function cK($){I$.value={...I$.value,...$}}function iK($){I$.value=$}function lK($){hK($)}function hK($,v={}){I$.value=$,d$(v),qK($,v)}function xK($,v={}){let g=new Map,_=1;for(let B of $.nodes)if(g.set(B.id,B),B.zIndex>=_)_=B.zIndex+1;let U=$.edges.filter((B)=>g.has(B.from)&&g.has(B.to)),z=new Map;for(let B of U)z.set(B.id,B);let b=new Map;for(let B of $.annotations??[])b.set(B.id,B);let J=y$.value!==null&&g.has(y$.value)?y$.value:null,G=E$.value!==null&&g.has(E$.value)?E$.value:null,K=NK(h$.value,g),W=NK(D$.value,g);U6(()=>{if(v.applyViewport===!0&&$.viewport)I$.value=$.viewport;if(W_=_,T.value=g,c$.value=z,I4.value=b,y$.value=J,E$.value=G,!rK(h$.value,K))h$.value=K;if(!rK(D$.value,W))D$.value=W})}var L6=null;function xP($){return 1-(1-$)**3}function xv($,v=300,g={}){if(L6!==null)cancelAnimationFrame(L6);let _={...I$.value},U=performance.now();function z(b){let J=b-U,G=Math.min(1,J/v),K=xP(G);if(I$.value={x:_.x+($.x-_.x)*K,y:_.y+($.y-_.y)*K,scale:_.scale+($.scale-_.scale)*K},G<1)L6=requestAnimationFrame(z);else L6=null,hK($,g)}L6=requestAnimationFrame(z)}function q4(){if(L6!==null)cancelAnimationFrame(L6),L6=null}var pK="pmx-canvas-layout";function d$($={}){try{let v=Array.from(T.value.values()),g=v.map((U)=>({id:U.id,position:U.position,size:U.size,collapsed:U.collapsed,dockPosition:U.dockPosition})),_={viewport:I$.value,nodes:v.map((U)=>({id:U.id,type:U.type,position:U.position,size:U.size,collapsed:U.collapsed,pinned:U.pinned,dockPosition:U.dockPosition})),edges:Array.from(c$.value.values()).map((U)=>({id:U.id,from:U.from,to:U.to,type:U.type,label:U.label,style:U.style,animated:U.animated})),contextPinnedNodeIds:Array.from(D$.value)};localStorage.setItem(pK,JSON.stringify(_)),FK(g,$)}catch(v){wU("persistLayout",v)}}function oK(){try{let $=localStorage.getItem(pK);if(!$)return null;let v=JSON.parse($),g=Array.isArray(v.nodes)?v.nodes:[];if(g.length===0)return null;let _=new Map;for(let U of g){if(typeof U.id!=="string"||U.id.length===0)continue;_.set(U.id,{...U.position?{position:U.position}:{},...U.size?{size:U.size}:{},...U.collapsed!==void 0?{collapsed:U.collapsed}:{},...U.pinned!==void 0?{pinned:U.pinned}:{},...U.dockPosition!==void 0?{dockPosition:U.dockPosition}:{}})}return _.size>0?_:null}catch($){return wU("restoreLayout",$),null}}function L_($,v){let g=Array.from(T.value.values());if(g.length===0)return;let{POSITIVE_INFINITY:_,POSITIVE_INFINITY:U,NEGATIVE_INFINITY:z,NEGATIVE_INFINITY:b}=Number;for(let P of g)_=Math.min(_,P.position.x),U=Math.min(U,P.position.y),z=Math.max(z,P.position.x+P.size.width),b=Math.max(b,P.position.y+P.size.height);let J=60,G=z-_+J*2,K=b-U+J*2,W=Math.min(1,Math.min($/G,v/K)),B=(_+z)/2,k=(U+b)/2;xv({x:$/2-B*W,y:v/2-k*W,scale:W})}function Fv($,v={}){let g=T.value.get($);if(!g)return;let _=I$.value,U=g.position.x+g.size.width/2,z=g.position.y+g.size.height/2;xv({x:window.innerWidth/2-U*_.scale,y:window.innerHeight/2-z*_.scale,scale:_.scale},300,v),A6($)}function nK($=1){let v=Array.from(T.value.keys());if(v.length===0)return;let _=((y$.value?v.indexOf(y$.value):-1)+$+v.length)%v.length,U=v[_];A6(U),Fv(U)}function tK($){let v=y$.value;if(!v)return;let g=T.value.get(v);if(!g)return;let _=uK(v,c$.value);if(_.size===0)return;let U=g.position.x+g.size.width/2,z=g.position.y+g.size.height/2,b=null,J=-1/0;for(let G of _){let K=T.value.get(G);if(!K)continue;let W=K.position.x+K.size.width/2,B=K.position.y+K.size.height/2,k=W-U,P=B-z,A=Math.sqrt(k*k+P*P);if(A<1)continue;let H;switch($){case"up":H=-P;break;case"down":H=P;break;case"left":H=-k;break;case"right":H=k;break}if(H<=0)continue;let I=H/A-A*0.001;if(I>J)J=I,b=G}if(b)Fv(b)}function z6($){if(!T.value.get($))return;if(Zv!==null)clearTimeout(Zv),Zv=null;hv.value=null,k4=void 0,A6($),E$.value=$}function J2($){if(Zv!==null)clearTimeout(Zv),Zv=null;if(E$.value===$)E$.value=null;if(hv.value===$)hv.value=null;k4=void 0}function p6(){let $=E$.value,v=$?T.value.get($):void 0;if($&&v&&WK(v)){let g=$,_=Date.now();if(hv.value=g,k4=v.data.appCheckpoint?.updatedAt,Zv!==null)clearTimeout(Zv);let U=()=>{let b=T.value.get(g)?.data.appCheckpoint?.updatedAt;if(b!==void 0&&b!==k4){J2(g);return}if(Date.now()-_>=iP){J2(g);return}Zv=setTimeout(U,QK)};Zv=setTimeout(U,QK);return}if(Zv!==null)clearTimeout(Zv),Zv=null;hv.value=null,k4=void 0,E$.value=null}function F_(){let $=_2(Array.from(T.value.values()),Array.from(c$.value.values()),"grid");if($.nodePositions.size===0&&$.groupBounds.size===0)return;U6(()=>{for(let[v,g]of $.nodePositions.entries())Pv(v,{position:g});for(let[v,g]of $.groupBounds.entries())O2(v,{position:{x:g.x,y:g.y},size:{width:g.width,height:g.height}},{skipGroupChildTranslation:!0})}),d$()}function Y_(){let $=_2(Array.from(T.value.values()),Array.from(c$.value.values()),"graph");if($.nodePositions.size===0&&$.groupBounds.size===0)return;U6(()=>{for(let[v,g]of $.nodePositions.entries())Pv(v,{position:g});for(let[v,g]of $.groupBounds.entries())O2(v,{position:{x:g.x,y:g.y},size:{width:g.width,height:g.height}},{skipGroupChildTranslation:!0})}),d$()}var pP=0;function O($,v,g,_,U,z){v||(v={});var b,J,G=v;if("ref"in G)for(J in G={},v)J=="ref"?b=v[J]:G[J]=v[J];var K={type:$,props:G,key:g,ref:b,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--pP,__i:-1,__u:0,__source:U,__self:z};if(typeof $=="function"&&(b=$.defaultProps))for(J in b)G[J]===void 0&&(G[J]=b[J]);return k$.vnode&&k$.vnode(K),K}function oP($){return new Date($).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function nP(){EK(),v_()}function dK(){let $=AU.value;if($.length===0)return null;let v=I6.value,g=K4.value;if(!v&&H_.value)return null;if(!v)return O("button",{type:"button",class:"attention-history-tab",onClick:nP,"aria-label":g>0?`Recent updates — ${g} new`:"Recent updates",title:g>0?`${g} new updates since last viewed`:"Recent updates",children:[O("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[O("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),O("circle",{cx:"4.5",cy:"8",r:"1.1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),O("line",{x1:"6.5",y1:"6.5",x2:"12.5",y2:"6.5"},void 0,!1,void 0,this),O("line",{x1:"6.5",y1:"8",x2:"11",y2:"8"},void 0,!1,void 0,this),O("line",{x1:"6.5",y1:"9.5",x2:"12",y2:"9.5"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("span",{class:"attention-history-tab-label",children:"Updates"},void 0,!1,void 0,this),g>0&&O("span",{class:"attention-history-tab-badge","aria-hidden":"true",children:g>9?"9+":g},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return O("aside",{class:"attention-history","aria-label":"Recent semantic changes",children:[O("div",{class:"attention-history-header",children:[O("div",{class:"attention-history-header-text",children:[O("span",{class:"attention-history-title",children:"Recent Updates"},void 0,!1,void 0,this),O("span",{class:"attention-history-subtitle",children:"Focus and meaning shifts"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("button",{type:"button",class:"attention-history-close",onClick:U_,"aria-label":"Collapse changes panel",title:"Collapse",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"attention-history-list",children:$.map((_)=>O("article",{class:`attention-history-entry attention-tone-${_.tone}`,children:[O("div",{class:"attention-history-meta",children:[O("span",{class:"attention-history-kind",children:_.title},void 0,!1,void 0,this),O("time",{class:"attention-history-time",dateTime:new Date(_.createdAt).toISOString(),children:oP(_.createdAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("p",{class:"attention-history-detail",children:_.detail},void 0,!1,void 0,this)]},_.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function aK(){let $=sg.value;if(!$)return null;return O("button",{type:"button",class:`attention-toast attention-tone-${$.tone}`,onClick:v_,"aria-label":`${$.title} — open change history`,title:$.detail||$.title,children:[O("span",{class:"attention-toast-dot","aria-hidden":"true"},void 0,!1,void 0,this),O("span",{class:"attention-toast-title",children:$.title},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var tP=700,dP=1600;function aP($){return $.replace(/\r\n?/g,`
|
|
22
|
+
`}}};w6.tableCaption={filter:["caption"],replacement:()=>""};w6.tableColgroup={filter:["colgroup","col"],replacement:()=>""};w6.tableSection={filter:["thead","tbody","tfoot"],replacement:function($){return $}};function mk($){var v=$.parentNode;return v.nodeName==="THEAD"||v.firstChild===$&&(v.nodeName==="TABLE"||Ek(v))&&Vk.call($.childNodes,function(g){return g.nodeName==="TH"})}function Ek($){var v=$.previousSibling;return $.nodeName==="TBODY"&&(!v||v.nodeName==="THEAD"&&/^\s*$/i.test(v.textContent))}function q3($,v=null,g=null){if(g===null)g=jk.call(v.parentNode.childNodes,v);var _=" ";if(g===0)_="| ";let U=$.trim().replace(/\n\r/g,"<br>").replace(/\n/g,"<br>");U=U.replace(/\|+/g,"\\|");while(U.length<3)U+=" ";if(v)U=lk(U,v," ");return _+U+" |"}function X3($){if(!$.childNodes)return!1;for(let v=0;v<$.childNodes.length;v++){let g=$.childNodes[v];if(g.nodeName==="TABLE")return!0;if(X3(g))return!0}return!1}var X2=($,v)=>{if(!$.childNodes)return!1;for(let g=0;g<$.childNodes.length;g++){let _=$.childNodes[g];if(v==="code"&&q2&&q2(_))return!0;if(v.includes(_.nodeName))return!0;if(X2(_,v))return!0}return!1},w3=($,v)=>{let g=["UL","OL","H1","H2","H3","H4","H5","H6","HR","BLOCKQUOTE"];if(v.preserveNestedTables)g.push("TABLE");return X2($,"code")||X2($,g)};function w2($){let v=I3.get($);if(v!==void 0)return v;let g=ck($);return I3.set($,g),g}function ck($){if(!$)return!0;if(!$.rows)return!0;if($.rows.length===1&&$.rows[0].childNodes.length<=1)return!0;if(X3($))return!0;return!1}function ik($){let v=$.parentNode;while(v.nodeName!=="DIV")if(v=v.parentNode,!v)return null;return v}function Z3($){let v=$.parentNode;while(v.nodeName!=="TABLE")if(v=v.parentNode,!v)return null;return v}function lk($,v,g){let _=v.getAttribute("colspan")||1;for(let U=1;U<_;U++)$+=" | "+g.repeat(3);return $}function S3($){let v=0;for(let g=0;g<$.rows.length;g++){let U=$.rows[g].childNodes.length;if(U>v)v=U}return v}function M3($){q2=$.isCodeBlock,F3=$.options,$.keep(function(g){if(g.nodeName==="TABLE"&&w3(g,$.options))return!0;return!1});for(var v in w6)$.addRule(v,w6[v])}function Q3($){$.addRule("taskListItems",{filter:function(v){let g=v.parentNode,_=g.parentNode;return v.type==="checkbox"&&(g.nodeName==="LI"||g.nodeName==="LABEL"&&_&&_.nodeName==="LI")},replacement:function(v,g){return(g.checked?"[x]":"[ ]")+" "}})}function hk($){$.use([H3,L3,M3,Q3])}N3.gfm=hk;N3.highlightedCodeBlock=H3;N3.strikethrough=L3;N3.tables=M3;N3.taskListItems=Q3});var cg,k$,uG,x0,P6,MG,RG,yG,DG,p0,i0,l0,PP,fg={},mg=[],kP=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,ig=Array.isArray;function $6($,v){for(var g in v)$[g]=v[g];return $}function o0($){$&&$.parentNode&&$.parentNode.removeChild($)}function IP($,v,g){var _,U,z,b={};for(z in v)z=="key"?_=v[z]:z=="ref"?U=v[z]:b[z]=v[z];if(arguments.length>2&&(b.children=arguments.length>3?cg.call(arguments,2):g),typeof $=="function"&&$.defaultProps!=null)for(z in $.defaultProps)b[z]===void 0&&(b[z]=$.defaultProps[z]);return Cg($,b,_,U,null)}function Cg($,v,g,_,U){var z={type:$,props:v,key:g,ref:_,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:U==null?++uG:U,__i:-1,__u:0};return U==null&&k$.vnode!=null&&k$.vnode(z),z}function e$($){return $.children}function z4($,v){this.props=$,this.context=v}function b4($,v){if(v==null)return $.__?b4($.__,$.__i+1):null;for(var g;v<$.__k.length;v++)if((g=$.__k[v])!=null&&g.__e!=null)return g.__e;return typeof $.type=="function"?b4($):null}function HP($){if($.__P&&$.__d){var v=$.__v,g=v.__e,_=[],U=[],z=$6({},v);z.__v=v.__v+1,k$.vnode&&k$.vnode(z),n0($.__P,z,v,$.__n,$.__P.namespaceURI,32&v.__u?[g]:null,_,g==null?b4(v):g,!!(32&v.__u),U),z.__v=v.__v,z.__.__k[z.__i]=z,CG(_,z,U),v.__e=v.__=null,z.__e!=g&&TG(z)}}function TG($){if(($=$.__)!=null&&$.__c!=null)return $.__e=$.__c.base=null,$.__k.some(function(v){if(v!=null&&v.__e!=null)return $.__e=$.__c.base=v.__e}),TG($)}function QG($){(!$.__d&&($.__d=!0)&&P6.push($)&&!Eg.__r++||MG!=k$.debounceRendering)&&((MG=k$.debounceRendering)||RG)(Eg)}function Eg(){try{for(var $,v=1;P6.length;)P6.length>v&&P6.sort(yG),$=P6.shift(),v=P6.length,HP($)}finally{P6.length=Eg.__r=0}}function jG($,v,g,_,U,z,b,J,G,K,W){var B,k,P,A,H,I,F,Y=_&&_.__k||mg,X=v.length;for(G=LP(g,v,Y,G,X),B=0;B<X;B++)(P=g.__k[B])!=null&&(k=P.__i!=-1&&Y[P.__i]||fg,P.__i=B,I=n0($,P,k,U,z,b,J,G,K,W),A=P.__e,P.ref&&k.ref!=P.ref&&(k.ref&&t0(k.ref,null,P),W.push(P.ref,P.__c||A,P)),H==null&&A!=null&&(H=A),(F=!!(4&P.__u))||k.__k===P.__k?G=VG(P,G,$,F):typeof P.type=="function"&&I!==void 0?G=I:A&&(G=A.nextSibling),P.__u&=-7);return g.__e=H,G}function LP($,v,g,_,U){var z,b,J,G,K,W=g.length,B=W,k=0;for($.__k=Array(U),z=0;z<U;z++)(b=v[z])!=null&&typeof b!="boolean"&&typeof b!="function"?(typeof b=="string"||typeof b=="number"||typeof b=="bigint"||b.constructor==String?b=$.__k[z]=Cg(null,b,null,null,null):ig(b)?b=$.__k[z]=Cg(e$,{children:b},null,null,null):b.constructor===void 0&&b.__b>0?b=$.__k[z]=Cg(b.type,b.props,b.key,b.ref?b.ref:null,b.__v):$.__k[z]=b,G=z+k,b.__=$,b.__b=$.__b+1,J=null,(K=b.__i=FP(b,g,G,B))!=-1&&(B--,(J=g[K])&&(J.__u|=2)),J==null||J.__v==null?(K==-1&&(U>W?k--:U<W&&k++),typeof b.type!="function"&&(b.__u|=4)):K!=G&&(K==G-1?k--:K==G+1?k++:(K>G?k--:k++,b.__u|=4))):$.__k[z]=null;if(B)for(z=0;z<W;z++)(J=g[z])!=null&&(2&J.__u)==0&&(J.__e==_&&(_=b4(J)),mG(J,J));return _}function VG($,v,g,_){var U,z;if(typeof $.type=="function"){for(U=$.__k,z=0;U&&z<U.length;z++)U[z]&&(U[z].__=$,v=VG(U[z],v,g,_));return v}$.__e!=v&&(_&&(v&&$.type&&!v.parentNode&&(v=b4($)),g.insertBefore($.__e,v||null)),v=$.__e);do v=v&&v.nextSibling;while(v!=null&&v.nodeType==8);return v}function FP($,v,g,_){var U,z,b,J=$.key,G=$.type,K=v[g],W=K!=null&&(2&K.__u)==0;if(K===null&&J==null||W&&J==K.key&&G==K.type)return g;if(_>(W?1:0)){for(U=g-1,z=g+1;U>=0||z<v.length;)if((K=v[b=U>=0?U--:z++])!=null&&(2&K.__u)==0&&J==K.key&&G==K.type)return b}return-1}function NG($,v,g){v[0]=="-"?$.setProperty(v,g==null?"":g):$[v]=g==null?"":typeof g!="number"||kP.test(v)?g:g+"px"}function Vg($,v,g,_,U){var z,b;$:if(v=="style")if(typeof g=="string")$.style.cssText=g;else{if(typeof _=="string"&&($.style.cssText=_=""),_)for(v in _)g&&v in g||NG($.style,v,"");if(g)for(v in g)_&&g[v]==_[v]||NG($.style,v,g[v])}else if(v[0]=="o"&&v[1]=="n")z=v!=(v=v.replace(DG,"$1")),b=v.toLowerCase(),v=b in $||v=="onFocusOut"||v=="onFocusIn"?b.slice(2):v.slice(2),$.l||($.l={}),$.l[v+z]=g,g?_?g.u=_.u:(g.u=p0,$.addEventListener(v,z?l0:i0,z)):$.removeEventListener(v,z?l0:i0,z);else{if(U=="http://www.w3.org/2000/svg")v=v.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(v!="width"&&v!="height"&&v!="href"&&v!="list"&&v!="form"&&v!="tabIndex"&&v!="download"&&v!="rowSpan"&&v!="colSpan"&&v!="role"&&v!="popover"&&v in $)try{$[v]=g==null?"":g;break $}catch(J){}typeof g=="function"||(g==null||g===!1&&v[4]!="-"?$.removeAttribute(v):$.setAttribute(v,v=="popover"&&g==1?"":g))}}function rG($){return function(v){if(this.l){var g=this.l[v.type+$];if(v.t==null)v.t=p0++;else if(v.t<g.u)return;return g(k$.event?k$.event(v):v)}}}function n0($,v,g,_,U,z,b,J,G,K){var W,B,k,P,A,H,I,F,Y,X,Q,u,E,M,n,t=v.type;if(v.constructor!==void 0)return null;128&g.__u&&(G=!!(32&g.__u),z=[J=v.__e=g.__e]),(W=k$.__b)&&W(v);$:if(typeof t=="function")try{if(F=v.props,Y=t.prototype&&t.prototype.render,X=(W=t.contextType)&&_[W.__c],Q=W?X?X.props.value:W.__:_,g.__c?I=(B=v.__c=g.__c).__=B.__E:(Y?v.__c=B=new t(F,Q):(v.__c=B=new z4(F,Q),B.constructor=t,B.render=AP),X&&X.sub(B),B.state||(B.state={}),B.__n=_,k=B.__d=!0,B.__h=[],B._sb=[]),Y&&B.__s==null&&(B.__s=B.state),Y&&t.getDerivedStateFromProps!=null&&(B.__s==B.state&&(B.__s=$6({},B.__s)),$6(B.__s,t.getDerivedStateFromProps(F,B.__s))),P=B.props,A=B.state,B.__v=v,k)Y&&t.getDerivedStateFromProps==null&&B.componentWillMount!=null&&B.componentWillMount(),Y&&B.componentDidMount!=null&&B.__h.push(B.componentDidMount);else{if(Y&&t.getDerivedStateFromProps==null&&F!==P&&B.componentWillReceiveProps!=null&&B.componentWillReceiveProps(F,Q),v.__v==g.__v||!B.__e&&B.shouldComponentUpdate!=null&&B.shouldComponentUpdate(F,B.__s,Q)===!1){v.__v!=g.__v&&(B.props=F,B.state=B.__s,B.__d=!1),v.__e=g.__e,v.__k=g.__k,v.__k.some(function(r){r&&(r.__=v)}),mg.push.apply(B.__h,B._sb),B._sb=[],B.__h.length&&b.push(B);break $}B.componentWillUpdate!=null&&B.componentWillUpdate(F,B.__s,Q),Y&&B.componentDidUpdate!=null&&B.__h.push(function(){B.componentDidUpdate(P,A,H)})}if(B.context=Q,B.props=F,B.__P=$,B.__e=!1,u=k$.__r,E=0,Y)B.state=B.__s,B.__d=!1,u&&u(v),W=B.render(B.props,B.state,B.context),mg.push.apply(B.__h,B._sb),B._sb=[];else do B.__d=!1,u&&u(v),W=B.render(B.props,B.state,B.context),B.state=B.__s;while(B.__d&&++E<25);B.state=B.__s,B.getChildContext!=null&&(_=$6($6({},_),B.getChildContext())),Y&&!k&&B.getSnapshotBeforeUpdate!=null&&(H=B.getSnapshotBeforeUpdate(P,A)),M=W!=null&&W.type===e$&&W.key==null?fG(W.props.children):W,J=jG($,ig(M)?M:[M],v,g,_,U,z,b,J,G,K),B.base=v.__e,v.__u&=-161,B.__h.length&&b.push(B),I&&(B.__E=B.__=null)}catch(r){if(v.__v=null,G||z!=null)if(r.then){for(v.__u|=G?160:128;J&&J.nodeType==8&&J.nextSibling;)J=J.nextSibling;z[z.indexOf(J)]=null,v.__e=J}else{for(n=z.length;n--;)o0(z[n]);h0(v)}else v.__e=g.__e,v.__k=g.__k,r.then||h0(v);k$.__e(r,v,g)}else z==null&&v.__v==g.__v?(v.__k=g.__k,v.__e=g.__e):J=v.__e=YP(g.__e,v,g,_,U,z,b,G,K);return(W=k$.diffed)&&W(v),128&v.__u?void 0:J}function h0($){$&&($.__c&&($.__c.__e=!0),$.__k&&$.__k.some(h0))}function CG($,v,g){for(var _=0;_<g.length;_++)t0(g[_],g[++_],g[++_]);k$.__c&&k$.__c(v,$),$.some(function(U){try{$=U.__h,U.__h=[],$.some(function(z){z.call(U)})}catch(z){k$.__e(z,U.__v)}})}function fG($){return typeof $!="object"||$==null||$.__b>0?$:ig($)?$.map(fG):$6({},$)}function YP($,v,g,_,U,z,b,J,G){var K,W,B,k,P,A,H,I=g.props||fg,F=v.props,Y=v.type;if(Y=="svg"?U="http://www.w3.org/2000/svg":Y=="math"?U="http://www.w3.org/1998/Math/MathML":U||(U="http://www.w3.org/1999/xhtml"),z!=null){for(K=0;K<z.length;K++)if((P=z[K])&&"setAttribute"in P==!!Y&&(Y?P.localName==Y:P.nodeType==3)){$=P,z[K]=null;break}}if($==null){if(Y==null)return document.createTextNode(F);$=document.createElementNS(U,Y,F.is&&F),J&&(k$.__m&&k$.__m(v,z),J=!1),z=null}if(Y==null)I===F||J&&$.data==F||($.data=F);else{if(z=z&&cg.call($.childNodes),!J&&z!=null)for(I={},K=0;K<$.attributes.length;K++)I[(P=$.attributes[K]).name]=P.value;for(K in I)P=I[K],K=="dangerouslySetInnerHTML"?B=P:K=="children"||(K in F)||K=="value"&&("defaultValue"in F)||K=="checked"&&("defaultChecked"in F)||Vg($,K,null,P,U);for(K in F)P=F[K],K=="children"?k=P:K=="dangerouslySetInnerHTML"?W=P:K=="value"?A=P:K=="checked"?H=P:J&&typeof P!="function"||I[K]===P||Vg($,K,P,I[K],U);if(W)J||B&&(W.__html==B.__html||W.__html==$.innerHTML)||($.innerHTML=W.__html),v.__k=[];else if(B&&($.innerHTML=""),jG(v.type=="template"?$.content:$,ig(k)?k:[k],v,g,_,Y=="foreignObject"?"http://www.w3.org/1999/xhtml":U,z,b,z?z[0]:g.__k&&b4(g,0),J,G),z!=null)for(K=z.length;K--;)o0(z[K]);J||(K="value",Y=="progress"&&A==null?$.removeAttribute("value"):A!=null&&(A!==$[K]||Y=="progress"&&!A||Y=="option"&&A!=I[K])&&Vg($,K,A,I[K],U),K="checked",H!=null&&H!=$[K]&&Vg($,K,H,I[K],U))}return $}function t0($,v,g){try{if(typeof $=="function"){var _=typeof $.__u=="function";_&&$.__u(),_&&v==null||($.__u=$(v))}else $.current=v}catch(U){k$.__e(U,g)}}function mG($,v,g){var _,U;if(k$.unmount&&k$.unmount($),(_=$.ref)&&(_.current&&_.current!=$.__e||t0(_,null,v)),(_=$.__c)!=null){if(_.componentWillUnmount)try{_.componentWillUnmount()}catch(z){k$.__e(z,v)}_.base=_.__P=null}if(_=$.__k)for(U=0;U<_.length;U++)_[U]&&mG(_[U],v,g||typeof $.type!="function");g||o0($.__e),$.__c=$.__=$.__e=void 0}function AP($,v,g){return this.constructor($,g)}function EG($,v,g){var _,U,z,b;v==document&&(v=document.documentElement),k$.__&&k$.__($,v),U=(_=typeof g=="function")?null:g&&g.__k||v.__k,z=[],b=[],n0(v,$=(!_&&g||v).__k=IP(e$,null,[$]),U||fg,fg,v.namespaceURI,!_&&g?[g]:U?null:v.firstChild?cg.call(v.childNodes):null,z,!_&&g?g:U?U.__e:v.firstChild,_,b),CG(z,$,b)}cg=mg.slice,k$={__e:function($,v,g,_){for(var U,z,b;v=v.__;)if((U=v.__c)&&!U.__)try{if((z=U.constructor)&&z.getDerivedStateFromError!=null&&(U.setState(z.getDerivedStateFromError($)),b=U.__d),U.componentDidCatch!=null&&(U.componentDidCatch($,_||{}),b=U.__d),b)return U.__E=U}catch(J){$=J}throw $}},uG=0,x0=function($){return $!=null&&$.constructor===void 0},z4.prototype.setState=function($,v){var g;g=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=$6({},this.state),typeof $=="function"&&($=$($6({},g),this.props)),$&&$6(g,$),$!=null&&this.__v&&(v&&this._sb.push(v),QG(this))},z4.prototype.forceUpdate=function($){this.__v&&(this.__e=!0,$&&this.__h.push($),QG(this))},z4.prototype.render=e$,P6=[],RG=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,yG=function($,v){return $.__v.__b-v.__v.__b},Eg.__r=0,DG=/(PointerCapture)$|Capture$/i,p0=0,i0=rG(!1),l0=rG(!0),PP=0;var J4,f$,d0,cG,FU=0,tG=[],l$=k$,iG=l$.__b,lG=l$.__r,hG=l$.diffed,xG=l$.__c,pG=l$.unmount,oG=l$.__;function hg($,v){l$.__h&&l$.__h(f$,$,FU||v),FU=0;var g=f$.__H||(f$.__H={__:[],__h:[]});return $>=g.__.length&&g.__.push({}),g.__[$]}function x($){return FU=1,qP(dG,$)}function qP($,v,g){var _=hg(J4++,2);if(_.t=$,!_.__c&&(_.__=[g?g(v):dG(void 0,v),function(J){var G=_.__N?_.__N[0]:_.__[0],K=_.t(G,J);G!==K&&(_.__N=[K,_.__[1]],_.__c.setState({}))}],_.__c=f$,!f$.__f)){var U=function(J,G,K){if(!_.__c.__H)return!0;var W=_.__c.__H.__.filter(function(k){return k.__c});if(W.every(function(k){return!k.__N}))return!z||z.call(this,J,G,K);var B=_.__c.props!==J;return W.some(function(k){if(k.__N){var P=k.__[0];k.__=k.__N,k.__N=void 0,P!==k.__[0]&&(B=!0)}}),z&&z.call(this,J,G,K)||B};f$.__f=!0;var{shouldComponentUpdate:z,componentWillUpdate:b}=f$;f$.componentWillUpdate=function(J,G,K){if(this.__e){var W=z;z=void 0,U(J,G,K),z=W}b&&b.call(this,J,G,K)},f$.shouldComponentUpdate=U}return _.__N||_.__}function m($,v){var g=hg(J4++,3);!l$.__s&&s0(g.__H,v)&&(g.__=$,g.u=v,f$.__H.__h.push(g))}function xg($,v){var g=hg(J4++,4);!l$.__s&&s0(g.__H,v)&&(g.__=$,g.u=v,f$.__h.push(g))}function V($){return FU=5,t$(function(){return{current:$}},[])}function t$($,v){var g=hg(J4++,7);return s0(g.__H,v)&&(g.__=$(),g.__H=v,g.__h=$),g.__}function N($,v){return FU=8,t$(function(){return $},v)}function XP(){for(var $;$=tG.shift();){var v=$.__H;if($.__P&&v)try{v.__h.some(lg),v.__h.some(a0),v.__h=[]}catch(g){v.__h=[],l$.__e(g,$.__v)}}}l$.__b=function($){f$=null,iG&&iG($)},l$.__=function($,v){$&&v.__k&&v.__k.__m&&($.__m=v.__k.__m),oG&&oG($,v)},l$.__r=function($){lG&&lG($),J4=0;var v=(f$=$.__c).__H;v&&(d0===f$?(v.__h=[],f$.__h=[],v.__.some(function(g){g.__N&&(g.__=g.__N),g.u=g.__N=void 0})):(v.__h.some(lg),v.__h.some(a0),v.__h=[],J4=0)),d0=f$},l$.diffed=function($){hG&&hG($);var v=$.__c;v&&v.__H&&(v.__H.__h.length&&(tG.push(v)!==1&&cG===l$.requestAnimationFrame||((cG=l$.requestAnimationFrame)||wP)(XP)),v.__H.__.some(function(g){g.u&&(g.__H=g.u),g.u=void 0})),d0=f$=null},l$.__c=function($,v){v.some(function(g){try{g.__h.some(lg),g.__h=g.__h.filter(function(_){return!_.__||a0(_)})}catch(_){v.some(function(U){U.__h&&(U.__h=[])}),v=[],l$.__e(_,g.__v)}}),xG&&xG($,v)},l$.unmount=function($){pG&&pG($);var v,g=$.__c;g&&g.__H&&(g.__H.__.some(function(_){try{lg(_)}catch(U){v=U}}),g.__H=void 0,v&&l$.__e(v,g.__v))};var nG=typeof requestAnimationFrame=="function";function wP($){var v,g=function(){clearTimeout(_),nG&&cancelAnimationFrame(v),setTimeout($)},_=setTimeout(g,35);nG&&(v=requestAnimationFrame(g))}function lg($){var v=f$,g=$.__c;typeof g=="function"&&($.__c=void 0,g()),f$=v}function a0($){var v=f$;$.__c=$.__(),f$=v}function s0($,v){return!$||$.length!==v.length||v.some(function(g,_){return g!==$[_]})}function dG($,v){return typeof v=="function"?v($):v}var ZP=Symbol.for("preact-signals");function tg(){if(!(v6>1)){var $,v=!1;(function(){var U=og;og=void 0;while(U!==void 0){if(U.S.v===U.v)U.S.i=U.i;U=U.o}})();while(YU!==void 0){var g=YU;YU=void 0,pg++;while(g!==void 0){var _=g.u;if(g.u=void 0,g.f&=-3,!(8&g.f)&&eG(g))try{g.c()}catch(U){if(!v)$=U,v=!0}g=_}}if(pg=0,v6--,v)throw $}else v6--}function U6($){if(v6>0)return $();e0=++SP,v6++;try{return $()}finally{tg()}}var A$=void 0;function $2($){var v=A$;A$=void 0;try{return $()}finally{A$=v}}var aG,YU=void 0,v6=0,pg=0,SP=0,e0=0,og=void 0,ng=0;function sG($){if(A$!==void 0){var v=$.n;if(v===void 0||v.t!==A$){if(v={i:0,S:$,p:A$.s,n:void 0,t:A$,e:void 0,x:void 0,r:v},A$.s!==void 0)A$.s.n=v;if(A$.s=v,$.n=v,32&A$.f)$.S(v);return v}else if(v.i===-1){if(v.i=0,v.n!==void 0){if(v.n.p=v.p,v.p!==void 0)v.p.n=v.n;v.p=A$.s,v.n=void 0,A$.s.n=v,A$.s=v}return v}}}function n$($,v){this.v=$,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=v==null?void 0:v.watched,this.Z=v==null?void 0:v.unwatched,this.name=v==null?void 0:v.name}n$.prototype.brand=ZP;n$.prototype.h=function(){return!0};n$.prototype.S=function($){var v=this,g=this.t;if(g!==$&&$.e===void 0)if($.x=g,this.t=$,g!==void 0)g.e=$;else $2(function(){var _;(_=v.W)==null||_.call(v)})};n$.prototype.U=function($){var v=this;if(this.t!==void 0){var{e:g,x:_}=$;if(g!==void 0)g.x=_,$.e=void 0;if(_!==void 0)_.e=g,$.x=void 0;if($===this.t){if(this.t=_,_===void 0)$2(function(){var U;(U=v.Z)==null||U.call(v)})}}};n$.prototype.subscribe=function($){var v=this;return k6(function(){var g=v.value,_=A$;A$=void 0;try{$(g)}finally{A$=_}},{name:"sub"})};n$.prototype.valueOf=function(){return this.value};n$.prototype.toString=function(){return this.value+""};n$.prototype.toJSON=function(){return this.value};n$.prototype.peek=function(){var $=A$;A$=void 0;try{return this.value}finally{A$=$}};Object.defineProperty(n$.prototype,"value",{get:function(){var $=sG(this);if($!==void 0)$.i=this.i;return this.v},set:function($){if($!==this.v){if(pg>100)throw Error("Cycle detected");(function(g){if(v6!==0&&pg===0){if(g.l!==e0)g.l=e0,og={S:g,v:g.v,i:g.i,o:og}}})(this),this.v=$,this.i++,ng++,v6++;try{for(var v=this.t;v!==void 0;v=v.x)v.t.N()}finally{tg()}}}});function B$($,v){return new n$($,v)}function eG($){for(var v=$.s;v!==void 0;v=v.n)if(v.S.i!==v.i||!v.S.h()||v.S.i!==v.i)return!0;return!1}function $K($){for(var v=$.s;v!==void 0;v=v.n){var g=v.S.n;if(g!==void 0)v.r=g;if(v.S.n=v,v.i=-1,v.n===void 0){$.s=v;break}}}function vK($){var v=$.s,g=void 0;while(v!==void 0){var _=v.p;if(v.i===-1){if(v.S.U(v),_!==void 0)_.n=v.n;if(v.n!==void 0)v.n.p=_}else g=v;if(v.S.n=v.r,v.r!==void 0)v.r=void 0;v=_}$.s=g}function i6($,v){n$.call(this,void 0),this.x=$,this.s=void 0,this.g=ng-1,this.f=4,this.W=v==null?void 0:v.watched,this.Z=v==null?void 0:v.unwatched,this.name=v==null?void 0:v.name}i6.prototype=new n$;i6.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32)return!0;if(this.f&=-5,this.g===ng)return!0;if(this.g=ng,this.f|=1,this.i>0&&!eG(this))return this.f&=-2,!0;var $=A$;try{$K(this),A$=this;var v=this.x();if(16&this.f||this.v!==v||this.i===0)this.v=v,this.f&=-17,this.i++}catch(g){this.v=g,this.f|=16,this.i++}return A$=$,vK(this),this.f&=-2,!0};i6.prototype.S=function($){if(this.t===void 0){this.f|=36;for(var v=this.s;v!==void 0;v=v.n)v.S.S(v)}n$.prototype.S.call(this,$)};i6.prototype.U=function($){if(this.t!==void 0){if(n$.prototype.U.call(this,$),this.t===void 0){this.f&=-33;for(var v=this.s;v!==void 0;v=v.n)v.S.U(v)}}};i6.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var $=this.t;$!==void 0;$=$.x)$.t.N()}};Object.defineProperty(i6.prototype,"value",{get:function(){if(1&this.f)throw Error("Cycle detected");var $=sG(this);if(this.h(),$!==void 0)$.i=this.i;if(16&this.f)throw this.v;return this.v}});function l6($,v){return new i6($,v)}function UK($){var v=$.m;if($.m=void 0,typeof v=="function"){v6++;var g=A$;A$=void 0;try{v()}catch(_){throw $.f&=-2,$.f|=8,v2($),_}finally{A$=g,tg()}}}function v2($){for(var v=$.s;v!==void 0;v=v.n)v.S.U(v);$.x=void 0,$.s=void 0,UK($)}function MP($){if(A$!==this)throw Error("Out-of-order effect");if(vK(this),A$=$,this.f&=-2,8&this.f)v2(this);tg()}function O4($,v){if(this.x=$,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=v==null?void 0:v.name,aG)aG.push(this)}O4.prototype.c=function(){var $=this.S();try{if(8&this.f)return;if(this.x===void 0)return;var v=this.x();if(typeof v=="function")this.m=v}finally{$()}};O4.prototype.S=function(){if(1&this.f)throw Error("Cycle detected");this.f|=1,this.f&=-9,UK(this),$K(this),v6++;var $=A$;return A$=this,MP.bind(this,$)};O4.prototype.N=function(){if(!(2&this.f))this.f|=2,this.u=YU,YU=this};O4.prototype.d=function(){if(this.f|=8,!(1&this.f))v2(this)};O4.prototype.dispose=function(){this.d()};function k6($,v){var g=new O4($,v);try{g.c()}catch(U){throw g.d(),U}var _=g.d.bind(g);return _[Symbol.dispose]=_,_}var U2,g2,dg,QP=typeof window<"u"&&!!window.__PREACT_SIGNALS_DEVTOOLS__,gK=[],_K=[];k6(function(){U2=this.N})();function G4($,v){k$[$]=v.bind(null,k$[$]||function(){})}function ag($){if(dg){var v=dg;dg=void 0,v()}dg=$&&$.S()}function zK($){var v=this,g=$.data,_=rP(g);_.value=g;var U=t$(function(){var J=v,G=v.__v;while(G=G.__)if(G.__c){G.__c.__$f|=4;break}var K=l6(function(){var P=_.value.value;return P===0?0:P===!0?"":P||""}),W=l6(function(){return!Array.isArray(K.value)&&!x0(K.value)}),B=k6(function(){if(this.N=bK,W.value){var P=K.value;if(J.__v&&J.__v.__e&&J.__v.__e.nodeType===3)J.__v.__e.data=P}}),k=v.__$u.d;return v.__$u.d=function(){B(),k.call(this)},[W,K]},[]),z=U[0],b=U[1];return z.value?b.peek():b.value}zK.displayName="ReactiveTextNode";Object.defineProperties(n$.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:zK},props:{configurable:!0,get:function(){var $=this;return{data:{get value(){return $.value}}}}},__b:{configurable:!0,value:1}});G4("__b",function($,v){if(typeof v.type=="string"){var g,_=v.props;for(var U in _)if(U!=="children"){var z=_[U];if(z instanceof n$){if(!g)v.__np=g={};g[U]=z,_[U]=z.peek()}}}$(v)});G4("__r",function($,v){if($(v),v.type!==e$){ag();var g,_=v.__c;if(_){if(_.__$f&=-2,(g=_.__$u)===void 0)_.__$u=g=function(U,z){var b;return k6(function(){b=this},{name:z}),b.c=U,b}(function(){var U;if(QP)(U=g.y)==null||U.call(g);_.__$f|=1,_.setState({})},typeof v.type=="function"?v.type.displayName||v.type.name:"")}g2=_,ag(g)}});G4("__e",function($,v,g,_){ag(),g2=void 0,$(v,g,_)});G4("diffed",function($,v){ag(),g2=void 0;var g;if(typeof v.type=="string"&&(g=v.__e)){var{__np:_,props:U}=v;if(_){var z=g.U;if(z)for(var b in z){var J=z[b];if(J!==void 0&&!(b in _))J.d(),z[b]=void 0}else z={},g.U=z;for(var G in _){var K=z[G],W=_[G];if(K===void 0)K=NP(g,G,W),z[G]=K;else K.o(W,U)}for(var B in _)U[B]=_[B]}}$(v)});function NP($,v,g,_){var U=v in $&&$.ownerSVGElement===void 0,z=B$(g),b=g.peek();return{o:function(J,G){z.value=J,b=J.peek()},d:k6(function(){this.N=bK;var J=z.value.value;if(b!==J)if(b=void 0,U)$[v]=J;else if(J!=null&&(J!==!1||v[4]==="-"))$.setAttribute(v,J);else $.removeAttribute(v);else b=void 0})}}G4("unmount",function($,v){if(typeof v.type=="string"){var g=v.__e;if(g){var _=g.U;if(_){g.U=void 0;for(var U in _){var z=_[U];if(z)z.d()}}}v.__np=void 0}else{var b=v.__c;if(b){var J=b.__$u;if(J)b.__$u=void 0,J.d()}}$(v)});G4("__h",function($,v,g,_){if(_<3||_===9)v.__$f|=2;$(v,g,_)});z4.prototype.shouldComponentUpdate=function($,v){if(this.__R)return!0;var g=this.__$u,_=g&&g.s!==void 0;for(var U in v)return!0;if(this.__f||typeof this.u=="boolean"&&this.u===!0){var z=2&this.__$f;if(!(_||z||4&this.__$f))return!0;if(1&this.__$f)return!0}else{if(!(_||4&this.__$f))return!0;if(3&this.__$f)return!0}for(var b in $)if(b!=="__source"&&$[b]!==this.props[b])return!0;for(var J in this.props)if(!(J in $))return!0;return!1};function rP($,v){return t$(function(){return B$($,v)},[])}var uP=typeof requestAnimationFrame>"u"?setTimeout:function($){var v=function(){clearTimeout(g),cancelAnimationFrame(_),$()},g=setTimeout(v,35),_=requestAnimationFrame(v)},RP=function($){queueMicrotask(function(){queueMicrotask($)})};function yP(){U6(function(){var $;while($=gK.shift())U2.call($)})}function DP(){if(gK.push(this)===1)(k$.requestAnimationFrame||uP)(yP)}function TP(){U6(function(){var $;while($=_K.shift())U2.call($)})}function bK(){if(_K.push(this)===1)(k$.requestAnimationFrame||RP)(TP)}function JK($,v){var g=V($);g.current=$,m(function(){return k6(function(){return this.N=DP,g.current()},v)},[])}var sg=B$(null),AU=B$([]),W4=B$(new Set),B4=B$(new Set),eg=B$([]),$_=B$(new Set),I6=B$(!1),K4=B$(0);function OK(){sg.value=null,AU.value=[],W4.value=new Set,B4.value=new Set,eg.value=[],$_.value=new Set,I6.value=!1,K4.value=0}function v_(){I6.value=!0,K4.value=0}function U_(){I6.value=!1}function GK($,v,g){W4.value=new Set($),B4.value=new Set(v),eg.value=g}function g_($){sg.value=$}function KK($,v=6){if(AU.value=[$,...AU.value].slice(0,v),!I6.value)K4.value=Math.min(99,K4.value+1)}function __($){$_.value=new Set($)}var $v={markdown:"MD","mcp-app":"APP",webpage:"WEB","json-render":"UI",graph:"GRAPH",prompt:"ASK",response:"ANS",status:"STATUS",context:"CONTEXT",ledger:"LOG",trace:"TRACE",file:"FILE",image:"IMG",html:"HTML",group:"GROUP"},z_=new Set(["markdown","mcp-app","webpage","json-render","graph","context","ledger","file","image","html"]);function WK($){return $.type==="mcp-app"&&$.data.mode==="ext-app"&&$.data.serverName==="Excalidraw"&&$.data.toolName==="create_view"}function BK($){if($.length===0)return null;let{POSITIVE_INFINITY:v,POSITIVE_INFINITY:g,NEGATIVE_INFINITY:_,NEGATIVE_INFINITY:U}=Number;for(let z of $)v=Math.min(v,z.position.x),g=Math.min(g,z.position.y),_=Math.max(_,z.position.x+z.size.width),U=Math.max(U,z.position.y+z.size.height);if(!Number.isFinite(v)||!Number.isFinite(g))return null;return{x:v-40,y:g-40-32,width:_-v+80,height:U-g+80+32}}function jP($){let v=$.filter((G)=>!G.pinned&&G.dockPosition===null),g=new Map(v.map((G)=>[G.id,G])),_=new Map,U=[],z=new Map;for(let G of v){if(G.type==="group")continue;let K=typeof G.data.parentGroup==="string"?G.data.parentGroup:"",W=K?g.get(K):void 0;if(!W||W.type!=="group")continue;if(!z.has(K))z.set(K,[]);z.get(K).push(G)}let b=v.filter((G)=>G.type==="group").sort((G,K)=>G.position.y-K.position.y||G.position.x-K.position.x);for(let G of b){let K=z.get(G.id)??[];if(K.length===0){let P=`unit:${G.id}`;U.push({id:P,memberIds:[G.id],origin:{...G.position},size:{...G.size},sortKey:{x:G.position.x,y:G.position.y}}),_.set(G.id,P);continue}let W=K.map((P)=>({position:P.position,size:P.size})),B=BK(W);if(!B)continue;let k=`group:${G.id}`;U.push({id:k,memberIds:K.map((P)=>P.id),origin:{x:B.x,y:B.y},size:{width:B.width,height:B.height},sortKey:{x:B.x,y:B.y},groupId:G.id}),_.set(G.id,k);for(let P of K)_.set(P.id,k)}let J=v.filter((G)=>!_.has(G.id)).sort((G,K)=>G.position.y-K.position.y||G.position.x-K.position.x);for(let G of J){let K=`unit:${G.id}`;U.push({id:K,memberIds:[G.id],origin:{...G.position},size:{...G.size},sortKey:{x:G.position.x,y:G.position.y}}),_.set(G.id,K)}return{units:U,nodesById:g,nodeToUnit:_}}function VP($,v,g){let _=new Map,U=new Map,z=new Map,b=new Map;for(let J of $)_.set(J.id,new Set),U.set(J.id,new Set),z.set(J.id,0),b.set(J.id,0);for(let J of g){let G=v.get(J.from),K=v.get(J.to);if(!G||!K||G===K)continue;if(!_.get(G).has(K))_.get(G).add(K),b.set(G,(b.get(G)??0)+1),z.set(K,(z.get(K)??0)+1);U.get(G).add(K),U.get(K).add(G)}return{outgoing:_,undirected:U,indegree:z,outdegree:b}}function CP($,v){let g=new Map($.map((z)=>[z.id,z])),_=new Set,U=[];for(let z of $){if(_.has(z.id))continue;let b=[z.id],J=[];_.add(z.id);while(b.length>0){let K=b.pop();J.push(K);for(let W of v.get(K)??[]){if(_.has(W))continue;_.add(W),b.push(W)}}let G=J.map((K)=>g.get(K)).filter((K)=>K!==void 0).sort((K,W)=>K.sortKey.y-W.sortKey.y||K.sortKey.x-W.sortKey.x);U.push(G)}return U.sort((z,b)=>z[0].sortKey.y-b[0].sortKey.y||z[0].sortKey.x-b[0].sortKey.x)}function fP($){let v=new Map,g=0,_=0,U=0,z=0,b=Math.max(900,Math.ceil(Math.sqrt($.reduce((J,G)=>J+G.size.width*G.size.height,0))));for(let J of $){if(g>0&&g+J.size.width>b)g=0,_+=U+72,U=0;v.set(J.id,{x:g,y:_}),g+=J.size.width+96,U=Math.max(U,J.size.height),z=Math.max(z,g-96)}return{positions:v,size:{width:Math.max(0,z),height:_+U},sortKey:$[0].sortKey}}function mP($,v,g,_,U){if($.length===1)return{positions:new Map([[$[0].id,{x:0,y:0}]]),size:{...$[0].size},sortKey:$[0].sortKey};let z=new Set($.map((Y)=>Y.id)),b=$.filter((Y)=>(_.get(Y.id)??0)===0&&(U.get(Y.id)??0)>0).sort((Y,X)=>Y.sortKey.x-X.sortKey.x||Y.sortKey.y-X.sortKey.y),J=b.length>0?b:[$.slice().sort((Y,X)=>Y.sortKey.x-X.sortKey.x||Y.sortKey.y-X.sortKey.y)[0]],G=new Map,K=J.map((Y)=>Y.id);for(let Y of J)G.set(Y.id,0);while(K.length>0){let Y=K.shift(),X=G.get(Y)??0;for(let Q of g.get(Y)??[]){if(!z.has(Q)||G.has(Q))continue;G.set(Q,X+1),K.push(Q)}}let W=0;for(let Y of $){if(G.has(Y.id))continue;G.set(Y.id,W),W+=1}let B=new Map;for(let Y of $){let X=G.get(Y.id)??0;if(!B.has(X))B.set(X,[]);B.get(X).push(Y)}let k=Array.from(B.keys()).sort((Y,X)=>Y-X);for(let Y of k)B.get(Y).sort((X,Q)=>X.sortKey.y-Q.sortKey.y||X.sortKey.x-Q.sortKey.x);let P=new Map,A=new Map,H=0;for(let Y of k){let X=B.get(Y),Q=X.reduce((E,M,n)=>E+M.size.height+(n>0?72:0),0),u=Math.max(...X.map((E)=>E.size.width));P.set(Y,Q),A.set(Y,u),H=Math.max(H,Q)}let I=new Map,F=0;for(let Y of k){let X=B.get(Y),Q=P.get(Y)??0,u=A.get(Y)??0,E=Math.max(0,(H-Q)/2);for(let M of X)I.set(M.id,{x:F,y:E}),E+=M.size.height+72;F+=u+96}return{positions:I,size:{width:Math.max(0,F-96),height:H},sortKey:$[0].sortKey}}function EP($){let v=new Map,g=40,_=80,U=0;for(let z of $){if(g>40&&g+z.size.width>3200)g=40,_+=U+180,U=0;for(let[b,J]of z.positions.entries())v.set(b,{x:g+J.x,y:_+J.y});g+=z.size.width+220,U=Math.max(U,z.size.height)}return v}function _2($,v,g){let{units:_,nodesById:U,nodeToUnit:z}=jP($),b=new Map,J=new Map;if(_.length===0)return{nodePositions:b,groupBounds:J};let{outgoing:G,undirected:K,indegree:W,outdegree:B}=VP(_,z,v),k=CP(_,K).map((A)=>g==="graph"?mP(A,G,K,W,B):fP(A)),P=EP(k);for(let A of _){let H=P.get(A.id);if(!H)continue;let I=H.x-A.origin.x,F=H.y-A.origin.y;if(A.groupId){let Q=[];for(let E of A.memberIds){let M=U.get(E);if(!M)continue;let n={x:M.position.x+I,y:M.position.y+F};b.set(E,n),Q.push({position:n,size:M.size})}let u=BK(Q);if(u)J.set(A.groupId,u);continue}let Y=A.memberIds[0],X=U.get(Y);if(!X)continue;b.set(Y,{x:X.position.x+I,y:X.position.y+F})}return{nodePositions:b,groupBounds:J}}function z2($,v){console.error(`[intent-bridge] ${$} failed`,v)}async function m$($,v,g,_){try{return await(await fetch(v,_)).json()}catch(U){return z2($,U),g}}async function cP($,v,g){try{return{ok:(await fetch(v,g)).ok}}catch(_){return z2($,_),{ok:!1}}}async function PK($,v,g){try{await fetch(v,g)}catch(_){z2($,_)}}async function kK($,v={}){return m$("sendIntent","/api/workbench/intent",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:$,payload:v})})}async function b2($){let g=`Veto: do not ${$.label?.trim()||`${$.kind} intent`}${$.reason?` — ${$.reason}`:""}.`;if((await m$("vetoGhostIntent",`/api/canvas/ax/intent/${encodeURIComponent($.id)}`,{ok:!1,cleared:!1},{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({vetoed:!0})})).cleared!==!0)return!1;return await PK("vetoGhostSteering","/api/canvas/ax/steer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:g,source:"browser"})}),!0}async function g6($){return(await m$("renderMarkdown","/api/render",{},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({markdown:$})})).html??""}async function qU($){return m$("fetchFile",`/api/file?path=${encodeURIComponent($)}`,{content:""})}async function IK($,v){return m$("saveFile","/api/file/save",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:$,content:v})})}async function b_($){return cP("openWorkbenchFile","/api/workbench/open",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:$})})}async function J_($){return m$("saveCanvasTheme","/api/canvas/theme",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:$})})}async function HK(){return[]}async function XU($,v,g,_,U){if(!$.trim())return{ok:!1,error:"Prompt text is required"};return m$("submitCanvasPrompt","/api/canvas/prompt",{ok:!1,error:"Network error"},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:$,...v?{position:v}:{},...g?{parentNodeId:g}:{},..._&&_.length>0?{contextNodeIds:_}:{},...U?{threadNodeId:U}:{}})})}async function LK($,v){return XU(v,void 0,void 0,void 0,$)}async function FK($,v={}){await PK("pushCanvasUpdate","/api/canvas/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({updates:$,...v.recordHistory===!1?{recordHistory:!1}:{}})})}async function P4($,v,g,_){return m$("createEdgeFromClient","/api/canvas/edge",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:$,to:v,type:g,label:_})})}async function lv($){return m$("createNodeFromClient","/api/canvas/node",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify($)})}async function wv($,v){return m$("updateNodeFromClient",`/api/canvas/node/${encodeURIComponent($)}`,{ok:!1},{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)})}async function O_($,v){return m$("refreshWebpageNodeFromClient",`/api/canvas/node/${encodeURIComponent($)}/refresh`,{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(v?{url:v}:{})})}async function G_($){return m$("removeNodeFromClient",`/api/canvas/node/${encodeURIComponent($)}`,{ok:!1},{method:"DELETE"})}async function YK(){return m$("fetchAxSurfaceState","/api/canvas/ax/surface-snapshot",null)}async function AK($,v){return m$("openNodeInSystemBrowserRequest","/api/canvas/open-external",{ok:!1,opened:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({nodeId:$,url:v})})}async function H6($){return m$("submitAxInteractionFromClient","/api/canvas/ax/interaction",{ok:!1,code:"request-failed",error:"Request failed"},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sourceSurface:"native-node",...$,source:"browser"})})}async function qK($,v={}){return m$("updateViewportFromClient","/api/canvas/viewport",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...$,...v.recordHistory===!1?{recordHistory:!1}:{}})})}async function K_($){return m$("createGroupFromClient","/api/canvas/group",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify($)})}async function XK($){return m$("ungroupFromClient","/api/canvas/group/ungroup",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({groupId:$})})}async function wK(){return m$("listSnapshots","/api/canvas/snapshots?all=true",[])}async function ZK($){return m$("saveSnapshot","/api/canvas/snapshots",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:$})})}async function SK($){return m$("restoreSnapshot",`/api/canvas/snapshots/${$}`,{ok:!1},{method:"POST"})}async function MK($){return m$("deleteSnapshot",`/api/canvas/snapshots/${$}`,{ok:!1},{method:"DELETE"})}function wU($,v){console.error(`[canvas-store] ${$} failed`,v)}var I$=B$({x:0,y:0,scale:1}),T=B$(new Map),c$=B$(new Map),I4=B$(new Map),y$=B$(null),h6=B$("connecting"),H4=B$(""),B_=B$(!1),T$=B$("dark"),x6=B$(!1),F6=B$(null),E$=B$(null),hv=B$(null),Zv=null,k4,QK=100,iP=2500,P_=B$(null),rv=B$(null),Y6=B$(null),h$=B$(new Set),D$=B$(new Set);function uK($,v){if(!$)return new Set;let g=new Set;for(let _ of v.values()){if(_.from===$)g.add(_.to);if(_.to===$)g.add(_.from)}return g}var RK=l6(()=>uK(y$.value,c$.value));function NK($,v){let g=new Set;for(let _ of $)if(v.has(_))g.add(_);return g}function rK($,v){if($.size!==v.size)return!1;for(let g of $)if(!v.has(g))return!1;return!0}function yK($){let v=new Set(h$.value);if(v.has($))v.delete($);else v.add($);h$.value=v}function DK($){h$.value=new Set($)}function jv(){if(h$.value.size===0)return;h$.value=new Set}function L4($){let v=new Set(D$.value);if(v.has($))v.delete($);else v.add($);D$.value=v,d$(),k_(v)}function TK($){let v=new Set(D$.value);for(let g of $)v.add(g);D$.value=v,d$(),k_(v)}function jK(){if(D$.value.size===0)return;D$.value=new Set,d$(),k_(new Set)}function VK($){D$.value=new Set($)}function CK(){let $=D$.value;if($.size===0)return[];return Array.from($).map((v)=>T.value.get(v)).filter((v)=>v!==void 0)}function k_($){fetch("/api/canvas/context-pins",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({nodeIds:Array.from($)})}).catch((v)=>{wU("syncContextPinsToServer",v)})}var W_=1;function _6($){U6(()=>{let v=new Map(T.value);if($.zIndex>=W_)W_=$.zIndex+1;v.set($.id,$),T.value=v,y$.value=$.id})}function Pv($,v){O2($,v)}function O2($,v,g={}){let _=T.value.get($);if(!_)return;let U=new Map(T.value);if(_.type==="group"&&v.position&&g.skipGroupChildTranslation!==!0){let b=v.position.x-_.position.x,J=v.position.y-_.position.y;if(b!==0||J!==0){let G=Array.isArray(_.data.children)?_.data.children.filter((K)=>typeof K==="string"):[];for(let K of G){let W=U.get(K);if(!W||W.type==="group")continue;U.set(K,{...W,position:{x:W.position.x+b,y:W.position.y+J}})}}}U.set($,{..._,...v}),T.value=U;let z=U.get($)?.data.appCheckpoint?.updatedAt;if(hv.value===$&&z!==void 0&&z!==k4)J2($)}function U$($,v){let g=T.value.get($);if(!g)return;Pv($,{data:{...g.data,...v}})}function F4($){lP($);let v=new Map(T.value);if(v.delete($),T.value=v,y$.value===$)y$.value=null;if(E$.value===$)E$.value=null;if(h$.value.has($)){let g=new Set(h$.value);g.delete($),h$.value=g}if(D$.value.has($)){let g=new Set(D$.value);g.delete($),D$.value=g,k_(g)}}function I_($){let v=new Map(c$.value);v.set($.id,$),c$.value=v}function fK($){let v=new Map(c$.value);v.delete($),c$.value=v}function lP($){let v=!1,g=new Map(c$.value);for(let[_,U]of g)if(U.from===$||U.to===$)g.delete(_),v=!0;if(v)c$.value=g}function hP($){let v=new Map(I4.value);if(!v.delete($))return;I4.value=v}async function G2($){try{return{ok:(await fetch("/api/canvas/annotation",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify($)})).ok}}catch(v){return wU("createAnnotationFromClient",v),{ok:!1}}}async function mK($){try{let v=await fetch(`/api/canvas/annotation/${encodeURIComponent($)}`,{method:"DELETE"});if(v.ok)hP($);return{ok:v.ok}}catch(v){return wU("removeAnnotationFromClient",v),{ok:!1}}}function Y4($,v){if(!T.value.get($))return;Pv($,{size:v})}function A6($){if(!T.value.get($))return;Pv($,{zIndex:W_++}),y$.value=$}function q6($){let v=T.value.get($);if(!v)return;Pv($,{collapsed:!v.collapsed})}function EK(){for(let $ of T.value.values())if($.type==="context"&&$.dockPosition==="right"&&!$.collapsed)Pv($.id,{collapsed:!0})}var H_=l6(()=>{for(let $ of T.value.values())if($.type==="context"&&$.dockPosition==="right"&&!$.collapsed)return!0;return!1});function K2($,v){if(!T.value.get($))return;Pv($,{dockPosition:v}),d$()}function A4($){let v=T.value.get($);if(!v)return;let g=I$.value,_=(window.innerWidth/2-g.x)/g.scale,U=(window.innerHeight/2-g.y)/g.scale;Pv($,{dockPosition:null,position:{x:_-v.size.width/2,y:U-v.size.height/2}}),d$()}function cK($){I$.value={...I$.value,...$}}function iK($){I$.value=$}function lK($){hK($)}function hK($,v={}){I$.value=$,d$(v),qK($,v)}function xK($,v={}){let g=new Map,_=1;for(let B of $.nodes)if(g.set(B.id,B),B.zIndex>=_)_=B.zIndex+1;let U=$.edges.filter((B)=>g.has(B.from)&&g.has(B.to)),z=new Map;for(let B of U)z.set(B.id,B);let b=new Map;for(let B of $.annotations??[])b.set(B.id,B);let J=y$.value!==null&&g.has(y$.value)?y$.value:null,G=E$.value!==null&&g.has(E$.value)?E$.value:null,K=NK(h$.value,g),W=NK(D$.value,g);U6(()=>{if(v.applyViewport===!0&&$.viewport)I$.value=$.viewport;if(W_=_,T.value=g,c$.value=z,I4.value=b,y$.value=J,E$.value=G,!rK(h$.value,K))h$.value=K;if(!rK(D$.value,W))D$.value=W})}var L6=null;function xP($){return 1-(1-$)**3}function xv($,v=300,g={}){if(L6!==null)cancelAnimationFrame(L6);let _={...I$.value},U=performance.now();function z(b){let J=b-U,G=Math.min(1,J/v),K=xP(G);if(I$.value={x:_.x+($.x-_.x)*K,y:_.y+($.y-_.y)*K,scale:_.scale+($.scale-_.scale)*K},G<1)L6=requestAnimationFrame(z);else L6=null,hK($,g)}L6=requestAnimationFrame(z)}function q4(){if(L6!==null)cancelAnimationFrame(L6),L6=null}var pK="pmx-canvas-layout";function d$($={}){try{let v=Array.from(T.value.values()),g=v.map((U)=>({id:U.id,position:U.position,size:U.size,collapsed:U.collapsed,dockPosition:U.dockPosition})),_={viewport:I$.value,nodes:v.map((U)=>({id:U.id,type:U.type,position:U.position,size:U.size,collapsed:U.collapsed,pinned:U.pinned,dockPosition:U.dockPosition})),edges:Array.from(c$.value.values()).map((U)=>({id:U.id,from:U.from,to:U.to,type:U.type,label:U.label,style:U.style,animated:U.animated})),contextPinnedNodeIds:Array.from(D$.value)};localStorage.setItem(pK,JSON.stringify(_)),FK(g,$)}catch(v){wU("persistLayout",v)}}function oK(){try{let $=localStorage.getItem(pK);if(!$)return null;let v=JSON.parse($),g=Array.isArray(v.nodes)?v.nodes:[];if(g.length===0)return null;let _=new Map;for(let U of g){if(typeof U.id!=="string"||U.id.length===0)continue;_.set(U.id,{...U.position?{position:U.position}:{},...U.size?{size:U.size}:{},...U.collapsed!==void 0?{collapsed:U.collapsed}:{},...U.pinned!==void 0?{pinned:U.pinned}:{},...U.dockPosition!==void 0?{dockPosition:U.dockPosition}:{}})}return _.size>0?_:null}catch($){return wU("restoreLayout",$),null}}function L_($,v){let g=Array.from(T.value.values());if(g.length===0)return;let{POSITIVE_INFINITY:_,POSITIVE_INFINITY:U,NEGATIVE_INFINITY:z,NEGATIVE_INFINITY:b}=Number;for(let P of g)_=Math.min(_,P.position.x),U=Math.min(U,P.position.y),z=Math.max(z,P.position.x+P.size.width),b=Math.max(b,P.position.y+P.size.height);let J=60,G=z-_+J*2,K=b-U+J*2,W=Math.min(1,Math.min($/G,v/K)),B=(_+z)/2,k=(U+b)/2;xv({x:$/2-B*W,y:v/2-k*W,scale:W})}function Fv($,v={}){let g=T.value.get($);if(!g)return;let _=I$.value,U=g.position.x+g.size.width/2,z=g.position.y+g.size.height/2;xv({x:window.innerWidth/2-U*_.scale,y:window.innerHeight/2-z*_.scale,scale:_.scale},300,v),A6($)}function nK($=1){let v=Array.from(T.value.keys());if(v.length===0)return;let _=((y$.value?v.indexOf(y$.value):-1)+$+v.length)%v.length,U=v[_];A6(U),Fv(U)}function tK($){let v=y$.value;if(!v)return;let g=T.value.get(v);if(!g)return;let _=uK(v,c$.value);if(_.size===0)return;let U=g.position.x+g.size.width/2,z=g.position.y+g.size.height/2,b=null,J=-1/0;for(let G of _){let K=T.value.get(G);if(!K)continue;let W=K.position.x+K.size.width/2,B=K.position.y+K.size.height/2,k=W-U,P=B-z,A=Math.sqrt(k*k+P*P);if(A<1)continue;let H;switch($){case"up":H=-P;break;case"down":H=P;break;case"left":H=-k;break;case"right":H=k;break}if(H<=0)continue;let I=H/A-A*0.001;if(I>J)J=I,b=G}if(b)Fv(b)}function z6($){if(!T.value.get($))return;if(Zv!==null)clearTimeout(Zv),Zv=null;hv.value=null,k4=void 0,A6($),E$.value=$}function J2($){if(Zv!==null)clearTimeout(Zv),Zv=null;if(E$.value===$)E$.value=null;if(hv.value===$)hv.value=null;k4=void 0}function p6(){let $=E$.value,v=$?T.value.get($):void 0;if($&&v&&WK(v)){let g=$,_=Date.now();if(hv.value=g,k4=v.data.appCheckpoint?.updatedAt,Zv!==null)clearTimeout(Zv);let U=()=>{let b=T.value.get(g)?.data.appCheckpoint?.updatedAt;if(b!==void 0&&b!==k4){J2(g);return}if(Date.now()-_>=iP){J2(g);return}Zv=setTimeout(U,QK)};Zv=setTimeout(U,QK);return}if(Zv!==null)clearTimeout(Zv),Zv=null;hv.value=null,k4=void 0,E$.value=null}function F_(){let $=_2(Array.from(T.value.values()),Array.from(c$.value.values()),"grid");if($.nodePositions.size===0&&$.groupBounds.size===0)return;U6(()=>{for(let[v,g]of $.nodePositions.entries())Pv(v,{position:g});for(let[v,g]of $.groupBounds.entries())O2(v,{position:{x:g.x,y:g.y},size:{width:g.width,height:g.height}},{skipGroupChildTranslation:!0})}),d$()}function Y_(){let $=_2(Array.from(T.value.values()),Array.from(c$.value.values()),"graph");if($.nodePositions.size===0&&$.groupBounds.size===0)return;U6(()=>{for(let[v,g]of $.nodePositions.entries())Pv(v,{position:g});for(let[v,g]of $.groupBounds.entries())O2(v,{position:{x:g.x,y:g.y},size:{width:g.width,height:g.height}},{skipGroupChildTranslation:!0})}),d$()}var pP=0;function O($,v,g,_,U,z){v||(v={});var b,J,G=v;if("ref"in G)for(J in G={},v)J=="ref"?b=v[J]:G[J]=v[J];var K={type:$,props:G,key:g,ref:b,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--pP,__i:-1,__u:0,__source:U,__self:z};if(typeof $=="function"&&(b=$.defaultProps))for(J in b)G[J]===void 0&&(G[J]=b[J]);return k$.vnode&&k$.vnode(K),K}function oP($){return new Date($).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function nP(){EK(),v_()}function dK(){let $=AU.value;if($.length===0)return null;let v=I6.value,g=K4.value;if(!v&&H_.value)return null;if(!v)return O("button",{type:"button",class:"attention-history-tab",onClick:nP,"aria-label":g>0?`Recent updates — ${g} new`:"Recent updates",title:g>0?`${g} new updates since last viewed`:"Recent updates",children:[O("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[O("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),O("circle",{cx:"4.5",cy:"8",r:"1.1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),O("line",{x1:"6.5",y1:"6.5",x2:"12.5",y2:"6.5"},void 0,!1,void 0,this),O("line",{x1:"6.5",y1:"8",x2:"11",y2:"8"},void 0,!1,void 0,this),O("line",{x1:"6.5",y1:"9.5",x2:"12",y2:"9.5"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("span",{class:"attention-history-tab-label",children:"Updates"},void 0,!1,void 0,this),g>0&&O("span",{class:"attention-history-tab-badge","aria-hidden":"true",children:g>9?"9+":g},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return O("aside",{class:"attention-history","aria-label":"Recent semantic changes",children:[O("div",{class:"attention-history-header",children:[O("div",{class:"attention-history-header-text",children:[O("span",{class:"attention-history-title",children:"Recent Updates"},void 0,!1,void 0,this),O("span",{class:"attention-history-subtitle",children:"Focus and meaning shifts"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("button",{type:"button",class:"attention-history-close",onClick:U_,"aria-label":"Collapse changes panel",title:"Collapse",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"attention-history-list",children:$.map((_)=>O("article",{class:`attention-history-entry attention-tone-${_.tone}`,children:[O("div",{class:"attention-history-meta",children:[O("span",{class:"attention-history-kind",children:_.title},void 0,!1,void 0,this),O("time",{class:"attention-history-time",dateTime:new Date(_.createdAt).toISOString(),children:oP(_.createdAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("p",{class:"attention-history-detail",children:_.detail},void 0,!1,void 0,this)]},_.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function aK(){let $=sg.value;if(!$)return null;return O("button",{type:"button",class:`attention-toast attention-tone-${$.tone}`,onClick:v_,"aria-label":`${$.title} — open change history`,title:$.detail||$.title,children:[O("span",{class:"attention-toast-dot","aria-hidden":"true"},void 0,!1,void 0,this),O("span",{class:"attention-toast-title",children:$.title},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var tP=700,dP=1600;function aP($){return $.replace(/\r\n?/g,`
|
|
23
23
|
`).replace(/[ \t\f\v]+/g," ").replace(/\n\s+/g,`
|
|
24
24
|
`).replace(/\s+\n/g,`
|
|
25
25
|
`).replace(/\n{3,}/g,`
|
|
@@ -223,4 +223,4 @@ container holding the app. Specify either width or maxWidth, and either height o
|
|
|
223
223
|
});
|
|
224
224
|
})();
|
|
225
225
|
</script>`}function ZA($,v){if(!v)return $;let g=/<head\b[^>]*>/i.exec($);if(g?.index!==void 0){let U=g.index+g[0].length;return`${$.slice(0,U)}${v}${$.slice(U)}`}let _=/<body\b[^>]*>/i.exec($);if(_?.index!==void 0){let U=_.index+_[0].length;return`${$.slice(0,U)}${v}${$.slice(U)}`}return`${v}${$}`}function JU($,v){if(Number.isFinite($)&&$>0)return Math.round($);if(Number.isFinite(v)&&v>0)return Math.round(v);return 1}function eO($,v){let g=$?.getBoundingClientRect();return{width:JU($?.clientWidth??0,JU(g?.width??0,v.width)),height:JU($?.clientHeight??0,JU(g?.height??0,v.height))}}function SA($,v){return typeof $==="number"&&Number.isFinite($)&&$>0&&!v}function MA($,v){return Math.max(JU($,1),JU(v,1))}function ZW({node:$,expanded:v=!1}){let g=V(null),_=V(null),U=V(null),z=V(null),b=V({}),J=V(void 0),G=V(!1),K=V(void 0),W=V(null),B=V(!1),k=V(null),P=V(!1),A=V(null),[H,I]=x("loading"),[F,Y]=x(null),[X,Q]=x(0),u=$.data.html,E=$.data.serverName,M=$.data.appSessionId,n=$.data.toolInput??{},t=$.data.toolResult,r=$.data.toolName??"ext-app",R=$.data.toolDefinition,$$=$.data.toolCallId,p=typeof $$==="string"||typeof $$==="number"?$$:void 0,c=$.data.resourceMeta,P$=$.data.sessionStatus,Z$=$.data.sessionError,i$=$.size.height,w=$.id,l=AA($,X),e=t!=null,s=XA(null),z$=$.data.axCapabilities?.enabled===!0&&typeof u==="string"&&u.length>0,a=t$(()=>`ax-${crypto.randomUUID()}`,[]),f=z$?wA(a,w):"",d=qW(ZA(u??"",f),s);m(()=>{if(!z$)return;function b$(K$){if(K$.source!==g.current?.contentWindow)return;let V$=K$.data;if(!V$||V$.source!=="pmx-canvas-ax"||V$.token!==a||V$.nodeId!==w)return;let C$=V$.interaction;if(!C$||typeof C$.type!=="string")return;let s$=C$.type;H6({type:s$,sourceNodeId:w,sourceSurface:"mcp-app",...C$.payload&&typeof C$.payload==="object"?{payload:C$.payload}:{}}).then((Wv)=>{if(Wv.ok)uv("context","AX interaction",s$,[w]);else uv("remove","AX interaction rejected",Wv.error??Wv.code??"",[w]);g.current?.contentWindow?.postMessage({source:"pmx-canvas-ax-ack",token:a,...V$.correlationId?{correlationId:V$.correlationId}:{},interaction:{type:s$},result:Wv},"*")})}return window.addEventListener("message",b$),()=>window.removeEventListener("message",b$)},[z$,a,w]),m(()=>{if(v||P.current)return;if(!YA(H,e))return;if(typeof navigator>"u"||typeof window>"u")return;if(!LA(navigator.userAgent))return;P.current=!0;let b$=250+FA()*450;A.current=window.setTimeout(()=>Q((K$)=>K$+1),b$)},[H,e]),m(()=>()=>{if(A.current!==null)window.clearTimeout(A.current)},[]);let G$=(b$)=>b$==="light"?"light":"dark",g$=v||E$.value===w;b.current=n,J.current=t;let j$=P$==="error"?Z$??"Saved app session is unavailable. Reopen the app to restore interactivity.":"Reconnecting saved app session...",o$=(b$)=>{let K$=J.current;if(!b$||!B.current||!K$)return null;if(K.current===K$)return null;if(K.current&&FW(K.current,K$))return K.current=K$,null;if(W.current)return W.current;let V$=b$.sendToolResult(K$).then(()=>{K.current=K$,G.current=!0,I("done")}).catch((C$)=>{let s$=C$ instanceof Error?C$.message:String(C$);throw Y(`Tool result delivery failed: ${s$}`),C$}).finally(()=>{W.current=null});return W.current=V$,V$};if(m(()=>{if(!u||!d.ready)return;let b$=g.current;if(!b$)return;let K$=!1,V$=null,C$=null,s$=null,Wv=null;G.current=!1,K.current=void 0,W.current=null,B.current=!1;let Ev=()=>{if(!V$)return;clearTimeout(V$),V$=null};return(async()=>{if(!u)return;let cv=b$.contentWindow;if(!cv)throw Error("Ext-app iframe window is unavailable");let E6=(F$=E$.value===w?"fullscreen":"inline")=>({theme:G$(T$.value),platform:"web",containerDimensions:eO(b$,{width:$.size.width,height:i$}),displayMode:F$,locale:navigator.language,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,...R?{toolInfo:{id:p,tool:R}}:{}}),vP=()=>{if(s$!==null)return;s$=requestAnimationFrame(()=>{if(s$=null,K$||!B.current)return;u$.setHostContext?.(E6())})},wG=()=>{if(Wv!==null)return;Wv=requestAnimationFrame(()=>{Wv=requestAnimationFrame(()=>{if(Wv=null,K$||!B.current)return;u$.sendHostContextChange?.(E6())})})},u$=new nO(null,{name:"PMX Canvas",version:"1.0.0"},{openLinks:{},serverTools:{listChanged:!1},serverResources:{listChanged:!1},logging:{},updateModelContext:{text:{},structuredContent:{}}},{hostContext:E6(g$?"fullscreen":"inline")});u$.onsizechange=async({height:F$})=>{if(SA(F$,E$.value===w)){let Bv=eO(b$.parentElement??b$,{width:$.size.width,height:i$}),iv=MA(F$,Bv.height);b$.style.height=`${iv}px`;let c6=T.value.get(w)?.size??$.size,SG=Math.max(c6.height,iv+o3);if(Math.abs(SG-c6.height)>8){if(Y4(w,{width:c6.width,height:SG}),z.current!==null)window.clearTimeout(z.current);z.current=window.setTimeout(()=>{d$({recordHistory:!1}),z.current=null},0)}}return{}},u$.onopenlink=async({url:F$})=>{return window.open(F$,"_blank","noopener"),{}},u$.onsandboxready=async()=>{await u$.sendSandboxResourceReady({html:u,sandbox:aO,...c?.csp?{csp:c.csp}:{},...c?.permissions?{permissions:c.permissions}:{}})},u$.onrequestdisplaymode=async({mode:F$})=>{let{nextMode:Bv,shouldExpand:iv,shouldCollapse:c6}=qA(F$,g$);if(iv)z6(w);else if(c6)p6();return{mode:Bv}},u$.oncalltool=async(F$)=>{if(!M)throw Error(j$);try{let Bv=await U4("/api/ext-app/call-tool",{sessionId:M,nodeId:w,serverName:E,toolName:F$.name,arguments:F$.arguments??{}});return Y(null),Bv}catch(Bv){let iv=Bv instanceof Error?Bv.message:String(Bv);throw Y(`Tool call failed: ${iv}`),Bv}},u$.setRequestHandler(wg,async()=>{if(!M)return{tools:[]};return U4("/api/ext-app/list-tools",{sessionId:M})}),u$.onlistresources=async()=>M?U4("/api/ext-app/list-resources",{sessionId:M}):{resources:[]},u$.onlistresourcetemplates=async()=>M?U4("/api/ext-app/list-resource-templates",{sessionId:M}):{resourceTemplates:[]},u$.onreadresource=async(F$)=>{if(!M)throw Error(j$);return U4("/api/ext-app/read-resource",{sessionId:M,uri:F$.uri})},u$.onlistprompts=async()=>M?U4("/api/ext-app/list-prompts",{sessionId:M}):{prompts:[]},u$.onupdatemodelcontext=async(F$)=>{if(!M)return{};return await U4("/api/ext-app/model-context",{nodeId:w,...Array.isArray(F$.content)?{content:F$.content}:{},...F$.structuredContent&&typeof F$.structuredContent==="object"?{structuredContent:F$.structuredContent}:{}}),{}};let E0=new w0(cv,cv);if(u$.oninitialized=()=>{if(K$)return;Ev(),B.current=!0,I("ready"),Y(null),Promise.resolve(u$.sendHostContextChange(E6(g$?"fullscreen":"inline"))).then(()=>wW(u$,b.current,void 0)).then(()=>o$(u$)).then(()=>wG()).catch((F$)=>{let Bv=F$ instanceof Error?F$.message:String(F$);Y(`Bridge bootstrap failed: ${Bv}`)})},V$=setTimeout(()=>{if(K$||B.current)return;let F$=J.current,Bv=E6(g$?"fullscreen":"inline");B.current=!0,u$.setHostContext?.(Bv),Promise.resolve(u$.sendHostContextChange(Bv)).then(()=>wW(u$,b.current,F$)).then(()=>{if(G.current=Boolean(F$),F$)K.current=F$;I(F$?"done":"ready"),Y(null),wG()}).catch((iv)=>{let c6=iv instanceof Error?iv.message:String(iv);Y(`Bridge bootstrap fallback failed: ${c6}`)})},1200),await u$.connect(E0),K$){Ev(),await E0.close();return}if(_.current=u$,U.current=E0,C$=new ResizeObserver(vP),C$.observe(b$),b$.parentElement)C$.observe(b$.parentElement);let ZG=!0;k.current=T$.subscribe((F$)=>{if(ZG){ZG=!1;return}if(K$)return;u$.setHostContext?.({...E6(),theme:G$(F$)}),u$.sendHostContextChange?.(E6())}),o$(u$)})().catch((cv)=>{Ev(),console.error("[ext-app] Bridge init failed:",cv),Y(cv?.message??"Bridge initialization failed")}),()=>{if(K$=!0,Ev(),C$?.disconnect(),C$=null,s$!==null)cancelAnimationFrame(s$),s$=null;if(Wv!==null)cancelAnimationFrame(Wv),Wv=null;if(B.current=!1,W.current=null,k.current?.(),k.current=null,z.current!==null)window.clearTimeout(z.current),z.current=null;if(_.current=null,U.current)U.current.close().catch((cv)=>{console.error("[ext-app] transport close failed:",cv)}),U.current=null}},[l,d.key]),m(()=>{if(t&&_.current&&(H==="ready"||H==="done"))o$(_.current)},[t,H]),m(()=>{let b$=_.current;if(g.current)g.current.style.height="100%";if(!b$||!B.current)return;let K$=null,V$=null;return K$=requestAnimationFrame(()=>{K$=null,V$=requestAnimationFrame(()=>{if(V$=null,!B.current)return;let C$={theme:G$(T$.value),platform:"web",containerDimensions:eO(g.current,{width:$.size.width,height:i$}),displayMode:g$?"fullscreen":"inline",locale:navigator.language,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone};b$.setHostContext?.(C$),b$.sendHostContextChange?.(C$)})}),()=>{if(K$!==null)cancelAnimationFrame(K$);if(V$!==null)cancelAnimationFrame(V$)}},[g$,i$]),!u)return O("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--c-muted)",fontSize:"13px",flexDirection:"column",gap:"8px"},children:[O("div",{style:{opacity:0.6},children:["Loading ",r," viewer..."]},void 0,!0,void 0,this),O("div",{style:{width:"24px",height:"24px",border:"2px solid var(--c-line)",borderTopColor:"var(--c-muted)",borderRadius:"50%",animation:"spin 1s linear infinite"}},void 0,!1,void 0,this),O("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return O("div",{style:{flex:1,width:"100%",height:"100%",minWidth:0,minHeight:0,display:"flex",flexDirection:"column"},children:[P$&&P$!=="ready"&&O("div",{style:{padding:"6px 10px",fontSize:"11px",background:P$==="error"?"var(--c-danger-12)":"var(--c-warn-10)",color:P$==="error"?"var(--c-danger)":"var(--c-warn)",borderBottom:`1px solid ${P$==="error"?"var(--c-danger-12)":"var(--c-warn-15)"}`},children:j$},void 0,!1,void 0,this),F&&O("div",{style:{padding:"6px 10px",fontSize:"11px",background:"var(--c-danger-12)",color:"var(--c-danger)",borderBottom:"1px solid var(--c-danger-12)",display:"flex",alignItems:"center",gap:"6px"},children:[O("span",{children:"⚠"},void 0,!1,void 0,this),O("span",{style:{flex:1},children:F},void 0,!1,void 0,this),O("button",{type:"button",onClick:()=>{Y(null),I("loading"),Q((b$)=>b$+1)},style:{background:"var(--c-surface-hover)",border:"1px solid var(--c-danger-12)",borderRadius:"3px",color:"var(--c-danger)",cursor:"pointer",fontSize:"10px",padding:"1px 6px"},children:"Retry"},void 0,!1,void 0,this),O("button",{type:"button",onClick:()=>Y(null),style:{background:"none",border:"none",color:"var(--c-danger)",cursor:"pointer",fontSize:"13px",padding:"0 2px"},children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H==="loading"&&O("div",{style:{padding:"8px",fontSize:"11px",color:"var(--c-muted)"},children:"Connecting to ext-app viewer..."},void 0,!1,void 0,this),O("div",{style:{flex:1,position:"relative",display:"flex",minHeight:0,height:"100%"},children:[O("iframe",{ref:g,...d.attributes,sandbox:s,allow:LW(c?.permissions),style:{flex:1,width:"100%",height:"100%",minHeight:0,border:"none",background:"var(--c-panel)",pointerEvents:g$&&H!=="loading"?"auto":"none"},title:`Ext App: ${r}`},l,!1,void 0,this),!g$&&O("button",{type:"button",onClick:(b$)=>{b$.stopPropagation(),z6(w)},class:"ext-app-preview-catcher",title:"Click to open",style:{position:"absolute",top:0,right:"56px",bottom:"56px",left:0,background:"transparent",border:"none",padding:0,margin:0,cursor:"zoom-in"},"aria-label":"Open full view to edit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Z0($,v,g){let _=V($);_.current=$;let U=V(null);m(()=>{if(!g)return;function z(b){if(b.source!==v.current?.contentWindow)return;let J=b.data;if(!J||J.source!=="pmx-canvas-frame"||J.type!=="content-height"||J.token!==g)return;let G=_.current,K=typeof J.height==="number"?J.height:0,W=d3(G,K);if(W===null)return;if(Y4(G.id,{width:G.size.width,height:W}),U.current!==null)window.clearTimeout(U.current);U.current=window.setTimeout(()=>{d$({recordHistory:!1}),U.current=null},300)}return window.addEventListener("message",z),()=>{if(window.removeEventListener("message",z),U.current!==null)window.clearTimeout(U.current),U.current=null}},[$.id,g])}function QA($,v,g,_,U,z,b){if(!$)return $;try{let J=new URL($,window.location.origin);if(J.searchParams.set("theme",T$.value==="light"?"light":"dark"),v)J.searchParams.set("display","expanded");if(typeof g==="number")J.searchParams.set("v",String(g));if(_)J.searchParams.set("axToken",_);if(U)J.searchParams.set("axNodeId",U);if(z)J.searchParams.set("frameToken",z);if(b)J.searchParams.set("fit","content");return J.toString()}catch{return $}}function NA($,v=window.location.origin){if(!$)return!1;try{let g=new URL(v).origin,_=new URL($,g);return _.origin===g&&_.pathname.startsWith("/api/canvas/frame-documents/")}catch{return!1}}function f6({node:$,expanded:v=!1}){if($.data.mode==="ext-app")return O(ZW,{node:$,expanded:v},void 0,!1,void 0,this);return O(rA,{node:$,expanded:v},void 0,!1,void 0,this)}function rA({node:$,expanded:v}){let g=V(null),_=$.type==="mcp-app"&&$.data.viewerType==="web-artifact",U=$.type==="json-render"||$.type==="graph",z=$.data.axCapabilities?.enabled,J=(U||_)&&(_?z===!0:z!==!1),G=_?"mcp-app":"json-render",K=t$(()=>J?`ax-${crypto.randomUUID()}`:"",[J]),W=V2($)&&!v,B=t$(()=>W?`frame-${crypto.randomUUID()}`:"",[W]);Z0($,g,B),m(()=>{if(!J||!K)return;function Q(u){if(u.source!==g.current?.contentWindow)return;let E=u.data;if(!E||E.source!=="pmx-canvas-ax"||E.token!==K||E.nodeId!==$.id)return;let M=E.interaction;if(!M||typeof M.type!=="string")return;let n=M.type;H6({type:n,sourceNodeId:$.id,sourceSurface:G,...M.payload&&typeof M.payload==="object"?{payload:M.payload}:{}}).then((t)=>{if(t.ok)uv("context","AX interaction",n,[$.id]);else uv("remove","AX interaction rejected",t.error??t.code??"",[$.id]);g.current?.contentWindow?.postMessage({source:"pmx-canvas-ax-ack",token:K,...E.correlationId?{correlationId:E.correlationId}:{},interaction:{type:n},result:t},"*")})}return window.addEventListener("message",Q),()=>window.removeEventListener("message",Q)},[J,K,$.id]);let k=F6.value,P=()=>{if(!J||!K||k==null)return;g.current?.contentWindow?.postMessage({source:"pmx-canvas-html-node",type:"ax-update",token:K,state:k},"*")};m(P,[J,K,k]);let A=typeof $.data.specVersion==="number"?$.data.specVersion:void 0,H=QA($.data.url||"",v,A,K||void 0,J?$.id:void 0,B||void 0,W),I=$.data.sourceServer||"",F=$.data.hostMode||"hosted",Y=$.data.fallbackReason,X=$.data.trustedDomain===!0||NA(H);if(F==="fallback")return O("div",{style:{display:"flex",flexDirection:"column",gap:"8px",fontSize:"12px"},children:[O("div",{style:{color:"var(--c-warn)",display:"flex",alignItems:"center",gap:"6px"},children:[O("span",{children:"⚠"},void 0,!1,void 0,this),O("span",{children:"Cannot embed — opened externally"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y&&O("div",{style:{color:"var(--c-muted)",fontSize:"11px"},children:["Reason: ",Y]},void 0,!0,void 0,this),O("a",{href:H,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--c-accent)",fontSize:"12px",wordBreak:"break-all"},children:H},void 0,!1,void 0,this),I&&O("div",{style:{color:"var(--c-dim)",fontSize:"10px"},children:["Source: ",I]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);return O("div",{style:{height:"100%",display:"flex",flexDirection:"column",...v?{flex:1,minHeight:0,width:"100%"}:{}},children:[!X&&O("div",{style:{padding:"4px 8px",fontSize:"10px",background:"var(--c-warn-10)",color:"var(--c-warn)",borderBottom:"1px solid var(--c-warn-15)"},children:"Unverified domain"},void 0,!1,void 0,this),O("iframe",{ref:g,src:H,class:"mcp-app-frame",sandbox:"allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox",allow:"clipboard-read; clipboard-write",loading:"lazy",onLoad:P,style:{flex:1,minHeight:0,width:"100%"},title:`MCP App: ${I}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Ng=null;function a$($){return getComputedStyle(document.documentElement).getPropertyValue($).trim()}function S0(){if(Ng)return Ng;return Ng={bg:a$("--c-bg"),panel:a$("--c-panel"),panelSoft:a$("--c-panel-soft"),line:a$("--c-line"),text:a$("--c-text"),textSoft:a$("--c-text-soft"),muted:a$("--c-muted"),dim:a$("--c-dim"),accent:a$("--c-accent"),ok:a$("--c-ok"),warn:a$("--c-warn"),warnAlt:a$("--c-warn-alt"),danger:a$("--c-danger"),purple:a$("--c-purple"),thinking:a$("--c-thinking"),subagent:a$("--c-subagent"),font:a$("--font"),mono:a$("--mono")},Ng}function OU(){Ng=null}var M0={idle:"var(--c-muted)",running:"var(--c-accent)",planning:"var(--c-thinking)",thinking:"var(--c-thinking)",drafting:"var(--c-accent)",tooling:"var(--c-accent)",review:"var(--c-ok)","waiting-approval":"var(--c-warn)",waiting:"var(--c-warn-alt)"};function $G($){let v=typeof $.data.phase==="string"&&$.data.phase.trim().length>0?$.data.phase.trim():"";if(v)return v;let g=typeof $.data.content==="string"&&$.data.content.trim().length>0?$.data.content.trim():"";if(g)return g;return(typeof $.data.status==="string"&&$.data.status.trim().length>0?$.data.status.trim():"")||"idle"}function GU({node:$}){let v=$G($),g=$.data.detail||"",_=$.data.message||"",U=$.data.level||"ok",z=$.data.activeTool,b=$.data.subagent,J=M0[v]??"var(--c-muted)",G=v!=="idle";return O("div",{style:{display:"flex",flexDirection:"column",gap:"8px",fontSize:"12px"},children:[O("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[O("div",{style:{width:"8px",height:"8px",borderRadius:"50%",background:J,boxShadow:G?`0 0 8px ${J}`:"none",animation:G?"pulse 1.5s infinite":"none",flexShrink:0}},void 0,!1,void 0,this),O("span",{style:{fontWeight:600,color:J,textTransform:"uppercase",letterSpacing:"0.05em"},children:v},void 0,!1,void 0,this),g&&O("span",{style:{color:"var(--c-muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:g},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z&&O("div",{style:{display:"flex",alignItems:"center",gap:"6px",color:"var(--c-warn)"},children:[O("span",{style:{fontSize:"10px"},children:"⚙"},void 0,!1,void 0,this),O("span",{style:{fontFamily:"var(--mono)",fontSize:"11px"},children:z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),b&&b.state!=="completed"&&O("div",{style:{display:"flex",alignItems:"center",gap:"6px",color:"var(--c-subagent)"},children:[O("span",{style:{fontSize:"10px"},children:"⠉"},void 0,!1,void 0,this),O("span",{children:b.name},void 0,!1,void 0,this),O("span",{style:{color:"var(--c-muted)",fontSize:"10px"},children:["(",b.state,")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),_&&O("div",{style:{color:U==="warn"?"var(--c-warn)":U==="error"?"var(--c-danger)":"var(--c-muted)",lineHeight:1.4},children:_},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function KU($){return typeof $==="string"&&$.trim().length>0?$.trim():null}function SW($){if(typeof $==="string"){let U=KU($);return U?{title:"Evidence warning",detail:U}:null}if(!$||typeof $!=="object")return null;let v=$,g=KU(v.title)??"Evidence warning",_=KU(v.detail);return _?{title:g,detail:_}:null}function uA($){let v=[],g=SW($.data.warning);if(g)v.push(g);let _=$.data.warnings;if(Array.isArray(_))for(let z of _){let b=SW(z);if(b)v.push(b)}let U=KU($.data.validationStatus)?.toLowerCase();if(U==="failed"||U==="invalid")v.push({title:"Image failed validation",detail:KU($.data.validationMessage)??"Review this image before using it as evidence."});return v}function RA($){let v=[$.data.title,$.data.caption,$.data.alt,$.data.src,$.data.path].map((g)=>KU(g)?.toLowerCase()??"").join(" ");if(v.length===0)return!1;return["login","log in","sign in","signin","password","2fa","mfa","authenticate","authentication","sso"].some((g)=>v.includes(g))}function MW($){let v=uA($);if(v.length>0)return v;if(RA($))return[{title:"Captured login page",detail:"This image looks like an auth screen. Treat it as environment context, not product evidence."}];return[]}function Q0({node:$,expanded:v=!1}){let g=$.data.src||"",_=$.data.alt||$.data.title||"Image",U=$.data.caption||"",z=MW($),b=g.startsWith("data:")||g.startsWith("http://")||g.startsWith("https://")?g:`/api/canvas/image/${$.id}`,[J,G]=x(!1),[K,W]=x(!1),[B,k]=x(1),[P,A]=x({x:0,y:0}),[H,I]=x({w:0,h:0}),F=V(null),Y=V(!1),X=V({x:0,y:0}),Q=N((p)=>{let c=p.target;I({w:c.naturalWidth,h:c.naturalHeight}),G(!0),W(!1)},[]),u=N(()=>{W(!0),G(!1)},[]);m(()=>{k(1),A({x:0,y:0})},[g]);let E=N((p)=>{p.preventDefault(),p.stopPropagation();let c=p.deltaY>0?0.9:1.1;k((P$)=>Math.max(0.25,Math.min(10,P$*c)))},[]),M=N((p)=>{if(B<=1)return;p.stopPropagation(),Y.current=!0,X.current={x:p.clientX,y:p.clientY},p.target.setPointerCapture(p.pointerId)},[B]),n=N((p)=>{if(!Y.current)return;let c=p.clientX-X.current.x,P$=p.clientY-X.current.y;X.current={x:p.clientX,y:p.clientY},A((Z$)=>({x:Z$.x+c,y:Z$.y+P$}))},[]),t=N(()=>{Y.current=!1},[]),r=N(()=>{k(1),A({x:0,y:0})},[]);if(!g)return O("div",{class:"image-node-empty",children:[O("div",{class:"image-node-empty-icon",children:"\uD83D\uDDBC"},void 0,!1,void 0,this),O("div",{class:"image-node-empty-text",children:"No image source"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let R=H.w>0?`${H.w}×${H.h}`:"",$$=Math.round(B*100);return O("div",{class:`image-node ${v?"image-node-expanded":""}`,ref:F,children:[z.length>0&&O("div",{class:"image-node-warning-stack",children:z.map((p)=>O("div",{class:"image-node-warning",children:[O("span",{class:"image-node-warning-title",children:p.title},void 0,!1,void 0,this),O("span",{class:"image-node-warning-detail",children:p.detail},void 0,!1,void 0,this)]},`${p.title}-${p.detail}`,!0,void 0,this))},void 0,!1,void 0,this),O("div",{class:"image-node-viewport",onWheel:E,onPointerDown:M,onPointerMove:n,onPointerUp:t,style:{cursor:B>1?"grab":"default"},children:[!J&&!K&&O("div",{class:"image-node-loading",children:"Loading…"},void 0,!1,void 0,this),K&&O("div",{class:"image-node-error",children:[O("div",{class:"image-node-error-icon",children:"⚠"},void 0,!1,void 0,this),O("div",{children:"Failed to load image"},void 0,!1,void 0,this),O("div",{class:"image-node-error-path",children:g},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("img",{src:b,alt:_,onLoad:Q,onError:u,draggable:!1,style:{transform:`translate(${P.x}px, ${P.y}px) scale(${B})`,opacity:J?1:0,display:K?"none":"block"}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(U||R||B!==1)&&O("div",{class:"image-node-footer",children:[U&&O("span",{class:"image-node-caption",children:U},void 0,!1,void 0,this),O("span",{class:"image-node-meta",children:[R&&O("span",{children:R},void 0,!1,void 0,this),B!==1&&O("button",{type:"button",class:"image-node-zoom-reset",onClick:r,title:"Reset zoom",children:[$$,"% ↺"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function QW({node:$}){let v=$.data.children??[],g=T.value,_=v.filter((J)=>g.has(J)),U=_.length,z={};for(let J of _){let G=g.get(J);if(G)z[G.type]=(z[G.type]??0)+1}let b=Object.entries(z).map(([J,G])=>`${G} ${J}`).join(", ");return O("div",{class:"group-node-body",children:[O("div",{class:"group-summary",children:[O("span",{class:"group-child-count",children:[U," node",U!==1?"s":""]},void 0,!0,void 0,this),b&&O("span",{class:"group-type-summary",children:b},void 0,!1,void 0,this)]},void 0,!0,void 0,this),U===0&&O("div",{class:"group-empty-hint",children:"Drag nodes here or use the selection bar to group nodes"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function yA($){try{return new URL($).host}catch{return $}}function DA($){if(!$)return null;let v=new Date($);return Number.isNaN(v.getTime())?null:v.toLocaleString()}function N0({node:$,expanded:v=!1}){let g=typeof $.data.url==="string"?$.data.url:"",_=typeof $.data.pageTitle==="string"?$.data.pageTitle:"",U=typeof $.data.description==="string"?$.data.description:"",z=typeof $.data.excerpt==="string"?$.data.excerpt:typeof $.data.content==="string"?$.data.content:"",b=typeof $.data.status==="string"?$.data.status:"idle",J=typeof $.data.error==="string"?$.data.error:"",G=DA(typeof $.data.fetchedAt==="string"?$.data.fetchedAt:void 0),K=typeof $.data.statusCode==="number"?$.data.statusCode:null,W=typeof $.data.imageUrl==="string"?$.data.imageUrl:"",B=$.data.frameBlocked===!0,k=typeof $.data.frameBlockedReason==="string"?$.data.frameBlockedReason:"",[P,A]=x(!1),[H,I]=x(v);m(()=>{if(v)I(!0)},[v]);let F=N(async()=>{if(!g||P)return;A(!0);try{await O_($.id)}finally{A(!1)}},[$.id,P,g]);if(!g)return O("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"12px"},children:"No webpage URL set"},void 0,!1,void 0,this);let Y=b==="ready"?"var(--c-ok)":b==="error"?"var(--c-danger)":"var(--c-warn)";return O("div",{style:{display:"flex",flexDirection:"column",gap:"12px",height:"100%"},children:[O("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"12px"},children:[O("div",{style:{minWidth:0,flex:1},children:[O("div",{style:{fontSize:"12px",color:"var(--c-muted)"},children:yA(g)},void 0,!1,void 0,this),O("div",{style:{fontSize:v?"18px":"15px",fontWeight:700,color:"var(--c-text)"},children:_||$.data.title||g},void 0,!1,void 0,this),O("a",{href:g,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--c-accent)",fontSize:"12px",wordBreak:"break-all",textDecoration:"none"},children:g},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{style:{display:"inline-flex",alignItems:"center",gap:"6px",padding:"4px 8px",borderRadius:"999px",background:"rgba(255,255,255,0.04)",color:Y,fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.04em",flexShrink:0},children:[O("span",{style:{width:"7px",height:"7px",borderRadius:"999px",background:Y}},void 0,!1,void 0,this),b]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),(U||W)&&O("div",{style:{display:"grid",gridTemplateColumns:W&&v?"160px 1fr":"1fr",gap:"12px",alignItems:"start"},children:[W&&v&&O("img",{src:W,alt:_||"Webpage preview image",style:{width:"160px",height:"96px",objectFit:"cover",borderRadius:"10px",border:"1px solid var(--c-line)",background:"var(--c-panel-soft)"}},void 0,!1,void 0,this),U&&O("p",{style:{margin:0,color:"var(--c-text-soft)",lineHeight:1.5,fontSize:v?"14px":"12px"},children:U},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"},children:[O("button",{type:"button",onClick:F,disabled:P,style:{border:"1px solid var(--c-line)",background:"var(--c-panel-soft)",color:"var(--c-text)",borderRadius:"8px",padding:"6px 10px",cursor:P?"progress":"pointer",fontSize:"12px"},children:P||b==="fetching"?"Refreshing…":"Refresh"},void 0,!1,void 0,this),v&&!B&&O("button",{type:"button",onClick:()=>I((X)=>!X),style:{border:"1px solid var(--c-line)",background:"var(--c-panel-soft)",color:"var(--c-text)",borderRadius:"8px",padding:"6px 10px",cursor:"pointer",fontSize:"12px"},children:H?"Hide live preview":"Show live preview"},void 0,!1,void 0,this),O("button",{type:"button",onClick:()=>window.open(g,"_blank","noopener"),style:{border:"1px solid var(--c-line)",background:"transparent",color:"var(--c-accent)",borderRadius:"8px",padding:"6px 10px",cursor:"pointer",fontSize:"12px"},children:"Open in browser"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),v&&B&&O("div",{style:{border:"1px solid var(--c-line)",borderRadius:"12px",overflow:"hidden",background:"var(--c-panel-soft)"},children:[O("div",{style:{padding:"8px 12px",fontSize:"11px",color:"var(--c-muted)",borderBottom:"1px solid var(--c-line)",background:"rgba(255,255,255,0.03)"},children:"Live preview unavailable. This site refuses embedding, so PMX Canvas cannot show it inline."},void 0,!1,void 0,this),O("div",{style:{padding:"20px",color:"var(--c-text-soft)",lineHeight:1.6,fontSize:"13px"},children:k||"The remote site blocks iframe embedding."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),v&&H&&!B&&O("div",{style:{border:"1px solid var(--c-line)",borderRadius:"12px",overflow:"hidden",background:"var(--c-panel-soft)"},children:[O("div",{style:{padding:"8px 12px",fontSize:"11px",color:"var(--c-muted)",borderBottom:"1px solid var(--c-line)",background:"rgba(255,255,255,0.03)"},children:"Live preview (best effort). If this stays blank, the site likely blocks framing. The cached text snapshot below still works."},void 0,!1,void 0,this),O("iframe",{class:"webpage-node-iframe",title:_||$.data.title||g,src:g,loading:"lazy",referrerPolicy:"no-referrer",sandbox:"allow-downloads allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-presentation allow-scripts",style:{display:"block",width:"100%",height:v?"320px":"180px",border:"none",background:"#fff"}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(G||K!==null)&&O("div",{style:{display:"flex",gap:"12px",flexWrap:"wrap",color:"var(--c-muted)",fontSize:"11px"},children:[G&&O("span",{children:["Fetched ",G]},void 0,!0,void 0,this),K!==null&&O("span",{children:["HTTP ",K]},void 0,!0,void 0,this),B&&O("span",{children:"Preview blocked by site"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),J&&O("div",{style:{color:"var(--c-danger)",fontSize:"12px",lineHeight:1.5},children:J},void 0,!1,void 0,this),O("div",{style:{flex:1,minHeight:0,overflow:"auto",border:"1px solid var(--c-line)",borderRadius:"10px",background:"var(--c-panel-soft)",padding:v?"14px":"10px"},children:z?O("div",{style:{whiteSpace:"pre-wrap",lineHeight:1.55,color:"var(--c-text)",fontSize:v?"14px":"12px"},children:z},void 0,!1,void 0,this):O("div",{style:{color:"var(--c-dim)",fontStyle:"italic"},children:b==="error"?"No cached page text available.":"Waiting for page text..."},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function NW($){let v=5381;for(let g=0;g<$.length;g+=1)v=(v<<5)+v+$.charCodeAt(g)|0;return(v>>>0).toString(36)}function vG($,v={}){let g=new URLSearchParams;if(g.set("theme",v.theme??T$.value),v.themeToken)g.set("themeToken",v.themeToken);if(v.present)g.set("present","1");if(v.presentToken)g.set("presentToken",v.presentToken);if(v.v)g.set("v",v.v);if(v.axToken)g.set("axToken",v.axToken);if(v.frameToken)g.set("frameToken",v.frameToken);return`/api/canvas/surface/${encodeURIComponent($)}?${g.toString()}`}function r0($){return YW($.type,$.data)}async function u0($){let v=vG($.id);if(!(await AK($.id,v)).opened)window.open(v,"_blank","noopener")}function rW($){return $.type==="html"&&$.data.presentation===!0}function rg({node:$,expanded:v=!1,presentation:g=!1,presentationExitToken:_,autoFocus:U=!1}){let z=V(null),b=T$.value,J=t$(()=>`theme-${crypto.randomUUID()}`,[]),G=t$(()=>`ax-${crypto.randomUUID()}`,[]),K=t$(()=>`frame-${crypto.randomUUID()}`,[]),W=typeof $.data.html==="string"?$.data.html:typeof $.data.content==="string"?$.data.content:"",B=t$(()=>NW(W),[W]),k=t$(()=>W?vG($.id,{theme:b,themeToken:J,present:g,presentToken:_,v:B,axToken:G,frameToken:K}):"",[W,g,_,J,B,$.id,G,K]);Z0($,z,v?"":K),m(()=>{function F(Y){if(Y.source!==z.current?.contentWindow)return;let X=Y.data;if(!X||X.source!=="pmx-canvas-ax"||X.token!==G||X.nodeId!==$.id)return;let Q=X.interaction;if(!Q||typeof Q.type!=="string")return;let u=Q.type;H6({type:u,sourceNodeId:$.id,sourceSurface:"html-node",...Q.payload&&typeof Q.payload==="object"?{payload:Q.payload}:{}}).then((E)=>{if(E.ok)uv("context","AX interaction",u,[$.id]);else uv("remove","AX interaction rejected",E.error??E.code??"",[$.id]);z.current?.contentWindow?.postMessage({source:"pmx-canvas-ax-ack",token:G,...X.correlationId?{correlationId:X.correlationId}:{},interaction:{type:u},result:E},"*")})}return window.addEventListener("message",F),()=>window.removeEventListener("message",F)},[G,$.id]),m(()=>{if(z.current?.contentWindow?.postMessage({source:"pmx-canvas-html-node",type:"theme-update",token:J,theme:b},"*"),U)z.current?.focus()},[b,J]);let P=$.data.axCapabilities,A=P?.enabled===!0&&(!Array.isArray(P.allowed)||P.allowed.length>0),H=F6.value;m(()=>{if(!A||H==null)return;z.current?.contentWindow?.postMessage({source:"pmx-canvas-html-node",type:"ax-update",token:G,state:H},"*")},[A,H,G]),m(()=>{if(!U)return;let F=window.setTimeout(()=>z.current?.focus(),0);return()=>window.clearTimeout(F)},[U,k]);let I=()=>{if(z.current?.contentWindow?.postMessage({source:"pmx-canvas-html-node",type:"theme-update",token:J,theme:b},"*"),A&&F6.value!=null)z.current?.contentWindow?.postMessage({source:"pmx-canvas-html-node",type:"ax-update",token:G,state:F6.value},"*");if(U)z.current?.focus()};if(!W)return O("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"12px"},children:"No HTML content set"},void 0,!1,void 0,this);return O("iframe",{ref:z,class:g?"html-node-frame html-node-frame-presentation":"html-node-frame",title:typeof $.data.title==="string"?$.data.title:"HTML node",sandbox:"allow-scripts",src:k,tabIndex:U?0:void 0,onLoad:I,style:{width:"100%",height:"100%",minHeight:g?0:v?"70vh":"300px",border:"none",background:"var(--c-bg)",borderRadius:g?0:"6px",display:"block"}},void 0,!1,void 0,this)}var UG=null;async function uW(){if(!UG)UG=await HK();return UG}function RW($,v){if(!$)return null;let g=$.toLowerCase(),_=v.find((z)=>z.name.toLowerCase()===g);if(_)return _.name;let U=v.filter((z)=>z.name.toLowerCase().startsWith(g));return U.length===1?U[0].name:null}function TA($){return $.replace(/<script[\s>][\s\S]*?<\/script>/gi,"").replace(/<iframe[\s>][\s\S]*?<\/iframe>/gi,"").replace(/<object[\s>][\s\S]*?<\/object>/gi,"").replace(/<embed[\s>][\s\S]*?(?:\/>|<\/embed>)/gi,"").replace(/<link[\s>][\s\S]*?(?:\/>|<\/link>)/gi,"").replace(/\bon\w+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,"").replace(/href\s*=\s*"javascript:[^"]*"/gi,'href="#"').replace(/href\s*=\s*'javascript:[^']*'/gi,"href='#'")}function jA({html:$}){let v=V(null);return m(()=>{let g=v.current;if(!g)return;if(g.replaceChildren(),!$)return;let _=document.createElement("template");_.innerHTML=$,g.append(_.content.cloneNode(!0))},[$]),O("div",{ref:v},void 0,!1,void 0,this)}function VA($,v){return`${$.role}:${$.status??"none"}:${v}:${$.text}`}function yW({count:$}){if($===0)return null;return O("div",{style:{padding:"4px 8px",fontSize:"11px",color:"var(--c-accent)",background:"rgba(70,182,255,0.08)",borderRadius:"var(--radius-sm)",flexShrink:0},children:["✦"," ",$," context node",$!==1?"s":""," attached"]},void 0,!0,void 0,this)}function DW({message:$,onDismiss:v}){if(!$)return null;return O("div",{style:{padding:"4px 8px",fontSize:"11px",color:"var(--c-danger)",background:"rgba(255,80,80,0.08)",borderRadius:"var(--radius-sm)",display:"flex",alignItems:"center",gap:"6px",flexShrink:0},children:[O("span",{style:{flex:1},children:$},void 0,!1,void 0,this),O("button",{type:"button",onClick:v,style:{background:"none",border:"none",color:"var(--c-danger)",cursor:"pointer",fontSize:"13px",padding:"0 2px"},children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function R0({node:$,expanded:v=!1}){let g=Array.isArray($.data.turns)?$.data.turns:[],_=g.length===0,U=$.data.text||"",z=$.data.status||"draft",b=_?z:$.data.threadStatus||"draft",J=b==="draft",G=b==="pending"||b==="sending",K=b==="streaming",W=b==="answered",[B,k]=x(""),[P,A]=x(""),[H,I]=x(null),[F,Y]=x(new Map),X=V(null),Q=V(null),u=g[g.length-1],E=`${g.length}:${u?.role??""}:${u?.status??""}:${Math.floor((u?.text?.length??0)/200)}`;m(()=>{if(v&&J&&X.current)X.current.focus()},[v,J]),m(()=>{if(!E)return;if(Q.current)Q.current.scrollTo({top:Q.current.scrollHeight,behavior:"smooth"})},[E]);let M=V(null),n=V(g);n.current=g,m(()=>{let c=g.some((Z$)=>Z$.role==="assistant"&&Z$.status==="streaming"),P$=()=>{let Z$=!1,w=n.current.map((l,e)=>({turn:l,index:e})).filter(({turn:l})=>l.role==="assistant"&&l.text);if(w.length===0)return;return Promise.all(w.map(async({turn:l,index:e})=>{let s=await g6(l.text);return{index:e,html:TA(s)}})).then((l)=>{if(Z$)return;let e=new Map;for(let s of l)e.set(s.index,s.html);Y(e)}),()=>{Z$=!0}};if(!c){if(M.current)clearTimeout(M.current),M.current=null;return P$()}if(M.current)clearTimeout(M.current);return M.current=setTimeout(()=>{M.current=null,P$()},400),()=>{if(M.current)clearTimeout(M.current),M.current=null}},[g]);let t=N(async()=>{let c=B.trim();if(!c)return;let P$=B;I(null),U$($.id,{turns:[{role:"user",text:c,status:"pending"}],threadStatus:"pending",text:c}),k("");let Z$=Array.isArray($.data.contextNodeIds)?$.data.contextNodeIds:void 0;if(!(await XU(c,$.position,$.id,Z$,$.id)).ok)U$($.id,{turns:[],threadStatus:"draft",text:"",status:"draft"}),k(P$),I("Failed to send prompt. Your draft has been restored.")},[B,$.id,$.position,$.data.contextNodeIds]),r=N(async()=>{let c=P.trim();if(!c)return;let P$=P;I(null);let Z$=Array.isArray($.data.turns)?[...$.data.turns]:[];if(Z$.push({role:"user",text:c,status:"pending"}),U$($.id,{turns:Z$,threadStatus:"pending"}),A(""),!(await LK($.id,c)).ok)Z$.pop(),U$($.id,{turns:Z$,threadStatus:"answered"}),A(P$),I("Failed to send reply. Your draft has been restored.")},[P,$.id,$.data.turns]),R=N((c)=>{if(c.key==="Enter"&&(c.metaKey||c.ctrlKey)){c.preventDefault(),t();return}if(c.key==="Tab"&&B.startsWith("/")){c.preventDefault();let P$=B.slice(1).split(/\s/)[0];if(P$)uW().then((Z$)=>{let i$=RW(P$,Z$);if(i$)k(`/${i$}`)})}},[t,B]),$$=N((c)=>{if(c.key==="Enter"&&(c.metaKey||c.ctrlKey)){c.preventDefault(),r();return}if(c.key==="Tab"&&P.startsWith("/")){c.preventDefault();let P$=P.slice(1).split(/\s/)[0];if(P$)uW().then((Z$)=>{let i$=RW(P$,Z$);if(i$)A(`/${i$}`)})}},[r,P]),p=Array.isArray($.data.contextNodeIds)?$.data.contextNodeIds.length:0;if(J&&g.length===0)return O("div",{class:"prompt-node-inner",style:{display:"flex",flexDirection:"column",height:"100%",gap:"8px"},children:[O(yW,{count:p},void 0,!1,void 0,this),O(DW,{message:H,onDismiss:()=>I(null)},void 0,!1,void 0,this),O("textarea",{ref:X,value:B,onInput:(c)=>k(c.target.value),onKeyDown:R,placeholder:"Ask the agent something…",spellcheck:!1,style:{flex:1,resize:"none",background:"rgba(10,14,30,0.4)",border:"1px solid var(--c-line)",borderRadius:"var(--radius-sm)",color:"var(--c-text)",fontFamily:"var(--font)",fontSize:"13px",lineHeight:"1.5",padding:"8px 10px",outline:"none"}},void 0,!1,void 0,this),O("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[O("span",{style:{fontSize:"10px",color:"var(--c-muted)"},children:["⌘","+Enter to send"]},void 0,!0,void 0,this),O("button",{type:"button",onClick:t,disabled:!B.trim(),style:{padding:"5px 14px",fontSize:"12px",fontWeight:600,background:B.trim()?"var(--c-accent)":"var(--c-line)",color:B.trim()?"var(--c-contrast-fg)":"var(--c-muted)",border:"none",borderRadius:"var(--radius-sm)",cursor:B.trim()?"pointer":"default"},children:"Send"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(_)return O("div",{class:"prompt-node-inner",style:{display:"flex",flexDirection:"column",height:"100%"},children:[O("div",{style:{flex:1,padding:"2px 0",fontSize:"13px",lineHeight:"1.55",color:"var(--c-text)",whiteSpace:"pre-wrap",wordBreak:"break-word",overflow:"auto"},children:U},void 0,!1,void 0,this),O("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",paddingTop:"6px",borderTop:"1px solid var(--c-line)",marginTop:"4px"},children:O("span",{style:{fontSize:"10px",textTransform:"uppercase",fontWeight:600,color:G?"var(--c-warn)":W?"var(--c-ok)":"var(--c-muted)"},children:G?"Sending…":W?"Answered":z},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return O("div",{class:"prompt-node-inner",style:{display:"flex",flexDirection:"column",height:"100%"},children:[O(yW,{count:p},void 0,!1,void 0,this),O(DW,{message:H,onDismiss:()=>I(null)},void 0,!1,void 0,this),O("div",{ref:Q,style:{flex:1,overflow:"auto",minHeight:0},children:g.map((c,P$)=>O("div",{children:[P$>0&&O("div",{class:"thread-turn-divider"},void 0,!1,void 0,this),c.role==="user"?O("div",{class:"thread-turn-user",children:[O("div",{class:"thread-turn-role",children:[O("span",{class:"status-dot"},void 0,!1,void 0,this),"You"]},void 0,!0,void 0,this),O("div",{style:{fontSize:v?"15px":"13px",lineHeight:v?"1.7":"1.55",color:"var(--c-text)",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:c.text},void 0,!1,void 0,this)]},void 0,!0,void 0,this):O("div",{class:"thread-turn-assistant",children:[O("div",{class:"thread-turn-role",children:[O("span",{class:`status-dot${c.status==="streaming"?" pulsing":""}`},void 0,!1,void 0,this),"PMX"]},void 0,!0,void 0,this),c.status==="streaming"&&!c.text&&O("div",{style:{height:"2px",background:"linear-gradient(90deg, transparent, var(--c-ok), transparent)",animation:"response-stream-pulse 1.5s ease-in-out infinite",borderRadius:"1px",marginBottom:"4px"}},void 0,!1,void 0,this),O("div",{class:v?"md-reader-content":void 0,style:{fontSize:v?void 0:"13px",lineHeight:v?void 0:"1.55",opacity:c.text?1:0.4},children:F.get(P$)?O(e$,{children:[O(jA,{html:F.get(P$)??""},void 0,!1,void 0,this),c.status==="streaming"&&O("span",{class:"streaming-cursor"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):O("div",{style:{color:"var(--c-muted)",fontStyle:"italic"},children:c.status==="streaming"?"Waiting for response…":c.text||"Empty response"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},VA(c,P$),!0,void 0,this))},void 0,!1,void 0,this),O("div",{style:{flexShrink:0,borderTop:"1px solid var(--c-line)",marginTop:"4px",paddingTop:"6px"},children:[O("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:W?"6px":0},children:[O("span",{style:{fontSize:"10px",textTransform:"uppercase",fontWeight:600,color:K?"var(--c-accent)":G?"var(--c-warn)":W?"var(--c-ok)":"var(--c-muted)"},children:K?"Streaming…":G?"Sending…":W?"Answered":b},void 0,!1,void 0,this),O("span",{style:{fontSize:"10px",color:"var(--c-muted)"},children:[g.length," turn",g.length!==1?"s":""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),W&&O("div",{class:"thread-reply-area",children:[O("textarea",{value:P,onInput:(c)=>A(c.target.value),onKeyDown:$$,placeholder:"Reply…",spellcheck:!1,rows:2,style:{width:"100%",resize:"none",background:"rgba(10,14,30,0.4)",border:"1px solid var(--c-line)",borderRadius:"var(--radius-sm)",color:"var(--c-text)",fontFamily:"var(--font)",fontSize:"12px",lineHeight:"1.5",padding:"6px 8px",outline:"none"}},void 0,!1,void 0,this),O("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:"4px"},children:[O("span",{style:{fontSize:"10px",color:"var(--c-muted)"},children:["⌘","+Enter"]},void 0,!0,void 0,this),O("button",{type:"button",onClick:r,disabled:!P.trim(),style:{padding:"3px 10px",fontSize:"11px",fontWeight:600,background:P.trim()?"var(--c-accent)":"var(--c-line)",color:P.trim()?"var(--c-contrast-fg)":"var(--c-muted)",border:"none",borderRadius:"var(--radius-sm)",cursor:P.trim()?"pointer":"default"},children:"Reply"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function CA($){return $.replace(/<script[\s>][\s\S]*?<\/script>/gi,"").replace(/<iframe[\s>][\s\S]*?<\/iframe>/gi,"").replace(/<object[\s>][\s\S]*?<\/object>/gi,"").replace(/<embed[\s>][\s\S]*?(?:\/>|<\/embed>)/gi,"").replace(/<link[\s>][\s\S]*?(?:\/>|<\/link>)/gi,"").replace(/\bon\w+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,"").replace(/href\s*=\s*"javascript:[^"]*"/gi,'href="#"').replace(/href\s*=\s*'javascript:[^']*'/gi,"href='#'")}function fA({html:$}){let v=V(null);return m(()=>{let g=v.current;if(!g)return;if(g.replaceChildren(),!$)return;let _=document.createElement("template");_.innerHTML=$,g.append(_.content.cloneNode(!0))},[$]),O("div",{ref:v},void 0,!1,void 0,this)}function y0({node:$,expanded:v=!1}){let g=$.data.content||"",_=$.data.status||"streaming",[U,z]=x(""),b=_==="streaming",J=_==="complete";m(()=>{if(!g){z("");return}let K=!1;return g6(g).then((W)=>{if(!K)z(CA(W))}),()=>{K=!0}},[g]);let G=N(()=>{XU("",{x:$.position.x,y:$.position.y+$.size.height+24},$.id)},[$]);return O("div",{class:"response-node-inner",style:{display:"flex",flexDirection:"column",height:"100%"},children:[b&&O("div",{class:"response-streaming-bar",style:{height:"2px",background:"linear-gradient(90deg, transparent, var(--c-accent), transparent)",animation:"response-stream-pulse 1.5s ease-in-out infinite",borderRadius:"1px",marginBottom:"4px",flexShrink:0}},void 0,!1,void 0,this),O("div",{class:v?"md-reader":void 0,style:{flex:1,overflow:"auto",minHeight:0,opacity:g?1:0.4,transition:"opacity 0.2s ease"},children:U?O("div",{class:v?"md-reader-content":void 0,children:O(fA,{html:U},void 0,!1,void 0,this)},void 0,!1,void 0,this):O("div",{style:{color:"var(--c-muted)",fontStyle:"italic",fontSize:"13px"},children:b?"Waiting for response…":"Empty response"},void 0,!1,void 0,this)},void 0,!1,void 0,this),O("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",paddingTop:"6px",borderTop:"1px solid var(--c-line)",marginTop:"4px",flexShrink:0},children:[O("span",{style:{fontSize:"10px",textTransform:"uppercase",fontWeight:600,color:b?"var(--c-accent)":J?"var(--c-ok)":"var(--c-muted)"},children:b?"Streaming…":J?"Complete":_},void 0,!1,void 0,this),J&&O("button",{type:"button",onClick:G,style:{padding:"3px 10px",fontSize:"11px",background:"rgba(70,182,255,0.1)",border:"1px solid rgba(70,182,255,0.3)",borderRadius:"var(--radius-sm)",color:"var(--c-accent)",cursor:"pointer"},children:"Reply"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function TW($){return{toolName:$.toolName||$.title||"unknown",category:$.category||"other",status:$.status||"running",duration:$.duration||"",resultSummary:$.resultSummary||$.content||"",error:$.error||""}}var jW={mcp:"var(--c-accent)",file:"var(--c-warn)",subagent:"var(--c-purple)",other:"var(--c-muted)"},mA={running:"⠋",success:"✓",failed:"✕"},EA={running:"var(--c-accent)",success:"var(--c-ok)",failed:"var(--c-danger)"};function D0({node:$}){let{toolName:v,category:g,status:_,duration:U,resultSummary:z,error:b}=TW($.data),J=jW[g]??jW.other,G=mA[_]??"◌",K=EA[_]??"var(--c-muted)",W=_==="running",B=b?b.slice(0,30):z.length>30?`${z.slice(0,28)}…`:z;return O("div",{style:{display:"flex",alignItems:"center",gap:"8px",padding:"0 12px",height:"100%",overflow:"hidden"},children:[O("span",{style:{fontSize:"14px",color:K,flexShrink:0,animation:W?"pulse 1.5s infinite":"none"},children:G},void 0,!1,void 0,this),O("div",{style:{flex:1,minWidth:0,overflow:"hidden"},children:[O("div",{style:{fontFamily:"var(--mono)",fontSize:"11px",fontWeight:600,color:J,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:v},void 0,!1,void 0,this),B&&O("div",{style:{fontSize:"10px",color:b?"var(--c-danger)":"var(--c-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",lineHeight:1.3},children:B},void 0,!1,void 0,this)]},void 0,!0,void 0,this),U&&O("span",{style:{fontSize:"9px",padding:"1px 5px",borderRadius:"3px",background:"rgba(255,255,255,0.06)",color:"var(--c-muted)",flexShrink:0,whiteSpace:"nowrap"},children:U},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function _G($){let v=T.value.get($);if(!v||v.dockPosition!==null)return null;return{left:v.position.x,top:v.position.y,width:v.size.width,height:v.size.height}}function cA($){let v=$.map((G)=>_G(G)).filter((G)=>G!==null);if(v.length===0)return null;let g=Math.min(...v.map((G)=>G.left)),_=Math.min(...v.map((G)=>G.top)),U=Math.max(...v.map((G)=>G.left+G.width)),z=Math.max(...v.map((G)=>G.top+G.height)),b=54,J=46;return{left:g-b,top:_-J,width:U-g+b*2,height:z-_+J*2}}function gG($,v){return{left:`${$.left}px`,top:`${$.top}px`,width:`${$.width}px`,height:`${$.height}px`,borderRadius:`${v}px`}}function VW(){let $=Array.from(W4.value),v=Array.from(B4.value),g=eg.value;if($.length===0&&v.length===0)return null;return O("div",{class:"attention-field-layer","aria-hidden":"true",children:[g.map((_)=>{let U=cA(_.nodeIds);if(!U)return null;return O("div",{class:"attention-field-region",style:gG(U,42)},_.id,!1,void 0,this)}),v.map((_)=>{let U=_G(_);if(!U)return null;return O("div",{class:"attention-field-node attention-field-secondary",style:gG({left:U.left-18,top:U.top-18,width:U.width+36,height:U.height+36},28)},`secondary-${_}`,!1,void 0,this)}),$.map((_)=>{let U=_G(_);if(!U)return null;return O("div",{class:"attention-field-node attention-field-primary",style:gG({left:U.left-24,top:U.top-24,width:U.width+48,height:U.height+48},30)},`primary-${_}`,!1,void 0,this)})]},void 0,!0,void 0,this)}var Lv=B$(new Map),WU=B$(null),iA=480,lA=320,ug=new Map,W6=null;function zG($){Lv.value=$,xA()}function bG($){let v=ug.get($);if(v)clearTimeout(v),ug.delete($)}function CW($){bG($.id);let v=new Map(Lv.value);v.set($.id,{...$,phase:"forming"}),zG(v)}function hA($){if(bG($),!Lv.value.has($))return;let v=new Map(Lv.value);v.delete($),zG(v)}function fW($,v,g,_){let U=Lv.value.get($);if(!U||U.phase===v)return;let z=new Map(Lv.value);z.set($,{...U,phase:v,..._?{settledNodeId:_}:{}}),zG(z),bG($),ug.set($,setTimeout(()=>hA($),g))}function mW($,v){fW($,"settling",iA,v)}function JG($){fW($,"dissolving",lA)}function EW(){for(let $ of ug.values())clearTimeout($);if(ug.clear(),W6)clearInterval(W6),W6=null;WU.value=null,Lv.value=new Map}function xA(){if(W6||Lv.value.size===0)return;W6=setInterval(()=>{let $=Date.now();for(let v of Lv.value.values())if(v.phase==="forming"&&v.expiresAt<=$)JG(v.id);if(Lv.value.size===0&&W6)clearInterval(W6),W6=null},1000),W6.unref?.()}var pA={fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"};function Y$({size:$=16,children:v,...g}){return O("svg",{width:$,height:$,viewBox:"0 0 16 16",...pA,...g,children:v},void 0,!1,void 0,this)}function lW($){return O(Y$,{...$,children:[O("polyline",{points:"1 5 1 1 5 1"},void 0,!1,void 0,this),O("polyline",{points:"11 1 15 1 15 5"},void 0,!1,void 0,this),O("polyline",{points:"15 11 15 15 11 15"},void 0,!1,void 0,this),O("polyline",{points:"5 15 1 15 1 11"},void 0,!1,void 0,this),O("rect",{x:"4",y:"4",width:"8",height:"8",rx:"1"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function hW($){return O(Y$,{...$,children:[O("rect",{x:"2",y:"2",width:"12",height:"12",rx:"2"},void 0,!1,void 0,this),O("line",{x1:"8",y1:"4.5",x2:"8",y2:"6.5"},void 0,!1,void 0,this),O("line",{x1:"8",y1:"9.5",x2:"8",y2:"11.5"},void 0,!1,void 0,this),O("line",{x1:"4.5",y1:"8",x2:"6.5",y2:"8"},void 0,!1,void 0,this),O("line",{x1:"9.5",y1:"8",x2:"11.5",y2:"8"},void 0,!1,void 0,this),O("circle",{cx:"8",cy:"8",r:"1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function xW($){return O(Y$,{...$,children:[O("circle",{cx:"7",cy:"7",r:"4.5"},void 0,!1,void 0,this),O("line",{x1:"10.5",y1:"10.5",x2:"14.5",y2:"14.5"},void 0,!1,void 0,this),O("line",{x1:"5",y1:"7",x2:"9",y2:"7"},void 0,!1,void 0,this),O("line",{x1:"7",y1:"5",x2:"7",y2:"9"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function pW($){return O(Y$,{...$,children:[O("circle",{cx:"7",cy:"7",r:"4.5"},void 0,!1,void 0,this),O("line",{x1:"10.5",y1:"10.5",x2:"14.5",y2:"14.5"},void 0,!1,void 0,this),O("line",{x1:"5",y1:"7",x2:"9",y2:"7"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function oW($){return O(Y$,{...$,children:[O("rect",{x:"1.5",y:"1.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),O("rect",{x:"9.5",y:"1.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),O("rect",{x:"1.5",y:"9.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),O("rect",{x:"9.5",y:"9.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),O("line",{x1:"6.5",y1:"4",x2:"9.5",y2:"4"},void 0,!1,void 0,this),O("line",{x1:"6.5",y1:"12",x2:"9.5",y2:"12"},void 0,!1,void 0,this),O("line",{x1:"4",y1:"6.5",x2:"4",y2:"9.5"},void 0,!1,void 0,this),O("line",{x1:"12",y1:"6.5",x2:"12",y2:"9.5"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function nW($){return O(Y$,{...$,children:[O("rect",{x:"1",y:"2",width:"14",height:"12",rx:"1.5"},void 0,!1,void 0,this),O("rect",{x:"8",y:"7",width:"6",height:"6",rx:"1",fill:"currentColor","fill-opacity":"0.2"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function tW($){return O(Y$,{...$,children:[O("circle",{cx:"8",cy:"8",r:"3"},void 0,!1,void 0,this),O("line",{x1:"8",y1:"1",x2:"8",y2:"3"},void 0,!1,void 0,this),O("line",{x1:"8",y1:"13",x2:"8",y2:"15"},void 0,!1,void 0,this),O("line",{x1:"1",y1:"8",x2:"3",y2:"8"},void 0,!1,void 0,this),O("line",{x1:"13",y1:"8",x2:"15",y2:"8"},void 0,!1,void 0,this),O("line",{x1:"3.05",y1:"3.05",x2:"4.46",y2:"4.46"},void 0,!1,void 0,this),O("line",{x1:"11.54",y1:"11.54",x2:"12.95",y2:"12.95"},void 0,!1,void 0,this),O("line",{x1:"3.05",y1:"12.95",x2:"4.46",y2:"11.54"},void 0,!1,void 0,this),O("line",{x1:"11.54",y1:"4.46",x2:"12.95",y2:"3.05"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function dW($){return O(Y$,{...$,children:O("path",{d:"M13 9.5A5.5 5.5 0 1 1 6.5 3 4.5 4.5 0 0 0 13 9.5Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function aW($){return O(Y$,{...$,children:[O("path",{d:"M3 13l2.8-.7L13 5.1 10.9 3 3.7 10.2 3 13Z"},void 0,!1,void 0,this),O("path",{d:"M9.8 4.1l2.1 2.1"},void 0,!1,void 0,this),O("path",{d:"M2.5 14h11"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function sW($){return O(Y$,{...$,children:[O("path",{d:"M3 10.5 8.5 5a2 2 0 0 1 2.8 0l1.7 1.7a2 2 0 0 1 0 2.8L8.5 14H5.8L3 11.2Z"},void 0,!1,void 0,this),O("path",{d:"M7.5 6 12 10.5"},void 0,!1,void 0,this),O("path",{d:"M8.5 14H14"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function eW($){return O(Y$,{...$,children:[O("path",{d:"M3 4h10"},void 0,!1,void 0,this),O("path",{d:"M8 4v8"},void 0,!1,void 0,this),O("path",{d:"M6 12h4"},void 0,!1,void 0,this),O("path",{d:"M4.5 4 4 6"},void 0,!1,void 0,this),O("path",{d:"M11.5 4 12 6"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function $B($){return O(Y$,{...$,children:[O("rect",{x:"1",y:"4",width:"14",height:"10",rx:"1.5"},void 0,!1,void 0,this),O("path",{d:"M5.5 4 L6.5 2.5 H9.5 L10.5 4"},void 0,!1,void 0,this),O("circle",{cx:"8",cy:"9",r:"2.3"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function vB($){return O(Y$,{...$,children:[O("circle",{cx:"8",cy:"8",r:"6"},void 0,!1,void 0,this),O("circle",{cx:"8",cy:"8",r:"3"},void 0,!1,void 0,this),O("circle",{cx:"8",cy:"8",r:"0.8",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function UB($){return O(Y$,{...$,children:[O("circle",{cx:"8",cy:"8",r:"6"},void 0,!1,void 0,this),O("line",{x1:"5.5",y1:"5.5",x2:"10.5",y2:"10.5"},void 0,!1,void 0,this),O("line",{x1:"10.5",y1:"5.5",x2:"5.5",y2:"10.5"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function gB($){return O(Y$,{...$,children:[O("circle",{cx:"7",cy:"7",r:"4.5"},void 0,!1,void 0,this),O("line",{x1:"10.5",y1:"10.5",x2:"14.5",y2:"14.5"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function _B($){return O(Y$,{...$,children:[O("rect",{x:"1",y:"3",width:"14",height:"10",rx:"1.5"},void 0,!1,void 0,this),O("line",{x1:"4",y1:"6",x2:"5",y2:"6"},void 0,!1,void 0,this),O("line",{x1:"7.5",y1:"6",x2:"8.5",y2:"6"},void 0,!1,void 0,this),O("line",{x1:"11",y1:"6",x2:"12",y2:"6"},void 0,!1,void 0,this),O("line",{x1:"4",y1:"10",x2:"12",y2:"10"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function zB({size:$=22,class:v}){return O("svg",{width:$,height:$,viewBox:"0 0 64 64",xmlns:"http://www.w3.org/2000/svg",class:v,"aria-hidden":"true",children:[O("rect",{x:"8",y:"8",width:"48",height:"48",rx:"7",fill:"none",stroke:"currentColor","stroke-width":"2.2",opacity:"0.35"},void 0,!1,void 0,this),O("rect",{x:"16",y:"16",width:"32",height:"32",rx:"5",fill:"none",stroke:"currentColor","stroke-width":"2.2",opacity:"0.6"},void 0,!1,void 0,this),O("rect",{x:"24",y:"24",width:"16",height:"16",rx:"3",fill:"none",stroke:"currentColor","stroke-width":"2.2"},void 0,!1,void 0,this),O("rect",{x:"29",y:"29",width:"6",height:"6",rx:"1",fill:"currentColor"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function cW($){return O(Y$,{...$,children:[O("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),O("line",{x1:"4",y1:"6",x2:"10",y2:"6"},void 0,!1,void 0,this),O("line",{x1:"4",y1:"8.5",x2:"8",y2:"8.5"},void 0,!1,void 0,this),O("line",{x1:"4",y1:"11",x2:"11",y2:"11"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function oA($){return O(Y$,{...$,children:[O("rect",{x:"1.5",y:"2.5",width:"13",height:"9",rx:"1.5"},void 0,!1,void 0,this),O("path",{d:"M4 13.5 L5.5 11.5 L8 11.5"},void 0,!1,void 0,this),O("polyline",{points:"5 6 7 8 5 10"},void 0,!1,void 0,this),O("line",{x1:"8",y1:"10",x2:"11",y2:"10"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function nA($){return O(Y$,{...$,children:[O("rect",{x:"1.5",y:"2.5",width:"13",height:"9",rx:"1.5"},void 0,!1,void 0,this),O("path",{d:"M12 13.5 L10.5 11.5 L8 11.5"},void 0,!1,void 0,this),O("circle",{cx:"5",cy:"7",r:"0.9",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),O("circle",{cx:"8",cy:"7",r:"0.9",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),O("circle",{cx:"11",cy:"7",r:"0.9",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function tA($){return O(Y$,{...$,children:[O("path",{d:"M3 1.5h6l3.5 3.5v8a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V2.5a1 1 0 0 1 1-1z"},void 0,!1,void 0,this),O("polyline",{points:"9 1.5 9 5 12.5 5"},void 0,!1,void 0,this),O("line",{x1:"4.5",y1:"8.5",x2:"10.5",y2:"8.5"},void 0,!1,void 0,this),O("line",{x1:"4.5",y1:"11",x2:"9",y2:"11"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function dA($){return O(Y$,{...$,children:[O("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),O("circle",{cx:"5.5",cy:"6.5",r:"1.2"},void 0,!1,void 0,this),O("path",{d:"M1.8 12 L6 8.5 L9 11 L11.5 9 L14.2 12"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function iW($){return O(Y$,{...$,children:[O("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),O("line",{x1:"1.5",y1:"5.5",x2:"14.5",y2:"5.5"},void 0,!1,void 0,this),O("circle",{cx:"3.3",cy:"4",r:"0.5",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),O("circle",{cx:"5",cy:"4",r:"0.5",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),O("circle",{cx:"6.7",cy:"4",r:"0.5",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),O("line",{x1:"4",y1:"8",x2:"12",y2:"8"},void 0,!1,void 0,this),O("line",{x1:"4",y1:"10",x2:"10",y2:"10"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function aA($){return O(Y$,{...$,children:[O("rect",{x:"2",y:"4",width:"12",height:"10",rx:"1.5"},void 0,!1,void 0,this),O("line",{x1:"2",y1:"6.5",x2:"14",y2:"6.5"},void 0,!1,void 0,this),O("path",{d:"M11 1.5 L11 4"},void 0,!1,void 0,this),O("circle",{cx:"11",cy:"4",r:"1.6",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function sA($){return O(Y$,{...$,children:[O("rect",{x:"1.5",y:"1.5",width:"13",height:"13",rx:"1.5","stroke-dasharray":"2 1.5"},void 0,!1,void 0,this),O("rect",{x:"4",y:"4",width:"3.5",height:"3.5",rx:"0.6"},void 0,!1,void 0,this),O("rect",{x:"8.5",y:"4",width:"3.5",height:"3.5",rx:"0.6"},void 0,!1,void 0,this),O("rect",{x:"6.25",y:"8.5",width:"3.5",height:"3.5",rx:"0.6"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function eA($){return O(Y$,{...$,children:[O("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),O("circle",{cx:"4.5",cy:"8",r:"1.1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),O("line",{x1:"6.5",y1:"6.5",x2:"12.5",y2:"6.5"},void 0,!1,void 0,this),O("line",{x1:"6.5",y1:"8",x2:"11",y2:"8"},void 0,!1,void 0,this),O("line",{x1:"6.5",y1:"9.5",x2:"12",y2:"9.5"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function $q($){return O(Y$,{...$,children:[O("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),O("path",{d:"M3.5 10.5 L6 6.5 L8.5 9.5 L12.5 5"},void 0,!1,void 0,this),O("circle",{cx:"12.5",cy:"5",r:"0.9",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function vq($){return O(Y$,{...$,children:[O("rect",{x:"2",y:"2",width:"12",height:"12",rx:"1.5"},void 0,!1,void 0,this),O("line",{x1:"4.5",y1:"5.5",x2:"11.5",y2:"5.5"},void 0,!1,void 0,this),O("line",{x1:"4.5",y1:"8",x2:"11.5",y2:"8"},void 0,!1,void 0,this),O("line",{x1:"4.5",y1:"10.5",x2:"8",y2:"10.5"},void 0,!1,void 0,this),O("line",{x1:"6.5",y1:"2",x2:"6.5",y2:"14",opacity:"0.45"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Uq($){return O(Y$,{...$,children:[O("rect",{x:"1.5",y:"1.5",width:"13",height:"13",rx:"2"},void 0,!1,void 0,this),O("path",{d:"M4 11 L4 6 L6 8.5 L8 6 L8 11"},void 0,!1,void 0,this),O("path",{d:"M10 11 L10 6 L12.5 11 L12.5 6"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function gq($){return O(Y$,{...$,children:[O("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),O("polyline",{points:"10 5 13 5 13 8"},void 0,!1,void 0,this),O("line",{x1:"13",y1:"5",x2:"8",y2:"10"},void 0,!1,void 0,this),O("path",{d:"M6 6 L3.5 6 L3.5 11.5 L10 11.5 L10 9"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function _q($){return O(Y$,{...$,children:[O("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),O("path",{d:"M7 5.5 C 5.5 5.5 5.5 8 4 8 C 5.5 8 5.5 10.5 7 10.5"},void 0,!1,void 0,this),O("path",{d:"M9 5.5 C 10.5 5.5 10.5 8 12 8 C 10.5 8 10.5 10.5 9 10.5"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function zq($){return O(Y$,{...$,children:[O("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),O("line",{x1:"5.2",y1:"6",x2:"8",y2:"8"},void 0,!1,void 0,this),O("line",{x1:"8",y1:"8",x2:"10.8",y2:"6"},void 0,!1,void 0,this),O("line",{x1:"8",y1:"8",x2:"8",y2:"11"},void 0,!1,void 0,this),O("circle",{cx:"5.2",cy:"6",r:"1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),O("circle",{cx:"10.8",cy:"6",r:"1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),O("circle",{cx:"8",cy:"8",r:"1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),O("circle",{cx:"8",cy:"11",r:"1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Rg($){switch($){case"markdown":return cW;case"prompt":return oA;case"response":return nA;case"file":return tA;case"image":return dA;case"webpage":return iW;case"context":return aA;case"group":return sA;case"status":return eA;case"trace":return $q;case"ledger":return vq;case"mcp-app":return Uq;case"ext-app":return gq;case"json-render":return _q;case"graph":return zq;case"html":return iW;default:return cW}}var bB={width:260,height:150},bq={markdown:{width:300,height:170},status:{width:280,height:110},context:{width:300,height:200},trace:{width:220,height:64},file:{width:300,height:190},image:{width:260,height:200},webpage:{width:320,height:210},html:{width:320,height:210},group:{width:340,height:210},graph:{width:320,height:210},"json-render":{width:320,height:210},"mcp-app":{width:340,height:230}};function GG($){return!!$&&$ in $v}function B6($){if(!$)return null;let v=T.value.get($);if(!v||v.dockPosition!==null)return null;return{left:v.position.x,top:v.position.y,width:v.size.width,height:v.size.height}}function OG($){return{x:$.left+$.width/2,y:$.top+$.height/2}}function yg($){if(typeof $.confidence!=="number")return 0.82;return 0.4+Math.max(0,Math.min(1,$.confidence))*0.55}function JB($,v){let g=Math.max(40,Math.abs(v.x-$.x)/2);return`M ${$.x} ${$.y} C ${$.x+g} ${$.y}, ${v.x-g} ${v.y}, ${v.x} ${v.y}`}function KG({intent:$}){let v=GG($.nodeType)?Rg($.nodeType):null,g=$.label||$.kind,_=typeof $.confidence==="number"?`${Math.round($.confidence*100)}%`:null;return O("div",{class:"intent-info",onMouseEnter:()=>WU.value=$.id,onMouseLeave:()=>{if(WU.value===$.id)WU.value=null},children:[O("div",{class:"intent-chip",children:[typeof $.seq==="number"&&O("span",{class:"intent-seq",children:$.seq},void 0,!1,void 0,this),v&&O("span",{class:"intent-chip-icon","aria-hidden":"true",children:O(v,{size:12},void 0,!1,void 0,this)},void 0,!1,void 0,this),O("span",{class:"intent-chip-label",children:g},void 0,!1,void 0,this),_&&O("span",{class:"intent-confidence",children:_},void 0,!1,void 0,this),$.phase==="forming"&&O("button",{type:"button",class:"intent-veto",title:"Veto this move (Esc)","aria-label":"Veto this move",onClick:(U)=>{U.stopPropagation(),b2($)},children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$.reason&&O("div",{class:"intent-reason",children:$.reason},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function OB({intent:$,rect:v}){let g=GG($.nodeType)?Rg($.nodeType):null,_=GG($.nodeType)?$v[$.nodeType]:"Node";return O("div",{class:`intent-ghost intent-ghost-box is-${$.phase}`,"data-intent-id":$.id,style:{left:`${v.left}px`,top:`${v.top}px`,width:`${v.width}px`,height:`${v.height}px`,opacity:yg($)},children:[O("div",{class:"intent-ghost-titlebar",children:[O("span",{class:"intent-ghost-icon","aria-hidden":"true",children:g?O(g,{size:13},void 0,!1,void 0,this):"◇"},void 0,!1,void 0,this),O("span",{class:"intent-ghost-badge",children:_},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O(KG,{intent:$},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function GB({intent:$,rect:v,variant:g}){return O("div",{class:`intent-ghost intent-ghost-${g} is-${$.phase}`,"data-intent-id":$.id,style:{left:`${v.left}px`,top:`${v.top}px`,width:`${v.width}px`,height:`${v.height}px`,opacity:yg($)},children:[g==="edit"&&O("div",{class:"intent-edit-bar"},void 0,!1,void 0,this),O(KG,{intent:$},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Jq($){let v=$.phase==="settling"?B6($.settledNodeId):null;switch($.kind){case"create":{if(!$.position)return null;let g=$.nodeType&&bq[$.nodeType]||bB,_=v??{left:$.position.x,top:$.position.y,...g};return O(OB,{intent:$,rect:_},$.id,!1,void 0,this)}case"move":{if(!$.position)return null;let _=B6($.nodeId)??bB,U=v??{left:$.position.x,top:$.position.y,width:_.width,height:_.height};return O(OB,{intent:$,rect:U},$.id,!1,void 0,this)}case"remove":{let g=v??B6($.nodeId);if(!g)return null;return O(GB,{intent:$,rect:g,variant:"remove"},$.id,!1,void 0,this)}case"edit":{let g=v??B6($.nodeId);if(!g)return null;return O(GB,{intent:$,rect:g,variant:"edit"},$.id,!1,void 0,this)}case"connect":{if(!$.edge)return null;let g=B6($.edge.from),_=B6($.edge.to);if(!g||!_)return null;let U={x:(g.left+g.width/2+_.left+_.width/2)/2,y:(g.top+g.height/2+_.top+_.height/2)/2},z={left:U.x-110,top:U.y-18,width:220,height:36};return O("div",{class:`intent-ghost intent-ghost-connect is-${$.phase}`,"data-intent-id":$.id,style:{left:`${z.left}px`,top:`${z.top}px`,width:`${z.width}px`,opacity:yg($)},children:O(KG,{intent:$},void 0,!1,void 0,this)},$.id,!1,void 0,this)}default:return null}}function KB(){let $=Array.from(Lv.value.values());if(m(()=>{function v(g){if(g.key!=="Escape")return;let _=WU.value;if(!_)return;let U=Lv.value.get(_);if(!U||U.phase!=="forming")return;g.stopImmediatePropagation(),g.preventDefault(),b2(U)}return window.addEventListener("keydown",v,!0),()=>window.removeEventListener("keydown",v,!0)},[]),$.length===0)return null;return O("div",{class:"intent-layer",children:[O("svg",{class:"intent-line-layer",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"visible",pointerEvents:"none"},children:[O("defs",{children:O("marker",{id:"intent-arrow",markerWidth:"8",markerHeight:"8",refX:"6",refY:"3",orient:"auto",children:O("path",{d:"M0,0 L6,3 L0,6 Z",class:"intent-arrow-head"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$.map((v)=>{if(v.kind==="connect"&&v.edge){let g=B6(v.edge.from),_=B6(v.edge.to);if(!g||!_)return null;return O("path",{d:JB(OG(g),OG(_)),class:`intent-edge type-${v.edge.type}`,style:{opacity:yg(v)}},`line-${v.id}`,!1,void 0,this)}if(v.kind==="move"&&v.position){let g=B6(v.nodeId);if(!g)return null;let _=g,U={x:v.position.x+_.width/2,y:v.position.y+_.height/2};return O("path",{d:JB(OG(g),U),class:"intent-trail",markerEnd:"url(#intent-arrow)",style:{opacity:yg(v)}},`line-${v.id}`,!1,void 0,this)}return null})]},void 0,!0,void 0,this),$.map(Jq)]},void 0,!0,void 0,this)}var BU=8,g4=B$(null),PU=[],kU=[],PB=null;function WB($){let v=$?.data.parentGroup;return typeof v==="string"&&v.length>0?v:null}function BB($){if(!$||!Array.isArray($.data.children))return[];return $.data.children.filter((v)=>typeof v==="string")}function Oq($,v){let g=new Map(v.map((J)=>[J.id,J])),_=new Set([$]),U=g.get($);if(!U)return _;let z=WB(U);while(z&&!_.has(z))_.add(z),z=WB(g.get(z));if(U.type!=="group")return _;let b=[...BB(U)];while(b.length>0){let J=b.pop();if(!J||_.has(J))continue;_.add(J);let G=g.get(J);if(G?.type==="group")b.push(...BB(G))}return _}function kB($,v){PU=[],kU=[],PB=$;let g=Array.from(v),_=Oq($,g);for(let U of g){if(_.has(U.id)||U.dockPosition!==null)continue;let z=U.position.x,b=U.position.x+U.size.width,J=U.position.x+U.size.width/2,G=U.position.y,K=U.position.y+U.size.height,W=U.position.y+U.size.height/2;PU.push({val:z,minY:G,maxY:K}),PU.push({val:b,minY:G,maxY:K}),PU.push({val:J,minY:G,maxY:K}),kU.push({val:G,minX:z,maxX:b}),kU.push({val:K,minX:z,maxX:b}),kU.push({val:W,minX:z,maxX:b})}}function IB(){PU=[],kU=[],PB=null}function HB($,v,g,_){let U=[$,$+g/2,$+g],z=[v,v+_/2,v+_],b=[0,g/2,g],J=[0,_/2,_],G=null,K=BU+1,W=null;for(let H=0;H<3;H++){let I=U[H];for(let F of PU){let Y=Math.abs(I-F.val);if(Y<K)K=Y,G=F.val-b[H],W={axis:"x",pos:F.val,from:Math.min(F.minY,v),to:Math.max(F.maxY,v+_)}}}let B=null,k=BU+1,P=null;for(let H=0;H<3;H++){let I=z[H];for(let F of kU){let Y=Math.abs(I-F.val);if(Y<k)k=Y,B=F.val-J[H],P={axis:"y",pos:F.val,from:Math.min(F.minX,$),to:Math.max(F.maxX,$+g)}}}let A=[];if(W&&K<=BU)A.push(W);if(P&&k<=BU)A.push(P);return{x:G!==null&&K<=BU?G:$,y:B!==null&&k<=BU?B:v,guides:A}}function LB({nodeId:$,viewport:v,onMove:g,onDragEnd:_}){let U=V(!1),z=V({x:0,y:0}),b=V({x:0,y:0});return N((G,K,W)=>{G.stopPropagation(),G.preventDefault(),U.current=!0,document.documentElement.classList.add("is-node-dragging"),window.getSelection()?.removeAllRanges(),z.current={x:G.clientX,y:G.clientY},b.current={x:K,y:W};let B=null,k=null,P=()=>{if(k=null,!U.current||!B)return;let I=B;B=null;let F=v.value.scale,Y=(I.x-z.current.x)/F,X=(I.y-z.current.y)/F;g($,b.current.x+Y,b.current.y+X)},A=(I)=>{if(!U.current)return;if(B={x:I.clientX,y:I.clientY},k!==null)return;k=window.requestAnimationFrame(P)},H=()=>{if(k!==null)window.cancelAnimationFrame(k),P();U.current=!1,document.documentElement.classList.remove("is-node-dragging"),document.removeEventListener("pointermove",A),document.removeEventListener("pointerup",H),document.removeEventListener("pointercancel",H),_()};document.addEventListener("pointermove",A),document.addEventListener("pointerup",H),document.addEventListener("pointercancel",H)},[$,v,g,_])}var Gq=200,Kq=100;function FB({nodeId:$,viewport:v,onResize:g,onResizeEnd:_}){let U=V(!1),z=V({x:0,y:0}),b=V({w:0,h:0});return N((G,K,W)=>{G.stopPropagation(),G.preventDefault(),U.current=!0,z.current={x:G.clientX,y:G.clientY},b.current={w:K,h:W},document.documentElement.classList.add("is-node-resizing");let B=null,k=null,P=()=>{if(k=null,!U.current||!B)return;let I=B;B=null;let F=v.value.scale,Y=(I.x-z.current.x)/F,X=(I.y-z.current.y)/F;g($,Math.max(Gq,b.current.w+Y),Math.max(Kq,b.current.h+X))},A=(I)=>{if(!U.current)return;if(B={x:I.clientX,y:I.clientY},k!==null)return;k=window.requestAnimationFrame(P)},H=()=>{if(k!==null)window.cancelAnimationFrame(k),P();U.current=!1,document.documentElement.classList.remove("is-node-resizing"),document.removeEventListener("pointermove",A),document.removeEventListener("pointerup",H),document.removeEventListener("pointercancel",H),_()};document.addEventListener("pointermove",A),document.addEventListener("pointerup",H),document.addEventListener("pointercancel",H)},[$,v,g,_])}function YB({node:$,children:v,onContextMenu:g}){let _=y$.value===$.id,U=h$.value.has($.id),z=D$.value.has($.id),b=W4.value.has($.id),J=!b&&B4.value.has($.id),G=$_.value.has($.id),K=!_&&RK.value.has($.id),W=Y6.value,B=W!==null&&W.has($.id),k=W!==null&&!W.has($.id),[P,A]=x(!1),H=V(null),I=N((f,d,G$)=>{let g$=HB(d,G$,$.size.width,$.size.height),j$=T.value.get(f);if(j$?.position.x===g$.x&&j$.position.y===g$.y){g4.value=g$.guides.length>0?g$.guides:null;return}Pv(f,{position:{x:g$.x,y:g$.y}}),g4.value=g$.guides.length>0?g$.guides:null},[$.size.width,$.size.height]),F=N(()=>{IB(),g4.value=null,d$()},[]),Y=LB({nodeId:$.id,viewport:I$,onMove:I,onDragEnd:F}),X=N((f,d,G$)=>{let g$=T.value.get(f);if(g$?.size.width===d&&g$.size.height===G$)return;Pv(f,{size:{width:d,height:G$}})},[]),Q=N(()=>{U$($.id,{userResized:!0}),wv($.id,{data:{userResized:!0}}),d$()},[$.id]),u=FB({nodeId:$.id,viewport:I$,onResize:X,onResizeEnd:Q}),E=N((f)=>{if(P)return;A6($.id),kB($.id,T.value.values()),Y(f,$.position.x,$.position.y)},[$.id,$.position.x,$.position.y,Y,P]),M=N((f)=>{if(f.stopPropagation(),f.shiftKey){yK($.id);return}A6($.id)},[$.id]),n=N((f)=>{if(g)g(f,$.id)},[g,$.id]),t=N((f)=>{f.stopPropagation(),A(!0),requestAnimationFrame(()=>H.current?.focus())},[]),r=$.data.title||$v[$.type],R=N((f)=>{let d=f.trim();if(d&&d!==r)U$($.id,{title:d}),wv($.id,{title:d});A(!1)},[$.id,r]),$$=V(null),p=V(!1),c=V(null);m(()=>{if(p.current||!j2($))return;let f=$$.current;if(!f)return;let d=new ResizeObserver(()=>{if(p.current){d.disconnect();return}let G$=f.scrollHeight,g$=t3($,G$);if(g$===null)return;if(Math.abs(g$-$.size.height)>8){if(Y4($.id,{width:$.size.width,height:g$}),c.current!==null)window.clearTimeout(c.current);c.current=window.setTimeout(()=>{d$({recordHistory:!1}),c.current=null},0)}p.current=!0,d.disconnect()});return d.observe(f),()=>{if(d.disconnect(),c.current!==null)window.clearTimeout(c.current),c.current=null}},[$.id,$.type,$.data.mode,$.data.strictSize,$.collapsed,$.dockPosition,$.size.width,$.size.height]);let P$=$.pinned,Z$=$.type==="trace",i$=Z$&&$.data.status==="running",w=$.type==="group",l=$.data.strictSize===!0,e=Math.max(I$.value.scale,0.01),s=e<1?Math.min(2.2,1/e):1,W$=w&&$.data.color?$.data.color:void 0,z$={left:`${$.position.x}px`,top:`${$.position.y}px`,width:`${$.size.width}px`,height:$.collapsed?"auto":`${$.size.height}px`,zIndex:$.zIndex,"--node-chrome-scale":s.toFixed(3),...W$?{"--group-color":W$}:{}},a=["canvas-node",_?"active":"",K?"neighbor":"",B?"search-match":"",k?"search-dimmed":"",U?"selected":"",z?"context-pinned":"",b?"attention-focus-primary":"",J?"attention-focus-secondary":"",G?"attention-pulse":"",P$?"pinned":"",Z$?"trace-node":"",i$?"trace-running":"",w?"group-node":"",l?"strict-size":""].filter(Boolean).join(" ");return O("div",{class:a,style:z$,onPointerDown:M,onContextMenu:n,children:[O("div",{class:"node-titlebar",onPointerDown:E,children:[O("span",{class:"node-type-icon","aria-hidden":"true",children:(()=>{let f=Rg($.type);return O(f,{size:Math.round(14*s)},void 0,!1,void 0,this)})()},void 0,!1,void 0,this),O("span",{class:"node-type-badge",children:$v[$.type]},void 0,!1,void 0,this),P?O("input",{ref:H,class:"node-title-input",value:r,onBlur:(f)=>R(f.target.value),onKeyDown:(f)=>{if(f.key==="Enter")R(f.target.value);if(f.key==="Escape")A(!1)},onClick:(f)=>f.stopPropagation()},void 0,!1,void 0,this):O("span",{class:"node-title",onDblClick:t,title:"Double-click to rename",children:r},void 0,!1,void 0,this),O("div",{class:"node-controls",children:[P$&&O("span",{class:"pin-indicator",title:"Pinned",children:"⊙"},void 0,!1,void 0,this),O("button",{type:"button",class:`ctx-pin-btn${z?" ctx-pin-active":""}`,onClick:(f)=>{f.stopPropagation(),L4($.id)},title:z?"Remove from context":"Add to context",children:"✦"},void 0,!1,void 0,this),r0($)&&O("button",{type:"button",onClick:(f)=>{f.stopPropagation(),u0($)},title:"Open as site",children:"↗"},void 0,!1,void 0,this),z_.has($.type)&&O("button",{type:"button",onClick:(f)=>{f.stopPropagation(),z6($.id)},title:"Expand (focus mode)",children:"⤢"},void 0,!1,void 0,this),O("button",{type:"button",onClick:(f)=>{f.stopPropagation(),q6($.id)},title:$.collapsed?"Expand":"Collapse",children:$.collapsed?"▸":"▾"},void 0,!1,void 0,this),O("button",{type:"button",onClick:(f)=>{f.stopPropagation(),F4($.id),G_($.id)},title:"Close",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!$.collapsed&&O("div",{ref:$$,class:"node-body",children:v},void 0,!1,void 0,this),!$.collapsed&&O("div",{class:"node-resize-handle",onPointerDown:(f)=>u(f,$.size.width,$.size.height)},void 0,!1,void 0,this),["top","right","bottom","left"].map((f)=>O("div",{class:`node-port node-port-${f}`,onPointerDown:(d)=>{d.stopPropagation(),d.preventDefault();let G$=$.position.x+$.size.width/2,g$=$.position.y+$.size.height/2,j$=$.size.width/2,o$=$.size.height/2,b$,K$;switch(f){case"top":b$=G$,K$=g$-o$;break;case"bottom":b$=G$,K$=g$+o$;break;case"left":b$=G$-j$,K$=g$;break;case"right":b$=G$+j$,K$=g$;break}rv.value={fromId:$.id,fromX:b$,fromY:K$,cursorX:b$,cursorY:K$}}},f,!1,void 0,this))]},void 0,!0,void 0,this)}var Wq={relation:"var(--c-muted)","depends-on":"var(--c-warn)",flow:"var(--c-accent)",references:"var(--c-dim)"},Bq=new Set(["depends-on","flow"]);function Pq($){if($.style==="dashed")return"8 4";if($.style==="dotted")return"3 3";if($.type==="references"&&!$.style)return"8 4";return}function AB($,v){let g=$.position.x+$.size.width/2,_=$.position.y+$.size.height/2,U=v.position.x+v.size.width/2,z=v.position.y+v.size.height/2,b=U-g,J=z-_,G=$.size.width/2,K=$.size.height/2,W=Math.abs(J/(b||0.001)),B=K/(G||0.001);if(W>B){let P=J>0?1:-1;return{x:g+K/W*(b>0?1:-1),y:_+K*P}}let k=b>0?1:-1;return{x:g+G*k,y:_+W*G*(J>0?1:-1)}}function kq($,v,g,_,U,z,b,J){return{x:0.125*$+0.375*g+0.375*U+0.125*b,y:0.125*v+0.375*_+0.375*z+0.125*J}}function Iq({edge:$,fromNode:v,toNode:g,focused:_,dimmed:U}){let z=AB(v,g),b=AB(g,v),J=b.x-z.x,G=b.y-z.y,K=Math.sqrt(J*J+G*G),W=Math.min(K*0.25,80),B=J/(K||1),k=G/(K||1),P=z.x+B*W,A=z.y+k*W,H=b.x-B*W,I=b.y-k*W,F=`M ${z.x} ${z.y} C ${P} ${A}, ${H} ${I}, ${b.x} ${b.y}`,Y=Wq[$.type],X=Bq.has($.type),Q=Pq($),u=$.label?kq(z.x,z.y,P,A,H,I,b.x,b.y):null,E=`edge-path-${$.id}`;return O("g",{children:[O("path",{d:F,fill:"none",stroke:"transparent","stroke-width":"12",style:{cursor:"pointer"}},void 0,!1,void 0,this),_&&O("path",{d:F,fill:"none",stroke:Y,"stroke-width":"6","stroke-dasharray":Q,opacity:"0.15",style:{filter:"blur(3px)"}},void 0,!1,void 0,this),O("path",{id:E,d:F,fill:"none",stroke:Y,"stroke-width":_?2.5:1.5,"stroke-dasharray":Q,"marker-end":X?"url(#edge-arrow)":void 0,opacity:U?0.2:_?1:0.75,style:{transition:"opacity 0.2s, stroke-width 0.2s"}},void 0,!1,void 0,this),$.animated&&O("circle",{r:"3",fill:Y,opacity:"0.9",children:O("animateMotion",{dur:"2s",repeatCount:"indefinite",children:O("mpath",{href:`#${E}`},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),u&&$.label&&O("g",{transform:`translate(${u.x}, ${u.y})`,children:[O("rect",{class:"edge-label-bg",x:-($.label.length*3.5+8),y:"-10",width:$.label.length*7+16,height:"20",rx:"4"},void 0,!1,void 0,this),O("text",{class:"edge-label","text-anchor":"middle","dominant-baseline":"central",fill:"var(--c-text)","font-size":"11",children:$.label},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function qB({nodes:$,edges:v}){let g=$.value,_=Array.from(v.value.values()),U=y$.value,z=U!==null,b=Y6.value,J=b!==null;if(_.length===0)return null;let G=96,K=Array.from(g.values()),W=Math.min(...K.map((I)=>I.position.x))-G,B=Math.min(...K.map((I)=>I.position.y))-G,k=Math.max(...K.map((I)=>I.position.x+I.size.width))+G,P=Math.max(...K.map((I)=>I.position.y+I.size.height))+G,A=Math.max(1,k-W),H=Math.max(1,P-B);return O("svg",{"aria-label":"Canvas connections",role:"img",viewBox:`${W} ${B} ${A} ${H}`,width:A,height:H,style:{position:"absolute",top:`${B}px`,left:`${W}px`,pointerEvents:"none",overflow:"visible"},children:[O("title",{children:"Canvas connections"},void 0,!1,void 0,this),O("defs",{children:O("marker",{id:"edge-arrow",viewBox:"0 0 10 10",refX:"9",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:O("path",{d:"M 0 1 L 10 5 L 0 9 z",fill:"currentColor",opacity:"0.75"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),_.map((I)=>{let F=g.get(I.from),Y=g.get(I.to);if(!F||!Y)return null;let X=z&&(I.from===U||I.to===U),Q=J&&!(b.has(I.from)||b.has(I.to));return O(Iq,{edge:I,fromNode:F,toNode:Y,focused:X,dimmed:z&&!X||Q},I.id,!1,void 0,this)}),rv.value&&(()=>{let I=rv.value,F=I.cursorX-I.fromX,Y=I.cursorY-I.fromY,X=Math.sqrt(F*F+Y*Y),Q=Math.min(X*0.25,80),u=F/(X||1),E=Y/(X||1),M=`M ${I.fromX} ${I.fromY} C ${I.fromX+u*Q} ${I.fromY+E*Q}, ${I.cursorX-u*Q} ${I.cursorY-E*Q}, ${I.cursorX} ${I.cursorY}`;return O("g",{children:[O("path",{d:M,fill:"none",stroke:"var(--c-accent)","stroke-width":"6",opacity:"0.1",style:{filter:"blur(3px)"}},void 0,!1,void 0,this),O("path",{d:M,fill:"none",stroke:"var(--c-accent)","stroke-width":"2","stroke-dasharray":"6 4",opacity:"0.8"},void 0,!1,void 0,this),O("circle",{cx:I.cursorX,cy:I.cursorY,r:"5",fill:"var(--c-accent)",opacity:"0.5"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)})()]},void 0,!0,void 0,this)}function Hq($){let[v,...g]=$;if(!v)return"";return g.reduce((_,U)=>`${_} L ${U.x} ${U.y}`,`M ${v.x} ${v.y}`)}function WG({annotations:$}){if($.length===0)return null;return O("svg",{class:"annotation-layer","aria-hidden":"true",children:$.map((v)=>{let g=v.color==="currentColor"?"var(--c-annotation)":v.color;if(v.type==="text"){let _=v.points[0];if(!_||!v.text)return null;return O("text",{x:_.x,y:_.y,fill:g,"font-size":v.width,"font-family":"var(--font)","font-weight":"700",opacity:"0.95",children:v.text},v.id,!1,void 0,this)}return O("path",{d:Hq(v.points),fill:"none",stroke:g,"stroke-width":v.width,"stroke-linecap":"round","stroke-linejoin":"round",opacity:"0.9"},v.id,!1,void 0,this)})},void 0,!1,void 0,this)}var Lq=0.1,Fq=4,XB=1;function wB($){return Math.min(Fq,Math.max(Lq,$))}function ZB({viewport:$,onViewportChange:v,onViewportCommit:g,disabled:_=!1}){let U=V(null),z=V(!1),b=V({x:0,y:0}),J=V(0),G=V(null),K=N((I)=>{if(G.current!==null)window.clearTimeout(G.current);G.current=window.setTimeout(()=>{G.current=null,g(I)},140)},[g]),W=N((I)=>{if(_)return;I.preventDefault();let F=$.value;if(I.ctrlKey||I.metaKey){let Y=U.current?.getBoundingClientRect();if(!Y)return;let X=I.clientX-Y.left,Q=I.clientY-Y.top,u=-I.deltaY*0.002,E=wB(F.scale*(1+u)),M=E/F.scale,n={x:X-M*(X-F.x),y:Q-M*(Q-F.y),scale:E};v(n),K(n)}else{let Y={x:F.x-I.deltaX*XB,y:F.y-I.deltaY*XB,scale:F.scale};v(Y),K(Y)}},[_,$,v,K]),B=N((I)=>{if(_)return;let F=U.current;if(!F||I.target!==F)return;z.current=!0,b.current={x:I.clientX,y:I.clientY},F.setPointerCapture(I.pointerId)},[_]),k=N((I)=>{if(!z.current)return;if(_)return;let F=I.clientX-b.current.x,Y=I.clientY-b.current.y;b.current={x:I.clientX,y:I.clientY};let X=$.value;v({x:X.x+F,y:X.y+Y,scale:X.scale})},[_,$,v]),P=N(()=>{if(z.current)g($.value);z.current=!1},[g,$]),A=N((I)=>{if(_)return;if(I.touches.length!==2){J.current=0;return}I.preventDefault();let F=I.touches[0],Y=I.touches[1],X=Math.hypot(Y.clientX-F.clientX,Y.clientY-F.clientY),Q=(F.clientX+Y.clientX)/2,u=(F.clientY+Y.clientY)/2;if(J.current>0){let E=$.value,M=U.current?.getBoundingClientRect();if(!M)return;let n=Q-M.left,t=u-M.top,r=X/J.current,R=wB(E.scale*r),$$=R/E.scale,p={x:n-$$*(n-E.x),y:t-$$*(t-E.y),scale:R};v(p),K(p)}J.current=X},[_,$,v,K]),H=N(()=>{if(G.current!==null)window.clearTimeout(G.current),G.current=null;g($.value),J.current=0},[g,$]);return m(()=>{let I=U.current;if(!I)return;return I.addEventListener("wheel",W,{passive:!1}),I.addEventListener("pointerdown",B),I.addEventListener("pointermove",k),I.addEventListener("pointerup",P),I.addEventListener("pointercancel",P),I.addEventListener("touchmove",A,{passive:!1}),I.addEventListener("touchend",H),()=>{if(G.current!==null)window.clearTimeout(G.current);I.removeEventListener("wheel",W),I.removeEventListener("pointerdown",B),I.removeEventListener("pointermove",k),I.removeEventListener("pointerup",P),I.removeEventListener("pointercancel",P),I.removeEventListener("touchmove",A),I.removeEventListener("touchend",H)}},[W,B,k,P,A,H]),U}function Yq($){switch($.type){case"markdown":return O(R_,{node:$},void 0,!1,void 0,this);case"mcp-app":return O(f6,{node:$},void 0,!1,void 0,this);case"webpage":return O(N0,{node:$},void 0,!1,void 0,this);case"json-render":return O(f6,{node:$},void 0,!1,void 0,this);case"graph":return O(f6,{node:$},void 0,!1,void 0,this);case"prompt":return O(R0,{node:$},void 0,!1,void 0,this);case"response":return O(y0,{node:$},void 0,!1,void 0,this);case"status":return O(GU,{node:$},void 0,!1,void 0,this);case"context":return O(o6,{node:$},void 0,!1,void 0,this);case"ledger":return O(Z4,{node:$},void 0,!1,void 0,this);case"trace":return O(D0,{node:$},void 0,!1,void 0,this);case"file":return O(S_,{node:$},void 0,!1,void 0,this);case"image":return O(Q0,{node:$},void 0,!1,void 0,this);case"html":return O(rg,{node:$},void 0,!1,void 0,this);case"group":return O(QW,{node:$},void 0,!1,void 0,this);default:return O("div",{children:"Unknown node type"},void 0,!1,void 0,this)}}function Aq($,v,g){let _=g.x-v.x,U=g.y-v.y,z=_*_+U*U;if(z===0)return Math.hypot($.x-v.x,$.y-v.y);let b=Math.max(0,Math.min(1,(($.x-v.x)*_+($.y-v.y)*U)/z));return Math.hypot($.x-(v.x+b*_),$.y-(v.y+b*U))}function qq($,v,g){for(let _=$.length-1;_>=0;_--){let U=$[_];if(!U)continue;let z=g+U.width;if(v.x<U.bounds.x-z||v.x>U.bounds.x+U.bounds.width+z||v.y<U.bounds.y-z||v.y>U.bounds.y+U.bounds.height+z)continue;if(U.type==="text")return U;for(let b=1;b<U.points.length;b++){let J=U.points[b-1],G=U.points[b];if(J&&G&&Aq(v,J,G)<=g+U.width/2)return U}}return null}var BG="currentColor",SB=4,MB=24,Xq=14,wq=new Set(["png","jpg","jpeg","gif","svg","webp","bmp","ico","avif"]),Zq=new Set(["md","mdx","markdown"]),QB={width:520,height:420};function Sq($){let v=$.trim();if(!v||/\s/.test(v))return null;let g=/^[a-z][a-z0-9+.-]*:/i.test(v)?v:`https://${v}`;try{let _=new URL(g);if(_.protocol!=="http:"&&_.protocol!=="https:")return null;return _.toString()}catch{return null}}function PG($){let v=$.trim();if(!v)return[];let g=v.includes(`
|
|
226
|
-
`)?v.split(/\r?\n/):v.split(/\s+/),_=new Set,U=[];for(let z of g){let b=z.trim();if(!b||b.startsWith("#"))continue;let J=Sq(b);if(!J||_.has(J))continue;_.add(J),U.push(J)}return U}function Mq($){let v=PG($.getData("text/uri-list"));if(v.length>0)return v;return PG($.getData("text/plain"))}function Qq($){if(!$)return!1;return $.types.includes("text/uri-list")||$.types.includes("text/plain")}function NB($){if(!($ instanceof HTMLElement))return!1;return Boolean($.closest('input, textarea, select, [contenteditable="true"], [contenteditable=""]'))}function Nq($){let v=$.split(".").pop()?.toLowerCase()??"";if(wq.has(v))return"image";if(Zq.has(v))return"markdown";return"file"}function rq($,v){let g=[],_=0;for(let U of $){if(U.dockPosition!==null)continue;if(v&&U.id===v)continue;if(U.type==="group")g.splice(_++,0,U);else g.push(U)}return g}function rB({onNodeContextMenu:$,onCanvasContextMenu:v,annotationMode:g=!1,annotationTool:_=null}){let U=I$.value,z=V(!1),b=V(!1),J=V([]),[G,K]=x(null),[W,B]=x(null),[k,P]=x(null),A=V(null),[H,I]=x(!1),F=V(0),Y=V(null),X=ZB({viewport:I$,disabled:g,onViewportChange:(w)=>{if(z.current||g)return;q4(),cK(w)},onViewportCommit:(w)=>{if(z.current||g)return;q4(),lK(w)}}),Q=N((w)=>{A.current=w,P(w)},[]),u=N(async(w,l,e)=>{if(w.length===0)return;let{width:s,height:W$}=QB,z$=24,a=Math.ceil(Math.sqrt(w.length)),f=Math.ceil(w.length/a),d=a*s+Math.max(0,a-1)*z$,G$=f*W$+Math.max(0,f-1)*z$;for(let g$=0;g$<w.length;g$++){let j$=g$%a,o$=Math.floor(g$/a),b$=l-d/2+j$*(s+z$),K$=e-G$/2+o$*(W$+z$);await lv({type:"webpage",content:w[g$],x:b$,y:K$,width:s,height:W$})}},[]),E=N((w)=>{let l=X.current;if(!l)return;if(_==="eraser"){if((w.target instanceof Element?w.target:null)?.closest(".hud-layer, .snapshot-panel, .context-menu, .command-palette"))return;w.preventDefault(),w.stopPropagation();let f=l.getBoundingClientRect(),d=I$.value,G$={x:(w.clientX-f.left-d.x)/d.scale,y:(w.clientY-f.top-d.y)/d.scale},g$=qq(Array.from(I4.value.values()),G$,Xq/d.scale);if(g$)mK(g$.id);return}if(_==="text"){if((w.target instanceof Element?w.target:null)?.closest(".hud-layer, .snapshot-panel, .context-menu, .command-palette"))return;w.preventDefault(),w.stopPropagation(),y$.value=null,jv();let f=l.getBoundingClientRect(),d=I$.value;Q({x:(w.clientX-f.left-d.x)/d.scale,y:(w.clientY-f.top-d.y)/d.scale,value:""});return}if(_==="pen"){if((w.target instanceof Element?w.target:null)?.closest(".hud-layer, .snapshot-panel, .context-menu, .command-palette"))return;w.preventDefault(),w.stopPropagation(),y$.value=null,jv(),b.current=!0;let f=l.getBoundingClientRect(),d=I$.value,G$={x:(w.clientX-f.left-d.x)/d.scale,y:(w.clientY-f.top-d.y)/d.scale};J.current=[G$],B({id:"draft-annotation",type:"freehand",points:[G$],bounds:{x:0,y:0,width:0,height:0},color:BG,width:SB,createdAt:""}),l.setPointerCapture(w.pointerId);return}if(w.target!==l)return;if(!w.shiftKey){if(!Y.current)y$.value=null,jv();return}w.preventDefault(),w.stopPropagation(),z.current=!0;let e=l.getBoundingClientRect(),s=w.clientX-e.left,W$=w.clientY-e.top,z$={startX:s,startY:W$,currentX:s,currentY:W$};Y.current=z$,K(z$),l.setPointerCapture(w.pointerId)},[_,X]),M=N((w)=>{if(b.current){let s=X.current;if(!s)return;let W$=s.getBoundingClientRect(),z$=I$.value,a={x:(w.clientX-W$.left-z$.x)/z$.scale,y:(w.clientY-W$.top-z$.y)/z$.scale},f=J.current.at(-1);if(f&&Math.hypot(a.x-f.x,a.y-f.y)<2)return;J.current=[...J.current,a],B((d)=>d?{...d,points:J.current}:null);return}if(!z.current||!Y.current)return;let l=X.current?.getBoundingClientRect();if(!l)return;let e={...Y.current,currentX:w.clientX-l.left,currentY:w.clientY-l.top};Y.current=e,K(e)},[X]),n=N((w)=>{if(b.current){b.current=!1;let a=J.current;if(J.current=[],B(null),a.length>=2)G2({points:a,color:BG,width:SB});let f=X.current;if(f?.hasPointerCapture(w.pointerId))f.releasePointerCapture(w.pointerId);return}let l=Y.current;if(!z.current||!l)return;z.current=!1,Y.current=null;let e=Math.min(l.startX,l.currentX),s=Math.max(l.startX,l.currentX),W$=Math.min(l.startY,l.currentY),z$=Math.max(l.startY,l.currentY);if(s-e>5||z$-W$>5){let a=I$.value,f=(e-a.x)/a.scale,d=(s-a.x)/a.scale,G$=(W$-a.y)/a.scale,g$=(z$-a.y)/a.scale,j$=[];for(let o$ of T.value.values()){if(o$.dockPosition!==null)continue;let b$=o$.position.x,K$=o$.position.y;if(b$+o$.size.width>f&&b$<d&&K$+o$.size.height>G$&&K$<g$)j$.push(o$.id)}if(j$.length>0)DK(j$)}K(null)},[]);m(()=>{if(g)return;if(!b.current&&!W&&!k)return;b.current=!1,J.current=[],B(null),Q(null)},[g,W,Q,k]);let t=N(()=>{let w=A.current;if(!w)return;let l=w.value.trim();if(Q(null),!l)return;let e={x:w.x,y:w.y};G2({type:"text",points:[e],color:BG,width:MB,text:l})},[Q]);m(()=>{if(_!=="text"&&k)Q(null)},[_,Q,k]),m(()=>{function w(e){if(!rv.value)return;let s=X.current;if(!s)return;let W$=s.getBoundingClientRect(),z$=I$.value;rv.value={...rv.value,cursorX:(e.clientX-W$.left-z$.x)/z$.scale,cursorY:(e.clientY-W$.top-z$.y)/z$.scale}}function l(e){let s=rv.value;if(!s)return;rv.value=null;let W$=X.current;if(!W$)return;let z$=W$.getBoundingClientRect(),a=I$.value,f=(e.clientX-z$.left-a.x)/a.scale,d=(e.clientY-z$.top-a.y)/a.scale;for(let G$ of T.value.values()){if(G$.id===s.fromId||G$.dockPosition!==null)continue;if(f>=G$.position.x&&f<=G$.position.x+G$.size.width&&d>=G$.position.y&&d<=G$.position.y+G$.size.height){P4(s.fromId,G$.id,"relation");return}}}return document.addEventListener("pointermove",w),document.addEventListener("pointerup",l),()=>{document.removeEventListener("pointermove",w),document.removeEventListener("pointerup",l)}},[X]);let r=N((w)=>{if(g)return;let l=X.current;if(!l||w.target!==l)return;let e=l.getBoundingClientRect(),s=I$.value,W$=(w.clientX-e.left-s.x)/s.scale,z$=(w.clientY-e.top-s.y)/s.scale,a=520,f=360;lv({type:"markdown",title:"New note",x:W$-a/2,y:z$-f/2,width:a,height:f})},[g,X]),R=N((w)=>{if(g)return;if(!v)return;let l=X.current;if(!l)return;if((w.target instanceof Element?w.target:null)?.closest(".canvas-node"))return;let s=l.getBoundingClientRect(),W$=I$.value,z$=(w.clientX-s.left-W$.x)/W$.scale,a=(w.clientY-s.top-W$.y)/W$.scale;v(w,z$,a)},[g,X,v]),$$=N((w)=>{if(w.preventDefault(),F.current++,w.dataTransfer?.types.includes("Files")||Qq(w.dataTransfer))I(!0)},[]),p=N((w)=>{if(w.preventDefault(),w.dataTransfer)w.dataTransfer.dropEffect="copy"},[]),c=N((w)=>{if(w.preventDefault(),F.current--,F.current<=0)F.current=0,I(!1)},[]),P$=N(async(w)=>{w.preventDefault(),I(!1),F.current=0;let l=X.current;if(!l||!w.dataTransfer)return;let e=l.getBoundingClientRect(),s=I$.value,W$=(w.clientX-e.left-s.x)/s.scale,z$=(w.clientY-e.top-s.y)/s.scale,a=Array.from(w.dataTransfer.files);if(a.length===0){let j$=Mq(w.dataTransfer);await u(j$,W$,z$);return}let f=400,d=300,G$=20,g$=Math.ceil(Math.sqrt(a.length));for(let j$=0;j$<a.length;j$++){let o$=a[j$],b$=j$%g$,K$=Math.floor(j$/g$),V$=W$-g$*(f+G$)/2+b$*(f+G$),C$=z$-d/2+K$*(d+G$),s$=Nq(o$.name),Wv=o$.name;if(s$==="image"){let Ev=new FileReader,LU=await new Promise((cv)=>{Ev.onload=()=>cv(Ev.result),Ev.readAsDataURL(o$)});await lv({type:"image",title:Wv,content:LU,x:V$,y:C$,width:f,height:d})}else{let Ev=await o$.text(),LU=s$==="markdown"||s$==="file";await lv({type:s$,title:Wv,content:Ev,x:V$,y:C$,width:LU?720:f,height:LU?500:d})}}},[X,u]);m(()=>{let w=async(l)=>{if(l.defaultPrevented)return;if(NB(l.target instanceof Element?l.target:null))return;if(NB(document.activeElement))return;let e=l.clipboardData?.getData("text/plain")??"",s=PG(e);if(s.length===0)return;let W$=X.current;if(!W$)return;l.preventDefault();let z$=W$.getBoundingClientRect(),a=I$.value,f=(z$.width/2-a.x)/a.scale,d=(z$.height/2-a.y)/a.scale;await u(s,f,d)};return document.addEventListener("paste",w),()=>{document.removeEventListener("paste",w)}},[X,u]);let Z$=rq(T.value.values(),E$.value),i$=null;if(G){let w=Math.min(G.startX,G.currentX),l=Math.min(G.startY,G.currentY),e=Math.abs(G.currentX-G.startX),s=Math.abs(G.currentY-G.startY);i$={position:"absolute",left:`${w}px`,top:`${l}px`,width:`${e}px`,height:`${s}px`,pointerEvents:"none"}}return O("div",{class:"canvas-viewport",ref:X,tabIndex:0,onPointerDown:E,onPointerMove:M,onPointerUp:n,onContextMenu:R,onDblClick:r,onDragEnter:$$,onDragOver:p,onDragLeave:c,onDrop:P$,style:{width:"100%",height:"100%",position:"relative",overflow:"hidden",cursor:_==="eraser"?"cell":_==="text"?"text":g||rv.value||z.current?"crosshair":"grab"},children:[O("div",{style:{transform:`matrix(${U.scale}, 0, 0, ${U.scale}, ${U.x}, ${U.y})`,transformOrigin:"0 0",willChange:"transform",position:"absolute",top:0,left:0},children:[O(VW,{},void 0,!1,void 0,this),O(KB,{},void 0,!1,void 0,this),O(qB,{nodes:T,edges:c$},void 0,!1,void 0,this),O(WG,{annotations:Array.from(I4.value.values())},void 0,!1,void 0,this),W&&W.points.length>=2&&O(WG,{annotations:[W]},void 0,!1,void 0,this),Z$.map((w)=>O(YB,{node:w,onContextMenu:$,children:Yq(w)},w.id,!1,void 0,this)),g4.value&&O("svg",{class:"snap-guides-svg",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",pointerEvents:"none",overflow:"visible"},children:g4.value.map((w,l)=>w.axis==="x"?O("line",{x1:w.pos,y1:w.from-20,x2:w.pos,y2:w.to+20,class:"snap-guide-line"},l,!1,void 0,this):O("line",{x1:w.from-20,y1:w.pos,x2:w.to+20,y2:w.pos,class:"snap-guide-line"},l,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),g&&O("div",{class:`annotation-capture-layer${_==="eraser"?" erasing":""}${_==="text"?" text":""}`,"aria-hidden":"true"},void 0,!1,void 0,this),k&&O("input",{class:"annotation-text-input",value:k.value,autoFocus:!0,style:{left:`${k.x*U.scale+U.x}px`,top:`${k.y*U.scale+U.y}px`,fontSize:`${MB*U.scale}px`},onInput:(w)=>Q({...k,value:w.target.value}),onBlur:t,onPointerDown:(w)=>w.stopPropagation(),onKeyDown:(w)=>{if(w.key==="Enter")w.preventDefault(),t();if(w.key==="Escape")w.preventDefault(),Q(null)}},void 0,!1,void 0,this),i$&&O("div",{class:"lasso-rect",style:i$},void 0,!1,void 0,this),H&&O("div",{class:"drop-zone-overlay",children:O("div",{class:"drop-zone-indicator",children:[O("div",{class:"drop-zone-icon",children:"+"},void 0,!1,void 0,this),O("div",{class:"drop-zone-label",children:"Drop files or URLs to add to canvas"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function uq($,v){let g=$.toLowerCase(),_=v.toLowerCase(),U=[],z=0,b=0,J=-1;for(let G=0;G<_.length&&z<g.length;G++)if(_[G]===g[z]){if(U.push(G),b+=J===G-1?10:1,G===0||_[G-1]===" "||_[G-1]==="-"||_[G-1]==="_")b+=5;J=G,z++}return{match:z===g.length,score:b,indices:U}}function Rq($,v){if(v.length===0)return $;let g=[],_=0;for(let U of v){if(U>_)g.push($.slice(_,U));g.push(O("mark",{children:$[U]},U,!1,void 0,this)),_=U+1}if(_<$.length)g.push($.slice(_));return g}var kG={md:"markdown",app:"mcp-app",web:"webpage",ui:"json-render",chart:"graph",ctx:"context",log:"ledger"};function yq($){let v=$.toLowerCase().trim();if(v.startsWith("type:")){let g=v.slice(5).trim(),U=Object.keys($v).find((b)=>b.startsWith(g));if(U)return{typeFilter:U,remaining:""};let z=kG[g];if(z)return{typeFilter:z,remaining:""}}if(kG[v])return{typeFilter:kG[v],remaining:""};return{typeFilter:null,remaining:$}}function uB({onClose:$,onToggleMinimap:v}){let[g,_]=x(""),[U,z]=x(0),b=V(null),J=V(null);m(()=>{setTimeout(()=>b.current?.focus(),30)},[]);let G=N(()=>{let H=[];for(let F of T.value.values()){let Y=F.data.title||$v[F.type],X=F.data.content||F.data.path||"";H.push({id:`node:${F.id}`,kind:"node",label:Y,description:X.length>80?X.slice(0,80)+"...":X||void 0,badge:$v[F.type],nodeType:F.type,action:()=>{Fv(F.id),$()}})}let I=[{label:"New note (markdown node)",badge:"CREATE",action:()=>{lv({type:"markdown",title:"New note",width:520,height:360}),$()}},{label:"Fit all nodes",badge:"VIEW",action:()=>{L_(window.innerWidth,window.innerHeight),$()}},{label:"Auto-arrange (grid)",badge:"LAYOUT",action:()=>{F_(),$()}},{label:"Auto-arrange (graph-aware)",badge:"LAYOUT",action:()=>{Y_(),$()}},{label:"Toggle minimap",badge:"VIEW",action:()=>{v(),$()}},{label:"Toggle theme (dark/light)",badge:"THEME",action:()=>{let F=T$.value==="dark"?"light":"dark";document.documentElement.setAttribute("data-theme",F),OU(),T$.value=F,J_(F),$()}}];for(let F of I)H.push({id:`action:${F.label}`,kind:"action",label:F.label,badge:F.badge,badgeClass:"command-palette-badge--action",action:F.action});return H},[$,v]),{typeFilter:K,remaining:W}=yq(g),B=G(),k;if(!g.trim())k=B.map((H)=>({...H,score:0,indices:[]}));else{k=[];for(let H of B){if(K){if(H.kind!=="node"||H.nodeType!==K)continue;if(!W){k.push({...H,score:0,indices:[]});continue}}let I=uq(W||g,H.label);if(I.match)k.push({...H,score:I.score,indices:I.indices})}k.sort((H,I)=>I.score-H.score)}m(()=>{if(!g.trim()){Y6.value=null;return}let H=new Set;for(let I of k)if(I.kind==="node")H.add(I.id.slice(5));Y6.value=H.size>0?H:null},[g,k]),m(()=>{return()=>{Y6.value=null}},[]);let P=Math.min(U,Math.max(0,k.length-1)),A=N((H)=>{if(H.key==="ArrowDown")H.preventDefault(),z((I)=>Math.min(I+1,k.length-1));else if(H.key==="ArrowUp")H.preventDefault(),z((I)=>Math.max(I-1,0));else if(H.key==="Enter"){if(H.preventDefault(),k[P])k[P].action()}else if(H.key==="Escape")H.preventDefault(),H.stopPropagation(),$()},[k,P,$]);return m(()=>{let H=J.current;if(!H)return;H.children[P]?.scrollIntoView({block:"nearest"})},[P]),m(()=>{z(0)},[g]),O("div",{class:"command-palette-backdrop",onMouseDown:$,children:O("div",{class:"command-palette",onMouseDown:(H)=>H.stopPropagation(),children:[O("input",{ref:b,type:"text",class:"command-palette-input",value:g,onInput:(H)=>_(H.target.value),onKeyDown:A,placeholder:`Search nodes and actions... (${Sv}+K)`},void 0,!1,void 0,this),O("div",{class:"command-palette-hint",children:[O("span",{children:[O("kbd",{children:"↑"},void 0,!1,void 0,this),O("kbd",{children:"↓"},void 0,!1,void 0,this)," navigate"]},void 0,!0,void 0,this),O("span",{children:[O("kbd",{children:"↵"},void 0,!1,void 0,this)," select"]},void 0,!0,void 0,this),O("span",{children:[O("kbd",{children:"esc"},void 0,!1,void 0,this)," close"]},void 0,!0,void 0,this),O("span",{children:[O("kbd",{children:"type:"},void 0,!1,void 0,this)," filter by type"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"command-palette-results",ref:J,children:[k.length===0&&O("div",{class:"command-palette-empty",children:"No matching nodes or actions"},void 0,!1,void 0,this),k.map((H,I)=>O("button",{type:"button",class:`command-palette-item${I===P?" selected":""}`,onMouseEnter:()=>z(I),onClick:()=>H.action(),children:[O("span",{class:`command-palette-badge${H.badgeClass?` ${H.badgeClass}`:""}`,children:H.badge},void 0,!1,void 0,this),O("span",{class:"command-palette-label",children:H.indices.length>0?Rq(H.label,H.indices):H.label},void 0,!1,void 0,this),H.description&&O("span",{class:"command-palette-desc",children:H.description},void 0,!1,void 0,this)]},H.id,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function RB(){let[$,v]=x(null),g=N((z,b)=>{z.preventDefault(),z.stopPropagation(),v({kind:"node",x:z.clientX,y:z.clientY,nodeId:b})},[]),_=N((z,b,J)=>{z.preventDefault(),z.stopPropagation(),v({kind:"canvas",x:z.clientX,y:z.clientY,canvasX:b,canvasY:J})},[]),U=N(()=>v(null),[]);return m(()=>{if(!$)return;let z=()=>v(null),b=(J)=>{if(J.key==="Escape")v(null)};return document.addEventListener("click",z),document.addEventListener("keydown",b),()=>{document.removeEventListener("click",z),document.removeEventListener("keydown",b)}},[$]),{menu:$,openNodeMenu:g,openCanvasMenu:_,closeMenu:U}}var Dq="#4bbcFF",Tq=[{label:"Blue",value:"#3b82f6"},{label:"Green",value:"#22c55e"},{label:"Yellow",value:"#eab308"},{label:"Red",value:"#ef4444"},{label:"Gray",value:"#6b7280"},{label:"Purple",value:"#a855f7"}];function yB({menu:$,onClose:v}){let g;if($.kind==="node"){let J=T.value.get($.nodeId);if(!J)return null;g=Eq(J)}else g=mq($.canvasX,$.canvasY);let _=new Map,U=g.some((J)=>J.render)?g.length*32+168:g.length*32+8,z=Math.min($.x,Math.max(12,window.innerWidth-240)),b=Math.min($.y,Math.max(12,window.innerHeight-U));return O("div",{class:"context-menu",style:{position:"fixed",left:`${z}px`,top:`${b}px`,zIndex:1e4},onPointerDown:(J)=>J.stopPropagation(),onClick:(J)=>J.stopPropagation(),children:g.map((J)=>{let G=J.separator?"separator":J.render?"custom":`${J.label??"item"}:${J.shortcut??""}`,K=(_.get(G)??0)+1;_.set(G,K);let W=`${G}:${K}`;if(J.separator)return O("div",{class:"context-menu-separator"},W,!1,void 0,this);if(J.render)return O("div",{class:"context-menu-custom",children:J.render(v)},W,!1,void 0,this);return O("button",{type:"button",class:"context-menu-item",onClick:()=>{J.action?.(),v()},children:[O("span",{class:"context-menu-label",children:J.label},void 0,!1,void 0,this),J.shortcut&&O("span",{class:"context-menu-shortcut",children:J.shortcut},void 0,!1,void 0,this)]},W,!0,void 0,this)})},void 0,!1,void 0,this)}function jq($){return(typeof $.data.path==="string"?$.data.path.trim():"")||null}function T0($){let v=$.trim().toLowerCase(),g=v.match(/^#([0-9a-f]{3})$/);if(g){let[_,U,z]=g[1].split("");return`#${_}${_}${U}${U}${z}${z}`}return v}function DB($){if(typeof $.data.color!=="string"||!$.data.color.trim())return null;return T0($.data.color)}function Vq($){let v=DB($);return v&&/^#[0-9a-f]{6}$/.test(v)?v:T0(Dq)}function IG($,v){let g=v?T0(v):null;Pv($.id,{data:{...$.data,color:g}}),wv($.id,{data:{color:g}})}function Cq($,v){let g=DB($);return O("div",{class:"context-menu-section",children:[O("div",{class:"context-menu-section-header",children:[O("span",{class:"context-menu-section-label",children:"Group color"},void 0,!1,void 0,this),O("button",{type:"button",class:"context-menu-reset",onClick:()=>{IG($,null),v()},children:"Theme default"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"context-menu-color-grid",children:Tq.map((_)=>{let U=T0(_.value);return O("button",{type:"button",class:`context-menu-color-swatch${g===U?" active":""}`,"aria-label":`Set group color to ${_.label}`,title:_.label,style:{"--swatch-color":_.value},onClick:()=>{IG($,_.value),v()},children:[O("span",{class:"context-menu-color-dot",style:{"--swatch-color":_.value}},void 0,!1,void 0,this),O("span",{children:_.label},void 0,!1,void 0,this)]},_.value,!0,void 0,this)})},void 0,!1,void 0,this),O("label",{class:"context-menu-color-custom",children:[O("span",{children:"Custom"},void 0,!1,void 0,this),O("input",{type:"color",class:"context-menu-color-input","aria-label":"Custom group color",value:Vq($),onClick:(_)=>_.stopPropagation(),onInput:(_)=>{IG($,_.currentTarget.value),v()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function LG($,v,g,_){return{x:$-g/2,y:v-_/2}}function fq($,v){return $.trim().replace(/[?#].*$/,"").split("/").filter(Boolean).at(-1)||v}async function HG($){let v=window.prompt($.promptLabel,$.placeholder??"");if(!v)return;let g=v.trim();if(!g)return;let _=LG($.canvasX,$.canvasY,$.width,$.height);if(!(await lv({type:$.type,...$.type!=="webpage"?{title:fq(g,$.titleFallback)}:{},content:g,x:_.x,y:_.y,width:$.width,height:$.height})).ok)window.alert($.errorMessage)}function mq($,v){return[{label:"New note",action:()=>{let U=LG($,v,520,360);lv({type:"markdown",title:"New note",x:U.x,y:U.y,width:520,height:360})}},{label:"Open webpage...",action:()=>{HG({promptLabel:"Webpage URL:",type:"webpage",canvasX:$,canvasY:v,width:520,height:420,placeholder:"https://example.com",titleFallback:"Webpage",errorMessage:"Could not create webpage node. Enter a valid http(s) URL."})}},{label:"Open file...",action:()=>{HG({promptLabel:"Workspace path or absolute file path:",type:"file",canvasX:$,canvasY:v,width:720,height:500,placeholder:"src/server/server.ts",titleFallback:"File",errorMessage:"Could not create file node. Check the path and try again."})}},{label:"Open image...",action:()=>{HG({promptLabel:"Image path, URL, or data URI:",type:"image",canvasX:$,canvasY:v,width:480,height:360,placeholder:"artifacts/architecture.png",titleFallback:"Image",errorMessage:"Could not create image node. Check the image source and try again."})}},{separator:!0},{label:"New group",action:()=>{let U=LG($,v,600,400);K_({title:"Group",x:U.x,y:U.y,width:600,height:400})}}]}function Eq($){let v=[],g=jq($);if(v.push({label:"Focus",action:()=>Fv($.id)}),z_.has($.type))v.push({label:"Expand",shortcut:"⤢",action:()=>z6($.id)});v.push({label:$.collapsed?"Expand":"Collapse",action:()=>q6($.id)});let _=D$.value.has($.id);v.push({label:_?"Unpin from context":"Pin as context",action:()=>L4($.id)}),v.push({label:$.pinned?"Unlock position":"Lock position (no auto-arrange)",action:()=>{let b=!$.pinned;Pv($.id,{pinned:b}),wv($.id,{pinned:b}),d$()}});let U=P_.value;if(U&&U.from!==$.id){let b=T.value.get(U.from),J=b?(b.data.title||b.id).slice(0,20):U.from;v.push({label:`Connect from "${J}"`,action:()=>{P4(U.from,$.id,"relation"),P_.value=null}})}v.push({label:U?"Connect from here (replace)":"Connect from here",action:()=>{P_.value={from:$.id}}});let z=Array.from(c$.value.values()).filter((b)=>b.from===$.id||b.to===$.id).length;if(z>0)v.push({label:`${z} edge${z!==1?"s":""} connected`});if(v.push({separator:!0}),($.type==="markdown"||$.type==="file"||$.type==="image")&&g)v.push({label:"Open in browser",action:()=>{window.open(`/artifact?path=${encodeURIComponent(g)}`,"_blank","noopener")}}),v.push({label:"Copy path",action:()=>{navigator.clipboard.writeText(g)}});if($.type==="mcp-app"||$.type==="json-render"||$.type==="graph")if($.data.chartConfig){let b=$.data.chartConfig.title||"chart";v.push({label:"Copy chart data",action:()=>{navigator.clipboard.writeText(JSON.stringify($.data.chartConfig,null,2))}})}else{let b=$.data.url;if(v.push({label:"Open in browser",action:()=>{if(b)window.open(b,"_blank")}}),v.push({label:"Focus in TUI",action:()=>kK("mcp-app-focus",{url:b})}),$.type==="json-render"||$.type==="graph")v.push({label:"Copy spec",action:()=>{navigator.clipboard.writeText(JSON.stringify($.data.spec??$.data.graphConfig??{},null,2))}})}if($.type==="webpage"){let b=typeof $.data.url==="string"?$.data.url:"";v.push({label:"Refresh webpage",action:()=>{O_($.id)}}),v.push({label:"Open in browser",action:()=>{if(b)window.open(b,"_blank","noopener")}}),v.push({label:"Copy URL",action:()=>{if(b)navigator.clipboard.writeText(b)}})}if($.type==="group"){let b=$.data.children??[];if(v.push({separator:!0}),v.push({render:(J)=>Cq($,J)}),b.length>0)v.push({label:`Ungroup (${b.length} node${b.length!==1?"s":""})`,action:()=>XK($.id)})}if($.type==="status"||$.type==="ledger")if(v.push({separator:!0}),$.dockPosition!==null)v.push({label:"Undock to canvas",action:()=>A4($.id)});else v.push({label:"Dock left of toolbar",action:()=>K2($.id,"left")}),v.push({label:"Dock right of toolbar",action:()=>K2($.id,"right")});return v.push({separator:!0}),v.push({label:"Close",action:()=>{F4($.id),G_($.id)}}),v}function TB(){let $=D$.value.size;if($===0||I6.value||H_.value)return null;return O("div",{class:"context-pin-bar",children:[O("span",{class:"context-pin-bar-count",children:["✦"," ",$," node",$!==1?"s":""," in context"]},void 0,!0,void 0,this),O("button",{type:"button",class:"context-pin-bar-btn context-pin-bar-clear",onClick:jK,title:"Clear all context pins",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function jB({node:$}){let v=$G($),g=$.data.activeTool,_=$.data.subagent,U=M0[v]??"var(--c-muted)";return O("span",{style:{display:"flex",alignItems:"center",gap:"6px",flex:1,minWidth:0},children:[O("span",{style:{width:"6px",height:"6px",borderRadius:"50%",background:U,animation:v!=="idle"?"pulse 1.5s infinite":"none",flexShrink:0}},void 0,!1,void 0,this),O("span",{style:{color:U,fontSize:"10px",textTransform:"uppercase",fontWeight:600},children:v},void 0,!1,void 0,this),g&&O("span",{style:{color:"var(--c-warn)",fontSize:"10px",fontFamily:"var(--mono)"},children:["⚙ ",g]},void 0,!0,void 0,this),_&&_.state!=="completed"&&O("span",{style:{color:"var(--c-subagent)",fontSize:"10px"},children:["⠉ ",_.name]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function cq($){switch($.type){case"status":return O(GU,{node:$},void 0,!1,void 0,this);case"ledger":return O(Z4,{node:$},void 0,!1,void 0,this);case"context":return O(o6,{node:$},void 0,!1,void 0,this);default:return null}}function iq($){let v=Array.isArray($.data.cards)?$.data.cards:[],g=Array.isArray($.data.auxTabs)?$.data.auxTabs:[];return v.length+g.length}function lq({node:$}){let v=CK(),g=v.length>0?v.length:iq($),_=g>0,U=$.collapsed===!0,z=()=>{U_(),q6($.id)};if(U)return O("div",{class:"docked-node docked-node--collapsed","data-docked-node":"true",children:O("div",{class:"docked-node-header",children:[O("span",{class:"node-type-badge",children:"Context"},void 0,!1,void 0,this),_&&O("span",{class:"docked-node-count","aria-hidden":"true",children:g>99?"99+":g},void 0,!1,void 0,this),O("div",{class:"docked-node-controls",children:[O("button",{type:"button",onClick:(b)=>{b.stopPropagation(),z()},title:_?`${g} item${g===1?"":"s"} in agent context — expand`:"Expand agent context","aria-label":_?`Context — ${g} item${g===1?"":"s"}`:"Expand agent context",children:"▸"},void 0,!1,void 0,this),O("button",{type:"button",onClick:(b)=>{b.stopPropagation(),A4($.id)},title:"Undock to canvas","aria-label":"Undock to canvas",children:"⊙"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this);return O("aside",{class:"context-dock-panel","data-docked-node":"true","aria-label":"Agent context",children:[O("div",{class:"context-dock-header",children:[O("div",{class:"context-dock-header-text",children:[O("span",{class:"context-dock-title",children:"Context"},void 0,!1,void 0,this),O("span",{class:"context-dock-subtitle",children:_?`${g} item${g===1?"":"s"} in agent context`:"Active agent context"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"context-dock-controls",children:[O("button",{type:"button",class:"context-dock-icon-button",onClick:(b)=>{b.stopPropagation(),A4($.id)},"aria-label":"Undock to canvas",title:"Undock to canvas",children:"⊙"},void 0,!1,void 0,this),O("button",{type:"button",class:"context-dock-icon-button",onClick:(b)=>{b.stopPropagation(),q6($.id)},"aria-label":"Collapse context panel",title:"Collapse",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"context-dock-body",children:O(o6,{node:$,pinnedNodes:v},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function FG({node:$}){if($.type==="context")return O(lq,{node:$},void 0,!1,void 0,this);return O("div",{class:`docked-node${$.collapsed?" docked-node--collapsed":""}`,"data-docked-node":"true",children:[O("div",{class:"docked-node-header",children:[O("span",{class:"node-type-badge",children:$v[$.type]??$.type},void 0,!1,void 0,this),$.type==="status"&&$.collapsed&&O(jB,{node:$},void 0,!1,void 0,this),O("div",{class:"docked-node-controls",children:[O("button",{type:"button",onClick:(v)=>{v.stopPropagation(),q6($.id)},title:$.collapsed?"Expand":"Collapse",children:$.collapsed?"▸":"▾"},void 0,!1,void 0,this),O("button",{type:"button",onClick:(v)=>{v.stopPropagation(),A4($.id)},title:"Undock to canvas",children:"⊙"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!$.collapsed&&O("div",{class:"docked-node-body",children:cq($)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function VB($,v){switch($.type){case"markdown":return O(R_,{node:$,expanded:v},void 0,!1,void 0,this);case"mcp-app":return O(f6,{node:$,expanded:v},void 0,!1,void 0,this);case"webpage":return O(N0,{node:$,expanded:v},void 0,!1,void 0,this);case"json-render":return O(f6,{node:$,expanded:v},void 0,!1,void 0,this);case"graph":return O(f6,{node:$,expanded:v},void 0,!1,void 0,this);case"prompt":return O(R0,{node:$},void 0,!1,void 0,this);case"response":return O(y0,{node:$,expanded:v},void 0,!1,void 0,this);case"status":return O(GU,{node:$},void 0,!1,void 0,this);case"context":return O(o6,{node:$,expanded:v},void 0,!1,void 0,this);case"ledger":return O(Z4,{node:$},void 0,!1,void 0,this);case"trace":return O(D0,{node:$},void 0,!1,void 0,this);case"file":return O(S_,{node:$,expanded:v},void 0,!1,void 0,this);case"image":return O(Q0,{node:$,expanded:v},void 0,!1,void 0,this);case"html":return O(rg,{node:$,expanded:v},void 0,!1,void 0,this);default:return O("div",{children:"Unknown node type"},void 0,!1,void 0,this)}}function CB($){switch($.type){case"markdown":return $.data.content||"";case"file":return $.data.fileContent||"";case"webpage":return $.data.content||"";case"html":return $.data.html||$.data.content||"";case"json-render":case"graph":return JSON.stringify($.data.spec??$.data.graphConfig??{},null,2);default:return""}}function hq($){if(!$)return 0;return $.split(/\s+/).filter(Boolean).length}function xq($,v){return $!==null&&typeof $==="object"&&$.source==="pmx-canvas-html-node"&&$.type==="presentation-exit"&&$.token===v}function pq($){return $==="ArrowRight"||$==="PageDown"||$===" "||$==="ArrowLeft"||$==="PageUp"||$==="Home"||$==="End"}function fB($){return $ instanceof HTMLElement&&Boolean($.closest(".html-presentation-exit"))}function mB(){let $=E$.value,v=$?T.value.get($):void 0,[g,_]=x(!1),[U,z]=x(!1),[b,J]=x(""),G=V(null),K=V(null),W=N(()=>{z(!1),p6()},[]),B=N(()=>{J(`presentation-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`),z(!0)},[]),k=N((r)=>{document.querySelector(".html-presentation-overlay iframe.html-node-frame-presentation")?.contentWindow?.postMessage({source:"pmx-canvas-html-node",token:b,...r},"*")},[b]),P=N(()=>{z(!1)},[]),A=N((r)=>{if(r.key==="Escape"){r.preventDefault(),r.stopPropagation(),z(!1);return}if(r.key==="Tab"&&!fB(r.target)){r.preventDefault(),r.stopPropagation(),K.current?.focus();return}if((r.key===" "||r.key==="Enter")&&fB(r.target))return;if(!pq(r.key))return;r.preventDefault(),r.stopPropagation(),k({type:"presentation-key",key:r.key})},[k]),H=N((r)=>{if(r.target.classList.contains("expanded-overlay-backdrop"))p6()},[]),I=N(()=>{if(!v)return;let r=CB(v);if(!r)return;navigator.clipboard.writeText(r).then(()=>{_(!0),setTimeout(()=>_(!1),1500)})},[v]),F=N(()=>{if(!$)return;L4($)},[$]);if(m(()=>{z(!1)},[$]),xg(()=>{if(!U)return;let r=()=>{let p=G.current;if(!p||p.contains(document.activeElement))return;p.focus()},R=[0,50,150].map((p)=>window.setTimeout(r,p)),$$=(p)=>{if(!xq(p.data,b))return;z(!1)};return document.addEventListener("keydown",A,!0),window.addEventListener("message",$$),()=>{R.forEach((p)=>window.clearTimeout(p)),document.removeEventListener("keydown",A,!0),window.removeEventListener("message",$$)}},[A,b,U]),!v)return null;let Y=v.data.title||v.data.path?.split("/").pop()||$v[v.type],X=CB(v),Q=hq(X),u=$?D$.value.has($):!1,E=X.length>0,M=hv.value===$,n=v.type==="mcp-app"||v.type==="webpage"||v.type==="json-render"||v.type==="graph",t=rW(v);return O("div",{class:"expanded-overlay-backdrop",onPointerDown:H,style:{position:"fixed",inset:0,zIndex:10001,background:"rgba(10,14,30,0.85)",backdropFilter:"blur(8px)",display:"flex",alignItems:"stretch",justifyContent:"center",padding:"32px",pointerEvents:M?"none":"auto"},children:O("div",{class:"expanded-overlay-panel",style:{flex:1,maxWidth:"1200px",display:"flex",flexDirection:"column",background:"var(--c-panel)",border:`1px solid ${u?"var(--c-warn)":"var(--c-accent)"}`,borderRadius:"var(--radius)",boxShadow:`0 0 0 1px ${u?"var(--c-warn)":"var(--c-accent)"}, 0 24px 80px rgba(0,0,0,0.6)`,overflow:"hidden"},children:[O("div",{style:{display:"flex",alignItems:"center",gap:"10px",padding:"10px 16px",background:"var(--c-panel-glass)",borderBottom:"1px solid var(--c-line)",flexShrink:0},children:[O("span",{style:{fontSize:"10px",padding:"1px 6px",borderRadius:"4px",background:"var(--c-accent-12)",color:"var(--c-accent)",textTransform:"uppercase",letterSpacing:"0.04em"},children:$v[v.type]},void 0,!1,void 0,this),O("span",{style:{flex:1,fontSize:"13px",fontWeight:600,color:"var(--c-text)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:Y},void 0,!1,void 0,this),O("div",{class:"expanded-actions",children:[O("button",{type:"button",class:`expanded-action-btn ${u?"expanded-action-active":""}`,onClick:F,title:u?"Remove from context":"Pin as context",children:u?"✦ In context":"✦ Pin as context"},void 0,!1,void 0,this),E&&O("button",{type:"button",class:"expanded-action-btn",onClick:I,title:"Copy content to clipboard",children:g?"Copied!":"Copy"},void 0,!1,void 0,this),r0(v)&&O("button",{type:"button",class:"expanded-action-btn",onClick:()=>void u0(v),title:"Open as a full-page site in the system browser",children:"Open as site"},void 0,!1,void 0,this),t&&O("button",{type:"button",class:"expanded-action-btn expanded-action-primary",onClick:B,title:"Present this HTML node fullscreen",children:"Present"},void 0,!1,void 0,this),Q>0&&O("span",{class:"expanded-meta",children:[Q.toLocaleString()," word",Q!==1?"s":""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O("span",{style:{fontSize:"10px",color:M?"var(--c-warn)":"var(--c-muted)"},children:M?"Saving edits...":"Esc to close"},void 0,!1,void 0,this),O("button",{type:"button",onClick:W,style:{background:"none",border:"none",color:"var(--c-muted)",cursor:"pointer",padding:"2px 6px",fontSize:"16px",lineHeight:1,borderRadius:"4px"},onMouseEnter:(r)=>{r.target.style.color="var(--c-text)"},onMouseLeave:(r)=>{r.target.style.color="var(--c-muted)"},title:"Close (Esc)",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{style:{flex:1,overflow:"auto",padding:"16px",minHeight:0,...n?{display:"flex",flexDirection:"column"}:{}},children:n?O("div",{style:{flex:1,minHeight:0,display:"flex"},children:VB(v,!0)},void 0,!1,void 0,this):VB(v,!0)},void 0,!1,void 0,this),t&&U&&O("div",{ref:G,class:"html-presentation-overlay",role:"dialog","aria-modal":"true","aria-label":`Present ${Y}`,tabIndex:-1,onKeyDownCapture:A,children:[O("button",{ref:K,type:"button",class:"html-presentation-exit",onClick:P,title:"Exit presentation (Esc)","aria-label":"Exit presentation",children:"Exit presentation"},void 0,!1,void 0,this),O("div",{class:"html-presentation-stage",children:O(rg,{node:v,expanded:!0,presentation:!0,presentationExitToken:b},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var IU=180,HU=120,j0=20;function oq(){let $=S0();return{markdown:$.accent,"mcp-app":$.ok,webpage:$.warn,"json-render":$.ok,graph:$.purple,prompt:$.accent,response:$.ok,status:$.warn,context:$.muted,ledger:$.dim,trace:$.purple,file:$.accent,image:$.ok,html:$.warn,group:$.dim}}function nq(){let $=S0();return{relation:$.muted,"depends-on":$.warn,flow:$.accent,references:$.dim}}function EB($,v,g,_){let U=Array.from($.values()),z=0,b=0,J=1000,G=800;if(U.length>0){z=Number.POSITIVE_INFINITY,b=Number.POSITIVE_INFINITY,J=Number.NEGATIVE_INFINITY,G=Number.NEGATIVE_INFINITY;for(let I of U)z=Math.min(z,I.position.x),b=Math.min(b,I.position.y),J=Math.max(J,I.position.x+I.size.width),G=Math.max(G,I.position.y+I.size.height)}let K=-v.x/v.scale,W=-v.y/v.scale,B=K+g/v.scale,k=W+_/v.scale,P={minX:Math.min(z,K)-j0,minY:Math.min(b,W)-j0,maxX:Math.max(J,B)+j0,maxY:Math.max(G,k)+j0},A=P.maxX-P.minX||1,H=P.maxY-P.minY||1;return{bounds:P,scale:Math.min(IU/A,HU/H)}}function cB({viewport:$,nodes:v,edges:g,onNavigate:_,containerWidth:U,containerHeight:z}){let b=V(null),J=V(!1),G=V(null),K=V(null),W=N(()=>{let H=b.current;if(!H)return;let I=H.getContext("2d");if(!I)return;let F=v.value,Y=g.value,X=$.value,Q=window.devicePixelRatio||1;H.width=IU*Q,H.height=HU*Q,I.scale(Q,Q),I.clearRect(0,0,IU,HU);let u=S0();I.fillStyle=u.panel+"d9",I.fillRect(0,0,IU,HU);let E=EB(F,X,U,z);G.current=E;let{bounds:M,scale:n}=E,t=(w)=>(w-M.minX)*n,r=(w)=>(w-M.minY)*n,R=Array.from(F.values()),$$=oq();for(let w of R)I.fillStyle=$$[w.type]??u.muted,I.globalAlpha=0.6,I.fillRect(t(w.position.x),r(w.position.y),Math.max(4,w.size.width*n),Math.max(3,w.size.height*n));let p=nq();for(let w of Y.values()){let l=F.get(w.from),e=F.get(w.to);if(!l||!e)continue;let s=t(l.position.x+l.size.width/2),W$=r(l.position.y+l.size.height/2),z$=t(e.position.x+e.size.width/2),a=r(e.position.y+e.size.height/2);I.beginPath(),I.moveTo(s,W$),I.lineTo(z$,a),I.strokeStyle=p[w.type]??u.muted,I.globalAlpha=0.3,I.lineWidth=0.5,I.stroke()}let c=-X.x/X.scale,P$=-X.y/X.scale,Z$=U/X.scale,i$=z/X.scale;I.globalAlpha=1,I.strokeStyle=u.accent,I.lineWidth=1.5,I.strokeRect(t(c),r(P$),Z$*n,i$*n)},[v,g,$,U,z]),B=V(W);B.current=W;let k=N(()=>{if(K.current!==null)return;K.current=window.requestAnimationFrame(()=>{K.current=null,B.current()})},[]);JK(()=>{T$.value,v.value,g.value,$.value,k()}),m(()=>{k()},[U,z,k]),m(()=>()=>{if(K.current!==null)window.cancelAnimationFrame(K.current),K.current=null},[]);let P=N((H)=>{let I=b.current;if(!I)return;let F=I.getBoundingClientRect(),Y=H.clientX-F.left,X=H.clientY-F.top,Q=G.current??EB(v.value,$.value,U,z);G.current=Q;let{bounds:u,scale:E}=Q,M=$.value,n=U/M.scale,t=z/M.scale,r=Y/E+u.minX,R=X/E+u.minY;_(-(r-n/2)*M.scale,-(R-t/2)*M.scale)},[v,$,U,z,_]),A=N((H)=>{H.stopPropagation(),J.current=!0,P(H);let I=(Y)=>{if(J.current)P(Y)},F=()=>{J.current=!1,document.removeEventListener("pointermove",I),document.removeEventListener("pointerup",F)};document.addEventListener("pointermove",I),document.addEventListener("pointerup",F)},[P]);return O("div",{style:{position:"fixed",bottom:"16px",right:"16px",zIndex:9998,border:"1px solid var(--c-line)",borderRadius:"var(--radius-sm)",overflow:"hidden",boxShadow:"0 4px 16px var(--c-shadow)"},children:O("canvas",{ref:b,width:IU,height:HU,style:{width:`${IU}px`,height:`${HU}px`,display:"block",cursor:"pointer"},onPointerDown:A},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function iB(){let $=h$.value.size;if($===0)return null;let v=N(()=>{let U=Array.from(h$.value);if(U.length===0)return;TK(U),jv()},[]),g=N(()=>{let U=Array.from(h$.value);if(U.length===0)return;K_({title:"Group",childIds:U}),jv()},[]),_=N(()=>{let U=Array.from(h$.value);for(let z=0;z<U.length;z++)for(let b=z+1;b<U.length;b++)P4(U[z],U[b],"relation");jv()},[]);return O("div",{class:"selection-bar",children:[O("span",{class:"selection-bar-count",children:["✦"," ",$," node",$!==1?"s":""," selected"]},void 0,!0,void 0,this),O("button",{type:"button",class:"selection-bar-btn selection-bar-pin-ctx",onClick:v,children:"Pin as context"},void 0,!1,void 0,this),$>=2&&O("button",{type:"button",class:"selection-bar-btn",onClick:g,children:"Group"},void 0,!1,void 0,this),$>=2&&O("button",{type:"button",class:"selection-bar-btn",onClick:_,children:"Connect"},void 0,!1,void 0,this),O("button",{type:"button",class:"selection-bar-btn selection-bar-clear",onClick:jv,title:"Clear selection",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var tq=[{title:"Navigation",shortcuts:[{keys:`${Sv}+K`,desc:"Command palette — search nodes & actions"},{keys:"Tab / Shift+Tab",desc:"Cycle through nodes"},{keys:"← ↑ → ↓",desc:"Walk graph along edges (when node focused)"},{keys:`${Sv}+0`,desc:"Reset viewport to origin"},{keys:`${Sv}++ / ${Sv}+−`,desc:"Zoom in / out"}]},{title:"Creation",shortcuts:[{keys:"Double-click",desc:"Create new markdown note on canvas"},{keys:"Drag port → node",desc:"Connect two nodes (hover to reveal ports)"}]},{title:"Selection",shortcuts:[{keys:"Click",desc:"Focus node (highlights neighbors & edges)"},{keys:"Shift+Click",desc:"Toggle node in multi-selection"},{keys:"Shift+Drag",desc:"Lasso select multiple nodes"},{keys:"Esc",desc:"Clear selection / close overlay"}]},{title:"View",shortcuts:[{keys:"?",desc:"Toggle this shortcut overlay"},{keys:"Minimap",desc:"Click/drag to navigate (toggle in toolbar)"},{keys:"Right-click",desc:"Context menu — dock, focus, connect"}]}];function lB({onClose:$}){return O("div",{class:"shortcut-overlay-backdrop",onMouseDown:$,children:O("div",{class:"shortcut-overlay",onMouseDown:(v)=>v.stopPropagation(),children:[O("div",{class:"shortcut-overlay-header",children:[O("span",{class:"shortcut-overlay-title",children:"Keyboard Shortcuts"},void 0,!1,void 0,this),O("span",{class:"shortcut-overlay-hint",children:["Press ",O("kbd",{children:"?"},void 0,!1,void 0,this)," or ",O("kbd",{children:"Esc"},void 0,!1,void 0,this)," to close"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"shortcut-overlay-body",children:tq.map((v)=>O("div",{class:"shortcut-group",children:[O("div",{class:"shortcut-group-title",children:v.title},void 0,!1,void 0,this),v.shortcuts.map((g)=>O("div",{class:"shortcut-row",children:[O("kbd",{class:"shortcut-keys",children:g.keys},void 0,!1,void 0,this),O("span",{class:"shortcut-desc",children:g.desc},void 0,!1,void 0,this)]},g.keys,!0,void 0,this))]},v.title,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function dq($){let v=Date.now()-new Date($).getTime(),g=Math.floor(v/60000);if(g<1)return"just now";if(g<60)return`${g}m ago`;let _=Math.floor(g/60);if(_<24)return`${_}h ago`;return`${Math.floor(_/24)}d ago`}function hB({open:$,onClose:v,anchorRef:g}){let[_,U]=x([]),[z,b]=x(!1),[J,G]=x(!1),[K,W]=x(null),[B,k]=x(""),[P,A]=x(null),H=V(null),I=V(null);m(()=>{if(!$)return;b(!0),wK().then((M)=>{U(M),b(!1)})},[$]),m(()=>{if($)setTimeout(()=>I.current?.focus(),50)},[$]),m(()=>{if(!$)return;let M=(n)=>{let t=H.current,r=g.current;if(t&&!t.contains(n.target)&&r&&!r.contains(n.target))v()};return document.addEventListener("mousedown",M),()=>document.removeEventListener("mousedown",M)},[$,v]),m(()=>{if(!$)return;let M=(n)=>{if(n.key==="Escape")v()};return document.addEventListener("keydown",M),()=>document.removeEventListener("keydown",M)},[$,v]);let F=N(async()=>{let M=B.trim();if(!M)return;G(!0);let n=await ZK(M);if(G(!1),n.ok&&n.snapshot)U((t)=>[n.snapshot,...t]),k("")},[B]),Y=N(async(M)=>{A(null),W(M);let n=await SK(M);if(W(null),n.ok)v()},[v]),X=N(async(M)=>{if((await MK(M)).ok)U((t)=>t.filter((r)=>r.id!==M));A(null)},[]);if(!$)return null;let Q=g.current?.getBoundingClientRect(),u=Q?Math.max(8,Q.left-120):100,E=Q?Q.bottom+8:48;return O("div",{ref:H,class:"snapshot-panel",style:{left:`${u}px`,top:`${E}px`},children:[O("div",{class:"snapshot-panel-header",children:[O("span",{class:"snapshot-panel-title",children:"Snapshots"},void 0,!1,void 0,this),O("button",{type:"button",class:"snapshot-panel-close",onClick:v,title:"Close",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"snapshot-save-form",children:[O("input",{ref:I,type:"text",class:"snapshot-name-input",value:B,onInput:(M)=>k(M.target.value),onKeyDown:(M)=>{if(M.key==="Enter")F()},placeholder:"Snapshot name...",maxLength:80,disabled:J},void 0,!1,void 0,this),O("button",{type:"button",class:"snapshot-save-btn",onClick:F,disabled:!B.trim()||J,children:J?"...":"Save"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"snapshot-restore-note",children:"Restoring replaces the current canvas. You can undo it if needed."},void 0,!1,void 0,this),O("div",{class:"snapshot-list",children:[z&&O("div",{class:"snapshot-empty",children:"Loading..."},void 0,!1,void 0,this),!z&&_.length===0&&O("div",{class:"snapshot-empty",children:"No snapshots yet. Save one to capture the current canvas state."},void 0,!1,void 0,this),!z&&_.map((M)=>O("div",{class:"snapshot-item",children:[O("div",{class:"snapshot-item-info",children:[O("span",{class:"snapshot-item-name",children:M.name},void 0,!1,void 0,this),O("span",{class:"snapshot-item-meta",children:[M.nodeCount," node",M.nodeCount!==1?"s":"",M.edgeCount>0?` · ${M.edgeCount} edge${M.edgeCount!==1?"s":""}`:""," · ",dq(M.createdAt)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"snapshot-item-actions",children:P?.id===M.id?O(e$,{children:[O("button",{type:"button",class:`snapshot-action-btn ${P.action==="delete"?"snapshot-action-confirm":"snapshot-action-restore"}`,onClick:()=>P.action==="delete"?X(M.id):Y(M.id),title:P.action==="delete"?"Confirm delete":"Confirm restore",disabled:K!==null,children:P.action==="delete"?"Delete":K===M.id?"Restoring...":"Confirm"},void 0,!1,void 0,this),O("button",{type:"button",class:"snapshot-action-btn",onClick:()=>A(null),title:"Cancel",disabled:K!==null,children:"Cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):O(e$,{children:[O("button",{type:"button",class:"snapshot-action-btn snapshot-action-restore",onClick:()=>A({id:M.id,action:"restore"}),title:"Restore this snapshot",disabled:K!==null,children:K===M.id?"Restoring...":"Restore"},void 0,!1,void 0,this),O("button",{type:"button",class:"snapshot-action-btn snapshot-action-delete",onClick:()=>A({id:M.id,action:"delete"}),title:"Delete this snapshot",disabled:K!==null,children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},M.id,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function xB($,v,g,_,U){return $.x<_.position.x+_.size.width+U&&$.x+v+U>_.position.x&&$.y<_.position.y+_.size.height+U&&$.y+g+U>_.position.y}function aq($,v,g,_,U){return _.some((z)=>xB($,v,g,z,U))}function sq($,v,g,_,U){return _.find((z)=>xB($,v,g,z,U))}function V0($,v,g,_=24){if($.length===0)return{x:40,y:80};let U=$[$.length-1],z={x:U.position.x+U.size.width+_,y:U.position.y};if(!aq(z,v,g,$,_))return z;let b=40,J=80,G=3000,K=J;for(let B=0;B<20;B++){let k=b;while(k+v<G){let H=sq({x:k,y:K},v,g,$,_);if(!H)return{x:k,y:K};k=H.position.x+H.size.width+_}K=$.filter((H)=>H.position.y<=K+g+_&&H.position.y+H.size.height+_>K).reduce((H,I)=>Math.max(H,I.position.y+I.size.height),K)+_}let W=$.reduce((B,k)=>Math.max(B,k.position.y+k.size.height),0);return{x:b,y:W+_}}var Dg=null,AG=null,YG=0,m6=null,f0=new Map;function Tg($){let v=0;for(let g=0;g<$.length;g++)v=(v<<5)-v+$.charCodeAt(g)|0;return Math.abs(v).toString(36)}function m0($){if(!AG)return $;let v=AG.get($.id);if(!v)return $;return{...$,position:v.position??$.position,size:v.size??$.size,collapsed:v.collapsed??$.collapsed,pinned:v.pinned??$.pinned,dockPosition:v.dockPosition!==void 0?v.dockPosition:$.dockPosition}}var sv={status:{x:40,y:80,w:300,h:120},markdown:{x:380,y:80,w:720,h:600},context:{x:1130,y:80,w:320,h:400},"mcp-app":{x:380,y:720,w:960,h:600},webpage:{x:380,y:80,w:520,h:420},"json-render":{x:380,y:720,w:840,h:620},graph:{x:380,y:720,w:760,h:520},ledger:{x:1130,y:520,w:320,h:280},trace:{x:40,y:900,w:200,h:56},file:{x:380,y:80,w:720,h:600},image:{x:380,y:80,w:720,h:520},html:{x:380,y:80,w:720,h:640},group:{x:220,y:60,w:840,h:560},prompt:{x:380,y:1260,w:520,h:400},response:{x:380,y:1480,w:720,h:400}};function jg($,v,g,_=null){let U=sv[v];return m0({id:$,type:v,position:{x:U.x,y:U.y},size:{width:U.w,height:U.h},zIndex:v==="status"?0:1,collapsed:!1,pinned:!1,dockPosition:_,data:g})}function eq(){return V0([...T.value.values()],sv.markdown.w,sv.markdown.h)}function _4(){if(!T.value.has("status-main"))_6(jg("status-main","status",{phase:"idle",message:"",elapsed:0},"left"))}function $X($,v){let g=`md-${Tg($)}`;if(T.value.get(g))U$(g,{path:$,title:v}),y$.value=g;else{let U=eq(),z=jg(g,"markdown",{path:$,title:v,content:"",rendered:""});if(z.position=U,_6(z),!z.dockPosition)Fv(g)}}function vX($){if(T.value.get("context-main"))U$("context-main",{cards:$});else if($.length>0){let _=jg("context-main","context",{cards:$});_6(_)}}function UX($){let v=$.url,g=`mcp-${Tg(v)}`;if(T.value.get(g))U$(g,$);else _6(jg(g,"mcp-app",$)),Fv(g)}function gX($){let v=$.toolCallId,_=(typeof $.nodeId==="string"&&$.nodeId.length>0?$.nodeId:null)??(v.startsWith("ext-app-")?v:`ext-app-${v}`);if(T.value.get(_)){U$(_,$);return}let{serverName:z,toolName:b}=$;if(z&&b){for(let[I,F]of T.value.entries())if(F.type==="mcp-app"&&F.data.mode==="ext-app"&&F.data.serverName===z&&F.data.toolName===b&&!F.data.toolResult){U$(I,{...$});return}}let{_x:J,_y:G,_width:K,_height:W}=$,B=sv["mcp-app"],k=K??B.w,P=W??B.h,A=J===void 0||G===void 0?V0([...T.value.values()],k,P):null,H=m0({id:_,type:"mcp-app",position:{x:J??A?.x??B.x,y:G??A?.y??B.y},size:{width:k,height:P},zIndex:1,collapsed:!1,pinned:!1,dockPosition:null,data:{mode:"ext-app",...$}});if(_6(H),!H.dockPosition)Fv(_,{recordHistory:!1})}function _X($){let v=$.startsWith("ext-app-")?$:`ext-app-${$}`;if(T.value.has(v))return v;let g=`ext-app-${$}`;if(g!==v&&T.value.has(g))return g;for(let[_,U]of T.value.entries())if(U.type==="mcp-app"&&U.data.mode==="ext-app"&&U.data.toolCallId===$)return _;return null}function oB($){let v=typeof $.nodeId==="string"&&$.nodeId.length>0?$.nodeId:null;if(v&&T.value.has(v))return v;if(typeof $.toolCallId!=="string"||!$.toolCallId)return null;return _X($.toolCallId)}function nB($,v){if(typeof $!=="string"||!$)return null;if(typeof v!=="string"||!v)return null;let g=null;for(let[_,U]of T.value.entries())if(U.type==="mcp-app"&&U.data.mode==="ext-app"&&U.data.serverName===$&&U.data.toolName===v&&!U.data.toolResult){if(g)return null;g=_}return g}function tB($){if(T.value.get("ledger-main"))U$("ledger-main",$);else{let _=jg("ledger-main","ledger",$,"right");_.collapsed=!0,_6(_)}}function dB($){if(!($==="dark"||$==="light"||$==="high-contrast"))return;if(document.documentElement.setAttribute("data-theme",$),OU(),T$.value!==$)T$.value=$}function zX($){return $==="markdown"||$==="mcp-app"||$==="webpage"||$==="json-render"||$==="graph"||$==="prompt"||$==="response"||$==="status"||$==="context"||$==="ledger"||$==="trace"||$==="file"||$==="image"||$==="html"||$==="group"}function bX($){return $==="relation"||$==="depends-on"||$==="flow"||$==="references"}function qG($){if(!$||typeof $!=="object")return null;let v=$;if(typeof v.x!=="number"||typeof v.y!=="number")return null;return{x:v.x,y:v.y}}function aB($){if(!$||typeof $!=="object")return null;let v=$;if(typeof v.width!=="number"||typeof v.height!=="number")return null;return{width:v.width,height:v.height}}function JX($){let v=qG($),g=aB($);return v&&g?{...v,...g}:null}function OX($){if(typeof $.id!=="string"||!$.id)return null;if(!zX($.type))return null;let v=qG($.position),g=aB($.size);if(!v||!g)return null;let _=$.dockPosition==="left"||$.dockPosition==="right"?$.dockPosition:null,U=$.data&&typeof $.data==="object"?Object.fromEntries(Object.entries($.data)):{};return{id:$.id,type:$.type,position:v,size:g,zIndex:typeof $.zIndex==="number"?$.zIndex:1,collapsed:$.collapsed===!0,pinned:$.pinned===!0,dockPosition:_,data:U}}function GX($){if(typeof $.id!=="string"||!$.id)return null;if(typeof $.from!=="string"||!$.from)return null;if(typeof $.to!=="string"||!$.to)return null;if(!bX($.type))return null;return{id:$.id,from:$.from,to:$.to,type:$.type,...typeof $.label==="string"?{label:$.label}:{},...$.style==="solid"||$.style==="dashed"||$.style==="dotted"?{style:$.style}:{},...$.animated===!0?{animated:!0}:{}}}function KX($){if(typeof $.id!=="string"||!$.id)return null;if($.type!=="freehand"&&$.type!=="text")return null;if(!Array.isArray($.points))return null;let v=$.points.map((_)=>qG(_)).filter((_)=>_!==null),g=JX($.bounds);if(v.length<($.type==="text"?1:2)||!g)return null;return{id:$.id,type:$.type,points:v,bounds:g,color:typeof $.color==="string"?$.color:"#f97316",width:typeof $.width==="number"?$.width:4,...typeof $.text==="string"?{text:$.text}:{},...typeof $.label==="string"?{label:$.label}:{},createdAt:typeof $.createdAt==="string"?$.createdAt:""}}function WX($){if(H4.value=$.sessionId||"",h6.value="connected",typeof $.theme==="string")dB($.theme);if($.ledgerSummary)tB($.ledgerSummary)}function BX($){if(typeof $.path!=="string"||!$.path)return;let v=$.path,g=(typeof $.title==="string"?$.title:"")||v.split("/").pop()||"Untitled";if($X(v,g),$.ledgerSummary)tB($.ledgerSummary)}function PX($){_4(),U$("status-main",{message:typeof $.message==="string"?$.message:String($.message??""),level:$.level??"ok",source:$.source})}function kX($){_4(),U$("status-main",{phase:$.phase,detail:$.detail})}function IX($){let v=$.cards??[];vX(v)}function HX($){if(typeof $.url==="string"&&$.url)UX({url:$.url,sourceServer:$.sourceServer,sourceTool:$.sourceTool,inferredType:$.inferredType,trustedDomain:$.trustedDomain,hostMode:$.hostMode??"hosted"})}function LX($){let v=$.sessions??[];for(let g of v){let _=g.url;if(!_)continue;let U=`mcp-${Tg(_)}`;if(T.value.has(U))U$(U,{sessionState:g.state,lastSeenAt:g.lastSeenAt})}}function FX($){if(typeof $.url==="string"&&$.url){let v=`mcp-${Tg($.url)}`;if(T.value.has(v))U$(v,{hostMode:"fallback",fallbackReason:$.reasonCode})}}function YX($){let g=T.value.get("context-main");if(!g)return;let _=(g.data.auxTabs??[]).concat($);U$("context-main",{auxTabs:_})}function AX($){if(T.value.has("context-main"))if($.mode==="all")U$("context-main",{auxTabs:[]});else{let _=T.value.get("context-main");if(!_)return;let U=(_.data.auxTabs??[]).filter((z)=>z.id!==$.id);U$("context-main",{auxTabs:U})}}function qX($){_4(),U$("status-main",{phase:"idle",lastCompletion:{tokenCount:$.tokenCount,artifactCount:$.artifactCount}})}function XX($){_4(),U$("status-main",{phase:"tooling",detail:`${$.name}`,activeTool:$.name})}function wX($){_4(),U$("status-main",{activeTool:null})}function ZX($){if($.state==="active"&&$.path){let g=`md-${Tg($.path)}`;if(T.value.has(g))U$(g,{reviewActive:!0})}}function SX($){if(typeof $.toolCallId!=="string"||!$.toolCallId)return;gX({toolCallId:$.toolCallId,...typeof $.nodeId==="string"&&$.nodeId.length>0?{nodeId:$.nodeId}:{},title:$.title,html:$.html,toolInput:$.toolInput,serverName:$.serverName,toolName:$.toolName,appSessionId:$.appSessionId,resourceUri:$.resourceUri,toolDefinition:$.toolDefinition,resourceMeta:$.resourceMeta,hostMode:"hosted",trustedDomain:!0,...$.chartConfig?{chartConfig:$.chartConfig}:{},...typeof $.x==="number"&&{_x:$.x},...typeof $.y==="number"&&{_y:$.y},...typeof $.width==="number"&&{_width:$.width},...typeof $.height==="number"&&{_height:$.height}})}function MX($){if(typeof $.toolCallId!=="string"||!$.toolCallId)return;let v=oB($)??nB($.serverName,$.toolName);if(!v)return;if(T.value.has(v))U$(v,{html:$.html})}function QX($){if(typeof $.toolCallId!=="string"||!$.toolCallId)return;let v=oB($)??nB($.serverName,$.toolName);if(!v)return;if(T.value.has(v)){if($.success===!1){F4(v);return}U$(v,{toolResult:dO({result:$.result,success:typeof $.success==="boolean"?$.success:void 0,error:typeof $.error==="string"?$.error:void 0,content:typeof $.content==="string"?$.content:void 0,detailedContent:typeof $.detailedContent==="string"?$.detailedContent:void 0})})}}function NX($){_4(),U$("status-main",{subagent:{state:$.state,name:$.agentDisplayName??$.agentName}})}function rX($){let v=$.nodeId;if(!v)return;let g=$.text||"",_=$.position,U=$.parentNodeId,z=$.contextNodeIds;if($.threadNodeId&&T.value.has($.threadNodeId)){let b=$.threadNodeId,J=T.value.get(b);if(!J)return;let G=Array.isArray(J.data.turns)?[...J.data.turns]:[],K=G[G.length-1];if(!K||K.role!=="user"||K.text!==g)G.push({role:"user",text:g,status:"pending"});U$(b,{turns:G,threadStatus:"pending"});return}if(!T.value.has(v)){let b=_??sv.prompt;_6(m0({id:v,type:"prompt",position:{x:b.x,y:b.y},size:{width:sv.prompt.w,height:400},zIndex:1,collapsed:!1,pinned:!1,dockPosition:null,data:{text:g,turns:g?[{role:"user",text:g,status:"pending"}]:[],threadStatus:g?"pending":"draft",status:g?"pending":"draft",parentNodeId:U,contextNodeIds:z}})),Fv(v)}if(U&&T.value.has(U))I_({id:`edge-${U}-${v}`,from:U,to:v,type:"flow",style:"dashed"})}function uX($){let{nodeId:v,status:g}=$;if(v&&T.value.has(v))U$(v,{status:g})}function RX($){let{responseNodeId:v,promptNodeId:g}=$;if(!v)return;let _=g?T.value.get(g):void 0;if(_&&Array.isArray(_.data.turns)){f0.set(v,g);let z=[..._.data.turns];z.push({role:"assistant",text:"",status:"streaming"}),U$(g,{turns:z,threadStatus:"streaming",_activeResponseId:v}),Fv(g);return}let U=_?{x:_.position.x,y:_.position.y+_.size.height+24}:{x:sv.response.x,y:sv.response.y};if(!T.value.has(v))_6(m0({id:v,type:"response",position:U,size:{width:sv.response.w,height:sv.response.h},zIndex:1,collapsed:!1,pinned:!1,dockPosition:null,data:{content:"",status:"streaming",promptNodeId:g}}));if(g)I_({id:`edge-${g}-${v}`,from:g,to:v,type:"flow",animated:!0});Fv(v)}function yX($){let v=$.responseNodeId;if(!v)return;let g=f0.get(v);if(g){let _=T.value.get(g);if(_&&Array.isArray(_.data.turns)){let U=[..._.data.turns],z=U[U.length-1];if(z&&z.role==="assistant")z.text=$.content,z.status="streaming";U$(g,{turns:U,threadStatus:"streaming"})}return}if(!T.value.has(v))return;U$(v,{content:$.content,status:"streaming"})}function DX($){let v=$.responseNodeId;if(!v)return;let g=f0.get(v);if(g){let z=T.value.get(g);if(z&&Array.isArray(z.data.turns)){let b=[...z.data.turns],J=b[b.length-1];if(J&&J.role==="assistant")J.text=$.content,J.status="complete";U$(g,{turns:b,threadStatus:"answered",_activeResponseId:void 0})}f0.delete(v);return}if(!T.value.has(v))return;U$(v,{content:$.content,status:"complete"});let U=T.value.get(v)?.data.promptNodeId;if(U){let z=`edge-${U}-${v}`,b=c$.value.get(z);if(b)fK(z),I_({...b,animated:!1})}}function TX($){let v=$.layout;if(!v?.nodes)return;let g=!x6.value;x6.value=!0;let _=v.nodes.map(OX).filter((J)=>J!==null),U=Array.isArray(v.edges)?v.edges.map(GX).filter((J)=>J!==null):Array.from(c$.value.values()),z=Array.isArray(v.annotations)?v.annotations.map(KX).filter((J)=>J!==null):void 0,b=v.viewport?{x:typeof v.viewport.x==="number"?v.viewport.x:0,y:typeof v.viewport.y==="number"?v.viewport.y:0,scale:typeof v.viewport.scale==="number"?v.viewport.scale:1}:void 0;q4(),xK({...b?{viewport:b}:{},nodes:_,edges:U,...z?{annotations:z}:{}},{applyViewport:g}),F2({event:"canvas-layout-update",data:$})}function jX($){if($<=1)return 500;if($===2)return 1000;return Math.min(2500,1500+($-3)*500)}function VX($){let v=$.nodeId;if(v&&T.value.has(v)){if($.noPan===!0){A6(v);return}Fv(v)}}function CX($){let v=$.viewport;if(!v)return;let g=typeof v.x==="number"?v.x:0,_=typeof v.y==="number"?v.y:0,U=typeof v.scale==="number"?v.scale:1;q4(),iK({x:g,y:_,scale:U})}function fX($){if(T.value.get("context-main"))U$("context-main",{currentTokens:$.currentTokens,tokenLimit:$.tokenLimit,messagesLength:$.messagesLength,utilization:$.utilization,nearLimit:$.nearLimit})}function mX($){B_.value=$.enabled===!0}function EX($){if(typeof $.theme==="string")dB($.theme)}function cX($){let v=Array.isArray($.nodeIds)?$.nodeIds.filter((g)=>typeof g==="string"):[];VK(v),F2({event:"context-pins-changed",data:$})}var C0=null;function pB(){if(C0)clearTimeout(C0);C0=setTimeout(()=>{C0=null,YK().then(($)=>{F6.value=$})},150)}function iX($){let v=$.intent;if(!v||typeof v.id!=="string"||typeof v.kind!=="string"||typeof v.expiresAt!=="number")return;CW(v)}function lX($){let v=typeof $.id==="string"?$.id:"";if(!v)return;if($.settled===!0)mW(v,typeof $.nodeId==="string"?$.nodeId:void 0);else JG(v)}var hX={connected:WX,"workbench-open":BX,"canvas-status":PX,"execution-phase":kX,"context-cards":IX,"mcp-app-candidate":HX,"mcp-app-host-snapshot":LX,"mcp-app-host-fallback":FX,"aux-open":YX,"aux-close":AX,"assistant-complete":qX,"tool-start":XX,"tool-complete":wX,"review-state":ZX,"subagent-status":NX,"ext-app-open":SX,"ext-app-update":MX,"ext-app-result":QX,"context-pins-changed":cX,"canvas-layout-update":TX,"canvas-focus-node":VX,"canvas-viewport-update":CX,"context-usage":fX,"trace-state":mX,"theme-changed":EX,"canvas-prompt-created":rX,"canvas-prompt-status":uX,"canvas-response-start":RX,"canvas-response-delta":yX,"canvas-response-complete":DX,"ax-state-changed":pB,"ax-event-created":pB,"ax-intent":iX,"ax-intent-clear":lX};function XG(){if(AG=oK(),_4(),x6.value=!1,O3(),EW(),m6)clearTimeout(m6),m6=null;let $=H4.value,v=$?`/api/workbench/events?session=${$}`:"/api/workbench/events";h6.value="connecting";let g=new EventSource(v);Dg=g;for(let[_,U]of Object.entries(hX))g.addEventListener(_,(z)=>{try{U(JSON.parse(z.data))}catch(b){console.warn(`[sse-bridge] Failed to parse "${_}" event:`,b)}});return g.onopen=()=>{if(Dg!==g)return;YG=0,h6.value="connected"},g.onerror=()=>{if(Dg!==g)return;h6.value="disconnected",g.close(),Dg=null,YG+=1,m6=setTimeout(()=>{m6=null,XG()},jX(YG))},()=>{if(m6)clearTimeout(m6),m6=null;g.close(),Dg=null}}function xX($,v){console.error(`[app] ${$} failed`,v)}function sB($,v={}){fetch(`/api/workbench/intent?_ts=${Date.now()}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:$,payload:v})}).catch((g)=>{xX("sendIntent",g)})}function Ov({label:$,detail:v,shortcut:g,align:_="center",children:U}){return O("span",{class:`toolbar-tooltip-anchor toolbar-tooltip-anchor-${_}`,children:[U,O("span",{class:"toolbar-tooltip",role:"tooltip",children:[O("span",{class:"toolbar-tooltip-label",children:$},void 0,!1,void 0,this),(v||g)&&O("span",{class:"toolbar-tooltip-meta",children:[v&&O("span",{children:v},void 0,!1,void 0,this),g&&O("kbd",{class:"toolbar-tooltip-shortcut",children:g},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function pX({minimapVisible:$,onToggleMinimap:v,snapshotOpen:g,onToggleSnapshot:_,snapshotBtnRef:U,onOpenPalette:z,onOpenShortcuts:b,annotationTool:J,onToggleAnnotationMode:G,onToggleAnnotationEraser:K,onToggleTextAnnotation:W}){let B=h6.value,k=x6.value,P=I$.value,A=T.value.size,H=c$.value.size,I=B_.value,F=Array.from(T.value.values()).filter((u)=>u.type==="trace").length,Y=B==="connected"&&!k?"syncing":B,X=Y.charAt(0).toUpperCase()+Y.slice(1),Q=k?[`${A} node${A!==1?"s":""}`,...H>0?[`${H} edge${H!==1?"s":""}`]:[],...F>0?[`${F} trace${F!==1?"s":""}`]:I?["trace armed"]:[]].join(" · "):"Syncing canvas…";return O("div",{class:"toolbar-group",children:[O("div",{class:"canvas-toolbar",children:[O(Ov,{label:"PMX Canvas",detail:"Focus Field · spatial workbench for coding agents",align:"start",children:O("span",{class:"canvas-brand","aria-label":"PMX Canvas",children:O(zB,{size:22},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O("div",{class:"separator"},void 0,!1,void 0,this),O(Ov,{label:"Canvas status",detail:k?X:"Syncing canvas from server",align:"start",children:O("span",{class:`connection-dot ${B}`,"aria-label":`Canvas status: ${Y}`},void 0,!1,void 0,this)},void 0,!1,void 0,this),O("span",{class:"hud-collapsible-text",style:{fontSize:"11px",color:"var(--c-muted)"},children:H4.value?H4.value.slice(0,12):"…"},void 0,!1,void 0,this),O("div",{class:"separator"},void 0,!1,void 0,this),O(Ov,{label:"Fit canvas",detail:"Frame every node on screen",children:O("button",{type:"button",onClick:()=>L_(window.innerWidth,window.innerHeight),"aria-label":"Fit canvas",children:O(lW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:"Reset view",shortcut:`${Sv}+0`,children:O("button",{type:"button",onClick:()=>xv({x:0,y:0,scale:1},250),"aria-label":"Reset view",children:O(hW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:"Zoom in",shortcut:`${Sv}++`,children:O("button",{type:"button",onClick:()=>xv({...P,scale:Math.min(4,P.scale*1.25)},150),"aria-label":"Zoom in",children:O(xW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:"Zoom out",shortcut:`${Sv}+-`,children:O("button",{type:"button",onClick:()=>xv({...P,scale:Math.max(0.1,P.scale/1.25)},150),"aria-label":"Zoom out",children:O(pW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O("span",{class:"hud-collapsible-text",style:{fontSize:"10px",color:"var(--c-dim)",minWidth:"36px",textAlign:"center"},children:[Math.round(P.scale*100),"%"]},void 0,!0,void 0,this),O("div",{class:"separator"},void 0,!1,void 0,this),O(Ov,{label:"Arrange layout",detail:H>0?"Graph-aware layout for connected nodes":"Grid layout for loose nodes",children:O("button",{type:"button",onClick:()=>H>0?Y_():F_(),"aria-label":"Arrange layout",children:O(oW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:$?"Hide minimap":"Show minimap",detail:"Quickly navigate large canvases",children:O("button",{type:"button",onClick:v,"aria-label":$?"Hide minimap":"Show minimap",style:{color:$?"var(--c-accent)":void 0},children:O(nW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:`Switch to ${T$.value==="dark"?"light":"dark"} theme`,detail:`Current theme: ${T$.value}`,children:O("button",{type:"button",onClick:()=>{let u=T$.value==="dark"?"light":"dark";document.documentElement.setAttribute("data-theme",u),OU(),T$.value=u,J_(u)},"aria-label":`Switch to ${T$.value==="dark"?"light":"dark"} theme`,children:T$.value==="dark"?O(tW,{},void 0,!1,void 0,this):O(dW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:"Snapshots",detail:"Capture and restore canvas states",align:"end",children:O("button",{ref:U,type:"button",onClick:_,"aria-label":"Snapshots",style:{color:g?"var(--c-accent)":void 0},children:O($B,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"canvas-toolbar",children:[O(Ov,{label:I?"Disable trace":"Enable trace",detail:I?"Stop collecting new trace nodes":"Capture agent execution on the canvas",children:O("button",{type:"button",onClick:()=>sB("trace-toggle",{enabled:!I}),"aria-label":I?"Disable trace":"Enable trace",style:{color:I?"var(--c-purple)":void 0},children:O(vB,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),(I||F>0)&&O(Ov,{label:"Clear trace",detail:F>0?`Remove ${F} trace node${F===1?"":"s"}`:"Trace is enabled but still empty",children:O("button",{type:"button",onClick:()=>sB("trace-clear"),"aria-label":"Clear trace",children:O(UB,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O("div",{class:"separator"},void 0,!1,void 0,this),O(Ov,{label:J==="pen"?"Stop annotating":"Annotate canvas",detail:"Draw directly on the canvas for human-visible markup",children:O("button",{type:"button",onClick:G,"aria-label":J==="pen"?"Stop annotating":"Annotate canvas","aria-pressed":J==="pen",style:{color:J==="pen"?"var(--c-accent)":void 0},children:O(aW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:J==="eraser"?"Stop erasing":"Erase annotations",detail:"Click a drawn annotation to remove it",children:O("button",{type:"button",onClick:K,"aria-label":J==="eraser"?"Stop erasing":"Erase annotations","aria-pressed":J==="eraser",style:{color:J==="eraser"?"var(--c-accent)":void 0},children:O(sW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:J==="text"?"Stop text annotations":"Text annotations",detail:"Click anywhere to type an intent note",children:O("button",{type:"button",onClick:W,"aria-label":J==="text"?"Stop text annotations":"Text annotations","aria-pressed":J==="text",style:{color:J==="text"?"var(--c-accent)":void 0},children:O(eW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O("div",{class:"separator"},void 0,!1,void 0,this),O(Ov,{label:"Search nodes and actions",shortcut:`${Sv}+K`,children:O("button",{type:"button",onClick:z,"aria-label":"Search nodes and actions",children:O(gB,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:"Keyboard shortcuts",shortcut:"?",align:"end",children:O("button",{type:"button",onClick:b,"aria-label":"Keyboard shortcuts",children:O(_B,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O("span",{class:"hud-collapsible-text",style:{fontSize:"10px",color:"var(--c-dim)"},children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function oX({onOpenPalette:$}){return O("div",{class:"welcome-card",children:[O("div",{class:"welcome-icon",children:"◇"},void 0,!1,void 0,this),O("div",{class:"welcome-title",children:"Shape What The Agent Sees"},void 0,!1,void 0,this),O("div",{class:"welcome-subtitle",children:"Lay out notes, files, and evidence. Bring related nodes together. Pin what matters. The board will reflect the active focus."},void 0,!1,void 0,this),O("div",{class:"welcome-hints",children:[O("button",{type:"button",class:"welcome-hint",onClick:$,children:[O("kbd",{children:[Sv,"+K"]},void 0,!0,void 0,this),O("span",{children:"Create a note"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"welcome-hint",children:[O("kbd",{children:"Drop files"},void 0,!1,void 0,this),O("span",{children:"Add evidence to the board"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"welcome-hint",children:[O("kbd",{children:"✦"},void 0,!1,void 0,this),O("span",{children:"Pin important nodes"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"welcome-hint",children:[O("kbd",{children:"Move nearby"},void 0,!1,void 0,this),O("span",{children:"Shape the focus field"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"welcome-footer",children:"The canvas is a shared attention surface, not just an editor."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function eB(){let[$,v]=x(!0),[g,_]=x(!1),[U,z]=x(!1),[b,J]=x(!1),[G,K]=x(null),W=V(null),{menu:B,openNodeMenu:k,openCanvasMenu:P,closeMenu:A}=RB(),H=x6.value,I=N(()=>v((r)=>!r),[]),F=N(()=>_((r)=>!r),[]),Y=N(()=>_(!1),[]),X=N(()=>K((r)=>r==="pen"?null:"pen"),[]),Q=N(()=>K((r)=>r==="eraser"?null:"eraser"),[]),u=N(()=>K((r)=>r==="text"?null:"text"),[]),E=N((r,R)=>{xv({x:r,y:R,scale:I$.value.scale},200)},[]);m(()=>{return XG()},[]),m(()=>{let r=(R)=>{let $$=R.metaKey||R.ctrlKey;if($$&&R.key==="k"){R.preventDefault(),z((c)=>!c);return}if(R.key==="Escape"&&G){R.preventDefault(),K(null);return}if(R.key==="Escape"&&E$.value&&!hv.value){R.preventDefault(),p6();return}if(R.key==="Escape"&&U){R.preventDefault(),z(!1);return}if(R.key==="Escape"&&b){R.preventDefault(),J(!1);return}let p=R.target?.tagName;if(p==="INPUT"||p==="TEXTAREA")return;if(R.key==="?"||R.key==="/"&&R.shiftKey){R.preventDefault(),J((c)=>!c);return}if($$&&R.key==="0")R.preventDefault(),xv({x:0,y:0,scale:1},250);else if($$&&(R.key==="="||R.key==="+")){R.preventDefault();let c=I$.value;xv({...c,scale:Math.min(4,c.scale*1.25)},150)}else if($$&&R.key==="-"){R.preventDefault();let c=I$.value;xv({...c,scale:Math.max(0.1,c.scale/1.25)},150)}else if(R.key==="Escape"){if(h$.value.size>0){jv();return}y$.value=null,A()}else if(R.key==="Tab")R.preventDefault(),nK(R.shiftKey?-1:1);else if(y$.value&&["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(R.key)){R.preventDefault();let c=R.key.replace("Arrow","").toLowerCase();tK(c)}};return document.addEventListener("keydown",r),()=>{document.removeEventListener("keydown",r)}},[G,A,U,b]),m(()=>{if(!H)return;let r=window.__pmxCanvasBootstrapReady;if(typeof r==="function")r()},[H]);let M=Array.from(T.value.values()),n=M.filter((r)=>r.dockPosition==="left"),t=M.filter((r)=>r.dockPosition==="right").sort((r,R)=>{let $$={context:0,ledger:1};return($$[r.type]??2)-($$[R.type]??2)});return O("div",{style:{width:"100%",height:"100%",position:"relative"},children:[O("div",{class:"hud-layer",children:[O("div",{class:"hud-left",children:n.map((r)=>O(FG,{node:r},r.id,!1,void 0,this))},void 0,!1,void 0,this),O(pX,{minimapVisible:$,onToggleMinimap:I,snapshotOpen:g,onToggleSnapshot:F,snapshotBtnRef:W,onOpenPalette:()=>z(!0),onOpenShortcuts:()=>J((r)=>!r),annotationTool:G,onToggleAnnotationMode:X,onToggleAnnotationEraser:Q,onToggleTextAnnotation:u},void 0,!1,void 0,this),O("div",{class:"hud-right",children:t.map((r)=>O(FG,{node:r},r.id,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O(aK,{},void 0,!1,void 0,this),O(dK,{},void 0,!1,void 0,this),O(rB,{onNodeContextMenu:k,onCanvasContextMenu:P,annotationMode:G!==null,annotationTool:G},void 0,!1,void 0,this),H&&M.filter((r)=>!r.dockPosition).length===0&&Lv.value.size===0&&O(oX,{onOpenPalette:()=>z(!0)},void 0,!1,void 0,this),h$.value.size>0&&O(iB,{},void 0,!1,void 0,this),D$.value.size>0&&O(TB,{},void 0,!1,void 0,this),E$.value&&O(mB,{},void 0,!1,void 0,this),O(hB,{open:g,onClose:Y,anchorRef:W},void 0,!1,void 0,this),$&&O(cB,{viewport:I$,nodes:T,edges:c$,onNavigate:E,containerWidth:window.innerWidth,containerHeight:window.innerHeight},void 0,!1,void 0,this),B&&O(yB,{menu:B,onClose:A},void 0,!1,void 0,this),U&&O(uB,{onClose:()=>z(!1),onToggleMinimap:I},void 0,!1,void 0,this),b&&O(lB,{onClose:()=>J(!1)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var $P=document.getElementById("app");if($P)EG(O(eB,{},void 0,!1,void 0,this),$P);
|
|
226
|
+
`)?v.split(/\r?\n/):v.split(/\s+/),_=new Set,U=[];for(let z of g){let b=z.trim();if(!b||b.startsWith("#"))continue;let J=Sq(b);if(!J||_.has(J))continue;_.add(J),U.push(J)}return U}function Mq($){let v=PG($.getData("text/uri-list"));if(v.length>0)return v;return PG($.getData("text/plain"))}function Qq($){if(!$)return!1;return $.types.includes("text/uri-list")||$.types.includes("text/plain")}function NB($){if(!($ instanceof HTMLElement))return!1;return Boolean($.closest('input, textarea, select, [contenteditable="true"], [contenteditable=""]'))}function Nq($){let v=$.split(".").pop()?.toLowerCase()??"";if(wq.has(v))return"image";if(Zq.has(v))return"markdown";return"file"}function rq($,v){let g=[],_=0;for(let U of $){if(U.dockPosition!==null)continue;if(v&&U.id===v)continue;if(U.type==="group")g.splice(_++,0,U);else g.push(U)}return g}function rB({onNodeContextMenu:$,onCanvasContextMenu:v,annotationMode:g=!1,annotationTool:_=null}){let U=I$.value,z=V(!1),b=V(!1),J=V([]),[G,K]=x(null),[W,B]=x(null),[k,P]=x(null),A=V(null),[H,I]=x(!1),F=V(0),Y=V(null),X=ZB({viewport:I$,disabled:g,onViewportChange:(w)=>{if(z.current||g)return;q4(),cK(w)},onViewportCommit:(w)=>{if(z.current||g)return;q4(),lK(w)}}),Q=N((w)=>{A.current=w,P(w)},[]),u=N(async(w,l,e)=>{if(w.length===0)return;let{width:s,height:W$}=QB,z$=24,a=Math.ceil(Math.sqrt(w.length)),f=Math.ceil(w.length/a),d=a*s+Math.max(0,a-1)*z$,G$=f*W$+Math.max(0,f-1)*z$;for(let g$=0;g$<w.length;g$++){let j$=g$%a,o$=Math.floor(g$/a),b$=l-d/2+j$*(s+z$),K$=e-G$/2+o$*(W$+z$);await lv({type:"webpage",content:w[g$],x:b$,y:K$,width:s,height:W$})}},[]),E=N((w)=>{let l=X.current;if(!l)return;if(_==="eraser"){if((w.target instanceof Element?w.target:null)?.closest(".hud-layer, .snapshot-panel, .context-menu, .command-palette"))return;w.preventDefault(),w.stopPropagation();let f=l.getBoundingClientRect(),d=I$.value,G$={x:(w.clientX-f.left-d.x)/d.scale,y:(w.clientY-f.top-d.y)/d.scale},g$=qq(Array.from(I4.value.values()),G$,Xq/d.scale);if(g$)mK(g$.id);return}if(_==="text"){if((w.target instanceof Element?w.target:null)?.closest(".hud-layer, .snapshot-panel, .context-menu, .command-palette"))return;w.preventDefault(),w.stopPropagation(),y$.value=null,jv();let f=l.getBoundingClientRect(),d=I$.value;Q({x:(w.clientX-f.left-d.x)/d.scale,y:(w.clientY-f.top-d.y)/d.scale,value:""});return}if(_==="pen"){if((w.target instanceof Element?w.target:null)?.closest(".hud-layer, .snapshot-panel, .context-menu, .command-palette"))return;w.preventDefault(),w.stopPropagation(),y$.value=null,jv(),b.current=!0;let f=l.getBoundingClientRect(),d=I$.value,G$={x:(w.clientX-f.left-d.x)/d.scale,y:(w.clientY-f.top-d.y)/d.scale};J.current=[G$],B({id:"draft-annotation",type:"freehand",points:[G$],bounds:{x:0,y:0,width:0,height:0},color:BG,width:SB,createdAt:""}),l.setPointerCapture(w.pointerId);return}if(w.target!==l)return;if(!w.shiftKey){if(!Y.current)y$.value=null,jv();return}w.preventDefault(),w.stopPropagation(),z.current=!0;let e=l.getBoundingClientRect(),s=w.clientX-e.left,W$=w.clientY-e.top,z$={startX:s,startY:W$,currentX:s,currentY:W$};Y.current=z$,K(z$),l.setPointerCapture(w.pointerId)},[_,X]),M=N((w)=>{if(b.current){let s=X.current;if(!s)return;let W$=s.getBoundingClientRect(),z$=I$.value,a={x:(w.clientX-W$.left-z$.x)/z$.scale,y:(w.clientY-W$.top-z$.y)/z$.scale},f=J.current.at(-1);if(f&&Math.hypot(a.x-f.x,a.y-f.y)<2)return;J.current=[...J.current,a],B((d)=>d?{...d,points:J.current}:null);return}if(!z.current||!Y.current)return;let l=X.current?.getBoundingClientRect();if(!l)return;let e={...Y.current,currentX:w.clientX-l.left,currentY:w.clientY-l.top};Y.current=e,K(e)},[X]),n=N((w)=>{if(b.current){b.current=!1;let a=J.current;if(J.current=[],B(null),a.length>=2)G2({points:a,color:BG,width:SB});let f=X.current;if(f?.hasPointerCapture(w.pointerId))f.releasePointerCapture(w.pointerId);return}let l=Y.current;if(!z.current||!l)return;z.current=!1,Y.current=null;let e=Math.min(l.startX,l.currentX),s=Math.max(l.startX,l.currentX),W$=Math.min(l.startY,l.currentY),z$=Math.max(l.startY,l.currentY);if(s-e>5||z$-W$>5){let a=I$.value,f=(e-a.x)/a.scale,d=(s-a.x)/a.scale,G$=(W$-a.y)/a.scale,g$=(z$-a.y)/a.scale,j$=[];for(let o$ of T.value.values()){if(o$.dockPosition!==null)continue;let b$=o$.position.x,K$=o$.position.y;if(b$+o$.size.width>f&&b$<d&&K$+o$.size.height>G$&&K$<g$)j$.push(o$.id)}if(j$.length>0)DK(j$)}K(null)},[]);m(()=>{if(g)return;if(!b.current&&!W&&!k)return;b.current=!1,J.current=[],B(null),Q(null)},[g,W,Q,k]);let t=N(()=>{let w=A.current;if(!w)return;let l=w.value.trim();if(Q(null),!l)return;let e={x:w.x,y:w.y};G2({type:"text",points:[e],color:BG,width:MB,text:l})},[Q]);m(()=>{if(_!=="text"&&k)Q(null)},[_,Q,k]),m(()=>{function w(e){if(!rv.value)return;let s=X.current;if(!s)return;let W$=s.getBoundingClientRect(),z$=I$.value;rv.value={...rv.value,cursorX:(e.clientX-W$.left-z$.x)/z$.scale,cursorY:(e.clientY-W$.top-z$.y)/z$.scale}}function l(e){let s=rv.value;if(!s)return;rv.value=null;let W$=X.current;if(!W$)return;let z$=W$.getBoundingClientRect(),a=I$.value,f=(e.clientX-z$.left-a.x)/a.scale,d=(e.clientY-z$.top-a.y)/a.scale;for(let G$ of T.value.values()){if(G$.id===s.fromId||G$.dockPosition!==null)continue;if(f>=G$.position.x&&f<=G$.position.x+G$.size.width&&d>=G$.position.y&&d<=G$.position.y+G$.size.height){P4(s.fromId,G$.id,"relation");return}}}return document.addEventListener("pointermove",w),document.addEventListener("pointerup",l),()=>{document.removeEventListener("pointermove",w),document.removeEventListener("pointerup",l)}},[X]);let r=N((w)=>{if(g)return;let l=X.current;if(!l||w.target!==l)return;let e=l.getBoundingClientRect(),s=I$.value,W$=(w.clientX-e.left-s.x)/s.scale,z$=(w.clientY-e.top-s.y)/s.scale,a=520,f=360;lv({type:"markdown",title:"New note",x:W$-a/2,y:z$-f/2,width:a,height:f})},[g,X]),R=N((w)=>{if(g)return;if(!v)return;let l=X.current;if(!l)return;if((w.target instanceof Element?w.target:null)?.closest(".canvas-node"))return;let s=l.getBoundingClientRect(),W$=I$.value,z$=(w.clientX-s.left-W$.x)/W$.scale,a=(w.clientY-s.top-W$.y)/W$.scale;v(w,z$,a)},[g,X,v]),$$=N((w)=>{if(w.preventDefault(),F.current++,w.dataTransfer?.types.includes("Files")||Qq(w.dataTransfer))I(!0)},[]),p=N((w)=>{if(w.preventDefault(),w.dataTransfer)w.dataTransfer.dropEffect="copy"},[]),c=N((w)=>{if(w.preventDefault(),F.current--,F.current<=0)F.current=0,I(!1)},[]),P$=N(async(w)=>{w.preventDefault(),I(!1),F.current=0;let l=X.current;if(!l||!w.dataTransfer)return;let e=l.getBoundingClientRect(),s=I$.value,W$=(w.clientX-e.left-s.x)/s.scale,z$=(w.clientY-e.top-s.y)/s.scale,a=Array.from(w.dataTransfer.files);if(a.length===0){let j$=Mq(w.dataTransfer);await u(j$,W$,z$);return}let f=400,d=300,G$=20,g$=Math.ceil(Math.sqrt(a.length));for(let j$=0;j$<a.length;j$++){let o$=a[j$],b$=j$%g$,K$=Math.floor(j$/g$),V$=W$-g$*(f+G$)/2+b$*(f+G$),C$=z$-d/2+K$*(d+G$),s$=Nq(o$.name),Wv=o$.name;if(s$==="image"){let Ev=new FileReader,LU=await new Promise((cv)=>{Ev.onload=()=>cv(Ev.result),Ev.readAsDataURL(o$)});await lv({type:"image",title:Wv,content:LU,x:V$,y:C$,width:f,height:d})}else{let Ev=await o$.text(),LU=s$==="markdown"||s$==="file";await lv({type:s$,title:Wv,content:Ev,x:V$,y:C$,width:LU?720:f,height:LU?500:d})}}},[X,u]);m(()=>{let w=async(l)=>{if(l.defaultPrevented)return;if(NB(l.target instanceof Element?l.target:null))return;if(NB(document.activeElement))return;let e=l.clipboardData?.getData("text/plain")??"",s=PG(e);if(s.length===0)return;let W$=X.current;if(!W$)return;l.preventDefault();let z$=W$.getBoundingClientRect(),a=I$.value,f=(z$.width/2-a.x)/a.scale,d=(z$.height/2-a.y)/a.scale;await u(s,f,d)};return document.addEventListener("paste",w),()=>{document.removeEventListener("paste",w)}},[X,u]);let Z$=rq(T.value.values(),E$.value),i$=null;if(G){let w=Math.min(G.startX,G.currentX),l=Math.min(G.startY,G.currentY),e=Math.abs(G.currentX-G.startX),s=Math.abs(G.currentY-G.startY);i$={position:"absolute",left:`${w}px`,top:`${l}px`,width:`${e}px`,height:`${s}px`,pointerEvents:"none"}}return O("div",{class:"canvas-viewport",ref:X,tabIndex:0,onPointerDown:E,onPointerMove:M,onPointerUp:n,onContextMenu:R,onDblClick:r,onDragEnter:$$,onDragOver:p,onDragLeave:c,onDrop:P$,style:{width:"100%",height:"100%",position:"relative",overflow:"hidden",cursor:_==="eraser"?"cell":_==="text"?"text":g||rv.value||z.current?"crosshair":"grab"},children:[O("div",{style:{transform:`matrix(${U.scale}, 0, 0, ${U.scale}, ${U.x}, ${U.y})`,transformOrigin:"0 0",willChange:"transform",position:"absolute",top:0,left:0},children:[O(VW,{},void 0,!1,void 0,this),O(KB,{},void 0,!1,void 0,this),O(qB,{nodes:T,edges:c$},void 0,!1,void 0,this),O(WG,{annotations:Array.from(I4.value.values())},void 0,!1,void 0,this),W&&W.points.length>=2&&O(WG,{annotations:[W]},void 0,!1,void 0,this),Z$.map((w)=>O(YB,{node:w,onContextMenu:$,children:Yq(w)},w.id,!1,void 0,this)),g4.value&&O("svg",{class:"snap-guides-svg",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",pointerEvents:"none",overflow:"visible"},children:g4.value.map((w,l)=>w.axis==="x"?O("line",{x1:w.pos,y1:w.from-20,x2:w.pos,y2:w.to+20,class:"snap-guide-line"},l,!1,void 0,this):O("line",{x1:w.from-20,y1:w.pos,x2:w.to+20,y2:w.pos,class:"snap-guide-line"},l,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),g&&O("div",{class:`annotation-capture-layer${_==="eraser"?" erasing":""}${_==="text"?" text":""}`,"aria-hidden":"true"},void 0,!1,void 0,this),k&&O("input",{class:"annotation-text-input",value:k.value,autoFocus:!0,style:{left:`${k.x*U.scale+U.x}px`,top:`${k.y*U.scale+U.y}px`,fontSize:`${MB*U.scale}px`},onInput:(w)=>Q({...k,value:w.target.value}),onBlur:t,onPointerDown:(w)=>w.stopPropagation(),onKeyDown:(w)=>{if(w.key==="Enter")w.preventDefault(),t();if(w.key==="Escape")w.preventDefault(),Q(null)}},void 0,!1,void 0,this),i$&&O("div",{class:"lasso-rect",style:i$},void 0,!1,void 0,this),H&&O("div",{class:"drop-zone-overlay",children:O("div",{class:"drop-zone-indicator",children:[O("div",{class:"drop-zone-icon",children:"+"},void 0,!1,void 0,this),O("div",{class:"drop-zone-label",children:"Drop files or URLs to add to canvas"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function uq($,v){let g=$.toLowerCase(),_=v.toLowerCase(),U=[],z=0,b=0,J=-1;for(let G=0;G<_.length&&z<g.length;G++)if(_[G]===g[z]){if(U.push(G),b+=J===G-1?10:1,G===0||_[G-1]===" "||_[G-1]==="-"||_[G-1]==="_")b+=5;J=G,z++}return{match:z===g.length,score:b,indices:U}}function Rq($,v){if(v.length===0)return $;let g=[],_=0;for(let U of v){if(U>_)g.push($.slice(_,U));g.push(O("mark",{children:$[U]},U,!1,void 0,this)),_=U+1}if(_<$.length)g.push($.slice(_));return g}var kG={md:"markdown",app:"mcp-app",web:"webpage",ui:"json-render",chart:"graph",ctx:"context",log:"ledger"};function yq($){let v=$.toLowerCase().trim();if(v.startsWith("type:")){let g=v.slice(5).trim(),U=Object.keys($v).find((b)=>b.startsWith(g));if(U)return{typeFilter:U,remaining:""};let z=kG[g];if(z)return{typeFilter:z,remaining:""}}if(kG[v])return{typeFilter:kG[v],remaining:""};return{typeFilter:null,remaining:$}}function uB({onClose:$,onToggleMinimap:v}){let[g,_]=x(""),[U,z]=x(0),b=V(null),J=V(null);m(()=>{setTimeout(()=>b.current?.focus(),30)},[]);let G=N(()=>{let H=[];for(let F of T.value.values()){let Y=F.data.title||$v[F.type],X=F.data.content||F.data.path||"";H.push({id:`node:${F.id}`,kind:"node",label:Y,description:X.length>80?X.slice(0,80)+"...":X||void 0,badge:$v[F.type],nodeType:F.type,action:()=>{Fv(F.id),$()}})}let I=[{label:"New note (markdown node)",badge:"CREATE",action:()=>{lv({type:"markdown",title:"New note",width:520,height:360}),$()}},{label:"Fit all nodes",badge:"VIEW",action:()=>{L_(window.innerWidth,window.innerHeight),$()}},{label:"Auto-arrange (grid)",badge:"LAYOUT",action:()=>{F_(),$()}},{label:"Auto-arrange (graph-aware)",badge:"LAYOUT",action:()=>{Y_(),$()}},{label:"Toggle minimap",badge:"VIEW",action:()=>{v(),$()}},{label:"Toggle theme (dark/light)",badge:"THEME",action:()=>{let F=T$.value==="dark"?"light":"dark";document.documentElement.setAttribute("data-theme",F),OU(),T$.value=F,J_(F),$()}}];for(let F of I)H.push({id:`action:${F.label}`,kind:"action",label:F.label,badge:F.badge,badgeClass:"command-palette-badge--action",action:F.action});return H},[$,v]),{typeFilter:K,remaining:W}=yq(g),B=G(),k;if(!g.trim())k=B.map((H)=>({...H,score:0,indices:[]}));else{k=[];for(let H of B){if(K){if(H.kind!=="node"||H.nodeType!==K)continue;if(!W){k.push({...H,score:0,indices:[]});continue}}let I=uq(W||g,H.label);if(I.match)k.push({...H,score:I.score,indices:I.indices})}k.sort((H,I)=>I.score-H.score)}m(()=>{if(!g.trim()){Y6.value=null;return}let H=new Set;for(let I of k)if(I.kind==="node")H.add(I.id.slice(5));Y6.value=H.size>0?H:null},[g,k]),m(()=>{return()=>{Y6.value=null}},[]);let P=Math.min(U,Math.max(0,k.length-1)),A=N((H)=>{if(H.key==="ArrowDown")H.preventDefault(),z((I)=>Math.min(I+1,k.length-1));else if(H.key==="ArrowUp")H.preventDefault(),z((I)=>Math.max(I-1,0));else if(H.key==="Enter"){if(H.preventDefault(),k[P])k[P].action()}else if(H.key==="Escape")H.preventDefault(),H.stopPropagation(),$()},[k,P,$]);return m(()=>{let H=J.current;if(!H)return;H.children[P]?.scrollIntoView({block:"nearest"})},[P]),m(()=>{z(0)},[g]),O("div",{class:"command-palette-backdrop",onMouseDown:$,children:O("div",{class:"command-palette",onMouseDown:(H)=>H.stopPropagation(),children:[O("input",{ref:b,type:"text",class:"command-palette-input",value:g,onInput:(H)=>_(H.target.value),onKeyDown:A,placeholder:`Search nodes and actions... (${Sv}+K)`},void 0,!1,void 0,this),O("div",{class:"command-palette-hint",children:[O("span",{children:[O("kbd",{children:"↑"},void 0,!1,void 0,this),O("kbd",{children:"↓"},void 0,!1,void 0,this)," navigate"]},void 0,!0,void 0,this),O("span",{children:[O("kbd",{children:"↵"},void 0,!1,void 0,this)," select"]},void 0,!0,void 0,this),O("span",{children:[O("kbd",{children:"esc"},void 0,!1,void 0,this)," close"]},void 0,!0,void 0,this),O("span",{children:[O("kbd",{children:"type:"},void 0,!1,void 0,this)," filter by type"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"command-palette-results",ref:J,children:[k.length===0&&O("div",{class:"command-palette-empty",children:"No matching nodes or actions"},void 0,!1,void 0,this),k.map((H,I)=>O("button",{type:"button",class:`command-palette-item${I===P?" selected":""}`,onMouseEnter:()=>z(I),onClick:()=>H.action(),children:[O("span",{class:`command-palette-badge${H.badgeClass?` ${H.badgeClass}`:""}`,children:H.badge},void 0,!1,void 0,this),O("span",{class:"command-palette-label",children:H.indices.length>0?Rq(H.label,H.indices):H.label},void 0,!1,void 0,this),H.description&&O("span",{class:"command-palette-desc",children:H.description},void 0,!1,void 0,this)]},H.id,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function RB(){let[$,v]=x(null),g=N((z,b)=>{z.preventDefault(),z.stopPropagation(),v({kind:"node",x:z.clientX,y:z.clientY,nodeId:b})},[]),_=N((z,b,J)=>{z.preventDefault(),z.stopPropagation(),v({kind:"canvas",x:z.clientX,y:z.clientY,canvasX:b,canvasY:J})},[]),U=N(()=>v(null),[]);return m(()=>{if(!$)return;let z=()=>v(null),b=(J)=>{if(J.key==="Escape")v(null)};return document.addEventListener("click",z),document.addEventListener("keydown",b),()=>{document.removeEventListener("click",z),document.removeEventListener("keydown",b)}},[$]),{menu:$,openNodeMenu:g,openCanvasMenu:_,closeMenu:U}}var Dq="#4bbcFF",Tq=[{label:"Blue",value:"#3b82f6"},{label:"Green",value:"#22c55e"},{label:"Yellow",value:"#eab308"},{label:"Red",value:"#ef4444"},{label:"Gray",value:"#6b7280"},{label:"Purple",value:"#a855f7"}];function yB({menu:$,onClose:v}){let g;if($.kind==="node"){let J=T.value.get($.nodeId);if(!J)return null;g=Eq(J)}else g=mq($.canvasX,$.canvasY);let _=new Map,U=g.some((J)=>J.render)?g.length*32+168:g.length*32+8,z=Math.min($.x,Math.max(12,window.innerWidth-240)),b=Math.min($.y,Math.max(12,window.innerHeight-U));return O("div",{class:"context-menu",style:{position:"fixed",left:`${z}px`,top:`${b}px`,zIndex:1e4},onPointerDown:(J)=>J.stopPropagation(),onClick:(J)=>J.stopPropagation(),children:g.map((J)=>{let G=J.separator?"separator":J.render?"custom":`${J.label??"item"}:${J.shortcut??""}`,K=(_.get(G)??0)+1;_.set(G,K);let W=`${G}:${K}`;if(J.separator)return O("div",{class:"context-menu-separator"},W,!1,void 0,this);if(J.render)return O("div",{class:"context-menu-custom",children:J.render(v)},W,!1,void 0,this);return O("button",{type:"button",class:"context-menu-item",onClick:()=>{J.action?.(),v()},children:[O("span",{class:"context-menu-label",children:J.label},void 0,!1,void 0,this),J.shortcut&&O("span",{class:"context-menu-shortcut",children:J.shortcut},void 0,!1,void 0,this)]},W,!0,void 0,this)})},void 0,!1,void 0,this)}function jq($){return(typeof $.data.path==="string"?$.data.path.trim():"")||null}function T0($){let v=$.trim().toLowerCase(),g=v.match(/^#([0-9a-f]{3})$/);if(g){let[_,U,z]=g[1].split("");return`#${_}${_}${U}${U}${z}${z}`}return v}function DB($){if(typeof $.data.color!=="string"||!$.data.color.trim())return null;return T0($.data.color)}function Vq($){let v=DB($);return v&&/^#[0-9a-f]{6}$/.test(v)?v:T0(Dq)}function IG($,v){let g=v?T0(v):null;Pv($.id,{data:{...$.data,color:g}}),wv($.id,{data:{color:g}})}function Cq($,v){let g=DB($);return O("div",{class:"context-menu-section",children:[O("div",{class:"context-menu-section-header",children:[O("span",{class:"context-menu-section-label",children:"Group color"},void 0,!1,void 0,this),O("button",{type:"button",class:"context-menu-reset",onClick:()=>{IG($,null),v()},children:"Theme default"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"context-menu-color-grid",children:Tq.map((_)=>{let U=T0(_.value);return O("button",{type:"button",class:`context-menu-color-swatch${g===U?" active":""}`,"aria-label":`Set group color to ${_.label}`,title:_.label,style:{"--swatch-color":_.value},onClick:()=>{IG($,_.value),v()},children:[O("span",{class:"context-menu-color-dot",style:{"--swatch-color":_.value}},void 0,!1,void 0,this),O("span",{children:_.label},void 0,!1,void 0,this)]},_.value,!0,void 0,this)})},void 0,!1,void 0,this),O("label",{class:"context-menu-color-custom",children:[O("span",{children:"Custom"},void 0,!1,void 0,this),O("input",{type:"color",class:"context-menu-color-input","aria-label":"Custom group color",value:Vq($),onClick:(_)=>_.stopPropagation(),onInput:(_)=>{IG($,_.currentTarget.value),v()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function LG($,v,g,_){return{x:$-g/2,y:v-_/2}}function fq($,v){return $.trim().replace(/[?#].*$/,"").split("/").filter(Boolean).at(-1)||v}async function HG($){let v=window.prompt($.promptLabel,$.placeholder??"");if(!v)return;let g=v.trim();if(!g)return;let _=LG($.canvasX,$.canvasY,$.width,$.height);if(!(await lv({type:$.type,...$.type!=="webpage"?{title:fq(g,$.titleFallback)}:{},content:g,x:_.x,y:_.y,width:$.width,height:$.height})).ok)window.alert($.errorMessage)}function mq($,v){return[{label:"New note",action:()=>{let U=LG($,v,520,360);lv({type:"markdown",title:"New note",x:U.x,y:U.y,width:520,height:360})}},{label:"Open webpage...",action:()=>{HG({promptLabel:"Webpage URL:",type:"webpage",canvasX:$,canvasY:v,width:520,height:420,placeholder:"https://example.com",titleFallback:"Webpage",errorMessage:"Could not create webpage node. Enter a valid http(s) URL."})}},{label:"Open file...",action:()=>{HG({promptLabel:"Workspace path or absolute file path:",type:"file",canvasX:$,canvasY:v,width:720,height:500,placeholder:"src/server/server.ts",titleFallback:"File",errorMessage:"Could not create file node. Check the path and try again."})}},{label:"Open image...",action:()=>{HG({promptLabel:"Image path, URL, or data URI:",type:"image",canvasX:$,canvasY:v,width:480,height:360,placeholder:"artifacts/architecture.png",titleFallback:"Image",errorMessage:"Could not create image node. Check the image source and try again."})}},{separator:!0},{label:"New group",action:()=>{let U=LG($,v,600,400);K_({title:"Group",x:U.x,y:U.y,width:600,height:400})}}]}function Eq($){let v=[],g=jq($);if(v.push({label:"Focus",action:()=>Fv($.id)}),z_.has($.type))v.push({label:"Expand",shortcut:"⤢",action:()=>z6($.id)});v.push({label:$.collapsed?"Expand":"Collapse",action:()=>q6($.id)});let _=D$.value.has($.id);v.push({label:_?"Unpin from context":"Pin as context",action:()=>L4($.id)}),v.push({label:$.pinned?"Unlock position":"Lock position (no auto-arrange)",action:()=>{let b=!$.pinned;Pv($.id,{pinned:b}),wv($.id,{pinned:b}),d$()}});let U=P_.value;if(U&&U.from!==$.id){let b=T.value.get(U.from),J=b?(b.data.title||b.id).slice(0,20):U.from;v.push({label:`Connect from "${J}"`,action:()=>{P4(U.from,$.id,"relation"),P_.value=null}})}v.push({label:U?"Connect from here (replace)":"Connect from here",action:()=>{P_.value={from:$.id}}});let z=Array.from(c$.value.values()).filter((b)=>b.from===$.id||b.to===$.id).length;if(z>0)v.push({label:`${z} edge${z!==1?"s":""} connected`});if(v.push({separator:!0}),($.type==="markdown"||$.type==="file"||$.type==="image")&&g)v.push({label:"Open in browser",action:()=>{window.open(`/artifact?path=${encodeURIComponent(g)}`,"_blank","noopener")}}),v.push({label:"Copy path",action:()=>{navigator.clipboard.writeText(g)}});if($.type==="mcp-app"||$.type==="json-render"||$.type==="graph")if($.data.chartConfig){let b=$.data.chartConfig.title||"chart";v.push({label:"Copy chart data",action:()=>{navigator.clipboard.writeText(JSON.stringify($.data.chartConfig,null,2))}})}else{let b=$.data.url;if(v.push({label:"Open in browser",action:()=>{if(b)window.open(b,"_blank")}}),v.push({label:"Focus in TUI",action:()=>kK("mcp-app-focus",{url:b})}),$.type==="json-render"||$.type==="graph")v.push({label:"Copy spec",action:()=>{navigator.clipboard.writeText(JSON.stringify($.data.spec??$.data.graphConfig??{},null,2))}})}if($.type==="webpage"){let b=typeof $.data.url==="string"?$.data.url:"";v.push({label:"Refresh webpage",action:()=>{O_($.id)}}),v.push({label:"Open in browser",action:()=>{if(b)window.open(b,"_blank","noopener")}}),v.push({label:"Copy URL",action:()=>{if(b)navigator.clipboard.writeText(b)}})}if($.type==="group"){let b=$.data.children??[];if(v.push({separator:!0}),v.push({render:(J)=>Cq($,J)}),b.length>0)v.push({label:`Ungroup (${b.length} node${b.length!==1?"s":""})`,action:()=>XK($.id)})}if($.type==="status"||$.type==="ledger")if(v.push({separator:!0}),$.dockPosition!==null)v.push({label:"Undock to canvas",action:()=>A4($.id)});else v.push({label:"Dock left of toolbar",action:()=>K2($.id,"left")}),v.push({label:"Dock right of toolbar",action:()=>K2($.id,"right")});return v.push({separator:!0}),v.push({label:"Close",action:()=>{F4($.id),G_($.id)}}),v}function TB(){let $=D$.value.size;if($===0||I6.value||H_.value)return null;return O("div",{class:"context-pin-bar",children:[O("span",{class:"context-pin-bar-count",children:["✦"," ",$," node",$!==1?"s":""," in context"]},void 0,!0,void 0,this),O("button",{type:"button",class:"context-pin-bar-btn context-pin-bar-clear",onClick:jK,title:"Clear all context pins",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function jB({node:$}){let v=$G($),g=$.data.activeTool,_=$.data.subagent,U=M0[v]??"var(--c-muted)";return O("span",{style:{display:"flex",alignItems:"center",gap:"6px",flex:1,minWidth:0},children:[O("span",{style:{width:"6px",height:"6px",borderRadius:"50%",background:U,animation:v!=="idle"?"pulse 1.5s infinite":"none",flexShrink:0}},void 0,!1,void 0,this),O("span",{style:{color:U,fontSize:"10px",textTransform:"uppercase",fontWeight:600},children:v},void 0,!1,void 0,this),g&&O("span",{style:{color:"var(--c-warn)",fontSize:"10px",fontFamily:"var(--mono)"},children:["⚙ ",g]},void 0,!0,void 0,this),_&&_.state!=="completed"&&O("span",{style:{color:"var(--c-subagent)",fontSize:"10px"},children:["⠉ ",_.name]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function cq($){switch($.type){case"status":return O(GU,{node:$},void 0,!1,void 0,this);case"ledger":return O(Z4,{node:$},void 0,!1,void 0,this);case"context":return O(o6,{node:$},void 0,!1,void 0,this);default:return null}}function iq($){let v=Array.isArray($.data.cards)?$.data.cards:[],g=Array.isArray($.data.auxTabs)?$.data.auxTabs:[];return v.length+g.length}function lq({node:$}){let v=CK(),g=v.length>0?v.length:iq($),_=g>0,U=$.collapsed===!0,z=()=>{U_(),q6($.id)};if(U)return O("div",{class:"docked-node docked-node--collapsed","data-docked-node":"true",children:O("div",{class:"docked-node-header",children:[O("span",{class:"node-type-badge",children:"Context"},void 0,!1,void 0,this),_&&O("span",{class:"docked-node-count","aria-hidden":"true",children:g>99?"99+":g},void 0,!1,void 0,this),O("div",{class:"docked-node-controls",children:[O("button",{type:"button",onClick:(b)=>{b.stopPropagation(),z()},title:_?`${g} item${g===1?"":"s"} in agent context — expand`:"Expand agent context","aria-label":_?`Context — ${g} item${g===1?"":"s"}`:"Expand agent context",children:"▸"},void 0,!1,void 0,this),O("button",{type:"button",onClick:(b)=>{b.stopPropagation(),A4($.id)},title:"Undock to canvas","aria-label":"Undock to canvas",children:"⊙"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this);return O("aside",{class:"context-dock-panel","data-docked-node":"true","aria-label":"Agent context",children:[O("div",{class:"context-dock-header",children:[O("div",{class:"context-dock-header-text",children:[O("span",{class:"context-dock-title",children:"Context"},void 0,!1,void 0,this),O("span",{class:"context-dock-subtitle",children:_?`${g} item${g===1?"":"s"} in agent context`:"Active agent context"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"context-dock-controls",children:[O("button",{type:"button",class:"context-dock-icon-button",onClick:(b)=>{b.stopPropagation(),A4($.id)},"aria-label":"Undock to canvas",title:"Undock to canvas",children:"⊙"},void 0,!1,void 0,this),O("button",{type:"button",class:"context-dock-icon-button",onClick:(b)=>{b.stopPropagation(),q6($.id)},"aria-label":"Collapse context panel",title:"Collapse",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"context-dock-body",children:O(o6,{node:$,pinnedNodes:v},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function FG({node:$}){if($.type==="context")return O(lq,{node:$},void 0,!1,void 0,this);return O("div",{class:`docked-node${$.collapsed?" docked-node--collapsed":""}`,"data-docked-node":"true",children:[O("div",{class:"docked-node-header",children:[O("span",{class:"node-type-badge",children:$v[$.type]??$.type},void 0,!1,void 0,this),$.type==="status"&&$.collapsed&&O(jB,{node:$},void 0,!1,void 0,this),O("div",{class:"docked-node-controls",children:[O("button",{type:"button",onClick:(v)=>{v.stopPropagation(),q6($.id)},title:$.collapsed?"Expand":"Collapse",children:$.collapsed?"▸":"▾"},void 0,!1,void 0,this),O("button",{type:"button",onClick:(v)=>{v.stopPropagation(),A4($.id)},title:"Undock to canvas",children:"⊙"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!$.collapsed&&O("div",{class:"docked-node-body",children:cq($)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function VB($,v){switch($.type){case"markdown":return O(R_,{node:$,expanded:v},void 0,!1,void 0,this);case"mcp-app":return O(f6,{node:$,expanded:v},void 0,!1,void 0,this);case"webpage":return O(N0,{node:$,expanded:v},void 0,!1,void 0,this);case"json-render":return O(f6,{node:$,expanded:v},void 0,!1,void 0,this);case"graph":return O(f6,{node:$,expanded:v},void 0,!1,void 0,this);case"prompt":return O(R0,{node:$},void 0,!1,void 0,this);case"response":return O(y0,{node:$,expanded:v},void 0,!1,void 0,this);case"status":return O(GU,{node:$},void 0,!1,void 0,this);case"context":return O(o6,{node:$,expanded:v},void 0,!1,void 0,this);case"ledger":return O(Z4,{node:$},void 0,!1,void 0,this);case"trace":return O(D0,{node:$},void 0,!1,void 0,this);case"file":return O(S_,{node:$,expanded:v},void 0,!1,void 0,this);case"image":return O(Q0,{node:$,expanded:v},void 0,!1,void 0,this);case"html":return O(rg,{node:$,expanded:v},void 0,!1,void 0,this);default:return O("div",{children:"Unknown node type"},void 0,!1,void 0,this)}}function CB($){switch($.type){case"markdown":return $.data.content||"";case"file":return $.data.fileContent||"";case"webpage":return $.data.content||"";case"html":return $.data.html||$.data.content||"";case"json-render":case"graph":return JSON.stringify($.data.spec??$.data.graphConfig??{},null,2);default:return""}}function hq($){if(!$)return 0;return $.split(/\s+/).filter(Boolean).length}function xq($,v){return $!==null&&typeof $==="object"&&$.source==="pmx-canvas-html-node"&&$.type==="presentation-exit"&&$.token===v}function pq($){return $==="ArrowRight"||$==="PageDown"||$===" "||$==="ArrowLeft"||$==="PageUp"||$==="Home"||$==="End"}function fB($){return $ instanceof HTMLElement&&Boolean($.closest(".html-presentation-exit"))}function mB(){let $=E$.value,v=$?T.value.get($):void 0,[g,_]=x(!1),[U,z]=x(!1),[b,J]=x(""),G=V(null),K=V(null),W=N(()=>{z(!1),p6()},[]),B=N(()=>{J(`presentation-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`),z(!0)},[]),k=N((r)=>{document.querySelector(".html-presentation-overlay iframe.html-node-frame-presentation")?.contentWindow?.postMessage({source:"pmx-canvas-html-node",token:b,...r},"*")},[b]),P=N(()=>{z(!1)},[]),A=N((r)=>{if(r.key==="Escape"){r.preventDefault(),r.stopPropagation(),z(!1);return}if(r.key==="Tab"&&!fB(r.target)){r.preventDefault(),r.stopPropagation(),K.current?.focus();return}if((r.key===" "||r.key==="Enter")&&fB(r.target))return;if(!pq(r.key))return;r.preventDefault(),r.stopPropagation(),k({type:"presentation-key",key:r.key})},[k]),H=N((r)=>{if(r.target.classList.contains("expanded-overlay-backdrop"))p6()},[]),I=N(()=>{if(!v)return;let r=CB(v);if(!r)return;navigator.clipboard.writeText(r).then(()=>{_(!0),setTimeout(()=>_(!1),1500)})},[v]),F=N(()=>{if(!$)return;L4($)},[$]);if(m(()=>{z(!1)},[$]),xg(()=>{if(!U)return;let r=()=>{let p=G.current;if(!p||p.contains(document.activeElement))return;p.focus()},R=[0,50,150].map((p)=>window.setTimeout(r,p)),$$=(p)=>{if(!xq(p.data,b))return;z(!1)};return document.addEventListener("keydown",A,!0),window.addEventListener("message",$$),()=>{R.forEach((p)=>{window.clearTimeout(p)}),document.removeEventListener("keydown",A,!0),window.removeEventListener("message",$$)}},[A,b,U]),!v)return null;let Y=v.data.title||v.data.path?.split("/").pop()||$v[v.type],X=CB(v),Q=hq(X),u=$?D$.value.has($):!1,E=X.length>0,M=hv.value===$,n=v.type==="mcp-app"||v.type==="webpage"||v.type==="json-render"||v.type==="graph",t=rW(v);return O("div",{class:"expanded-overlay-backdrop",onPointerDown:H,style:{position:"fixed",inset:0,zIndex:10001,background:"rgba(10,14,30,0.85)",backdropFilter:"blur(8px)",display:"flex",alignItems:"stretch",justifyContent:"center",padding:"32px",pointerEvents:M?"none":"auto"},children:O("div",{class:"expanded-overlay-panel",style:{flex:1,maxWidth:"1200px",display:"flex",flexDirection:"column",background:"var(--c-panel)",border:`1px solid ${u?"var(--c-warn)":"var(--c-accent)"}`,borderRadius:"var(--radius)",boxShadow:`0 0 0 1px ${u?"var(--c-warn)":"var(--c-accent)"}, 0 24px 80px rgba(0,0,0,0.6)`,overflow:"hidden"},children:[O("div",{style:{display:"flex",alignItems:"center",gap:"10px",padding:"10px 16px",background:"var(--c-panel-glass)",borderBottom:"1px solid var(--c-line)",flexShrink:0},children:[O("span",{style:{fontSize:"10px",padding:"1px 6px",borderRadius:"4px",background:"var(--c-accent-12)",color:"var(--c-accent)",textTransform:"uppercase",letterSpacing:"0.04em"},children:$v[v.type]},void 0,!1,void 0,this),O("span",{style:{flex:1,fontSize:"13px",fontWeight:600,color:"var(--c-text)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:Y},void 0,!1,void 0,this),O("div",{class:"expanded-actions",children:[O("button",{type:"button",class:`expanded-action-btn ${u?"expanded-action-active":""}`,onClick:F,title:u?"Remove from context":"Pin as context",children:u?"✦ In context":"✦ Pin as context"},void 0,!1,void 0,this),E&&O("button",{type:"button",class:"expanded-action-btn",onClick:I,title:"Copy content to clipboard",children:g?"Copied!":"Copy"},void 0,!1,void 0,this),r0(v)&&O("button",{type:"button",class:"expanded-action-btn",onClick:()=>void u0(v),title:"Open as a full-page site in the system browser",children:"Open as site"},void 0,!1,void 0,this),t&&O("button",{type:"button",class:"expanded-action-btn expanded-action-primary",onClick:B,title:"Present this HTML node fullscreen",children:"Present"},void 0,!1,void 0,this),Q>0&&O("span",{class:"expanded-meta",children:[Q.toLocaleString()," word",Q!==1?"s":""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O("span",{style:{fontSize:"10px",color:M?"var(--c-warn)":"var(--c-muted)"},children:M?"Saving edits...":"Esc to close"},void 0,!1,void 0,this),O("button",{type:"button",onClick:W,style:{background:"none",border:"none",color:"var(--c-muted)",cursor:"pointer",padding:"2px 6px",fontSize:"16px",lineHeight:1,borderRadius:"4px"},onMouseEnter:(r)=>{r.target.style.color="var(--c-text)"},onMouseLeave:(r)=>{r.target.style.color="var(--c-muted)"},title:"Close (Esc)",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{style:{flex:1,overflow:"auto",padding:"16px",minHeight:0,...n?{display:"flex",flexDirection:"column"}:{}},children:n?O("div",{style:{flex:1,minHeight:0,display:"flex"},children:VB(v,!0)},void 0,!1,void 0,this):VB(v,!0)},void 0,!1,void 0,this),t&&U&&O("div",{ref:G,class:"html-presentation-overlay",role:"dialog","aria-modal":"true","aria-label":`Present ${Y}`,tabIndex:-1,onKeyDownCapture:A,children:[O("button",{ref:K,type:"button",class:"html-presentation-exit",onClick:P,title:"Exit presentation (Esc)","aria-label":"Exit presentation",children:"Exit presentation"},void 0,!1,void 0,this),O("div",{class:"html-presentation-stage",children:O(rg,{node:v,expanded:!0,presentation:!0,presentationExitToken:b},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var IU=180,HU=120,j0=20;function oq(){let $=S0();return{markdown:$.accent,"mcp-app":$.ok,webpage:$.warn,"json-render":$.ok,graph:$.purple,prompt:$.accent,response:$.ok,status:$.warn,context:$.muted,ledger:$.dim,trace:$.purple,file:$.accent,image:$.ok,html:$.warn,group:$.dim}}function nq(){let $=S0();return{relation:$.muted,"depends-on":$.warn,flow:$.accent,references:$.dim}}function EB($,v,g,_){let U=Array.from($.values()),z=0,b=0,J=1000,G=800;if(U.length>0){z=Number.POSITIVE_INFINITY,b=Number.POSITIVE_INFINITY,J=Number.NEGATIVE_INFINITY,G=Number.NEGATIVE_INFINITY;for(let I of U)z=Math.min(z,I.position.x),b=Math.min(b,I.position.y),J=Math.max(J,I.position.x+I.size.width),G=Math.max(G,I.position.y+I.size.height)}let K=-v.x/v.scale,W=-v.y/v.scale,B=K+g/v.scale,k=W+_/v.scale,P={minX:Math.min(z,K)-j0,minY:Math.min(b,W)-j0,maxX:Math.max(J,B)+j0,maxY:Math.max(G,k)+j0},A=P.maxX-P.minX||1,H=P.maxY-P.minY||1;return{bounds:P,scale:Math.min(IU/A,HU/H)}}function cB({viewport:$,nodes:v,edges:g,onNavigate:_,containerWidth:U,containerHeight:z}){let b=V(null),J=V(!1),G=V(null),K=V(null),W=N(()=>{let H=b.current;if(!H)return;let I=H.getContext("2d");if(!I)return;let F=v.value,Y=g.value,X=$.value,Q=window.devicePixelRatio||1;H.width=IU*Q,H.height=HU*Q,I.scale(Q,Q),I.clearRect(0,0,IU,HU);let u=S0();I.fillStyle=u.panel+"d9",I.fillRect(0,0,IU,HU);let E=EB(F,X,U,z);G.current=E;let{bounds:M,scale:n}=E,t=(w)=>(w-M.minX)*n,r=(w)=>(w-M.minY)*n,R=Array.from(F.values()),$$=oq();for(let w of R)I.fillStyle=$$[w.type]??u.muted,I.globalAlpha=0.6,I.fillRect(t(w.position.x),r(w.position.y),Math.max(4,w.size.width*n),Math.max(3,w.size.height*n));let p=nq();for(let w of Y.values()){let l=F.get(w.from),e=F.get(w.to);if(!l||!e)continue;let s=t(l.position.x+l.size.width/2),W$=r(l.position.y+l.size.height/2),z$=t(e.position.x+e.size.width/2),a=r(e.position.y+e.size.height/2);I.beginPath(),I.moveTo(s,W$),I.lineTo(z$,a),I.strokeStyle=p[w.type]??u.muted,I.globalAlpha=0.3,I.lineWidth=0.5,I.stroke()}let c=-X.x/X.scale,P$=-X.y/X.scale,Z$=U/X.scale,i$=z/X.scale;I.globalAlpha=1,I.strokeStyle=u.accent,I.lineWidth=1.5,I.strokeRect(t(c),r(P$),Z$*n,i$*n)},[v,g,$,U,z]),B=V(W);B.current=W;let k=N(()=>{if(K.current!==null)return;K.current=window.requestAnimationFrame(()=>{K.current=null,B.current()})},[]);JK(()=>{T$.value,v.value,g.value,$.value,k()}),m(()=>{k()},[U,z,k]),m(()=>()=>{if(K.current!==null)window.cancelAnimationFrame(K.current),K.current=null},[]);let P=N((H)=>{let I=b.current;if(!I)return;let F=I.getBoundingClientRect(),Y=H.clientX-F.left,X=H.clientY-F.top,Q=G.current??EB(v.value,$.value,U,z);G.current=Q;let{bounds:u,scale:E}=Q,M=$.value,n=U/M.scale,t=z/M.scale,r=Y/E+u.minX,R=X/E+u.minY;_(-(r-n/2)*M.scale,-(R-t/2)*M.scale)},[v,$,U,z,_]),A=N((H)=>{H.stopPropagation(),J.current=!0,P(H);let I=(Y)=>{if(J.current)P(Y)},F=()=>{J.current=!1,document.removeEventListener("pointermove",I),document.removeEventListener("pointerup",F)};document.addEventListener("pointermove",I),document.addEventListener("pointerup",F)},[P]);return O("div",{style:{position:"fixed",bottom:"16px",right:"16px",zIndex:9998,border:"1px solid var(--c-line)",borderRadius:"var(--radius-sm)",overflow:"hidden",boxShadow:"0 4px 16px var(--c-shadow)"},children:O("canvas",{ref:b,width:IU,height:HU,style:{width:`${IU}px`,height:`${HU}px`,display:"block",cursor:"pointer"},onPointerDown:A},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function iB(){let $=h$.value.size,v=N(()=>{let U=Array.from(h$.value);if(U.length===0)return;TK(U),jv()},[]),g=N(()=>{let U=Array.from(h$.value);if(U.length===0)return;K_({title:"Group",childIds:U}),jv()},[]),_=N(()=>{let U=Array.from(h$.value);for(let z=0;z<U.length;z++)for(let b=z+1;b<U.length;b++)P4(U[z],U[b],"relation");jv()},[]);if($===0)return null;return O("div",{class:"selection-bar",children:[O("span",{class:"selection-bar-count",children:["✦"," ",$," node",$!==1?"s":""," selected"]},void 0,!0,void 0,this),O("button",{type:"button",class:"selection-bar-btn selection-bar-pin-ctx",onClick:v,children:"Pin as context"},void 0,!1,void 0,this),$>=2&&O("button",{type:"button",class:"selection-bar-btn",onClick:g,children:"Group"},void 0,!1,void 0,this),$>=2&&O("button",{type:"button",class:"selection-bar-btn",onClick:_,children:"Connect"},void 0,!1,void 0,this),O("button",{type:"button",class:"selection-bar-btn selection-bar-clear",onClick:jv,title:"Clear selection",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var tq=[{title:"Navigation",shortcuts:[{keys:`${Sv}+K`,desc:"Command palette — search nodes & actions"},{keys:"Tab / Shift+Tab",desc:"Cycle through nodes"},{keys:"← ↑ → ↓",desc:"Walk graph along edges (when node focused)"},{keys:`${Sv}+0`,desc:"Reset viewport to origin"},{keys:`${Sv}++ / ${Sv}+−`,desc:"Zoom in / out"}]},{title:"Creation",shortcuts:[{keys:"Double-click",desc:"Create new markdown note on canvas"},{keys:"Drag port → node",desc:"Connect two nodes (hover to reveal ports)"}]},{title:"Selection",shortcuts:[{keys:"Click",desc:"Focus node (highlights neighbors & edges)"},{keys:"Shift+Click",desc:"Toggle node in multi-selection"},{keys:"Shift+Drag",desc:"Lasso select multiple nodes"},{keys:"Esc",desc:"Clear selection / close overlay"}]},{title:"View",shortcuts:[{keys:"?",desc:"Toggle this shortcut overlay"},{keys:"Minimap",desc:"Click/drag to navigate (toggle in toolbar)"},{keys:"Right-click",desc:"Context menu — dock, focus, connect"}]}];function lB({onClose:$}){return O("div",{class:"shortcut-overlay-backdrop",onMouseDown:$,children:O("div",{class:"shortcut-overlay",onMouseDown:(v)=>v.stopPropagation(),children:[O("div",{class:"shortcut-overlay-header",children:[O("span",{class:"shortcut-overlay-title",children:"Keyboard Shortcuts"},void 0,!1,void 0,this),O("span",{class:"shortcut-overlay-hint",children:["Press ",O("kbd",{children:"?"},void 0,!1,void 0,this)," or ",O("kbd",{children:"Esc"},void 0,!1,void 0,this)," to close"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"shortcut-overlay-body",children:tq.map((v)=>O("div",{class:"shortcut-group",children:[O("div",{class:"shortcut-group-title",children:v.title},void 0,!1,void 0,this),v.shortcuts.map((g)=>O("div",{class:"shortcut-row",children:[O("kbd",{class:"shortcut-keys",children:g.keys},void 0,!1,void 0,this),O("span",{class:"shortcut-desc",children:g.desc},void 0,!1,void 0,this)]},g.keys,!0,void 0,this))]},v.title,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function dq($){let v=Date.now()-new Date($).getTime(),g=Math.floor(v/60000);if(g<1)return"just now";if(g<60)return`${g}m ago`;let _=Math.floor(g/60);if(_<24)return`${_}h ago`;return`${Math.floor(_/24)}d ago`}function hB({open:$,onClose:v,anchorRef:g}){let[_,U]=x([]),[z,b]=x(!1),[J,G]=x(!1),[K,W]=x(null),[B,k]=x(""),[P,A]=x(null),H=V(null),I=V(null);m(()=>{if(!$)return;b(!0),wK().then((M)=>{U(M),b(!1)})},[$]),m(()=>{if($)setTimeout(()=>I.current?.focus(),50)},[$]),m(()=>{if(!$)return;let M=(n)=>{let t=H.current,r=g.current;if(t&&!t.contains(n.target)&&r&&!r.contains(n.target))v()};return document.addEventListener("mousedown",M),()=>document.removeEventListener("mousedown",M)},[$,v]),m(()=>{if(!$)return;let M=(n)=>{if(n.key==="Escape")v()};return document.addEventListener("keydown",M),()=>document.removeEventListener("keydown",M)},[$,v]);let F=N(async()=>{let M=B.trim();if(!M)return;G(!0);let n=await ZK(M);if(G(!1),n.ok&&n.snapshot)U((t)=>[n.snapshot,...t]),k("")},[B]),Y=N(async(M)=>{A(null),W(M);let n=await SK(M);if(W(null),n.ok)v()},[v]),X=N(async(M)=>{if((await MK(M)).ok)U((t)=>t.filter((r)=>r.id!==M));A(null)},[]);if(!$)return null;let Q=g.current?.getBoundingClientRect(),u=Q?Math.max(8,Q.left-120):100,E=Q?Q.bottom+8:48;return O("div",{ref:H,class:"snapshot-panel",style:{left:`${u}px`,top:`${E}px`},children:[O("div",{class:"snapshot-panel-header",children:[O("span",{class:"snapshot-panel-title",children:"Snapshots"},void 0,!1,void 0,this),O("button",{type:"button",class:"snapshot-panel-close",onClick:v,title:"Close",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"snapshot-save-form",children:[O("input",{ref:I,type:"text",class:"snapshot-name-input",value:B,onInput:(M)=>k(M.target.value),onKeyDown:(M)=>{if(M.key==="Enter")F()},placeholder:"Snapshot name...",maxLength:80,disabled:J},void 0,!1,void 0,this),O("button",{type:"button",class:"snapshot-save-btn",onClick:F,disabled:!B.trim()||J,children:J?"...":"Save"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"snapshot-restore-note",children:"Restoring replaces the current canvas. You can undo it if needed."},void 0,!1,void 0,this),O("div",{class:"snapshot-list",children:[z&&O("div",{class:"snapshot-empty",children:"Loading..."},void 0,!1,void 0,this),!z&&_.length===0&&O("div",{class:"snapshot-empty",children:"No snapshots yet. Save one to capture the current canvas state."},void 0,!1,void 0,this),!z&&_.map((M)=>O("div",{class:"snapshot-item",children:[O("div",{class:"snapshot-item-info",children:[O("span",{class:"snapshot-item-name",children:M.name},void 0,!1,void 0,this),O("span",{class:"snapshot-item-meta",children:[M.nodeCount," node",M.nodeCount!==1?"s":"",M.edgeCount>0?` · ${M.edgeCount} edge${M.edgeCount!==1?"s":""}`:""," · ",dq(M.createdAt)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"snapshot-item-actions",children:P?.id===M.id?O(e$,{children:[O("button",{type:"button",class:`snapshot-action-btn ${P.action==="delete"?"snapshot-action-confirm":"snapshot-action-restore"}`,onClick:()=>P.action==="delete"?X(M.id):Y(M.id),title:P.action==="delete"?"Confirm delete":"Confirm restore",disabled:K!==null,children:P.action==="delete"?"Delete":K===M.id?"Restoring...":"Confirm"},void 0,!1,void 0,this),O("button",{type:"button",class:"snapshot-action-btn",onClick:()=>A(null),title:"Cancel",disabled:K!==null,children:"Cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):O(e$,{children:[O("button",{type:"button",class:"snapshot-action-btn snapshot-action-restore",onClick:()=>A({id:M.id,action:"restore"}),title:"Restore this snapshot",disabled:K!==null,children:K===M.id?"Restoring...":"Restore"},void 0,!1,void 0,this),O("button",{type:"button",class:"snapshot-action-btn snapshot-action-delete",onClick:()=>A({id:M.id,action:"delete"}),title:"Delete this snapshot",disabled:K!==null,children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},M.id,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function xB($,v,g,_,U){return $.x<_.position.x+_.size.width+U&&$.x+v+U>_.position.x&&$.y<_.position.y+_.size.height+U&&$.y+g+U>_.position.y}function aq($,v,g,_,U){return _.some((z)=>xB($,v,g,z,U))}function sq($,v,g,_,U){return _.find((z)=>xB($,v,g,z,U))}function V0($,v,g,_=24){if($.length===0)return{x:40,y:80};let U=$[$.length-1],z={x:U.position.x+U.size.width+_,y:U.position.y};if(!aq(z,v,g,$,_))return z;let b=40,J=80,G=3000,K=J;for(let B=0;B<20;B++){let k=b;while(k+v<G){let H=sq({x:k,y:K},v,g,$,_);if(!H)return{x:k,y:K};k=H.position.x+H.size.width+_}K=$.filter((H)=>H.position.y<=K+g+_&&H.position.y+H.size.height+_>K).reduce((H,I)=>Math.max(H,I.position.y+I.size.height),K)+_}let W=$.reduce((B,k)=>Math.max(B,k.position.y+k.size.height),0);return{x:b,y:W+_}}var Dg=null,AG=null,YG=0,m6=null,f0=new Map;function Tg($){let v=0;for(let g=0;g<$.length;g++)v=(v<<5)-v+$.charCodeAt(g)|0;return Math.abs(v).toString(36)}function m0($){if(!AG)return $;let v=AG.get($.id);if(!v)return $;return{...$,position:v.position??$.position,size:v.size??$.size,collapsed:v.collapsed??$.collapsed,pinned:v.pinned??$.pinned,dockPosition:v.dockPosition!==void 0?v.dockPosition:$.dockPosition}}var sv={status:{x:40,y:80,w:300,h:120},markdown:{x:380,y:80,w:720,h:600},context:{x:1130,y:80,w:320,h:400},"mcp-app":{x:380,y:720,w:960,h:600},webpage:{x:380,y:80,w:520,h:420},"json-render":{x:380,y:720,w:840,h:620},graph:{x:380,y:720,w:760,h:520},ledger:{x:1130,y:520,w:320,h:280},trace:{x:40,y:900,w:200,h:56},file:{x:380,y:80,w:720,h:600},image:{x:380,y:80,w:720,h:520},html:{x:380,y:80,w:720,h:640},group:{x:220,y:60,w:840,h:560},prompt:{x:380,y:1260,w:520,h:400},response:{x:380,y:1480,w:720,h:400}};function jg($,v,g,_=null){let U=sv[v];return m0({id:$,type:v,position:{x:U.x,y:U.y},size:{width:U.w,height:U.h},zIndex:v==="status"?0:1,collapsed:!1,pinned:!1,dockPosition:_,data:g})}function eq(){return V0([...T.value.values()],sv.markdown.w,sv.markdown.h)}function _4(){if(!T.value.has("status-main"))_6(jg("status-main","status",{phase:"idle",message:"",elapsed:0},"left"))}function $X($,v){let g=`md-${Tg($)}`;if(T.value.get(g))U$(g,{path:$,title:v}),y$.value=g;else{let U=eq(),z=jg(g,"markdown",{path:$,title:v,content:"",rendered:""});if(z.position=U,_6(z),!z.dockPosition)Fv(g)}}function vX($){if(T.value.get("context-main"))U$("context-main",{cards:$});else if($.length>0){let _=jg("context-main","context",{cards:$});_6(_)}}function UX($){let v=$.url,g=`mcp-${Tg(v)}`;if(T.value.get(g))U$(g,$);else _6(jg(g,"mcp-app",$)),Fv(g)}function gX($){let v=$.toolCallId,_=(typeof $.nodeId==="string"&&$.nodeId.length>0?$.nodeId:null)??(v.startsWith("ext-app-")?v:`ext-app-${v}`);if(T.value.get(_)){U$(_,$);return}let{serverName:z,toolName:b}=$;if(z&&b){for(let[I,F]of T.value.entries())if(F.type==="mcp-app"&&F.data.mode==="ext-app"&&F.data.serverName===z&&F.data.toolName===b&&!F.data.toolResult){U$(I,{...$});return}}let{_x:J,_y:G,_width:K,_height:W}=$,B=sv["mcp-app"],k=K??B.w,P=W??B.h,A=J===void 0||G===void 0?V0([...T.value.values()],k,P):null,H=m0({id:_,type:"mcp-app",position:{x:J??A?.x??B.x,y:G??A?.y??B.y},size:{width:k,height:P},zIndex:1,collapsed:!1,pinned:!1,dockPosition:null,data:{mode:"ext-app",...$}});if(_6(H),!H.dockPosition)Fv(_,{recordHistory:!1})}function _X($){let v=$.startsWith("ext-app-")?$:`ext-app-${$}`;if(T.value.has(v))return v;let g=`ext-app-${$}`;if(g!==v&&T.value.has(g))return g;for(let[_,U]of T.value.entries())if(U.type==="mcp-app"&&U.data.mode==="ext-app"&&U.data.toolCallId===$)return _;return null}function oB($){let v=typeof $.nodeId==="string"&&$.nodeId.length>0?$.nodeId:null;if(v&&T.value.has(v))return v;if(typeof $.toolCallId!=="string"||!$.toolCallId)return null;return _X($.toolCallId)}function nB($,v){if(typeof $!=="string"||!$)return null;if(typeof v!=="string"||!v)return null;let g=null;for(let[_,U]of T.value.entries())if(U.type==="mcp-app"&&U.data.mode==="ext-app"&&U.data.serverName===$&&U.data.toolName===v&&!U.data.toolResult){if(g)return null;g=_}return g}function tB($){if(T.value.get("ledger-main"))U$("ledger-main",$);else{let _=jg("ledger-main","ledger",$,"right");_.collapsed=!0,_6(_)}}function dB($){if(!($==="dark"||$==="light"||$==="high-contrast"))return;if(document.documentElement.setAttribute("data-theme",$),OU(),T$.value!==$)T$.value=$}function zX($){return $==="markdown"||$==="mcp-app"||$==="webpage"||$==="json-render"||$==="graph"||$==="prompt"||$==="response"||$==="status"||$==="context"||$==="ledger"||$==="trace"||$==="file"||$==="image"||$==="html"||$==="group"}function bX($){return $==="relation"||$==="depends-on"||$==="flow"||$==="references"}function qG($){if(!$||typeof $!=="object")return null;let v=$;if(typeof v.x!=="number"||typeof v.y!=="number")return null;return{x:v.x,y:v.y}}function aB($){if(!$||typeof $!=="object")return null;let v=$;if(typeof v.width!=="number"||typeof v.height!=="number")return null;return{width:v.width,height:v.height}}function JX($){let v=qG($),g=aB($);return v&&g?{...v,...g}:null}function OX($){if(typeof $.id!=="string"||!$.id)return null;if(!zX($.type))return null;let v=qG($.position),g=aB($.size);if(!v||!g)return null;let _=$.dockPosition==="left"||$.dockPosition==="right"?$.dockPosition:null,U=$.data&&typeof $.data==="object"?Object.fromEntries(Object.entries($.data)):{};return{id:$.id,type:$.type,position:v,size:g,zIndex:typeof $.zIndex==="number"?$.zIndex:1,collapsed:$.collapsed===!0,pinned:$.pinned===!0,dockPosition:_,data:U}}function GX($){if(typeof $.id!=="string"||!$.id)return null;if(typeof $.from!=="string"||!$.from)return null;if(typeof $.to!=="string"||!$.to)return null;if(!bX($.type))return null;return{id:$.id,from:$.from,to:$.to,type:$.type,...typeof $.label==="string"?{label:$.label}:{},...$.style==="solid"||$.style==="dashed"||$.style==="dotted"?{style:$.style}:{},...$.animated===!0?{animated:!0}:{}}}function KX($){if(typeof $.id!=="string"||!$.id)return null;if($.type!=="freehand"&&$.type!=="text")return null;if(!Array.isArray($.points))return null;let v=$.points.map((_)=>qG(_)).filter((_)=>_!==null),g=JX($.bounds);if(v.length<($.type==="text"?1:2)||!g)return null;return{id:$.id,type:$.type,points:v,bounds:g,color:typeof $.color==="string"?$.color:"#f97316",width:typeof $.width==="number"?$.width:4,...typeof $.text==="string"?{text:$.text}:{},...typeof $.label==="string"?{label:$.label}:{},createdAt:typeof $.createdAt==="string"?$.createdAt:""}}function WX($){if(H4.value=$.sessionId||"",h6.value="connected",typeof $.theme==="string")dB($.theme);if($.ledgerSummary)tB($.ledgerSummary)}function BX($){if(typeof $.path!=="string"||!$.path)return;let v=$.path,g=(typeof $.title==="string"?$.title:"")||v.split("/").pop()||"Untitled";if($X(v,g),$.ledgerSummary)tB($.ledgerSummary)}function PX($){_4(),U$("status-main",{message:typeof $.message==="string"?$.message:String($.message??""),level:$.level??"ok",source:$.source})}function kX($){_4(),U$("status-main",{phase:$.phase,detail:$.detail})}function IX($){let v=$.cards??[];vX(v)}function HX($){if(typeof $.url==="string"&&$.url)UX({url:$.url,sourceServer:$.sourceServer,sourceTool:$.sourceTool,inferredType:$.inferredType,trustedDomain:$.trustedDomain,hostMode:$.hostMode??"hosted"})}function LX($){let v=$.sessions??[];for(let g of v){let _=g.url;if(!_)continue;let U=`mcp-${Tg(_)}`;if(T.value.has(U))U$(U,{sessionState:g.state,lastSeenAt:g.lastSeenAt})}}function FX($){if(typeof $.url==="string"&&$.url){let v=`mcp-${Tg($.url)}`;if(T.value.has(v))U$(v,{hostMode:"fallback",fallbackReason:$.reasonCode})}}function YX($){let g=T.value.get("context-main");if(!g)return;let _=(g.data.auxTabs??[]).concat($);U$("context-main",{auxTabs:_})}function AX($){if(T.value.has("context-main"))if($.mode==="all")U$("context-main",{auxTabs:[]});else{let _=T.value.get("context-main");if(!_)return;let U=(_.data.auxTabs??[]).filter((z)=>z.id!==$.id);U$("context-main",{auxTabs:U})}}function qX($){_4(),U$("status-main",{phase:"idle",lastCompletion:{tokenCount:$.tokenCount,artifactCount:$.artifactCount}})}function XX($){_4(),U$("status-main",{phase:"tooling",detail:`${$.name}`,activeTool:$.name})}function wX($){_4(),U$("status-main",{activeTool:null})}function ZX($){if($.state==="active"&&$.path){let g=`md-${Tg($.path)}`;if(T.value.has(g))U$(g,{reviewActive:!0})}}function SX($){if(typeof $.toolCallId!=="string"||!$.toolCallId)return;gX({toolCallId:$.toolCallId,...typeof $.nodeId==="string"&&$.nodeId.length>0?{nodeId:$.nodeId}:{},title:$.title,html:$.html,toolInput:$.toolInput,serverName:$.serverName,toolName:$.toolName,appSessionId:$.appSessionId,resourceUri:$.resourceUri,toolDefinition:$.toolDefinition,resourceMeta:$.resourceMeta,hostMode:"hosted",trustedDomain:!0,...$.chartConfig?{chartConfig:$.chartConfig}:{},...typeof $.x==="number"&&{_x:$.x},...typeof $.y==="number"&&{_y:$.y},...typeof $.width==="number"&&{_width:$.width},...typeof $.height==="number"&&{_height:$.height}})}function MX($){if(typeof $.toolCallId!=="string"||!$.toolCallId)return;let v=oB($)??nB($.serverName,$.toolName);if(!v)return;if(T.value.has(v))U$(v,{html:$.html})}function QX($){if(typeof $.toolCallId!=="string"||!$.toolCallId)return;let v=oB($)??nB($.serverName,$.toolName);if(!v)return;if(T.value.has(v)){if($.success===!1){F4(v);return}U$(v,{toolResult:dO({result:$.result,success:typeof $.success==="boolean"?$.success:void 0,error:typeof $.error==="string"?$.error:void 0,content:typeof $.content==="string"?$.content:void 0,detailedContent:typeof $.detailedContent==="string"?$.detailedContent:void 0})})}}function NX($){_4(),U$("status-main",{subagent:{state:$.state,name:$.agentDisplayName??$.agentName}})}function rX($){let v=$.nodeId;if(!v)return;let g=$.text||"",_=$.position,U=$.parentNodeId,z=$.contextNodeIds;if($.threadNodeId&&T.value.has($.threadNodeId)){let b=$.threadNodeId,J=T.value.get(b);if(!J)return;let G=Array.isArray(J.data.turns)?[...J.data.turns]:[],K=G[G.length-1];if(!K||K.role!=="user"||K.text!==g)G.push({role:"user",text:g,status:"pending"});U$(b,{turns:G,threadStatus:"pending"});return}if(!T.value.has(v)){let b=_??sv.prompt;_6(m0({id:v,type:"prompt",position:{x:b.x,y:b.y},size:{width:sv.prompt.w,height:400},zIndex:1,collapsed:!1,pinned:!1,dockPosition:null,data:{text:g,turns:g?[{role:"user",text:g,status:"pending"}]:[],threadStatus:g?"pending":"draft",status:g?"pending":"draft",parentNodeId:U,contextNodeIds:z}})),Fv(v)}if(U&&T.value.has(U))I_({id:`edge-${U}-${v}`,from:U,to:v,type:"flow",style:"dashed"})}function uX($){let{nodeId:v,status:g}=$;if(v&&T.value.has(v))U$(v,{status:g})}function RX($){let{responseNodeId:v,promptNodeId:g}=$;if(!v)return;let _=g?T.value.get(g):void 0;if(_&&Array.isArray(_.data.turns)){f0.set(v,g);let z=[..._.data.turns];z.push({role:"assistant",text:"",status:"streaming"}),U$(g,{turns:z,threadStatus:"streaming",_activeResponseId:v}),Fv(g);return}let U=_?{x:_.position.x,y:_.position.y+_.size.height+24}:{x:sv.response.x,y:sv.response.y};if(!T.value.has(v))_6(m0({id:v,type:"response",position:U,size:{width:sv.response.w,height:sv.response.h},zIndex:1,collapsed:!1,pinned:!1,dockPosition:null,data:{content:"",status:"streaming",promptNodeId:g}}));if(g)I_({id:`edge-${g}-${v}`,from:g,to:v,type:"flow",animated:!0});Fv(v)}function yX($){let v=$.responseNodeId;if(!v)return;let g=f0.get(v);if(g){let _=T.value.get(g);if(_&&Array.isArray(_.data.turns)){let U=[..._.data.turns],z=U[U.length-1];if(z&&z.role==="assistant")z.text=$.content,z.status="streaming";U$(g,{turns:U,threadStatus:"streaming"})}return}if(!T.value.has(v))return;U$(v,{content:$.content,status:"streaming"})}function DX($){let v=$.responseNodeId;if(!v)return;let g=f0.get(v);if(g){let z=T.value.get(g);if(z&&Array.isArray(z.data.turns)){let b=[...z.data.turns],J=b[b.length-1];if(J&&J.role==="assistant")J.text=$.content,J.status="complete";U$(g,{turns:b,threadStatus:"answered",_activeResponseId:void 0})}f0.delete(v);return}if(!T.value.has(v))return;U$(v,{content:$.content,status:"complete"});let U=T.value.get(v)?.data.promptNodeId;if(U){let z=`edge-${U}-${v}`,b=c$.value.get(z);if(b)fK(z),I_({...b,animated:!1})}}function TX($){let v=$.layout;if(!v?.nodes)return;let g=!x6.value;x6.value=!0;let _=v.nodes.map(OX).filter((J)=>J!==null),U=Array.isArray(v.edges)?v.edges.map(GX).filter((J)=>J!==null):Array.from(c$.value.values()),z=Array.isArray(v.annotations)?v.annotations.map(KX).filter((J)=>J!==null):void 0,b=v.viewport?{x:typeof v.viewport.x==="number"?v.viewport.x:0,y:typeof v.viewport.y==="number"?v.viewport.y:0,scale:typeof v.viewport.scale==="number"?v.viewport.scale:1}:void 0;q4(),xK({...b?{viewport:b}:{},nodes:_,edges:U,...z?{annotations:z}:{}},{applyViewport:g}),F2({event:"canvas-layout-update",data:$})}function jX($){if($<=1)return 500;if($===2)return 1000;return Math.min(2500,1500+($-3)*500)}function VX($){let v=$.nodeId;if(v&&T.value.has(v)){if($.noPan===!0){A6(v);return}Fv(v)}}function CX($){let v=$.viewport;if(!v)return;let g=typeof v.x==="number"?v.x:0,_=typeof v.y==="number"?v.y:0,U=typeof v.scale==="number"?v.scale:1;q4(),iK({x:g,y:_,scale:U})}function fX($){if(T.value.get("context-main"))U$("context-main",{currentTokens:$.currentTokens,tokenLimit:$.tokenLimit,messagesLength:$.messagesLength,utilization:$.utilization,nearLimit:$.nearLimit})}function mX($){B_.value=$.enabled===!0}function EX($){if(typeof $.theme==="string")dB($.theme)}function cX($){let v=Array.isArray($.nodeIds)?$.nodeIds.filter((g)=>typeof g==="string"):[];VK(v),F2({event:"context-pins-changed",data:$})}var C0=null;function pB(){if(C0)clearTimeout(C0);C0=setTimeout(()=>{C0=null,YK().then(($)=>{F6.value=$})},150)}function iX($){let v=$.intent;if(!v||typeof v.id!=="string"||typeof v.kind!=="string"||typeof v.expiresAt!=="number")return;CW(v)}function lX($){let v=typeof $.id==="string"?$.id:"";if(!v)return;if($.settled===!0)mW(v,typeof $.nodeId==="string"?$.nodeId:void 0);else JG(v)}var hX={connected:WX,"workbench-open":BX,"canvas-status":PX,"execution-phase":kX,"context-cards":IX,"mcp-app-candidate":HX,"mcp-app-host-snapshot":LX,"mcp-app-host-fallback":FX,"aux-open":YX,"aux-close":AX,"assistant-complete":qX,"tool-start":XX,"tool-complete":wX,"review-state":ZX,"subagent-status":NX,"ext-app-open":SX,"ext-app-update":MX,"ext-app-result":QX,"context-pins-changed":cX,"canvas-layout-update":TX,"canvas-focus-node":VX,"canvas-viewport-update":CX,"context-usage":fX,"trace-state":mX,"theme-changed":EX,"canvas-prompt-created":rX,"canvas-prompt-status":uX,"canvas-response-start":RX,"canvas-response-delta":yX,"canvas-response-complete":DX,"ax-state-changed":pB,"ax-event-created":pB,"ax-intent":iX,"ax-intent-clear":lX};function XG(){if(AG=oK(),_4(),x6.value=!1,O3(),EW(),m6)clearTimeout(m6),m6=null;let $=H4.value,v=$?`/api/workbench/events?session=${$}`:"/api/workbench/events";h6.value="connecting";let g=new EventSource(v);Dg=g;for(let[_,U]of Object.entries(hX))g.addEventListener(_,(z)=>{try{U(JSON.parse(z.data))}catch(b){console.warn(`[sse-bridge] Failed to parse "${_}" event:`,b)}});return g.onopen=()=>{if(Dg!==g)return;YG=0,h6.value="connected"},g.onerror=()=>{if(Dg!==g)return;h6.value="disconnected",g.close(),Dg=null,YG+=1,m6=setTimeout(()=>{m6=null,XG()},jX(YG))},()=>{if(m6)clearTimeout(m6),m6=null;g.close(),Dg=null}}function xX($,v){console.error(`[app] ${$} failed`,v)}function sB($,v={}){fetch(`/api/workbench/intent?_ts=${Date.now()}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:$,payload:v})}).catch((g)=>{xX("sendIntent",g)})}function Ov({label:$,detail:v,shortcut:g,align:_="center",children:U}){return O("span",{class:`toolbar-tooltip-anchor toolbar-tooltip-anchor-${_}`,children:[U,O("span",{class:"toolbar-tooltip",role:"tooltip",children:[O("span",{class:"toolbar-tooltip-label",children:$},void 0,!1,void 0,this),(v||g)&&O("span",{class:"toolbar-tooltip-meta",children:[v&&O("span",{children:v},void 0,!1,void 0,this),g&&O("kbd",{class:"toolbar-tooltip-shortcut",children:g},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function pX({minimapVisible:$,onToggleMinimap:v,snapshotOpen:g,onToggleSnapshot:_,snapshotBtnRef:U,onOpenPalette:z,onOpenShortcuts:b,annotationTool:J,onToggleAnnotationMode:G,onToggleAnnotationEraser:K,onToggleTextAnnotation:W}){let B=h6.value,k=x6.value,P=I$.value,A=T.value.size,H=c$.value.size,I=B_.value,F=Array.from(T.value.values()).filter((u)=>u.type==="trace").length,Y=B==="connected"&&!k?"syncing":B,X=Y.charAt(0).toUpperCase()+Y.slice(1),Q=k?[`${A} node${A!==1?"s":""}`,...H>0?[`${H} edge${H!==1?"s":""}`]:[],...F>0?[`${F} trace${F!==1?"s":""}`]:I?["trace armed"]:[]].join(" · "):"Syncing canvas…";return O("div",{class:"toolbar-group",children:[O("div",{class:"canvas-toolbar",children:[O(Ov,{label:"PMX Canvas",detail:"Focus Field · spatial workbench for coding agents",align:"start",children:O("span",{class:"canvas-brand","aria-label":"PMX Canvas",children:O(zB,{size:22},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O("div",{class:"separator"},void 0,!1,void 0,this),O(Ov,{label:"Canvas status",detail:k?X:"Syncing canvas from server",align:"start",children:O("span",{class:`connection-dot ${B}`,"aria-label":`Canvas status: ${Y}`},void 0,!1,void 0,this)},void 0,!1,void 0,this),O("span",{class:"hud-collapsible-text",style:{fontSize:"11px",color:"var(--c-muted)"},children:H4.value?H4.value.slice(0,12):"…"},void 0,!1,void 0,this),O("div",{class:"separator"},void 0,!1,void 0,this),O(Ov,{label:"Fit canvas",detail:"Frame every node on screen",children:O("button",{type:"button",onClick:()=>L_(window.innerWidth,window.innerHeight),"aria-label":"Fit canvas",children:O(lW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:"Reset view",shortcut:`${Sv}+0`,children:O("button",{type:"button",onClick:()=>xv({x:0,y:0,scale:1},250),"aria-label":"Reset view",children:O(hW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:"Zoom in",shortcut:`${Sv}++`,children:O("button",{type:"button",onClick:()=>xv({...P,scale:Math.min(4,P.scale*1.25)},150),"aria-label":"Zoom in",children:O(xW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:"Zoom out",shortcut:`${Sv}+-`,children:O("button",{type:"button",onClick:()=>xv({...P,scale:Math.max(0.1,P.scale/1.25)},150),"aria-label":"Zoom out",children:O(pW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O("span",{class:"hud-collapsible-text",style:{fontSize:"10px",color:"var(--c-dim)",minWidth:"36px",textAlign:"center"},children:[Math.round(P.scale*100),"%"]},void 0,!0,void 0,this),O("div",{class:"separator"},void 0,!1,void 0,this),O(Ov,{label:"Arrange layout",detail:H>0?"Graph-aware layout for connected nodes":"Grid layout for loose nodes",children:O("button",{type:"button",onClick:()=>H>0?Y_():F_(),"aria-label":"Arrange layout",children:O(oW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:$?"Hide minimap":"Show minimap",detail:"Quickly navigate large canvases",children:O("button",{type:"button",onClick:v,"aria-label":$?"Hide minimap":"Show minimap",style:{color:$?"var(--c-accent)":void 0},children:O(nW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:`Switch to ${T$.value==="dark"?"light":"dark"} theme`,detail:`Current theme: ${T$.value}`,children:O("button",{type:"button",onClick:()=>{let u=T$.value==="dark"?"light":"dark";document.documentElement.setAttribute("data-theme",u),OU(),T$.value=u,J_(u)},"aria-label":`Switch to ${T$.value==="dark"?"light":"dark"} theme`,children:T$.value==="dark"?O(tW,{},void 0,!1,void 0,this):O(dW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:"Snapshots",detail:"Capture and restore canvas states",align:"end",children:O("button",{ref:U,type:"button",onClick:_,"aria-label":"Snapshots",style:{color:g?"var(--c-accent)":void 0},children:O($B,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"canvas-toolbar",children:[O(Ov,{label:I?"Disable trace":"Enable trace",detail:I?"Stop collecting new trace nodes":"Capture agent execution on the canvas",children:O("button",{type:"button",onClick:()=>sB("trace-toggle",{enabled:!I}),"aria-label":I?"Disable trace":"Enable trace",style:{color:I?"var(--c-purple)":void 0},children:O(vB,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),(I||F>0)&&O(Ov,{label:"Clear trace",detail:F>0?`Remove ${F} trace node${F===1?"":"s"}`:"Trace is enabled but still empty",children:O("button",{type:"button",onClick:()=>sB("trace-clear"),"aria-label":"Clear trace",children:O(UB,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O("div",{class:"separator"},void 0,!1,void 0,this),O(Ov,{label:J==="pen"?"Stop annotating":"Annotate canvas",detail:"Draw directly on the canvas for human-visible markup",children:O("button",{type:"button",onClick:G,"aria-label":J==="pen"?"Stop annotating":"Annotate canvas","aria-pressed":J==="pen",style:{color:J==="pen"?"var(--c-accent)":void 0},children:O(aW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:J==="eraser"?"Stop erasing":"Erase annotations",detail:"Click a drawn annotation to remove it",children:O("button",{type:"button",onClick:K,"aria-label":J==="eraser"?"Stop erasing":"Erase annotations","aria-pressed":J==="eraser",style:{color:J==="eraser"?"var(--c-accent)":void 0},children:O(sW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:J==="text"?"Stop text annotations":"Text annotations",detail:"Click anywhere to type an intent note",children:O("button",{type:"button",onClick:W,"aria-label":J==="text"?"Stop text annotations":"Text annotations","aria-pressed":J==="text",style:{color:J==="text"?"var(--c-accent)":void 0},children:O(eW,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O("div",{class:"separator"},void 0,!1,void 0,this),O(Ov,{label:"Search nodes and actions",shortcut:`${Sv}+K`,children:O("button",{type:"button",onClick:z,"aria-label":"Search nodes and actions",children:O(gB,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O(Ov,{label:"Keyboard shortcuts",shortcut:"?",align:"end",children:O("button",{type:"button",onClick:b,"aria-label":"Keyboard shortcuts",children:O(_B,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),O("span",{class:"hud-collapsible-text",style:{fontSize:"10px",color:"var(--c-dim)"},children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function oX({onOpenPalette:$}){return O("div",{class:"welcome-card",children:[O("div",{class:"welcome-icon",children:"◇"},void 0,!1,void 0,this),O("div",{class:"welcome-title",children:"Shape What The Agent Sees"},void 0,!1,void 0,this),O("div",{class:"welcome-subtitle",children:"Lay out notes, files, and evidence. Bring related nodes together. Pin what matters. The board will reflect the active focus."},void 0,!1,void 0,this),O("div",{class:"welcome-hints",children:[O("button",{type:"button",class:"welcome-hint",onClick:$,children:[O("kbd",{children:[Sv,"+K"]},void 0,!0,void 0,this),O("span",{children:"Create a note"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"welcome-hint",children:[O("kbd",{children:"Drop files"},void 0,!1,void 0,this),O("span",{children:"Add evidence to the board"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"welcome-hint",children:[O("kbd",{children:"✦"},void 0,!1,void 0,this),O("span",{children:"Pin important nodes"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"welcome-hint",children:[O("kbd",{children:"Move nearby"},void 0,!1,void 0,this),O("span",{children:"Shape the focus field"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O("div",{class:"welcome-footer",children:"The canvas is a shared attention surface, not just an editor."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function eB(){let[$,v]=x(!0),[g,_]=x(!1),[U,z]=x(!1),[b,J]=x(!1),[G,K]=x(null),W=V(null),{menu:B,openNodeMenu:k,openCanvasMenu:P,closeMenu:A}=RB(),H=x6.value,I=N(()=>v((r)=>!r),[]),F=N(()=>_((r)=>!r),[]),Y=N(()=>_(!1),[]),X=N(()=>K((r)=>r==="pen"?null:"pen"),[]),Q=N(()=>K((r)=>r==="eraser"?null:"eraser"),[]),u=N(()=>K((r)=>r==="text"?null:"text"),[]),E=N((r,R)=>{xv({x:r,y:R,scale:I$.value.scale},200)},[]);m(()=>{return XG()},[]),m(()=>{let r=(R)=>{let $$=R.metaKey||R.ctrlKey;if($$&&R.key==="k"){R.preventDefault(),z((c)=>!c);return}if(R.key==="Escape"&&G){R.preventDefault(),K(null);return}if(R.key==="Escape"&&E$.value&&!hv.value){R.preventDefault(),p6();return}if(R.key==="Escape"&&U){R.preventDefault(),z(!1);return}if(R.key==="Escape"&&b){R.preventDefault(),J(!1);return}let p=R.target?.tagName;if(p==="INPUT"||p==="TEXTAREA")return;if(R.key==="?"||R.key==="/"&&R.shiftKey){R.preventDefault(),J((c)=>!c);return}if($$&&R.key==="0")R.preventDefault(),xv({x:0,y:0,scale:1},250);else if($$&&(R.key==="="||R.key==="+")){R.preventDefault();let c=I$.value;xv({...c,scale:Math.min(4,c.scale*1.25)},150)}else if($$&&R.key==="-"){R.preventDefault();let c=I$.value;xv({...c,scale:Math.max(0.1,c.scale/1.25)},150)}else if(R.key==="Escape"){if(h$.value.size>0){jv();return}y$.value=null,A()}else if(R.key==="Tab")R.preventDefault(),nK(R.shiftKey?-1:1);else if(y$.value&&["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(R.key)){R.preventDefault();let c=R.key.replace("Arrow","").toLowerCase();tK(c)}};return document.addEventListener("keydown",r),()=>{document.removeEventListener("keydown",r)}},[G,A,U,b]),m(()=>{if(!H)return;let r=window.__pmxCanvasBootstrapReady;if(typeof r==="function")r()},[H]);let M=Array.from(T.value.values()),n=M.filter((r)=>r.dockPosition==="left"),t=M.filter((r)=>r.dockPosition==="right").sort((r,R)=>{let $$={context:0,ledger:1};return($$[r.type]??2)-($$[R.type]??2)});return O("div",{style:{width:"100%",height:"100%",position:"relative"},children:[O("div",{class:"hud-layer",children:[O("div",{class:"hud-left",children:n.map((r)=>O(FG,{node:r},r.id,!1,void 0,this))},void 0,!1,void 0,this),O(pX,{minimapVisible:$,onToggleMinimap:I,snapshotOpen:g,onToggleSnapshot:F,snapshotBtnRef:W,onOpenPalette:()=>z(!0),onOpenShortcuts:()=>J((r)=>!r),annotationTool:G,onToggleAnnotationMode:X,onToggleAnnotationEraser:Q,onToggleTextAnnotation:u},void 0,!1,void 0,this),O("div",{class:"hud-right",children:t.map((r)=>O(FG,{node:r},r.id,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O(aK,{},void 0,!1,void 0,this),O(dK,{},void 0,!1,void 0,this),O(rB,{onNodeContextMenu:k,onCanvasContextMenu:P,annotationMode:G!==null,annotationTool:G},void 0,!1,void 0,this),H&&M.filter((r)=>!r.dockPosition).length===0&&Lv.value.size===0&&O(oX,{onOpenPalette:()=>z(!0)},void 0,!1,void 0,this),h$.value.size>0&&O(iB,{},void 0,!1,void 0,this),D$.value.size>0&&O(TB,{},void 0,!1,void 0,this),E$.value&&O(mB,{},void 0,!1,void 0,this),O(hB,{open:g,onClose:Y,anchorRef:W},void 0,!1,void 0,this),$&&O(cB,{viewport:I$,nodes:T,edges:c$,onNavigate:E,containerWidth:window.innerWidth,containerHeight:window.innerHeight},void 0,!1,void 0,this),B&&O(yB,{menu:B,onClose:A},void 0,!1,void 0,this),U&&O(uB,{onClose:()=>z(!1),onToggleMinimap:I},void 0,!1,void 0,this),b&&O(lB,{onClose:()=>J(!1)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var $P=document.getElementById("app");if($P)EG(O(eB,{},void 0,!1,void 0,this),$P);
|