pmx-canvas 0.8.0 → 0.9.0
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/.github/extensions/pmx-canvas/runtime.json +1 -1
- package/.github/extensions/pmx-canvas/tools.json +601 -22
- package/CHANGELOG.md +66 -0
- package/Readme.md +131 -532
- package/dist/canvas/global.css +2759 -510
- package/dist/canvas/index.js +168 -107
- package/dist/canvas/mcp-app.html +2936 -632
- package/dist/json-render/index.css +81 -1
- package/dist/json-render/index.js +20 -20
- package/dist/types/client/canvas/BarHint.d.ts +12 -2
- package/dist/types/client/canvas/BoardLinkDialog.d.ts +3 -1
- package/dist/types/client/canvas/BoardPinButton.d.ts +10 -0
- package/dist/types/client/canvas/BoardSwitcher.d.ts +1 -1
- package/dist/types/client/canvas/CanvasViewport.d.ts +1 -1
- package/dist/types/client/canvas/CommandBar.d.ts +3 -4
- package/dist/types/client/canvas/ConnectionBanner.d.ts +2 -1
- package/dist/types/client/canvas/ContextChip.d.ts +3 -0
- package/dist/types/client/canvas/CrossBoardReferences.d.ts +5 -0
- package/dist/types/client/canvas/EdgeLayer.d.ts +14 -3
- package/dist/types/client/canvas/EmptyState.d.ts +4 -4
- package/dist/types/client/canvas/HomeGraphView.d.ts +2 -0
- package/dist/types/client/canvas/HomeMapView.d.ts +1 -0
- package/dist/types/client/canvas/HomeReviewView.d.ts +6 -0
- package/dist/types/client/canvas/HomeView.d.ts +9 -7
- package/dist/types/client/canvas/KnowledgeDialog.d.ts +4 -0
- package/dist/types/client/canvas/LifecycleChrome.d.ts +5 -0
- package/dist/types/client/canvas/LifecycleFields.d.ts +7 -0
- package/dist/types/client/canvas/LifecyclePanel.d.ts +1 -0
- package/dist/types/client/canvas/MemoryInspector.d.ts +7 -0
- package/dist/types/client/canvas/NearPinLayer.d.ts +14 -0
- package/dist/types/client/canvas/NodeContextMark.d.ts +40 -7
- package/dist/types/client/canvas/RelationPresetsDialog.d.ts +4 -0
- package/dist/types/client/canvas/RelationsPanel.d.ts +4 -0
- package/dist/types/client/canvas/SessionPanel.d.ts +2 -0
- package/dist/types/client/canvas/canvas-area.d.ts +1 -1
- package/dist/types/client/canvas/graph-geometry.d.ts +27 -0
- package/dist/types/client/canvas/graph-model.d.ts +37 -0
- package/dist/types/client/canvas/memory-layout.d.ts +23 -0
- package/dist/types/client/canvas/use-chrome-height.d.ts +2 -0
- package/dist/types/client/canvas/use-focus-trap.d.ts +1 -0
- package/dist/types/client/canvas/use-memory-graph.d.ts +8 -0
- package/dist/types/client/canvas/use-pan-zoom.d.ts +4 -1
- package/dist/types/client/icons.d.ts +0 -10
- package/dist/types/client/nodes/AxStepControls.d.ts +1 -1
- package/dist/types/client/nodes/HtmlNode.d.ts +1 -0
- package/dist/types/client/nodes/InlineMarkdownEditor.d.ts +4 -4
- package/dist/types/client/nodes/MarkdownNode.d.ts +5 -1
- package/dist/types/client/nodes/McpAppNode.d.ts +4 -4
- package/dist/types/client/nodes/viewer-runtime-state.d.ts +1 -1
- package/dist/types/client/state/boards-store.d.ts +81 -9
- package/dist/types/client/state/canvas-store.d.ts +14 -1
- package/dist/types/client/state/context-chip-store.d.ts +22 -0
- package/dist/types/client/state/context-status-store.d.ts +35 -0
- package/dist/types/client/state/intent-bridge.d.ts +11 -8
- package/dist/types/client/state/knowledge-store.d.ts +22 -0
- package/dist/types/client/state/near-pin-store.d.ts +44 -1
- package/dist/types/client/state/presence-store.d.ts +4 -4
- package/dist/types/client/state/presentation.d.ts +28 -0
- package/dist/types/client/state/relation-store.d.ts +10 -0
- package/dist/types/client/state/session-store.d.ts +41 -2
- package/dist/types/client/state/workspace-settings.d.ts +7 -0
- package/dist/types/client/types.d.ts +13 -1
- package/dist/types/client/utils/keyboard.d.ts +2 -0
- package/dist/types/client/utils/time-ago.d.ts +4 -0
- package/dist/types/mcp/context-uri-template.d.ts +3 -1
- package/dist/types/server/agent-presence.d.ts +10 -3
- package/dist/types/server/ax-context.d.ts +1 -1
- package/dist/types/server/canvas-db.d.ts +30 -7
- package/dist/types/server/canvas-operations.d.ts +24 -2
- package/dist/types/server/canvas-provenance.d.ts +22 -2
- package/dist/types/server/canvas-serialization.d.ts +2 -0
- package/dist/types/server/canvas-state.d.ts +93 -15
- package/dist/types/server/canvas-validation.d.ts +1 -1
- package/dist/types/server/context-brief.d.ts +94 -6
- package/dist/types/server/context-reads.d.ts +33 -7
- package/dist/types/server/edit-summary.d.ts +20 -0
- package/dist/types/server/index.d.ts +71 -10
- package/dist/types/server/knowledge-lifecycle.d.ts +221 -0
- package/dist/types/server/lifecycle-status.d.ts +10 -0
- package/dist/types/server/memory-graph.d.ts +9 -0
- package/dist/types/server/mutation-history.d.ts +2 -0
- package/dist/types/server/operations/ops/ax-shared.d.ts +1 -1
- package/dist/types/server/operations/ops/boards.d.ts +2 -1
- package/dist/types/server/operations/ops/lifecycle.d.ts +2 -0
- package/dist/types/server/operations/ops/memory-graph.d.ts +2 -0
- package/dist/types/server/operations/ops/nodes.d.ts +5 -0
- package/dist/types/server/operations/ops/query.d.ts +23 -0
- package/dist/types/server/operations/registry.d.ts +1 -0
- package/dist/types/server/placement.d.ts +7 -0
- package/dist/types/server/scope-fence.d.ts +2 -1
- package/dist/types/server/spatial-analysis.d.ts +6 -3
- package/dist/types/server/tour-control.d.ts +32 -0
- package/dist/types/server/wiki-links.d.ts +14 -0
- package/dist/types/server/workbench-auth.d.ts +2 -0
- package/dist/types/shared/agent-context.d.ts +2 -0
- package/dist/types/shared/agent-presence.d.ts +15 -12
- package/dist/types/shared/auto-arrange.d.ts +1 -0
- package/dist/types/shared/boards.d.ts +4 -4
- package/dist/types/shared/knowledge-lifecycle.d.ts +41 -0
- package/dist/types/shared/knowledge-presets.d.ts +6 -0
- package/dist/types/shared/lifecycle-status.d.ts +24 -0
- package/dist/types/shared/memory-graph.d.ts +53 -0
- package/dist/types/shared/relations.d.ts +68 -0
- package/dist/types/shared/semantic-attention.d.ts +2 -0
- package/dist/types/shared/tour.d.ts +38 -0
- package/dist/types/shared/workspace-settings.d.ts +11 -0
- package/docs/RELEASE.md +21 -3
- package/docs/adr-001-bun-only-runtime.md +7 -1
- package/docs/adr-002-shared-product-separate-runtimes.md +93 -0
- package/docs/api-reference.md +109 -0
- package/docs/ax-host-adapter-contract.md +1 -1
- package/docs/ax-state-contract.md +5 -4
- package/docs/cli.md +153 -15
- package/docs/demos/pmx-canvas-demo.mp4 +0 -0
- package/docs/design/AgentContext.dc.html +3 -3
- package/docs/design/BoardPins.dc.html +37 -22
- package/docs/design/Categories.dc.html +208 -0
- package/docs/design/CategoryEditor.dc.html +33 -0
- package/docs/design/Chrome.dc.html +55 -9
- package/docs/design/ContextChip.dc.html +224 -0
- package/docs/design/ContextChip600.dc.html +136 -0
- package/docs/design/EmptyState.dc.html +45 -0
- package/docs/design/Flows.dc.html +23 -1
- package/docs/design/HeaderMarks.dc.html +183 -0
- package/docs/design/Home.dc.html +19 -1
- package/docs/design/HomeGraph.dc.html +86 -202
- package/docs/design/HomeMap.dc.html +23 -1
- package/docs/design/HomeTeam.dc.html +32 -14
- package/docs/design/Lifecycle.dc.html +22 -0
- package/docs/design/Lifecycle600.dc.html +18 -0
- package/docs/design/LifecycleVariants.dc.html +157 -0
- package/docs/design/LinkAuthorship.dc.html +139 -0
- package/docs/design/LinksChanged.dc.html +203 -0
- package/docs/design/LinksOptions.dc.html +137 -0
- package/docs/design/LinksOptions600.dc.html +134 -0
- package/docs/design/NearPin.dc.html +9 -10
- package/docs/design/Pane600.dc.html +4 -3
- package/docs/design/Relations.dc.html +3 -2
- package/docs/design/Restore.dc.html +152 -0
- package/docs/design/SeeChange.dc.html +267 -0
- package/docs/design/Uses.dc.html +12 -6
- package/docs/design/canvas.json +146 -19
- package/docs/design.md +454 -18
- package/docs/environment.md +0 -1
- package/docs/evals/curation-effect.md +128 -0
- package/docs/http-api.md +465 -38
- package/docs/mcp.md +150 -19
- package/docs/node-types.md +58 -3
- package/docs/plans/design-gaps-2026-10-08.md +53 -0
- package/docs/plans/plan-009-tech-debt-backlog.md +379 -0
- package/docs/plans/plan-016-context-made-visible-wave-1.md +150 -5
- package/docs/plans/plan-017-knowledge-categories-and-lifecycle.md +175 -0
- package/docs/plans/plan-018-connected-memory-wave-2.md +594 -0
- package/docs/plans/plan-019-post-0.9-roadmap.md +198 -0
- package/docs/product-context-vision-2026-09.md +17 -1
- package/docs/product-vision-2026-09.md +1082 -43
- package/docs/product-vision-review-2026-09.md +13 -1
- package/docs/screenshots/workbench-live-dark.png +0 -0
- package/docs/screenshots/workbench-live-light.png +0 -0
- package/docs/sdk.md +62 -2
- package/package.json +1 -1
- package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/runtime.json +1 -1
- package/plugins/pmx-canvas/plugin.json +1 -1
- package/plugins/pmx-canvas/runtime.json +1 -1
- package/plugins/pmx-canvas/tools.json +601 -22
- package/skills/pmx-canvas/SKILL.md +234 -43
- package/skills/pmx-canvas/evals/evals.json +62 -0
- package/skills/pmx-canvas/references/ax-html-control-surface.md +6 -0
- package/skills/pmx-canvas/references/full-reference.md +120 -21
- package/skills/pmx-canvas/references/github-copilot-app-adapter.md +2 -2
- package/skills/pmx-canvas/references/importing-context.md +132 -0
- package/skills/pmx-canvas/references/installing-pmx-canvas.md +6 -6
- package/skills/pmx-canvas/references/tours-and-recording.md +16 -1
- package/skills/pmx-canvas-testing/SKILL.md +20 -0
- package/src/cli/agent.ts +2 -0
- package/src/cli/commands/ax.ts +12 -0
- package/src/cli/commands/boards.ts +87 -11
- package/src/cli/commands/edges.ts +28 -0
- package/src/cli/commands/groups.ts +7 -0
- package/src/cli/commands/nodes.ts +4 -2
- package/src/cli/commands/query.ts +34 -2
- package/src/cli/commands/record.ts +199 -48
- package/src/cli/index.ts +7 -1
- package/src/client/App.tsx +177 -70
- package/src/client/canvas/AttentionHistory.tsx +0 -2
- package/src/client/canvas/BarHint.tsx +40 -2
- package/src/client/canvas/BoardCopyDialog.tsx +1 -1
- package/src/client/canvas/BoardFolderDialog.tsx +7 -7
- package/src/client/canvas/BoardLinkDialog.tsx +138 -33
- package/src/client/canvas/BoardPinButton.tsx +33 -0
- package/src/client/canvas/BoardSwitcher.tsx +26 -40
- package/src/client/canvas/CanvasNode.tsx +360 -237
- package/src/client/canvas/CanvasViewport.tsx +45 -7
- package/src/client/canvas/CommandBar.tsx +29 -23
- package/src/client/canvas/CommandPalette.tsx +5 -12
- package/src/client/canvas/ConnectionBanner.tsx +3 -3
- package/src/client/canvas/ContextChip.tsx +296 -0
- package/src/client/canvas/ContextMenu.tsx +63 -5
- package/src/client/canvas/CrossBoardReferences.tsx +60 -0
- package/src/client/canvas/EdgeLayer.tsx +339 -76
- package/src/client/canvas/EmptyState.tsx +33 -18
- package/src/client/canvas/ExpandedNodeOverlay.tsx +72 -40
- package/src/client/canvas/ExternalWriters.tsx +57 -42
- package/src/client/canvas/HomeGraphView.tsx +942 -0
- package/src/client/canvas/HomeMapView.tsx +641 -0
- package/src/client/canvas/HomeReviewView.tsx +167 -0
- package/src/client/canvas/HomeView.tsx +687 -160
- package/src/client/canvas/IntentLayer.tsx +19 -12
- package/src/client/canvas/KnowledgeDialog.tsx +488 -0
- package/src/client/canvas/LifecycleChrome.tsx +133 -0
- package/src/client/canvas/LifecycleFields.tsx +91 -0
- package/src/client/canvas/LifecyclePanel.tsx +533 -0
- package/src/client/canvas/MemoryInspector.tsx +104 -0
- package/src/client/canvas/Minimap.tsx +3 -3
- package/src/client/canvas/NearPinLayer.tsx +187 -0
- package/src/client/canvas/NodeContextMark.tsx +175 -97
- package/src/client/canvas/Presentation.tsx +23 -57
- package/src/client/canvas/RelationPresetsDialog.tsx +413 -0
- package/src/client/canvas/RelationsPanel.tsx +82 -0
- package/src/client/canvas/SelectionBar.tsx +3 -6
- package/src/client/canvas/SessionPanel.tsx +90 -50
- package/src/client/canvas/SessionReceipt.tsx +311 -39
- package/src/client/canvas/ShortcutOverlay.tsx +1 -1
- package/src/client/canvas/SnapshotPanel.tsx +27 -36
- package/src/client/canvas/ToolRail.tsx +367 -192
- package/src/client/canvas/TopBar.tsx +354 -124
- package/src/client/canvas/canvas-area.ts +10 -3
- package/src/client/canvas/graph-geometry.ts +195 -0
- package/src/client/canvas/graph-model.ts +254 -0
- package/src/client/canvas/memory-layout.ts +106 -0
- package/src/client/canvas/use-chrome-height.ts +20 -0
- package/src/client/canvas/use-focus-trap.ts +31 -5
- package/src/client/canvas/use-memory-graph.ts +58 -0
- package/src/client/canvas/use-node-drag.ts +2 -1
- package/src/client/canvas/use-pan-zoom.ts +64 -7
- package/src/client/icons.tsx +0 -63
- package/src/client/mcp-app/style.css +0 -6
- package/src/client/nodes/AxStepControls.tsx +74 -50
- package/src/client/nodes/BoardNode.tsx +5 -1
- package/src/client/nodes/ContextNode.tsx +18 -11
- package/src/client/nodes/ExtAppFrame.tsx +0 -1
- package/src/client/nodes/FileNode.tsx +46 -42
- package/src/client/nodes/HtmlNode.tsx +44 -2
- package/src/client/nodes/ImageNode.tsx +1 -1
- package/src/client/nodes/InlineFormatBar.tsx +6 -9
- package/src/client/nodes/InlineMarkdownEditor.tsx +56 -17
- package/src/client/nodes/MarkdownNode.tsx +377 -109
- package/src/client/nodes/McpAppNode.tsx +50 -20
- package/src/client/nodes/MdFormatBar.tsx +21 -18
- package/src/client/nodes/PromptNode.tsx +1 -1
- package/src/client/nodes/ResponseNode.tsx +1 -1
- package/src/client/nodes/viewer-runtime-state.ts +54 -22
- package/src/client/state/attention-bridge.ts +64 -15
- package/src/client/state/boards-store.ts +193 -39
- package/src/client/state/canvas-store.ts +99 -12
- package/src/client/state/context-chip-store.ts +70 -0
- package/src/client/state/context-status-store.ts +53 -0
- package/src/client/state/intent-bridge.ts +51 -30
- package/src/client/state/knowledge-store.ts +43 -0
- package/src/client/state/near-pin-store.ts +115 -6
- package/src/client/state/presence-store.ts +7 -10
- package/src/client/state/presentation.ts +91 -0
- package/src/client/state/relation-store.ts +81 -0
- package/src/client/state/session-store.ts +144 -18
- package/src/client/state/sse-bridge.ts +206 -29
- package/src/client/state/workspace-settings.ts +11 -0
- package/src/client/theme/global.css +2759 -510
- package/src/client/types.ts +12 -0
- package/src/client/utils/keyboard.ts +10 -0
- package/src/client/utils/time-ago.ts +14 -0
- package/src/json-render/renderer/index.css +6 -1
- package/src/json-render/renderer/index.tsx +31 -1
- package/src/mcp/canvas-app.ts +12 -2
- package/src/mcp/context-uri-template.ts +7 -4
- package/src/mcp/server.ts +63 -41
- package/src/mcp/workbench-app.ts +39 -6
- package/src/server/agent-presence.ts +128 -28
- package/src/server/ax-context.ts +27 -13
- package/src/server/board-export.ts +12 -1
- package/src/server/canvas-db.ts +331 -42
- package/src/server/canvas-operations.ts +196 -84
- package/src/server/canvas-provenance.ts +53 -22
- package/src/server/canvas-serialization.ts +2 -0
- package/src/server/canvas-state.ts +950 -122
- package/src/server/canvas-validation.ts +9 -2
- package/src/server/context-brief.ts +345 -38
- package/src/server/context-reads.ts +179 -30
- package/src/server/demo-state.json +355 -24
- package/src/server/edit-summary.ts +74 -0
- package/src/server/html-surface.ts +8 -1
- package/src/server/index.ts +203 -13
- package/src/server/knowledge-lifecycle.ts +304 -0
- package/src/server/lifecycle-status.ts +232 -0
- package/src/server/memory-graph.ts +166 -0
- package/src/server/mutation-history.ts +18 -6
- package/src/server/operations/composites.ts +32 -11
- package/src/server/operations/http.ts +7 -2
- package/src/server/operations/index.ts +4 -0
- package/src/server/operations/mcp.ts +32 -1
- package/src/server/operations/ops/ax-presence.ts +1 -1
- package/src/server/operations/ops/ax-read.ts +57 -6
- package/src/server/operations/ops/ax-timeline.ts +28 -2
- package/src/server/operations/ops/backup.ts +5 -3
- package/src/server/operations/ops/batch.ts +35 -4
- package/src/server/operations/ops/boards.ts +188 -47
- package/src/server/operations/ops/canvas-wire.ts +31 -1
- package/src/server/operations/ops/edges.ts +36 -2
- package/src/server/operations/ops/groups.ts +6 -1
- package/src/server/operations/ops/json-render.ts +5 -1
- package/src/server/operations/ops/lifecycle.ts +262 -0
- package/src/server/operations/ops/memory-graph.ts +45 -0
- package/src/server/operations/ops/nodes.ts +107 -24
- package/src/server/operations/ops/query.ts +281 -68
- package/src/server/operations/ops/snapshots.ts +73 -1
- package/src/server/operations/ops/validate.ts +5 -1
- package/src/server/operations/ops/viewport.ts +97 -3
- package/src/server/operations/registry.ts +77 -26
- package/src/server/placement.ts +29 -0
- package/src/server/scope-fence.ts +78 -6
- package/src/server/server.ts +115 -16
- package/src/server/spatial-analysis.ts +48 -23
- package/src/server/tour-control.ts +82 -0
- package/src/server/wiki-links.ts +137 -0
- package/src/server/workbench-auth.ts +11 -0
- package/src/shared/agent-context.ts +3 -0
- package/src/shared/agent-presence.ts +15 -15
- package/src/shared/auto-arrange.ts +2 -0
- package/src/shared/boards.ts +4 -4
- package/src/shared/knowledge-lifecycle.ts +22 -0
- package/src/shared/knowledge-presets.ts +80 -0
- package/src/shared/lifecycle-status.ts +26 -0
- package/src/shared/memory-graph.ts +74 -0
- package/src/shared/relations.ts +98 -0
- package/src/shared/semantic-attention.ts +15 -1
- package/src/shared/tour.ts +23 -5
- package/src/shared/workspace-settings.ts +13 -0
- package/dist/types/client/canvas/ContextPinBar.d.ts +0 -1
- package/dist/types/client/canvas/FocusFieldLayer.d.ts +0 -1
- package/dist/types/client/canvas/kind-colors.d.ts +0 -3
- package/dist/types/server/agent-context.d.ts +0 -22
- package/src/client/canvas/ContextPinBar.tsx +0 -25
package/dist/canvas/index.js
CHANGED
|
@@ -1,156 +1,211 @@
|
|
|
1
|
-
var
|
|
1
|
+
var tE=Object.create;var{getPrototypeOf:nE,defineProperty:Zg,getOwnPropertyNames:oE}=Object;var Wg=Object.prototype.hasOwnProperty;function rE(e){return this[e]}var iE,sE,aE=(e,t,n)=>{var o=e!=null&&typeof e==="object";if(o){var i=t?iE??=new WeakMap:sE??=new WeakMap,s=i.get(e);if(s)return s}n=e!=null?tE(nE(e)):{};let a=t||!e||!e.__esModule||!Wg.call(e,"default")?Zg(n,"default",{value:e,enumerable:!0}):n;if(e&&typeof e==="object"||typeof e==="function"){for(let l of oE(e))if(!Wg.call(a,l))Zg(a,l,{get:rE.bind(e,l),enumerable:!0})}if(o)i.set(e,a);return a};var lE=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var d0=lE(function(u0){Object.defineProperty(u0,"__esModule",{value:!0});var XS=/highlight-(?:text|source)-([a-z0-9]+)/;function YS(e){e.addRule("highlightedCodeBlock",{filter:function(t){var n=t.firstChild;return t.nodeName==="DIV"&&XS.test(t.className)&&n&&n.nodeName==="PRE"},replacement:function(t,n,o){var i=n.className||"",s=(i.match(XS)||[null,""])[1];return`
|
|
2
2
|
|
|
3
3
|
`+o.fence+s+`
|
|
4
4
|
`+n.firstChild.textContent+`
|
|
5
5
|
`+o.fence+`
|
|
6
6
|
|
|
7
|
-
`}})}function
|
|
7
|
+
`}})}function QS(e){e.addRule("strikethrough",{filter:["del","s","strike"],replacement:function(t){return"~~"+t+"~~"}})}var u1=Array.prototype.indexOf,d1=Array.prototype.every,ii={},p1={left:":---",right:"---:",center:":---:"},Pm=null,e0=null,JS=new WeakMap;function f1(e){return e?(e.getAttribute("align")||e.style.textAlign||"").toLowerCase():""}function t0(e){return e?p1[e]:"---"}function n0(e,t){var n={left:0,right:0,center:0,"":0},o="";for(var i=0;i<e.rows.length;++i){var s=e.rows[i];if(t<s.childNodes.length){var a=f1(s.childNodes[t]);if(++n[a],n[a]>n[o])o=a}}return o}ii.tableCell={filter:["th","td"],replacement:function(e,t){if(Mm(s0(t)))return e;return o0(e,t)}};ii.tableRow={filter:"tr",replacement:function(e,t){let n=s0(t);if(Mm(n))return e;var o="";if(m1(t)){let a=a0(n);for(var i=0;i<a;i++){let l=i<t.childNodes.length?t.childNodes[i]:null;var s=t0(n0(n,i));o+=o0(s,l,i)}}return`
|
|
8
8
|
`+e+(o?`
|
|
9
|
-
`+o:"")}};
|
|
9
|
+
`+o:"")}};ii.table={filter:function(e,t){return e.nodeName==="TABLE"},replacement:function(e,t){if(i0(t,e0)){let l=t.outerHTML,c=y1(t);if(c===null||!c.classList.contains("joplin-table-wrapper"))return`
|
|
10
10
|
|
|
11
|
-
<div class="joplin-table-wrapper">${
|
|
11
|
+
<div class="joplin-table-wrapper">${l}</div>
|
|
12
12
|
|
|
13
|
-
`;else return
|
|
13
|
+
`;else return l}else{if(Mm(t))return e;e=e.replace(/\n+/g,`
|
|
14
14
|
`);var n=e.trim().split(`
|
|
15
|
-
`);if(n.length>=2)n=n[1];var o=/\| :?---/.test(n),
|
|
16
|
-
|`;for(var a=0;a<
|
|
15
|
+
`);if(n.length>=2)n=n[1];var o=/\| :?---/.test(n),i=a0(t),s="";if(i&&!o){s="|"+" |".repeat(i)+`
|
|
16
|
+
|`;for(var a=0;a<i;++a)s+=" "+t0(n0(t,a))+" |"}let l=t.caption?t.caption.textContent||"":"",c=l?`${l}
|
|
17
17
|
|
|
18
18
|
`:"",u=`${s}${e}`.trimStart();return`
|
|
19
19
|
|
|
20
|
-
${
|
|
20
|
+
${c}${u}
|
|
21
21
|
|
|
22
|
-
`}}};Zo.tableCaption={filter:["caption"],replacement:()=>""};Zo.tableColgroup={filter:["colgroup","col"],replacement:()=>""};Zo.tableSection={filter:["thead","tbody","tfoot"],replacement:function(e){return e}};function LE(e){var t=e.parentNode;return t.nodeName==="THEAD"||t.firstChild===e&&(t.nodeName==="TABLE"||DE(t))&&ME.call(e.childNodes,function(n){return n.nodeName==="TH"})}function DE(e){var t=e.previousSibling;return e.nodeName==="TBODY"&&(!t||t.nodeName==="THEAD"&&/^\s*$/i.test(t.textContent))}function Zx(e,t=null,n=null){if(n===null)n=RE.call(t.parentNode.childNodes,t);var o=" ";if(n===0)o="| ";let r=e.trim().replace(/\n\r/g,"<br>").replace(/\n/g,"<br>");r=r.replace(/\|+/g,"\\|");while(r.length<3)r+=" ";if(t)r=HE(r,t," ");return o+r+" |"}function Wx(e){if(!e.childNodes)return!1;for(let t=0;t<e.childNodes.length;t++){let n=e.childNodes[t];if(n.nodeName==="TABLE")return!0;if(Wx(n))return!0}return!1}var Qd=(e,t)=>{if(!e.childNodes)return!1;for(let n=0;n<e.childNodes.length;n++){let o=e.childNodes[n];if(t==="code"&&Yd&&Yd(o))return!0;if(t.includes(o.nodeName))return!0;if(Qd(o,t))return!0}return!1},qx=(e,t)=>{let n=["UL","OL","H1","H2","H3","H4","H5","H6","HR","BLOCKQUOTE"];if(t.preserveNestedTables)n.push("TABLE");return Qd(e,"code")||Qd(e,n)};function ep(e){let t=Dx.get(e);if(t!==void 0)return t;let n=FE(e);return Dx.set(e,n),n}function FE(e){if(!e)return!0;if(!e.rows)return!0;if(e.rows.length===1&&e.rows[0].childNodes.length<=1)return!0;if(Wx(e))return!0;return!1}function BE(e){let t=e.parentNode;while(t.nodeName!=="DIV")if(t=t.parentNode,!t)return null;return t}function Gx(e){let t=e.parentNode;while(t.nodeName!=="TABLE")if(t=t.parentNode,!t)return null;return t}function HE(e,t,n){let o=t.getAttribute("colspan")||1;for(let r=1;r<o;r++)e+=" | "+n.repeat(3);return e}function Vx(e){let t=0;for(let n=0;n<e.rows.length;n++){let r=e.rows[n].childNodes.length;if(r>t)t=r}return t}function Xx(e){Yd=e.isCodeBlock,Hx=e.options,e.keep(function(n){if(n.nodeName==="TABLE"&&qx(n,e.options))return!0;return!1});for(var t in Zo)e.addRule(t,Zo[t])}function Kx(e){e.addRule("taskListItems",{filter:function(t){let n=t.parentNode,o=n.parentNode;return t.type==="checkbox"&&(n.nodeName==="LI"||n.nodeName==="LABEL"&&o&&o.nodeName==="LI")},replacement:function(t,n){return(n.checked?"[x]":"[ ]")+" "}})}function jE(e){e.use([Fx,Bx,Xx,Kx])}Jx.gfm=jE;Jx.highlightedCodeBlock=Fx;Jx.strikethrough=Bx;Jx.tables=Xx;Jx.taskListItems=Kx});if(typeof crypto<"u"&&typeof crypto.randomUUID!=="function")crypto.randomUUID=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e)=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)});var wa,$e,mf,hu,Ao,lf,ff,hf,gf,gu,pu,mu,k0,ya={},ba=[],T0=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,_a=Array.isArray;function ro(e,t){for(var n in t)e[n]=t[n];return e}function vu(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function C0(e,t,n){var o,r,s,a={};for(s in t)s=="key"?o=t[s]:s=="ref"?r=t[s]:a[s]=t[s];if(arguments.length>2&&(a.children=arguments.length>3?wa.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(s in e.defaultProps)a[s]===void 0&&(a[s]=e.defaultProps[s]);return va(e,a,o,r,null)}function va(e,t,n,o,r){var s={type:e,props:t,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:r==null?++mf:r,__i:-1,__u:0};return r==null&&$e.vnode!=null&&$e.vnode(s),s}function _e(e){return e.children}function qr(e,t){this.props=e,this.context=t}function Gr(e,t){if(t==null)return e.__?Gr(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?Gr(e):null}function E0(e){if(e.__P&&e.__d){var t=e.__v,n=t.__e,o=[],r=[],s=ro({},t);s.__v=t.__v+1,$e.vnode&&$e.vnode(s),yu(e.__P,s,t,e.__n,e.__P.namespaceURI,32&t.__u?[n]:null,o,n==null?Gr(t):n,!!(32&t.__u),r),s.__v=t.__v,s.__.__k[s.__i]=s,xf(o,s,r),t.__e=t.__=null,s.__e!=n&&vf(s)}}function vf(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),vf(e)}function uf(e){(!e.__d&&(e.__d=!0)&&Ao.push(e)&&!xa.__r++||lf!=$e.debounceRendering)&&((lf=$e.debounceRendering)||ff)(xa)}function xa(){try{for(var e,t=1;Ao.length;)Ao.length>t&&Ao.sort(hf),e=Ao.shift(),t=Ao.length,E0(e)}finally{Ao.length=xa.__r=0}}function yf(e,t,n,o,r,s,a,c,l,u,p){var d,m,f,h,v,x,g,b=o&&o.__k||ba,I=t.length;for(l=A0(n,t,b,l,I),d=0;d<I;d++)(f=n.__k[d])!=null&&(m=f.__i!=-1&&b[f.__i]||ya,f.__i=d,x=yu(e,f,m,r,s,a,c,l,u,p),h=f.__e,f.ref&&m.ref!=f.ref&&(m.ref&&bu(m.ref,null,f),p.push(f.ref,f.__c||h,f)),v==null&&h!=null&&(v=h),(g=!!(4&f.__u))||m.__k===f.__k?l=bf(f,l,e,g):typeof f.type=="function"&&x!==void 0?l=x:h&&(l=h.nextSibling),f.__u&=-7);return n.__e=v,l}function A0(e,t,n,o,r){var s,a,c,l,u,p=n.length,d=p,m=0;for(e.__k=Array(r),s=0;s<r;s++)(a=t[s])!=null&&typeof a!="boolean"&&typeof a!="function"?(typeof a=="string"||typeof a=="number"||typeof a=="bigint"||a.constructor==String?a=e.__k[s]=va(null,a,null,null,null):_a(a)?a=e.__k[s]=va(_e,{children:a},null,null,null):a.constructor===void 0&&a.__b>0?a=e.__k[s]=va(a.type,a.props,a.key,a.ref?a.ref:null,a.__v):e.__k[s]=a,l=s+m,a.__=e,a.__b=e.__b+1,c=null,(u=a.__i=I0(a,n,l,d))!=-1&&(d--,(c=n[u])&&(c.__u|=2)),c==null||c.__v==null?(u==-1&&(r>p?m--:r<p&&m++),typeof a.type!="function"&&(a.__u|=4)):u!=l&&(u==l-1?m--:u==l+1?m++:(u>l?m--:m++,a.__u|=4))):e.__k[s]=null;if(d)for(s=0;s<p;s++)(c=n[s])!=null&&(2&c.__u)==0&&(c.__e==o&&(o=Gr(c)),_f(c,c));return o}function bf(e,t,n,o){var r,s;if(typeof e.type=="function"){for(r=e.__k,s=0;r&&s<r.length;s++)r[s]&&(r[s].__=e,t=bf(r[s],t,n,o));return t}e.__e!=t&&(o&&(t&&e.type&&!t.parentNode&&(t=Gr(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function I0(e,t,n,o){var r,s,a,{key:c,type:l}=e,u=t[n],p=u!=null&&(2&u.__u)==0;if(u===null&&c==null||p&&c==u.key&&l==u.type)return n;if(o>(p?1:0)){for(r=n-1,s=n+1;r>=0||s<t.length;)if((u=t[a=r>=0?r--:s++])!=null&&(2&u.__u)==0&&c==u.key&&l==u.type)return a}return-1}function df(e,t,n){t[0]=="-"?e.setProperty(t,n==null?"":n):e[t]=n==null?"":typeof n!="number"||T0.test(t)?n:n+"px"}function ga(e,t,n,o,r){var s,a;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof o=="string"&&(e.style.cssText=o=""),o)for(t in o)n&&t in n||df(e.style,t,"");if(n)for(t in n)o&&n[t]==o[t]||df(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")s=t!=(t=t.replace(gf,"$1")),a=t.toLowerCase(),t=a in e||t=="onFocusOut"||t=="onFocusIn"?a.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+s]=n,n?o?n.u=o.u:(n.u=gu,e.addEventListener(t,s?mu:pu,s)):e.removeEventListener(t,s?mu:pu,s);else{if(r=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n==null?"":n;break e}catch(c){}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function pf(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=gu++;else if(t.t<n.u)return;return n($e.event?$e.event(t):t)}}}function yu(e,t,n,o,r,s,a,c,l,u){var p,d,m,f,h,v,x,g,b,I,R,M,_,N,w,k=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(l=!!(32&n.__u),s=[c=t.__e=n.__e]),(p=$e.__b)&&p(t);e:if(typeof k=="function")try{if(g=t.props,b=k.prototype&&k.prototype.render,I=(p=k.contextType)&&o[p.__c],R=p?I?I.props.value:p.__:o,n.__c?x=(d=t.__c=n.__c).__=d.__E:(b?t.__c=d=new k(g,R):(t.__c=d=new qr(g,R),d.constructor=k,d.render=N0),I&&I.sub(d),d.state||(d.state={}),d.__n=o,m=d.__d=!0,d.__h=[],d._sb=[]),b&&d.__s==null&&(d.__s=d.state),b&&k.getDerivedStateFromProps!=null&&(d.__s==d.state&&(d.__s=ro({},d.__s)),ro(d.__s,k.getDerivedStateFromProps(g,d.__s))),f=d.props,h=d.state,d.__v=t,m)b&&k.getDerivedStateFromProps==null&&d.componentWillMount!=null&&d.componentWillMount(),b&&d.componentDidMount!=null&&d.__h.push(d.componentDidMount);else{if(b&&k.getDerivedStateFromProps==null&&g!==f&&d.componentWillReceiveProps!=null&&d.componentWillReceiveProps(g,R),t.__v==n.__v||!d.__e&&d.shouldComponentUpdate!=null&&d.shouldComponentUpdate(g,d.__s,R)===!1){t.__v!=n.__v&&(d.props=g,d.state=d.__s,d.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(z){z&&(z.__=t)}),ba.push.apply(d.__h,d._sb),d._sb=[],d.__h.length&&a.push(d);break e}d.componentWillUpdate!=null&&d.componentWillUpdate(g,d.__s,R),b&&d.componentDidUpdate!=null&&d.__h.push(function(){d.componentDidUpdate(f,h,v)})}if(d.context=R,d.props=g,d.__P=e,d.__e=!1,M=$e.__r,_=0,b)d.state=d.__s,d.__d=!1,M&&M(t),p=d.render(d.props,d.state,d.context),ba.push.apply(d.__h,d._sb),d._sb=[];else do d.__d=!1,M&&M(t),p=d.render(d.props,d.state,d.context),d.state=d.__s;while(d.__d&&++_<25);d.state=d.__s,d.getChildContext!=null&&(o=ro(ro({},o),d.getChildContext())),b&&!m&&d.getSnapshotBeforeUpdate!=null&&(v=d.getSnapshotBeforeUpdate(f,h)),N=p!=null&&p.type===_e&&p.key==null?wf(p.props.children):p,c=yf(e,_a(N)?N:[N],t,n,o,r,s,a,c,l,u),d.base=t.__e,t.__u&=-161,d.__h.length&&a.push(d),x&&(d.__E=d.__=null)}catch(z){if(t.__v=null,l||s!=null)if(z.then){for(t.__u|=l?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;s[s.indexOf(c)]=null,t.__e=c}else{for(w=s.length;w--;)vu(s[w]);fu(t)}else t.__e=n.__e,t.__k=n.__k,z.then||fu(t);$e.__e(z,t,n)}else s==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=P0(n.__e,t,n,o,r,s,a,l,u);return(p=$e.diffed)&&p(t),128&t.__u?void 0:c}function fu(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(fu))}function xf(e,t,n){for(var o=0;o<n.length;o++)bu(n[o],n[++o],n[++o]);$e.__c&&$e.__c(t,e),e.some(function(r){try{e=r.__h,r.__h=[],e.some(function(s){s.call(r)})}catch(s){$e.__e(s,r.__v)}})}function wf(e){return typeof e!="object"||e==null||e.__b>0?e:_a(e)?e.map(wf):ro({},e)}function P0(e,t,n,o,r,s,a,c,l){var u,p,d,m,f,h,v,x=n.props||ya,{props:g,type:b}=t;if(b=="svg"?r="http://www.w3.org/2000/svg":b=="math"?r="http://www.w3.org/1998/Math/MathML":r||(r="http://www.w3.org/1999/xhtml"),s!=null){for(u=0;u<s.length;u++)if((f=s[u])&&"setAttribute"in f==!!b&&(b?f.localName==b:f.nodeType==3)){e=f,s[u]=null;break}}if(e==null){if(b==null)return document.createTextNode(g);e=document.createElementNS(r,b,g.is&&g),c&&($e.__m&&$e.__m(t,s),c=!1),s=null}if(b==null)x===g||c&&e.data==g||(e.data=g);else{if(s=s&&wa.call(e.childNodes),!c&&s!=null)for(x={},u=0;u<e.attributes.length;u++)x[(f=e.attributes[u]).name]=f.value;for(u in x)f=x[u],u=="dangerouslySetInnerHTML"?d=f:u=="children"||(u in g)||u=="value"&&("defaultValue"in g)||u=="checked"&&("defaultChecked"in g)||ga(e,u,null,f,r);for(u in g)f=g[u],u=="children"?m=f:u=="dangerouslySetInnerHTML"?p=f:u=="value"?h=f:u=="checked"?v=f:c&&typeof f!="function"||x[u]===f||ga(e,u,f,x[u],r);if(p)c||d&&(p.__html==d.__html||p.__html==e.innerHTML)||(e.innerHTML=p.__html),t.__k=[];else if(d&&(e.innerHTML=""),yf(t.type=="template"?e.content:e,_a(m)?m:[m],t,n,o,b=="foreignObject"?"http://www.w3.org/1999/xhtml":r,s,a,s?s[0]:n.__k&&Gr(n,0),c,l),s!=null)for(u=s.length;u--;)vu(s[u]);c||(u="value",b=="progress"&&h==null?e.removeAttribute("value"):h!=null&&(h!==e[u]||b=="progress"&&!h||b=="option"&&h!=x[u])&&ga(e,u,h,x[u],r),u="checked",v!=null&&v!=e[u]&&ga(e,u,v,x[u],r))}return e}function bu(e,t,n){try{if(typeof e=="function"){var o=typeof e.__u=="function";o&&e.__u(),o&&t==null||(e.__u=e(t))}else e.current=t}catch(r){$e.__e(r,n)}}function _f(e,t,n){var o,r;if($e.unmount&&$e.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||bu(o,null,t)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(s){$e.__e(s,t)}o.base=o.__P=null}if(o=e.__k)for(r=0;r<o.length;r++)o[r]&&_f(o[r],t,n||typeof e.type!="function");n||vu(e.__e),e.__c=e.__=e.__e=void 0}function N0(e,t,n){return this.constructor(e,n)}function Qi(e,t,n){var o,r,s,a;t==document&&(t=document.documentElement),$e.__&&$e.__(e,t),r=(o=typeof n=="function")?null:n&&n.__k||t.__k,s=[],a=[],yu(t,e=(!o&&n||t).__k=C0(_e,null,[e]),r||ya,ya,t.namespaceURI,!o&&n?[n]:r?null:t.firstChild?wa.call(t.childNodes):null,s,!o&&n?n:r?r.__e:t.firstChild,o,a),xf(s,e,a)}wa=ba.slice,$e={__e:function(e,t,n,o){for(var r,s,a;t=t.__;)if((r=t.__c)&&!r.__)try{if((s=r.constructor)&&s.getDerivedStateFromError!=null&&(r.setState(s.getDerivedStateFromError(e)),a=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(e,o||{}),a=r.__d),a)return r.__E=r}catch(c){e=c}throw e}},mf=0,hu=function(e){return e!=null&&e.constructor===void 0},qr.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=ro({},this.state),typeof e=="function"&&(e=e(ro({},n),this.props)),e&&ro(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),uf(this))},qr.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),uf(this))},qr.prototype.render=_e,Ao=[],ff=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,hf=function(e,t){return e.__v.__b-t.__v.__b},xa.__r=0,gf=/(PointerCapture)$|Capture$/i,gu=0,pu=pf(!1),mu=pf(!0),k0=0;var Vr,dt,xu,Sf,es=0,Nf=[],mt=$e,{__b:kf,__r:Tf,diffed:Cf,__c:Ef,unmount:Af,__:If}=mt;function ka(e,t){mt.__h&&mt.__h(dt,e,es||t),es=0;var n=dt.__H||(dt.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function A(e){return es=1,z0(zf,e)}function z0(e,t,n){var o=ka(Vr++,2);if(o.t=e,!o.__c&&(o.__=[n?n(t):zf(void 0,t),function(c){var l=o.__N?o.__N[0]:o.__[0],u=o.t(l,c);l!==u&&(o.__N=[u,o.__[1]],o.__c.setState({}))}],o.__c=dt,!dt.__f)){var r=function(c,l,u){if(!o.__c.__H)return!0;var p=o.__c.__H.__.filter(function(m){return m.__c});if(p.every(function(m){return!m.__N}))return!s||s.call(this,c,l,u);var d=o.__c.props!==c;return p.some(function(m){if(m.__N){var f=m.__[0];m.__=m.__N,m.__N=void 0,f!==m.__[0]&&(d=!0)}}),s&&s.call(this,c,l,u)||d};dt.__f=!0;var s=dt.shouldComponentUpdate,a=dt.componentWillUpdate;dt.componentWillUpdate=function(c,l,u){if(this.__e){var p=s;s=void 0,r(c,l,u),s=p}a&&a.call(this,c,l,u)},dt.shouldComponentUpdate=r}return o.__N||o.__}function H(e,t){var n=ka(Vr++,3);!mt.__s&&_u(n.__H,t)&&(n.__=e,n.u=t,dt.__H.__h.push(n))}function _n(e,t){var n=ka(Vr++,4);!mt.__s&&_u(n.__H,t)&&(n.__=e,n.u=t,dt.__h.push(n))}function L(e){return es=5,Be(function(){return{current:e}},[])}function Be(e,t){var n=ka(Vr++,7);return _u(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function j(e,t){return es=8,Be(function(){return e},t)}function R0(){for(var e;e=Nf.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(Sa),t.__h.some(wu),t.__h=[]}catch(n){t.__h=[],mt.__e(n,e.__v)}}}mt.__b=function(e){dt=null,kf&&kf(e)},mt.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),If&&If(e,t)},mt.__r=function(e){Tf&&Tf(e),Vr=0;var t=(dt=e.__c).__H;t&&(xu===dt?(t.__h=[],dt.__h=[],t.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.some(Sa),t.__h.some(wu),t.__h=[],Vr=0)),xu=dt},mt.diffed=function(e){Cf&&Cf(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Nf.push(t)!==1&&Sf===mt.requestAnimationFrame||((Sf=mt.requestAnimationFrame)||M0)(R0)),t.__H.__.some(function(n){n.u&&(n.__H=n.u),n.u=void 0})),xu=dt=null},mt.__c=function(e,t){t.some(function(n){try{n.__h.some(Sa),n.__h=n.__h.filter(function(o){return!o.__||wu(o)})}catch(o){t.some(function(r){r.__h&&(r.__h=[])}),t=[],mt.__e(o,n.__v)}}),Ef&&Ef(e,t)},mt.unmount=function(e){Af&&Af(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(o){try{Sa(o)}catch(r){t=r}}),n.__H=void 0,t&&mt.__e(t,n.__v))};var Pf=typeof requestAnimationFrame=="function";function M0(e){var t,n=function(){clearTimeout(o),Pf&&cancelAnimationFrame(t),setTimeout(e)},o=setTimeout(n,35);Pf&&(t=requestAnimationFrame(n))}function Sa(e){var t=dt,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),dt=t}function wu(e){var t=dt;e.__c=e.__(),dt=t}function _u(e,t){return!e||e.length!==t.length||t.some(function(n,o){return n!==e[o]})}function zf(e,t){return typeof t=="function"?t(e):t}var xR=Object.freeze({status:"aborted"});function B(e,t,n){function o(c,l){if(!c._zod)Object.defineProperty(c,"_zod",{value:{def:l,constr:a,traits:new Set},enumerable:!1});if(c._zod.traits.has(e))return;c._zod.traits.add(e),t(c,l);let u=a.prototype,p=Object.keys(u);for(let d=0;d<p.length;d++){let m=p[d];if(!(m in c))c[m]=u[m].bind(c)}}let r=n?.Parent??Object;class s extends r{}Object.defineProperty(s,"name",{value:e});function a(c){var l;let u=n?.Parent?new s:this;o(u,c),(l=u._zod).deferred??(l.deferred=[]);for(let p of u._zod.deferred)p();return u}return Object.defineProperty(a,"init",{value:o}),Object.defineProperty(a,Symbol.hasInstance,{value:(c)=>{if(n?.Parent&&c instanceof n.Parent)return!0;return c?._zod?.traits?.has(e)}}),Object.defineProperty(a,"name",{value:e}),a}var wR=Symbol("zod_brand");class io extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class ts extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`);this.name="ZodEncodeError"}}var Ta={};function Sn(e){if(e)Object.assign(Ta,e);return Ta}function Ea(e){let t=Object.values(e).filter((o)=>typeof o==="number");return Object.entries(e).filter(([o,r])=>t.indexOf(+o)===-1).map(([o,r])=>r)}function ku(e,t="|"){return e.map((n)=>Au(n)).join(t)}function ns(e,t){if(typeof t==="bigint")return t.toString();return t}function os(e){return{get value(){{let n=e();return Object.defineProperty(this,"value",{value:n}),n}throw Error("cached value already set")}}}function Aa(e){return e===null||e===void 0}function Ia(e){let t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}function Mf(e,t){let n=(e.toString().split(".")[1]||"").length,o=t.toString(),r=(o.split(".")[1]||"").length;if(r===0&&/\d?e-\d?/.test(o)){let l=o.match(/\d?e-(\d?)/);if(l?.[1])r=Number.parseInt(l[1])}let s=n>r?n:r,a=Number.parseInt(e.toFixed(s).replace(".","")),c=Number.parseInt(t.toFixed(s).replace(".",""));return a%c/10**s}var Rf=Symbol("evaluating");function De(e,t,n){let o=void 0;Object.defineProperty(e,t,{get(){if(o===Rf)return;if(o===void 0)o=Rf,o=n();return o},set(r){Object.defineProperty(e,t,{value:r})},configurable:!0})}function ur(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function Io(...e){let t={};for(let n of e){let o=Object.getOwnPropertyDescriptors(n);Object.assign(t,o)}return Object.defineProperties({},t)}function Tu(e){return JSON.stringify(e)}function $f(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Cu="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function Xr(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}var Of=os(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function dr(e){if(Xr(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;if(typeof t!=="function")return!0;let n=t.prototype;if(Xr(n)===!1)return!1;if(Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")===!1)return!1;return!0}function Eu(e){if(dr(e))return{...e};if(Array.isArray(e))return[...e];return e}var Lf=new Set(["string","number","symbol"]);function Po(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Wn(e,t,n){let o=new e._zod.constr(t??e._zod.def);if(!t||n?.parent)o._zod.parent=e;return o}function ee(e){let t=e;if(!t)return{};if(typeof t==="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}if(delete t.message,typeof t.error==="string")return{...t,error:()=>t.error};return t}function Au(e){if(typeof e==="bigint")return e.toString()+"n";if(typeof e==="string")return`"${e}"`;return`${e}`}function Df(e){return Object.keys(e).filter((t)=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var Ff={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function $0(e,t){let n=e._zod.def,o=n.checks;if(o&&o.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let s=Io(e._zod.def,{get shape(){let a={};for(let c in t){if(!(c in n.shape))throw Error(`Unrecognized key: "${c}"`);if(!t[c])continue;a[c]=n.shape[c]}return ur(this,"shape",a),a},checks:[]});return Wn(e,s)}function O0(e,t){let n=e._zod.def,o=n.checks;if(o&&o.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let s=Io(e._zod.def,{get shape(){let a={...e._zod.def.shape};for(let c in t){if(!(c in n.shape))throw Error(`Unrecognized key: "${c}"`);if(!t[c])continue;delete a[c]}return ur(this,"shape",a),a},checks:[]});return Wn(e,s)}function L0(e,t){if(!dr(t))throw Error("Invalid input to extend: expected a plain object");let n=e._zod.def.checks;if(n&&n.length>0){let s=e._zod.def.shape;for(let a in t)if(Object.getOwnPropertyDescriptor(s,a)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let r=Io(e._zod.def,{get shape(){let s={...e._zod.def.shape,...t};return ur(this,"shape",s),s}});return Wn(e,r)}function D0(e,t){if(!dr(t))throw Error("Invalid input to safeExtend: expected a plain object");let n=Io(e._zod.def,{get shape(){let o={...e._zod.def.shape,...t};return ur(this,"shape",o),o}});return Wn(e,n)}function F0(e,t){let n=Io(e._zod.def,{get shape(){let o={...e._zod.def.shape,...t._zod.def.shape};return ur(this,"shape",o),o},get catchall(){return t._zod.def.catchall},checks:[]});return Wn(e,n)}function B0(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(".partial() cannot be used on object schemas containing refinements");let a=Io(t._zod.def,{get shape(){let c=t._zod.def.shape,l={...c};if(n)for(let u in n){if(!(u in c))throw Error(`Unrecognized key: "${u}"`);if(!n[u])continue;l[u]=e?new e({type:"optional",innerType:c[u]}):c[u]}else for(let u in c)l[u]=e?new e({type:"optional",innerType:c[u]}):c[u];return ur(this,"shape",l),l},checks:[]});return Wn(t,a)}function H0(e,t,n){let o=Io(t._zod.def,{get shape(){let r=t._zod.def.shape,s={...r};if(n)for(let a in n){if(!(a in s))throw Error(`Unrecognized key: "${a}"`);if(!n[a])continue;s[a]=new e({type:"nonoptional",innerType:r[a]})}else for(let a in r)s[a]=new e({type:"nonoptional",innerType:r[a]});return ur(this,"shape",s),s}});return Wn(t,o)}function pr(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function No(e,t){return t.map((n)=>{var o;return(o=n).path??(o.path=[]),n.path.unshift(e),n})}function Ca(e){return typeof e==="string"?e:e?.message}function qn(e,t,n){let o={...e,path:e.path??[]};if(!e.message){let r=Ca(e.inst?._zod.def?.error?.(e))??Ca(t?.error?.(e))??Ca(n.customError?.(e))??Ca(n.localeError?.(e))??"Invalid input";o.message=r}if(delete o.inst,delete o.continue,!t?.reportInput)delete o.input;return o}function Pa(e){if(Array.isArray(e))return"array";if(typeof e==="string")return"string";return"unknown"}function Bf(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let n=e;if(n&&Object.getPrototypeOf(n)!==Object.prototype&&"constructor"in n&&n.constructor)return n.constructor.name}}return t}function mr(...e){let[t,n,o]=e;if(typeof t==="string")return{message:t,code:"custom",input:n,inst:o};return{...t}}var Hf=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,ns,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Na=B("$ZodError",Hf),Iu=B("$ZodError",Hf,{Parent:Error});function jf(e,t=(n)=>n.message){let n={},o=[];for(let r of e.issues)if(r.path.length>0)n[r.path[0]]=n[r.path[0]]||[],n[r.path[0]].push(t(r));else o.push(t(r));return{formErrors:o,fieldErrors:n}}function Uf(e,t=(n)=>n.message){let n={_errors:[]},o=(r)=>{for(let s of r.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map((a)=>o({issues:a}));else if(s.code==="invalid_key")o({issues:s.issues});else if(s.code==="invalid_element")o({issues:s.issues});else if(s.path.length===0)n._errors.push(t(s));else{let a=n,c=0;while(c<s.path.length){let l=s.path[c];if(c!==s.path.length-1)a[l]=a[l]||{_errors:[]};else a[l]=a[l]||{_errors:[]},a[l]._errors.push(t(s));a=a[l],c++}}};return o(e),n}var za=(e)=>(t,n,o,r)=>{let s=o?Object.assign(o,{async:!1}):{async:!1},a=t._zod.run({value:n,issues:[]},s);if(a instanceof Promise)throw new io;if(a.issues.length){let c=new(r?.Err??e)(a.issues.map((l)=>qn(l,s,Sn())));throw Cu(c,r?.callee),c}return a.value};var Ra=(e)=>async(t,n,o,r)=>{let s=o?Object.assign(o,{async:!0}):{async:!0},a=t._zod.run({value:n,issues:[]},s);if(a instanceof Promise)a=await a;if(a.issues.length){let c=new(r?.Err??e)(a.issues.map((l)=>qn(l,s,Sn())));throw Cu(c,r?.callee),c}return a.value};var rs=(e)=>(t,n,o)=>{let r=o?{...o,async:!1}:{async:!1},s=t._zod.run({value:n,issues:[]},r);if(s instanceof Promise)throw new io;return s.issues.length?{success:!1,error:new(e??Na)(s.issues.map((a)=>qn(a,r,Sn())))}:{success:!0,data:s.value}},is=rs(Iu),ss=(e)=>async(t,n,o)=>{let r=o?Object.assign(o,{async:!0}):{async:!0},s=t._zod.run({value:n,issues:[]},r);if(s instanceof Promise)s=await s;return s.issues.length?{success:!1,error:new e(s.issues.map((a)=>qn(a,r,Sn())))}:{success:!0,data:s.value}},Ma=ss(Iu),Zf=(e)=>(t,n,o)=>{let r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return za(e)(t,n,r)};var Wf=(e)=>(t,n,o)=>za(e)(t,n,o);var qf=(e)=>async(t,n,o)=>{let r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return Ra(e)(t,n,r)};var Gf=(e)=>async(t,n,o)=>Ra(e)(t,n,o);var Vf=(e)=>(t,n,o)=>{let r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return rs(e)(t,n,r)};var Xf=(e)=>(t,n,o)=>rs(e)(t,n,o);var Kf=(e)=>async(t,n,o)=>{let r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return ss(e)(t,n,r)};var Jf=(e)=>async(t,n,o)=>ss(e)(t,n,o);var Yf=/^[cC][^\s-]{8,}$/,Qf=/^[0-9a-z]+$/,eh=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,th=/^[0-9a-vA-V]{20}$/,nh=/^[A-Za-z0-9]{27}$/,oh=/^[a-zA-Z0-9_-]{21}$/,rh=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var ih=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Pu=(e)=>{if(!e)return/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)};var sh=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var U0="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function ah(){return new RegExp(U0,"u")}var ch=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,lh=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;var uh=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,dh=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,ph=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Nu=/^[A-Za-z0-9_-]*$/;var mh=/^\+[1-9]\d{6,14}$/,fh="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",hh=new RegExp(`^${fh}$`);function gh(e){return typeof e.precision==="number"?e.precision===-1?"(?:[01]\\d|2[0-3]):[0-5]\\d":e.precision===0?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d":`(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{${e.precision}}`:"(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?"}function vh(e){return new RegExp(`^${gh(e)}$`)}function yh(e){let t=gh({precision:e.precision}),n=["Z"];if(e.local)n.push("");if(e.offset)n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let o=`${t}(?:${n.join("|")})`;return new RegExp(`^${fh}T(?:${o})$`)}var bh=(e)=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)};var xh=/^-?\d+$/,zu=/^-?\d+(?:\.\d+)?$/,wh=/^(?:true|false)$/i,_h=/^null$/i;var Sh=/^undefined$/i;var kh=/^[^A-Z]*$/,Th=/^[^a-z]*$/;var Pt=B("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Ch={number:"number",bigint:"bigint",object:"date"},Ru=B("$ZodCheckLessThan",(e,t)=>{Pt.init(e,t);let n=Ch[typeof t.value];e._zod.onattach.push((o)=>{let r=o._zod.bag,s=(t.inclusive?r.maximum:r.exclusiveMaximum)??Number.POSITIVE_INFINITY;if(t.value<s)if(t.inclusive)r.maximum=t.value;else r.exclusiveMaximum=t.value}),e._zod.check=(o)=>{if(t.inclusive?o.value<=t.value:o.value<t.value)return;o.issues.push({origin:n,code:"too_big",maximum:typeof t.value==="object"?t.value.getTime():t.value,input:o.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Mu=B("$ZodCheckGreaterThan",(e,t)=>{Pt.init(e,t);let n=Ch[typeof t.value];e._zod.onattach.push((o)=>{let r=o._zod.bag,s=(t.inclusive?r.minimum:r.exclusiveMinimum)??Number.NEGATIVE_INFINITY;if(t.value>s)if(t.inclusive)r.minimum=t.value;else r.exclusiveMinimum=t.value}),e._zod.check=(o)=>{if(t.inclusive?o.value>=t.value:o.value>t.value)return;o.issues.push({origin:n,code:"too_small",minimum:typeof t.value==="object"?t.value.getTime():t.value,input:o.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Eh=B("$ZodCheckMultipleOf",(e,t)=>{Pt.init(e,t),e._zod.onattach.push((n)=>{var o;(o=n._zod.bag).multipleOf??(o.multipleOf=t.value)}),e._zod.check=(n)=>{if(typeof n.value!==typeof t.value)throw Error("Cannot mix number and bigint in multiple_of check.");if(typeof n.value==="bigint"?n.value%t.value===BigInt(0):Mf(n.value,t.value)===0)return;n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Ah=B("$ZodCheckNumberFormat",(e,t)=>{Pt.init(e,t),t.format=t.format||"float64";let n=t.format?.includes("int"),o=n?"int":"number",[r,s]=Ff[t.format];e._zod.onattach.push((a)=>{let c=a._zod.bag;if(c.format=t.format,c.minimum=r,c.maximum=s,n)c.pattern=xh}),e._zod.check=(a)=>{let c=a.value;if(n){if(!Number.isInteger(c)){a.issues.push({expected:o,format:t.format,code:"invalid_type",continue:!1,input:c,inst:e});return}if(!Number.isSafeInteger(c)){if(c>0)a.issues.push({input:c,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:o,inclusive:!0,continue:!t.abort});else a.issues.push({input:c,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:o,inclusive:!0,continue:!t.abort});return}}if(c<r)a.issues.push({origin:"number",input:c,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!t.abort});if(c>s)a.issues.push({origin:"number",input:c,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}});var Ih=B("$ZodCheckMaxLength",(e,t)=>{var n;Pt.init(e,t),(n=e._zod.def).when??(n.when=(o)=>{let r=o.value;return!Aa(r)&&r.length!==void 0}),e._zod.onattach.push((o)=>{let r=o._zod.bag.maximum??Number.POSITIVE_INFINITY;if(t.maximum<r)o._zod.bag.maximum=t.maximum}),e._zod.check=(o)=>{let r=o.value;if(r.length<=t.maximum)return;let a=Pa(r);o.issues.push({origin:a,code:"too_big",maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Ph=B("$ZodCheckMinLength",(e,t)=>{var n;Pt.init(e,t),(n=e._zod.def).when??(n.when=(o)=>{let r=o.value;return!Aa(r)&&r.length!==void 0}),e._zod.onattach.push((o)=>{let r=o._zod.bag.minimum??Number.NEGATIVE_INFINITY;if(t.minimum>r)o._zod.bag.minimum=t.minimum}),e._zod.check=(o)=>{let r=o.value;if(r.length>=t.minimum)return;let a=Pa(r);o.issues.push({origin:a,code:"too_small",minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Nh=B("$ZodCheckLengthEquals",(e,t)=>{var n;Pt.init(e,t),(n=e._zod.def).when??(n.when=(o)=>{let r=o.value;return!Aa(r)&&r.length!==void 0}),e._zod.onattach.push((o)=>{let r=o._zod.bag;r.minimum=t.length,r.maximum=t.length,r.length=t.length}),e._zod.check=(o)=>{let r=o.value,s=r.length;if(s===t.length)return;let a=Pa(r),c=s>t.length;o.issues.push({origin:a,...c?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:o.value,inst:e,continue:!t.abort})}}),as=B("$ZodCheckStringFormat",(e,t)=>{var n,o;if(Pt.init(e,t),e._zod.onattach.push((r)=>{let s=r._zod.bag;if(s.format=t.format,t.pattern)s.patterns??(s.patterns=new Set),s.patterns.add(t.pattern)}),t.pattern)(n=e._zod).check??(n.check=(r)=>{if(t.pattern.lastIndex=0,t.pattern.test(r.value))return;r.issues.push({origin:"string",code:"invalid_format",format:t.format,input:r.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})});else(o=e._zod).check??(o.check=()=>{})}),zh=B("$ZodCheckRegex",(e,t)=>{as.init(e,t),e._zod.check=(n)=>{if(t.pattern.lastIndex=0,t.pattern.test(n.value))return;n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Rh=B("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=kh),as.init(e,t)}),Mh=B("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Th),as.init(e,t)}),$h=B("$ZodCheckIncludes",(e,t)=>{Pt.init(e,t);let n=Po(t.includes),o=new RegExp(typeof t.position==="number"?`^.{${t.position}}${n}`:n);t.pattern=o,e._zod.onattach.push((r)=>{let s=r._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(o)}),e._zod.check=(r)=>{if(r.value.includes(t.includes,t.position))return;r.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:r.value,inst:e,continue:!t.abort})}}),Oh=B("$ZodCheckStartsWith",(e,t)=>{Pt.init(e,t);let n=new RegExp(`^${Po(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.onattach.push((o)=>{let r=o._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(n)}),e._zod.check=(o)=>{if(o.value.startsWith(t.prefix))return;o.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:o.value,inst:e,continue:!t.abort})}}),Lh=B("$ZodCheckEndsWith",(e,t)=>{Pt.init(e,t);let n=new RegExp(`.*${Po(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.onattach.push((o)=>{let r=o._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(n)}),e._zod.check=(o)=>{if(o.value.endsWith(t.suffix))return;o.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:o.value,inst:e,continue:!t.abort})}});var Dh=B("$ZodCheckOverwrite",(e,t)=>{Pt.init(e,t),e._zod.check=(n)=>{n.value=t.tx(n.value)}});class $u{constructor(e=[]){if(this.content=[],this.indent=0,this)this.args=e}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e==="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let n=e.split(`
|
|
23
|
-
`).filter((s)=>s),o=Math.min(...n.map((s)=>s.length-s.trimStart().length)),
|
|
24
|
-
`))}}var
|
|
25
|
-
if (${
|
|
26
|
-
if (${
|
|
27
|
-
payload.issues = payload.issues.concat(${
|
|
22
|
+
`}}};ii.tableCaption={filter:["caption"],replacement:()=>""};ii.tableColgroup={filter:["colgroup","col"],replacement:()=>""};ii.tableSection={filter:["thead","tbody","tfoot"],replacement:function(e){return e}};function m1(e){var t=e.parentNode;return t.nodeName==="THEAD"||t.firstChild===e&&(t.nodeName==="TABLE"||h1(t))&&d1.call(e.childNodes,function(n){return n.nodeName==="TH"})}function h1(e){var t=e.previousSibling;return e.nodeName==="TBODY"&&(!t||t.nodeName==="THEAD"&&/^\s*$/i.test(t.textContent))}function o0(e,t=null,n=null){if(n===null)n=u1.call(t.parentNode.childNodes,t);var o=" ";if(n===0)o="| ";let i=e.trim().replace(/\n\r/g,"<br>").replace(/\n/g,"<br>");i=i.replace(/\|+/g,"\\|");while(i.length<3)i+=" ";if(t)i=v1(i,t," ");return o+i+" |"}function r0(e){if(!e.childNodes)return!1;for(let t=0;t<e.childNodes.length;t++){let n=e.childNodes[t];if(n.nodeName==="TABLE")return!0;if(r0(n))return!0}return!1}var Nm=(e,t)=>{if(!e.childNodes)return!1;for(let n=0;n<e.childNodes.length;n++){let o=e.childNodes[n];if(t==="code"&&Pm&&Pm(o))return!0;if(t.includes(o.nodeName))return!0;if(Nm(o,t))return!0}return!1},i0=(e,t)=>{let n=["UL","OL","H1","H2","H3","H4","H5","H6","HR","BLOCKQUOTE"];if(t.preserveNestedTables)n.push("TABLE");return Nm(e,"code")||Nm(e,n)};function Mm(e){let t=JS.get(e);if(t!==void 0)return t;let n=g1(e);return JS.set(e,n),n}function g1(e){if(!e)return!0;if(!e.rows)return!0;if(e.rows.length===1&&e.rows[0].childNodes.length<=1)return!0;if(r0(e))return!0;return!1}function y1(e){let t=e.parentNode;while(t.nodeName!=="DIV")if(t=t.parentNode,!t)return null;return t}function s0(e){let t=e.parentNode;while(t.nodeName!=="TABLE")if(t=t.parentNode,!t)return null;return t}function v1(e,t,n){let o=t.getAttribute("colspan")||1;for(let i=1;i<o;i++)e+=" | "+n.repeat(3);return e}function a0(e){let t=0;for(let n=0;n<e.rows.length;n++){let i=e.rows[n].childNodes.length;if(i>t)t=i}return t}function l0(e){Pm=e.isCodeBlock,e0=e.options,e.keep(function(n){if(n.nodeName==="TABLE"&&i0(n,e.options))return!0;return!1});for(var t in ii)e.addRule(t,ii[t])}function c0(e){e.addRule("taskListItems",{filter:function(t){let n=t.parentNode,o=n.parentNode;return t.type==="checkbox"&&(n.nodeName==="LI"||n.nodeName==="LABEL"&&o&&o.nodeName==="LI")},replacement:function(t,n){return(n.checked?"[x]":"[ ]")+" "}})}function b1(e){e.use([YS,QS,l0,c0])}u0.gfm=b1;u0.highlightedCodeBlock=YS;u0.strikethrough=QS;u0.tables=l0;u0.taskListItems=c0});if(typeof crypto<"u"&&typeof crypto.randomUUID!=="function")crypto.randomUUID=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e)=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)});var gc,ct,Xg,wp,Dr,qg,Jg,Yg,Qg,kp,vp,bp,cE,fc={},mc=[],uE=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,yc=Array.isArray;function dr(e,t){for(var n in t)e[n]=t[n];return e}function Sp(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function dE(e,t,n){var o,i,s,a={};for(s in t)s=="key"?o=t[s]:s=="ref"?i=t[s]:a[s]=t[s];if(arguments.length>2&&(a.children=arguments.length>3?gc.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(s in e.defaultProps)a[s]===void 0&&(a[s]=e.defaultProps[s]);return pc(e,a,o,i,null)}function pc(e,t,n,o,i){var s={type:e,props:t,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:i==null?++Xg:i,__i:-1,__u:0};return i==null&&ct.vnode!=null&&ct.vnode(s),s}function be(e){return e.children}function Br(e,t){this.props=e,this.context=t}function gs(e,t){if(t==null)return e.__?gs(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?gs(e):null}function pE(e){if(e.__P&&e.__d){var t=e.__v,n=t.__e,o=[],i=[],s=dr({},t);s.__v=t.__v+1,ct.vnode&&ct.vnode(s),_p(e.__P,s,t,e.__n,e.__P.namespaceURI,32&t.__u?[n]:null,o,n==null?gs(t):n,!!(32&t.__u),i),s.__v=t.__v,s.__.__k[s.__i]=s,oy(o,s,i),t.__e=t.__=null,s.__e!=n&&ey(s)}}function ey(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),ey(e)}function Gg(e){(!e.__d&&(e.__d=!0)&&Dr.push(e)&&!hc.__r++||qg!=ct.debounceRendering)&&((qg=ct.debounceRendering)||Jg)(hc)}function hc(){try{for(var e,t=1;Dr.length;)Dr.length>t&&Dr.sort(Yg),e=Dr.shift(),t=Dr.length,pE(e)}finally{Dr.length=hc.__r=0}}function ty(e,t,n,o,i,s,a,l,c,u,d){var p,f,m,h,g,y,b,x=o&&o.__k||mc,C=t.length;for(c=fE(n,t,x,c,C),p=0;p<C;p++)(m=n.__k[p])!=null&&(f=m.__i!=-1&&x[m.__i]||fc,m.__i=p,y=_p(e,m,f,i,s,a,l,c,u,d),h=m.__e,m.ref&&f.ref!=m.ref&&(f.ref&&Cp(f.ref,null,m),d.push(m.ref,m.__c||h,m)),g==null&&h!=null&&(g=h),(b=!!(4&m.__u))||f.__k===m.__k?c=ny(m,c,e,b):typeof m.type=="function"&&y!==void 0?c=y:h&&(c=h.nextSibling),m.__u&=-7);return n.__e=g,c}function fE(e,t,n,o,i){var s,a,l,c,u,d=n.length,p=d,f=0;for(e.__k=Array(i),s=0;s<i;s++)(a=t[s])!=null&&typeof a!="boolean"&&typeof a!="function"?(typeof a=="string"||typeof a=="number"||typeof a=="bigint"||a.constructor==String?a=e.__k[s]=pc(null,a,null,null,null):yc(a)?a=e.__k[s]=pc(be,{children:a},null,null,null):a.constructor===void 0&&a.__b>0?a=e.__k[s]=pc(a.type,a.props,a.key,a.ref?a.ref:null,a.__v):e.__k[s]=a,c=s+f,a.__=e,a.__b=e.__b+1,l=null,(u=a.__i=mE(a,n,c,p))!=-1&&(p--,(l=n[u])&&(l.__u|=2)),l==null||l.__v==null?(u==-1&&(i>d?f--:i<d&&f++),typeof a.type!="function"&&(a.__u|=4)):u!=c&&(u==c-1?f--:u==c+1?f++:(u>c?f--:f++,a.__u|=4))):e.__k[s]=null;if(p)for(s=0;s<d;s++)(l=n[s])!=null&&(2&l.__u)==0&&(l.__e==o&&(o=gs(l)),iy(l,l));return o}function ny(e,t,n,o){var i,s;if(typeof e.type=="function"){for(i=e.__k,s=0;i&&s<i.length;s++)i[s]&&(i[s].__=e,t=ny(i[s],t,n,o));return t}e.__e!=t&&(o&&(t&&e.type&&!t.parentNode&&(t=gs(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function mE(e,t,n,o){var i,s,a,{key:l,type:c}=e,u=t[n],d=u!=null&&(2&u.__u)==0;if(u===null&&l==null||d&&l==u.key&&c==u.type)return n;if(o>(d?1:0)){for(i=n-1,s=n+1;i>=0||s<t.length;)if((u=t[a=i>=0?i--:s++])!=null&&(2&u.__u)==0&&l==u.key&&c==u.type)return a}return-1}function Kg(e,t,n){t[0]=="-"?e.setProperty(t,n==null?"":n):e[t]=n==null?"":typeof n!="number"||uE.test(t)?n:n+"px"}function dc(e,t,n,o,i){var s,a;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof o=="string"&&(e.style.cssText=o=""),o)for(t in o)n&&t in n||Kg(e.style,t,"");if(n)for(t in n)o&&n[t]==o[t]||Kg(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")s=t!=(t=t.replace(Qg,"$1")),a=t.toLowerCase(),t=a in e||t=="onFocusOut"||t=="onFocusIn"?a.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+s]=n,n?o?n.u=o.u:(n.u=kp,e.addEventListener(t,s?bp:vp,s)):e.removeEventListener(t,s?bp:vp,s);else{if(i=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n==null?"":n;break e}catch(l){}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Vg(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=kp++;else if(t.t<n.u)return;return n(ct.event?ct.event(t):t)}}}function _p(e,t,n,o,i,s,a,l,c,u){var d,p,f,m,h,g,y,b,x,C,v,k,_,I,w,P=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(c=!!(32&n.__u),s=[l=t.__e=n.__e]),(d=ct.__b)&&d(t);e:if(typeof P=="function")try{if(b=t.props,x=P.prototype&&P.prototype.render,C=(d=P.contextType)&&o[d.__c],v=d?C?C.props.value:d.__:o,n.__c?y=(p=t.__c=n.__c).__=p.__E:(x?t.__c=p=new P(b,v):(t.__c=p=new Br(b,v),p.constructor=P,p.render=gE),C&&C.sub(p),p.state||(p.state={}),p.__n=o,f=p.__d=!0,p.__h=[],p._sb=[]),x&&p.__s==null&&(p.__s=p.state),x&&P.getDerivedStateFromProps!=null&&(p.__s==p.state&&(p.__s=dr({},p.__s)),dr(p.__s,P.getDerivedStateFromProps(b,p.__s))),m=p.props,h=p.state,p.__v=t,f)x&&P.getDerivedStateFromProps==null&&p.componentWillMount!=null&&p.componentWillMount(),x&&p.componentDidMount!=null&&p.__h.push(p.componentDidMount);else{if(x&&P.getDerivedStateFromProps==null&&b!==m&&p.componentWillReceiveProps!=null&&p.componentWillReceiveProps(b,v),t.__v==n.__v||!p.__e&&p.shouldComponentUpdate!=null&&p.shouldComponentUpdate(b,p.__s,v)===!1){t.__v!=n.__v&&(p.props=b,p.state=p.__s,p.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(L){L&&(L.__=t)}),mc.push.apply(p.__h,p._sb),p._sb=[],p.__h.length&&a.push(p);break e}p.componentWillUpdate!=null&&p.componentWillUpdate(b,p.__s,v),x&&p.componentDidUpdate!=null&&p.__h.push(function(){p.componentDidUpdate(m,h,g)})}if(p.context=v,p.props=b,p.__P=e,p.__e=!1,k=ct.__r,_=0,x)p.state=p.__s,p.__d=!1,k&&k(t),d=p.render(p.props,p.state,p.context),mc.push.apply(p.__h,p._sb),p._sb=[];else do p.__d=!1,k&&k(t),d=p.render(p.props,p.state,p.context),p.state=p.__s;while(p.__d&&++_<25);p.state=p.__s,p.getChildContext!=null&&(o=dr(dr({},o),p.getChildContext())),x&&!f&&p.getSnapshotBeforeUpdate!=null&&(g=p.getSnapshotBeforeUpdate(m,h)),I=d!=null&&d.type===be&&d.key==null?ry(d.props.children):d,l=ty(e,yc(I)?I:[I],t,n,o,i,s,a,l,c,u),p.base=t.__e,t.__u&=-161,p.__h.length&&a.push(p),y&&(p.__E=p.__=null)}catch(L){if(t.__v=null,c||s!=null)if(L.then){for(t.__u|=c?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;s[s.indexOf(l)]=null,t.__e=l}else{for(w=s.length;w--;)Sp(s[w]);xp(t)}else t.__e=n.__e,t.__k=n.__k,L.then||xp(t);ct.__e(L,t,n)}else s==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):l=t.__e=hE(n.__e,t,n,o,i,s,a,c,u);return(d=ct.diffed)&&d(t),128&t.__u?void 0:l}function xp(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(xp))}function oy(e,t,n){for(var o=0;o<n.length;o++)Cp(n[o],n[++o],n[++o]);ct.__c&&ct.__c(t,e),e.some(function(i){try{e=i.__h,i.__h=[],e.some(function(s){s.call(i)})}catch(s){ct.__e(s,i.__v)}})}function ry(e){return typeof e!="object"||e==null||e.__b>0?e:yc(e)?e.map(ry):dr({},e)}function hE(e,t,n,o,i,s,a,l,c){var u,d,p,f,m,h,g,y=n.props||fc,{props:b,type:x}=t;if(x=="svg"?i="http://www.w3.org/2000/svg":x=="math"?i="http://www.w3.org/1998/Math/MathML":i||(i="http://www.w3.org/1999/xhtml"),s!=null){for(u=0;u<s.length;u++)if((m=s[u])&&"setAttribute"in m==!!x&&(x?m.localName==x:m.nodeType==3)){e=m,s[u]=null;break}}if(e==null){if(x==null)return document.createTextNode(b);e=document.createElementNS(i,x,b.is&&b),l&&(ct.__m&&ct.__m(t,s),l=!1),s=null}if(x==null)y===b||l&&e.data==b||(e.data=b);else{if(s=s&&gc.call(e.childNodes),!l&&s!=null)for(y={},u=0;u<e.attributes.length;u++)y[(m=e.attributes[u]).name]=m.value;for(u in y)m=y[u],u=="dangerouslySetInnerHTML"?p=m:u=="children"||(u in b)||u=="value"&&("defaultValue"in b)||u=="checked"&&("defaultChecked"in b)||dc(e,u,null,m,i);for(u in b)m=b[u],u=="children"?f=m:u=="dangerouslySetInnerHTML"?d=m:u=="value"?h=m:u=="checked"?g=m:l&&typeof m!="function"||y[u]===m||dc(e,u,m,y[u],i);if(d)l||p&&(d.__html==p.__html||d.__html==e.innerHTML)||(e.innerHTML=d.__html),t.__k=[];else if(p&&(e.innerHTML=""),ty(t.type=="template"?e.content:e,yc(f)?f:[f],t,n,o,x=="foreignObject"?"http://www.w3.org/1999/xhtml":i,s,a,s?s[0]:n.__k&&gs(n,0),l,c),s!=null)for(u=s.length;u--;)Sp(s[u]);l||(u="value",x=="progress"&&h==null?e.removeAttribute("value"):h!=null&&(h!==e[u]||x=="progress"&&!h||x=="option"&&h!=y[u])&&dc(e,u,h,y[u],i),u="checked",g!=null&&g!=e[u]&&dc(e,u,g,y[u],i))}return e}function Cp(e,t,n){try{if(typeof e=="function"){var o=typeof e.__u=="function";o&&e.__u(),o&&t==null||(e.__u=e(t))}else e.current=t}catch(i){ct.__e(i,n)}}function iy(e,t,n){var o,i;if(ct.unmount&&ct.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||Cp(o,null,t)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(s){ct.__e(s,t)}o.base=o.__P=null}if(o=e.__k)for(i=0;i<o.length;i++)o[i]&&iy(o[i],t,n||typeof e.type!="function");n||Sp(e.__e),e.__c=e.__=e.__e=void 0}function gE(e,t,n){return this.constructor(e,n)}function Ea(e,t,n){var o,i,s,a;t==document&&(t=document.documentElement),ct.__&&ct.__(e,t),i=(o=typeof n=="function")?null:n&&n.__k||t.__k,s=[],a=[],_p(t,e=(!o&&n||t).__k=dE(be,null,[e]),i||fc,fc,t.namespaceURI,!o&&n?[n]:i?null:t.firstChild?gc.call(t.childNodes):null,s,!o&&n?n:i?i.__e:t.firstChild,o,a),oy(s,e,a)}gc=mc.slice,ct={__e:function(e,t,n,o){for(var i,s,a;t=t.__;)if((i=t.__c)&&!i.__)try{if((s=i.constructor)&&s.getDerivedStateFromError!=null&&(i.setState(s.getDerivedStateFromError(e)),a=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,o||{}),a=i.__d),a)return i.__E=i}catch(l){e=l}throw e}},Xg=0,wp=function(e){return e!=null&&e.constructor===void 0},Br.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=dr({},this.state),typeof e=="function"&&(e=e(dr({},n),this.props)),e&&dr(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Gg(this))},Br.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Gg(this))},Br.prototype.render=be,Dr=[],Jg=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Yg=function(e,t){return e.__v.__b-t.__v.__b},hc.__r=0,Qg=/(PointerCapture)$|Capture$/i,kp=0,vp=Vg(!1),bp=Vg(!0),cE=0;var Si,jt,Tp,sy,Aa=0,my=[],Vt=ct,{__b:ay,__r:ly,diffed:cy,__c:uy,unmount:dy,__:py}=Vt;function Ra(e,t){Vt.__h&&Vt.__h(jt,e,Aa||t),Aa=0;var n=jt.__H||(jt.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function E(e){return Aa=1,yE(gy,e)}function yE(e,t,n){var o=Ra(Si++,2);if(o.t=e,!o.__c&&(o.__=[n?n(t):gy(void 0,t),function(l){var c=o.__N?o.__N[0]:o.__[0],u=o.t(c,l);c!==u&&(o.__N=[u,o.__[1]],o.__c.setState({}))}],o.__c=jt,!jt.__f)){var i=function(l,c,u){if(!o.__c.__H)return!0;var d=o.__c.__H.__.filter(function(f){return f.__c});if(d.every(function(f){return!f.__N}))return!s||s.call(this,l,c,u);var p=o.__c.props!==l;return d.some(function(f){if(f.__N){var m=f.__[0];f.__=f.__N,f.__N=void 0,m!==f.__[0]&&(p=!0)}}),s&&s.call(this,l,c,u)||p};jt.__f=!0;var s=jt.shouldComponentUpdate,a=jt.componentWillUpdate;jt.componentWillUpdate=function(l,c,u){if(this.__e){var d=s;s=void 0,i(l,c,u),s=d}a&&a.call(this,l,c,u)},jt.shouldComponentUpdate=i}return o.__N||o.__}function q(e,t){var n=Ra(Si++,3);!Vt.__s&&Ep(n.__H,t)&&(n.__=e,n.u=t,jt.__H.__h.push(n))}function Me(e,t){var n=Ra(Si++,4);!Vt.__s&&Ep(n.__H,t)&&(n.__=e,n.u=t,jt.__h.push(n))}function D(e){return Aa=5,Ke(function(){return{current:e}},[])}function Ke(e,t){var n=Ra(Si++,7);return Ep(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function oe(e,t){return Aa=8,Ke(function(){return e},t)}function hy(){var e=Ra(Si++,11);if(!e.__){for(var t=jt.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__}function vE(){for(var e;e=my.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(vc),t.__h.some(Ip),t.__h=[]}catch(n){t.__h=[],Vt.__e(n,e.__v)}}}Vt.__b=function(e){jt=null,ay&&ay(e)},Vt.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),py&&py(e,t)},Vt.__r=function(e){ly&&ly(e),Si=0;var t=(jt=e.__c).__H;t&&(Tp===jt?(t.__h=[],jt.__h=[],t.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.some(vc),t.__h.some(Ip),t.__h=[],Si=0)),Tp=jt},Vt.diffed=function(e){cy&&cy(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(my.push(t)!==1&&sy===Vt.requestAnimationFrame||((sy=Vt.requestAnimationFrame)||bE)(vE)),t.__H.__.some(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Tp=jt=null},Vt.__c=function(e,t){t.some(function(n){try{n.__h.some(vc),n.__h=n.__h.filter(function(o){return!o.__||Ip(o)})}catch(o){t.some(function(i){i.__h&&(i.__h=[])}),t=[],Vt.__e(o,n.__v)}}),uy&&uy(e,t)},Vt.unmount=function(e){dy&&dy(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(o){try{vc(o)}catch(i){t=i}}),n.__H=void 0,t&&Vt.__e(t,n.__v))};var fy=typeof requestAnimationFrame=="function";function bE(e){var t,n=function(){clearTimeout(o),fy&&cancelAnimationFrame(t),setTimeout(e)},o=setTimeout(n,35);fy&&(t=requestAnimationFrame(n))}function vc(e){var t=jt,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),jt=t}function Ip(e){var t=jt;e.__c=e.__(),jt=t}function Ep(e,t){return!e||e.length!==t.length||t.some(function(n,o){return n!==e[o]})}function gy(e,t){return typeof t=="function"?t(e):t}var xE=Symbol.for("preact-signals");function kc(){if(!(pr>1)){var e,t=!1;(function(){var i=xc;xc=void 0;while(i!==void 0){if(i.S.v===i.v)i.S.i=i.i;i=i.o}})();while(Pa!==void 0){var n=Pa;Pa=void 0,bc++;while(n!==void 0){var o=n.u;if(n.u=void 0,n.f&=-3,!(8&n.f)&&by(n))try{n.c()}catch(i){if(!t)e=i,t=!0}n=o}}if(bc=0,pr--,t)throw e}else pr--}function Nn(e){if(pr>0)return e();Ap=++wE,pr++;try{return e()}finally{kc()}}var mt=void 0;function Rp(e){var t=mt;mt=void 0;try{return e()}finally{mt=t}}var yy,Pa=void 0,pr=0,bc=0,wE=0,Ap=0,xc=void 0,wc=0;function vy(e){if(mt!==void 0){var t=e.n;if(t===void 0||t.t!==mt){if(t={i:0,S:e,p:mt.s,n:void 0,t:mt,e:void 0,x:void 0,r:t},mt.s!==void 0)mt.s.n=t;if(mt.s=t,e.n=t,32&mt.f)e.S(t);return t}else if(t.i===-1){if(t.i=0,t.n!==void 0){if(t.n.p=t.p,t.p!==void 0)t.p.n=t.n;t.p=mt.s,t.n=void 0,mt.s.n=t,mt.s=t}return t}}}function rn(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=t==null?void 0:t.watched,this.Z=t==null?void 0:t.unwatched,this.name=t==null?void 0:t.name}rn.prototype.brand=xE;rn.prototype.h=function(){return!0};rn.prototype.S=function(e){var t=this,n=this.t;if(n!==e&&e.e===void 0)if(e.x=n,this.t=e,n!==void 0)n.e=e;else Rp(function(){var o;(o=t.W)==null||o.call(t)})};rn.prototype.U=function(e){var t=this;if(this.t!==void 0){var{e:n,x:o}=e;if(n!==void 0)n.x=o,e.e=void 0;if(o!==void 0)o.e=n,e.x=void 0;if(e===this.t){if(this.t=o,o===void 0)Rp(function(){var i;(i=t.Z)==null||i.call(t)})}}};rn.prototype.subscribe=function(e){var t=this;return sn(function(){var n=t.value,o=mt;mt=void 0;try{e(n)}finally{mt=o}},{name:"sub"})};rn.prototype.valueOf=function(){return this.value};rn.prototype.toString=function(){return this.value+""};rn.prototype.toJSON=function(){return this.value};rn.prototype.peek=function(){var e=mt;mt=void 0;try{return this.value}finally{mt=e}};Object.defineProperty(rn.prototype,"value",{get:function(){var e=vy(this);if(e!==void 0)e.i=this.i;return this.v},set:function(e){if(e!==this.v){if(bc>100)throw Error("Cycle detected");(function(n){if(pr!==0&&bc===0){if(n.l!==Ap)n.l=Ap,xc={S:n,v:n.v,i:n.i,o:xc}}})(this),this.v=e,this.i++,wc++,pr++;try{for(var t=this.t;t!==void 0;t=t.x)t.t.N()}finally{kc()}}}});function ie(e,t){return new rn(e,t)}function by(e){for(var t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function xy(e){for(var t=e.s;t!==void 0;t=t.n){var n=t.S.n;if(n!==void 0)t.r=n;if(t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function wy(e){var t=e.s,n=void 0;while(t!==void 0){var o=t.p;if(t.i===-1){if(t.S.U(t),o!==void 0)o.n=t.n;if(t.n!==void 0)t.n.p=o}else n=t;if(t.S.n=t.r,t.r!==void 0)t.r=void 0;t=o}e.s=n}function _i(e,t){rn.call(this,void 0),this.x=e,this.s=void 0,this.g=wc-1,this.f=4,this.W=t==null?void 0:t.watched,this.Z=t==null?void 0:t.unwatched,this.name=t==null?void 0:t.name}_i.prototype=new rn;_i.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===wc)return!0;if(this.g=wc,this.f|=1,this.i>0&&!by(this))return this.f&=-2,!0;var e=mt;try{xy(this),mt=this;var t=this.x();if(16&this.f||this.v!==t||this.i===0)this.v=t,this.f&=-17,this.i++}catch(n){this.v=n,this.f|=16,this.i++}return mt=e,wy(this),this.f&=-2,!0};_i.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(var t=this.s;t!==void 0;t=t.n)t.S.S(t)}rn.prototype.S.call(this,e)};_i.prototype.U=function(e){if(this.t!==void 0){if(rn.prototype.U.call(this,e),this.t===void 0){this.f&=-33;for(var t=this.s;t!==void 0;t=t.n)t.S.U(t)}}};_i.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;e!==void 0;e=e.x)e.t.N()}};Object.defineProperty(_i.prototype,"value",{get:function(){if(1&this.f)throw Error("Cycle detected");var e=vy(this);if(this.h(),e!==void 0)e.i=this.i;if(16&this.f)throw this.v;return this.v}});function Ve(e,t){return new _i(e,t)}function ky(e){var t=e.m;if(e.m=void 0,typeof t=="function"){pr++;var n=mt;mt=void 0;try{t()}catch(o){throw e.f&=-2,e.f|=8,Pp(e),o}finally{mt=n,kc()}}}function Pp(e){for(var t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,ky(e)}function kE(e){if(mt!==this)throw Error("Out-of-order effect");if(wy(this),mt=e,this.f&=-2,8&this.f)Pp(this);kc()}function ys(e,t){if(this.x=e,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=t==null?void 0:t.name,yy)yy.push(this)}ys.prototype.c=function(){var e=this.S();try{if(8&this.f)return;if(this.x===void 0)return;var t=this.x();if(typeof t=="function")this.m=t}finally{e()}};ys.prototype.S=function(){if(1&this.f)throw Error("Cycle detected");this.f|=1,this.f&=-9,ky(this),xy(this),pr++;var e=mt;return mt=this,kE.bind(this,e)};ys.prototype.N=function(){if(!(2&this.f))this.f|=2,this.u=Pa,Pa=this};ys.prototype.d=function(){if(this.f|=8,!(1&this.f))Pp(this)};ys.prototype.dispose=function(){this.d()};function sn(e,t){var n=new ys(e,t);try{n.c()}catch(i){throw n.d(),i}var o=n.d.bind(n);return o[Symbol.dispose]=o,o}var Sy,Np,Sc,SE=typeof window<"u"&&!!window.__PREACT_SIGNALS_DEVTOOLS__;var _y=[];sn(function(){Sy=this.N})();function vs(e,t){ct[e]=t.bind(null,ct[e]||function(){})}function _c(e){if(Sc){var t=Sc;Sc=void 0,t()}Sc=e&&e.S()}function Cy(e){var t=this,n=e.data,o=CE(n);o.value=n;var i=Ke(function(){var l=t,c=t.__v;while(c=c.__)if(c.__c){c.__c.__$f|=4;break}var u=Ve(function(){var m=o.value.value;return m===0?0:m===!0?"":m||""}),d=Ve(function(){return!Array.isArray(u.value)&&!wp(u.value)}),p=sn(function(){if(this.N=Ty,d.value){var m=u.value;if(l.__v&&l.__v.__e&&l.__v.__e.nodeType===3)l.__v.__e.data=m}}),f=t.__$u.d;return t.__$u.d=function(){p(),f.call(this)},[d,u]},[]),s=i[0],a=i[1];return s.value?a.peek():a.value}Cy.displayName="ReactiveTextNode";Object.defineProperties(rn.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:Cy},props:{configurable:!0,get:function(){var e=this;return{data:{get value(){return e.value}}}}},__b:{configurable:!0,value:1}});vs("__b",function(e,t){if(typeof t.type=="string"){var n,o=t.props;for(var i in o)if(i!=="children"){var s=o[i];if(s instanceof rn){if(!n)t.__np=n={};n[i]=s,o[i]=s.peek()}}}e(t)});vs("__r",function(e,t){if(e(t),t.type!==be){_c();var n,o=t.__c;if(o){if(o.__$f&=-2,(n=o.__$u)===void 0)o.__$u=n=function(i,s){var a;return sn(function(){a=this},{name:s}),a.c=i,a}(function(){var i;if(SE)(i=n.y)==null||i.call(n);o.__$f|=1,o.setState({})},typeof t.type=="function"?t.type.displayName||t.type.name:"")}Np=o,_c(n)}});vs("__e",function(e,t,n,o){_c(),Np=void 0,e(t,n,o)});vs("diffed",function(e,t){_c(),Np=void 0;var n;if(typeof t.type=="string"&&(n=t.__e)){var{__np:o,props:i}=t;if(o){var s=n.U;if(s)for(var a in s){var l=s[a];if(l!==void 0&&!(a in o))l.d(),s[a]=void 0}else s={},n.U=s;for(var c in o){var u=s[c],d=o[c];if(u===void 0)u=_E(n,c,d),s[c]=u;else u.o(d,i)}for(var p in o)i[p]=o[p]}}e(t)});function _E(e,t,n,o){var i=t in e&&e.ownerSVGElement===void 0,s=ie(n),a=n.peek();return{o:function(l,c){s.value=l,a=l.peek()},d:sn(function(){this.N=Ty;var l=s.value.value;if(a!==l)if(a=void 0,i)e[t]=l;else if(l!=null&&(l!==!1||t[4]==="-"))e.setAttribute(t,l);else e.removeAttribute(t);else a=void 0})}}vs("unmount",function(e,t){if(typeof t.type=="string"){var n=t.__e;if(n){var o=n.U;if(o){n.U=void 0;for(var i in o){var s=o[i];if(s)s.d()}}}t.__np=void 0}else{var a=t.__c;if(a){var l=a.__$u;if(l)a.__$u=void 0,l.d()}}e(t)});vs("__h",function(e,t,n,o){if(o<3||o===9)t.__$f|=2;e(t,n,o)});Br.prototype.shouldComponentUpdate=function(e,t){if(this.__R)return!0;var n=this.__$u,o=n&&n.s!==void 0;for(var i in t)return!0;if(this.__f||typeof this.u=="boolean"&&this.u===!0){var s=2&this.__$f;if(!(o||s||4&this.__$f))return!0;if(1&this.__$f)return!0}else{if(!(o||4&this.__$f))return!0;if(3&this.__$f)return!0}for(var a in e)if(a!=="__source"&&e[a]!==this.props[a])return!0;for(var l in this.props)if(!(l in e))return!0;return!1};function CE(e,t){return Ke(function(){return ie(e,t)},[])}var TE=function(e){queueMicrotask(function(){queueMicrotask(e)})};function IE(){Nn(function(){var e;while(e=_y.shift())Sy.call(e)})}function Ty(){if(_y.push(this)===1)(ct.requestAnimationFrame||TE)(IE)}var yD=Object.freeze({status:"aborted"});function Q(e,t,n){function o(l,c){if(!l._zod)Object.defineProperty(l,"_zod",{value:{def:c,constr:a,traits:new Set},enumerable:!1});if(l._zod.traits.has(e))return;l._zod.traits.add(e),t(l,c);let u=a.prototype,d=Object.keys(u);for(let p=0;p<d.length;p++){let f=d[p];if(!(f in l))l[f]=u[f].bind(l)}}let i=n?.Parent??Object;class s extends i{}Object.defineProperty(s,"name",{value:e});function a(l){var c;let u=n?.Parent?new s:this;o(u,l),(c=u._zod).deferred??(c.deferred=[]);for(let d of u._zod.deferred)d();return u}return Object.defineProperty(a,"init",{value:o}),Object.defineProperty(a,Symbol.hasInstance,{value:(l)=>{if(n?.Parent&&l instanceof n.Parent)return!0;return l?._zod?.traits?.has(e)}}),Object.defineProperty(a,"name",{value:e}),a}var vD=Symbol("zod_brand");class fr extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class Na extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`);this.name="ZodEncodeError"}}var Cc={};function yo(e){if(e)Object.assign(Cc,e);return Cc}function Ic(e){let t=Object.values(e).filter((o)=>typeof o==="number");return Object.entries(e).filter(([o,i])=>t.indexOf(+o)===-1).map(([o,i])=>i)}function zp(e,t="|"){return e.map((n)=>Dp(n)).join(t)}function Ma(e,t){if(typeof t==="bigint")return t.toString();return t}function za(e){return{get value(){{let n=e();return Object.defineProperty(this,"value",{value:n}),n}throw Error("cached value already set")}}}function Ec(e){return e===null||e===void 0}function Ac(e){let t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}function Ey(e,t){let n=(e.toString().split(".")[1]||"").length,o=t.toString(),i=(o.split(".")[1]||"").length;if(i===0&&/\d?e-\d?/.test(o)){let c=o.match(/\d?e-(\d?)/);if(c?.[1])i=Number.parseInt(c[1])}let s=n>i?n:i,a=Number.parseInt(e.toFixed(s).replace(".","")),l=Number.parseInt(t.toFixed(s).replace(".",""));return a%l/10**s}var Iy=Symbol("evaluating");function dt(e,t,n){let o=void 0;Object.defineProperty(e,t,{get(){if(o===Iy)return;if(o===void 0)o=Iy,o=n();return o},set(i){Object.defineProperty(e,t,{value:i})},configurable:!0})}function Ci(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function Fr(...e){let t={};for(let n of e){let o=Object.getOwnPropertyDescriptors(n);Object.assign(t,o)}return Object.defineProperties({},t)}function $p(e){return JSON.stringify(e)}function Ay(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Lp="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function bs(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}var Ry=za(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function Ti(e){if(bs(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;if(typeof t!=="function")return!0;let n=t.prototype;if(bs(n)===!1)return!1;if(Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")===!1)return!1;return!0}function Op(e){if(Ti(e))return{...e};if(Array.isArray(e))return[...e];return e}var Py=new Set(["string","number","symbol"]);function Hr(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Uo(e,t,n){let o=new e._zod.constr(t??e._zod.def);if(!t||n?.parent)o._zod.parent=e;return o}function Re(e){let t=e;if(!t)return{};if(typeof t==="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}if(delete t.message,typeof t.error==="string")return{...t,error:()=>t.error};return t}function Dp(e){if(typeof e==="bigint")return e.toString()+"n";if(typeof e==="string")return`"${e}"`;return`${e}`}function Ny(e){return Object.keys(e).filter((t)=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var My={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function EE(e,t){let n=e._zod.def,o=n.checks;if(o&&o.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let s=Fr(e._zod.def,{get shape(){let a={};for(let l in t){if(!(l in n.shape))throw Error(`Unrecognized key: "${l}"`);if(!t[l])continue;a[l]=n.shape[l]}return Ci(this,"shape",a),a},checks:[]});return Uo(e,s)}function AE(e,t){let n=e._zod.def,o=n.checks;if(o&&o.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let s=Fr(e._zod.def,{get shape(){let a={...e._zod.def.shape};for(let l in t){if(!(l in n.shape))throw Error(`Unrecognized key: "${l}"`);if(!t[l])continue;delete a[l]}return Ci(this,"shape",a),a},checks:[]});return Uo(e,s)}function RE(e,t){if(!Ti(t))throw Error("Invalid input to extend: expected a plain object");let n=e._zod.def.checks;if(n&&n.length>0){let s=e._zod.def.shape;for(let a in t)if(Object.getOwnPropertyDescriptor(s,a)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let i=Fr(e._zod.def,{get shape(){let s={...e._zod.def.shape,...t};return Ci(this,"shape",s),s}});return Uo(e,i)}function PE(e,t){if(!Ti(t))throw Error("Invalid input to safeExtend: expected a plain object");let n=Fr(e._zod.def,{get shape(){let o={...e._zod.def.shape,...t};return Ci(this,"shape",o),o}});return Uo(e,n)}function NE(e,t){let n=Fr(e._zod.def,{get shape(){let o={...e._zod.def.shape,...t._zod.def.shape};return Ci(this,"shape",o),o},get catchall(){return t._zod.def.catchall},checks:[]});return Uo(e,n)}function ME(e,t,n){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(".partial() cannot be used on object schemas containing refinements");let a=Fr(t._zod.def,{get shape(){let l=t._zod.def.shape,c={...l};if(n)for(let u in n){if(!(u in l))throw Error(`Unrecognized key: "${u}"`);if(!n[u])continue;c[u]=e?new e({type:"optional",innerType:l[u]}):l[u]}else for(let u in l)c[u]=e?new e({type:"optional",innerType:l[u]}):l[u];return Ci(this,"shape",c),c},checks:[]});return Uo(t,a)}function zE(e,t,n){let o=Fr(t._zod.def,{get shape(){let i=t._zod.def.shape,s={...i};if(n)for(let a in n){if(!(a in s))throw Error(`Unrecognized key: "${a}"`);if(!n[a])continue;s[a]=new e({type:"nonoptional",innerType:i[a]})}else for(let a in i)s[a]=new e({type:"nonoptional",innerType:i[a]});return Ci(this,"shape",s),s}});return Uo(t,o)}function Ii(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function Ur(e,t){return t.map((n)=>{var o;return(o=n).path??(o.path=[]),n.path.unshift(e),n})}function Tc(e){return typeof e==="string"?e:e?.message}function jo(e,t,n){let o={...e,path:e.path??[]};if(!e.message){let i=Tc(e.inst?._zod.def?.error?.(e))??Tc(t?.error?.(e))??Tc(n.customError?.(e))??Tc(n.localeError?.(e))??"Invalid input";o.message=i}if(delete o.inst,delete o.continue,!t?.reportInput)delete o.input;return o}function Rc(e){if(Array.isArray(e))return"array";if(typeof e==="string")return"string";return"unknown"}function zy(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let n=e;if(n&&Object.getPrototypeOf(n)!==Object.prototype&&"constructor"in n&&n.constructor)return n.constructor.name}}return t}function Ei(...e){let[t,n,o]=e;if(typeof t==="string")return{message:t,code:"custom",input:n,inst:o};return{...t}}var $y=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Ma,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Pc=Q("$ZodError",$y),Bp=Q("$ZodError",$y,{Parent:Error});function Ly(e,t=(n)=>n.message){let n={},o=[];for(let i of e.issues)if(i.path.length>0)n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i));else o.push(t(i));return{formErrors:o,fieldErrors:n}}function Oy(e,t=(n)=>n.message){let n={_errors:[]},o=(i)=>{for(let s of i.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map((a)=>o({issues:a}));else if(s.code==="invalid_key")o({issues:s.issues});else if(s.code==="invalid_element")o({issues:s.issues});else if(s.path.length===0)n._errors.push(t(s));else{let a=n,l=0;while(l<s.path.length){let c=s.path[l];if(l!==s.path.length-1)a[c]=a[c]||{_errors:[]};else a[c]=a[c]||{_errors:[]},a[c]._errors.push(t(s));a=a[c],l++}}};return o(e),n}var Nc=(e)=>(t,n,o,i)=>{let s=o?Object.assign(o,{async:!1}):{async:!1},a=t._zod.run({value:n,issues:[]},s);if(a instanceof Promise)throw new fr;if(a.issues.length){let l=new(i?.Err??e)(a.issues.map((c)=>jo(c,s,yo())));throw Lp(l,i?.callee),l}return a.value};var Mc=(e)=>async(t,n,o,i)=>{let s=o?Object.assign(o,{async:!0}):{async:!0},a=t._zod.run({value:n,issues:[]},s);if(a instanceof Promise)a=await a;if(a.issues.length){let l=new(i?.Err??e)(a.issues.map((c)=>jo(c,s,yo())));throw Lp(l,i?.callee),l}return a.value};var $a=(e)=>(t,n,o)=>{let i=o?{...o,async:!1}:{async:!1},s=t._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw new fr;return s.issues.length?{success:!1,error:new(e??Pc)(s.issues.map((a)=>jo(a,i,yo())))}:{success:!0,data:s.value}},La=$a(Bp),Oa=(e)=>async(t,n,o)=>{let i=o?Object.assign(o,{async:!0}):{async:!0},s=t._zod.run({value:n,issues:[]},i);if(s instanceof Promise)s=await s;return s.issues.length?{success:!1,error:new e(s.issues.map((a)=>jo(a,i,yo())))}:{success:!0,data:s.value}},zc=Oa(Bp),Dy=(e)=>(t,n,o)=>{let i=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return Nc(e)(t,n,i)};var By=(e)=>(t,n,o)=>Nc(e)(t,n,o);var Fy=(e)=>async(t,n,o)=>{let i=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return Mc(e)(t,n,i)};var Hy=(e)=>async(t,n,o)=>Mc(e)(t,n,o);var Uy=(e)=>(t,n,o)=>{let i=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return $a(e)(t,n,i)};var jy=(e)=>(t,n,o)=>$a(e)(t,n,o);var Zy=(e)=>async(t,n,o)=>{let i=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return Oa(e)(t,n,i)};var Wy=(e)=>async(t,n,o)=>Oa(e)(t,n,o);var qy=/^[cC][^\s-]{8,}$/,Gy=/^[0-9a-z]+$/,Ky=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Vy=/^[0-9a-vA-V]{20}$/,Xy=/^[A-Za-z0-9]{27}$/,Jy=/^[a-zA-Z0-9_-]{21}$/,Yy=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var Qy=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Fp=(e)=>{if(!e)return/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)};var ev=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var LE="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function tv(){return new RegExp(LE,"u")}var nv=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ov=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;var rv=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,iv=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,sv=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Hp=/^[A-Za-z0-9_-]*$/;var av=/^\+[1-9]\d{6,14}$/,lv="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",cv=new RegExp(`^${lv}$`);function uv(e){return typeof e.precision==="number"?e.precision===-1?"(?:[01]\\d|2[0-3]):[0-5]\\d":e.precision===0?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d":`(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{${e.precision}}`:"(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?"}function dv(e){return new RegExp(`^${uv(e)}$`)}function pv(e){let t=uv({precision:e.precision}),n=["Z"];if(e.local)n.push("");if(e.offset)n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let o=`${t}(?:${n.join("|")})`;return new RegExp(`^${lv}T(?:${o})$`)}var fv=(e)=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)};var mv=/^-?\d+$/,Up=/^-?\d+(?:\.\d+)?$/,hv=/^(?:true|false)$/i,gv=/^null$/i;var yv=/^undefined$/i;var vv=/^[^A-Z]*$/,bv=/^[^a-z]*$/;var wn=Q("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),xv={number:"number",bigint:"bigint",object:"date"},jp=Q("$ZodCheckLessThan",(e,t)=>{wn.init(e,t);let n=xv[typeof t.value];e._zod.onattach.push((o)=>{let i=o._zod.bag,s=(t.inclusive?i.maximum:i.exclusiveMaximum)??Number.POSITIVE_INFINITY;if(t.value<s)if(t.inclusive)i.maximum=t.value;else i.exclusiveMaximum=t.value}),e._zod.check=(o)=>{if(t.inclusive?o.value<=t.value:o.value<t.value)return;o.issues.push({origin:n,code:"too_big",maximum:typeof t.value==="object"?t.value.getTime():t.value,input:o.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Zp=Q("$ZodCheckGreaterThan",(e,t)=>{wn.init(e,t);let n=xv[typeof t.value];e._zod.onattach.push((o)=>{let i=o._zod.bag,s=(t.inclusive?i.minimum:i.exclusiveMinimum)??Number.NEGATIVE_INFINITY;if(t.value>s)if(t.inclusive)i.minimum=t.value;else i.exclusiveMinimum=t.value}),e._zod.check=(o)=>{if(t.inclusive?o.value>=t.value:o.value>t.value)return;o.issues.push({origin:n,code:"too_small",minimum:typeof t.value==="object"?t.value.getTime():t.value,input:o.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),wv=Q("$ZodCheckMultipleOf",(e,t)=>{wn.init(e,t),e._zod.onattach.push((n)=>{var o;(o=n._zod.bag).multipleOf??(o.multipleOf=t.value)}),e._zod.check=(n)=>{if(typeof n.value!==typeof t.value)throw Error("Cannot mix number and bigint in multiple_of check.");if(typeof n.value==="bigint"?n.value%t.value===BigInt(0):Ey(n.value,t.value)===0)return;n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),kv=Q("$ZodCheckNumberFormat",(e,t)=>{wn.init(e,t),t.format=t.format||"float64";let n=t.format?.includes("int"),o=n?"int":"number",[i,s]=My[t.format];e._zod.onattach.push((a)=>{let l=a._zod.bag;if(l.format=t.format,l.minimum=i,l.maximum=s,n)l.pattern=mv}),e._zod.check=(a)=>{let l=a.value;if(n){if(!Number.isInteger(l)){a.issues.push({expected:o,format:t.format,code:"invalid_type",continue:!1,input:l,inst:e});return}if(!Number.isSafeInteger(l)){if(l>0)a.issues.push({input:l,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:o,inclusive:!0,continue:!t.abort});else a.issues.push({input:l,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:o,inclusive:!0,continue:!t.abort});return}}if(l<i)a.issues.push({origin:"number",input:l,code:"too_small",minimum:i,inclusive:!0,inst:e,continue:!t.abort});if(l>s)a.issues.push({origin:"number",input:l,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}});var Sv=Q("$ZodCheckMaxLength",(e,t)=>{var n;wn.init(e,t),(n=e._zod.def).when??(n.when=(o)=>{let i=o.value;return!Ec(i)&&i.length!==void 0}),e._zod.onattach.push((o)=>{let i=o._zod.bag.maximum??Number.POSITIVE_INFINITY;if(t.maximum<i)o._zod.bag.maximum=t.maximum}),e._zod.check=(o)=>{let i=o.value;if(i.length<=t.maximum)return;let a=Rc(i);o.issues.push({origin:a,code:"too_big",maximum:t.maximum,inclusive:!0,input:i,inst:e,continue:!t.abort})}}),_v=Q("$ZodCheckMinLength",(e,t)=>{var n;wn.init(e,t),(n=e._zod.def).when??(n.when=(o)=>{let i=o.value;return!Ec(i)&&i.length!==void 0}),e._zod.onattach.push((o)=>{let i=o._zod.bag.minimum??Number.NEGATIVE_INFINITY;if(t.minimum>i)o._zod.bag.minimum=t.minimum}),e._zod.check=(o)=>{let i=o.value;if(i.length>=t.minimum)return;let a=Rc(i);o.issues.push({origin:a,code:"too_small",minimum:t.minimum,inclusive:!0,input:i,inst:e,continue:!t.abort})}}),Cv=Q("$ZodCheckLengthEquals",(e,t)=>{var n;wn.init(e,t),(n=e._zod.def).when??(n.when=(o)=>{let i=o.value;return!Ec(i)&&i.length!==void 0}),e._zod.onattach.push((o)=>{let i=o._zod.bag;i.minimum=t.length,i.maximum=t.length,i.length=t.length}),e._zod.check=(o)=>{let i=o.value,s=i.length;if(s===t.length)return;let a=Rc(i),l=s>t.length;o.issues.push({origin:a,...l?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:o.value,inst:e,continue:!t.abort})}}),Da=Q("$ZodCheckStringFormat",(e,t)=>{var n,o;if(wn.init(e,t),e._zod.onattach.push((i)=>{let s=i._zod.bag;if(s.format=t.format,t.pattern)s.patterns??(s.patterns=new Set),s.patterns.add(t.pattern)}),t.pattern)(n=e._zod).check??(n.check=(i)=>{if(t.pattern.lastIndex=0,t.pattern.test(i.value))return;i.issues.push({origin:"string",code:"invalid_format",format:t.format,input:i.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})});else(o=e._zod).check??(o.check=()=>{})}),Tv=Q("$ZodCheckRegex",(e,t)=>{Da.init(e,t),e._zod.check=(n)=>{if(t.pattern.lastIndex=0,t.pattern.test(n.value))return;n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Iv=Q("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=vv),Da.init(e,t)}),Ev=Q("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=bv),Da.init(e,t)}),Av=Q("$ZodCheckIncludes",(e,t)=>{wn.init(e,t);let n=Hr(t.includes),o=new RegExp(typeof t.position==="number"?`^.{${t.position}}${n}`:n);t.pattern=o,e._zod.onattach.push((i)=>{let s=i._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(o)}),e._zod.check=(i)=>{if(i.value.includes(t.includes,t.position))return;i.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:i.value,inst:e,continue:!t.abort})}}),Rv=Q("$ZodCheckStartsWith",(e,t)=>{wn.init(e,t);let n=new RegExp(`^${Hr(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.onattach.push((o)=>{let i=o._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(n)}),e._zod.check=(o)=>{if(o.value.startsWith(t.prefix))return;o.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:o.value,inst:e,continue:!t.abort})}}),Pv=Q("$ZodCheckEndsWith",(e,t)=>{wn.init(e,t);let n=new RegExp(`.*${Hr(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.onattach.push((o)=>{let i=o._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(n)}),e._zod.check=(o)=>{if(o.value.endsWith(t.suffix))return;o.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:o.value,inst:e,continue:!t.abort})}});var Nv=Q("$ZodCheckOverwrite",(e,t)=>{wn.init(e,t),e._zod.check=(n)=>{n.value=t.tx(n.value)}});class Wp{constructor(e=[]){if(this.content=[],this.indent=0,this)this.args=e}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e==="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let n=e.split(`
|
|
23
|
+
`).filter((s)=>s),o=Math.min(...n.map((s)=>s.length-s.trimStart().length)),i=n.map((s)=>s.slice(o)).map((s)=>" ".repeat(this.indent*2)+s);for(let s of i)this.content.push(s)}compile(){let e=Function,t=this?.args,o=[...(this?.content??[""]).map((i)=>` ${i}`)];return new e(...t,o.join(`
|
|
24
|
+
`))}}var zv={major:4,minor:3,patch:6};var Et=Q("$ZodType",(e,t)=>{var n;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=zv;let o=[...e._zod.def.checks??[]];if(e._zod.traits.has("$ZodCheck"))o.unshift(e);for(let i of o)for(let s of i._zod.onattach)s(e);if(o.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let i=(a,l,c)=>{let u=Ii(a),d;for(let p of l){if(p._zod.def.when){if(!p._zod.def.when(a))continue}else if(u)continue;let f=a.issues.length,m=p._zod.check(a);if(m instanceof Promise&&c?.async===!1)throw new fr;if(d||m instanceof Promise)d=(d??Promise.resolve()).then(async()=>{if(await m,a.issues.length===f)return;if(!u)u=Ii(a,f)});else{if(a.issues.length===f)continue;if(!u)u=Ii(a,f)}}if(d)return d.then(()=>a);return a},s=(a,l,c)=>{if(Ii(a))return a.aborted=!0,a;let u=i(l,o,c);if(u instanceof Promise){if(c.async===!1)throw new fr;return u.then((d)=>e._zod.parse(d,c))}return e._zod.parse(u,c)};e._zod.run=(a,l)=>{if(l.skipChecks)return e._zod.parse(a,l);if(l.direction==="backward"){let u=e._zod.parse({value:a.value,issues:[]},{...l,skipChecks:!0});if(u instanceof Promise)return u.then((d)=>s(d,a,l));return s(u,a,l)}let c=e._zod.parse(a,l);if(c instanceof Promise){if(l.async===!1)throw new fr;return c.then((u)=>i(u,o,l))}return i(c,o,l)}}dt(e,"~standard",()=>({validate:(i)=>{try{let s=La(e,i);return s.success?{value:s.data}:{issues:s.error?.issues}}catch(s){return zc(e,i).then((a)=>a.success?{value:a.data}:{issues:a.error?.issues})}},vendor:"zod",version:1}))}),Dc=Q("$ZodString",(e,t)=>{Et.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??fv(e._zod.bag),e._zod.parse=(n,o)=>{if(t.coerce)try{n.value=String(n.value)}catch(i){}if(typeof n.value==="string")return n;return n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:e}),n}}),Pt=Q("$ZodStringFormat",(e,t)=>{Da.init(e,t),Dc.init(e,t)}),jv=Q("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Qy),Pt.init(e,t)}),Zv=Q("$ZodUUID",(e,t)=>{if(t.version){let o={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(o===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=Fp(o))}else t.pattern??(t.pattern=Fp());Pt.init(e,t)}),Wv=Q("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=ev),Pt.init(e,t)}),qv=Q("$ZodURL",(e,t)=>{Pt.init(e,t),e._zod.check=(n)=>{try{let o=n.value.trim(),i=new URL(o);if(t.hostname){if(t.hostname.lastIndex=0,!t.hostname.test(i.hostname))n.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})}if(t.protocol){if(t.protocol.lastIndex=0,!t.protocol.test(i.protocol.endsWith(":")?i.protocol.slice(0,-1):i.protocol))n.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})}if(t.normalize)n.value=i.href;else n.value=o;return}catch(o){n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort})}}}),Gv=Q("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=tv()),Pt.init(e,t)}),Kv=Q("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=Jy),Pt.init(e,t)}),Vv=Q("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=qy),Pt.init(e,t)}),Xv=Q("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Gy),Pt.init(e,t)}),Jv=Q("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Ky),Pt.init(e,t)}),Yv=Q("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Vy),Pt.init(e,t)}),Qv=Q("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=Xy),Pt.init(e,t)}),eb=Q("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=pv(t)),Pt.init(e,t)}),tb=Q("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=cv),Pt.init(e,t)}),nb=Q("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=dv(t)),Pt.init(e,t)}),ob=Q("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Yy),Pt.init(e,t)}),rb=Q("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=nv),Pt.init(e,t),e._zod.bag.format="ipv4"}),ib=Q("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=ov),Pt.init(e,t),e._zod.bag.format="ipv6",e._zod.check=(n)=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:"invalid_format",format:"ipv6",input:n.value,inst:e,continue:!t.abort})}}});var sb=Q("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=rv),Pt.init(e,t)}),ab=Q("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=iv),Pt.init(e,t),e._zod.check=(n)=>{let o=n.value.split("/");try{if(o.length!==2)throw Error();let[i,s]=o;if(!s)throw Error();let a=Number(s);if(`${a}`!==s)throw Error();if(a<0||a>128)throw Error();new URL(`http://[${i}]`)}catch{n.issues.push({code:"invalid_format",format:"cidrv6",input:n.value,inst:e,continue:!t.abort})}}});function lb(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var cb=Q("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=sv),Pt.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=(n)=>{if(lb(n.value))return;n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:e,continue:!t.abort})}});function BE(e){if(!Hp.test(e))return!1;let t=e.replace(/[-_]/g,(o)=>o==="-"?"+":"/"),n=t.padEnd(Math.ceil(t.length/4)*4,"=");return lb(n)}var ub=Q("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Hp),Pt.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=(n)=>{if(BE(n.value))return;n.issues.push({code:"invalid_format",format:"base64url",input:n.value,inst:e,continue:!t.abort})}}),db=Q("$ZodE164",(e,t)=>{t.pattern??(t.pattern=av),Pt.init(e,t)});function FE(e,t=null){try{let n=e.split(".");if(n.length!==3)return!1;let[o]=n;if(!o)return!1;let i=JSON.parse(atob(o));if("typ"in i&&i?.typ!=="JWT")return!1;if(!i.alg)return!1;if(t&&(!("alg"in i)||i.alg!==t))return!1;return!0}catch{return!1}}var pb=Q("$ZodJWT",(e,t)=>{Pt.init(e,t),e._zod.check=(n)=>{if(FE(n.value,t.alg))return;n.issues.push({code:"invalid_format",format:"jwt",input:n.value,inst:e,continue:!t.abort})}});var Gp=Q("$ZodNumber",(e,t)=>{Et.init(e,t),e._zod.pattern=e._zod.bag.pattern??Up,e._zod.parse=(n,o)=>{if(t.coerce)try{n.value=Number(n.value)}catch(a){}let i=n.value;if(typeof i==="number"&&!Number.isNaN(i)&&Number.isFinite(i))return n;let s=typeof i==="number"?Number.isNaN(i)?"NaN":!Number.isFinite(i)?"Infinity":void 0:void 0;return n.issues.push({expected:"number",code:"invalid_type",input:i,inst:e,...s?{received:s}:{}}),n}}),fb=Q("$ZodNumberFormat",(e,t)=>{kv.init(e,t),Gp.init(e,t)}),mb=Q("$ZodBoolean",(e,t)=>{Et.init(e,t),e._zod.pattern=hv,e._zod.parse=(n,o)=>{if(t.coerce)try{n.value=Boolean(n.value)}catch(s){}let i=n.value;if(typeof i==="boolean")return n;return n.issues.push({expected:"boolean",code:"invalid_type",input:i,inst:e}),n}});var hb=Q("$ZodUndefined",(e,t)=>{Et.init(e,t),e._zod.pattern=yv,e._zod.values=new Set([void 0]),e._zod.optin="optional",e._zod.optout="optional",e._zod.parse=(n,o)=>{let i=n.value;if(typeof i>"u")return n;return n.issues.push({expected:"undefined",code:"invalid_type",input:i,inst:e}),n}}),gb=Q("$ZodNull",(e,t)=>{Et.init(e,t),e._zod.pattern=gv,e._zod.values=new Set([null]),e._zod.parse=(n,o)=>{let i=n.value;if(i===null)return n;return n.issues.push({expected:"null",code:"invalid_type",input:i,inst:e}),n}});var yb=Q("$ZodUnknown",(e,t)=>{Et.init(e,t),e._zod.parse=(n)=>n}),vb=Q("$ZodNever",(e,t)=>{Et.init(e,t),e._zod.parse=(n,o)=>(n.issues.push({expected:"never",code:"invalid_type",input:n.value,inst:e}),n)});function $v(e,t,n){if(e.issues.length)t.issues.push(...Ur(n,e.issues));t.value[n]=e.value}var bb=Q("$ZodArray",(e,t)=>{Et.init(e,t),e._zod.parse=(n,o)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:"array",code:"invalid_type",input:i,inst:e}),n;n.value=Array(i.length);let s=[];for(let a=0;a<i.length;a++){let l=i[a],c=t.element._zod.run({value:l,issues:[]},o);if(c instanceof Promise)s.push(c.then((u)=>$v(u,n,a)));else $v(c,n,a)}if(s.length)return Promise.all(s).then(()=>n);return n}});function Oc(e,t,n,o,i){if(e.issues.length){if(i&&!(n in o))return;t.issues.push(...Ur(n,e.issues))}if(e.value===void 0){if(n in o)t.value[n]=void 0}else t.value[n]=e.value}function xb(e){let t=Object.keys(e.shape);for(let o of t)if(!e.shape?.[o]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${o}": expected a Zod schema`);let n=Ny(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function wb(e,t,n,o,i,s){let a=[],l=i.keySet,c=i.catchall._zod,u=c.def.type,d=c.optout==="optional";for(let p in t){if(l.has(p))continue;if(u==="never"){a.push(p);continue}let f=c.run({value:t[p],issues:[]},o);if(f instanceof Promise)e.push(f.then((m)=>Oc(m,n,p,t,d)));else Oc(f,n,p,t,d)}if(a.length)n.issues.push({code:"unrecognized_keys",keys:a,input:t,inst:s});if(!e.length)return n;return Promise.all(e).then(()=>n)}var HE=Q("$ZodObject",(e,t)=>{if(Et.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){let l=t.shape;Object.defineProperty(t,"shape",{get:()=>{let c={...l};return Object.defineProperty(t,"shape",{value:c}),c}})}let o=za(()=>xb(t));dt(e._zod,"propValues",()=>{let l=t.shape,c={};for(let u in l){let d=l[u]._zod;if(d.values){c[u]??(c[u]=new Set);for(let p of d.values)c[u].add(p)}}return c});let i=bs,s=t.catchall,a;e._zod.parse=(l,c)=>{a??(a=o.value);let u=l.value;if(!i(u))return l.issues.push({expected:"object",code:"invalid_type",input:u,inst:e}),l;l.value={};let d=[],p=a.shape;for(let f of a.keys){let m=p[f],h=m._zod.optout==="optional",g=m._zod.run({value:u[f],issues:[]},c);if(g instanceof Promise)d.push(g.then((y)=>Oc(y,l,f,u,h)));else Oc(g,l,f,u,h)}if(!s)return d.length?Promise.all(d).then(()=>l):l;return wb(d,u,l,c,o.value,e)}}),kb=Q("$ZodObjectJIT",(e,t)=>{HE.init(e,t);let n=e._zod.parse,o=za(()=>xb(t)),i=(f)=>{let m=new Wp(["shape","payload","ctx"]),h=o.value,g=(C)=>{let v=$p(C);return`shape[${v}]._zod.run({ value: input[${v}], issues: [] }, ctx)`};m.write("const input = payload.value;");let y=Object.create(null),b=0;for(let C of h.keys)y[C]=`key_${b++}`;m.write("const newResult = {};");for(let C of h.keys){let v=y[C],k=$p(C),I=f[C]?._zod?.optout==="optional";if(m.write(`const ${v} = ${g(C)};`),I)m.write(`
|
|
25
|
+
if (${v}.issues.length) {
|
|
26
|
+
if (${k} in input) {
|
|
27
|
+
payload.issues = payload.issues.concat(${v}.issues.map(iss => ({
|
|
28
28
|
...iss,
|
|
29
|
-
path: iss.path ? [${
|
|
29
|
+
path: iss.path ? [${k}, ...iss.path] : [${k}]
|
|
30
30
|
})));
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
if (${
|
|
35
|
-
if (${
|
|
36
|
-
newResult[${
|
|
34
|
+
if (${v}.value === undefined) {
|
|
35
|
+
if (${k} in input) {
|
|
36
|
+
newResult[${k}] = undefined;
|
|
37
37
|
}
|
|
38
38
|
} else {
|
|
39
|
-
newResult[${
|
|
39
|
+
newResult[${k}] = ${v}.value;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
`);else
|
|
43
|
-
if (${
|
|
44
|
-
payload.issues = payload.issues.concat(${
|
|
42
|
+
`);else m.write(`
|
|
43
|
+
if (${v}.issues.length) {
|
|
44
|
+
payload.issues = payload.issues.concat(${v}.issues.map(iss => ({
|
|
45
45
|
...iss,
|
|
46
|
-
path: iss.path ? [${
|
|
46
|
+
path: iss.path ? [${k}, ...iss.path] : [${k}]
|
|
47
47
|
})));
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
if (${
|
|
51
|
-
if (${
|
|
52
|
-
newResult[${
|
|
50
|
+
if (${v}.value === undefined) {
|
|
51
|
+
if (${k} in input) {
|
|
52
|
+
newResult[${k}] = undefined;
|
|
53
53
|
}
|
|
54
54
|
} else {
|
|
55
|
-
newResult[${
|
|
55
|
+
newResult[${k}] = ${v}.value;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
`)}f.write("payload.value = newResult;"),f.write("return payload;");let b=f.compile();return(I,R)=>b(m,I,R)},s,a=Xr,c=!Ta.jitless,u=c&&Of.value,p=t.catchall,d;e._zod.parse=(m,f)=>{d??(d=o.value);let h=m.value;if(!a(h))return m.issues.push({expected:"object",code:"invalid_type",input:h,inst:e}),m;if(c&&u&&f?.async===!1&&f.jitless!==!0){if(!s)s=r(t.shape);if(m=s(m,f),!p)return m;return Eg([],h,m,f,d,e)}return n(m,f)}});function jh(e,t,n,o){for(let s of e)if(s.issues.length===0)return t.value=s.value,t;let r=e.filter((s)=>!pr(s));if(r.length===1)return t.value=r[0].value,r[0];return t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map((s)=>s.issues.map((a)=>qn(a,o,Sn())))}),t}var Du=B("$ZodUnion",(e,t)=>{Ke.init(e,t),De(e._zod,"optin",()=>t.options.some((r)=>r._zod.optin==="optional")?"optional":void 0),De(e._zod,"optout",()=>t.options.some((r)=>r._zod.optout==="optional")?"optional":void 0),De(e._zod,"values",()=>{if(t.options.every((r)=>r._zod.values))return new Set(t.options.flatMap((r)=>Array.from(r._zod.values)));return}),De(e._zod,"pattern",()=>{if(t.options.every((r)=>r._zod.pattern)){let r=t.options.map((s)=>s._zod.pattern);return new RegExp(`^(${r.map((s)=>Ia(s.source)).join("|")})$`)}return});let n=t.options.length===1,o=t.options[0]._zod.run;e._zod.parse=(r,s)=>{if(n)return o(r,s);let a=!1,c=[];for(let l of t.options){let u=l._zod.run({value:r.value,issues:[]},s);if(u instanceof Promise)c.push(u),a=!0;else{if(u.issues.length===0)return u;c.push(u)}}if(!a)return jh(c,r,e,s);return Promise.all(c).then((l)=>jh(l,r,e,s))}});var Ig=B("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,Du.init(e,t);let n=e._zod.parse;De(e._zod,"propValues",()=>{let r={};for(let s of t.options){let a=s._zod.propValues;if(!a||Object.keys(a).length===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(s)}"`);for(let[c,l]of Object.entries(a)){if(!r[c])r[c]=new Set;for(let u of l)r[c].add(u)}}return r});let o=os(()=>{let r=t.options,s=new Map;for(let a of r){let c=a._zod.propValues?.[t.discriminator];if(!c||c.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(a)}"`);for(let l of c){if(s.has(l))throw Error(`Duplicate discriminator value "${String(l)}"`);s.set(l,a)}}return s});e._zod.parse=(r,s)=>{let a=r.value;if(!Xr(a))return r.issues.push({code:"invalid_type",expected:"object",input:a,inst:e}),r;let c=o.value.get(a?.[t.discriminator]);if(c)return c._zod.run(r,s);if(t.unionFallback)return n(r,s);return r.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,input:a,path:[t.discriminator],inst:e}),r}}),Pg=B("$ZodIntersection",(e,t)=>{Ke.init(e,t),e._zod.parse=(n,o)=>{let r=n.value,s=t.left._zod.run({value:r,issues:[]},o),a=t.right._zod.run({value:r,issues:[]},o);if(s instanceof Promise||a instanceof Promise)return Promise.all([s,a]).then(([l,u])=>Uh(n,l,u));return Uh(n,s,a)}});function Ou(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e===+t)return{valid:!0,data:e};if(dr(e)&&dr(t)){let n=Object.keys(t),o=Object.keys(e).filter((s)=>n.indexOf(s)!==-1),r={...e,...t};for(let s of o){let a=Ou(e[s],t[s]);if(!a.valid)return{valid:!1,mergeErrorPath:[s,...a.mergeErrorPath]};r[s]=a.data}return{valid:!0,data:r}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let o=0;o<e.length;o++){let r=e[o],s=t[o],a=Ou(r,s);if(!a.valid)return{valid:!1,mergeErrorPath:[o,...a.mergeErrorPath]};n.push(a.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function Uh(e,t,n){let o=new Map,r;for(let c of t.issues)if(c.code==="unrecognized_keys"){r??(r=c);for(let l of c.keys){if(!o.has(l))o.set(l,{});o.get(l).l=!0}}else e.issues.push(c);for(let c of n.issues)if(c.code==="unrecognized_keys")for(let l of c.keys){if(!o.has(l))o.set(l,{});o.get(l).r=!0}else e.issues.push(c);let s=[...o].filter(([,c])=>c.l&&c.r).map(([c])=>c);if(s.length&&r)e.issues.push({...r,keys:s});if(pr(e))return e;let a=Ou(t.value,n.value);if(!a.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(a.mergeErrorPath)}`);return e.value=a.data,e}var Ng=B("$ZodRecord",(e,t)=>{Ke.init(e,t),e._zod.parse=(n,o)=>{let r=n.value;if(!dr(r))return n.issues.push({expected:"record",code:"invalid_type",input:r,inst:e}),n;let s=[],a=t.keyType._zod.values;if(a){n.value={};let c=new Set;for(let u of a)if(typeof u==="string"||typeof u==="number"||typeof u==="symbol"){c.add(typeof u==="number"?u.toString():u);let p=t.valueType._zod.run({value:r[u],issues:[]},o);if(p instanceof Promise)s.push(p.then((d)=>{if(d.issues.length)n.issues.push(...No(u,d.issues));n.value[u]=d.value}));else{if(p.issues.length)n.issues.push(...No(u,p.issues));n.value[u]=p.value}}let l;for(let u in r)if(!c.has(u))l=l??[],l.push(u);if(l&&l.length>0)n.issues.push({code:"unrecognized_keys",input:r,inst:e,keys:l})}else{n.value={};for(let c of Reflect.ownKeys(r)){if(c==="__proto__")continue;let l=t.keyType._zod.run({value:c,issues:[]},o);if(l instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(typeof c==="string"&&zu.test(c)&&l.issues.length){let d=t.keyType._zod.run({value:Number(c),issues:[]},o);if(d instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(d.issues.length===0)l=d}if(l.issues.length){if(t.mode==="loose")n.value[c]=r[c];else n.issues.push({code:"invalid_key",origin:"record",issues:l.issues.map((d)=>qn(d,o,Sn())),input:c,path:[c],inst:e});continue}let p=t.valueType._zod.run({value:r[c],issues:[]},o);if(p instanceof Promise)s.push(p.then((d)=>{if(d.issues.length)n.issues.push(...No(c,d.issues));n.value[l.value]=d.value}));else{if(p.issues.length)n.issues.push(...No(c,p.issues));n.value[l.value]=p.value}}}if(s.length)return Promise.all(s).then(()=>n);return n}});var zg=B("$ZodEnum",(e,t)=>{Ke.init(e,t);let n=Ea(t.entries),o=new Set(n);e._zod.values=o,e._zod.pattern=new RegExp(`^(${n.filter((r)=>Lf.has(typeof r)).map((r)=>typeof r==="string"?Po(r):r.toString()).join("|")})$`),e._zod.parse=(r,s)=>{let a=r.value;if(o.has(a))return r;return r.issues.push({code:"invalid_value",values:n,input:a,inst:e}),r}}),Rg=B("$ZodLiteral",(e,t)=>{if(Ke.init(e,t),t.values.length===0)throw Error("Cannot create literal schema with no valid values");let n=new Set(t.values);e._zod.values=n,e._zod.pattern=new RegExp(`^(${t.values.map((o)=>typeof o==="string"?Po(o):o?Po(o.toString()):String(o)).join("|")})$`),e._zod.parse=(o,r)=>{let s=o.value;if(n.has(s))return o;return o.issues.push({code:"invalid_value",values:t.values,input:s,inst:e}),o}});var Mg=B("$ZodTransform",(e,t)=>{Ke.init(e,t),e._zod.parse=(n,o)=>{if(o.direction==="backward")throw new ts(e.constructor.name);let r=t.transform(n.value,n);if(o.async)return(r instanceof Promise?r:Promise.resolve(r)).then((a)=>(n.value=a,n));if(r instanceof Promise)throw new io;return n.value=r,n}});function Zh(e,t){if(e.issues.length&&t===void 0)return{issues:[],value:void 0};return e}var Fu=B("$ZodOptional",(e,t)=>{Ke.init(e,t),e._zod.optin="optional",e._zod.optout="optional",De(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),De(e._zod,"pattern",()=>{let n=t.innerType._zod.pattern;return n?new RegExp(`^(${Ia(n.source)})?$`):void 0}),e._zod.parse=(n,o)=>{if(t.innerType._zod.optin==="optional"){let r=t.innerType._zod.run(n,o);if(r instanceof Promise)return r.then((s)=>Zh(s,n.value));return Zh(r,n.value)}if(n.value===void 0)return n;return t.innerType._zod.run(n,o)}}),$g=B("$ZodExactOptional",(e,t)=>{Fu.init(e,t),De(e._zod,"values",()=>t.innerType._zod.values),De(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(n,o)=>t.innerType._zod.run(n,o)}),Og=B("$ZodNullable",(e,t)=>{Ke.init(e,t),De(e._zod,"optin",()=>t.innerType._zod.optin),De(e._zod,"optout",()=>t.innerType._zod.optout),De(e._zod,"pattern",()=>{let n=t.innerType._zod.pattern;return n?new RegExp(`^(${Ia(n.source)}|null)$`):void 0}),De(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(n,o)=>{if(n.value===null)return n;return t.innerType._zod.run(n,o)}}),Lg=B("$ZodDefault",(e,t)=>{Ke.init(e,t),e._zod.optin="optional",De(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);if(n.value===void 0)return n.value=t.defaultValue,n;let r=t.innerType._zod.run(n,o);if(r instanceof Promise)return r.then((s)=>Wh(s,t));return Wh(r,t)}});function Wh(e,t){if(e.value===void 0)e.value=t.defaultValue;return e}var Dg=B("$ZodPrefault",(e,t)=>{Ke.init(e,t),e._zod.optin="optional",De(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);if(n.value===void 0)n.value=t.defaultValue;return t.innerType._zod.run(n,o)}}),Fg=B("$ZodNonOptional",(e,t)=>{Ke.init(e,t),De(e._zod,"values",()=>{let n=t.innerType._zod.values;return n?new Set([...n].filter((o)=>o!==void 0)):void 0}),e._zod.parse=(n,o)=>{let r=t.innerType._zod.run(n,o);if(r instanceof Promise)return r.then((s)=>qh(s,e));return qh(r,e)}});function qh(e,t){if(!e.issues.length&&e.value===void 0)e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t});return e}var Bg=B("$ZodCatch",(e,t)=>{Ke.init(e,t),De(e._zod,"optin",()=>t.innerType._zod.optin),De(e._zod,"optout",()=>t.innerType._zod.optout),De(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);let r=t.innerType._zod.run(n,o);if(r instanceof Promise)return r.then((s)=>{if(n.value=s.value,s.issues.length)n.value=t.catchValue({...n,error:{issues:s.issues.map((a)=>qn(a,o,Sn()))},input:n.value}),n.issues=[];return n});if(n.value=r.value,r.issues.length)n.value=t.catchValue({...n,error:{issues:r.issues.map((s)=>qn(s,o,Sn()))},input:n.value}),n.issues=[];return n}});var Hg=B("$ZodPipe",(e,t)=>{Ke.init(e,t),De(e._zod,"values",()=>t.in._zod.values),De(e._zod,"optin",()=>t.in._zod.optin),De(e._zod,"optout",()=>t.out._zod.optout),De(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(n,o)=>{if(o.direction==="backward"){let s=t.out._zod.run(n,o);if(s instanceof Promise)return s.then((a)=>Oa(a,t.in,o));return Oa(s,t.in,o)}let r=t.in._zod.run(n,o);if(r instanceof Promise)return r.then((s)=>Oa(s,t.out,o));return Oa(r,t.out,o)}});function Oa(e,t,n){if(e.issues.length)return e.aborted=!0,e;return t._zod.run({value:e.value,issues:e.issues},n)}var jg=B("$ZodReadonly",(e,t)=>{Ke.init(e,t),De(e._zod,"propValues",()=>t.innerType._zod.propValues),De(e._zod,"values",()=>t.innerType._zod.values),De(e._zod,"optin",()=>t.innerType?._zod?.optin),De(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);let r=t.innerType._zod.run(n,o);if(r instanceof Promise)return r.then(Gh);return Gh(r)}});function Gh(e){return e.value=Object.freeze(e.value),e}var Ug=B("$ZodCustom",(e,t)=>{Pt.init(e,t),Ke.init(e,t),e._zod.parse=(n,o)=>n,e._zod.check=(n)=>{let o=n.value,r=t.fn(o);if(r instanceof Promise)return r.then((s)=>Vh(s,n,o,e));Vh(r,n,o,e);return}});function Vh(e,t,n,o){if(!e){let r={code:"custom",input:n,inst:o,path:[...o._zod.def.path??[]],continue:!o._zod.def.abort};if(o._zod.def.params)r.params=o._zod.def.params;t.issues.push(mr(r))}}var X0=()=>{let e={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function t(r){return e[r]??null}let n={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"},o={nan:"NaN"};return(r)=>{switch(r.code){case"invalid_type":{let s=o[r.expected]??r.expected,a=Bf(r.input),c=o[a]??a;return`Invalid input: expected ${s}, received ${c}`}case"invalid_value":if(r.values.length===1)return`Invalid input: expected ${Au(r.values[0])}`;return`Invalid option: expected one of ${ku(r.values,"|")}`;case"too_big":{let s=r.inclusive?"<=":"<",a=t(r.origin);if(a)return`Too big: expected ${r.origin??"value"} to have ${s}${r.maximum.toString()} ${a.unit??"elements"}`;return`Too big: expected ${r.origin??"value"} to be ${s}${r.maximum.toString()}`}case"too_small":{let s=r.inclusive?">=":">",a=t(r.origin);if(a)return`Too small: expected ${r.origin} to have ${s}${r.minimum.toString()} ${a.unit}`;return`Too small: expected ${r.origin} to be ${s}${r.minimum.toString()}`}case"invalid_format":{let s=r;if(s.format==="starts_with")return`Invalid string: must start with "${s.prefix}"`;if(s.format==="ends_with")return`Invalid string: must end with "${s.suffix}"`;if(s.format==="includes")return`Invalid string: must include "${s.includes}"`;if(s.format==="regex")return`Invalid string: must match pattern ${s.pattern}`;return`Invalid ${n[s.format]??r.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${r.divisor}`;case"unrecognized_keys":return`Unrecognized key${r.keys.length>1?"s":""}: ${ku(r.keys,", ")}`;case"invalid_key":return`Invalid key in ${r.origin}`;case"invalid_union":return"Invalid input";case"invalid_element":return`Invalid value in ${r.origin}`;default:return"Invalid input"}}};function Bu(){return{localeError:X0()}}var Zg,DR=Symbol("ZodOutput"),FR=Symbol("ZodInput");class Wg{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];if(this._map.set(e,n),n&&typeof n==="object"&&"id"in n)this._idmap.set(n.id,e);return this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);if(t&&typeof t==="object"&&"id"in t)this._idmap.delete(t.id);return this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let o={...n,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}}function K0(){return new Wg}(Zg=globalThis).__zod_globalRegistry??(Zg.__zod_globalRegistry=K0());var fr=globalThis.__zod_globalRegistry;function qg(e,t){return new e({type:"string",...ee(t)})}function Gg(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...ee(t)})}function Hu(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...ee(t)})}function Vg(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...ee(t)})}function Xg(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...ee(t)})}function Kg(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...ee(t)})}function Jg(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...ee(t)})}function Yg(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...ee(t)})}function Qg(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...ee(t)})}function ev(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...ee(t)})}function tv(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...ee(t)})}function nv(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...ee(t)})}function ov(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...ee(t)})}function rv(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...ee(t)})}function iv(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...ee(t)})}function sv(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...ee(t)})}function av(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...ee(t)})}function cv(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...ee(t)})}function lv(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...ee(t)})}function uv(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...ee(t)})}function dv(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...ee(t)})}function pv(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...ee(t)})}function mv(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...ee(t)})}function fv(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...ee(t)})}function hv(e,t){return new e({type:"string",format:"date",check:"string_format",...ee(t)})}function gv(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...ee(t)})}function vv(e,t){return new e({type:"string",format:"duration",check:"string_format",...ee(t)})}function yv(e,t){return new e({type:"number",checks:[],...ee(t)})}function bv(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...ee(t)})}function xv(e,t){return new e({type:"boolean",...ee(t)})}function wv(e,t){return new e({type:"undefined",...ee(t)})}function _v(e,t){return new e({type:"null",...ee(t)})}function Sv(e){return new e({type:"unknown"})}function kv(e,t){return new e({type:"never",...ee(t)})}function Fa(e,t){return new Ru({check:"less_than",...ee(t),value:e,inclusive:!1})}function cs(e,t){return new Ru({check:"less_than",...ee(t),value:e,inclusive:!0})}function Ba(e,t){return new Mu({check:"greater_than",...ee(t),value:e,inclusive:!1})}function ls(e,t){return new Mu({check:"greater_than",...ee(t),value:e,inclusive:!0})}function Ha(e,t){return new Eh({check:"multiple_of",...ee(t),value:e})}function ja(e,t){return new Ih({check:"max_length",...ee(t),maximum:e})}function Kr(e,t){return new Ph({check:"min_length",...ee(t),minimum:e})}function Ua(e,t){return new Nh({check:"length_equals",...ee(t),length:e})}function ju(e,t){return new zh({check:"string_format",format:"regex",...ee(t),pattern:e})}function Uu(e){return new Rh({check:"string_format",format:"lowercase",...ee(e)})}function Zu(e){return new Mh({check:"string_format",format:"uppercase",...ee(e)})}function Wu(e,t){return new $h({check:"string_format",format:"includes",...ee(t),includes:e})}function qu(e,t){return new Oh({check:"string_format",format:"starts_with",...ee(t),prefix:e})}function Gu(e,t){return new Lh({check:"string_format",format:"ends_with",...ee(t),suffix:e})}function zo(e){return new Dh({check:"overwrite",tx:e})}function Vu(e){return zo((t)=>t.normalize(e))}function Xu(){return zo((e)=>e.trim())}function Ku(){return zo((e)=>e.toLowerCase())}function Ju(){return zo((e)=>e.toUpperCase())}function Yu(){return zo((e)=>$f(e))}function Tv(e,t,n){return new e({type:"array",element:t,...ee(n)})}function Cv(e,t,n){let o=ee(n);return o.abort??(o.abort=!0),new e({type:"custom",check:"custom",fn:t,...o})}function Ev(e,t,n){return new e({type:"custom",check:"custom",fn:t,...ee(n)})}function Av(e){let t=J0((n)=>(n.addIssue=(o)=>{if(typeof o==="string")n.issues.push(mr(o,n.value,t._zod.def));else{let r=o;if(r.fatal)r.continue=!1;r.code??(r.code="custom"),r.input??(r.input=n.value),r.inst??(r.inst=t),r.continue??(r.continue=!t._zod.def.abort),n.issues.push(mr(r))}},e(n.value,n)));return t}function J0(e,t){let n=new Pt({check:"custom",...ee(t)});return n._zod.check=e,n}function Qu(e){let t=e?.target??"draft-2020-12";if(t==="draft-4")t="draft-04";if(t==="draft-7")t="draft-07";return{processors:e.processors??{},metadataRegistry:e?.metadata??fr,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function ft(e,t,n={path:[],schemaPath:[]}){var o;let r=e._zod.def,s=t.seen.get(e);if(s){if(s.count++,n.schemaPath.includes(e))s.cycle=n.path;return s.schema}let a={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,a);let c=e._zod.toJSONSchema?.();if(c)a.schema=c;else{let p={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,a.schema,p);else{let m=a.schema,f=t.processors[r.type];if(!f)throw Error(`[toJSONSchema]: Non-representable type encountered: ${r.type}`);f(e,t,m,p)}let d=e._zod.parent;if(d){if(!a.ref)a.ref=d;ft(d,t,p),t.seen.get(d).isParent=!0}}let l=t.metadataRegistry.get(e);if(l)Object.assign(a.schema,l);if(t.io==="input"&&Xt(e))delete a.schema.examples,delete a.schema.default;if(t.io==="input"&&a.schema._prefault)(o=a.schema).default??(o.default=a.schema._prefault);return delete a.schema._prefault,t.seen.get(e).schema}function ed(e,t){let n=e.seen.get(t);if(!n)throw Error("Unprocessed schema. This is a bug in Zod.");let o=new Map;for(let a of e.seen.entries()){let c=e.metadataRegistry.get(a[0])?.id;if(c){let l=o.get(c);if(l&&l!==a[0])throw Error(`Duplicate schema id "${c}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);o.set(c,a[0])}}let r=(a)=>{let c=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let d=e.external.registry.get(a[0])?.id,m=e.external.uri??((h)=>h);if(d)return{ref:m(d)};let f=a[1].defId??a[1].schema.id??`schema${e.counter++}`;return a[1].defId=f,{defId:f,ref:`${m("__shared")}#/${c}/${f}`}}if(a[1]===n)return{ref:"#"};let u=`${"#"}/${c}/`,p=a[1].schema.id??`__schema${e.counter++}`;return{defId:p,ref:u+p}},s=(a)=>{if(a[1].schema.$ref)return;let c=a[1],{ref:l,defId:u}=r(a);if(c.def={...c.schema},u)c.defId=u;let p=c.schema;for(let d in p)delete p[d];p.$ref=l};if(e.cycles==="throw")for(let a of e.seen.entries()){let c=a[1];if(c.cycle)throw Error(`Cycle detected: #/${c.cycle?.join("/")}/<root>
|
|
58
|
+
`)}m.write("payload.value = newResult;"),m.write("return payload;");let x=m.compile();return(C,v)=>x(f,C,v)},s,a=bs,l=!Cc.jitless,u=l&&Ry.value,d=t.catchall,p;e._zod.parse=(f,m)=>{p??(p=o.value);let h=f.value;if(!a(h))return f.issues.push({expected:"object",code:"invalid_type",input:h,inst:e}),f;if(l&&u&&m?.async===!1&&m.jitless!==!0){if(!s)s=i(t.shape);if(f=s(f,m),!d)return f;return wb([],h,f,m,p,e)}return n(f,m)}});function Lv(e,t,n,o){for(let s of e)if(s.issues.length===0)return t.value=s.value,t;let i=e.filter((s)=>!Ii(s));if(i.length===1)return t.value=i[0].value,i[0];return t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map((s)=>s.issues.map((a)=>jo(a,o,yo())))}),t}var Kp=Q("$ZodUnion",(e,t)=>{Et.init(e,t),dt(e._zod,"optin",()=>t.options.some((i)=>i._zod.optin==="optional")?"optional":void 0),dt(e._zod,"optout",()=>t.options.some((i)=>i._zod.optout==="optional")?"optional":void 0),dt(e._zod,"values",()=>{if(t.options.every((i)=>i._zod.values))return new Set(t.options.flatMap((i)=>Array.from(i._zod.values)));return}),dt(e._zod,"pattern",()=>{if(t.options.every((i)=>i._zod.pattern)){let i=t.options.map((s)=>s._zod.pattern);return new RegExp(`^(${i.map((s)=>Ac(s.source)).join("|")})$`)}return});let n=t.options.length===1,o=t.options[0]._zod.run;e._zod.parse=(i,s)=>{if(n)return o(i,s);let a=!1,l=[];for(let c of t.options){let u=c._zod.run({value:i.value,issues:[]},s);if(u instanceof Promise)l.push(u),a=!0;else{if(u.issues.length===0)return u;l.push(u)}}if(!a)return Lv(l,i,e,s);return Promise.all(l).then((c)=>Lv(c,i,e,s))}});var Sb=Q("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,Kp.init(e,t);let n=e._zod.parse;dt(e._zod,"propValues",()=>{let i={};for(let s of t.options){let a=s._zod.propValues;if(!a||Object.keys(a).length===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(s)}"`);for(let[l,c]of Object.entries(a)){if(!i[l])i[l]=new Set;for(let u of c)i[l].add(u)}}return i});let o=za(()=>{let i=t.options,s=new Map;for(let a of i){let l=a._zod.propValues?.[t.discriminator];if(!l||l.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(a)}"`);for(let c of l){if(s.has(c))throw Error(`Duplicate discriminator value "${String(c)}"`);s.set(c,a)}}return s});e._zod.parse=(i,s)=>{let a=i.value;if(!bs(a))return i.issues.push({code:"invalid_type",expected:"object",input:a,inst:e}),i;let l=o.value.get(a?.[t.discriminator]);if(l)return l._zod.run(i,s);if(t.unionFallback)return n(i,s);return i.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,input:a,path:[t.discriminator],inst:e}),i}}),_b=Q("$ZodIntersection",(e,t)=>{Et.init(e,t),e._zod.parse=(n,o)=>{let i=n.value,s=t.left._zod.run({value:i,issues:[]},o),a=t.right._zod.run({value:i,issues:[]},o);if(s instanceof Promise||a instanceof Promise)return Promise.all([s,a]).then(([c,u])=>Ov(n,c,u));return Ov(n,s,a)}});function qp(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e===+t)return{valid:!0,data:e};if(Ti(e)&&Ti(t)){let n=Object.keys(t),o=Object.keys(e).filter((s)=>n.indexOf(s)!==-1),i={...e,...t};for(let s of o){let a=qp(e[s],t[s]);if(!a.valid)return{valid:!1,mergeErrorPath:[s,...a.mergeErrorPath]};i[s]=a.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let o=0;o<e.length;o++){let i=e[o],s=t[o],a=qp(i,s);if(!a.valid)return{valid:!1,mergeErrorPath:[o,...a.mergeErrorPath]};n.push(a.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function Ov(e,t,n){let o=new Map,i;for(let l of t.issues)if(l.code==="unrecognized_keys"){i??(i=l);for(let c of l.keys){if(!o.has(c))o.set(c,{});o.get(c).l=!0}}else e.issues.push(l);for(let l of n.issues)if(l.code==="unrecognized_keys")for(let c of l.keys){if(!o.has(c))o.set(c,{});o.get(c).r=!0}else e.issues.push(l);let s=[...o].filter(([,l])=>l.l&&l.r).map(([l])=>l);if(s.length&&i)e.issues.push({...i,keys:s});if(Ii(e))return e;let a=qp(t.value,n.value);if(!a.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(a.mergeErrorPath)}`);return e.value=a.data,e}var Cb=Q("$ZodRecord",(e,t)=>{Et.init(e,t),e._zod.parse=(n,o)=>{let i=n.value;if(!Ti(i))return n.issues.push({expected:"record",code:"invalid_type",input:i,inst:e}),n;let s=[],a=t.keyType._zod.values;if(a){n.value={};let l=new Set;for(let u of a)if(typeof u==="string"||typeof u==="number"||typeof u==="symbol"){l.add(typeof u==="number"?u.toString():u);let d=t.valueType._zod.run({value:i[u],issues:[]},o);if(d instanceof Promise)s.push(d.then((p)=>{if(p.issues.length)n.issues.push(...Ur(u,p.issues));n.value[u]=p.value}));else{if(d.issues.length)n.issues.push(...Ur(u,d.issues));n.value[u]=d.value}}let c;for(let u in i)if(!l.has(u))c=c??[],c.push(u);if(c&&c.length>0)n.issues.push({code:"unrecognized_keys",input:i,inst:e,keys:c})}else{n.value={};for(let l of Reflect.ownKeys(i)){if(l==="__proto__")continue;let c=t.keyType._zod.run({value:l,issues:[]},o);if(c instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(typeof l==="string"&&Up.test(l)&&c.issues.length){let p=t.keyType._zod.run({value:Number(l),issues:[]},o);if(p instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(p.issues.length===0)c=p}if(c.issues.length){if(t.mode==="loose")n.value[l]=i[l];else n.issues.push({code:"invalid_key",origin:"record",issues:c.issues.map((p)=>jo(p,o,yo())),input:l,path:[l],inst:e});continue}let d=t.valueType._zod.run({value:i[l],issues:[]},o);if(d instanceof Promise)s.push(d.then((p)=>{if(p.issues.length)n.issues.push(...Ur(l,p.issues));n.value[c.value]=p.value}));else{if(d.issues.length)n.issues.push(...Ur(l,d.issues));n.value[c.value]=d.value}}}if(s.length)return Promise.all(s).then(()=>n);return n}});var Tb=Q("$ZodEnum",(e,t)=>{Et.init(e,t);let n=Ic(t.entries),o=new Set(n);e._zod.values=o,e._zod.pattern=new RegExp(`^(${n.filter((i)=>Py.has(typeof i)).map((i)=>typeof i==="string"?Hr(i):i.toString()).join("|")})$`),e._zod.parse=(i,s)=>{let a=i.value;if(o.has(a))return i;return i.issues.push({code:"invalid_value",values:n,input:a,inst:e}),i}}),Ib=Q("$ZodLiteral",(e,t)=>{if(Et.init(e,t),t.values.length===0)throw Error("Cannot create literal schema with no valid values");let n=new Set(t.values);e._zod.values=n,e._zod.pattern=new RegExp(`^(${t.values.map((o)=>typeof o==="string"?Hr(o):o?Hr(o.toString()):String(o)).join("|")})$`),e._zod.parse=(o,i)=>{let s=o.value;if(n.has(s))return o;return o.issues.push({code:"invalid_value",values:t.values,input:s,inst:e}),o}});var Eb=Q("$ZodTransform",(e,t)=>{Et.init(e,t),e._zod.parse=(n,o)=>{if(o.direction==="backward")throw new Na(e.constructor.name);let i=t.transform(n.value,n);if(o.async)return(i instanceof Promise?i:Promise.resolve(i)).then((a)=>(n.value=a,n));if(i instanceof Promise)throw new fr;return n.value=i,n}});function Dv(e,t){if(e.issues.length&&t===void 0)return{issues:[],value:void 0};return e}var Vp=Q("$ZodOptional",(e,t)=>{Et.init(e,t),e._zod.optin="optional",e._zod.optout="optional",dt(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),dt(e._zod,"pattern",()=>{let n=t.innerType._zod.pattern;return n?new RegExp(`^(${Ac(n.source)})?$`):void 0}),e._zod.parse=(n,o)=>{if(t.innerType._zod.optin==="optional"){let i=t.innerType._zod.run(n,o);if(i instanceof Promise)return i.then((s)=>Dv(s,n.value));return Dv(i,n.value)}if(n.value===void 0)return n;return t.innerType._zod.run(n,o)}}),Ab=Q("$ZodExactOptional",(e,t)=>{Vp.init(e,t),dt(e._zod,"values",()=>t.innerType._zod.values),dt(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(n,o)=>t.innerType._zod.run(n,o)}),Rb=Q("$ZodNullable",(e,t)=>{Et.init(e,t),dt(e._zod,"optin",()=>t.innerType._zod.optin),dt(e._zod,"optout",()=>t.innerType._zod.optout),dt(e._zod,"pattern",()=>{let n=t.innerType._zod.pattern;return n?new RegExp(`^(${Ac(n.source)}|null)$`):void 0}),dt(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(n,o)=>{if(n.value===null)return n;return t.innerType._zod.run(n,o)}}),Pb=Q("$ZodDefault",(e,t)=>{Et.init(e,t),e._zod.optin="optional",dt(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);if(n.value===void 0)return n.value=t.defaultValue,n;let i=t.innerType._zod.run(n,o);if(i instanceof Promise)return i.then((s)=>Bv(s,t));return Bv(i,t)}});function Bv(e,t){if(e.value===void 0)e.value=t.defaultValue;return e}var Nb=Q("$ZodPrefault",(e,t)=>{Et.init(e,t),e._zod.optin="optional",dt(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);if(n.value===void 0)n.value=t.defaultValue;return t.innerType._zod.run(n,o)}}),Mb=Q("$ZodNonOptional",(e,t)=>{Et.init(e,t),dt(e._zod,"values",()=>{let n=t.innerType._zod.values;return n?new Set([...n].filter((o)=>o!==void 0)):void 0}),e._zod.parse=(n,o)=>{let i=t.innerType._zod.run(n,o);if(i instanceof Promise)return i.then((s)=>Fv(s,e));return Fv(i,e)}});function Fv(e,t){if(!e.issues.length&&e.value===void 0)e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t});return e}var zb=Q("$ZodCatch",(e,t)=>{Et.init(e,t),dt(e._zod,"optin",()=>t.innerType._zod.optin),dt(e._zod,"optout",()=>t.innerType._zod.optout),dt(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);let i=t.innerType._zod.run(n,o);if(i instanceof Promise)return i.then((s)=>{if(n.value=s.value,s.issues.length)n.value=t.catchValue({...n,error:{issues:s.issues.map((a)=>jo(a,o,yo()))},input:n.value}),n.issues=[];return n});if(n.value=i.value,i.issues.length)n.value=t.catchValue({...n,error:{issues:i.issues.map((s)=>jo(s,o,yo()))},input:n.value}),n.issues=[];return n}});var $b=Q("$ZodPipe",(e,t)=>{Et.init(e,t),dt(e._zod,"values",()=>t.in._zod.values),dt(e._zod,"optin",()=>t.in._zod.optin),dt(e._zod,"optout",()=>t.out._zod.optout),dt(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(n,o)=>{if(o.direction==="backward"){let s=t.out._zod.run(n,o);if(s instanceof Promise)return s.then((a)=>Lc(a,t.in,o));return Lc(s,t.in,o)}let i=t.in._zod.run(n,o);if(i instanceof Promise)return i.then((s)=>Lc(s,t.out,o));return Lc(i,t.out,o)}});function Lc(e,t,n){if(e.issues.length)return e.aborted=!0,e;return t._zod.run({value:e.value,issues:e.issues},n)}var Lb=Q("$ZodReadonly",(e,t)=>{Et.init(e,t),dt(e._zod,"propValues",()=>t.innerType._zod.propValues),dt(e._zod,"values",()=>t.innerType._zod.values),dt(e._zod,"optin",()=>t.innerType?._zod?.optin),dt(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);let i=t.innerType._zod.run(n,o);if(i instanceof Promise)return i.then(Hv);return Hv(i)}});function Hv(e){return e.value=Object.freeze(e.value),e}var Ob=Q("$ZodCustom",(e,t)=>{wn.init(e,t),Et.init(e,t),e._zod.parse=(n,o)=>n,e._zod.check=(n)=>{let o=n.value,i=t.fn(o);if(i instanceof Promise)return i.then((s)=>Uv(s,n,o,e));Uv(i,n,o,e);return}});function Uv(e,t,n,o){if(!e){let i={code:"custom",input:n,inst:o,path:[...o._zod.def.path??[]],continue:!o._zod.def.abort};if(o._zod.def.params)i.params=o._zod.def.params;t.issues.push(Ei(i))}}var UE=()=>{let e={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function t(i){return e[i]??null}let n={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"},o={nan:"NaN"};return(i)=>{switch(i.code){case"invalid_type":{let s=o[i.expected]??i.expected,a=zy(i.input),l=o[a]??a;return`Invalid input: expected ${s}, received ${l}`}case"invalid_value":if(i.values.length===1)return`Invalid input: expected ${Dp(i.values[0])}`;return`Invalid option: expected one of ${zp(i.values,"|")}`;case"too_big":{let s=i.inclusive?"<=":"<",a=t(i.origin);if(a)return`Too big: expected ${i.origin??"value"} to have ${s}${i.maximum.toString()} ${a.unit??"elements"}`;return`Too big: expected ${i.origin??"value"} to be ${s}${i.maximum.toString()}`}case"too_small":{let s=i.inclusive?">=":">",a=t(i.origin);if(a)return`Too small: expected ${i.origin} to have ${s}${i.minimum.toString()} ${a.unit}`;return`Too small: expected ${i.origin} to be ${s}${i.minimum.toString()}`}case"invalid_format":{let s=i;if(s.format==="starts_with")return`Invalid string: must start with "${s.prefix}"`;if(s.format==="ends_with")return`Invalid string: must end with "${s.suffix}"`;if(s.format==="includes")return`Invalid string: must include "${s.includes}"`;if(s.format==="regex")return`Invalid string: must match pattern ${s.pattern}`;return`Invalid ${n[s.format]??i.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${i.divisor}`;case"unrecognized_keys":return`Unrecognized key${i.keys.length>1?"s":""}: ${zp(i.keys,", ")}`;case"invalid_key":return`Invalid key in ${i.origin}`;case"invalid_union":return"Invalid input";case"invalid_element":return`Invalid value in ${i.origin}`;default:return"Invalid input"}}};function Xp(){return{localeError:UE()}}var Db,$D=Symbol("ZodOutput"),LD=Symbol("ZodInput");class Bb{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];if(this._map.set(e,n),n&&typeof n==="object"&&"id"in n)this._idmap.set(n.id,e);return this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);if(t&&typeof t==="object"&&"id"in t)this._idmap.delete(t.id);return this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let o={...n,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}}function jE(){return new Bb}(Db=globalThis).__zod_globalRegistry??(Db.__zod_globalRegistry=jE());var Ai=globalThis.__zod_globalRegistry;function Fb(e,t){return new e({type:"string",...Re(t)})}function Hb(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...Re(t)})}function Jp(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...Re(t)})}function Ub(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...Re(t)})}function jb(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...Re(t)})}function Zb(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...Re(t)})}function Wb(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...Re(t)})}function qb(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...Re(t)})}function Gb(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...Re(t)})}function Kb(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...Re(t)})}function Vb(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...Re(t)})}function Xb(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...Re(t)})}function Jb(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...Re(t)})}function Yb(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...Re(t)})}function Qb(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...Re(t)})}function ex(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...Re(t)})}function tx(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...Re(t)})}function nx(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...Re(t)})}function ox(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...Re(t)})}function rx(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...Re(t)})}function ix(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...Re(t)})}function sx(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...Re(t)})}function ax(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...Re(t)})}function lx(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...Re(t)})}function cx(e,t){return new e({type:"string",format:"date",check:"string_format",...Re(t)})}function ux(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...Re(t)})}function dx(e,t){return new e({type:"string",format:"duration",check:"string_format",...Re(t)})}function px(e,t){return new e({type:"number",checks:[],...Re(t)})}function fx(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...Re(t)})}function mx(e,t){return new e({type:"boolean",...Re(t)})}function hx(e,t){return new e({type:"undefined",...Re(t)})}function gx(e,t){return new e({type:"null",...Re(t)})}function yx(e){return new e({type:"unknown"})}function vx(e,t){return new e({type:"never",...Re(t)})}function Bc(e,t){return new jp({check:"less_than",...Re(t),value:e,inclusive:!1})}function Ba(e,t){return new jp({check:"less_than",...Re(t),value:e,inclusive:!0})}function Fc(e,t){return new Zp({check:"greater_than",...Re(t),value:e,inclusive:!1})}function Fa(e,t){return new Zp({check:"greater_than",...Re(t),value:e,inclusive:!0})}function Hc(e,t){return new wv({check:"multiple_of",...Re(t),value:e})}function Uc(e,t){return new Sv({check:"max_length",...Re(t),maximum:e})}function xs(e,t){return new _v({check:"min_length",...Re(t),minimum:e})}function jc(e,t){return new Cv({check:"length_equals",...Re(t),length:e})}function Yp(e,t){return new Tv({check:"string_format",format:"regex",...Re(t),pattern:e})}function Qp(e){return new Iv({check:"string_format",format:"lowercase",...Re(e)})}function ef(e){return new Ev({check:"string_format",format:"uppercase",...Re(e)})}function tf(e,t){return new Av({check:"string_format",format:"includes",...Re(t),includes:e})}function nf(e,t){return new Rv({check:"string_format",format:"starts_with",...Re(t),prefix:e})}function of(e,t){return new Pv({check:"string_format",format:"ends_with",...Re(t),suffix:e})}function jr(e){return new Nv({check:"overwrite",tx:e})}function rf(e){return jr((t)=>t.normalize(e))}function sf(){return jr((e)=>e.trim())}function af(){return jr((e)=>e.toLowerCase())}function lf(){return jr((e)=>e.toUpperCase())}function cf(){return jr((e)=>Ay(e))}function bx(e,t,n){return new e({type:"array",element:t,...Re(n)})}function xx(e,t,n){let o=Re(n);return o.abort??(o.abort=!0),new e({type:"custom",check:"custom",fn:t,...o})}function wx(e,t,n){return new e({type:"custom",check:"custom",fn:t,...Re(n)})}function kx(e){let t=ZE((n)=>(n.addIssue=(o)=>{if(typeof o==="string")n.issues.push(Ei(o,n.value,t._zod.def));else{let i=o;if(i.fatal)i.continue=!1;i.code??(i.code="custom"),i.input??(i.input=n.value),i.inst??(i.inst=t),i.continue??(i.continue=!t._zod.def.abort),n.issues.push(Ei(i))}},e(n.value,n)));return t}function ZE(e,t){let n=new wn({check:"custom",...Re(t)});return n._zod.check=e,n}function uf(e){let t=e?.target??"draft-2020-12";if(t==="draft-4")t="draft-04";if(t==="draft-7")t="draft-07";return{processors:e.processors??{},metadataRegistry:e?.metadata??Ai,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function Xt(e,t,n={path:[],schemaPath:[]}){var o;let i=e._zod.def,s=t.seen.get(e);if(s){if(s.count++,n.schemaPath.includes(e))s.cycle=n.path;return s.schema}let a={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,a);let l=e._zod.toJSONSchema?.();if(l)a.schema=l;else{let d={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,a.schema,d);else{let f=a.schema,m=t.processors[i.type];if(!m)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);m(e,t,f,d)}let p=e._zod.parent;if(p){if(!a.ref)a.ref=p;Xt(p,t,d),t.seen.get(p).isParent=!0}}let c=t.metadataRegistry.get(e);if(c)Object.assign(a.schema,c);if(t.io==="input"&&jn(e))delete a.schema.examples,delete a.schema.default;if(t.io==="input"&&a.schema._prefault)(o=a.schema).default??(o.default=a.schema._prefault);return delete a.schema._prefault,t.seen.get(e).schema}function df(e,t){let n=e.seen.get(t);if(!n)throw Error("Unprocessed schema. This is a bug in Zod.");let o=new Map;for(let a of e.seen.entries()){let l=e.metadataRegistry.get(a[0])?.id;if(l){let c=o.get(l);if(c&&c!==a[0])throw Error(`Duplicate schema id "${l}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);o.set(l,a[0])}}let i=(a)=>{let l=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let p=e.external.registry.get(a[0])?.id,f=e.external.uri??((h)=>h);if(p)return{ref:f(p)};let m=a[1].defId??a[1].schema.id??`schema${e.counter++}`;return a[1].defId=m,{defId:m,ref:`${f("__shared")}#/${l}/${m}`}}if(a[1]===n)return{ref:"#"};let u=`${"#"}/${l}/`,d=a[1].schema.id??`__schema${e.counter++}`;return{defId:d,ref:u+d}},s=(a)=>{if(a[1].schema.$ref)return;let l=a[1],{ref:c,defId:u}=i(a);if(l.def={...l.schema},u)l.defId=u;let d=l.schema;for(let p in d)delete d[p];d.$ref=c};if(e.cycles==="throw")for(let a of e.seen.entries()){let l=a[1];if(l.cycle)throw Error(`Cycle detected: #/${l.cycle?.join("/")}/<root>
|
|
59
59
|
|
|
60
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let a of e.seen.entries()){let c=a[1];if(t===a[0]){s(a);continue}if(e.external){let u=e.external.registry.get(a[0])?.id;if(t!==a[0]&&u){s(a);continue}}if(e.metadataRegistry.get(a[0])?.id){s(a);continue}if(c.cycle){s(a);continue}if(c.count>1){if(e.reused==="ref"){s(a);continue}}}}function td(e,t){let n=e.seen.get(t);if(!n)throw Error("Unprocessed schema. This is a bug in Zod.");let o=(a)=>{let c=e.seen.get(a);if(c.ref===null)return;let l=c.def??c.schema,u={...l},p=c.ref;if(c.ref=null,p){o(p);let m=e.seen.get(p),f=m.schema;if(f.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0"))l.allOf=l.allOf??[],l.allOf.push(f);else Object.assign(l,f);if(Object.assign(l,u),a._zod.parent===p)for(let v in l){if(v==="$ref"||v==="allOf")continue;if(!(v in u))delete l[v]}if(f.$ref&&m.def)for(let v in l){if(v==="$ref"||v==="allOf")continue;if(v in m.def&&JSON.stringify(l[v])===JSON.stringify(m.def[v]))delete l[v]}}let d=a._zod.parent;if(d&&d!==p){o(d);let m=e.seen.get(d);if(m?.schema.$ref){if(l.$ref=m.schema.$ref,m.def)for(let f in l){if(f==="$ref"||f==="allOf")continue;if(f in m.def&&JSON.stringify(l[f])===JSON.stringify(m.def[f]))delete l[f]}}}e.override({zodSchema:a,jsonSchema:l,path:c.path??[]})};for(let a of[...e.seen.entries()].reverse())o(a[0]);let r={};if(e.target==="draft-2020-12")r.$schema="https://json-schema.org/draft/2020-12/schema";else if(e.target==="draft-07")r.$schema="http://json-schema.org/draft-07/schema#";else if(e.target==="draft-04")r.$schema="http://json-schema.org/draft-04/schema#";else if(e.target==="openapi-3.0");if(e.external?.uri){let a=e.external.registry.get(t)?.id;if(!a)throw Error("Schema is missing an `id` property");r.$id=e.external.uri(a)}Object.assign(r,n.def??n.schema);let s=e.external?.defs??{};for(let a of e.seen.entries()){let c=a[1];if(c.def&&c.defId)s[c.defId]=c.def}if(e.external);else if(Object.keys(s).length>0)if(e.target==="draft-2020-12")r.$defs=s;else r.definitions=s;try{let a=JSON.parse(JSON.stringify(r));return Object.defineProperty(a,"~standard",{value:{...t["~standard"],jsonSchema:{input:us(t,"input",e.processors),output:us(t,"output",e.processors)}},enumerable:!1,writable:!1}),a}catch(a){throw Error("Error converting schema to JSON.")}}function Xt(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let o=e._zod.def;if(o.type==="transform")return!0;if(o.type==="array")return Xt(o.element,n);if(o.type==="set")return Xt(o.valueType,n);if(o.type==="lazy")return Xt(o.getter(),n);if(o.type==="promise"||o.type==="optional"||o.type==="nonoptional"||o.type==="nullable"||o.type==="readonly"||o.type==="default"||o.type==="prefault")return Xt(o.innerType,n);if(o.type==="intersection")return Xt(o.left,n)||Xt(o.right,n);if(o.type==="record"||o.type==="map")return Xt(o.keyType,n)||Xt(o.valueType,n);if(o.type==="pipe")return Xt(o.in,n)||Xt(o.out,n);if(o.type==="object"){for(let r in o.shape)if(Xt(o.shape[r],n))return!0;return!1}if(o.type==="union"){for(let r of o.options)if(Xt(r,n))return!0;return!1}if(o.type==="tuple"){for(let r of o.items)if(Xt(r,n))return!0;if(o.rest&&Xt(o.rest,n))return!0;return!1}return!1}var Iv=(e,t={})=>(n)=>{let o=Qu({...n,processors:t});return ft(e,o),ed(o,e),td(o,e)},us=(e,t,n={})=>(o)=>{let{libraryOptions:r,target:s}=o??{},a=Qu({...r??{},target:s,io:t,processors:n});return ft(e,a),ed(a,e),td(a,e)};var Y0={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Pv=(e,t,n,o)=>{let r=n;r.type="string";let{minimum:s,maximum:a,format:c,patterns:l,contentEncoding:u}=e._zod.bag;if(typeof s==="number")r.minLength=s;if(typeof a==="number")r.maxLength=a;if(c){if(r.format=Y0[c]??c,r.format==="")delete r.format;if(c==="time")delete r.format}if(u)r.contentEncoding=u;if(l&&l.size>0){let p=[...l];if(p.length===1)r.pattern=p[0].source;else if(p.length>1)r.allOf=[...p.map((d)=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:d.source}))]}},Nv=(e,t,n,o)=>{let r=n,{minimum:s,maximum:a,format:c,multipleOf:l,exclusiveMaximum:u,exclusiveMinimum:p}=e._zod.bag;if(typeof c==="string"&&c.includes("int"))r.type="integer";else r.type="number";if(typeof p==="number")if(t.target==="draft-04"||t.target==="openapi-3.0")r.minimum=p,r.exclusiveMinimum=!0;else r.exclusiveMinimum=p;if(typeof s==="number"){if(r.minimum=s,typeof p==="number"&&t.target!=="draft-04")if(p>=s)delete r.minimum;else delete r.exclusiveMinimum}if(typeof u==="number")if(t.target==="draft-04"||t.target==="openapi-3.0")r.maximum=u,r.exclusiveMaximum=!0;else r.exclusiveMaximum=u;if(typeof a==="number"){if(r.maximum=a,typeof u==="number"&&t.target!=="draft-04")if(u<=a)delete r.maximum;else delete r.exclusiveMaximum}if(typeof l==="number")r.multipleOf=l},zv=(e,t,n,o)=>{n.type="boolean"};var Rv=(e,t,n,o)=>{if(t.target==="openapi-3.0")n.type="string",n.nullable=!0,n.enum=[null];else n.type="null"},Mv=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw Error("Undefined cannot be represented in JSON Schema")};var $v=(e,t,n,o)=>{n.not={}};var Ov=(e,t,n,o)=>{};var Lv=(e,t,n,o)=>{let r=e._zod.def,s=Ea(r.entries);if(s.every((a)=>typeof a==="number"))n.type="number";if(s.every((a)=>typeof a==="string"))n.type="string";n.enum=s},Dv=(e,t,n,o)=>{let r=e._zod.def,s=[];for(let a of r.values)if(a===void 0){if(t.unrepresentable==="throw")throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof a==="bigint")if(t.unrepresentable==="throw")throw Error("BigInt literals cannot be represented in JSON Schema");else s.push(Number(a));else s.push(a);if(s.length===0);else if(s.length===1){let a=s[0];if(n.type=a===null?"null":typeof a,t.target==="draft-04"||t.target==="openapi-3.0")n.enum=[a];else n.const=a}else{if(s.every((a)=>typeof a==="number"))n.type="number";if(s.every((a)=>typeof a==="string"))n.type="string";if(s.every((a)=>typeof a==="boolean"))n.type="boolean";if(s.every((a)=>a===null))n.type="null";n.enum=s}};var Fv=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw Error("Custom types cannot be represented in JSON Schema")};var Bv=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw Error("Transforms cannot be represented in JSON Schema")};var Hv=(e,t,n,o)=>{let r=n,s=e._zod.def,{minimum:a,maximum:c}=e._zod.bag;if(typeof a==="number")r.minItems=a;if(typeof c==="number")r.maxItems=c;r.type="array",r.items=ft(s.element,t,{...o,path:[...o.path,"items"]})},jv=(e,t,n,o)=>{let r=n,s=e._zod.def;r.type="object",r.properties={};let a=s.shape;for(let u in a)r.properties[u]=ft(a[u],t,{...o,path:[...o.path,"properties",u]});let c=new Set(Object.keys(a)),l=new Set([...c].filter((u)=>{let p=s.shape[u]._zod;if(t.io==="input")return p.optin===void 0;else return p.optout===void 0}));if(l.size>0)r.required=Array.from(l);if(s.catchall?._zod.def.type==="never")r.additionalProperties=!1;else if(!s.catchall){if(t.io==="output")r.additionalProperties=!1}else if(s.catchall)r.additionalProperties=ft(s.catchall,t,{...o,path:[...o.path,"additionalProperties"]})},Uv=(e,t,n,o)=>{let r=e._zod.def,s=r.inclusive===!1,a=r.options.map((c,l)=>ft(c,t,{...o,path:[...o.path,s?"oneOf":"anyOf",l]}));if(s)n.oneOf=a;else n.anyOf=a},Zv=(e,t,n,o)=>{let r=e._zod.def,s=ft(r.left,t,{...o,path:[...o.path,"allOf",0]}),a=ft(r.right,t,{...o,path:[...o.path,"allOf",1]}),c=(u)=>("allOf"in u)&&Object.keys(u).length===1,l=[...c(s)?s.allOf:[s],...c(a)?a.allOf:[a]];n.allOf=l};var Wv=(e,t,n,o)=>{let r=n,s=e._zod.def;r.type="object";let a=s.keyType,l=a._zod.bag?.patterns;if(s.mode==="loose"&&l&&l.size>0){let p=ft(s.valueType,t,{...o,path:[...o.path,"patternProperties","*"]});r.patternProperties={};for(let d of l)r.patternProperties[d.source]=p}else{if(t.target==="draft-07"||t.target==="draft-2020-12")r.propertyNames=ft(s.keyType,t,{...o,path:[...o.path,"propertyNames"]});r.additionalProperties=ft(s.valueType,t,{...o,path:[...o.path,"additionalProperties"]})}let u=a._zod.values;if(u){let p=[...u].filter((d)=>typeof d==="string"||typeof d==="number");if(p.length>0)r.required=p}},qv=(e,t,n,o)=>{let r=e._zod.def,s=ft(r.innerType,t,o),a=t.seen.get(e);if(t.target==="openapi-3.0")a.ref=r.innerType,n.nullable=!0;else n.anyOf=[s,{type:"null"}]},Gv=(e,t,n,o)=>{let r=e._zod.def;ft(r.innerType,t,o);let s=t.seen.get(e);s.ref=r.innerType},Vv=(e,t,n,o)=>{let r=e._zod.def;ft(r.innerType,t,o);let s=t.seen.get(e);s.ref=r.innerType,n.default=JSON.parse(JSON.stringify(r.defaultValue))},Xv=(e,t,n,o)=>{let r=e._zod.def;ft(r.innerType,t,o);let s=t.seen.get(e);if(s.ref=r.innerType,t.io==="input")n._prefault=JSON.parse(JSON.stringify(r.defaultValue))},Kv=(e,t,n,o)=>{let r=e._zod.def;ft(r.innerType,t,o);let s=t.seen.get(e);s.ref=r.innerType;let a;try{a=r.catchValue(void 0)}catch{throw Error("Dynamic catch values are not supported in JSON Schema")}n.default=a},Jv=(e,t,n,o)=>{let r=e._zod.def,s=t.io==="input"?r.in._zod.def.type==="transform"?r.out:r.in:r.out;ft(s,t,o);let a=t.seen.get(e);a.ref=s},Yv=(e,t,n,o)=>{let r=e._zod.def;ft(r.innerType,t,o);let s=t.seen.get(e);s.ref=r.innerType,n.readOnly=!0};var nd=(e,t,n,o)=>{let r=e._zod.def;ft(r.innerType,t,o);let s=t.seen.get(e);s.ref=r.innerType};var sT=B("ZodISODateTime",(e,t)=>{sg.init(e,t),nt.init(e,t)});function od(e){return fv(sT,e)}var aT=B("ZodISODate",(e,t)=>{ag.init(e,t),nt.init(e,t)});function Qv(e){return hv(aT,e)}var cT=B("ZodISOTime",(e,t)=>{cg.init(e,t),nt.init(e,t)});function ey(e){return gv(cT,e)}var lT=B("ZodISODuration",(e,t)=>{lg.init(e,t),nt.init(e,t)});function ty(e){return vv(lT,e)}var ny=(e,t)=>{Na.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:(n)=>Uf(e,n)},flatten:{value:(n)=>jf(e,n)},addIssue:{value:(n)=>{e.issues.push(n),e.message=JSON.stringify(e.issues,ns,2)}},addIssues:{value:(n)=>{e.issues.push(...n),e.message=JSON.stringify(e.issues,ns,2)}},isEmpty:{get(){return e.issues.length===0}}})},hM=B("ZodError",ny),dn=B("ZodError",ny,{Parent:Error});var oy=za(dn),ry=Ra(dn),iy=rs(dn),sy=ss(dn),ay=Zf(dn),cy=Wf(dn),ly=qf(dn),uy=Gf(dn),dy=Vf(dn),py=Xf(dn),my=Kf(dn),fy=Jf(dn);var tt=B("ZodType",(e,t)=>(Ke.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:us(e,"input"),output:us(e,"output")}}),e.toJSONSchema=Iv(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone(Io(t,{checks:[...t.checks??[],...n.map((o)=>typeof o==="function"?{_zod:{check:o,def:{check:"custom"},onattach:[]}}:o)]}),{parent:!0}),e.with=e.check,e.clone=(n,o)=>Wn(e,n,o),e.brand=()=>e,e.register=(n,o)=>(n.add(e,o),e),e.parse=(n,o)=>oy(e,n,o,{callee:e.parse}),e.safeParse=(n,o)=>iy(e,n,o),e.parseAsync=async(n,o)=>ry(e,n,o,{callee:e.parseAsync}),e.safeParseAsync=async(n,o)=>sy(e,n,o),e.spa=e.safeParseAsync,e.encode=(n,o)=>ay(e,n,o),e.decode=(n,o)=>cy(e,n,o),e.encodeAsync=async(n,o)=>ly(e,n,o),e.decodeAsync=async(n,o)=>uy(e,n,o),e.safeEncode=(n,o)=>dy(e,n,o),e.safeDecode=(n,o)=>py(e,n,o),e.safeEncodeAsync=async(n,o)=>my(e,n,o),e.safeDecodeAsync=async(n,o)=>fy(e,n,o),e.refine=(n,o)=>e.check(tC(n,o)),e.superRefine=(n)=>e.check(nC(n)),e.overwrite=(n)=>e.check(zo(n)),e.optional=()=>at(e),e.exactOptional=()=>UT(e),e.nullable=()=>vy(e),e.nullish=()=>at(vy(e)),e.nonoptional=(n)=>XT(e,n),e.array=()=>he(e),e.or=(n)=>Ae([e,n]),e.and=(n)=>Wa(e,n),e.transform=(n)=>sd(e,Sy(n)),e.default=(n)=>qT(e,n),e.prefault=(n)=>VT(e,n),e.catch=(n)=>JT(e,n),e.pipe=(n)=>sd(e,n),e.readonly=()=>eC(e),e.describe=(n)=>{let o=e.clone();return fr.add(o,{description:n}),o},Object.defineProperty(e,"description",{get(){return fr.get(e)?.description},configurable:!0}),e.meta=(...n)=>{if(n.length===0)return fr.get(e);let o=e.clone();return fr.add(o,n[0]),o},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=(n)=>n(e),e)),yy=B("_ZodString",(e,t)=>{Da.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(o,r,s)=>Pv(e,o,r,s);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...o)=>e.check(ju(...o)),e.includes=(...o)=>e.check(Wu(...o)),e.startsWith=(...o)=>e.check(qu(...o)),e.endsWith=(...o)=>e.check(Gu(...o)),e.min=(...o)=>e.check(Kr(...o)),e.max=(...o)=>e.check(ja(...o)),e.length=(...o)=>e.check(Ua(...o)),e.nonempty=(...o)=>e.check(Kr(1,...o)),e.lowercase=(o)=>e.check(Uu(o)),e.uppercase=(o)=>e.check(Zu(o)),e.trim=()=>e.check(Xu()),e.normalize=(...o)=>e.check(Vu(...o)),e.toLowerCase=()=>e.check(Ku()),e.toUpperCase=()=>e.check(Ju()),e.slugify=()=>e.check(Yu())}),pT=B("ZodString",(e,t)=>{Da.init(e,t),yy.init(e,t),e.email=(n)=>e.check(Gg(mT,n)),e.url=(n)=>e.check(Yg(fT,n)),e.jwt=(n)=>e.check(mv(IT,n)),e.emoji=(n)=>e.check(Qg(hT,n)),e.guid=(n)=>e.check(Hu(hy,n)),e.uuid=(n)=>e.check(Vg(Za,n)),e.uuidv4=(n)=>e.check(Xg(Za,n)),e.uuidv6=(n)=>e.check(Kg(Za,n)),e.uuidv7=(n)=>e.check(Jg(Za,n)),e.nanoid=(n)=>e.check(ev(gT,n)),e.guid=(n)=>e.check(Hu(hy,n)),e.cuid=(n)=>e.check(tv(vT,n)),e.cuid2=(n)=>e.check(nv(yT,n)),e.ulid=(n)=>e.check(ov(bT,n)),e.base64=(n)=>e.check(uv(CT,n)),e.base64url=(n)=>e.check(dv(ET,n)),e.xid=(n)=>e.check(rv(xT,n)),e.ksuid=(n)=>e.check(iv(wT,n)),e.ipv4=(n)=>e.check(sv(_T,n)),e.ipv6=(n)=>e.check(av(ST,n)),e.cidrv4=(n)=>e.check(cv(kT,n)),e.cidrv6=(n)=>e.check(lv(TT,n)),e.e164=(n)=>e.check(pv(AT,n)),e.datetime=(n)=>e.check(od(n)),e.date=(n)=>e.check(Qv(n)),e.time=(n)=>e.check(ey(n)),e.duration=(n)=>e.check(ty(n))});function P(e){return qg(pT,e)}var nt=B("ZodStringFormat",(e,t)=>{et.init(e,t),yy.init(e,t)}),mT=B("ZodEmail",(e,t)=>{Jh.init(e,t),nt.init(e,t)});var hy=B("ZodGUID",(e,t)=>{Xh.init(e,t),nt.init(e,t)});var Za=B("ZodUUID",(e,t)=>{Kh.init(e,t),nt.init(e,t)});var fT=B("ZodURL",(e,t)=>{Yh.init(e,t),nt.init(e,t)});var hT=B("ZodEmoji",(e,t)=>{Qh.init(e,t),nt.init(e,t)});var gT=B("ZodNanoID",(e,t)=>{eg.init(e,t),nt.init(e,t)});var vT=B("ZodCUID",(e,t)=>{tg.init(e,t),nt.init(e,t)});var yT=B("ZodCUID2",(e,t)=>{ng.init(e,t),nt.init(e,t)});var bT=B("ZodULID",(e,t)=>{og.init(e,t),nt.init(e,t)});var xT=B("ZodXID",(e,t)=>{rg.init(e,t),nt.init(e,t)});var wT=B("ZodKSUID",(e,t)=>{ig.init(e,t),nt.init(e,t)});var _T=B("ZodIPv4",(e,t)=>{ug.init(e,t),nt.init(e,t)});var ST=B("ZodIPv6",(e,t)=>{dg.init(e,t),nt.init(e,t)});var kT=B("ZodCIDRv4",(e,t)=>{pg.init(e,t),nt.init(e,t)});var TT=B("ZodCIDRv6",(e,t)=>{mg.init(e,t),nt.init(e,t)});var CT=B("ZodBase64",(e,t)=>{hg.init(e,t),nt.init(e,t)});var ET=B("ZodBase64URL",(e,t)=>{gg.init(e,t),nt.init(e,t)});var AT=B("ZodE164",(e,t)=>{vg.init(e,t),nt.init(e,t)});var IT=B("ZodJWT",(e,t)=>{yg.init(e,t),nt.init(e,t)});var by=B("ZodNumber",(e,t)=>{Lu.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(o,r,s)=>Nv(e,o,r,s),e.gt=(o,r)=>e.check(Ba(o,r)),e.gte=(o,r)=>e.check(ls(o,r)),e.min=(o,r)=>e.check(ls(o,r)),e.lt=(o,r)=>e.check(Fa(o,r)),e.lte=(o,r)=>e.check(cs(o,r)),e.max=(o,r)=>e.check(cs(o,r)),e.int=(o)=>e.check(gy(o)),e.safe=(o)=>e.check(gy(o)),e.positive=(o)=>e.check(Ba(0,o)),e.nonnegative=(o)=>e.check(ls(0,o)),e.negative=(o)=>e.check(Fa(0,o)),e.nonpositive=(o)=>e.check(cs(0,o)),e.multipleOf=(o,r)=>e.check(Ha(o,r)),e.step=(o,r)=>e.check(Ha(o,r)),e.finite=()=>e;let n=e._zod.bag;e.minValue=Math.max(n.minimum??Number.NEGATIVE_INFINITY,n.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(n.maximum??Number.POSITIVE_INFINITY,n.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(n.format??"").includes("int")||Number.isSafeInteger(n.multipleOf??0.5),e.isFinite=!0,e.format=n.format??null});function ge(e){return yv(by,e)}var PT=B("ZodNumberFormat",(e,t)=>{bg.init(e,t),by.init(e,t)});function gy(e){return bv(PT,e)}var NT=B("ZodBoolean",(e,t)=>{xg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>zv(e,n,o,r)});function Xe(e){return xv(NT,e)}var zT=B("ZodUndefined",(e,t)=>{wg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Mv(e,n,o,r)});function ad(e){return wv(zT,e)}var RT=B("ZodNull",(e,t)=>{_g.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Rv(e,n,o,r)});function cd(e){return _v(RT,e)}var MT=B("ZodUnknown",(e,t)=>{Sg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Ov(e,n,o,r)});function qe(){return Sv(MT)}var $T=B("ZodNever",(e,t)=>{kg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>$v(e,n,o,r)});function xy(e){return kv($T,e)}var OT=B("ZodArray",(e,t)=>{Tg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Hv(e,n,o,r),e.element=t.element,e.min=(n,o)=>e.check(Kr(n,o)),e.nonempty=(n)=>e.check(Kr(1,n)),e.max=(n,o)=>e.check(ja(n,o)),e.length=(n,o)=>e.check(Ua(n,o)),e.unwrap=()=>e.element});function he(e,t){return Tv(OT,e,t)}var ld=B("ZodObject",(e,t)=>{Ag.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>jv(e,n,o,r),De(e,"shape",()=>t.shape),e.keyof=()=>Jt(Object.keys(e._zod.def.shape)),e.catchall=(n)=>e.clone({...e._zod.def,catchall:n}),e.passthrough=()=>e.clone({...e._zod.def,catchall:qe()}),e.loose=()=>e.clone({...e._zod.def,catchall:qe()}),e.strict=()=>e.clone({...e._zod.def,catchall:xy()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=(n)=>L0(e,n),e.safeExtend=(n)=>D0(e,n),e.merge=(n)=>F0(e,n),e.pick=(n)=>$0(e,n),e.omit=(n)=>O0(e,n),e.partial=(...n)=>B0(ky,e,n[0]),e.required=(...n)=>H0(Ty,e,n[0])});function O(e,t){let n={type:"object",shape:e??{},...ee(t)};return new ld(n)}function wy(e,t){return new ld({type:"object",shape:e,catchall:xy(),...ee(t)})}function Kt(e,t){return new ld({type:"object",shape:e,catchall:qe(),...ee(t)})}var _y=B("ZodUnion",(e,t)=>{Du.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Uv(e,n,o,r),e.options=t.options});function Ae(e,t){return new _y({type:"union",options:e,...ee(t)})}var LT=B("ZodDiscriminatedUnion",(e,t)=>{_y.init(e,t),Ig.init(e,t)});function ud(e,t,n){return new LT({type:"union",options:t,discriminator:e,...ee(n)})}var DT=B("ZodIntersection",(e,t)=>{Pg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Zv(e,n,o,r)});function Wa(e,t){return new DT({type:"intersection",left:e,right:t})}var FT=B("ZodRecord",(e,t)=>{Ng.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Wv(e,n,o,r),e.keyType=t.keyType,e.valueType=t.valueType});function Ze(e,t,n){return new FT({type:"record",keyType:e,valueType:t,...ee(n)})}var id=B("ZodEnum",(e,t)=>{zg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(o,r,s)=>Lv(e,o,r,s),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(o,r)=>{let s={};for(let a of o)if(n.has(a))s[a]=t.entries[a];else throw Error(`Key ${a} not found in enum`);return new id({...t,checks:[],...ee(r),entries:s})},e.exclude=(o,r)=>{let s={...t.entries};for(let a of o)if(n.has(a))delete s[a];else throw Error(`Key ${a} not found in enum`);return new id({...t,checks:[],...ee(r),entries:s})}});function Jt(e,t){let n=Array.isArray(e)?Object.fromEntries(e.map((o)=>[o,o])):e;return new id({type:"enum",entries:n,...ee(t)})}var BT=B("ZodLiteral",(e,t)=>{Rg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Dv(e,n,o,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function C(e,t){return new BT({type:"literal",values:Array.isArray(e)?e:[e],...ee(t)})}var HT=B("ZodTransform",(e,t)=>{Mg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Bv(e,n,o,r),e._zod.parse=(n,o)=>{if(o.direction==="backward")throw new ts(e.constructor.name);n.addIssue=(s)=>{if(typeof s==="string")n.issues.push(mr(s,n.value,t));else{let a=s;if(a.fatal)a.continue=!1;a.code??(a.code="custom"),a.input??(a.input=n.value),a.inst??(a.inst=e),n.issues.push(mr(a))}};let r=t.transform(n.value,n);if(r instanceof Promise)return r.then((s)=>(n.value=s,n));return n.value=r,n}});function Sy(e){return new HT({type:"transform",transform:e})}var ky=B("ZodOptional",(e,t)=>{Fu.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>nd(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function at(e){return new ky({type:"optional",innerType:e})}var jT=B("ZodExactOptional",(e,t)=>{$g.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>nd(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function UT(e){return new jT({type:"optional",innerType:e})}var ZT=B("ZodNullable",(e,t)=>{Og.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>qv(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function vy(e){return new ZT({type:"nullable",innerType:e})}var WT=B("ZodDefault",(e,t)=>{Lg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Vv(e,n,o,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function qT(e,t){return new WT({type:"default",innerType:e,get defaultValue(){return typeof t==="function"?t():Eu(t)}})}var GT=B("ZodPrefault",(e,t)=>{Dg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Xv(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function VT(e,t){return new GT({type:"prefault",innerType:e,get defaultValue(){return typeof t==="function"?t():Eu(t)}})}var Ty=B("ZodNonOptional",(e,t)=>{Fg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Gv(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function XT(e,t){return new Ty({type:"nonoptional",innerType:e,...ee(t)})}var KT=B("ZodCatch",(e,t)=>{Bg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Kv(e,n,o,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function JT(e,t){return new KT({type:"catch",innerType:e,catchValue:typeof t==="function"?t:()=>t})}var YT=B("ZodPipe",(e,t)=>{Hg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Jv(e,n,o,r),e.in=t.in,e.out=t.out});function sd(e,t){return new YT({type:"pipe",in:e,out:t})}var QT=B("ZodReadonly",(e,t)=>{jg.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Yv(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function eC(e){return new QT({type:"readonly",innerType:e})}var Cy=B("ZodCustom",(e,t)=>{Ug.init(e,t),tt.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Fv(e,n,o,r)});function Ey(e,t){return Cv(Cy,e??(()=>!0),t)}function tC(e,t={}){return Ev(Cy,e,t)}function nC(e){return Av(e)}function dd(e,t){return sd(Sy(e),t)}Sn(Bu());var pd=O({x:ge(),y:ge(),scale:ge().positive()}),oC=O({target:Ae([wy({nodeId:P().min(1)}),wy({viewport:pd})]),duration:ge().nonnegative().max(3600).optional(),easing:Jt(["linear","ease-in-out","ease-out"]).optional(),padding:ge().nonnegative().optional(),pullback:ge().min(0).max(4).optional()}),P$=O({stops:he(oC).max(1000)});function Ay(e,t,n,o){if("viewport"in e.target)return e.target.viewport;let r=e.target.nodeId,s=t.find((l)=>l.id===r);if(!s)throw Error(`Tour target not found: ${r}`);let a=e.padding??40;if(a*2>=Math.min(n,o))throw Error("Tour padding exceeds viewport");let c=Math.min((n-a*2)/s.size.width,(o-a*2)/s.size.height);return{x:n/2-(s.position.x+s.size.width/2)*c,y:o/2-(s.position.y+s.size.height/2)*c,scale:c}}function Iy(e,t,n,o,r,s="ease-in-out",a=0){let c=Math.max(0,Math.min(1,n));if(c===0)return{...e};if(c===1)return{...t};let l=s==="linear"?c:s==="ease-out"?1-(1-c)**3:c*c*(3-2*c),u=Math.exp(Math.log(e.scale)*(1-l)+Math.log(t.scale)*l-a*Math.sin(Math.PI*l)),p=(o/2-e.x)/e.scale*(1-l)+(o/2-t.x)/t.scale*l,d=(r/2-e.y)/e.scale*(1-l)+(r/2-t.y)/t.scale*l;return{x:o/2-p*u,y:r/2-d*u,scale:u}}var md=null;function Py(e){md=e}function bt(){if(md?.isConnected){let e=md.getBoundingClientRect();if(e.width>0&&e.height>0)return{left:e.left,top:e.top,width:e.width,height:e.height}}return{left:0,top:0,width:window.innerWidth,height:window.innerHeight}}function Ro(){let e=bt();return{x:e.left+e.width/2,y:e.top+e.height/2}}function fd(){let e=16;try{let t=bt(),n=t.top+t.height;for(let o of[".command-bar",".minimap"]){let r=document.querySelector(o);if(!(r instanceof HTMLElement)||!r.isConnected)continue;let s=r.getBoundingClientRect();if(s.height<=0)continue;let a=n-s.top;if(a>0)e=Math.max(e,a+12)}}catch{}return{top:16,right:16,bottom:e,left:16}}var rC=Symbol.for("preact-signals");function Ka(){if(!(ao>1)){var e,t=!1;(function(){var r=Va;Va=void 0;while(r!==void 0){if(r.S.v===r.v)r.S.i=r.i;r=r.o}})();while(ps!==void 0){var n=ps;ps=void 0,Ga++;while(n!==void 0){var o=n.u;if(n.u=void 0,n.f&=-3,!(8&n.f)&&Ry(n))try{n.c()}catch(r){if(!t)e=r,t=!0}n=o}}if(Ga=0,ao--,t)throw e}else ao--}function pn(e){if(ao>0)return e();hd=++iC,ao++;try{return e()}finally{Ka()}}var He=void 0;function gd(e){var t=He;He=void 0;try{return e()}finally{He=t}}var Ny,ps=void 0,ao=0,Ga=0,iC=0,hd=0,Va=void 0,Xa=0;function zy(e){if(He!==void 0){var t=e.n;if(t===void 0||t.t!==He){if(t={i:0,S:e,p:He.s,n:void 0,t:He,e:void 0,x:void 0,r:t},He.s!==void 0)He.s.n=t;if(He.s=t,e.n=t,32&He.f)e.S(t);return t}else if(t.i===-1){if(t.i=0,t.n!==void 0){if(t.n.p=t.p,t.p!==void 0)t.p.n=t.n;t.p=He.s,t.n=void 0,He.s.n=t,He.s=t}return t}}}function xt(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=t==null?void 0:t.watched,this.Z=t==null?void 0:t.unwatched,this.name=t==null?void 0:t.name}xt.prototype.brand=rC;xt.prototype.h=function(){return!0};xt.prototype.S=function(e){var t=this,n=this.t;if(n!==e&&e.e===void 0)if(e.x=n,this.t=e,n!==void 0)n.e=e;else gd(function(){var o;(o=t.W)==null||o.call(t)})};xt.prototype.U=function(e){var t=this;if(this.t!==void 0){var{e:n,x:o}=e;if(n!==void 0)n.x=o,e.e=void 0;if(o!==void 0)o.e=n,e.x=void 0;if(e===this.t){if(this.t=o,o===void 0)gd(function(){var r;(r=t.Z)==null||r.call(t)})}}};xt.prototype.subscribe=function(e){var t=this;return nn(function(){var n=t.value,o=He;He=void 0;try{e(n)}finally{He=o}},{name:"sub"})};xt.prototype.valueOf=function(){return this.value};xt.prototype.toString=function(){return this.value+""};xt.prototype.toJSON=function(){return this.value};xt.prototype.peek=function(){var e=He;He=void 0;try{return this.value}finally{He=e}};Object.defineProperty(xt.prototype,"value",{get:function(){var e=zy(this);if(e!==void 0)e.i=this.i;return this.v},set:function(e){if(e!==this.v){if(Ga>100)throw Error("Cycle detected");(function(n){if(ao!==0&&Ga===0){if(n.l!==hd)n.l=hd,Va={S:n,v:n.v,i:n.i,o:Va}}})(this),this.v=e,this.i++,Xa++,ao++;try{for(var t=this.t;t!==void 0;t=t.x)t.t.N()}finally{Ka()}}}});function K(e,t){return new xt(e,t)}function Ry(e){for(var t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function My(e){for(var t=e.s;t!==void 0;t=t.n){var n=t.S.n;if(n!==void 0)t.r=n;if(t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function $y(e){var t=e.s,n=void 0;while(t!==void 0){var o=t.p;if(t.i===-1){if(t.S.U(t),o!==void 0)o.n=t.n;if(t.n!==void 0)t.n.p=o}else n=t;if(t.S.n=t.r,t.r!==void 0)t.r=void 0;t=o}e.s=n}function hr(e,t){xt.call(this,void 0),this.x=e,this.s=void 0,this.g=Xa-1,this.f=4,this.W=t==null?void 0:t.watched,this.Z=t==null?void 0:t.unwatched,this.name=t==null?void 0:t.name}hr.prototype=new xt;hr.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===Xa)return!0;if(this.g=Xa,this.f|=1,this.i>0&&!Ry(this))return this.f&=-2,!0;var e=He;try{My(this),He=this;var t=this.x();if(16&this.f||this.v!==t||this.i===0)this.v=t,this.f&=-17,this.i++}catch(n){this.v=n,this.f|=16,this.i++}return He=e,$y(this),this.f&=-2,!0};hr.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(var t=this.s;t!==void 0;t=t.n)t.S.S(t)}xt.prototype.S.call(this,e)};hr.prototype.U=function(e){if(this.t!==void 0){if(xt.prototype.U.call(this,e),this.t===void 0){this.f&=-33;for(var t=this.s;t!==void 0;t=t.n)t.S.U(t)}}};hr.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;e!==void 0;e=e.x)e.t.N()}};Object.defineProperty(hr.prototype,"value",{get:function(){if(1&this.f)throw Error("Cycle detected");var e=zy(this);if(this.h(),e!==void 0)e.i=this.i;if(16&this.f)throw this.v;return this.v}});function Ge(e,t){return new hr(e,t)}function Oy(e){var t=e.m;if(e.m=void 0,typeof t=="function"){ao++;var n=He;He=void 0;try{t()}catch(o){throw e.f&=-2,e.f|=8,vd(e),o}finally{He=n,Ka()}}}function vd(e){for(var t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,Oy(e)}function sC(e){if(He!==this)throw Error("Out-of-order effect");if($y(this),He=e,this.f&=-2,8&this.f)vd(this);Ka()}function Jr(e,t){if(this.x=e,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=t==null?void 0:t.name,Ny)Ny.push(this)}Jr.prototype.c=function(){var e=this.S();try{if(8&this.f)return;if(this.x===void 0)return;var t=this.x();if(typeof t=="function")this.m=t}finally{e()}};Jr.prototype.S=function(){if(1&this.f)throw Error("Cycle detected");this.f|=1,this.f&=-9,Oy(this),My(this),ao++;var e=He;return He=this,sC.bind(this,e)};Jr.prototype.N=function(){if(!(2&this.f))this.f|=2,this.u=ps,ps=this};Jr.prototype.d=function(){if(this.f|=8,!(1&this.f))vd(this)};Jr.prototype.dispose=function(){this.d()};function nn(e,t){var n=new Jr(e,t);try{n.c()}catch(r){throw n.d(),r}var o=n.d.bind(n);return o[Symbol.dispose]=o,o}var Ly,yd,Ja,aC=typeof window<"u"&&!!window.__PREACT_SIGNALS_DEVTOOLS__;var Dy=[];nn(function(){Ly=this.N})();function Yr(e,t){$e[e]=t.bind(null,$e[e]||function(){})}function Ya(e){if(Ja){var t=Ja;Ja=void 0,t()}Ja=e&&e.S()}function Fy(e){var t=this,n=e.data,o=lC(n);o.value=n;var r=Be(function(){var c=t,l=t.__v;while(l=l.__)if(l.__c){l.__c.__$f|=4;break}var u=Ge(function(){var f=o.value.value;return f===0?0:f===!0?"":f||""}),p=Ge(function(){return!Array.isArray(u.value)&&!hu(u.value)}),d=nn(function(){if(this.N=By,p.value){var f=u.value;if(c.__v&&c.__v.__e&&c.__v.__e.nodeType===3)c.__v.__e.data=f}}),m=t.__$u.d;return t.__$u.d=function(){d(),m.call(this)},[p,u]},[]),s=r[0],a=r[1];return s.value?a.peek():a.value}Fy.displayName="ReactiveTextNode";Object.defineProperties(xt.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:Fy},props:{configurable:!0,get:function(){var e=this;return{data:{get value(){return e.value}}}}},__b:{configurable:!0,value:1}});Yr("__b",function(e,t){if(typeof t.type=="string"){var n,o=t.props;for(var r in o)if(r!=="children"){var s=o[r];if(s instanceof xt){if(!n)t.__np=n={};n[r]=s,o[r]=s.peek()}}}e(t)});Yr("__r",function(e,t){if(e(t),t.type!==_e){Ya();var n,o=t.__c;if(o){if(o.__$f&=-2,(n=o.__$u)===void 0)o.__$u=n=function(r,s){var a;return nn(function(){a=this},{name:s}),a.c=r,a}(function(){var r;if(aC)(r=n.y)==null||r.call(n);o.__$f|=1,o.setState({})},typeof t.type=="function"?t.type.displayName||t.type.name:"")}yd=o,Ya(n)}});Yr("__e",function(e,t,n,o){Ya(),yd=void 0,e(t,n,o)});Yr("diffed",function(e,t){Ya(),yd=void 0;var n;if(typeof t.type=="string"&&(n=t.__e)){var{__np:o,props:r}=t;if(o){var s=n.U;if(s)for(var a in s){var c=s[a];if(c!==void 0&&!(a in o))c.d(),s[a]=void 0}else s={},n.U=s;for(var l in o){var u=s[l],p=o[l];if(u===void 0)u=cC(n,l,p),s[l]=u;else u.o(p,r)}for(var d in o)r[d]=o[d]}}e(t)});function cC(e,t,n,o){var r=t in e&&e.ownerSVGElement===void 0,s=K(n),a=n.peek();return{o:function(c,l){s.value=c,a=c.peek()},d:nn(function(){this.N=By;var c=s.value.value;if(a!==c)if(a=void 0,r)e[t]=c;else if(c!=null&&(c!==!1||t[4]==="-"))e.setAttribute(t,c);else e.removeAttribute(t);else a=void 0})}}Yr("unmount",function(e,t){if(typeof t.type=="string"){var n=t.__e;if(n){var o=n.U;if(o){n.U=void 0;for(var r in o){var s=o[r];if(s)s.d()}}}t.__np=void 0}else{var a=t.__c;if(a){var c=a.__$u;if(c)a.__$u=void 0,c.d()}}e(t)});Yr("__h",function(e,t,n,o){if(o<3||o===9)t.__$f|=2;e(t,n,o)});qr.prototype.shouldComponentUpdate=function(e,t){if(this.__R)return!0;var n=this.__$u,o=n&&n.s!==void 0;for(var r in t)return!0;if(this.__f||typeof this.u=="boolean"&&this.u===!0){var s=2&this.__$f;if(!(o||s||4&this.__$f))return!0;if(1&this.__$f)return!0}else{if(!(o||4&this.__$f))return!0;if(3&this.__$f)return!0}for(var a in e)if(a!=="__source"&&e[a]!==this.props[a])return!0;for(var c in this.props)if(!(c in e))return!0;return!1};function lC(e,t){return Be(function(){return K(e,t)},[])}var uC=function(e){queueMicrotask(function(){queueMicrotask(e)})};function dC(){pn(function(){var e;while(e=Dy.shift())Ly.call(e)})}function By(){if(Dy.push(this)===1)($e.requestAnimationFrame||uC)(dC)}var Nt={markdown:"MD","mcp-app":"APP",webpage:"WEB","json-render":"UI",graph:"GRAPH",board:"BOARD",prompt:"ASK",response:"ANS",status:"STATUS",context:"CONTEXT",ledger:"LOG",trace:"TRACE",file:"FILE",diff:"DIFF",mermaid:"MERMAID",image:"IMG",html:"HTML",group:"GROUP"},ms=new Set(["markdown","mcp-app","webpage","json-render","graph","context","ledger","file","diff","mermaid","image","html"]);function Hy(e){return e.type==="mcp-app"&&e.data.mode==="ext-app"&&e.data.serverName==="Excalidraw"&&e.data.toolName==="create_view"}function jy(e){if(e.length===0)return null;let{POSITIVE_INFINITY:t,POSITIVE_INFINITY:n,NEGATIVE_INFINITY:o,NEGATIVE_INFINITY:r}=Number;for(let s of e)t=Math.min(t,s.position.x),n=Math.min(n,s.position.y),o=Math.max(o,s.position.x+s.size.width),r=Math.max(r,s.position.y+s.size.height);if(!Number.isFinite(t)||!Number.isFinite(n))return null;return{x:t-40,y:n-40-32,width:o-t+80,height:r-n+80+32}}function pC(e){let t=e.filter((l)=>!l.pinned),n=new Map(t.map((l)=>[l.id,l])),o=new Map,r=[],s=new Map;for(let l of t){if(l.type==="group")continue;let u=typeof l.data.parentGroup==="string"?l.data.parentGroup:"",p=u?n.get(u):void 0;if(!p||p.type!=="group")continue;if(!s.has(u))s.set(u,[]);s.get(u).push(l)}let a=t.filter((l)=>l.type==="group").sort((l,u)=>l.position.y-u.position.y||l.position.x-u.position.x);for(let l of a){let u=s.get(l.id)??[];if(u.length===0){let f=`unit:${l.id}`;r.push({id:f,memberIds:[l.id],origin:{...l.position},size:{...l.size},sortKey:{x:l.position.x,y:l.position.y}}),o.set(l.id,f);continue}let p=u.map((f)=>({position:f.position,size:f.size})),d=jy(p);if(!d)continue;let m=`group:${l.id}`;r.push({id:m,memberIds:u.map((f)=>f.id),origin:{x:d.x,y:d.y},size:{width:d.width,height:d.height},sortKey:{x:d.x,y:d.y},groupId:l.id}),o.set(l.id,m);for(let f of u)o.set(f.id,m)}let c=t.filter((l)=>!o.has(l.id)).sort((l,u)=>l.position.y-u.position.y||l.position.x-u.position.x);for(let l of c){let u=`unit:${l.id}`;r.push({id:u,memberIds:[l.id],origin:{...l.position},size:{...l.size},sortKey:{x:l.position.x,y:l.position.y}}),o.set(l.id,u)}return{units:r,nodesById:n,nodeToUnit:o}}function mC(e,t,n){let o=new Map,r=new Map,s=new Map,a=new Map;for(let c of e)o.set(c.id,new Set),r.set(c.id,new Set),s.set(c.id,0),a.set(c.id,0);for(let c of n){let l=t.get(c.from),u=t.get(c.to);if(!l||!u||l===u)continue;if(!o.get(l).has(u))o.get(l).add(u),a.set(l,(a.get(l)??0)+1),s.set(u,(s.get(u)??0)+1);r.get(l).add(u),r.get(u).add(l)}return{outgoing:o,undirected:r,indegree:s,outdegree:a}}function fC(e,t){let n=new Map(e.map((s)=>[s.id,s])),o=new Set,r=[];for(let s of e){if(o.has(s.id))continue;let a=[s.id],c=[];o.add(s.id);while(a.length>0){let u=a.pop();c.push(u);for(let p of t.get(u)??[]){if(o.has(p))continue;o.add(p),a.push(p)}}let l=c.map((u)=>n.get(u)).filter((u)=>u!==void 0).sort((u,p)=>u.sortKey.y-p.sortKey.y||u.sortKey.x-p.sortKey.x);r.push(l)}return r.sort((s,a)=>s[0].sortKey.y-a[0].sortKey.y||s[0].sortKey.x-a[0].sortKey.x)}function hC(e){let t=new Map,n=0,o=0,r=0,s=0,a=Math.max(900,Math.ceil(Math.sqrt(e.reduce((c,l)=>c+l.size.width*l.size.height,0))));for(let c of e){if(n>0&&n+c.size.width>a)n=0,o+=r+72,r=0;t.set(c.id,{x:n,y:o}),n+=c.size.width+96,r=Math.max(r,c.size.height),s=Math.max(s,n-96)}return{positions:t,size:{width:Math.max(0,s),height:o+r},sortKey:e[0].sortKey}}function gC(e,t,n,o,r){if(e.length===1)return{positions:new Map([[e[0].id,{x:0,y:0}]]),size:{...e[0].size},sortKey:e[0].sortKey};let s=new Set(e.map((b)=>b.id)),a=e.filter((b)=>(o.get(b.id)??0)===0&&(r.get(b.id)??0)>0).sort((b,I)=>b.sortKey.x-I.sortKey.x||b.sortKey.y-I.sortKey.y),c=a.length>0?a:[e.slice().sort((b,I)=>b.sortKey.x-I.sortKey.x||b.sortKey.y-I.sortKey.y)[0]],l=new Map,u=c.map((b)=>b.id);for(let b of c)l.set(b.id,0);while(u.length>0){let b=u.shift(),I=l.get(b)??0;for(let R of n.get(b)??[]){if(!s.has(R)||l.has(R))continue;l.set(R,I+1),u.push(R)}}let p=0;for(let b of e){if(l.has(b.id))continue;l.set(b.id,p),p+=1}let d=new Map;for(let b of e){let I=l.get(b.id)??0;if(!d.has(I))d.set(I,[]);d.get(I).push(b)}let m=Array.from(d.keys()).sort((b,I)=>b-I);for(let b of m)d.get(b).sort((I,R)=>I.sortKey.y-R.sortKey.y||I.sortKey.x-R.sortKey.x);let f=new Map,h=new Map,v=0;for(let b of m){let I=d.get(b),R=I.reduce((_,N,w)=>_+N.size.height+(w>0?72:0),0),M=Math.max(...I.map((_)=>_.size.width));f.set(b,R),h.set(b,M),v=Math.max(v,R)}let x=new Map,g=0;for(let b of m){let I=d.get(b),R=f.get(b)??0,M=h.get(b)??0,_=Math.max(0,(v-R)/2);for(let N of I)x.set(N.id,{x:g,y:_}),_+=N.size.height+72;g+=M+96}return{positions:x,size:{width:Math.max(0,g-96),height:v},sortKey:e[0].sortKey}}function vC(e,t){let n=new Map(e.map((l)=>[l.id,l.id])),o=(l)=>{let u=l;while(n.get(u)!==u)u=n.get(u);let p=l;while(n.get(p)!==p){let d=n.get(p);n.set(p,u),p=d}return u},r=(l,u)=>{let p=o(l),d=o(u);if(p!==d)n.set(p,d)},s=160;for(let l=0;l<e.length;l++)for(let u=l+1;u<e.length;u++){let p=e[l],d=e[u];if(p.origin.x-160<d.origin.x+d.size.width+160&&p.origin.x+p.size.width+160>d.origin.x-160&&p.origin.y-160<d.origin.y+d.size.height+160&&p.origin.y+p.size.height+160>d.origin.y-160)r(p.id,d.id)}for(let[l,u]of t)for(let p of u)if(n.has(l)&&n.has(p))r(l,p);let a=new Map;for(let l of e){let u=o(l.id);if(!a.has(u))a.set(u,[]);a.get(u).push(l)}let c=Array.from(a.values());for(let l of c)l.sort((u,p)=>u.sortKey.y-p.sortKey.y||u.sortKey.x-p.sortKey.x);return c.sort((l,u)=>l[0].sortKey.y-u[0].sortKey.y||l[0].sortKey.x-u[0].sortKey.x)}function yC(e,t){let n=new Map,{x:o,y:r}=t,s=0;for(let a of e){if(o>t.x&&o-t.x+a.size.width>3200)o=t.x,r+=s+180,s=0;for(let[c,l]of a.positions.entries())n.set(c,{x:o+l.x,y:r+l.y});o+=a.size.width+220,s=Math.max(s,a.size.height)}return n}function bd(e,t,n){let{units:o,nodesById:r,nodeToUnit:s}=pC(e),a=new Map,c=new Map;if(o.length===0)return{nodePositions:a,groupBounds:c};let{outgoing:l,undirected:u,indegree:p,outdegree:d}=mC(o,s,t),m=vC(o,u),f=new Map,h=[];for(let v of m){let x=fC(v,u).map((_)=>n==="graph"?gC(_,l,u,p,d):hC(_)),g={x:Math.min(...v.map((_)=>_.origin.x)),y:Math.min(...v.map((_)=>_.origin.y))},b=yC(x,g),I=new Map(v.map((_)=>[_.id,_.size])),R=(_)=>{let{POSITIVE_INFINITY:N,POSITIVE_INFINITY:w,NEGATIVE_INFINITY:k,NEGATIVE_INFINITY:z}=Number;for(let[X,W]of _){let J=I.get(X);if(!J)continue;N=Math.min(N,W.x),w=Math.min(w,W.y),k=Math.max(k,W.x+J.width),z=Math.max(z,W.y+J.height)}return{x:N,y:w,width:k-N,height:z-w}},M=b;for(let _=0;_<=h.length;_++){let N=R(M),w=h.filter((X)=>N.x<X.x+X.width+220&&N.x+N.width+220>X.x&&N.y<X.y+X.height+180&&N.y+N.height+180>X.y);if(w.length===0)break;let k=Math.max(...w.map((X)=>X.y+X.height))+180-N.y;if(k<=0)break;let z=new Map;for(let[X,W]of M)z.set(X,{x:W.x,y:W.y+k});M=z}for(let[_,N]of M)f.set(_,N);h.push(R(M))}for(let v of o){let x=f.get(v.id);if(!x)continue;let g=x.x-v.origin.x,b=x.y-v.origin.y;if(v.groupId){let M=[];for(let N of v.memberIds){let w=r.get(N);if(!w)continue;let k={x:w.position.x+g,y:w.position.y+b};a.set(N,k),M.push({position:k,size:w.size})}let _=jy(M);if(_)c.set(v.groupId,_);continue}let I=v.memberIds[0],R=r.get(I);if(!R)continue;a.set(I,{x:R.position.x+g,y:R.position.y+b})}return{nodePositions:a,groupBounds:c}}var bC=700,xC=1600;function wC(e){return e.replace(/\r\n?/g,`
|
|
60
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let a of e.seen.entries()){let l=a[1];if(t===a[0]){s(a);continue}if(e.external){let u=e.external.registry.get(a[0])?.id;if(t!==a[0]&&u){s(a);continue}}if(e.metadataRegistry.get(a[0])?.id){s(a);continue}if(l.cycle){s(a);continue}if(l.count>1){if(e.reused==="ref"){s(a);continue}}}}function pf(e,t){let n=e.seen.get(t);if(!n)throw Error("Unprocessed schema. This is a bug in Zod.");let o=(a)=>{let l=e.seen.get(a);if(l.ref===null)return;let c=l.def??l.schema,u={...c},d=l.ref;if(l.ref=null,d){o(d);let f=e.seen.get(d),m=f.schema;if(m.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0"))c.allOf=c.allOf??[],c.allOf.push(m);else Object.assign(c,m);if(Object.assign(c,u),a._zod.parent===d)for(let g in c){if(g==="$ref"||g==="allOf")continue;if(!(g in u))delete c[g]}if(m.$ref&&f.def)for(let g in c){if(g==="$ref"||g==="allOf")continue;if(g in f.def&&JSON.stringify(c[g])===JSON.stringify(f.def[g]))delete c[g]}}let p=a._zod.parent;if(p&&p!==d){o(p);let f=e.seen.get(p);if(f?.schema.$ref){if(c.$ref=f.schema.$ref,f.def)for(let m in c){if(m==="$ref"||m==="allOf")continue;if(m in f.def&&JSON.stringify(c[m])===JSON.stringify(f.def[m]))delete c[m]}}}e.override({zodSchema:a,jsonSchema:c,path:l.path??[]})};for(let a of[...e.seen.entries()].reverse())o(a[0]);let i={};if(e.target==="draft-2020-12")i.$schema="https://json-schema.org/draft/2020-12/schema";else if(e.target==="draft-07")i.$schema="http://json-schema.org/draft-07/schema#";else if(e.target==="draft-04")i.$schema="http://json-schema.org/draft-04/schema#";else if(e.target==="openapi-3.0");if(e.external?.uri){let a=e.external.registry.get(t)?.id;if(!a)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(a)}Object.assign(i,n.def??n.schema);let s=e.external?.defs??{};for(let a of e.seen.entries()){let l=a[1];if(l.def&&l.defId)s[l.defId]=l.def}if(e.external);else if(Object.keys(s).length>0)if(e.target==="draft-2020-12")i.$defs=s;else i.definitions=s;try{let a=JSON.parse(JSON.stringify(i));return Object.defineProperty(a,"~standard",{value:{...t["~standard"],jsonSchema:{input:Ha(t,"input",e.processors),output:Ha(t,"output",e.processors)}},enumerable:!1,writable:!1}),a}catch(a){throw Error("Error converting schema to JSON.")}}function jn(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let o=e._zod.def;if(o.type==="transform")return!0;if(o.type==="array")return jn(o.element,n);if(o.type==="set")return jn(o.valueType,n);if(o.type==="lazy")return jn(o.getter(),n);if(o.type==="promise"||o.type==="optional"||o.type==="nonoptional"||o.type==="nullable"||o.type==="readonly"||o.type==="default"||o.type==="prefault")return jn(o.innerType,n);if(o.type==="intersection")return jn(o.left,n)||jn(o.right,n);if(o.type==="record"||o.type==="map")return jn(o.keyType,n)||jn(o.valueType,n);if(o.type==="pipe")return jn(o.in,n)||jn(o.out,n);if(o.type==="object"){for(let i in o.shape)if(jn(o.shape[i],n))return!0;return!1}if(o.type==="union"){for(let i of o.options)if(jn(i,n))return!0;return!1}if(o.type==="tuple"){for(let i of o.items)if(jn(i,n))return!0;if(o.rest&&jn(o.rest,n))return!0;return!1}return!1}var Sx=(e,t={})=>(n)=>{let o=uf({...n,processors:t});return Xt(e,o),df(o,e),pf(o,e)},Ha=(e,t,n={})=>(o)=>{let{libraryOptions:i,target:s}=o??{},a=uf({...i??{},target:s,io:t,processors:n});return Xt(e,a),df(a,e),pf(a,e)};var WE={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},_x=(e,t,n,o)=>{let i=n;i.type="string";let{minimum:s,maximum:a,format:l,patterns:c,contentEncoding:u}=e._zod.bag;if(typeof s==="number")i.minLength=s;if(typeof a==="number")i.maxLength=a;if(l){if(i.format=WE[l]??l,i.format==="")delete i.format;if(l==="time")delete i.format}if(u)i.contentEncoding=u;if(c&&c.size>0){let d=[...c];if(d.length===1)i.pattern=d[0].source;else if(d.length>1)i.allOf=[...d.map((p)=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:p.source}))]}},Cx=(e,t,n,o)=>{let i=n,{minimum:s,maximum:a,format:l,multipleOf:c,exclusiveMaximum:u,exclusiveMinimum:d}=e._zod.bag;if(typeof l==="string"&&l.includes("int"))i.type="integer";else i.type="number";if(typeof d==="number")if(t.target==="draft-04"||t.target==="openapi-3.0")i.minimum=d,i.exclusiveMinimum=!0;else i.exclusiveMinimum=d;if(typeof s==="number"){if(i.minimum=s,typeof d==="number"&&t.target!=="draft-04")if(d>=s)delete i.minimum;else delete i.exclusiveMinimum}if(typeof u==="number")if(t.target==="draft-04"||t.target==="openapi-3.0")i.maximum=u,i.exclusiveMaximum=!0;else i.exclusiveMaximum=u;if(typeof a==="number"){if(i.maximum=a,typeof u==="number"&&t.target!=="draft-04")if(u<=a)delete i.maximum;else delete i.exclusiveMaximum}if(typeof c==="number")i.multipleOf=c},Tx=(e,t,n,o)=>{n.type="boolean"};var Ix=(e,t,n,o)=>{if(t.target==="openapi-3.0")n.type="string",n.nullable=!0,n.enum=[null];else n.type="null"},Ex=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw Error("Undefined cannot be represented in JSON Schema")};var Ax=(e,t,n,o)=>{n.not={}};var Rx=(e,t,n,o)=>{};var Px=(e,t,n,o)=>{let i=e._zod.def,s=Ic(i.entries);if(s.every((a)=>typeof a==="number"))n.type="number";if(s.every((a)=>typeof a==="string"))n.type="string";n.enum=s},Nx=(e,t,n,o)=>{let i=e._zod.def,s=[];for(let a of i.values)if(a===void 0){if(t.unrepresentable==="throw")throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof a==="bigint")if(t.unrepresentable==="throw")throw Error("BigInt literals cannot be represented in JSON Schema");else s.push(Number(a));else s.push(a);if(s.length===0);else if(s.length===1){let a=s[0];if(n.type=a===null?"null":typeof a,t.target==="draft-04"||t.target==="openapi-3.0")n.enum=[a];else n.const=a}else{if(s.every((a)=>typeof a==="number"))n.type="number";if(s.every((a)=>typeof a==="string"))n.type="string";if(s.every((a)=>typeof a==="boolean"))n.type="boolean";if(s.every((a)=>a===null))n.type="null";n.enum=s}};var Mx=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw Error("Custom types cannot be represented in JSON Schema")};var zx=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw Error("Transforms cannot be represented in JSON Schema")};var $x=(e,t,n,o)=>{let i=n,s=e._zod.def,{minimum:a,maximum:l}=e._zod.bag;if(typeof a==="number")i.minItems=a;if(typeof l==="number")i.maxItems=l;i.type="array",i.items=Xt(s.element,t,{...o,path:[...o.path,"items"]})},Lx=(e,t,n,o)=>{let i=n,s=e._zod.def;i.type="object",i.properties={};let a=s.shape;for(let u in a)i.properties[u]=Xt(a[u],t,{...o,path:[...o.path,"properties",u]});let l=new Set(Object.keys(a)),c=new Set([...l].filter((u)=>{let d=s.shape[u]._zod;if(t.io==="input")return d.optin===void 0;else return d.optout===void 0}));if(c.size>0)i.required=Array.from(c);if(s.catchall?._zod.def.type==="never")i.additionalProperties=!1;else if(!s.catchall){if(t.io==="output")i.additionalProperties=!1}else if(s.catchall)i.additionalProperties=Xt(s.catchall,t,{...o,path:[...o.path,"additionalProperties"]})},Ox=(e,t,n,o)=>{let i=e._zod.def,s=i.inclusive===!1,a=i.options.map((l,c)=>Xt(l,t,{...o,path:[...o.path,s?"oneOf":"anyOf",c]}));if(s)n.oneOf=a;else n.anyOf=a},Dx=(e,t,n,o)=>{let i=e._zod.def,s=Xt(i.left,t,{...o,path:[...o.path,"allOf",0]}),a=Xt(i.right,t,{...o,path:[...o.path,"allOf",1]}),l=(u)=>("allOf"in u)&&Object.keys(u).length===1,c=[...l(s)?s.allOf:[s],...l(a)?a.allOf:[a]];n.allOf=c};var Bx=(e,t,n,o)=>{let i=n,s=e._zod.def;i.type="object";let a=s.keyType,c=a._zod.bag?.patterns;if(s.mode==="loose"&&c&&c.size>0){let d=Xt(s.valueType,t,{...o,path:[...o.path,"patternProperties","*"]});i.patternProperties={};for(let p of c)i.patternProperties[p.source]=d}else{if(t.target==="draft-07"||t.target==="draft-2020-12")i.propertyNames=Xt(s.keyType,t,{...o,path:[...o.path,"propertyNames"]});i.additionalProperties=Xt(s.valueType,t,{...o,path:[...o.path,"additionalProperties"]})}let u=a._zod.values;if(u){let d=[...u].filter((p)=>typeof p==="string"||typeof p==="number");if(d.length>0)i.required=d}},Fx=(e,t,n,o)=>{let i=e._zod.def,s=Xt(i.innerType,t,o),a=t.seen.get(e);if(t.target==="openapi-3.0")a.ref=i.innerType,n.nullable=!0;else n.anyOf=[s,{type:"null"}]},Hx=(e,t,n,o)=>{let i=e._zod.def;Xt(i.innerType,t,o);let s=t.seen.get(e);s.ref=i.innerType},Ux=(e,t,n,o)=>{let i=e._zod.def;Xt(i.innerType,t,o);let s=t.seen.get(e);s.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},jx=(e,t,n,o)=>{let i=e._zod.def;Xt(i.innerType,t,o);let s=t.seen.get(e);if(s.ref=i.innerType,t.io==="input")n._prefault=JSON.parse(JSON.stringify(i.defaultValue))},Zx=(e,t,n,o)=>{let i=e._zod.def;Xt(i.innerType,t,o);let s=t.seen.get(e);s.ref=i.innerType;let a;try{a=i.catchValue(void 0)}catch{throw Error("Dynamic catch values are not supported in JSON Schema")}n.default=a},Wx=(e,t,n,o)=>{let i=e._zod.def,s=t.io==="input"?i.in._zod.def.type==="transform"?i.out:i.in:i.out;Xt(s,t,o);let a=t.seen.get(e);a.ref=s},qx=(e,t,n,o)=>{let i=e._zod.def;Xt(i.innerType,t,o);let s=t.seen.get(e);s.ref=i.innerType,n.readOnly=!0};var ff=(e,t,n,o)=>{let i=e._zod.def;Xt(i.innerType,t,o);let s=t.seen.get(e);s.ref=i.innerType};var QE=Q("ZodISODateTime",(e,t)=>{eb.init(e,t),Ot.init(e,t)});function mf(e){return lx(QE,e)}var eA=Q("ZodISODate",(e,t)=>{tb.init(e,t),Ot.init(e,t)});function Gx(e){return cx(eA,e)}var tA=Q("ZodISOTime",(e,t)=>{nb.init(e,t),Ot.init(e,t)});function Kx(e){return ux(tA,e)}var nA=Q("ZodISODuration",(e,t)=>{ob.init(e,t),Ot.init(e,t)});function Vx(e){return dx(nA,e)}var Xx=(e,t)=>{Pc.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:(n)=>Oy(e,n)},flatten:{value:(n)=>Ly(e,n)},addIssue:{value:(n)=>{e.issues.push(n),e.message=JSON.stringify(e.issues,Ma,2)}},addIssues:{value:(n)=>{e.issues.push(...n),e.message=JSON.stringify(e.issues,Ma,2)}},isEmpty:{get(){return e.issues.length===0}}})},p2=Q("ZodError",Xx),no=Q("ZodError",Xx,{Parent:Error});var Jx=Nc(no),Yx=Mc(no),Qx=$a(no),ew=Oa(no),tw=Dy(no),nw=By(no),ow=Fy(no),rw=Hy(no),iw=Uy(no),sw=jy(no),aw=Zy(no),lw=Wy(no);var Nt=Q("ZodType",(e,t)=>(Et.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:Ha(e,"input"),output:Ha(e,"output")}}),e.toJSONSchema=Sx(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone(Fr(t,{checks:[...t.checks??[],...n.map((o)=>typeof o==="function"?{_zod:{check:o,def:{check:"custom"},onattach:[]}}:o)]}),{parent:!0}),e.with=e.check,e.clone=(n,o)=>Uo(e,n,o),e.brand=()=>e,e.register=(n,o)=>(n.add(e,o),e),e.parse=(n,o)=>Jx(e,n,o,{callee:e.parse}),e.safeParse=(n,o)=>Qx(e,n,o),e.parseAsync=async(n,o)=>Yx(e,n,o,{callee:e.parseAsync}),e.safeParseAsync=async(n,o)=>ew(e,n,o),e.spa=e.safeParseAsync,e.encode=(n,o)=>tw(e,n,o),e.decode=(n,o)=>nw(e,n,o),e.encodeAsync=async(n,o)=>ow(e,n,o),e.decodeAsync=async(n,o)=>rw(e,n,o),e.safeEncode=(n,o)=>iw(e,n,o),e.safeDecode=(n,o)=>sw(e,n,o),e.safeEncodeAsync=async(n,o)=>aw(e,n,o),e.safeDecodeAsync=async(n,o)=>lw(e,n,o),e.refine=(n,o)=>e.check(KA(n,o)),e.superRefine=(n)=>e.check(VA(n)),e.overwrite=(n)=>e.check(jr(n)),e.optional=()=>Zt(e),e.exactOptional=()=>LA(e),e.nullable=()=>dw(e),e.nullish=()=>Zt(dw(e)),e.nonoptional=(n)=>UA(e,n),e.array=()=>We(e),e.or=(n)=>rt([e,n]),e.and=(n)=>Wc(e,n),e.transform=(n)=>yf(e,gw(n)),e.default=(n)=>BA(e,n),e.prefault=(n)=>HA(e,n),e.catch=(n)=>ZA(e,n),e.pipe=(n)=>yf(e,n),e.readonly=()=>GA(e),e.describe=(n)=>{let o=e.clone();return Ai.add(o,{description:n}),o},Object.defineProperty(e,"description",{get(){return Ai.get(e)?.description},configurable:!0}),e.meta=(...n)=>{if(n.length===0)return Ai.get(e);let o=e.clone();return Ai.add(o,n[0]),o},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=(n)=>n(e),e)),pw=Q("_ZodString",(e,t)=>{Dc.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(o,i,s)=>_x(e,o,i,s);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...o)=>e.check(Yp(...o)),e.includes=(...o)=>e.check(tf(...o)),e.startsWith=(...o)=>e.check(nf(...o)),e.endsWith=(...o)=>e.check(of(...o)),e.min=(...o)=>e.check(xs(...o)),e.max=(...o)=>e.check(Uc(...o)),e.length=(...o)=>e.check(jc(...o)),e.nonempty=(...o)=>e.check(xs(1,...o)),e.lowercase=(o)=>e.check(Qp(o)),e.uppercase=(o)=>e.check(ef(o)),e.trim=()=>e.check(sf()),e.normalize=(...o)=>e.check(rf(...o)),e.toLowerCase=()=>e.check(af()),e.toUpperCase=()=>e.check(lf()),e.slugify=()=>e.check(cf())}),iA=Q("ZodString",(e,t)=>{Dc.init(e,t),pw.init(e,t),e.email=(n)=>e.check(Hb(sA,n)),e.url=(n)=>e.check(qb(aA,n)),e.jwt=(n)=>e.check(ax(kA,n)),e.emoji=(n)=>e.check(Gb(lA,n)),e.guid=(n)=>e.check(Jp(cw,n)),e.uuid=(n)=>e.check(Ub(Zc,n)),e.uuidv4=(n)=>e.check(jb(Zc,n)),e.uuidv6=(n)=>e.check(Zb(Zc,n)),e.uuidv7=(n)=>e.check(Wb(Zc,n)),e.nanoid=(n)=>e.check(Kb(cA,n)),e.guid=(n)=>e.check(Jp(cw,n)),e.cuid=(n)=>e.check(Vb(uA,n)),e.cuid2=(n)=>e.check(Xb(dA,n)),e.ulid=(n)=>e.check(Jb(pA,n)),e.base64=(n)=>e.check(rx(bA,n)),e.base64url=(n)=>e.check(ix(xA,n)),e.xid=(n)=>e.check(Yb(fA,n)),e.ksuid=(n)=>e.check(Qb(mA,n)),e.ipv4=(n)=>e.check(ex(hA,n)),e.ipv6=(n)=>e.check(tx(gA,n)),e.cidrv4=(n)=>e.check(nx(yA,n)),e.cidrv6=(n)=>e.check(ox(vA,n)),e.e164=(n)=>e.check(sx(wA,n)),e.datetime=(n)=>e.check(mf(n)),e.date=(n)=>e.check(Gx(n)),e.time=(n)=>e.check(Kx(n)),e.duration=(n)=>e.check(Vx(n))});function U(e){return Fb(iA,e)}var Ot=Q("ZodStringFormat",(e,t)=>{Pt.init(e,t),pw.init(e,t)}),sA=Q("ZodEmail",(e,t)=>{Wv.init(e,t),Ot.init(e,t)});var cw=Q("ZodGUID",(e,t)=>{jv.init(e,t),Ot.init(e,t)});var Zc=Q("ZodUUID",(e,t)=>{Zv.init(e,t),Ot.init(e,t)});var aA=Q("ZodURL",(e,t)=>{qv.init(e,t),Ot.init(e,t)});var lA=Q("ZodEmoji",(e,t)=>{Gv.init(e,t),Ot.init(e,t)});var cA=Q("ZodNanoID",(e,t)=>{Kv.init(e,t),Ot.init(e,t)});var uA=Q("ZodCUID",(e,t)=>{Vv.init(e,t),Ot.init(e,t)});var dA=Q("ZodCUID2",(e,t)=>{Xv.init(e,t),Ot.init(e,t)});var pA=Q("ZodULID",(e,t)=>{Jv.init(e,t),Ot.init(e,t)});var fA=Q("ZodXID",(e,t)=>{Yv.init(e,t),Ot.init(e,t)});var mA=Q("ZodKSUID",(e,t)=>{Qv.init(e,t),Ot.init(e,t)});var hA=Q("ZodIPv4",(e,t)=>{rb.init(e,t),Ot.init(e,t)});var gA=Q("ZodIPv6",(e,t)=>{ib.init(e,t),Ot.init(e,t)});var yA=Q("ZodCIDRv4",(e,t)=>{sb.init(e,t),Ot.init(e,t)});var vA=Q("ZodCIDRv6",(e,t)=>{ab.init(e,t),Ot.init(e,t)});var bA=Q("ZodBase64",(e,t)=>{cb.init(e,t),Ot.init(e,t)});var xA=Q("ZodBase64URL",(e,t)=>{ub.init(e,t),Ot.init(e,t)});var wA=Q("ZodE164",(e,t)=>{db.init(e,t),Ot.init(e,t)});var kA=Q("ZodJWT",(e,t)=>{pb.init(e,t),Ot.init(e,t)});var fw=Q("ZodNumber",(e,t)=>{Gp.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(o,i,s)=>Cx(e,o,i,s),e.gt=(o,i)=>e.check(Fc(o,i)),e.gte=(o,i)=>e.check(Fa(o,i)),e.min=(o,i)=>e.check(Fa(o,i)),e.lt=(o,i)=>e.check(Bc(o,i)),e.lte=(o,i)=>e.check(Ba(o,i)),e.max=(o,i)=>e.check(Ba(o,i)),e.int=(o)=>e.check(uw(o)),e.safe=(o)=>e.check(uw(o)),e.positive=(o)=>e.check(Fc(0,o)),e.nonnegative=(o)=>e.check(Fa(0,o)),e.negative=(o)=>e.check(Bc(0,o)),e.nonpositive=(o)=>e.check(Ba(0,o)),e.multipleOf=(o,i)=>e.check(Hc(o,i)),e.step=(o,i)=>e.check(Hc(o,i)),e.finite=()=>e;let n=e._zod.bag;e.minValue=Math.max(n.minimum??Number.NEGATIVE_INFINITY,n.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(n.maximum??Number.POSITIVE_INFINITY,n.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(n.format??"").includes("int")||Number.isSafeInteger(n.multipleOf??0.5),e.isFinite=!0,e.format=n.format??null});function Ze(e){return px(fw,e)}var SA=Q("ZodNumberFormat",(e,t)=>{fb.init(e,t),fw.init(e,t)});function uw(e){return fx(SA,e)}var _A=Q("ZodBoolean",(e,t)=>{mb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Tx(e,n,o,i)});function ht(e){return mx(_A,e)}var CA=Q("ZodUndefined",(e,t)=>{hb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Ex(e,n,o,i)});function vf(e){return hx(CA,e)}var TA=Q("ZodNull",(e,t)=>{gb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Ix(e,n,o,i)});function bf(e){return gx(TA,e)}var IA=Q("ZodUnknown",(e,t)=>{yb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Rx(e,n,o,i)});function _t(){return yx(IA)}var EA=Q("ZodNever",(e,t)=>{vb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Ax(e,n,o,i)});function mw(e){return vx(EA,e)}var AA=Q("ZodArray",(e,t)=>{bb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>$x(e,n,o,i),e.element=t.element,e.min=(n,o)=>e.check(xs(n,o)),e.nonempty=(n)=>e.check(xs(1,n)),e.max=(n,o)=>e.check(Uc(n,o)),e.length=(n,o)=>e.check(jc(n,o)),e.unwrap=()=>e.element});function We(e,t){return bx(AA,e,t)}var xf=Q("ZodObject",(e,t)=>{kb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Lx(e,n,o,i),dt(e,"shape",()=>t.shape),e.keyof=()=>fn(Object.keys(e._zod.def.shape)),e.catchall=(n)=>e.clone({...e._zod.def,catchall:n}),e.passthrough=()=>e.clone({...e._zod.def,catchall:_t()}),e.loose=()=>e.clone({...e._zod.def,catchall:_t()}),e.strict=()=>e.clone({...e._zod.def,catchall:mw()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=(n)=>RE(e,n),e.safeExtend=(n)=>PE(e,n),e.merge=(n)=>NE(e,n),e.pick=(n)=>EE(e,n),e.omit=(n)=>AE(e,n),e.partial=(...n)=>ME(yw,e,n[0]),e.required=(...n)=>zE(vw,e,n[0])});function G(e,t){let n={type:"object",shape:e??{},...Re(t)};return new xf(n)}function Ri(e,t){return new xf({type:"object",shape:e,catchall:mw(),...Re(t)})}function Zn(e,t){return new xf({type:"object",shape:e,catchall:_t(),...Re(t)})}var hw=Q("ZodUnion",(e,t)=>{Kp.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Ox(e,n,o,i),e.options=t.options});function rt(e,t){return new hw({type:"union",options:e,...Re(t)})}var RA=Q("ZodDiscriminatedUnion",(e,t)=>{hw.init(e,t),Sb.init(e,t)});function wf(e,t,n){return new RA({type:"union",options:t,discriminator:e,...Re(n)})}var PA=Q("ZodIntersection",(e,t)=>{_b.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Dx(e,n,o,i)});function Wc(e,t){return new PA({type:"intersection",left:e,right:t})}var NA=Q("ZodRecord",(e,t)=>{Cb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Bx(e,n,o,i),e.keyType=t.keyType,e.valueType=t.valueType});function bt(e,t,n){return new NA({type:"record",keyType:e,valueType:t,...Re(n)})}var gf=Q("ZodEnum",(e,t)=>{Tb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(o,i,s)=>Px(e,o,i,s),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(o,i)=>{let s={};for(let a of o)if(n.has(a))s[a]=t.entries[a];else throw Error(`Key ${a} not found in enum`);return new gf({...t,checks:[],...Re(i),entries:s})},e.exclude=(o,i)=>{let s={...t.entries};for(let a of o)if(n.has(a))delete s[a];else throw Error(`Key ${a} not found in enum`);return new gf({...t,checks:[],...Re(i),entries:s})}});function fn(e,t){let n=Array.isArray(e)?Object.fromEntries(e.map((o)=>[o,o])):e;return new gf({type:"enum",entries:n,...Re(t)})}var MA=Q("ZodLiteral",(e,t)=>{Ib.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Nx(e,n,o,i),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function j(e,t){return new MA({type:"literal",values:Array.isArray(e)?e:[e],...Re(t)})}var zA=Q("ZodTransform",(e,t)=>{Eb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>zx(e,n,o,i),e._zod.parse=(n,o)=>{if(o.direction==="backward")throw new Na(e.constructor.name);n.addIssue=(s)=>{if(typeof s==="string")n.issues.push(Ei(s,n.value,t));else{let a=s;if(a.fatal)a.continue=!1;a.code??(a.code="custom"),a.input??(a.input=n.value),a.inst??(a.inst=e),n.issues.push(Ei(a))}};let i=t.transform(n.value,n);if(i instanceof Promise)return i.then((s)=>(n.value=s,n));return n.value=i,n}});function gw(e){return new zA({type:"transform",transform:e})}var yw=Q("ZodOptional",(e,t)=>{Vp.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>ff(e,n,o,i),e.unwrap=()=>e._zod.def.innerType});function Zt(e){return new yw({type:"optional",innerType:e})}var $A=Q("ZodExactOptional",(e,t)=>{Ab.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>ff(e,n,o,i),e.unwrap=()=>e._zod.def.innerType});function LA(e){return new $A({type:"optional",innerType:e})}var OA=Q("ZodNullable",(e,t)=>{Rb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Fx(e,n,o,i),e.unwrap=()=>e._zod.def.innerType});function dw(e){return new OA({type:"nullable",innerType:e})}var DA=Q("ZodDefault",(e,t)=>{Pb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Ux(e,n,o,i),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function BA(e,t){return new DA({type:"default",innerType:e,get defaultValue(){return typeof t==="function"?t():Op(t)}})}var FA=Q("ZodPrefault",(e,t)=>{Nb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>jx(e,n,o,i),e.unwrap=()=>e._zod.def.innerType});function HA(e,t){return new FA({type:"prefault",innerType:e,get defaultValue(){return typeof t==="function"?t():Op(t)}})}var vw=Q("ZodNonOptional",(e,t)=>{Mb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Hx(e,n,o,i),e.unwrap=()=>e._zod.def.innerType});function UA(e,t){return new vw({type:"nonoptional",innerType:e,...Re(t)})}var jA=Q("ZodCatch",(e,t)=>{zb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Zx(e,n,o,i),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function ZA(e,t){return new jA({type:"catch",innerType:e,catchValue:typeof t==="function"?t:()=>t})}var WA=Q("ZodPipe",(e,t)=>{$b.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Wx(e,n,o,i),e.in=t.in,e.out=t.out});function yf(e,t){return new WA({type:"pipe",in:e,out:t})}var qA=Q("ZodReadonly",(e,t)=>{Lb.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>qx(e,n,o,i),e.unwrap=()=>e._zod.def.innerType});function GA(e){return new qA({type:"readonly",innerType:e})}var bw=Q("ZodCustom",(e,t)=>{Ob.init(e,t),Nt.init(e,t),e._zod.processJSONSchema=(n,o,i)=>Mx(e,n,o,i)});function xw(e,t){return xx(bw,e??(()=>!0),t)}function KA(e,t={}){return wx(bw,e,t)}function VA(e){return kx(e)}function kf(e,t){return yf(gw(e),t)}yo(Xp());var ja=G({x:Ze(),y:Ze(),scale:Ze().positive()}),XA=G({x:Ze(),y:Ze(),width:Ze().positive(),height:Ze().positive()}),JA=rt([Ri({nodeId:U().min(1)}),Ri({rect:XA}),Ri({viewport:ja})]),qc=G({target:JA,duration:Ze().nonnegative().max(3600).optional(),easing:fn(["linear","ease-in-out","ease-out"]).optional(),padding:Ze().nonnegative().optional(),pullback:Ze().min(0).max(4).optional()}),IB=G({stops:We(qc).max(1000)});function kw(e,t,n,o){if("viewport"in e.target)return e.target.viewport;if("rect"in e.target)return ww(e.target.rect,e.padding,n,o);let i=e.target.nodeId,s=t.find((a)=>a.id===i);if(!s)throw Error(`Tour target not found: ${i}`);return ww({...s.position,...s.size},e.padding,n,o)}function ww(e,t=40,n,o){if(t*2>=Math.min(n,o))throw Error("Tour padding exceeds viewport");let i=Math.min((n-t*2)/e.width,(o-t*2)/e.height);return{x:n/2-(e.x+e.width/2)*i,y:o/2-(e.y+e.height/2)*i,scale:i}}function Sw(e,t,n,o,i,s="ease-in-out",a=0){let l=Math.max(0,Math.min(1,n));if(l===0)return{...e};if(l===1)return{...t};let c=s==="linear"?l:s==="ease-out"?1-(1-l)**3:l*l*(3-2*l),u=Math.exp(Math.log(e.scale)*(1-c)+Math.log(t.scale)*c-a*Math.sin(Math.PI*c)),d=(o/2-e.x)/e.scale*(1-c)+(o/2-t.x)/t.scale*c,p=(i/2-e.y)/e.scale*(1-c)+(i/2-t.y)/t.scale*c;return{x:o/2-d*u,y:i/2-p*u,scale:u}}var Sf=null;function _w(e){Sf=e}function Jt(){if(Sf?.isConnected){let e=Sf.getBoundingClientRect();if(e.width>0&&e.height>0)return{left:e.left,top:e.top,width:e.width,height:e.height}}return{left:0,top:0,width:window.innerWidth,height:window.innerHeight}}function Zr(){let e=Jt();return{x:e.left+e.width/2,y:e.top+e.height/2}}function Za(){let e=16,t=16;try{let n=Jt(),o=n.top+n.height;for(let i of[".lifecycle-filters",".relation-legend"]){let s=document.querySelector(i);if(!(s instanceof HTMLElement)||!s.isConnected)continue;let a=s.getBoundingClientRect();if(a.height>0)e=Math.max(e,a.bottom-n.top+12)}for(let i of[".command-bar",".context-pin-bar",".minimap"]){let s=document.querySelector(i);if(!(s instanceof HTMLElement)||!s.isConnected)continue;let a=s.getBoundingClientRect();if(a.height<=0)continue;let l=o-a.top;if(l>0)t=Math.max(t,l+12)}}catch{}return{top:e,right:16,bottom:t,left:16}}var an={markdown:"MD","mcp-app":"APP",webpage:"WEB","json-render":"UI",graph:"GRAPH",board:"BOARD",prompt:"ASK",response:"ANS",status:"STATUS",context:"CONTEXT",ledger:"LOG",trace:"TRACE",file:"FILE",diff:"DIFF",mermaid:"MERMAID",image:"IMG",html:"HTML",group:"GROUP"},Wa=new Set(["markdown","mcp-app","webpage","json-render","graph","context","ledger","file","diff","mermaid","image","html"]);function Cw(e){return e.type==="mcp-app"&&e.data.mode==="ext-app"&&e.data.serverName==="Excalidraw"&&e.data.toolName==="create_view"}function Tw(e){if(e.length===0)return null;let{POSITIVE_INFINITY:t,POSITIVE_INFINITY:n,NEGATIVE_INFINITY:o,NEGATIVE_INFINITY:i}=Number;for(let s of e)t=Math.min(t,s.position.x),n=Math.min(n,s.position.y),o=Math.max(o,s.position.x+s.size.width),i=Math.max(i,s.position.y+s.size.height);if(!Number.isFinite(t)||!Number.isFinite(n))return null;return{x:t-40,y:n-40-32,width:o-t+80,height:i-n+80+32}}function YA(e){let t=e.filter((c)=>!c.pinned),n=new Map(t.map((c)=>[c.id,c])),o=new Map,i=[],s=new Map;for(let c of t){if(c.type==="group")continue;let u=typeof c.data.parentGroup==="string"?c.data.parentGroup:"",d=u?n.get(u):void 0;if(!d||d.type!=="group")continue;if(!s.has(u))s.set(u,[]);s.get(u).push(c)}let a=t.filter((c)=>c.type==="group").sort((c,u)=>c.position.y-u.position.y||c.position.x-u.position.x);for(let c of a){let u=s.get(c.id)??[];if(u.length===0){let m=`unit:${c.id}`;i.push({id:m,memberIds:[c.id],origin:{...c.position},size:{...c.size},sortKey:{x:c.position.x,y:c.position.y}}),o.set(c.id,m);continue}let d=u.map((m)=>({position:m.position,size:m.size})),p=Tw(d);if(!p)continue;let f=`group:${c.id}`;i.push({id:f,memberIds:u.map((m)=>m.id),origin:{x:p.x,y:p.y},size:{width:p.width,height:p.height},sortKey:{x:p.x,y:p.y},groupId:c.id}),o.set(c.id,f);for(let m of u)o.set(m.id,f)}let l=t.filter((c)=>!o.has(c.id)).sort((c,u)=>c.position.y-u.position.y||c.position.x-u.position.x);for(let c of l){let u=`unit:${c.id}`;i.push({id:u,memberIds:[c.id],origin:{...c.position},size:{...c.size},sortKey:{x:c.position.x,y:c.position.y}}),o.set(c.id,u)}return{units:i,nodesById:n,nodeToUnit:o}}function QA(e,t,n){let o=new Map,i=new Map,s=new Map,a=new Map;for(let l of e)o.set(l.id,new Set),i.set(l.id,new Set),s.set(l.id,0),a.set(l.id,0);for(let l of n){if(l.toBoardId!==void 0)continue;let c=t.get(l.from),u=t.get(l.to);if(!c||!u||c===u)continue;if(!o.get(c).has(u))o.get(c).add(u),a.set(c,(a.get(c)??0)+1),s.set(u,(s.get(u)??0)+1);i.get(c).add(u),i.get(u).add(c)}return{outgoing:o,undirected:i,indegree:s,outdegree:a}}function eR(e,t){let n=new Map(e.map((s)=>[s.id,s])),o=new Set,i=[];for(let s of e){if(o.has(s.id))continue;let a=[s.id],l=[];o.add(s.id);while(a.length>0){let u=a.pop();l.push(u);for(let d of t.get(u)??[]){if(o.has(d))continue;o.add(d),a.push(d)}}let c=l.map((u)=>n.get(u)).filter((u)=>u!==void 0).sort((u,d)=>u.sortKey.y-d.sortKey.y||u.sortKey.x-d.sortKey.x);i.push(c)}return i.sort((s,a)=>s[0].sortKey.y-a[0].sortKey.y||s[0].sortKey.x-a[0].sortKey.x)}function tR(e){let t=new Map,n=0,o=0,i=0,s=0,a=Math.max(900,Math.ceil(Math.sqrt(e.reduce((l,c)=>l+c.size.width*c.size.height,0))));for(let l of e){if(n>0&&n+l.size.width>a)n=0,o+=i+72,i=0;t.set(l.id,{x:n,y:o}),n+=l.size.width+96,i=Math.max(i,l.size.height),s=Math.max(s,n-96)}return{positions:t,size:{width:Math.max(0,s),height:o+i},sortKey:e[0].sortKey}}function nR(e,t,n,o,i){if(e.length===1)return{positions:new Map([[e[0].id,{x:0,y:0}]]),size:{...e[0].size},sortKey:e[0].sortKey};let s=new Set(e.map((x)=>x.id)),a=e.filter((x)=>(o.get(x.id)??0)===0&&(i.get(x.id)??0)>0).sort((x,C)=>x.sortKey.x-C.sortKey.x||x.sortKey.y-C.sortKey.y),l=a.length>0?a:[e.slice().sort((x,C)=>x.sortKey.x-C.sortKey.x||x.sortKey.y-C.sortKey.y)[0]],c=new Map,u=l.map((x)=>x.id);for(let x of l)c.set(x.id,0);while(u.length>0){let x=u.shift(),C=c.get(x)??0;for(let v of n.get(x)??[]){if(!s.has(v)||c.has(v))continue;c.set(v,C+1),u.push(v)}}let d=0;for(let x of e){if(c.has(x.id))continue;c.set(x.id,d),d+=1}let p=new Map;for(let x of e){let C=c.get(x.id)??0;if(!p.has(C))p.set(C,[]);p.get(C).push(x)}let f=Array.from(p.keys()).sort((x,C)=>x-C);for(let x of f)p.get(x).sort((C,v)=>C.sortKey.y-v.sortKey.y||C.sortKey.x-v.sortKey.x);let m=new Map,h=new Map,g=0;for(let x of f){let C=p.get(x),v=C.reduce((_,I,w)=>_+I.size.height+(w>0?72:0),0),k=Math.max(...C.map((_)=>_.size.width));m.set(x,v),h.set(x,k),g=Math.max(g,v)}let y=new Map,b=0;for(let x of f){let C=p.get(x),v=m.get(x)??0,k=h.get(x)??0,_=Math.max(0,(g-v)/2);for(let I of C)y.set(I.id,{x:b,y:_}),_+=I.size.height+72;b+=k+96}return{positions:y,size:{width:Math.max(0,b-96),height:g},sortKey:e[0].sortKey}}function oR(e,t){let n=new Map(e.map((c)=>[c.id,c.id])),o=(c)=>{let u=c;while(n.get(u)!==u)u=n.get(u);let d=c;while(n.get(d)!==d){let p=n.get(d);n.set(d,u),d=p}return u},i=(c,u)=>{let d=o(c),p=o(u);if(d!==p)n.set(d,p)},s=160;for(let c=0;c<e.length;c++)for(let u=c+1;u<e.length;u++){let d=e[c],p=e[u];if(d.origin.x-160<p.origin.x+p.size.width+160&&d.origin.x+d.size.width+160>p.origin.x-160&&d.origin.y-160<p.origin.y+p.size.height+160&&d.origin.y+d.size.height+160>p.origin.y-160)i(d.id,p.id)}for(let[c,u]of t)for(let d of u)if(n.has(c)&&n.has(d))i(c,d);let a=new Map;for(let c of e){let u=o(c.id);if(!a.has(u))a.set(u,[]);a.get(u).push(c)}let l=Array.from(a.values());for(let c of l)c.sort((u,d)=>u.sortKey.y-d.sortKey.y||u.sortKey.x-d.sortKey.x);return l.sort((c,u)=>c[0].sortKey.y-u[0].sortKey.y||c[0].sortKey.x-u[0].sortKey.x)}function rR(e,t){let n=new Map,{x:o,y:i}=t,s=0;for(let a of e){if(o>t.x&&o-t.x+a.size.width>3200)o=t.x,i+=s+180,s=0;for(let[l,c]of a.positions.entries())n.set(l,{x:o+c.x,y:i+c.y});o+=a.size.width+220,s=Math.max(s,a.size.height)}return n}function _f(e,t,n){let{units:o,nodesById:i,nodeToUnit:s}=YA(e),a=new Map,l=new Map;if(o.length===0)return{nodePositions:a,groupBounds:l};let{outgoing:c,undirected:u,indegree:d,outdegree:p}=QA(o,s,t),f=oR(o,u),m=new Map,h=[];for(let g of f){let y=eR(g,u).map((_)=>n==="graph"?nR(_,c,u,d,p):tR(_)),b={x:Math.min(...g.map((_)=>_.origin.x)),y:Math.min(...g.map((_)=>_.origin.y))},x=rR(y,b),C=new Map(g.map((_)=>[_.id,_.size])),v=(_)=>{let{POSITIVE_INFINITY:I,POSITIVE_INFINITY:w,NEGATIVE_INFINITY:P,NEGATIVE_INFINITY:L}=Number;for(let[N,Y]of _){let B=C.get(N);if(!B)continue;I=Math.min(I,Y.x),w=Math.min(w,Y.y),P=Math.max(P,Y.x+B.width),L=Math.max(L,Y.y+B.height)}return{x:I,y:w,width:P-I,height:L-w}},k=x;for(let _=0;_<=h.length;_++){let I=v(k),w=h.filter((N)=>I.x<N.x+N.width+220&&I.x+I.width+220>N.x&&I.y<N.y+N.height+180&&I.y+I.height+180>N.y);if(w.length===0)break;let P=Math.max(...w.map((N)=>N.y+N.height))+180-I.y;if(P<=0)break;let L=new Map;for(let[N,Y]of k)L.set(N,{x:Y.x,y:Y.y+P});k=L}for(let[_,I]of k)m.set(_,I);h.push(v(k))}for(let g of o){let y=m.get(g.id);if(!y)continue;let b=y.x-g.origin.x,x=y.y-g.origin.y;if(g.groupId){let k=[];for(let I of g.memberIds){let w=i.get(I);if(!w)continue;let P={x:w.position.x+b,y:w.position.y+x};a.set(I,P),k.push({position:P,size:w.size})}let _=Tw(k);if(_)l.set(g.groupId,_);continue}let C=g.memberIds[0],v=i.get(C);if(!v)continue;a.set(C,{x:v.position.x+b,y:v.position.y+x})}return{nodePositions:a,groupBounds:l}}var Cf=Ri({agentSessions:ht(),knowledgeLifecycle:ht()}),MB=Cf.partial();var Wr=ie(null),xt=Ve(()=>Wr.value?.agentSessions??!1),Oe=Ve(()=>Wr.value?.knowledgeLifecycle??!1);function Tf(e){let t=Cf.safeParse(e);if(t.success)Wr.value=t.data}var iR=700,sR=1600;function aR(e){return e.replace(/\r\n?/g,`
|
|
61
61
|
`).replace(/[ \t\f\v]+/g," ").replace(/\n\s+/g,`
|
|
62
62
|
`).replace(/\s+\n/g,`
|
|
63
63
|
`).replace(/\n{3,}/g,`
|
|
64
64
|
|
|
65
|
-
`).trim()}function
|
|
66
|
-
`);return Object.entries(
|
|
67
|
-
`)}function
|
|
68
|
-
${
|
|
69
|
-
${n||"No chart values available."}`}function
|
|
70
|
-
${
|
|
71
|
-
`)}`:"Interactive surface. No static text available; inspect the rendered surface."}function
|
|
72
|
-
`),
|
|
73
|
-
|
|
74
|
-
${
|
|
75
|
-
${n.length?`Diagram labels: ${n.join("; ")}`:"No diagram description available."}`}return"No app content description available."}function
|
|
76
|
-
`),t)}function
|
|
77
|
-
`),t):"Web artifact node"}function
|
|
78
|
-
`),t)}function
|
|
79
|
-
`:"";return
|
|
80
|
-
|
|
81
|
-
`:"";return
|
|
82
|
-
${
|
|
83
|
-
${
|
|
84
|
-
${Array.isArray(e.data.cards)?e.data.cards.map((
|
|
85
|
-
`):""}`,n);case"ledger":{let{title:
|
|
86
|
-
${
|
|
87
|
-
${
|
|
88
|
-
${zt(e.data,["content"])}`,n);case"image":return ht(zt(e.data,["alt","caption","description"])||"No image description available; inspect the image.",n);case"group":return ht(`Group: ${zt(e.data,["title"])||"Untitled"}. ${Array.isArray(e.data.children)?e.data.children.length:0} cards.`,n)}}function xd(e,t){let n=e.position.x+e.size.width/2,o=e.position.y+e.size.height/2,r=t.position.x+t.size.width/2,s=t.position.y+t.size.height/2;return Math.sqrt((n-r)**2+(o-s)**2)}function IC(e,t){let n=e.position.x+e.size.width,o=e.position.y+e.size.height,r=t.position.x+t.size.width,s=t.position.y+t.size.height,a=Math.max(0,Math.max(e.position.x,t.position.x)-Math.min(n,r)),c=Math.max(0,Math.max(e.position.y,t.position.y)-Math.min(o,s));return Math.sqrt(a**2+c**2)}function PC(e){let t=[...e],n=100;return t.sort((o,r)=>{let s=Math.floor(o.position.y/100),a=Math.floor(r.position.y/100);if(s!==a)return s-a;return o.position.x-r.position.x}),t}function NC(e){let t=e.find((r)=>r.data.title&&typeof r.data.title==="string");if(t&&e.length<=3)return e.filter((s)=>s.data.title).map((s)=>s.data.title).slice(0,3).join(", ");let n={};for(let r of e)n[r.type]=(n[r.type]??0)+1;let o=Object.entries(n).map(([r,s])=>s===1?r:`${s} ${r}`);if(t)return`${t.data.title} + ${o.join(", ")}`;return o.join(", ")}function zC(e,t){return e.x<=t.x+t.width&&e.x+e.width>=t.x&&e.y<=t.y+t.height&&e.y+e.height>=t.y}function RC(e,t){let n=t.filter((r)=>zC(e.bounds,{x:r.position.x,y:r.position.y,width:r.size.width,height:r.size.height})),o=n.map((r)=>typeof r.data.title==="string"&&r.data.title.length>0?r.data.title:r.id);return{id:e.id,label:e.label??e.text??null,bounds:e.bounds,targetNodeIds:n.map((r)=>r.id),targetNodeTitles:o,target:o.length>0?o.join(", "):"empty canvas region"}}function MC(e,t=200){if(e.length===0)return[];let n=new Map,o=(l)=>{while(n.get(l)!==l){let u=n.get(l);n.set(l,n.get(u)),l=u}return l},r=(l,u)=>{let p=o(l),d=o(u);if(p!==d)n.set(p,d)};for(let l of e)n.set(l.id,l.id);for(let l=0;l<e.length;l++)for(let u=l+1;u<e.length;u++)if(IC(e[l],e[u])<=t)r(e[l].id,e[u].id);let s=new Map;for(let l of e){let u=o(l.id);if(!s.has(u))s.set(u,[]);s.get(u).push(l)}let a=[],c=0;for(let[,l]of s){if(l.length<2)continue;let u=l.map((g)=>g.position.x),p=l.map((g)=>g.position.y),d=l.map((g)=>g.position.x+g.size.width),m=l.map((g)=>g.position.y+g.size.height),f=Math.min(...u),h=Math.min(...p),v=Math.max(...d),x=Math.max(...m);a.push({id:`cluster-${c++}`,nodeIds:l.map((g)=>g.id),label:NC(l),centroid:{x:Math.round((f+v)/2),y:Math.round((h+x)/2)},bounds:{x:f,y:h,width:v-f,height:x-h}})}return a.sort((l,u)=>{let p=Math.floor(l.centroid.y/200),d=Math.floor(u.centroid.y/200);if(p!==d)return p-d;return l.centroid.x-u.centroid.x}),a}function wd(e,t,n=5,o=600){let r=e.filter((a)=>t.has(a.id)),s=e.filter((a)=>!t.has(a.id));return r.map((a)=>{let c=s.map((l)=>({node:l,distance:xd(a,l)})).filter((l)=>l.distance<=o).sort((l,u)=>l.distance-u.distance).slice(0,n);return{pinnedNodeId:a.id,pinnedNodeTitle:a.data.title??null,neighbors:c.map((l)=>({id:l.node.id,type:l.node.type,title:l.node.data.title??null,distance:Math.round(l.distance)}))}})}function fs(e,t,n,o=[]){let r=MC(e),s=new Map;for(let u of r)for(let p of u.nodeIds)s.set(p,u.id);let c=PC(e).map((u,p)=>({id:u.id,type:u.type,title:u.data.title??null,content:Uy(u,{defaultTextLength:320,webpageTextLength:640})||null,clusterId:s.get(u.id)??null,readingOrder:p})),l=wd(e,n);return{totalNodes:e.length,clusters:r,nodesInReadingOrder:c,pinnedNeighborhoods:l,annotations:o.map((u)=>RC(u,e))}}function ei(e){if(!e)return null;let t=e.data.title;return typeof t==="string"&&t.trim().length>0?t.trim():null}function Qa(e,t){return{id:e?.id??t,title:ei(e),nodeType:e?.type??"markdown"}}function Zy(e,t){return{id:e.id,edgeType:e.type,fromId:e.from,toId:e.to,fromTitle:ei(t.get(e.from)),toTitle:ei(t.get(e.to))}}function ec(e){return new Map(e.map((t)=>[t.id,t]))}function Wy(e){return new Map(e.map((t)=>[t.id,t]))}function Rn(e){return Array.from(e).sort((t,n)=>t.localeCompare(n))}function _d(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Sd(e){if(!e||e.type!=="group")return[];let t=e.data.children;if(!Array.isArray(t))return[];return t.filter((n)=>typeof n==="string").sort((n,o)=>n.localeCompare(o))}function qy(e){let t=new Map;for(let n of e.clusters){let o=[...n.nodeIds].sort((r,s)=>r.localeCompare(s));for(let r of o)t.set(r,o.filter((s)=>s!==r))}return t}function Gy(e){let t=new Map;for(let n of e.pinnedNeighborhoods)t.set(n.pinnedNodeId,n.neighbors.map((o)=>o.id).sort((o,r)=>o.localeCompare(r)));return t}function $C(e,t){let n=Rn(Array.from(t).filter((r)=>!e.has(r))),o=Rn(Array.from(e).filter((r)=>!t.has(r)));return{added:n,removed:o}}function Vy(e){let t=e&&typeof e==="object"?e:{};return{timestamp:typeof t.timestamp==="string"?t.timestamp:void 0,sessionId:typeof t.sessionId==="string"?t.sessionId:void 0}}function OC(e,t,n){if(!e||!n)return{layout:e,pinnedNodeIds:[],primaryFocusNodeIds:[],secondaryFocusNodeIds:[],regions:[],spatial:n};let o=ec(e.nodes),r=Rn(t).filter((l)=>o.has(l)),s=new Set(r),a=new Set,c=[];for(let l of n.pinnedNeighborhoods){if(!s.has(l.pinnedNodeId))continue;let u=Rn([l.pinnedNodeId,...l.neighbors.map((p)=>p.id)]).filter((p,d,m)=>m.indexOf(p)===d&&o.has(p));for(let p of u)if(!s.has(p))a.add(p);c.push({id:`region-${l.pinnedNodeId}`,primaryNodeId:l.pinnedNodeId,nodeIds:u})}if(c.length===0&&r.length>0)for(let l of r)c.push({id:`region-${l}`,primaryNodeId:l,nodeIds:[l]});return{layout:e,pinnedNodeIds:r,primaryFocusNodeIds:r,secondaryFocusNodeIds:Rn(a),regions:c,spatial:n}}class tc{currentLayout=null;currentPins=new Set;previousSpatial=null;setInitialPins(e){this.currentPins=new Set(e)}getAttentionSnapshot(){return OC(this.currentLayout,this.currentPins,this.previousSpatial)}handleMessage(e){if(e.event==="context-pins-changed")return this.handleContextPinsChanged(e.data);if(e.event==="canvas-layout-update")return this.handleLayoutUpdate(e.data);return[]}handleContextPinsChanged(e){let t=e&&typeof e==="object"?e:{},n=Array.isArray(t.nodeIds)?t.nodeIds.filter((u)=>typeof u==="string"):[],o=Vy(e),r=new Set(n),{added:s,removed:a}=$C(this.currentPins,r);if(this.currentPins=r,!this.currentLayout)return[];let c=ec(this.currentLayout.nodes),l={added:s.map((u)=>Qa(c.get(u),u)),removed:a.map((u)=>Qa(c.get(u),u))};if(this.previousSpatial=fs(this.currentLayout.nodes,this.currentLayout.edges,this.currentPins,this.currentLayout.annotations??[]),l.added.length===0&&l.removed.length===0)return[];return[{type:"context-pin",...o,...l}]}handleLayoutUpdate(e){let t=e&&typeof e==="object"?e:{},n=t.layout&&typeof t.layout==="object"?t.layout:null;if(!n)return[];let o=Vy(e);if(!this.currentLayout)return this.currentLayout=n,this.previousSpatial=fs(n.nodes,n.edges,this.currentPins,n.annotations??[]),[];let r=this.currentLayout,s=this.previousSpatial??fs(r.nodes,r.edges,this.currentPins,r.annotations??[]),a=fs(n.nodes,n.edges,this.currentPins,n.annotations??[]),c=[],l=ec(r.nodes),u=ec(n.nodes),p=Wy(r.edges),d=Wy(n.edges),m=Rn(Array.from(d.keys()).filter((g)=>!p.has(g))).map((g)=>d.get(g)).filter((g)=>g!==void 0);if(m.length>0)c.push({type:"connect",...o,edges:m.map((g)=>Zy(g,u))});let f=Rn(Array.from(l.keys()).filter((g)=>!u.has(g))),h=Rn(Array.from(p.keys()).filter((g)=>!d.has(g)));if(f.length>0||h.length>0)c.push({type:"remove",...o,nodes:f.map((g)=>Qa(l.get(g),g)),edges:h.map((g)=>p.get(g)).filter((g)=>g!==void 0).map((g)=>Zy(g,l))});let v=this.buildGroupEvent(l,u,o);if(v)c.push(v);let x=this.buildMoveEndEvent(r,n,l,u,s,a,o);if(x)c.push(x);return this.currentLayout=n,this.previousSpatial=a,c}buildGroupEvent(e,t,n){let o=Rn(Array.from(e.values()).filter((c)=>c.type==="group").map((c)=>c.id)),r=Rn(Array.from(t.values()).filter((c)=>c.type==="group").map((c)=>c.id)),s=r.filter((c)=>!o.includes(c)).map((c)=>{let l=t.get(c),u=Sd(l);return{id:c,title:ei(l),childCount:u.length}}),a=[];for(let c of r.filter((l)=>o.includes(l))){let l=Sd(e.get(c)),u=Sd(t.get(c));if(_d(l,u))continue;a.push({id:c,title:ei(t.get(c)),addedChildIds:u.filter((p)=>!l.includes(p)),removedChildIds:l.filter((p)=>!u.includes(p)),childCount:u.length})}if(s.length===0&&a.length===0)return null;return{type:"group",...n,created:s,updated:a}}buildMoveEndEvent(e,t,n,o,r,s,a){let c=Rn(Array.from(o.keys()).filter((x)=>{let g=n.get(x),b=o.get(x);if(!g||!b)return!1;return g.position.x!==b.position.x||g.position.y!==b.position.y}));if(c.length===0)return null;let l=qy(r),u=qy(s),p=Gy(r),d=Gy(s),m=new Map,f=(x,g)=>{let b=m.get(x)??new Set;b.add(g),m.set(x,b)};for(let x of c){let g=l.get(x)??[],b=u.get(x)??[];if(!_d(g,b))if(g.length===0&&b.length>0)f(x,"joined cluster");else if(g.length>0&&b.length===0)f(x,"left cluster");else f(x,"cluster changed")}let h=new Set([...p.keys(),...d.keys()]);for(let x of h){let g=p.get(x)??[],b=d.get(x)??[];if(_d(g,b))continue;let I=ei(o.get(x)??n.get(x))??x,R=b.filter((_)=>!g.includes(_)),M=g.filter((_)=>!b.includes(_));for(let _ of R)if(c.includes(_))f(_,`entered pinned neighborhood of "${I}"`);for(let _ of M)if(c.includes(_))f(_,`left pinned neighborhood of "${I}"`);if(c.includes(x))f(x,"pinned neighborhood changed")}let v=c.filter((x)=>(m.get(x)?.size??0)>0).map((x)=>{let g=o.get(x);return{...Qa(g,x),reasons:Array.from(m.get(x)??[]).sort((b,I)=>b.localeCompare(I))}});if(v.length===0)return null;return{type:"move-end",...a,nodes:v}}}var nc=K(null),hs=K([]),oc=K(new Set),Gn=K(!1),ti=K(0);function Xy(){nc.value=null,hs.value=[],oc.value=new Set,Gn.value=!1,ti.value=0}function rc(){Gn.value=!0,ti.value=0}function Ky(){Gn.value=!1}function ic(e){nc.value=e}function kd(e,t=6){if(hs.value=[e,...hs.value].slice(0,t),!Gn.value)ti.value=Math.min(99,ti.value+1)}function sc(e){oc.value=new Set(e)}var Yy=new tc,ni=[],gs=null,oi=null,Td="",Cd=0;function Qy(e,t){return globalThis.setTimeout(e,t)}function Ed(e){if(e===null)return;globalThis.clearTimeout(e)}function LC(e){if(typeof globalThis.requestAnimationFrame==="function"){globalThis.requestAnimationFrame(()=>e());return}e()}function Mo(e,t){return e&&e.trim().length>0?e.trim():t}function co(e,t=3){if(e.length===0)return"";if(e.length<=t)return e.join(", ");return`${e.slice(0,t).join(", ")} +${e.length-t}`}function DC(e){return Array.from(new Set(Array.from(e).filter((t)=>t.length>0)))}function Mn(e,t,n,o,r=Date.now()){return{id:`${e}-${r}-${Math.random().toString(36).slice(2,8)}`,tone:e,title:t,detail:n,nodeIds:DC(o),createdAt:r}}function Jy(e){if(e==="joined cluster")return"joined a nearby cluster";if(e==="left cluster")return"moved away from its cluster";if(e==="cluster changed")return"shifted into a different cluster";if(e==="pinned neighborhood changed")return"changed the local focus field";let t=/^entered pinned neighborhood of "(.+)"$/.exec(e);if(t)return`moved into focus around ${t[1]}`;let n=/^left pinned neighborhood of "(.+)"$/.exec(e);if(n)return`moved out of focus around ${n[1]}`;return e}function FC(e){let t=e.added.map((r)=>Mo(r.title,r.id)),n=e.removed.map((r)=>Mo(r.title,r.id));if(t.length===0&&n.length===0)return null;let o="";if(t.length>0&&n.length===0)o=`Now in focus: ${co(t)}`;else if(n.length>0&&t.length===0)o=`Removed from focus: ${co(n)}`;else{let r=[];if(t.length>0)r.push(`${co(t)} added`);if(n.length>0)r.push(`${co(n)} removed`);o=r.join(" · ")}return Mn("context","Context updated",o,[...e.added.map((r)=>r.id),...e.removed.map((r)=>r.id)],e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now())}function BC(e){if(e.edges.length===0)return null;if(e.edges.length===1){let t=e.edges[0];return Mn("relationship","Relationship added",`${Mo(t.fromTitle,t.fromId)} linked to ${Mo(t.toTitle,t.toId)}`,[t.fromId,t.toId],e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now())}return Mn("relationship","Relationships added",`${e.edges.length} connections changed the board structure`,e.edges.flatMap((t)=>[t.fromId,t.toId]),e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now())}function HC(e){if(e.nodes.length===0&&e.edges.length===0)return null;let t=e.nodes.map((o)=>Mo(o.title,o.id)),n=[];if(t.length>0)n.push(co(t));if(e.edges.length>0)n.push(`${e.edges.length} relationship${e.edges.length===1?"":"s"}`);return Mn("remove","Items removed",n.join(" · "),[...e.nodes.map((o)=>o.id),...e.edges.flatMap((o)=>[o.fromId,o.toId])],e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now())}function jC(e){if(e.created.length>0){let t=e.created.map((n)=>Mo(n.title,n.id));return Mn("group",e.created.length===1?"Group created":"Groups created",e.created.length===1?`${t[0]} now frames ${e.created[0].childCount} items`:co(t),e.created.map((n)=>n.id),e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now())}if(e.updated.length>0){let t=e.updated.map((n)=>Mo(n.title,n.id));return Mn("group",e.updated.length===1?"Group updated":"Groups updated",e.updated.length===1?`${t[0]} now holds ${e.updated[0].childCount} items`:co(t),e.updated.map((n)=>n.id),e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now())}return null}function UC(e){if(e.nodes.length===0)return null;let t=e.nodes.flatMap((s)=>s.reasons),n=e.nodes.map((s)=>Mo(s.title,s.id)),o=e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now();if(t.some((s)=>s.includes("pinned neighborhood"))){if(e.nodes.length===1)return Mn("neighborhood","Neighborhood changed",`${n[0]} ${Jy(e.nodes[0].reasons[0])}`,e.nodes.map((s)=>s.id),o);return Mn("neighborhood","Neighborhood changed",co(n),e.nodes.map((s)=>s.id),o)}let r=t.filter((s)=>s.includes("cluster"));if(r.length>0){let s=r.every((a)=>a==="joined cluster");if(e.nodes.length===1)return Mn("cluster",s?"Cluster formed":"Cluster changed",`${n[0]} ${Jy(e.nodes[0].reasons[0])}`,e.nodes.map((a)=>a.id),o);return Mn("cluster",s?"Cluster formed":"Cluster changed",co(n),e.nodes.map((a)=>a.id),o)}return null}function ZC(e){switch(e.type){case"context-pin":return FC(e);case"connect":return BC(e);case"remove":return HC(e);case"group":return jC(e);case"move-end":return UC(e)}}function eb(){if(gs!==null)return;let e=ni.shift()??null;if(!e){ic(null);return}ic(e);let t=Math.max(1800,Math.min(2800,1600+e.detail.length*18));gs=Qy(()=>{gs=null,ic(null),eb()},t)}function tb(e){if(ni.push(e),ni.length>3)ni.splice(0,ni.length-3);eb()}function on(e,t,n="",o=[]){let r=Mn(e,t,n,o);kd(r),tb(r)}function WC(e){if(Ed(oi),oi=null,sc([]),e.length===0)return;LC(()=>{sc(e),oi=Qy(()=>{oi=null,sc([])},900)})}function qC(e){let t=`${e.tone}:${e.title}:${e.detail}`,n=e.createdAt;if(t===Td&&n-Cd<1200)return!0;return Td=t,Cd=n,!1}function ac(){Ed(gs),Ed(oi),gs=null,oi=null,ni=[],Td="",Cd=0,Yy=new tc,Xy()}function Ad(e){let t=Yy.handleMessage(e).map((n)=>ZC(n)).filter((n)=>n!==null);for(let n of t){if(qC(n))continue;kd(n),tb(n),WC(n.nodeIds)}}var Id;function Se(){return Id!==void 0}var ct=(e,t)=>Id?Id(e,t):globalThis.fetch(e,t),nb;async function ob(e){if(!nb)throw Error("This host does not support downloads. The export is saved in the local PMX workspace.");if(!/^\/api\/canvas\/exports\/[^/?#]+$/.test(e))throw Error("Invalid export path.");let t=await ct(e);if(!t.ok)throw Error("Could not read the export. Try again.");if((await nb({name:decodeURIComponent(e.slice(e.lastIndexOf("/")+1)),mimeType:"text/html",text:await t.text()})).isError)throw Error("The download was cancelled or declined by the host.")}var rn=K([]),Oe=K(null),$o=K(!1),ib=null,ri=0,cc=0,rb=Promise.resolve();function sb(e){ib=e}function vr(e){if(!e||!Array.isArray(e.boards))return;ri+=1;let t=typeof e.activeBoardId==="string"?e.activeBoardId:null,n=$o.value&&(t!==Oe.value||e.reloaded===!0);if(rn.value=e.boards,Oe.value=t,$o.value=!0,n)ib?.()}async function Pd(){let e=ri,t=await ne("loadBoards","/api/canvas/boards",null);if(e===ri)vr(t)}async function lc(e,t,n,o,r=ri){let s=await ne(e,t,null,{method:n,headers:{"Content-Type":"application/json"},...o===void 0?{}:{body:JSON.stringify(o)}});return r===ri?s:null}async function sn(e){let t=++cc,n=ri,o=null,r=rb.then(async()=>{o=await lc("openBoard","/api/canvas/boards/open","POST",{id:e},n)});if(rb=r.catch(()=>{return}),await r,t===cc)vr(o)}async function ab(e){let t=++cc,n=await ne("createBoard","/api/canvas/boards",null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})});if(n?.board&&t===cc)await sn(n.board.id)}async function cb(e){return ne("previewBoardCopy","/api/canvas/boards/from",null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sourceBoardId:e,name:"Preview",preview:!0})})}async function lb(e){let t=await ne("createBoardFrom","/api/canvas/boards/from",null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});return await Pd(),t?.board??null}async function uc(e,t){let n=await lc("updateBoard",`/api/canvas/boards/${encodeURIComponent(e)}`,"PATCH",{...t,...t.category===null?{category:""}:{}});vr(n)}async function ub(e,t){let n=await lc("setBoardReadme",`/api/canvas/boards/${encodeURIComponent(e)}`,"PATCH",{readmeNodeId:t});vr(n)}async function db(e){let t=await lc("deleteBoard",`/api/canvas/boards/${encodeURIComponent(e)}`,"DELETE");vr(t)}function dc(){return rn.value.find((e)=>e.id===Oe.value)??null}function Nd(e,t){console.error(`[intent-bridge] ${e} failed`,t)}var pc=(()=>{try{let e=new URLSearchParams(window.location.search).get("agent")?.trim();return e?e.slice(0,64):null}catch{return null}})();function zd(e){if(Se())return e??{};let t={...e?.headers};if(pc)t["x-pmx-source"]=pc;else{t["X-PMX-Workbench"]="1";let n=window.__PMX_WORKBENCH_TOKEN;if(typeof n==="string")t["X-PMX-Workbench-Token"]=n}return{...e,headers:t}}function Rd(e,t,n){if(e.ok||(t?.method??"GET").toUpperCase()==="GET")return;let o=n!==null&&typeof n==="object"&&"error"in n&&typeof n.error==="string"?n.error:"";on("remove","Change refused",o||`The server answered ${e.status}.`)}async function Md(e){try{return await e.json()}catch{return null}}async function ne(e,t,n,o){try{let r=await ct(t,zd(o)),s=await Md(r);if(Rd(r,o,s),s===null)throw Error(`${r.status} response had no JSON body`);return s}catch(r){return Nd(e,r),n}}async function mn(e,t,n){try{let o=await ct(t,zd(n));if(!o.ok)Rd(o,n,await Md(o));return{ok:o.ok}}catch(o){return Nd(e,o),{ok:!1}}}async function $n(e,t,n){try{let o=await ct(t,zd(n));if(!o.ok)Rd(o,n,await Md(o))}catch(o){Nd(e,o)}}async function pb(e,t={}){return ne("sendIntent","/api/workbench/intent",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:e,payload:t})})}async function br(e){let n=`Veto: do not ${e.label?.trim()||`${e.kind} intent`}${e.reason?` — ${e.reason}`:""}.`;if((await ne("vetoGhostIntent",`/api/canvas/ax/intent/${encodeURIComponent(e.id)}`,{ok:!1,cleared:!1},{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({vetoed:!0})})).cleared!==!0)return!1;return await $n("vetoGhostSteering","/api/canvas/ax/steer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:n,source:"browser"})}),!0}async function Vn(e){return(await ne("renderMarkdown","/api/render",{},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({markdown:e})})).html??""}async function vs(e){return ne("fetchFile",`/api/file?path=${encodeURIComponent(e)}`,{content:""})}async function mb(e,t){return ne("saveFile","/api/file/save",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e,content:t})})}async function mc(e){return mn("openWorkbenchFile","/api/workbench/open",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e})})}async function fb(){return ne("fetchCanvasState","/api/canvas/state?includeBlobs=true",{})}async function fc(e){return ne("saveCanvasTheme","/api/canvas/theme",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:e})})}async function hb(){return[]}async function ys(e,t,n,o,r){if(!e.trim())return{ok:!1,error:"Prompt text is required"};return ne("submitCanvasPrompt","/api/canvas/prompt",{ok:!1,error:"Network error"},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:e,...t?{position:t}:{},...n?{parentNodeId:n}:{},...o&&o.length>0?{contextNodeIds:o}:{},...r?{threadNodeId:r}:{}})})}async function gb(e,t){return ys(t,void 0,void 0,void 0,e)}async function hc(e,t={}){await $n("pushCanvasUpdate","/api/canvas/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({updates:e,...t.recordHistory===!1?{recordHistory:!1}:{}})})}async function xr(e,t,n,o){let r=yr.value,s=await ne("createEdgeFromClient","/api/canvas/edge",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:e,to:t,type:n,label:o})});if(r===yr.value&&F.value.has(e)&&F.value.has(t)){if(s.ok){let{ok:a,...c}=s;ai(c)}else if(!s.error)on("remove","Connection not added","Could not reach the server. Try again.")}return s}async function On(e){return ne("createNodeFromClient","/api/canvas/node",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function kt(e,t){return ne("updateNodeFromClient",`/api/canvas/node/${encodeURIComponent(e)}`,{ok:!1},{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}async function gc(e,t){return ne("refreshWebpageNodeFromClient",`/api/canvas/node/${encodeURIComponent(e)}/refresh`,{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t?{url:t}:{})})}async function Oo(e){return ne("removeNodeFromClient",`/api/canvas/node/${encodeURIComponent(e)}`,{ok:!1},{method:"DELETE"})}async function vb(){return ne("fetchAxSurfaceState","/api/canvas/ax/surface-snapshot",null)}async function yb(){return ne("fetchAgentPresence","/api/canvas/ax/presence",null)}async function bb(e,t){return ne("openNodeInSystemBrowserRequest","/api/canvas/open-external",{ok:!1,opened:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({nodeId:e,url:t})})}async function vc(e){return ne("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",...e,source:"browser"})})}async function xb(e,t={}){return ne("updateViewportFromClient","/api/canvas/viewport",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e,...wb(),...t.recordHistory===!1?{recordHistory:!1}:{}})})}function wb(){if(typeof window>"u")return{};let e=bt(),t=Math.round(e.width),n=Math.round(e.height);if(!t||!n)return{};return{clientWidth:t,clientHeight:n}}async function bs(){if(Se()&&!$o.value)return;let e=wb();if(!("clientWidth"in e))return;await $n("reportClientViewportSize","/api/canvas/viewport",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e,recordHistory:!1})})}async function ii(e){return ne("createGroupFromClient","/api/canvas/group",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function $d(e,t,n){return ne("addToGroupFromClient","/api/canvas/group/add",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({groupId:e,childIds:t,...n?{childLayout:n}:{}})})}async function yc(e,t){return kt(e,{children:t})}async function si(e){return ne("ungroupFromClient","/api/canvas/group/ungroup",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({groupId:e})})}async function _b(){return ne("listSnapshots","/api/canvas/snapshots?all=true",[])}async function Sb(e){return ne("saveSnapshot","/api/canvas/snapshots",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})})}async function kb(e){return ne("restoreSnapshot",`/api/canvas/snapshots/${e}`,{ok:!1},{method:"POST"})}async function Tb(e){return ne("deleteSnapshot",`/api/canvas/snapshots/${e}`,{ok:!1},{method:"DELETE"})}async function bc(e,t){return ne("updateEdgeFromClient",`/api/canvas/edge/${encodeURIComponent(e)}`,{ok:!1},{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}async function xc(e){return ne("removeEdgeFromClient","/api/canvas/edge",{ok:!1},{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({edge_id:e})})}function Pb(e,t){console.error(`[canvas-store] ${e} failed`,t)}var oe=K({x:0,y:0,scale:1}),F=K(new Map),Je=K(new Map),ci=K(new Map),je=K(null),Kn=K(null),fn=K("connecting"),_r=K(0),Sr=K(0),kr=K(0),lo=K(""),li=K(!1),gt=K("harbor"),Yt=K(!1),Dn=K(null),ot=K(null),Ln=K(null),jt=null,wr,Cb=100,GC=2500,ws=K(null),yr=K(0),Ye=K(null),uo=K(null),Ne=K(new Set),Le=K(new Set),Qt=K("select"),_s=K(!1);function ui(){return Qt.value==="pan"||_s.value}function Nb(e,t){if(!e)return new Set;let n=new Set;for(let o of t.values()){if(o.from===e)n.add(o.to);if(o.to===e)n.add(o.from)}return n}var zb=Ge(()=>Nb(je.value,Je.value));function Eb(e,t){let n=new Set;for(let o of e)if(t.has(o))n.add(o);return n}function Ab(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function Dd(e){let t=new Set(Ne.value);if(t.has(e))t.delete(e);else t.add(e);Ne.value=t}function Rb(e){Ne.value=new Set(e)}function Ut(){if(Kn.value=null,Ne.value.size===0)return;Ne.value=new Set}function Mb(){if(jt!==null)clearTimeout(jt),jt=null;pn(()=>{yr.value+=1,je.value=null,ot.value=null,Ln.value=null,wr=void 0,Ne.value=new Set,Kn.value=null,ws.value=null,Ye.value=null,uo.value=null,Xn.value=null,Le.value=new Set}),wc=!1}var Xn=K(null),wc=!1;function $b(){wc=!0,Xn.value=null}function Ob(){wc=!1,Xn.value=null}function Od(e){return{x:e.position.x,y:e.position.y,w:e.size.width,h:e.size.height}}function VC(e,t,n){let o=Od(e);return t>=o.x&&t<=o.x+o.w&&n>=o.y&&n<=o.y+o.h}function Ib(e,t){let n=Od(e),o=Od(t);return n.x+n.w<o.x||n.x>o.x+o.w||n.y+n.h<o.y||n.y>o.y+o.h}function Lb(e){let t=F.value.get(e);if(!t||t.type==="group")return;let n=typeof t.data.parentGroup==="string"?t.data.parentGroup:null,o=n?F.value.get(n):void 0,r=t.position.x+t.size.width/2,s=t.position.y+t.size.height/2,a=null;for(let c of F.value.values()){if(c.type!=="group"||c.id===n||c.collapsed)continue;if(VC(c,r,s))a=c}if(!wc){let c=a?{nodeId:e,groupId:a.id,mode:"add"}:o&&Ib(t,o)?{nodeId:e,groupId:o.id,mode:"remove"}:null,l=Xn.value;if((l?.groupId??null)!==(c?.groupId??null)||l?.mode!==c?.mode)Xn.value=c}if(o&&o.data.frameMode!=="manual"&&!Ib(t,o)){let l=Math.min(o.position.x,t.position.x-22),u=Math.min(o.position.y,t.position.y-22-32),p=Math.max(o.position.x+o.size.width,t.position.x+t.size.width+22),d=Math.max(o.position.y+o.size.height,t.position.y+t.size.height+22);if(l!==o.position.x||u!==o.position.y||p!==o.position.x+o.size.width||d!==o.position.y+o.size.height)Tc(o.id,{position:{x:l,y:u},size:{width:p-l,height:d-u}},{skipGroupChildTranslation:!0})}}var Fd=Ge(()=>{let e=new Map;for(let t of F.value.values()){if(t.type!=="group"||!t.collapsed)continue;let n=Array.isArray(t.data.children)?t.data.children:[];for(let o of n)if(typeof o==="string")e.set(o,t.id)}return e});function _c(e){let t=Fd.value.get(e);return F.value.get(t??e)}function Db(){let e=new Set;for(let t of Ne.value){let n=F.value.get(t);if(!n)continue;if(n.type==="group")e.add(n.id);else if(typeof n.data.parentGroup==="string")e.add(n.data.parentGroup)}return[...e]}function Bd(e){let t=Hd();if(t.length<2)return;let n=Math.min(...t.map((l)=>e==="left"?l.position.x:l.position.y)),o=24,r=new Map;for(let l of t)r.set(l.id,e==="left"?{x:n,y:l.position.y}:{x:l.position.x,y:n});let s=(l,u)=>l.x<u.x+u.w&&u.x<l.x+l.w&&l.y<u.y+u.h&&u.y<l.y+l.h,a=t.map((l)=>{let u=r.get(l.id);return{node:l,x:u.x,y:u.y,w:l.size.width,h:l.size.height}});if(a.some((l,u)=>a.some((p,d)=>d>u&&s(l,p)))){let l=[...t].sort((p,d)=>e==="left"?p.position.y-d.position.y:p.position.x-d.position.x),u=e==="left"?Math.min(...t.map((p)=>p.position.y)):Math.min(...t.map((p)=>p.position.x));for(let p of l)r.set(p.id,e==="left"?{x:n,y:u}:{x:u,y:n}),u+=(e==="left"?p.size.height:p.size.width)+o}pn(()=>{for(let l of t)wt(l.id,{position:r.get(l.id)})}),Tt()}function Fb(){let e=Hd().sort((c,l)=>c.position.x-l.position.x);if(e.length<3)return;let t=e[0],o=e[e.length-1].position.x-(t.position.x+t.size.width),r=e.slice(1,-1),s=r.reduce((c,l)=>c+l.size.width,0),a=(o-s)/(r.length+1);pn(()=>{if(a<8){let l=t.position.x+t.size.width+24;for(let u of e.slice(1))wt(u.id,{position:{x:l,y:u.position.y}}),l+=u.size.width+24;return}let c=t.position.x+t.size.width+a;for(let l of r)wt(l.id,{position:{x:c,y:l.position.y}}),c+=l.size.width+a}),Tt()}function Bb(e=24){let t=Hd().sort((c,l)=>c.position.y-l.position.y||c.position.x-l.position.x);if(t.length<2)return;let n=Math.min(...t.map((c)=>c.position.x)),o=Math.min(...t.map((c)=>c.position.y)),r=Math.ceil(Math.sqrt(t.length)),s=Math.max(...t.map((c)=>c.size.width)),a=Math.max(...t.map((c)=>c.size.height));pn(()=>{t.forEach((c,l)=>{wt(c.id,{position:{x:n+l%r*(s+e),y:o+Math.floor(l/r)*(a+e)}})})}),Tt()}function Hd(){let e=Ne.value;if(e.size===0)return[];return Array.from(e).map((t)=>F.value.get(t)).filter((t)=>t!==void 0)}function Jn(e){let t=new Set(Le.value);if(t.has(e))t.delete(e);else t.add(e);Le.value=t,Tt(),kc(t)}function Sc(e){let t=new Set(Le.value);for(let n of e)t.add(n);Le.value=t,Tt(),kc(t)}function Hb(){if(Le.value.size===0)return;Le.value=new Set,Tt(),kc(new Set)}function jb(e){Le.value=new Set(e)}function kc(e){$n("syncContextPinsToServer","/api/canvas/context-pins",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({nodeIds:Array.from(e)})})}var xs=1;function po(e){pn(()=>{let t=new Map(F.value);if(e.zIndex>=xs)xs=e.zIndex+1;t.set(e.id,e),F.value=t,je.value=e.id})}function wt(e,t){Tc(e,t)}function Tc(e,t,n={}){let o=F.value.get(e);if(!o)return;let r=new Map(F.value);if(o.type==="group"&&t.position&&n.skipGroupChildTranslation!==!0){let a=t.position.x-o.position.x,c=t.position.y-o.position.y;if(a!==0||c!==0){let l=Array.isArray(o.data.children)?o.data.children.filter((u)=>typeof u==="string"):[];for(let u of l){let p=r.get(u);if(!p||p.type==="group")continue;r.set(u,{...p,position:{x:p.position.x+a,y:p.position.y+c}})}}}r.set(e,{...o,...t}),F.value=r;let s=r.get(e)?.data.appCheckpoint?.updatedAt;if(Ln.value===e&&s!==void 0&&s!==wr)Ld(e)}function fe(e,t){let n=F.value.get(e);if(!n)return;wt(e,{data:{...n.data,...t}})}function Do(e){XC(e);let t=new Map(F.value);if(t.delete(e),F.value=t,je.value===e)je.value=null;if(ot.value===e)ot.value=null;if(Ne.value.has(e)){let n=new Set(Ne.value);n.delete(e),Ne.value=n}if(Le.value.has(e)){let n=new Set(Le.value);n.delete(e),Le.value=n,kc(n)}}function ai(e){let t=new Map(Je.value);t.set(e.id,e),Je.value=t}function Ub(e){let t=new Map(Je.value);t.delete(e),Je.value=t}function XC(e){let t=!1,n=new Map(Je.value);for(let[o,r]of n)if(r.from===e||r.to===e)n.delete(o),t=!0;if(t)Je.value=n}function KC(e){let t=new Map(ci.value);if(!t.delete(e))return;ci.value=t}async function jd(e){return mn("createAnnotationFromClient","/api/canvas/annotation",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function Zb(e){let t=await mn("removeAnnotationFromClient",`/api/canvas/annotation/${encodeURIComponent(e)}`,{method:"DELETE"});if(t.ok)KC(e);return t}function Cc(e,t){if(!F.value.get(e))return;wt(e,{size:t})}function mo(e){let t=F.value.get(e);if(!t)return;pn(()=>{if(wt(e,{zIndex:xs++}),t.type==="group"&&Array.isArray(t.data.children)){for(let n of t.data.children)if(typeof n==="string"&&F.value.has(n))wt(n,{zIndex:xs++})}}),je.value=e}function Ss(e){let t=F.value.get(e);if(!t)return;wt(e,{collapsed:!t.collapsed}),Tt()}function Wb(e){oe.value={...oe.value,...e}}function qb(e){oe.value=e}function Gb(e){Vb(e)}function Vb(e,t={}){oe.value=e,Tt(t),xb(e,t)}function Xb(e,t={}){let n=new Map,o=1;for(let d of e.nodes)if(n.set(d.id,d),d.zIndex>=o)o=d.zIndex+1;let r=e.edges.filter((d)=>n.has(d.from)&&n.has(d.to)),s=new Map;for(let d of r)s.set(d.id,d);let a=new Map;for(let d of e.annotations??[])a.set(d.id,d);let c=je.value!==null&&n.has(je.value)?je.value:null,l=ot.value!==null&&n.has(ot.value)?ot.value:null,u=Eb(Ne.value,n),p=Eb(Le.value,n);pn(()=>{if(t.applyViewport===!0&&e.viewport)oe.value=e.viewport;if(xs=o,F.value=n,Je.value=s,ci.value=a,je.value=c,ot.value=l,!Ab(Ne.value,u))Ne.value=u;if(!Ab(Le.value,p))Le.value=p})}var Lo=null;function JC(e){return 1-(1-e)**3}function di(e,t=150){let n=oe.value,o=Math.min(4,Math.max(0.1,n.scale*e));if(o===n.scale)return;let r=o/n.scale,{x:s,y:a}=Ro();Fo({x:s-r*(s-n.x),y:a-r*(a-n.y),scale:o},t)}function Fo(e,t=300,n={}){if(Lo!==null)cancelAnimationFrame(Lo);let o={...oe.value},r=performance.now();function s(a){let c=a-r,l=Math.min(1,c/t),u=JC(l);if(oe.value={x:o.x+(e.x-o.x)*u,y:o.y+(e.y-o.y)*u,scale:o.scale+(e.scale-o.scale)*u},l<1)Lo=requestAnimationFrame(s);else Lo=null,Vb(e,n)}Lo=requestAnimationFrame(s)}function fo(){if(Lo!==null)cancelAnimationFrame(Lo),Lo=null}var Kb="pmx-canvas-layout";function Tt(e={}){try{let t=Array.from(F.value.values()),n=t.map((r)=>({id:r.id,position:r.position,size:r.size,collapsed:r.collapsed})),o={viewport:oe.value,nodes:t.map((r)=>({id:r.id,type:r.type,position:r.position,size:r.size,collapsed:r.collapsed,pinned:r.pinned})),edges:Array.from(Je.value.values()).map((r)=>({id:r.id,from:r.from,to:r.to,type:r.type,label:r.label,style:r.style,animated:r.animated})),contextPinnedNodeIds:Array.from(Le.value)};if(!Se())localStorage.setItem(Kb,JSON.stringify(o));hc(n,e)}catch(t){Pb("persistLayout",t)}}function Ud(){try{let e=localStorage.getItem(Kb);if(!e)return null;let t=JSON.parse(e),n=Array.isArray(t.nodes)?t.nodes:[];if(n.length===0)return null;let o=new Map;for(let r of n){if(typeof r.id!=="string"||r.id.length===0)continue;o.set(r.id,{...r.position?{position:r.position}:{},...r.size?{size:r.size}:{},...r.collapsed!==void 0?{collapsed:r.collapsed}:{},...r.pinned!==void 0?{pinned:r.pinned}:{}})}return o.size>0?o:null}catch(e){return Pb("restoreLayout",e),null}}function pi(e,t){let n=Array.from(F.value.values());if(n.length===0)return;let{POSITIVE_INFINITY:o,POSITIVE_INFINITY:r,NEGATIVE_INFINITY:s,NEGATIVE_INFINITY:a}=Number;for(let v of n)o=Math.min(o,v.position.x),r=Math.min(r,v.position.y),s=Math.max(s,v.position.x+v.size.width),a=Math.max(a,v.position.y+v.size.height);let c=fd(),l=Math.max(80,e-c.left-c.right),u=Math.max(80,t-c.top-c.bottom),p=Math.max(1,s-o),d=Math.max(1,a-r),m=Math.min(1,Math.min(l/p,u/d)),f=(o+s)/2,h=(r+a)/2;Fo({x:c.left+l/2-f*m,y:c.top+u/2-h*m,scale:m})}function pt(e,t={}){let n=F.value.get(e);if(!n)return;let o=oe.value,r=bt(),s=fd(),a=Math.max(80,r.width-s.left-s.right),c=Math.max(80,r.height-s.top-s.bottom),l=Math.min(o.scale,a/n.size.width,c/n.size.height),u=n.position.x+n.size.width/2,p=n.position.y+n.size.height/2;Fo({x:s.left+a/2-u*l,y:s.top+c/2-p*l,scale:l},300,t),mo(e)}function Jb(e=1){let t=Array.from(F.value.keys());if(t.length===0)return;let o=((je.value?t.indexOf(je.value):-1)+e+t.length)%t.length,r=t[o];mo(r),pt(r)}function Yb(e){let t=je.value;if(!t)return;let n=F.value.get(t);if(!n)return;let o=Nb(t,Je.value);if(o.size===0)return;let r=n.position.x+n.size.width/2,s=n.position.y+n.size.height/2,a=null,c=-1/0;for(let l of o){let u=F.value.get(l);if(!u)continue;let p=u.position.x+u.size.width/2,d=u.position.y+u.size.height/2,m=p-r,f=d-s,h=Math.sqrt(m*m+f*f);if(h<1)continue;let v;switch(e){case"up":v=-f;break;case"down":v=f;break;case"left":v=-m;break;case"right":v=m;break}if(v<=0)continue;let x=v/h-h*0.001;if(x>c)c=x,a=l}if(a)pt(a)}function kn(e){if(!F.value.get(e))return;if(jt!==null)clearTimeout(jt),jt=null;Ln.value=null,wr=void 0,mo(e),ot.value=e}function Ld(e){if(jt!==null)clearTimeout(jt),jt=null;if(ot.value===e)ot.value=null;if(Ln.value===e)Ln.value=null;wr=void 0}function ho(){let e=ot.value,t=e?F.value.get(e):void 0;if(e&&t&&Hy(t)){let n=e,o=Date.now();if(Ln.value=n,wr=t.data.appCheckpoint?.updatedAt,jt!==null)clearTimeout(jt);let r=()=>{let a=F.value.get(n)?.data.appCheckpoint?.updatedAt;if(a!==void 0&&a!==wr){Ld(n);return}if(Date.now()-o>=GC){Ld(n);return}jt=setTimeout(r,Cb)};jt=setTimeout(r,Cb);return}if(jt!==null)clearTimeout(jt),jt=null;Ln.value=null,wr=void 0,ot.value=null}function Ec(){let e=bd(Array.from(F.value.values()),Array.from(Je.value.values()),"grid");if(e.nodePositions.size===0&&e.groupBounds.size===0)return;pn(()=>{for(let[t,n]of e.nodePositions.entries())wt(t,{position:n});for(let[t,n]of e.groupBounds.entries())Tc(t,{position:{x:n.x,y:n.y},size:{width:n.width,height:n.height}},{skipGroupChildTranslation:!0})}),Tt()}function Ac(){let e=bd(Array.from(F.value.values()),Array.from(Je.value.values()),"graph");if(e.nodePositions.size===0&&e.groupBounds.size===0)return;pn(()=>{for(let[t,n]of e.nodePositions.entries())wt(t,{position:n});for(let[t,n]of e.groupBounds.entries())Tc(t,{position:{x:n.x,y:n.y},size:{width:n.width,height:n.height}},{skipGroupChildTranslation:!0})}),Tt()}var Fn=K(!1),Bo=K(!1);function Zd(){return Fn.value||Bo.value}var YC=0.1,QC=4,Qb=1;function ex(e){return Math.min(QC,Math.max(YC,e))}function Ic({viewport:e,onViewportChange:t,onViewportCommit:n,disabled:o=!1}){let r=L(null),s=L(!1),a=L({x:0,y:0}),c=L(0),l=L(null),u=j((g)=>{if(l.current!==null)window.clearTimeout(l.current);l.current=window.setTimeout(()=>{l.current=null,n(g)},140)},[n]);function p(g){if(g.deltaMode!==0)return g.deltaX===0;return g.deltaX===0&&Number.isInteger(g.deltaY)&&Math.abs(g.deltaY)>=50}let d=j((g)=>{if(o)return;g.preventDefault();let b=e.value;if(g.ctrlKey||g.metaKey||p(g)){let I=r.current?.getBoundingClientRect();if(!I)return;let R=g.clientX-I.left,M=g.clientY-I.top,_=-g.deltaY*0.002,N=ex(b.scale*(1+_)),w=N/b.scale,k={x:R-w*(R-b.x),y:M-w*(M-b.y),scale:N};t(k),u(k)}else{let I={x:b.x-g.deltaX*Qb,y:b.y-g.deltaY*Qb,scale:b.scale};t(I),u(I)}},[o,e,t,u]),m=j((g)=>{if(o)return;let b=r.current;if(!b)return;if(g.button===1||g.button===2)g.preventDefault();else if(ui()){if(g.target!==b)return;g.preventDefault()}else return;s.current=!0,document.documentElement.classList.add("is-canvas-panning"),a.current={x:g.clientX,y:g.clientY},b.setPointerCapture(g.pointerId)},[o]),f=j((g)=>{if(!s.current)return;if(o)return;let b=g.clientX-a.current.x,I=g.clientY-a.current.y;a.current={x:g.clientX,y:g.clientY};let R=e.value;t({x:R.x+b,y:R.y+I,scale:R.scale})},[o,e,t]),h=j(()=>{if(s.current)n(e.value);s.current=!1,document.documentElement.classList.remove("is-canvas-panning")},[n,e]),v=j((g)=>{if(o)return;if(g.touches.length!==2){c.current=0;return}g.preventDefault();let b=g.touches[0],I=g.touches[1],R=Math.hypot(I.clientX-b.clientX,I.clientY-b.clientY),M=(b.clientX+I.clientX)/2,_=(b.clientY+I.clientY)/2;if(c.current>0){let N=e.value,w=r.current?.getBoundingClientRect();if(!w)return;let k=M-w.left,z=_-w.top,X=R/c.current,W=ex(N.scale*X),J=W/N.scale,G={x:k-J*(k-N.x),y:z-J*(z-N.y),scale:W};t(G),u(G)}c.current=R},[o,e,t,u]),x=j(()=>{if(l.current!==null)window.clearTimeout(l.current),l.current=null;n(e.value),c.current=0},[n,e]);return H(()=>{let g=r.current;if(!g)return;return g.addEventListener("wheel",d,{passive:!1}),g.addEventListener("pointerdown",m),g.addEventListener("pointermove",f),g.addEventListener("pointerup",h),g.addEventListener("pointercancel",h),g.addEventListener("lostpointercapture",h),g.addEventListener("touchmove",v,{passive:!1}),g.addEventListener("touchend",x),()=>{if(l.current!==null)window.clearTimeout(l.current);g.removeEventListener("wheel",d),g.removeEventListener("pointerdown",m),g.removeEventListener("pointermove",f),g.removeEventListener("pointerup",h),g.removeEventListener("pointercancel",h),g.removeEventListener("lostpointercapture",h),g.removeEventListener("touchmove",v),g.removeEventListener("touchend",x)}},[d,m,f,h,v,x]),H(()=>()=>{document.documentElement.classList.remove("is-canvas-panning")},[]),r}var eE=0;function i(e,t,n,o,r,s){t||(t={});var a,c,l=t;if("ref"in l)for(c in l={},t)c=="ref"?a=t[c]:l[c]=t[c];var u={type:e,props:l,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--eE,__i:-1,__u:0,__source:r,__self:s};if(typeof e=="function"&&(a=e.defaultProps))for(c in a)l[c]===void 0&&(l[c]=a[c]);return $e.vnode&&$e.vnode(u),u}function tx(){let[e,t]=A({stops:[]}),[n,o]=A(0),[r,s]=A(""),a=Fn.value,c=Yt.value,l=L(0),u=(d)=>{cancelAnimationFrame(l.current),oe.value=d},p=Ic({viewport:oe,onViewportChange:u,onViewportCommit:u});return H(()=>{let d=new URLSearchParams(location.search);return Fn.value=d.get("present")==="1",Bo.value=d.get("capture")==="1",window.pmxCapture={ready:()=>Yt.value,area:bt,camera:()=>({...oe.value}),frame:async(m)=>(Bo.value=!0,fo(),oe.value=pd.parse(m),await new Promise((f)=>requestAnimationFrame(()=>requestAnimationFrame(()=>f()))),{...oe.value})},()=>{delete window.pmxCapture,Fn.value=!1,Bo.value=!1}},[]),H(()=>{if(!a||!c)return;let d=!1;return ne("read tour","/api/canvas/tour",{tour:{stops:[]}}).then((m)=>{if(!d)t(m.tour),o(0)}),()=>{d=!0}},[a,c]),H(()=>{if(!a||Bo.value)return;let d=e.stops[n];if(!d)return;let m=bt(),f;try{f=Ay(d,[...F.value.values()],m.width,m.height),s("")}catch(b){s(b instanceof Error?b.message:String(b));return}fo();let h={...oe.value},v=performance.now(),x=(d.duration??1)*1000,g=(b)=>{if(Bo.value)return;let I=x===0?1:Math.min(1,(b-v)/x);if(oe.value=Iy(h,f,I,m.width,m.height,d.easing,d.pullback),I<1)l.current=requestAnimationFrame(g)};return l.current=requestAnimationFrame(g),()=>cancelAnimationFrame(l.current)},[a,n,e]),H(()=>{if(!a)return;let d=(m)=>{if(m.stopImmediatePropagation(),m.target instanceof HTMLButtonElement&&["Enter"," "].includes(m.key))return;if(["Escape","ArrowRight","ArrowDown","ArrowLeft","ArrowUp"," "].includes(m.key))m.preventDefault();if(m.key==="Escape")Fn.value=!1;if(["ArrowRight","ArrowDown"," "].includes(m.key))o((f)=>Math.max(0,Math.min(e.stops.length-1,f+1)));if(["ArrowLeft","ArrowUp"].includes(m.key))o((f)=>Math.max(0,f-1))};return document.addEventListener("keydown",d,!0),()=>document.removeEventListener("keydown",d,!0)},[a,e]),a?i(_e,{children:[!Bo.value&&i("div",{class:"presentation-navigation",ref:p,onPointerDown:(d)=>{if(d.button===1||d.button===2)cancelAnimationFrame(l.current)},onContextMenu:(d)=>d.preventDefault(),children:i("button",{type:"button",class:"presentation-exit",onClick:()=>Fn.value=!1,children:"Exit presentation"},void 0,!1,void 0,this)},void 0,!1,void 0,this),r&&i("div",{class:"presentation-error",role:"alert",children:r},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null}var tE={fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"};function ve({size:e=16,children:t,...n}){return i("svg",{width:e,height:e,viewBox:"0 0 16 16",style:{verticalAlign:"middle",flexShrink:0},...tE,...n,children:t},void 0,!1,void 0,this)}function Ve(e){return i(ve,{...e,children:i("path",{d:"m4 4 8 8M12 4l-8 8"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function ox(e){return i(ve,{...e,children:i("path",{d:"M8 2v12M2 8h12"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function rx(e){return i(ve,{...e,children:[i("circle",{cx:"8",cy:"8",r:"6"},void 0,!1,void 0,this),i("path",{d:"M8 5v6M5 8h6"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ks(e){return i(ve,{...e,children:i("polyline",{points:"6 3 11 8 6 13"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function qd(e){return i(ve,{...e,children:[i("circle",{cx:"3",cy:"8",r:"0.75"},void 0,!1,void 0,this),i("circle",{cx:"8",cy:"8",r:"0.75"},void 0,!1,void 0,this),i("circle",{cx:"13",cy:"8",r:"0.75"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function jo(e){return i(ve,{...e,children:i("path",{d:"M9 2h5v5M14 2 7 9M6 3H2v11h11v-4"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function ix(e){return i(ve,{...e,children:i("path",{d:"M9 2h5v5M14 2l-5 5M7 14H2V9M2 14l5-5"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function sx(e){return i(ve,{...e,children:i("path",{d:"M14 8H2m5-5-5 5 5 5"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Pc(e){return i(ve,{...e,children:i("path",{d:"M13.5 6A5.5 5.5 0 1 0 13 11M14 2v4h-4"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Gd(e){return i(ve,{...e,children:i("path",{d:"M6 2 2 6l4 4M2 6h7a4 4 0 0 1 0 8"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function ax(e){return i(ve,{...e,children:i("path",{d:"M8 10V2M4.5 5.5 8 2l3.5 3.5M2 10v3.5h12V10"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Nc(e){return i(ve,{...e,children:i("polyline",{points:"3 6 8 11 13 6"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function zc(e){return i(ve,{...e,children:[i("polyline",{points:"1 5 1 1 5 1"},void 0,!1,void 0,this),i("polyline",{points:"11 1 15 1 15 5"},void 0,!1,void 0,this),i("polyline",{points:"15 11 15 15 11 15"},void 0,!1,void 0,this),i("polyline",{points:"5 15 1 15 1 11"},void 0,!1,void 0,this),i("rect",{x:"4",y:"4",width:"8",height:"8",rx:"1"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function cx(e){return i(ve,{...e,children:[i("circle",{cx:"7",cy:"7",r:"4.5"},void 0,!1,void 0,this),i("line",{x1:"10.5",y1:"10.5",x2:"14.5",y2:"14.5"},void 0,!1,void 0,this),i("line",{x1:"5",y1:"7",x2:"9",y2:"7"},void 0,!1,void 0,this),i("line",{x1:"7",y1:"5",x2:"7",y2:"9"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function lx(e){return i(ve,{...e,children:[i("circle",{cx:"7",cy:"7",r:"4.5"},void 0,!1,void 0,this),i("line",{x1:"10.5",y1:"10.5",x2:"14.5",y2:"14.5"},void 0,!1,void 0,this),i("line",{x1:"5",y1:"7",x2:"9",y2:"7"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function go(e){return i(ve,{...e,children:[i("rect",{x:"1.5",y:"1.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),i("rect",{x:"9.5",y:"1.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),i("rect",{x:"1.5",y:"9.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),i("rect",{x:"9.5",y:"9.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),i("line",{x1:"6.5",y1:"4",x2:"9.5",y2:"4"},void 0,!1,void 0,this),i("line",{x1:"6.5",y1:"12",x2:"9.5",y2:"12"},void 0,!1,void 0,this),i("line",{x1:"4",y1:"6.5",x2:"4",y2:"9.5"},void 0,!1,void 0,this),i("line",{x1:"12",y1:"6.5",x2:"12",y2:"9.5"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Rc(e){return i(ve,{...e,children:[i("rect",{x:"1",y:"2",width:"14",height:"12",rx:"1.5"},void 0,!1,void 0,this),i("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 ux(e){return i(ve,{...e,children:[i("circle",{cx:"8",cy:"8",r:"3"},void 0,!1,void 0,this),i("line",{x1:"8",y1:"1",x2:"8",y2:"3"},void 0,!1,void 0,this),i("line",{x1:"8",y1:"13",x2:"8",y2:"15"},void 0,!1,void 0,this),i("line",{x1:"1",y1:"8",x2:"3",y2:"8"},void 0,!1,void 0,this),i("line",{x1:"13",y1:"8",x2:"15",y2:"8"},void 0,!1,void 0,this),i("line",{x1:"3.05",y1:"3.05",x2:"4.46",y2:"4.46"},void 0,!1,void 0,this),i("line",{x1:"11.54",y1:"11.54",x2:"12.95",y2:"12.95"},void 0,!1,void 0,this),i("line",{x1:"3.05",y1:"12.95",x2:"4.46",y2:"11.54"},void 0,!1,void 0,this),i("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 Mc(e){return i(ve,{...e,children:i("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 dx(e){return i(ve,{...e,children:[i("path",{d:"M3 13l2.8-.7L13 5.1 10.9 3 3.7 10.2 3 13Z"},void 0,!1,void 0,this),i("path",{d:"M9.8 4.1l2.1 2.1"},void 0,!1,void 0,this),i("path",{d:"M2.5 14h11"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function px(e){return i(ve,{...e,children:[i("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),i("path",{d:"M7.5 6 12 10.5"},void 0,!1,void 0,this),i("path",{d:"M8.5 14H14"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function mx(e){return i(ve,{...e,children:[i("path",{d:"M3 4h10"},void 0,!1,void 0,this),i("path",{d:"M8 4v8"},void 0,!1,void 0,this),i("path",{d:"M6 12h4"},void 0,!1,void 0,this),i("path",{d:"M4.5 4 4 6"},void 0,!1,void 0,this),i("path",{d:"M11.5 4 12 6"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function fx(e){return i(ve,{...e,children:[i("rect",{x:"1",y:"4",width:"14",height:"10",rx:"1.5"},void 0,!1,void 0,this),i("path",{d:"M5.5 4 L6.5 2.5 H9.5 L10.5 4"},void 0,!1,void 0,this),i("circle",{cx:"8",cy:"9",r:"2.3"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function hx(e){return i(ve,{...e,children:[i("circle",{cx:"8",cy:"8",r:"6"},void 0,!1,void 0,this),i("circle",{cx:"8",cy:"8",r:"3"},void 0,!1,void 0,this),i("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 gx(e){return i(ve,{...e,children:[i("circle",{cx:"8",cy:"8",r:"6"},void 0,!1,void 0,this),i("line",{x1:"5.5",y1:"5.5",x2:"10.5",y2:"10.5"},void 0,!1,void 0,this),i("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 vx(e){return i(ve,{...e,children:[i("circle",{cx:"7",cy:"7",r:"4.5"},void 0,!1,void 0,this),i("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 yx(e){return i(ve,{...e,children:[i("rect",{x:"1",y:"3",width:"14",height:"10",rx:"1.5"},void 0,!1,void 0,this),i("line",{x1:"4",y1:"6",x2:"5",y2:"6"},void 0,!1,void 0,this),i("line",{x1:"7.5",y1:"6",x2:"8.5",y2:"6"},void 0,!1,void 0,this),i("line",{x1:"11",y1:"6",x2:"12",y2:"6"},void 0,!1,void 0,this),i("line",{x1:"4",y1:"10",x2:"12",y2:"10"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function fi(e){return i(ve,{...e,children:i("path",{d:"M2 13 L2 4 A2 2 0 0 1 4 2 L12 2 A2 2 0 0 1 14 4 L14 9 A2 2 0 0 1 12 11 L5 11 Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function $c(e){return i(ve,{...e,children:i("path",{d:"M6 2.67h4l-.53 3.66 1.86 2H4.67l1.86-2zM8 8.33v5"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Oc({size:e=22,class:t}){return i("svg",{width:e,height:e,viewBox:"0 0 64 64",xmlns:"http://www.w3.org/2000/svg",class:t,"aria-hidden":"true",children:[i("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),i("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),i("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),i("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 bx({size:e=15}){return i("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:i("path",{d:"M3 2l10 5.5-4.2 1.3L7.5 13z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function xx({size:e=15}){return i("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:i("path",{d:"M5 7.5V3.8a1 1 0 0 1 2 0V7m0-3.9a1 1 0 0 1 2 0V7m0-2.7a1 1 0 0 1 2 0V7.4m0-.9a1 1 0 0 1 2 0v3.2A4.3 4.3 0 0 1 8.7 14H8a4.3 4.3 0 0 1-3.6-2L2.7 9.3a1 1 0 0 1 1.6-1.2L5 9.2"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Ho(e){return i(ve,{...e,children:[i("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),i("line",{x1:"4",y1:"6",x2:"10",y2:"6"},void 0,!1,void 0,this),i("line",{x1:"4",y1:"8.5",x2:"8",y2:"8.5"},void 0,!1,void 0,this),i("line",{x1:"4",y1:"11",x2:"11",y2:"11"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function nE(e){return i(ve,{...e,children:[i("rect",{x:"1.5",y:"2.5",width:"13",height:"9",rx:"1.5"},void 0,!1,void 0,this),i("path",{d:"M4 13.5 L5.5 11.5 L8 11.5"},void 0,!1,void 0,this),i("polyline",{points:"5 6 7 8 5 10"},void 0,!1,void 0,this),i("line",{x1:"8",y1:"10",x2:"11",y2:"10"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function oE(e){return i(ve,{...e,children:[i("rect",{x:"1.5",y:"2.5",width:"13",height:"9",rx:"1.5"},void 0,!1,void 0,this),i("path",{d:"M12 13.5 L10.5 11.5 L8 11.5"},void 0,!1,void 0,this),i("circle",{cx:"5",cy:"7",r:"0.9",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),i("circle",{cx:"8",cy:"7",r:"0.9",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),i("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 nx(e){return i(ve,{...e,children:[i("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),i("polyline",{points:"9 1.5 9 5 12.5 5"},void 0,!1,void 0,this),i("line",{x1:"4.5",y1:"8.5",x2:"10.5",y2:"8.5"},void 0,!1,void 0,this),i("line",{x1:"4.5",y1:"11",x2:"9",y2:"11"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function rE(e){return i(ve,{...e,children:[i("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),i("circle",{cx:"5.5",cy:"6.5",r:"1.2"},void 0,!1,void 0,this),i("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 mi(e){return i(ve,{...e,children:[i("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),i("line",{x1:"1.5",y1:"5.5",x2:"14.5",y2:"5.5"},void 0,!1,void 0,this),i("circle",{cx:"3.3",cy:"4",r:"0.5",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),i("circle",{cx:"5",cy:"4",r:"0.5",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),i("circle",{cx:"6.7",cy:"4",r:"0.5",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),i("line",{x1:"4",y1:"8",x2:"12",y2:"8"},void 0,!1,void 0,this),i("line",{x1:"4",y1:"10",x2:"10",y2:"10"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function iE(e){return i(ve,{...e,children:[i("rect",{x:"2",y:"4",width:"12",height:"10",rx:"1.5"},void 0,!1,void 0,this),i("line",{x1:"2",y1:"6.5",x2:"14",y2:"6.5"},void 0,!1,void 0,this),i("path",{d:"M11 1.5 L11 4"},void 0,!1,void 0,this),i("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 Vd(e){return i(ve,{...e,children:[i("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),i("rect",{x:"4",y:"4",width:"3.5",height:"3.5",rx:"0.6"},void 0,!1,void 0,this),i("rect",{x:"8.5",y:"4",width:"3.5",height:"3.5",rx:"0.6"},void 0,!1,void 0,this),i("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 sE(e){return i(ve,{...e,children:[i("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),i("circle",{cx:"4.5",cy:"8",r:"1.1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),i("line",{x1:"6.5",y1:"6.5",x2:"12.5",y2:"6.5"},void 0,!1,void 0,this),i("line",{x1:"6.5",y1:"8",x2:"11",y2:"8"},void 0,!1,void 0,this),i("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 aE(e){return i(ve,{...e,children:[i("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),i("path",{d:"M3.5 10.5 L6 6.5 L8.5 9.5 L12.5 5"},void 0,!1,void 0,this),i("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 cE(e){return i(ve,{...e,children:[i("rect",{x:"2",y:"2",width:"12",height:"12",rx:"1.5"},void 0,!1,void 0,this),i("line",{x1:"4.5",y1:"5.5",x2:"11.5",y2:"5.5"},void 0,!1,void 0,this),i("line",{x1:"4.5",y1:"8",x2:"11.5",y2:"8"},void 0,!1,void 0,this),i("line",{x1:"4.5",y1:"10.5",x2:"8",y2:"10.5"},void 0,!1,void 0,this),i("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 lE(e){return i(ve,{...e,children:[i("rect",{x:"1.5",y:"1.5",width:"13",height:"13",rx:"2"},void 0,!1,void 0,this),i("path",{d:"M4 11 L4 6 L6 8.5 L8 6 L8 11"},void 0,!1,void 0,this),i("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 uE(e){return i(ve,{...e,children:[i("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),i("polyline",{points:"10 5 13 5 13 8"},void 0,!1,void 0,this),i("line",{x1:"13",y1:"5",x2:"8",y2:"10"},void 0,!1,void 0,this),i("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 dE(e){return i(ve,{...e,children:[i("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),i("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),i("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 Wd(e){return i(ve,{...e,children:[i("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),i("line",{x1:"5.2",y1:"6",x2:"8",y2:"8"},void 0,!1,void 0,this),i("line",{x1:"8",y1:"8",x2:"10.8",y2:"6"},void 0,!1,void 0,this),i("line",{x1:"8",y1:"8",x2:"8",y2:"11"},void 0,!1,void 0,this),i("circle",{cx:"5.2",cy:"6",r:"1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),i("circle",{cx:"10.8",cy:"6",r:"1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),i("circle",{cx:"8",cy:"8",r:"1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),i("circle",{cx:"8",cy:"11",r:"1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Bn(e){switch(e){case"markdown":return Ho;case"prompt":return nE;case"response":return oE;case"file":return nx;case"diff":return nx;case"mermaid":return Wd;case"image":return rE;case"webpage":return mi;case"context":return iE;case"group":return Vd;case"status":return sE;case"trace":return aE;case"ledger":return cE;case"mcp-app":return lE;case"ext-app":return uE;case"json-render":return dE;case"graph":return Wd;case"board":return Wd;case"html":return mi;default:return Ho}}function pE(e){return new Date(e).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function mE(){rc()}function wx(){let e=hs.value;if(e.length===0)return null;let t=Gn.value,n=ti.value;if(!t)return i("button",{type:"button",class:"attention-history-tab",onClick:mE,"aria-label":n>0?`Recent updates — ${n} new`:"Recent updates",title:n>0?`${n} new updates since last viewed`:"Recent updates",children:[i("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:[i("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),i("circle",{cx:"4.5",cy:"8",r:"1.1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),i("line",{x1:"6.5",y1:"6.5",x2:"12.5",y2:"6.5"},void 0,!1,void 0,this),i("line",{x1:"6.5",y1:"8",x2:"11",y2:"8"},void 0,!1,void 0,this),i("line",{x1:"6.5",y1:"9.5",x2:"12",y2:"9.5"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("span",{class:"attention-history-tab-label",children:"Updates"},void 0,!1,void 0,this),n>0&&i("span",{class:"attention-history-tab-badge","aria-hidden":"true",children:n>9?"9+":n},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return i("aside",{class:"attention-history","aria-label":"Recent semantic changes",children:[i("div",{class:"attention-history-header",children:[i("div",{class:"attention-history-header-text",children:[i("span",{class:"attention-history-title",children:"Recent Updates"},void 0,!1,void 0,this),i("span",{class:"attention-history-subtitle",children:"Focus and meaning shifts"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("button",{type:"button",class:"attention-history-close",onClick:Ky,"aria-label":"Collapse changes panel",title:"Collapse",children:i(Ve,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"attention-history-list",children:e.map((o)=>i("article",{class:`attention-history-entry attention-tone-${o.tone}`,children:[i("div",{class:"attention-history-meta",children:[i("span",{class:"attention-history-kind",children:o.title},void 0,!1,void 0,this),i("time",{class:"attention-history-time",dateTime:new Date(o.createdAt).toISOString(),children:pE(o.createdAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("p",{class:"attention-history-detail",children:o.detail},void 0,!1,void 0,this)]},o.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function _x(){let e=nc.value;if(!e)return null;return i("button",{type:"button",class:`attention-toast attention-tone-${e.tone}`,onClick:rc,"aria-label":`${e.title}${e.detail?`: ${e.detail}`:""} — open change history`,children:[i("span",{class:"attention-toast-dot","aria-hidden":"true"},void 0,!1,void 0,this),i("span",{class:"attention-toast-copy",children:[i("span",{class:"attention-toast-title",children:e.title},void 0,!1,void 0,this),e.detail&&i("span",{class:"attention-toast-detail",children:e.detail},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var Cs=K(null),Sx=0;function hn(e,t,n={}){return new Promise((o)=>{Cs.value?.resolve(null),Sx+=1,Cs.value={seq:Sx,title:e,placeholder:t,initial:n.initial??"",allowEmpty:n.allowEmpty??!1,confirm:n.confirm??"Add",resolve:o}})}function Ts(e){let t=Cs.value;Cs.value=null,t?.resolve(e)}function kx(){let e=Cs.value,t=L(null);if(H(()=>{if(!e)return;let o=(r)=>{if(r.key!=="Escape")return;r.preventDefault(),r.stopPropagation(),Ts(null)};return window.addEventListener("keydown",o,{capture:!0}),()=>window.removeEventListener("keydown",o,{capture:!0})},[e]),!e)return null;let n=()=>{let o=t.current?.value.trim()??"";Ts(o?o:e.allowEmpty?"":null)};return i("div",{class:"text-prompt-backdrop",onPointerDown:()=>Ts(null),children:i("div",{class:"text-prompt",role:"dialog","aria-label":e.title,"data-testid":"text-prompt",onPointerDown:(o)=>o.stopPropagation(),children:[i("div",{class:"text-prompt-title",children:e.title},void 0,!1,void 0,this),i("input",{ref:(o)=>{if(t.current=o,!o)return;if(o.focus(),e.initial)o.select()},class:"text-prompt-input",type:"text",defaultValue:e.initial,placeholder:e.placeholder,onKeyDown:(o)=>{if(o.key==="Enter")o.preventDefault(),o.stopPropagation(),n();else if(o.key==="Escape")o.preventDefault(),o.stopPropagation(),Ts(null)}},e.seq,!1,void 0,this),i("div",{class:"text-prompt-actions",children:[i("button",{type:"button",class:"text-prompt-cancel",onClick:()=>Ts(null),children:"Cancel"},void 0,!1,void 0,this),i("button",{type:"button",class:"text-prompt-confirm",onClick:n,children:e.confirm},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}async function Uo(e,t,n,o){if((await vc({type:t,sourceNodeId:e.id,sourceSurface:"native-node",...n?{payload:n}:{}})).ok)on("context",o,"",[e.id])}var Tr={padding:"3px 8px",fontSize:"10px",background:"color-mix(in srgb, var(--c-accent) 12%, transparent)",border:"1px solid color-mix(in srgb, var(--c-accent) 25%, transparent)",borderRadius:"4px",color:"var(--c-text-soft)",cursor:"pointer",flexShrink:0};function fE(e){let t=e.title||e.label||e.key||"Context",n=e.summary?.trim()||"Available in startup context.",o=e.pathDisplay||e.path||"",r=e.category==="profile"?"Operator":e.category==="planning"||e.category==="memory"?"Product":e.category?e.category.charAt(0).toUpperCase()+e.category.slice(1):void 0,s=e.sourceKind==="global"?"Global":"Workspace",a=e.state==="missing"?"Missing":e.state==="stale"?"Stale":e.state==="invalid"?"Invalid":"Loaded";return{title:t,summary:n,pathDisplay:o,category:r,sourceKind:s,status:a,required:e.required===!0}}function Hn(e){return typeof e==="string"?e.trim():""}function hE(e){return e.replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim()}function gE(e){let t=Hn(e.title),n=Hn(e.content),o=hE(Hn(e.rendered)),r=n||o,s=Hn(e.path);if(!t&&!r&&!s)return null;return{title:t||"Context",summary:r,path:s}}function vE(e){let t=Hn(e.data.title)||e.id,n=Hn(e.data.content)||Hn(e.data.excerpt)||Hn(e.data.description)||Hn(e.data.pageTitle)||"",o=Hn(e.data.path)||Hn(e.data.url);return{id:e.id,title:t,summary:n,kind:Nt[e.type]??e.type,path:o}}function Tx(e){if(e===null||!Number.isFinite(e)||e<0)return"0";if(e>=1e6)return`${(e/1e6).toFixed(1)}m`;if(e>=1000)return`${(e/1000).toFixed(1)}k`;return`${Math.round(e)}`}function yE(e){if(e>=0.95)return"var(--c-danger)";if(e>=0.85)return"var(--c-warn)";if(e>=0.7)return"var(--c-warn)";return"var(--c-accent)"}function Lc({node:e,expanded:t=!1,pinnedNodes:n=[]}){let o=e.data.cards??[],r=e.data.auxTabs??[],s=n.map(vE),a=s.length>0,c=typeof e.data.currentTokens==="number"?e.data.currentTokens:null,l=typeof e.data.tokenLimit==="number"?e.data.tokenLimit:null,u=typeof e.data.utilization==="number"?e.data.utilization:null,p=typeof e.data.messagesLength==="number"?e.data.messagesLength:null,d=u!==null?Math.max(0,Math.min(100,Math.round(u*100))):null,m=yE(u??0),f=!a&&o.length===0&&r.length===0?gE(e.data):null,h=async(v)=>{let x=typeof v.path==="string"?v.path.trim():"";if(!x)return;await mc(x)};return i("div",{style:{display:"flex",flexDirection:"column",gap:t?"10px":"6px",fontSize:t?"14px":"12px",maxWidth:t?"760px":void 0,margin:t?"0 auto":void 0,width:t?"100%":void 0,padding:t?"8px 0":void 0},children:[i("div",{style:{display:"flex",justifyContent:"flex-end"},children:i("button",{type:"button",class:"ax-node-action",title:"Point the agent at this node — sets it as the agent's current AX focus so the agent pulls it into context to work on next (a one-click alternative to manually pinning).",style:Tr,onClick:(v)=>{v.stopPropagation(),Uo(e,"ax.focus.set",void 0,"Focus set")},children:"Set focus"},void 0,!1,void 0,this)},void 0,!1,void 0,this),l!==null&&l>0&&i("div",{style:{marginBottom:"8px"},children:[i("div",{style:{fontSize:"10px",fontWeight:600,color:"var(--c-muted)",textTransform:"uppercase",letterSpacing:"0.04em",marginBottom:"6px"},children:"Token Usage"},void 0,!1,void 0,this),i("div",{style:{height:"6px",background:"var(--c-surface-hover)",borderRadius:"3px",overflow:"hidden",marginBottom:"4px"},children:i("div",{style:{height:"100%",width:`${Math.min(100,(u??0)*100)}%`,background:m,borderRadius:"3px",transition:"width 0.3s ease"}},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("div",{style:{fontSize:"11px",color:"var(--c-muted)"},children:[d,"% — ",Tx(c)," / ",Tx(l)," tokens",p!==null&&i(_e,{children:[" · ",p," messages"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),a&&i("div",{children:[i("div",{style:{fontSize:"10px",fontWeight:600,color:"var(--c-muted)",textTransform:"uppercase",letterSpacing:"0.04em",marginBottom:"6px"},children:["Pinned Context (",s.length,")"]},void 0,!0,void 0,this),s.map((v)=>i("div",{style:{padding:"6px 8px",background:"var(--c-surface-subtle)",borderRadius:"6px",marginBottom:"4px",borderLeft:"2px solid var(--c-accent)"},children:[i("div",{style:{fontWeight:600,color:"var(--c-text)",marginBottom:"2px"},children:v.title},void 0,!1,void 0,this),v.summary&&i("div",{style:{color:"var(--c-muted)",fontSize:"10px",lineHeight:1.45,marginBottom:"4px",whiteSpace:"pre-wrap"},children:v.summary},void 0,!1,void 0,this),i("div",{style:{display:"flex",gap:"4px",flexWrap:"wrap",marginTop:"4px"},children:i("span",{style:{fontSize:"9px",padding:"1px 4px",background:"var(--c-surface-hover)",color:"var(--c-text-soft)",borderRadius:"3px",display:"inline-block"},children:v.kind},void 0,!1,void 0,this)},void 0,!1,void 0,this),v.path&&i("div",{style:{marginTop:"6px"},children:[i("div",{style:{color:"var(--c-dim)",fontSize:"10px",wordBreak:"break-all",marginBottom:"6px"},children:v.path},void 0,!1,void 0,this),v.path.startsWith("/")&&i("button",{type:"button",onClick:()=>void mc(v.path),style:{padding:"4px 8px",fontSize:"10px",background:"color-mix(in srgb, var(--c-accent) 12%, transparent)",border:"1px solid color-mix(in srgb, var(--c-accent) 25%, transparent)",borderRadius:"4px",color:"var(--c-text-soft)",cursor:"pointer"},children:"Open in canvas"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},v.id,!0,void 0,this))]},void 0,!0,void 0,this),!a&&o.length>0&&i("div",{children:[i("div",{style:{fontSize:"10px",fontWeight:600,color:"var(--c-muted)",textTransform:"uppercase",letterSpacing:"0.04em",marginBottom:"6px"},children:["Context (",o.length,")"]},void 0,!0,void 0,this),o.map((v)=>{let x=fE(v);return i("div",{style:{padding:"6px 8px",background:"var(--c-surface-subtle)",borderRadius:"6px",marginBottom:"4px",borderLeft:"2px solid var(--c-accent)"},children:[i("div",{style:{fontWeight:600,color:"var(--c-text)",marginBottom:"2px"},children:x.title},void 0,!1,void 0,this),i("div",{style:{color:"var(--c-muted)",fontSize:"10px",lineHeight:1.45,marginBottom:"4px"},children:x.summary},void 0,!1,void 0,this),x.pathDisplay&&i("div",{style:{color:"var(--c-dim)",fontSize:"10px",wordBreak:"break-all"},children:x.pathDisplay},void 0,!1,void 0,this),i("div",{style:{display:"flex",gap:"4px",flexWrap:"wrap",marginTop:"4px"},children:[i("span",{style:{fontSize:"9px",padding:"1px 4px",background:"color-mix(in srgb, var(--c-accent) 10%, transparent)",color:"var(--c-accent)",borderRadius:"3px",display:"inline-block"},children:x.status},void 0,!1,void 0,this),x.category&&i("span",{style:{fontSize:"9px",padding:"1px 4px",background:"var(--c-surface-hover)",color:"var(--c-text-soft)",borderRadius:"3px",display:"inline-block"},children:x.category},void 0,!1,void 0,this),i("span",{style:{fontSize:"9px",padding:"1px 4px",background:"var(--c-surface-hover)",color:"var(--c-text-soft)",borderRadius:"3px",display:"inline-block"},children:x.sourceKind},void 0,!1,void 0,this),x.required&&i("span",{style:{fontSize:"9px",padding:"1px 4px",background:"color-mix(in srgb, var(--c-accent) 12%, transparent)",color:"var(--c-accent)",borderRadius:"3px",display:"inline-block"},children:"Required"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),v.path&&i("div",{style:{marginTop:"6px"},children:i("button",{type:"button",onClick:()=>void h(v),style:{padding:"4px 8px",fontSize:"10px",background:"color-mix(in srgb, var(--c-accent) 12%, transparent)",border:"1px solid color-mix(in srgb, var(--c-accent) 25%, transparent)",borderRadius:"4px",color:"var(--c-text-soft)",cursor:"pointer"},children:"Open in canvas"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},v.key??x.pathDisplay??x.title,!0,void 0,this)})]},void 0,!0,void 0,this),!a&&r.length>0&&i("div",{children:[i("div",{style:{fontSize:"10px",fontWeight:600,color:"var(--c-muted)",textTransform:"uppercase",letterSpacing:"0.04em",marginBottom:"6px",marginTop:o.length>0?"8px":0},children:["References (",r.length,")"]},void 0,!0,void 0,this),r.map((v)=>i("a",{href:v.url,target:"_blank",rel:"noopener noreferrer",style:{display:"block",padding:"4px 8px",color:"var(--c-accent)",fontSize:"11px",textDecoration:"none",borderRadius:"4px",marginBottom:"2px",wordBreak:"break-all"},children:[v.url,v.reason&&i("span",{style:{color:"var(--c-dim)",fontSize:"10px",marginLeft:"6px"},children:["(",v.reason,")"]},void 0,!0,void 0,this)]},v.id,!0,void 0,this))]},void 0,!0,void 0,this),f&&i("div",{style:{padding:"8px 10px",background:"var(--c-surface-subtle)",borderRadius:"6px",borderLeft:"2px solid var(--c-accent)"},children:[i("div",{style:{fontWeight:600,color:"var(--c-text)",marginBottom:"4px"},children:f.title},void 0,!1,void 0,this),f.summary&&i("div",{style:{color:"var(--c-text-soft)",fontSize:"11px",lineHeight:1.5,whiteSpace:"pre-wrap"},children:f.summary},void 0,!1,void 0,this),f.path&&i("div",{style:{marginTop:"6px"},children:[i("div",{style:{color:"var(--c-dim)",fontSize:"10px",wordBreak:"break-all",marginBottom:"6px"},children:f.path},void 0,!1,void 0,this),i("button",{type:"button",onClick:()=>void mc(f.path),style:{padding:"4px 8px",fontSize:"10px",background:"color-mix(in srgb, var(--c-accent) 12%, transparent)",border:"1px solid color-mix(in srgb, var(--c-accent) 25%, transparent)",borderRadius:"4px",color:"var(--c-text-soft)",cursor:"pointer"},children:"Open in canvas"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!a&&!f&&o.length===0&&r.length===0&&i("div",{style:{color:"var(--c-dim)",fontStyle:"italic"},children:"No context loaded"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Cx(e){return e.replace(/^[ab]\//,"")}function bE(e,t){if(t&&t!=="/dev/null")return Cx(t);if(e&&e!=="/dev/null")return Cx(e);return null}function xE(e){if(!e.trim())return[];let t=e.split(`
|
|
89
|
-
`);if(t.length>0&&t[t.length-1]==="")t.pop();let n=[],o=null,
|
|
90
|
-
`)
|
|
91
|
-
`,
|
|
92
|
-
`||u==="\r"){if(u==="\r"&&e[
|
|
93
|
-
`)
|
|
94
|
-
`).length;
|
|
95
|
-
`).length,
|
|
96
|
-
`),w=`${String(
|
|
97
|
-
`},void 0,!1,void 0,this)]},
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
`),
|
|
105
|
-
`)
|
|
106
|
-
`)
|
|
65
|
+
`).trim()}function Yt(e,t){if(t<=0)return"";let n=aR(e);if(n.length<=t)return n;if(t<=1)return n.slice(0,t);return`${n.slice(0,Math.max(0,t-1)).trimEnd()}…`}function Ni(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)?e:{}}function ws(e){if(typeof e==="string"||typeof e==="number"||typeof e==="boolean")return String(e);if(Array.isArray(e))return e.map(ws).filter(Boolean).join(`
|
|
66
|
+
`);return Object.entries(Ni(e)).map(([t,n])=>{let o=ws(n);return o?`${t}: ${o}`:""}).filter(Boolean).join("; ")}function kn(e,t){return t.map((n)=>{let o=e[n];return typeof o==="string"||typeof o==="number"||typeof o==="boolean"?String(o):""}).filter(Boolean).join(`
|
|
67
|
+
`)}function lR(e){let t=typeof e.graphType==="string"?e.graphType:"chart",n=ws(e.data);return`Chart: ${t}.
|
|
68
|
+
${kn(e,["title","beforeLabel","afterLabel"])}
|
|
69
|
+
${n||"No chart values available."}`}function cR(e){let t=Ni(e),n=Ni(t.elements),o=new Set,i=[],s=(a)=>{if(o.has(a))return;o.add(a);let l=Ni(n[a]),c=Ni(l.props),u=kn(c,["title","description","text","content","label","value","caption"]);if(u)i.push(u);if(Array.isArray(c.data))i.push(ws(c.data));if(Array.isArray(l.children)){for(let d of l.children)if(typeof d==="string")s(d)}};if(typeof t.root==="string")s(t.root);return i.length?`Authored surface content (dynamic visibility not evaluated):
|
|
70
|
+
${i.join(`
|
|
71
|
+
`)}`:"Interactive surface. No static text available; inspect the rendered surface."}function uR(e,t){let n=[],o=typeof e.url==="string"?e.url:"",i=typeof e.pageTitle==="string"?e.pageTitle:"",s=typeof e.description==="string"?e.description:"",a=typeof e.status==="string"?e.status:"",l=typeof e.statusCode==="number"?e.statusCode:null,c=typeof e.error==="string"?e.error:"",u=typeof e.content==="string"?e.content:typeof e.excerpt==="string"?e.excerpt:"";if(o)n.push(`URL: ${o}`);if(i)n.push(`Title: ${i}`);if(s)n.push(`Description: ${s}`);if(a||l!==null)n.push(`Fetch: ${a||"unknown"}${l!==null?` (${l})`:""}`);if(c)n.push(`Error: ${c}`);let d=n.join(`
|
|
72
|
+
`),p=Math.max(0,t-d.length-(d?2:0)),f=p>0?Yt(u,p):"";if(d&&f)return`${d}
|
|
73
|
+
|
|
74
|
+
${f}`;if(d)return Yt(d,t);return Yt(u,t)}function dR(e){if(e===null||e===void 0)return"";if(typeof e!=="object"||Array.isArray(e))return"";let t=e.elements;if(Array.isArray(t)){let n=t.map((o)=>kn(Ni(o),["text","label"])).filter(Boolean);return`Diagram elements: ${t.length}
|
|
75
|
+
${n.length?`Diagram labels: ${n.join("; ")}`:"No diagram description available."}`}return"No app content description available."}function pR(e,t){let n=[],o=typeof e.title==="string"?e.title:"",i=typeof e.mode==="string"?e.mode:"",s=typeof e.hostMode==="string"?e.hostMode:"",a=typeof e.serverName==="string"?e.serverName:"",l=typeof e.toolName==="string"?e.toolName:"",c=typeof e.resourceUri==="string"?e.resourceUri:"",u=typeof e.path==="string"?e.path:"",d=typeof e.url==="string"?e.url:"",p=typeof e.sessionStatus==="string"?e.sessionStatus:"",f=dR(e.toolInput);if(o)n.push(`App: ${o}`);if(i||s)n.push(`Mode: ${[i,s].filter(Boolean).join(" / ")}`);if(a||l)n.push(`Source: ${[a,l].filter(Boolean).join(" / ")}`);if(c)n.push(`Resource: ${c}`);if(u)n.push(`Path: ${u}`);if(d)n.push(`URL: ${d}`);if(p)n.push(`Session: ${p}`);if(f)n.push(f);if(n.length===0)return"MCP App node";return Yt(n.join(`
|
|
76
|
+
`),t)}function fR(e,t){let n=[],o=typeof e.content==="string"?e.content:"",i=typeof e.title==="string"?e.title:"",s=typeof e.path==="string"?e.path:"",a=typeof e.url==="string"?e.url:"",l=typeof e.projectPath==="string"?e.projectPath:"",c=typeof e.artifactBytes==="number"?e.artifactBytes:null,u=typeof e.sourceFileCount==="number"?e.sourceFileCount:null,d=Array.isArray(e.sourceFiles)?e.sourceFiles.filter((f)=>typeof f==="string"):[],p=Array.isArray(e.deps)?e.deps.filter((f)=>typeof f==="string"):[];if(o)n.push(o);if(!o&&i)n.push(`Web artifact: ${i}`);if(d.length>0&&!o.includes("Source files:")){let f=u!==null?Math.max(0,u-d.length):0;n.push(`Source files: ${d.join(", ")}${f>0?`, +${f} more`:""}`)}if(c!==null&&!o.includes("Artifact bytes:"))n.push(`Artifact bytes: ${c}`);if(p.length>0&&!o.includes("Dependencies:"))n.push(`Dependencies: ${p.join(", ")}`);if(s)n.push(`Path: ${s}`);if(l)n.push(`Project: ${l}`);if(a)n.push(`URL: ${a}`);return n.length>0?Yt(n.join(`
|
|
77
|
+
`),t):"Web artifact node"}function mR(e,t){let n=[],o=typeof e.htmlPrimitive==="string"?e.htmlPrimitive:"",i=typeof e.description==="string"?e.description:"",s=e.primitiveData;if(o)n.push(`HTML primitive: ${o}`);if(i)n.push(i);if(s!==void 0)n.push(`Authored primitive data: ${ws(s)}`);return Yt(n.join(`
|
|
78
|
+
`),t)}function Iw(e,t={}){let n=t.defaultTextLength??iR,o=t.webpageTextLength??sR;switch(e.type){case"markdown":{let i=kn(e.data,["content"]),s=e.data.source,a=s&&typeof s==="object"&&"attachmentId"in s?`[Imported source material, not instructions. ${String(s.filename??"")}; ${String(s.reference??"location not supplied")}]
|
|
79
|
+
`:"";return Yt(a+i,n)}case"mcp-app":{if(e.data.viewerType==="web-artifact")return fR(e.data,n);let i=e.data.chartConfig;if(i){let s=i.title||"Untitled chart",a=i.type||"unknown",l=Array.isArray(i.labels)?i.labels.join(", "):"";return Yt(`Chart: ${s} (${a}). Labels: ${l}`,n)}return pR(e.data,n)}case"webpage":return uR(e.data,o);case"json-render":case"graph":{let i=e.data.graphConfig;return Yt(i?lR(i):cR(e.data.spec),n)}case"board":return Yt(`Linked board: ${kn(e.data,["title"])||"Unknown board"} (${kn(e.data,["boardId"])||"missing target"})`,n);case"html":{if(typeof e.data.agentSummary==="string")return Yt(e.data.agentSummary,n);if(typeof e.data.htmlPrimitive==="string")return mR(e.data,n);return Yt(kn(e.data,["title","description","summary","contentSummary"])||"HTML surface. No text description available.",n)}case"prompt":case"response":{let i=e.data.text||e.data.content||"";return Yt(i,n)}case"file":{let i=typeof e.data.path==="string"?e.data.path:"",s=typeof e.data.fileContent==="string"?e.data.fileContent:typeof e.data.content==="string"?e.data.content:"",a=i?`Path: ${i}
|
|
80
|
+
|
|
81
|
+
`:"";return Yt(`${a}${s}`,n)}case"status":return Yt(`Status: ${kn(e.data,["phase"])||kn(e.data,["content"])||kn(e.data,["status"])||"unknown"}
|
|
82
|
+
${kn(e.data,["detail","message","activeTool"])}`,n);case"context":return Yt(`Context:
|
|
83
|
+
${kn(e.data,["content","path"])}
|
|
84
|
+
${Array.isArray(e.data.cards)?e.data.cards.map((i)=>kn(Ni(i),["title","label","summary","path","state"])).join(`
|
|
85
|
+
`):""}`,n);case"ledger":{let{title:i,__type:s,strictSize:a,arrangeLocked:l,...c}=e.data;return Yt(`Ledger:
|
|
86
|
+
${ws(c)}`,n)}case"trace":return Yt(`Tool trace:
|
|
87
|
+
${kn(e.data,["toolName","status","resultSummary","content","error"])}`,n);case"diff":case"mermaid":return Yt(`${e.type==="diff"?"Diff":"Mermaid diagram source"}:
|
|
88
|
+
${kn(e.data,["content"])}`,n);case"image":return Yt(kn(e.data,["alt","caption","description"])||"No image description available; inspect the image.",n);case"group":return Yt(`Group: ${kn(e.data,["title"])||"Untitled"}. ${Array.isArray(e.data.children)?e.data.children.length:0} cards.`,n)}}function hr(e,t){let n=e.position.x+e.size.width,o=e.position.y+e.size.height,i=t.position.x+t.size.width,s=t.position.y+t.size.height,a=Math.max(0,Math.max(e.position.x,t.position.x)-Math.min(n,i)),l=Math.max(0,Math.max(e.position.y,t.position.y)-Math.min(o,s));return Math.sqrt(a**2+l**2)}function hR(e){let t=[...e],n=100;return t.sort((o,i)=>{let s=Math.floor(o.position.y/100),a=Math.floor(i.position.y/100);if(s!==a)return s-a;return o.position.x-i.position.x}),t}function gR(e){let t=e.find((i)=>i.data.title&&typeof i.data.title==="string");if(t&&e.length<=3)return e.filter((s)=>s.data.title).map((s)=>s.data.title).slice(0,3).join(", ");let n={};for(let i of e)n[i.type]=(n[i.type]??0)+1;let o=Object.entries(n).map(([i,s])=>s===1?i:`${s} ${i}`);if(t)return`${t.data.title} + ${o.join(", ")}`;return o.join(", ")}function yR(e,t){return e.x<=t.x+t.width&&e.x+e.width>=t.x&&e.y<=t.y+t.height&&e.y+e.height>=t.y}function vR(e,t){let n=t.filter((i)=>yR(e.bounds,{x:i.position.x,y:i.position.y,width:i.size.width,height:i.size.height})),o=n.map((i)=>typeof i.data.title==="string"&&i.data.title.length>0?i.data.title:i.id);return{id:e.id,label:e.label??e.text??null,bounds:e.bounds,targetNodeIds:n.map((i)=>i.id),targetNodeTitles:o,target:o.length>0?o.join(", "):"empty canvas region"}}function bR(e,t=200){if(e.length===0)return[];let n=new Map,o=(c)=>{while(n.get(c)!==c){let u=n.get(c);n.set(c,n.get(u)),c=u}return c},i=(c,u)=>{let d=o(c),p=o(u);if(d!==p)n.set(d,p)};for(let c of e)n.set(c.id,c.id);for(let c=0;c<e.length;c++)for(let u=c+1;u<e.length;u++)if(hr(e[c],e[u])<=t)i(e[c].id,e[u].id);let s=new Map;for(let c of e){let u=o(c.id);if(!s.has(u))s.set(u,[]);s.get(u).push(c)}let a=[],l=0;for(let[,c]of s){if(c.length<2)continue;let u=c.map((b)=>b.position.x),d=c.map((b)=>b.position.y),p=c.map((b)=>b.position.x+b.size.width),f=c.map((b)=>b.position.y+b.size.height),m=Math.min(...u),h=Math.min(...d),g=Math.max(...p),y=Math.max(...f);a.push({id:`cluster-${l++}`,nodeIds:c.map((b)=>b.id),label:gR(c),centroid:{x:Math.round((m+g)/2),y:Math.round((h+y)/2)},bounds:{x:m,y:h,width:g-m,height:y-h}})}return a.sort((c,u)=>{let d=Math.floor(c.centroid.y/200),p=Math.floor(u.centroid.y/200);if(d!==p)return d-p;return c.centroid.x-u.centroid.x}),a}function If(e,t,n=5,o=600){let i=e.filter((a)=>t.has(a.id)),s=e.filter((a)=>!t.has(a.id));return i.map((a)=>{let l=s.map((c)=>({node:c,distance:hr(a,c)})).filter((c)=>c.distance<=o).sort((c,u)=>c.distance-u.distance).slice(0,n);return{pinnedNodeId:a.id,pinnedNodeTitle:a.data.title??null,neighbors:l.map((c)=>({id:c.node.id,type:c.node.type,title:c.node.data.title??null,distance:Math.round(c.distance)}))}})}function qa(e,t,n,o=[]){let i=bR(e),s=new Map;for(let u of i)for(let d of u.nodeIds)s.set(d,u.id);let l=hR(e).map((u,d)=>({id:u.id,type:u.type,title:u.data.title??null,content:Iw(u,{defaultTextLength:320,webpageTextLength:640})||null,clusterId:s.get(u.id)??null,readingOrder:d})),c=If(e,n);return{totalNodes:e.length,clusters:i,nodesInReadingOrder:l,pinnedNeighborhoods:c,annotations:o.map((u)=>vR(u,e))}}function ks(e){if(!e)return null;let t=e.data.title;return typeof t==="string"&&t.trim().length>0?t.trim():null}function Gc(e,t){return{id:e?.id??t,title:ks(e),nodeType:e?.type??"markdown"}}function Ew(e,t){return{id:e.id,edgeType:e.type,fromId:e.from,toId:e.to,...e.toBoardId!==void 0?{toBoardId:e.toBoardId}:{},fromTitle:ks(t.get(e.from)),toTitle:e.toBoardId===void 0?ks(t.get(e.to)):null}}function Kc(e){return new Map(e.map((t)=>[t.id,t]))}function Aw(e){return new Map(e.map((t)=>[t.id,t]))}function Ao(e){return Array.from(e).sort((t,n)=>t.localeCompare(n))}function Ef(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Af(e){if(!e||e.type!=="group")return[];let t=e.data.children;if(!Array.isArray(t))return[];return t.filter((n)=>typeof n==="string").sort((n,o)=>n.localeCompare(o))}function Rw(e){let t=new Map;for(let n of e.clusters){let o=[...n.nodeIds].sort((i,s)=>i.localeCompare(s));for(let i of o)t.set(i,o.filter((s)=>s!==i))}return t}function Pw(e){let t=new Map;for(let n of e.pinnedNeighborhoods)t.set(n.pinnedNodeId,n.neighbors.map((o)=>o.id).sort((o,i)=>o.localeCompare(i)));return t}function xR(e,t){let n=Ao(Array.from(t).filter((i)=>!e.has(i))),o=Ao(Array.from(e).filter((i)=>!t.has(i)));return{added:n,removed:o}}function Nw(e){let t=e&&typeof e==="object"?e:{};return{timestamp:typeof t.timestamp==="string"?t.timestamp:void 0,sessionId:typeof t.sessionId==="string"?t.sessionId:void 0}}function wR(e,t,n){if(!e||!n)return{layout:e,pinnedNodeIds:[],primaryFocusNodeIds:[],secondaryFocusNodeIds:[],regions:[],spatial:n};let o=Kc(e.nodes),i=Ao(t).filter((c)=>o.has(c)),s=new Set(i),a=new Set,l=[];for(let c of n.pinnedNeighborhoods){if(!s.has(c.pinnedNodeId))continue;let u=Ao([c.pinnedNodeId,...c.neighbors.map((d)=>d.id)]).filter((d,p,f)=>f.indexOf(d)===p&&o.has(d));for(let d of u)if(!s.has(d))a.add(d);l.push({id:`region-${c.pinnedNodeId}`,primaryNodeId:c.pinnedNodeId,nodeIds:u})}if(l.length===0&&i.length>0)for(let c of i)l.push({id:`region-${c}`,primaryNodeId:c,nodeIds:[c]});return{layout:e,pinnedNodeIds:i,primaryFocusNodeIds:i,secondaryFocusNodeIds:Ao(a),regions:l,spatial:n}}class Vc{currentBoardId;currentLayout=null;currentPins=new Set;previousSpatial=null;setInitialPins(e){this.currentPins=new Set(e)}getAttentionSnapshot(){return wR(this.currentLayout,this.currentPins,this.previousSpatial)}handleMessage(e){if(e.event==="context-pins-changed"||e.event==="canvas-layout-update"){let t=e.data&&typeof e.data==="object"?e.data:{};if(typeof t.boardId==="string"||t.boardId===null){if(this.currentBoardId!==void 0&&t.boardId!==this.currentBoardId)this.currentLayout=null,this.currentPins.clear(),this.previousSpatial=null;this.currentBoardId=t.boardId}}if(e.event==="context-pins-changed")return this.handleContextPinsChanged(e.data);if(e.event==="canvas-layout-update")return this.handleLayoutUpdate(e.data);return[]}handleContextPinsChanged(e){let t=e&&typeof e==="object"?e:{},n=Array.isArray(t.nodeIds)?t.nodeIds.filter((u)=>typeof u==="string"):[],o=Nw(e),i=new Set(n),{added:s,removed:a}=xR(this.currentPins,i);if(this.currentPins=i,!this.currentLayout)return[];let l=Kc(this.currentLayout.nodes),c={added:s.map((u)=>Gc(l.get(u),u)),removed:a.map((u)=>Gc(l.get(u),u))};if(this.previousSpatial=qa(this.currentLayout.nodes,this.currentLayout.edges,this.currentPins,this.currentLayout.annotations??[]),c.added.length===0&&c.removed.length===0)return[];return[{type:"context-pin",...o,...c}]}handleLayoutUpdate(e){let t=e&&typeof e==="object"?e:{},n=t.layout&&typeof t.layout==="object"?t.layout:null;if(!n)return[];let o=Nw(e);if(!this.currentLayout)return this.currentLayout=n,this.previousSpatial=qa(n.nodes,n.edges,this.currentPins,n.annotations??[]),[];let i=this.currentLayout,s=this.previousSpatial??qa(i.nodes,i.edges,this.currentPins,i.annotations??[]),a=qa(n.nodes,n.edges,this.currentPins,n.annotations??[]),l=[],c=Kc(i.nodes),u=Kc(n.nodes),d=Aw(i.edges),p=Aw(n.edges),f=Ao(Array.from(p.keys()).filter((b)=>!d.has(b))).map((b)=>p.get(b)).filter((b)=>b!==void 0);if(f.length>0)l.push({type:"connect",...o,edges:f.map((b)=>Ew(b,u))});let m=Ao(Array.from(c.keys()).filter((b)=>!u.has(b))),h=Ao(Array.from(d.keys()).filter((b)=>!p.has(b)));if(m.length>0||h.length>0)l.push({type:"remove",...o,nodes:m.map((b)=>Gc(c.get(b),b)),edges:h.map((b)=>d.get(b)).filter((b)=>b!==void 0).map((b)=>Ew(b,c))});let g=this.buildGroupEvent(c,u,o);if(g)l.push(g);let y=this.buildMoveEndEvent(i,n,c,u,s,a,o);if(y)l.push(y);return this.currentLayout=n,this.previousSpatial=a,l}buildGroupEvent(e,t,n){let o=Ao(Array.from(e.values()).filter((l)=>l.type==="group").map((l)=>l.id)),i=Ao(Array.from(t.values()).filter((l)=>l.type==="group").map((l)=>l.id)),s=i.filter((l)=>!o.includes(l)).map((l)=>{let c=t.get(l),u=Af(c);return{id:l,title:ks(c),childCount:u.length}}),a=[];for(let l of i.filter((c)=>o.includes(c))){let c=Af(e.get(l)),u=Af(t.get(l));if(Ef(c,u))continue;a.push({id:l,title:ks(t.get(l)),addedChildIds:u.filter((d)=>!c.includes(d)),removedChildIds:c.filter((d)=>!u.includes(d)),childCount:u.length})}if(s.length===0&&a.length===0)return null;return{type:"group",...n,created:s,updated:a}}buildMoveEndEvent(e,t,n,o,i,s,a){let l=Ao(Array.from(o.keys()).filter((y)=>{let b=n.get(y),x=o.get(y);if(!b||!x)return!1;return b.position.x!==x.position.x||b.position.y!==x.position.y}));if(l.length===0)return null;let c=Rw(i),u=Rw(s),d=Pw(i),p=Pw(s),f=new Map,m=(y,b)=>{let x=f.get(y)??new Set;x.add(b),f.set(y,x)};for(let y of l){let b=c.get(y)??[],x=u.get(y)??[];if(!Ef(b,x))if(b.length===0&&x.length>0)m(y,"joined cluster");else if(b.length>0&&x.length===0)m(y,"left cluster");else m(y,"cluster changed")}let h=new Set([...d.keys(),...p.keys()]);for(let y of h){let b=d.get(y)??[],x=p.get(y)??[];if(Ef(b,x))continue;let C=ks(o.get(y)??n.get(y))??y,v=x.filter((_)=>!b.includes(_)),k=b.filter((_)=>!x.includes(_));for(let _ of v)if(l.includes(_))m(_,`entered pinned neighborhood of "${C}"`);for(let _ of k)if(l.includes(_))m(_,`left pinned neighborhood of "${C}"`);if(l.includes(y))m(y,"pinned neighborhood changed")}let g=l.filter((y)=>(f.get(y)?.size??0)>0).map((y)=>{let b=o.get(y);return{...Gc(b,y),reasons:Array.from(f.get(y)??[]).sort((x,C)=>x.localeCompare(C))}});if(g.length===0)return null;return{type:"move-end",...a,nodes:g}}}var Xc=ie(null),Ga=ie([]),Jc=ie(new Set),qr=ie(!1),Ss=ie(0);function Mw(){Xc.value=null,Ga.value=[],Jc.value=new Set,qr.value=!1,Ss.value=0}function Yc(){qr.value=!0,Ss.value=0}function zw(){qr.value=!1}function Qc(e){Xc.value=e}function Rf(e,t=6){if(Ga.value=[e,...Ga.value].slice(0,t),!qr.value)Ss.value=Math.min(99,Ss.value+1)}function eu(e){Jc.value=new Set(e)}var $w=30000;var Pf=80;var Wt=ie(new Map),Cs=ie(null),kR=480,SR=320,_R=650,Ka=new Map,_s=new Map,tu=new Map,gr=null;function Nf(e){Wt.value=e,CR()}function Mf(e){let t=Ka.get(e);if(t)clearTimeout(t),Ka.delete(e)}function zf(e){let t=_s.get(e);if(t)clearTimeout(t),_s.delete(e)}function Ow(e){if(Mf(e.id),zf(e.id),!Wt.value.has(e.id))tu.set(e.id,Date.now());let t=new Map(Wt.value);t.set(e.id,{...e,phase:"forming"}),Nf(t)}function Mi(e){if(Mf(e),zf(e),tu.delete(e),!Wt.value.has(e))return;let t=new Map(Wt.value);t.delete(e),Nf(t)}function Lw(e,t,n,o){let i=Wt.value.get(e);if(!i||i.phase===t)return;let s=new Map(Wt.value);s.set(e,{...i,phase:t,...o?{settledNodeId:o}:{}}),Nf(s),Mf(e),Ka.set(e,setTimeout(()=>Mi(e),n+1500))}function Dw(e,t,n,o){zf(e);let i=Date.now()-(tu.get(e)??0),s=Math.max(0,_R-i);if(s===0){Lw(e,t,n,o);return}_s.set(e,setTimeout(()=>{_s.delete(e),Lw(e,t,n,o)},s))}function Bw(e,t){Dw(e,"settling",kR,t)}function $f(e){Dw(e,"dissolving",SR)}function nu(){for(let e of Ka.values())clearTimeout(e);Ka.clear();for(let e of _s.values())clearTimeout(e);if(_s.clear(),tu.clear(),gr)clearInterval(gr),gr=null;Cs.value=null,Wt.value=new Map}function CR(){if(gr||Wt.value.size===0)return;gr=setInterval(()=>{let e=Date.now();for(let t of Wt.value.values())if(t.phase==="forming"&&t.expiresAt<=e)$f(t.id);if(Wt.value.size===0&&gr)clearInterval(gr),gr=null},1000),gr.unref?.()}var Lf;function tt(){return Lf!==void 0}var qt=(e,t)=>Lf?Lf(e,t):globalThis.fetch(e,t),Fw;async function Hw(e){if(!Fw)throw Error("This host does not support downloads. The export is saved in the local PMX workspace.");if(!/^\/api\/canvas\/exports\/[^/?#]+$/.test(e))throw Error("Invalid export path.");let t=await qt(e);if(!t.ok)throw Error("Could not read the export. Try again.");if((await Fw({name:decodeURIComponent(e.slice(e.lastIndexOf("/")+1)),mimeType:"text/html",text:await t.text()})).isError)throw Error("The download was cancelled or declined by the host.")}function TR(e,t){try{let n=window.sessionStorage.getItem(e);if(n)return n;let o=t();return window.sessionStorage.setItem(e,o),o}catch{return t()}}var Gr=TR("pmx-canvas-human-client",()=>`tab-${Math.random().toString(36).slice(2,8)}`);function IR(){try{let e=new URLSearchParams(window.location.search).get("name")?.trim();if(e)return window.localStorage.setItem("pmx-canvas-human-name",e),e;let t=window.localStorage.getItem("pmx-canvas-human-name")?.trim();if(t)return t}catch{}return`guest-${Gr.slice(-4)}`}var jw=ie(IR()),Zw=ie([]),Xa=Ve(()=>Zw.value.filter((e)=>e.clientId!==Gr)),zi=ie(new Map);function Of(e){if(!e||!Array.isArray(e.humans))return;Zw.value=e.humans}var Zo=ie(null),iu=null,Ww=0,Va=null;function ru(e){if(tt())return;oo("humanPresence","/api/canvas/human-presence",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:Gr,name:jw.value,...e})})}function Uw(){Va=null,Ww=Date.now(),ru({cursor:iu,grabbingNodeId:Zo.value})}function su(e){iu=e;let t=Date.now()-Ww;if(t>=Pf){if(Va)clearTimeout(Va);Uw()}else if(!Va)Va=setTimeout(Uw,Pf-t)}function Df(e){Zo.value=e,ru({cursor:iu,grabbingNodeId:e})}function ER(e,t){let n=new Map(zi.value);n.set(e,t),zi.value=n,setTimeout(()=>{let o=new Map(zi.value);if(o.get(e)===t)o.delete(e),zi.value=o},6000)}function qw(e,t){let n=[...Wt.value.values()].filter((i)=>i.nodeId===e&&!i.auto&&i.phase==="forming");if(n.length===0)return;let o=jw.value;ER(e,o);for(let i of n)$i({id:i.id,kind:i.kind,label:i.label,reason:`${o} took over “${t}” mid-edit — yield and requeue the change once it is released`}).then((s)=>{if(s)Mi(i.id)});oo("yieldEvent","/api/canvas/ax/event",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({kind:"yield",summary:`${o} grabbed “${t}” mid-edit — agent yielded, change requeued`,nodeIds:[e],source:"browser"})})}var ou=null;function Gw(){ru({cursor:iu,grabbingNodeId:Zo.value}),ou=setInterval(()=>ru({grabbingNodeId:Zo.value}),3000);let e=()=>{try{navigator.sendBeacon?.("/api/canvas/human-presence",new Blob([JSON.stringify({clientId:Gr,left:!0})],{type:"application/json"}))}catch{}};return window.addEventListener("pagehide",e),()=>{if(ou)clearInterval(ou);ou=null,window.removeEventListener("pagehide",e)}}var Mt=(e)=>JSON.stringify([e.boardId,e.cardId??null]);var Xn=ie(null),Li=ie(!1),Bf=Ve(()=>Oe.value?Ro.value:"All"),Ts=ie(null),Kw=0;async function Kt(){let e=++Kw,t=wt,n=await de("knowledge","/api/canvas/knowledge",null);if(e!==Kw||t!==wt)return;if(Li.value=n?.ok!==!0,n?.ok===!0)Xn.value=n}function Jn(e){return ae.value?Xn.value?.cards[Mt({boardId:ae.value,cardId:e})]:void 0}var Oi=Ve(()=>new Set([...kt.value].filter((e)=>!Jn(e)?.retired)));function Is(e){if(Oe.value&&ae.value)Ct.value={boardId:ae.value,nodeId:e,incarnation:wt}}var Vw="",Xw=new Map,ro=Ve(()=>{let e=Oi.value,t=new Map;if(e.size>0){let o=new Map,i=[...H.value.values()].filter((s)=>!Jn(s.id)?.retired);for(let s of If(i,e)){let a=s.pinnedNodeTitle??s.pinnedNodeId;for(let l of s.neighbors){let c=o.get(l.id)??[];c.push({pinNodeId:s.pinnedNodeId,pinTitle:a,distance:l.distance}),o.set(l.id,c)}}for(let[s,a]of o)a.sort((l,c)=>l.distance-c.distance),t.set(s,a.map(({pinNodeId:l,pinTitle:c})=>({pinNodeId:l,pinTitle:c})))}let n=[...t].sort(([o],[i])=>o.localeCompare(i)).map(([o,i])=>`${o}:${i.map((s)=>`${s.pinNodeId}=${s.pinTitle}`).join(",")}`).join("|");if(n===Vw)return Xw;return Vw=n,Xw=t,t}),Jw=Ve(()=>{let e=new Map;for(let[t,n]of ro.value)for(let o of n){let i=e.get(o.pinNodeId)??[];i.push(t),e.set(o.pinNodeId,i)}return e}),Ja=ie(null),au=ie(null),Yw=Ve(()=>{let e=kt.value;if(e.size===0)return{pinIds:[],ringOnly:!1};let t=Zo.value;if(t&&!e.has(t)){let s=H.value.get(t),a=null,l=Number.POSITIVE_INFINITY;for(let c of e){let u=H.value.get(c);if(!s||!u)continue;let d=hr(s,u);if(d<l)l=d,a=c}return{pinIds:a?[a]:[],ringOnly:!0}}let n=new Set;if(t)n.add(t);let o=Ja.value;if(o&&e.has(o))n.add(o);for(let s of st.value)if(e.has(s))n.add(s);let i=au.value;for(let s of i&&ro.value.get(i)||[])n.add(s.pinNodeId);return{pinIds:[...n],ringOnly:!1}}),Di=ie(null),Ff;function Qw(e){Hf(e),Ff=ro.value.get(e)}function ek(e){let t=Ff;Ff=void 0;let n=ro.value.get(e);if(n&&!t)Di.value={nodeId:e,kind:"in",pins:n};else if(t&&!n)Di.value={nodeId:e,kind:"out",pins:t}}function Hf(e){if(Di.value?.nodeId===e)Di.value=null}var Kr=ie(null),Wo=null;function tk(e,t,n){if(Wo)clearTimeout(Wo);Wo=null;let o=t.getBoundingClientRect();Kr.value={nodeId:e,at:{left:o.left,right:o.right,top:o.top,bottom:o.bottom},view:n}}function Es(){if(Wo)clearTimeout(Wo);Wo=setTimeout(()=>{Wo=null,Kr.value=null},160)}function Uf(){if(Wo)clearTimeout(Wo);Wo=null}var ok=new Vc,As=[],Ya=null,Rs=null,jf="",Zf=0;function rk(e,t){return globalThis.setTimeout(e,t)}function Wf(e){if(e===null)return;globalThis.clearTimeout(e)}function AR(e){if(typeof globalThis.requestAnimationFrame==="function"){globalThis.requestAnimationFrame(()=>e());return}e()}function Go(e,t){return e&&e.trim().length>0?e.trim():t}function qo(e,t=3){if(e.length===0)return"";if(e.length<=t)return e.join(", ");return`${e.slice(0,t).join(", ")} +${e.length-t}`}function RR(e){return Array.from(new Set(Array.from(e).filter((t)=>t.length>0)))}function vo(e,t,n,o,i=Date.now()){return{id:`${e}-${i}-${Math.random().toString(36).slice(2,8)}`,tone:e,title:t,detail:n,nodeIds:RR(o),createdAt:i}}function PR(e){if(e==="joined cluster")return"joined a nearby cluster";if(e==="left cluster")return"moved away from its cluster";if(e==="cluster changed")return"shifted into a different cluster";if(e==="pinned neighborhood changed")return"changed the local focus field";return e}function nk(e,t){let n=new RegExp(`^${t} pinned neighborhood of "(.+)"$`);return e.flatMap((o)=>n.exec(o)?.[1]??[])}function NR(e,t,n){let o=(l)=>l.map((c)=>`“${c}”`).join(" and "),i=nk(n,"entered");if(i.length>0)return{title:"Near a pin",body:`“${e}” is now near ${o(i)} — the agent gets its title and summary.`};let s=nk(n,"left");if(s.length===0)return null;let a=ro.value.get(t)??[];return{title:"Left a pin",body:a.length>0?`“${e}” left ${o(s)} — still near ${o(a.map((l)=>l.pinTitle))}.`:`“${e}” left ${o(s)} — it is out of the agent’s brief.`}}function MR(e){let t=e.added.map((i)=>Go(i.title,i.id)),n=e.removed.map((i)=>Go(i.title,i.id));if(t.length===0&&n.length===0)return null;let o="";if(t.length>0&&n.length===0)o=`Now in focus: ${qo(t)}`;else if(n.length>0&&t.length===0)o=`Removed from focus: ${qo(n)}`;else{let i=[];if(t.length>0)i.push(`${qo(t)} added`);if(n.length>0)i.push(`${qo(n)} removed`);o=i.join(" · ")}return vo("context","Context updated",o,[...e.added.map((i)=>i.id),...e.removed.map((i)=>i.id)],e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now())}function zR(e){if(e.edges.length===0)return null;if(e.edges.length===1){let t=e.edges[0];return vo("relationship","Relationship added",`${Go(t.fromTitle,t.fromId)} linked to ${Go(t.toTitle,t.toId)}`,[t.fromId,...!t.toBoardId||t.toBoardId===ae.value?[t.toId]:[]],e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now())}return vo("relationship","Relationships added",`${e.edges.length} connections changed the board structure`,e.edges.flatMap((t)=>[t.fromId,...!t.toBoardId||t.toBoardId===ae.value?[t.toId]:[]]),e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now())}function $R(e){if(e.nodes.length===0&&e.edges.length===0)return null;if(e.nodes.length===0){let o=e.edges.map((i)=>`“${Go(i.fromTitle,i.fromId)}” – “${Go(i.toTitle,i.toId)}” (${i.edgeType})`);return vo("remove",o.length===1?"Link removed":"Links removed",qo(o),e.edges.flatMap((i)=>[i.fromId,...!i.toBoardId||i.toBoardId===ae.value?[i.toId]:[]]),e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now())}let t=e.nodes.map((o)=>Go(o.title,o.id)),n=[];if(t.length>0)n.push(qo(t));if(e.edges.length>0)n.push(`${e.edges.length} relationship${e.edges.length===1?"":"s"}`);return vo("remove","Items removed",n.join(" · "),[...e.nodes.map((o)=>o.id),...e.edges.flatMap((o)=>[o.fromId,...!o.toBoardId||o.toBoardId===ae.value?[o.toId]:[]])],e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now())}function LR(e){if(e.created.length>0){let t=e.created.map((n)=>Go(n.title,n.id));return vo("group",e.created.length===1?"Group created":"Groups created",e.created.length===1?`${t[0]} now frames ${e.created[0].childCount} items`:qo(t),e.created.map((n)=>n.id),e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now())}if(e.updated.length>0){let t=e.updated.map((n)=>Go(n.title,n.id));return vo("group",e.updated.length===1?"Group updated":"Groups updated",e.updated.length===1?`${t[0]} now holds ${e.updated[0].childCount} items`:qo(t),e.updated.map((n)=>n.id),e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now())}return null}function OR(e){if(e.nodes.length===0)return null;let t=e.nodes.flatMap((s)=>s.reasons),n=e.nodes.map((s)=>Go(s.title,s.id)),o=e.timestamp?Date.parse(e.timestamp)||Date.now():Date.now();if(t.some((s)=>s.includes("pinned neighborhood"))){let s=e.nodes.length===1?NR(n[0],e.nodes[0].id,e.nodes[0].reasons):null;if(s)return vo("neighborhood",s.title,s.body,[e.nodes[0].id],o);return vo("neighborhood","Neighborhood changed",qo(n),e.nodes.map((a)=>a.id),o)}let i=t.filter((s)=>s.includes("cluster"));if(i.length>0){let s=i.every((a)=>a==="joined cluster");if(e.nodes.length===1)return vo("cluster",s?"Cluster formed":"Cluster changed",`${n[0]} ${PR(e.nodes[0].reasons[0])}`,e.nodes.map((a)=>a.id),o);return vo("cluster",s?"Cluster formed":"Cluster changed",qo(n),e.nodes.map((a)=>a.id),o)}return null}function DR(e){switch(e.type){case"context-pin":return MR(e);case"connect":return zR(e);case"remove":return $R(e);case"group":return LR(e);case"move-end":return OR(e)}}function ik(){if(Ya!==null)return;let e=As.shift()??null;if(!e){Qc(null);return}Qc(e);let t=Math.max(1800,Math.min(2800,1600+e.detail.length*18));Ya=rk(()=>{Ya=null,Qc(null),ik()},t)}function sk(e){if(As.push(e),As.length>3)As.splice(0,As.length-3);ik()}function mn(e,t,n="",o=[]){let i=vo(e,t,n,o);Rf(i),sk(i)}function BR(e){if(Wf(Rs),Rs=null,eu([]),e.length===0)return;AR(()=>{eu(e),Rs=rk(()=>{Rs=null,eu([])},900)})}function FR(e){let t=`${e.tone}:${e.title}:${e.detail}`,n=e.createdAt;if(t===jf&&n-Zf<1200)return!0;return jf=t,Zf=n,!1}function lu(){Wf(Ya),Wf(Rs),Ya=null,Rs=null,As=[],jf="",Zf=0,ok=new Vc,Mw()}function Qa(e){let t=ok.handleMessage(e).map((n)=>DR(n)).filter((n)=>n!==null);for(let n of t){if(FR(n))continue;Rf(n),sk(n),BR(n.nodeIds)}}function qf(e,t){console.error(`[intent-bridge] ${e} failed`,t)}var cu=(()=>{try{let e=new URLSearchParams(window.location.search).get("agent")?.trim();return e?e.slice(0,64):null}catch{return null}})();function Gf(e){if(tt())return e??{};let t={...e?.headers};if(cu)t["x-pmx-source"]=cu;else{t["X-PMX-Workbench"]="1";let n=window.__PMX_WORKBENCH_TOKEN;if(typeof n==="string")t["X-PMX-Workbench-Token"]=n}return{...e,headers:t}}function Kf(e,t,n){if(e.ok||(t?.method??"GET").toUpperCase()==="GET")return;let o=n!==null&&typeof n==="object"&&"error"in n&&typeof n.error==="string"?n.error:"";mn("remove","Change refused",o||`The server answered ${e.status}.`)}async function Vf(e){try{return await e.json()}catch{return null}}async function de(e,t,n,o){try{let i=await qt(t,Gf(o)),s=await Vf(i);if(Kf(i,o,s),s===null)throw Error(`${i.status} response had no JSON body`);return s}catch(i){return qf(e,i),n}}async function so(e,t,n){try{let o=await qt(t,Gf(n));if(!o.ok)Kf(o,n,await Vf(o));return{ok:o.ok}}catch(o){return qf(e,o),{ok:!1}}}async function oo(e,t,n){try{let o=await qt(t,Gf(n));if(!o.ok)Kf(o,n,await Vf(o))}catch(o){qf(e,o)}}async function ak(e,t={}){return de("sendIntent","/api/workbench/intent",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:e,payload:t})})}async function $i(e){let n=`Veto: do not ${e.label?.trim()||`${e.kind} intent`}${e.reason?` — ${e.reason}`:""}.`;if((await de("vetoGhostIntent",`/api/canvas/ax/intent/${encodeURIComponent(e.id)}`,{ok:!1,cleared:!1},{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({vetoed:!0})})).cleared!==!0)return!1;return await oo("vetoGhostSteering","/api/canvas/ax/steer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:n,source:"browser"})}),!0}async function Ko(e,t,n=ae.value){return(await de("renderMarkdown","/api/render",{},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({markdown:e,...t?{nodeId:t,expectedBoardId:n}:{}})})).html??null}async function el(e){return de("fetchFile",`/api/file?path=${encodeURIComponent(e)}`,{content:""})}async function uu(e){return so("openWorkbenchFile","/api/workbench/open",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e})})}async function lk(e){return de("fetchCanvasState",`/api/canvas/state?includeBlobs=true&expectedBoardId=${encodeURIComponent(e??"null")}`,{})}async function du(e){return de("saveCanvasTheme","/api/canvas/theme",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:e})})}async function ck(){return[]}async function tl(e,t,n,o,i){if(!e.trim())return{ok:!1,error:"Prompt text is required"};return de("submitCanvasPrompt","/api/canvas/prompt",{ok:!1,error:"Network error"},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:e,...t?{position:t}:{},...n?{parentNodeId:n}:{},...o&&o.length>0?{contextNodeIds:o}:{},...i?{threadNodeId:i}:{}})})}async function uk(e,t){return tl(t,void 0,void 0,void 0,e)}async function pu(e,t={}){await oo("pushCanvasUpdate","/api/canvas/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({updates:e,...io.value?{expectedBoardId:ae.value}:{},...t.recordHistory===!1?{recordHistory:!1}:{}})})}async function yr(e,t,n,o,i={}){let s=Po.value,a=await de("createEdgeFromClient","/api/canvas/edge",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:e,to:t,type:n,label:o,...i})});if(s===Po.value&&H.value.has(e)&&(i.toBoardId||H.value.has(t))){if(a.ok){let{ok:l,...c}=a;Ms(c)}else if(!a.error)mn("remove","Connection not added","Could not reach the server. Try again.")}return a}async function No(e){return de("createNodeFromClient","/api/canvas/node",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function ln(e,t){return de("updateNodeFromClient",`/api/canvas/node/${encodeURIComponent(e)}`,{ok:!1},{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}async function fu(e,t){return de("refreshWebpageNodeFromClient",`/api/canvas/node/${encodeURIComponent(e)}/refresh`,{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t?{url:t}:{})})}async function Vr(e){return de("removeNodeFromClient",`/api/canvas/node/${encodeURIComponent(e)}`,{ok:!1},{method:"DELETE"})}async function dk(){return de("fetchAxSurfaceState","/api/canvas/ax/surface-snapshot",null)}async function pk(){return de("fetchAgentPresence","/api/canvas/ax/presence",null)}async function fk(e,t){return de("openNodeInSystemBrowserRequest","/api/canvas/open-external",{ok:!1,opened:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({nodeId:e,url:t})})}async function mu(e){return de("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",...e,source:"browser"})})}async function mk(e,t={}){return de("updateViewportFromClient","/api/canvas/viewport",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e,...hk(),clientId:Gr,...io.value?{expectedBoardId:ae.value}:{},...t.recordHistory===!1?{recordHistory:!1}:{}})})}function hk(){if(typeof window>"u")return{};let e=Jt(),t=Math.round(e.width),n=Math.round(e.height);if(!t||!n)return{};let{top:o,bottom:i}=Za();return{clientWidth:t,clientHeight:n,clientInsets:{top:o,bottom:i}}}async function Xr(){if(tt()&&!io.value)return;let e=hk();if(!("clientWidth"in e))return;await oo("reportClientViewportSize","/api/canvas/viewport",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e,...io.value?{expectedBoardId:ae.value}:{},recordHistory:!1})})}async function Ps(e){return de("createGroupFromClient","/api/canvas/group",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function Xf(e,t,n){return de("addToGroupFromClient","/api/canvas/group/add",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({groupId:e,childIds:t,...n?{childLayout:n}:{}})})}async function hu(e,t){return ln(e,{children:t})}async function Ns(e){return de("ungroupFromClient","/api/canvas/group/ungroup",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({groupId:e})})}async function gk(){return de("listSnapshots","/api/canvas/snapshots?all=true",[])}async function yk(e){return de("saveSnapshot","/api/canvas/snapshots",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})})}async function vk(e){return de("restoreSnapshot",`/api/canvas/snapshots/${e}`,{ok:!1},{method:"POST"})}async function bk(e){return de("deleteSnapshot",`/api/canvas/snapshots/${e}`,{ok:!1},{method:"DELETE"})}async function Bi(e,t){return de("updateEdgeFromClient",`/api/canvas/edge/${encodeURIComponent(e)}`,{ok:!1},{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}async function gu(e){return de("removeEdgeFromClient","/api/canvas/edge",{ok:!1},{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({edge_id:e})})}var Ge=ie([]),ae=ie(null),ut=ie(!1),Ct=ie(null),Ro=ie("All");sn(()=>{ae.value,Ro.value="All"});var bo=ie(0),io=ie(!1),Jf=null,Mn=null,Vo=null,wt=0,Yf=0,yu=null,nl=0,xk=Promise.resolve(),Jr=0,tn=0;sn(()=>{Oe.value,tn++});function wk(e){if(e===Mn)return;Mn=e,Vo=null,wt++,Yf=0,yu=null,nl++,Jr++,Ct.value=null}function kk(e){Jf=e}function Yr(e){if(!e||!Array.isArray(e.boards)||e.catalogEpoch!==Mn||typeof e.catalogRevision!=="number"||typeof e.reloadRevision!=="number"||e.catalogRevision<=Yf)return;Yf=e.catalogRevision;let t=typeof e.activeBoardId==="string"?e.activeBoardId:null,n=!io.value,o=Vo===null&&typeof e.boardGeneration==="number",i=!n&&(t!==ae.value||yu!==null&&e.reloadRevision!==yu||Vo!==null&&typeof e.boardGeneration==="number"&&e.boardGeneration!==Vo);if(i)wt++,Ct.value=null;if(typeof e.boardGeneration==="number")Vo=e.boardGeneration;yu=e.reloadRevision,Nn(()=>{if(Ge.value=e.boards,ae.value=t,io.value=!0,i||n)Jf?.(n);else if(o)Jf?.(!0)})}async function ol(){let e=await de("loadBoards","/api/canvas/boards",null);Yr(e)}async function rl(e,t,n,o){return de(e,t,null,{method:n,headers:{"Content-Type":"application/json"},...o===void 0?{}:{body:JSON.stringify(o)}})}function Sk(){let e=++Jr;return()=>e===Jr}async function zn(e){let t=++nl;Jr++,Ct.value=null;let n=Mn,o=null,i=xk.then(async()=>{if(n===Mn)o=await rl("openBoard","/api/canvas/boards/open","POST",{id:e})});if(xk=i.catch(()=>{return}),await i,t===nl&&n===Mn&&o)Nn(()=>{if(Yr(o),e!==null)ut.value=!1})}async function zt(e,t={}){if(t.review&&!Oe.value)return!1;let n=tn,o=zn(e.boardId),i=Jr;await o;let s=wt;if(!e.cardId)return i===Jr&&ae.value===e.boardId;for(let a=0;a<400;a++){if(i!==Jr||ae.value!==e.boardId||wt!==s||ut.value||t.review&&(!Oe.value||n!==tn))return!1;if(hn.value&&H.value.has(e.cardId)){let l=il.value.get(e.cardId);if(l)Fi(l);if($t(e.cardId),t.review)Ct.value={boardId:e.boardId,nodeId:e.cardId,incarnation:s};return!0}await new Promise((l)=>window.setTimeout(l,25))}return!1}async function _k(e,t){let n=++nl;Jr++,Ct.value=null;let o=Mn,i=await de("createBoard","/api/canvas/boards",null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e,...t?{folder:t}:{}})});if(i?.board&&n===nl&&o===Mn)await zn(i.board.id)}async function Ck(e){return de("previewBoardCopy","/api/canvas/boards/from",null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sourceBoardId:e,name:"Preview",preview:!0})})}async function Tk(e){let t=await de("createBoardFrom","/api/canvas/boards/from",null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});return await ol(),t?.board??null}async function vr(e,t){let n=await rl("updateBoard",`/api/canvas/boards/${encodeURIComponent(e)}`,"PATCH",{...t,...t.folder===null?{folder:""}:{}});return Yr(n),n!==null}async function zs(e,t){let n=`/api/canvas/boards/${encodeURIComponent(e)}/${t?"pin":"unpin"}`;Yr(await rl(t?"pinBoard":"unpinBoard",n,"POST",{}))}async function Ik(e,t){let n=await rl("setBoardReadme",`/api/canvas/boards/${encodeURIComponent(e)}`,"PATCH",{readmeNodeId:t});Yr(n)}async function Ek(e){let t=await rl("deleteBoard",`/api/canvas/boards/${encodeURIComponent(e)}`,"DELETE");Yr(t)}function Yn(){return Ge.value.find((e)=>e.id===ae.value)??null}function Mk(e,t){console.error(`[canvas-store] ${e} failed`,t)}var Te=ie({x:0,y:0,scale:1}),H=ie(new Map),et=ie(new Map),$s=ie(new Map),gt=ie(null),br=ie(null),ao=ie("connecting"),ji=ie(0),Zi=ie(0),Wi=ie(0),xr=ie(""),Ls=ie(!1),Qt=ie("harbor"),hn=ie(!1),Lo=ie(null),Dt=ie(null),zo=ie(null),$n=null,Hi,Ak=100,HR=2500,al=ie(null),Po=ie(0),At=ie(null),wr=ie(null),st=ie(new Set),kt=ie(new Set),Wn=ie("select"),ll=ie(!1);function Os(){return Wn.value==="pan"||ll.value}function zk(e,t){if(!e)return new Set;let n=new Set;for(let o of t.values()){if(o.toBoardId!==void 0)continue;if(o.from===e)n.add(o.to);if(o.to===e)n.add(o.from)}return n}var $k=Ve(()=>zk(gt.value,et.value));function Rk(e,t){let n=new Set;for(let o of e)if(t.has(o))n.add(o);return n}function Pk(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function tm(e){let t=new Set(st.value);if(t.has(e))t.delete(e);else t.add(e);st.value=t}function Lk(e){st.value=new Set(e)}function Ln(){if(br.value=null,st.value.size===0)return;st.value=new Set}function Ok(){if(co(),$n!==null)clearTimeout($n),$n=null;Nn(()=>{Po.value+=1,$o++,Ui=0,gt.value=null,Dt.value=null,zo.value=null,Hi=void 0,st.value=new Set,br.value=null,al.value=null,At.value=null,wr.value=null,Xo.value=null,kt.value=new Set}),vu=!1}var Xo=ie(null),vu=!1;function Dk(){vu=!0,Xo.value=null}function Bk(){vu=!1,Xo.value=null}function Qf(e){return{x:e.position.x,y:e.position.y,w:e.size.width,h:e.size.height}}function UR(e,t,n){let o=Qf(e);return t>=o.x&&t<=o.x+o.w&&n>=o.y&&n<=o.y+o.h}function Nk(e,t){let n=Qf(e),o=Qf(t);return n.x+n.w<o.x||n.x>o.x+o.w||n.y+n.h<o.y||n.y>o.y+o.h}function Fk(e){let t=H.value.get(e);if(!t||t.type==="group")return;let n=typeof t.data.parentGroup==="string"?t.data.parentGroup:null,o=n?H.value.get(n):void 0,i=t.position.x+t.size.width/2,s=t.position.y+t.size.height/2,a=null;for(let l of H.value.values()){if(l.type!=="group"||l.id===n||l.collapsed)continue;if(UR(l,i,s))a=l}if(!vu){let l=a?{nodeId:e,groupId:a.id,mode:"add"}:o&&Nk(t,o)?{nodeId:e,groupId:o.id,mode:"remove"}:null,c=Xo.value;if((c?.groupId??null)!==(l?.groupId??null)||c?.mode!==l?.mode)Xo.value=l}if(o&&o.data.frameMode!=="manual"&&!Nk(t,o)){let c=Math.min(o.position.x,t.position.x-22),u=Math.min(o.position.y,t.position.y-22-32),d=Math.max(o.position.x+o.size.width,t.position.x+t.size.width+22),p=Math.max(o.position.y+o.size.height,t.position.y+t.size.height+22);if(c!==o.position.x||u!==o.position.y||d!==o.position.x+o.size.width||p!==o.position.y+o.size.height)xu(o.id,{position:{x:c,y:u},size:{width:d-c,height:p-u}},{skipGroupChildTranslation:!0})}}var il=Ve(()=>{let e=new Map;for(let t of H.value.values()){if(t.type!=="group"||!t.collapsed)continue;let n=Array.isArray(t.data.children)?t.data.children:[];for(let o of n)if(typeof o==="string")e.set(o,t.id)}return e});function Ds(e){let t=il.value.get(e);return H.value.get(t??e)}function Hk(){let e=new Set;for(let t of st.value){let n=H.value.get(t);if(!n)continue;if(n.type==="group")e.add(n.id);else if(typeof n.data.parentGroup==="string")e.add(n.data.parentGroup)}return[...e]}function nm(e){let t=om();if(t.length<2)return;let n=Math.min(...t.map((c)=>e==="left"?c.position.x:c.position.y)),o=24,i=new Map;for(let c of t)i.set(c.id,e==="left"?{x:n,y:c.position.y}:{x:c.position.x,y:n});let s=(c,u)=>c.x<u.x+u.w&&u.x<c.x+c.w&&c.y<u.y+u.h&&u.y<c.y+c.h,a=t.map((c)=>{let u=i.get(c.id);return{node:c,x:u.x,y:u.y,w:c.size.width,h:c.size.height}});if(a.some((c,u)=>a.some((d,p)=>p>u&&s(c,d)))){let c=[...t].sort((d,p)=>e==="left"?d.position.y-p.position.y:d.position.x-p.position.x),u=e==="left"?Math.min(...t.map((d)=>d.position.y)):Math.min(...t.map((d)=>d.position.x));for(let d of c)i.set(d.id,e==="left"?{x:n,y:u}:{x:u,y:n}),u+=(e==="left"?d.size.height:d.size.width)+o}Nn(()=>{for(let c of t)cn(c.id,{position:i.get(c.id)})}),un()}function Uk(){let e=om().sort((l,c)=>l.position.x-c.position.x);if(e.length<3)return;let t=e[0],o=e[e.length-1].position.x-(t.position.x+t.size.width),i=e.slice(1,-1),s=i.reduce((l,c)=>l+c.size.width,0),a=(o-s)/(i.length+1);Nn(()=>{if(a<8){let c=t.position.x+t.size.width+24;for(let u of e.slice(1))cn(u.id,{position:{x:c,y:u.position.y}}),c+=u.size.width+24;return}let l=t.position.x+t.size.width+a;for(let c of i)cn(c.id,{position:{x:l,y:c.position.y}}),l+=c.size.width+a}),un()}function jk(e=24){let t=om().sort((l,c)=>l.position.y-c.position.y||l.position.x-c.position.x);if(t.length<2)return;let n=Math.min(...t.map((l)=>l.position.x)),o=Math.min(...t.map((l)=>l.position.y)),i=Math.ceil(Math.sqrt(t.length)),s=Math.max(...t.map((l)=>l.size.width)),a=Math.max(...t.map((l)=>l.size.height));Nn(()=>{t.forEach((l,c)=>{cn(l.id,{position:{x:n+c%i*(s+e),y:o+Math.floor(c/i)*(a+e)}})})}),un()}function om(){let e=st.value;if(e.size===0)return[];return Array.from(e).map((t)=>H.value.get(t)).filter((t)=>t!==void 0)}var $o=0,Ui=0;function lo(e){let t=new Set(kt.value);if(t.has(e))t.delete(e);else t.add(e);kt.value=t,un(),cl(t)}function bu(e){let t=new Set(kt.value);for(let n of e)t.add(n);kt.value=t,un(),cl(t)}function Zk(e){let t=new Set(kt.value);for(let n of e)t.delete(n);kt.value=t,un(),cl(new Set(e),"remove")}function rm(){if(kt.value.size===0)return;kt.value=new Set,un(),cl(new Set)}function im(e){$o++,kt.value=new Set(e)}async function sm(){if(Ui>0)return;let e=$o,t=Po.value,o=(await de("refreshContextPins","/api/workbench/poll",{})).events?.find((i)=>i.event==="context-pins-changed")?.payload;if(e===$o&&t===Po.value&&o?.boardId===ae.value&&Array.isArray(o.nodeIds))im(o.nodeIds),Qa({event:"context-pins-changed",data:o})}function cl(e,t="set"){$o++,Ui++;let n=Po.value;oo("syncContextPinsToServer","/api/canvas/context-pins",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({nodeIds:Array.from(e),mode:t,...io.value?{expectedBoardId:ae.value}:{}})}).then(()=>{if(n!==Po.value)return;Ui--,$o++,sm()})}var sl=1;function kr(e){Nn(()=>{let t=new Map(H.value);if(e.zIndex>=sl)sl=e.zIndex+1;t.set(e.id,e),H.value=t,gt.value=e.id})}function cn(e,t){xu(e,t)}function xu(e,t,n={}){let o=H.value.get(e);if(!o)return;let i=new Map(H.value);if(o.type==="group"&&t.position&&n.skipGroupChildTranslation!==!0){let a=t.position.x-o.position.x,l=t.position.y-o.position.y;if(a!==0||l!==0){let c=Array.isArray(o.data.children)?o.data.children.filter((u)=>typeof u==="string"):[];for(let u of c){let d=i.get(u);if(!d||d.type==="group")continue;i.set(u,{...d,position:{x:d.position.x+a,y:d.position.y+l}})}}}i.set(e,{...o,...t}),H.value=i;let s=i.get(e)?.data.appCheckpoint?.updatedAt;if(zo.value===e&&s!==void 0&&s!==Hi)em(e)}function Xe(e,t){let n=H.value.get(e);if(!n)return;cn(e,{data:{...n.data,...t}})}function Qr(e){jR(e);let t=new Map(H.value);if(t.delete(e),H.value=t,gt.value===e)gt.value=null;if(Dt.value===e)Dt.value=null;if(st.value.has(e)){let n=new Set(st.value);n.delete(e),st.value=n}if(kt.value.has(e)){let n=new Set(kt.value);n.delete(e),kt.value=n,cl(n)}}function Ms(e){let t=new Map(et.value);t.set(e.id,e),et.value=t}function Wk(e){let t=new Map(et.value);t.delete(e),et.value=t}function jR(e){let t=!1,n=new Map(et.value);for(let[o,i]of n)if(i.from===e||i.toBoardId===void 0&&i.to===e)n.delete(o),t=!0;if(t)et.value=n}function ZR(e){let t=new Map($s.value);if(!t.delete(e))return;$s.value=t}async function am(e){return so("createAnnotationFromClient","/api/canvas/annotation",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function qk(e){let t=await so("removeAnnotationFromClient",`/api/canvas/annotation/${encodeURIComponent(e)}`,{method:"DELETE"});if(t.ok)ZR(e);return t}function wu(e,t){if(!H.value.get(e))return;cn(e,{size:t})}function Sr(e){let t=H.value.get(e);if(!t)return;Nn(()=>{if(cn(e,{zIndex:sl++}),t.type==="group"&&Array.isArray(t.data.children)){for(let n of t.data.children)if(typeof n==="string"&&H.value.has(n))cn(n,{zIndex:sl++})}}),gt.value=e}function Fi(e){let t=H.value.get(e);if(!t)return;cn(e,{collapsed:!t.collapsed}),un()}function Gk(e){Te.value={...Te.value,...e}}function lm(e){Te.value=e}function ul(e,t={}){Te.value=e,un(t),mk(e,t)}function cm(e,t={}){let n=new Map,o=1;for(let p of e.nodes){let f=H.value.get(p.id);if(n.set(p.id,t.applyViewport!==!0&&f&&(f.contentRevision??0)>(p.contentRevision??0)?{...p,data:f.data,contentRevision:f.contentRevision,lastEditedBy:f.lastEditedBy}:p),p.zIndex>=o)o=p.zIndex+1}let i=e.edges.filter((p)=>n.has(p.from)&&(p.toBoardId!==void 0||n.has(p.to))),s=new Map;for(let p of i)s.set(p.id,p);let a=new Map;for(let p of e.annotations??[])a.set(p.id,p);let l=gt.value!==null&&n.has(gt.value)?gt.value:null,c=Dt.value!==null&&n.has(Dt.value)?Dt.value:null,u=Rk(st.value,n),d=Rk(kt.value,n);Nn(()=>{if(t.applyViewport===!0&&e.viewport)Te.value=e.viewport;if(sl=o,H.value=n,et.value=s,$s.value=a,gt.value=l,Dt.value=c,!Pk(st.value,u))st.value=u;if(!Pk(kt.value,d))kt.value=d})}var Mo=null;function WR(e){return 1-(1-e)**3}function ei(e,t=150){let n=Te.value,o=Math.min(4,Math.max(0.1,n.scale*e));if(o===n.scale)return;let i=o/n.scale,{x:s,y:a}=Zr();_r({x:s-i*(s-n.x),y:a-i*(a-n.y),scale:o},t)}function _r(e,t=300,n={}){if(Mo!==null)cancelAnimationFrame(Mo);let o={...Te.value},i=performance.now();function s(a){let l=a-i,c=Math.min(1,l/t),u=WR(c);if(Te.value={x:o.x+(e.x-o.x)*u,y:o.y+(e.y-o.y)*u,scale:o.scale+(e.scale-o.scale)*u},c<1)Mo=requestAnimationFrame(s);else Mo=null,ul(e,n)}Mo=requestAnimationFrame(s)}function Kk(e,t,n){co();let o=performance.now(),i=(s)=>{let a=t<=0?1:Math.min(1,(s-o)/t);if(Te.value=e(a),a<1)Mo=requestAnimationFrame(i);else Mo=null,n?.(Te.value)};if(t<=0)i(o);else Mo=requestAnimationFrame(i)}function co(){if(Mo!==null)cancelAnimationFrame(Mo),Mo=null}var Vk="pmx-canvas-layout";function un(e={}){try{let t=Array.from(H.value.values()),n=t.map((i)=>({id:i.id,position:i.position,size:i.size,collapsed:i.collapsed})),o={viewport:Te.value,nodes:t.map((i)=>({id:i.id,type:i.type,position:i.position,size:i.size,collapsed:i.collapsed,pinned:i.pinned})),edges:Array.from(et.value.values()).map((i)=>({id:i.id,from:i.from,to:i.to,...i.toBoardId!==void 0?{toBoardId:i.toBoardId}:{},type:i.type,label:i.label,style:i.style,animated:i.animated})),contextPinnedNodeIds:Array.from(kt.value)};if(!tt())localStorage.setItem(Vk,JSON.stringify(o));pu(n,e)}catch(t){Mk("persistLayout",t)}}function um(){try{let e=localStorage.getItem(Vk);if(!e)return null;let t=JSON.parse(e),n=Array.isArray(t.nodes)?t.nodes:[];if(n.length===0)return null;let o=new Map;for(let i of n){if(typeof i.id!=="string"||i.id.length===0)continue;o.set(i.id,{...i.position?{position:i.position}:{},...i.size?{size:i.size}:{},...i.collapsed!==void 0?{collapsed:i.collapsed}:{},...i.pinned!==void 0?{pinned:i.pinned}:{}})}return o.size>0?o:null}catch(e){return Mk("restoreLayout",e),null}}function Bs(e,t){let n=Array.from(H.value.values());if(n.length===0)return;let{POSITIVE_INFINITY:o,POSITIVE_INFINITY:i,NEGATIVE_INFINITY:s,NEGATIVE_INFINITY:a}=Number;for(let g of n)o=Math.min(o,g.position.x),i=Math.min(i,g.position.y),s=Math.max(s,g.position.x+g.size.width),a=Math.max(a,g.position.y+g.size.height);let l=Za(),c=Math.max(80,e-l.left-l.right),u=Math.max(80,t-l.top-l.bottom),d=Math.max(1,s-o),p=Math.max(1,a-i),f=Math.min(1,Math.min(c/d,u/p)),m=(o+s)/2,h=(i+a)/2;_r({x:l.left+c/2-m*f,y:l.top+u/2-h*f,scale:f})}function $t(e,t={}){let n=H.value.get(e);if(!n)return;let o=Te.value,i=Jt(),s=Za(),a=Math.max(80,i.width-s.left-s.right),l=Math.max(80,i.height-s.top-s.bottom),c=Math.min(o.scale,a/n.size.width,l/n.size.height),u=n.position.x+n.size.width/2,d=n.position.y+n.size.height/2;_r({x:s.left+a/2-u*c,y:s.top+l/2-d*c,scale:c},300,t),Sr(e)}function Xk(e=1){let t=Array.from(H.value.keys());if(t.length===0)return;let o=((gt.value?t.indexOf(gt.value):-1)+e+t.length)%t.length,i=t[o];Sr(i),$t(i)}function Jk(e){let t=gt.value;if(!t)return;let n=H.value.get(t);if(!n)return;let o=zk(t,et.value);if(o.size===0)return;let i=n.position.x+n.size.width/2,s=n.position.y+n.size.height/2,a=null,l=-1/0;for(let c of o){let u=H.value.get(c);if(!u)continue;let d=u.position.x+u.size.width/2,p=u.position.y+u.size.height/2,f=d-i,m=p-s,h=Math.sqrt(f*f+m*m);if(h<1)continue;let g;switch(e){case"up":g=-m;break;case"down":g=m;break;case"left":g=-f;break;case"right":g=f;break}if(g<=0)continue;let y=g/h-h*0.001;if(y>l)l=y,a=c}if(a)$t(a)}function xo(e){if(!H.value.get(e))return;if($n!==null)clearTimeout($n),$n=null;zo.value=null,Hi=void 0,Sr(e),Dt.value=e}function em(e){if($n!==null)clearTimeout($n),$n=null;if(Dt.value===e)Dt.value=null;if(zo.value===e)zo.value=null;Hi=void 0}function Cr(){let e=Dt.value,t=e?H.value.get(e):void 0;if(e&&t&&Cw(t)){let n=e,o=Date.now();if(zo.value=n,Hi=t.data.appCheckpoint?.updatedAt,$n!==null)clearTimeout($n);let i=()=>{let a=H.value.get(n)?.data.appCheckpoint?.updatedAt;if(a!==void 0&&a!==Hi){em(n);return}if(Date.now()-o>=HR){em(n);return}$n=setTimeout(i,Ak)};$n=setTimeout(i,Ak);return}if($n!==null)clearTimeout($n),$n=null;zo.value=null,Hi=void 0,Dt.value=null}function ku(){let e=_f(Array.from(H.value.values()),Array.from(et.value.values()),"grid");if(e.nodePositions.size===0&&e.groupBounds.size===0)return;Nn(()=>{for(let[t,n]of e.nodePositions.entries())cn(t,{position:n});for(let[t,n]of e.groupBounds.entries())xu(t,{position:{x:n.x,y:n.y},size:{width:n.width,height:n.height}},{skipGroupChildTranslation:!0})}),un()}function Su(){let e=_f(Array.from(H.value.values()),Array.from(et.value.values()),"graph");if(e.nodePositions.size===0&&e.groupBounds.size===0)return;Nn(()=>{for(let[t,n]of e.nodePositions.entries())cn(t,{position:n});for(let[t,n]of e.groupBounds.entries())xu(t,{position:{x:n.x,y:n.y},size:{width:n.width,height:n.height}},{skipGroupChildTranslation:!0})}),un()}var On=ie(!1),Oo=ie(!1),Jo=ie("");function dm(){return On.value||Oo.value}function qR(){return typeof matchMedia==="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches}function pm(e,t){let n=Jt(),o=kw(e,[...H.value.values()],n.width,n.height),i={...Te.value},s=qR()?0:(e.duration??1)*1000;Kk((a)=>Sw(i,o,a,n.width,n.height,e.easing,e.pullback),s,t)}var Yk=0;function Qk(e){let t=++Yk,n=!On.value;On.value=!0,Jo.value="";let o=()=>{if(t!==Yk)return;try{pm(e)}catch(i){Jo.value=i instanceof Error?i.message:String(i)}};if(n)requestAnimationFrame(()=>requestAnimationFrame(o));else o()}async function _u(e){let t=await de("step tour","/api/canvas/tour/go",{ok:!1,error:"Could not reach the canvas server."},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e,present:!1})});if(!t.ok)Jo.value=t.error??"Could not change the tour stop."}async function dl(e=!1){On.value=!0,Jo.value="";let t=e?(await de("read tour","/api/canvas/tour",{})).position:null;await _u({stop:typeof t==="number"?t:0})}function fm(){On.value=!1,Jo.value="",oo("exit tour","/api/canvas/tour/exit",{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"})}var GR=0.1,KR=4,eS=1,VR=5;function tS(e){return Math.min(KR,Math.max(GR,e))}function Cu({viewport:e,onViewportChange:t,onViewportCommit:n,onBackgroundContextMenu:o,onEdgeContextMenu:i,disabled:s=!1}){let a=D(null),l=D(!1),c=D({x:0,y:0}),u=D(null),d=D(0),p=D(null),f=oe((v)=>{if(p.current!==null)window.clearTimeout(p.current);p.current=window.setTimeout(()=>{p.current=null,n(v)},140)},[n]);function m(v){if(v.deltaMode!==0)return v.deltaX===0;return v.deltaX===0&&Number.isInteger(v.deltaY)&&Math.abs(v.deltaY)>=50}let h=oe((v)=>{if(s)return;v.preventDefault();let k=e.value;if(v.ctrlKey||v.metaKey||m(v)){let _=a.current?.getBoundingClientRect();if(!_)return;let I=v.clientX-_.left,w=v.clientY-_.top,P=-v.deltaY*0.002,L=tS(k.scale*(1+P)),N=L/k.scale,Y={x:I-N*(I-k.x),y:w-N*(w-k.y),scale:L};t(Y),f(Y)}else{let _={x:k.x-v.deltaX*eS,y:k.y-v.deltaY*eS,scale:k.scale};t(_),f(_)}},[s,e,t,f]),g=oe((v)=>{if(s)return;let k=a.current;if(!k)return;if(v.button===1||v.button===2)v.preventDefault();else if(Os()){if(v.target!==k)return;v.preventDefault()}else return;u.current=v.button===2?{x:v.clientX,y:v.clientY,background:v.target===k,edgeId:v.target instanceof Element?v.target.getAttribute("data-edge-id"):null,dragged:!1}:null,l.current=!0,document.documentElement.classList.add("is-canvas-panning"),c.current={x:v.clientX,y:v.clientY},k.setPointerCapture(v.pointerId)},[s]),y=oe((v)=>{if(!l.current)return;if(s)return;let k=u.current;if(k&&!k.dragged){if(Math.hypot(v.clientX-k.x,v.clientY-k.y)<=VR)return;k.dragged=!0}let _=v.clientX-c.current.x,I=v.clientY-c.current.y;c.current={x:v.clientX,y:v.clientY};let w=e.value;t({x:w.x+_,y:w.y+I,scale:w.scale})},[s,e,t]),b=oe((v)=>{if(!l.current)return;v.preventDefault();let k=u.current;if(u.current=null,l.current=!1,document.documentElement.classList.remove("is-canvas-panning"),k&&!k.dragged){if(!s&&v.type==="pointerup"){if(k.edgeId)i?.(v,k.edgeId);else if(k.background){let _=a.current?.getBoundingClientRect();if(!_)return;let I=e.value;o?.(v,(v.clientX-_.left-I.x)/I.scale,(v.clientY-_.top-I.y)/I.scale)}}return}n(e.value)},[s,o,i,n,e]),x=oe((v)=>{if(s)return;if(v.touches.length!==2){d.current=0;return}v.preventDefault();let k=v.touches[0],_=v.touches[1],I=Math.hypot(_.clientX-k.clientX,_.clientY-k.clientY),w=(k.clientX+_.clientX)/2,P=(k.clientY+_.clientY)/2;if(d.current>0){let L=e.value,N=a.current?.getBoundingClientRect();if(!N)return;let Y=w-N.left,B=P-N.top,J=I/d.current,X=tS(L.scale*J),V=X/L.scale,ee={x:Y-V*(Y-L.x),y:B-V*(B-L.y),scale:X};t(ee),f(ee)}d.current=I},[s,e,t,f]),C=oe(()=>{if(p.current!==null)window.clearTimeout(p.current),p.current=null;n(e.value),d.current=0},[n,e]);return q(()=>{let v=a.current;if(!v)return;return v.addEventListener("wheel",h,{passive:!1}),v.addEventListener("pointerdown",g),v.addEventListener("pointermove",y),v.addEventListener("pointerup",b),v.addEventListener("pointercancel",b),v.addEventListener("lostpointercapture",b),v.addEventListener("touchmove",x,{passive:!1}),v.addEventListener("touchend",C),()=>{if(p.current!==null)window.clearTimeout(p.current);v.removeEventListener("wheel",h),v.removeEventListener("pointerdown",g),v.removeEventListener("pointermove",y),v.removeEventListener("pointerup",b),v.removeEventListener("pointercancel",b),v.removeEventListener("lostpointercapture",b),v.removeEventListener("touchmove",x),v.removeEventListener("touchend",C)}},[h,g,y,b,x,C]),q(()=>()=>{document.documentElement.classList.remove("is-canvas-panning")},[]),a}var XR=0;function r(e,t,n,o,i,s){t||(t={});var a,l,c=t;if("ref"in c)for(l in c={},t)l=="ref"?a=t[l]:c[l]=t[l];var u={type:e,props:c,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--XR,__i:-1,__u:0,__source:i,__self:s};if(typeof e=="function"&&(a=e.defaultProps))for(l in a)c[l]===void 0&&(c[l]=a[l]);return ct.vnode&&ct.vnode(u),u}function nS(){let e=On.value,t=hn.value,n=(i)=>{co(),Te.value=i},o=Cu({viewport:Te,onViewportChange:n,onViewportCommit:n});return q(()=>{let i=new URLSearchParams(location.search);return On.value=i.get("present")==="1",Oo.value=i.get("capture")==="1",window.pmxCapture={ready:()=>hn.value,area:Jt,camera:()=>({...Te.value}),frame:async(s)=>(Oo.value=!0,co(),Te.value=ja.parse(s),await new Promise((a)=>requestAnimationFrame(()=>requestAnimationFrame(()=>a()))),{...Te.value})},()=>{delete window.pmxCapture,On.value=!1,Oo.value=!1}},[]),q(()=>{if(t&&On.value&&!Oo.value)dl(!0)},[t]),q(()=>{if(!e)return;let i=(s)=>{if(s.stopImmediatePropagation(),s.target instanceof HTMLButtonElement&&["Enter"," "].includes(s.key))return;if(["Escape","ArrowRight","ArrowDown","ArrowLeft","ArrowUp"," "].includes(s.key))s.preventDefault();if(s.key==="Escape")fm();if(["ArrowRight","ArrowDown"," "].includes(s.key))_u({step:"next"});if(["ArrowLeft","ArrowUp"].includes(s.key))_u({step:"previous"})};return document.addEventListener("keydown",i,!0),()=>document.removeEventListener("keydown",i,!0)},[e]),e?r(be,{children:[!Oo.value&&r("div",{class:"presentation-navigation",ref:o,onPointerDown:(i)=>{if(i.button===1||i.button===2)co()},onContextMenu:(i)=>i.preventDefault(),children:r("button",{type:"button",class:"presentation-exit",onClick:fm,children:"Exit presentation"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Jo.value&&r("div",{class:"presentation-error",role:"alert",children:Jo.value},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null}var JR={fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"};function nt({size:e=16,children:t,...n}){return r("svg",{width:e,height:e,viewBox:"0 0 16 16",style:{verticalAlign:"middle",flexShrink:0},...JR,...n,children:t},void 0,!1,void 0,this)}function Tt(e){return r(nt,{...e,children:r("path",{d:"m4 4 8 8M12 4l-8 8"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function rS(e){return r(nt,{...e,children:r("path",{d:"M8 2v12M2 8h12"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function iS(e){return r(nt,{...e,children:[r("circle",{cx:"8",cy:"8",r:"6"},void 0,!1,void 0,this),r("path",{d:"M8 5v6M5 8h6"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ni(e){return r(nt,{...e,children:r("polyline",{points:"6 3 11 8 6 13"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function pl(e){return r(nt,{...e,children:[r("circle",{cx:"3",cy:"8",r:"0.75"},void 0,!1,void 0,this),r("circle",{cx:"8",cy:"8",r:"0.75"},void 0,!1,void 0,this),r("circle",{cx:"13",cy:"8",r:"0.75"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function oi(e){return r(nt,{...e,children:r("path",{d:"M9 2h5v5M14 2 7 9M6 3H2v11h11v-4"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function sS(e){return r(nt,{...e,children:r("path",{d:"M9 2h5v5M14 2l-5 5M7 14H2V9M2 14l5-5"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function aS(e){return r(nt,{...e,children:r("path",{d:"M14 8H2m5-5-5 5 5 5"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Tu(e){return r(nt,{...e,children:r("path",{d:"M13.5 6A5.5 5.5 0 1 0 13 11M14 2v4h-4"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function hm(e){return r(nt,{...e,children:r("path",{d:"M6 2 2 6l4 4M2 6h7a4 4 0 0 1 0 8"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function lS(e){return r(nt,{...e,children:r("path",{d:"M8 10V2M4.5 5.5 8 2l3.5 3.5M2 10v3.5h12V10"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Hs(e){return r(nt,{...e,children:r("polyline",{points:"3 6 8 11 13 6"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Iu(e){return r(nt,{...e,children:[r("polyline",{points:"1 5 1 1 5 1"},void 0,!1,void 0,this),r("polyline",{points:"11 1 15 1 15 5"},void 0,!1,void 0,this),r("polyline",{points:"15 11 15 15 11 15"},void 0,!1,void 0,this),r("polyline",{points:"5 15 1 15 1 11"},void 0,!1,void 0,this),r("rect",{x:"4",y:"4",width:"8",height:"8",rx:"1"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function cS(e){return r(nt,{...e,children:[r("circle",{cx:"7",cy:"7",r:"4.5"},void 0,!1,void 0,this),r("line",{x1:"10.5",y1:"10.5",x2:"14.5",y2:"14.5"},void 0,!1,void 0,this),r("line",{x1:"5",y1:"7",x2:"9",y2:"7"},void 0,!1,void 0,this),r("line",{x1:"7",y1:"5",x2:"7",y2:"9"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function uS(e){return r(nt,{...e,children:[r("circle",{cx:"7",cy:"7",r:"4.5"},void 0,!1,void 0,this),r("line",{x1:"10.5",y1:"10.5",x2:"14.5",y2:"14.5"},void 0,!1,void 0,this),r("line",{x1:"5",y1:"7",x2:"9",y2:"7"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Tr(e){return r(nt,{...e,children:[r("rect",{x:"1.5",y:"1.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),r("rect",{x:"9.5",y:"1.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),r("rect",{x:"1.5",y:"9.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),r("rect",{x:"9.5",y:"9.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),r("line",{x1:"6.5",y1:"4",x2:"9.5",y2:"4"},void 0,!1,void 0,this),r("line",{x1:"6.5",y1:"12",x2:"9.5",y2:"12"},void 0,!1,void 0,this),r("line",{x1:"4",y1:"6.5",x2:"4",y2:"9.5"},void 0,!1,void 0,this),r("line",{x1:"12",y1:"6.5",x2:"12",y2:"9.5"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function dS(e){return r(nt,{...e,children:[r("rect",{x:"1",y:"2",width:"14",height:"12",rx:"1.5"},void 0,!1,void 0,this),r("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 pS(e){return r(nt,{...e,children:r("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 fS(e){return r(nt,{...e,children:[r("path",{d:"M3 13l2.8-.7L13 5.1 10.9 3 3.7 10.2 3 13Z"},void 0,!1,void 0,this),r("path",{d:"M9.8 4.1l2.1 2.1"},void 0,!1,void 0,this),r("path",{d:"M2.5 14h11"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function mS(e){return r(nt,{...e,children:[r("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),r("path",{d:"M7.5 6 12 10.5"},void 0,!1,void 0,this),r("path",{d:"M8.5 14H14"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function hS(e){return r(nt,{...e,children:[r("path",{d:"M3 4h10"},void 0,!1,void 0,this),r("path",{d:"M8 4v8"},void 0,!1,void 0,this),r("path",{d:"M6 12h4"},void 0,!1,void 0,this),r("path",{d:"M4.5 4 4 6"},void 0,!1,void 0,this),r("path",{d:"M11.5 4 12 6"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Eu(e){return r(nt,{...e,children:[r("circle",{cx:"7",cy:"7",r:"4.5"},void 0,!1,void 0,this),r("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 Us(e){return r(nt,{...e,children:r("path",{d:"M2 13 L2 4 A2 2 0 0 1 4 2 L12 2 A2 2 0 0 1 14 4 L14 9 A2 2 0 0 1 12 11 L5 11 Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function uo(e){return r(nt,{...e,children:r("path",{d:"M6 2.67h4l-.53 3.66 1.86 2H4.67l1.86-2zM8 8.33v5"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Au({size:e=22,class:t}){return r("svg",{width:e,height:e,viewBox:"0 0 64 64",xmlns:"http://www.w3.org/2000/svg",class:t,"aria-hidden":"true",children:[r("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),r("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),r("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),r("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 gS({size:e=15}){return r("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:r("path",{d:"M3 2l10 5.5-4.2 1.3L7.5 13z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function yS({size:e=15}){return r("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:r("path",{d:"M5 7.5V3.8a1 1 0 0 1 2 0V7m0-3.9a1 1 0 0 1 2 0V7m0-2.7a1 1 0 0 1 2 0V7.4m0-.9a1 1 0 0 1 2 0v3.2A4.3 4.3 0 0 1 8.7 14H8a4.3 4.3 0 0 1-3.6-2L2.7 9.3a1 1 0 0 1 1.6-1.2L5 9.2"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function ti(e){return r(nt,{...e,children:[r("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),r("line",{x1:"4",y1:"6",x2:"10",y2:"6"},void 0,!1,void 0,this),r("line",{x1:"4",y1:"8.5",x2:"8",y2:"8.5"},void 0,!1,void 0,this),r("line",{x1:"4",y1:"11",x2:"11",y2:"11"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function YR(e){return r(nt,{...e,children:[r("rect",{x:"1.5",y:"2.5",width:"13",height:"9",rx:"1.5"},void 0,!1,void 0,this),r("path",{d:"M4 13.5 L5.5 11.5 L8 11.5"},void 0,!1,void 0,this),r("polyline",{points:"5 6 7 8 5 10"},void 0,!1,void 0,this),r("line",{x1:"8",y1:"10",x2:"11",y2:"10"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function QR(e){return r(nt,{...e,children:[r("rect",{x:"1.5",y:"2.5",width:"13",height:"9",rx:"1.5"},void 0,!1,void 0,this),r("path",{d:"M12 13.5 L10.5 11.5 L8 11.5"},void 0,!1,void 0,this),r("circle",{cx:"5",cy:"7",r:"0.9",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),r("circle",{cx:"8",cy:"7",r:"0.9",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),r("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 oS(e){return r(nt,{...e,children:[r("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),r("polyline",{points:"9 1.5 9 5 12.5 5"},void 0,!1,void 0,this),r("line",{x1:"4.5",y1:"8.5",x2:"10.5",y2:"8.5"},void 0,!1,void 0,this),r("line",{x1:"4.5",y1:"11",x2:"9",y2:"11"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function eP(e){return r(nt,{...e,children:[r("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),r("circle",{cx:"5.5",cy:"6.5",r:"1.2"},void 0,!1,void 0,this),r("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 Fs(e){return r(nt,{...e,children:[r("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),r("line",{x1:"1.5",y1:"5.5",x2:"14.5",y2:"5.5"},void 0,!1,void 0,this),r("circle",{cx:"3.3",cy:"4",r:"0.5",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),r("circle",{cx:"5",cy:"4",r:"0.5",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),r("circle",{cx:"6.7",cy:"4",r:"0.5",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),r("line",{x1:"4",y1:"8",x2:"12",y2:"8"},void 0,!1,void 0,this),r("line",{x1:"4",y1:"10",x2:"10",y2:"10"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function tP(e){return r(nt,{...e,children:[r("rect",{x:"2",y:"4",width:"12",height:"10",rx:"1.5"},void 0,!1,void 0,this),r("line",{x1:"2",y1:"6.5",x2:"14",y2:"6.5"},void 0,!1,void 0,this),r("path",{d:"M11 1.5 L11 4"},void 0,!1,void 0,this),r("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 gm(e){return r(nt,{...e,children:[r("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),r("rect",{x:"4",y:"4",width:"3.5",height:"3.5",rx:"0.6"},void 0,!1,void 0,this),r("rect",{x:"8.5",y:"4",width:"3.5",height:"3.5",rx:"0.6"},void 0,!1,void 0,this),r("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 nP(e){return r(nt,{...e,children:[r("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),r("circle",{cx:"4.5",cy:"8",r:"1.1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),r("line",{x1:"6.5",y1:"6.5",x2:"12.5",y2:"6.5"},void 0,!1,void 0,this),r("line",{x1:"6.5",y1:"8",x2:"11",y2:"8"},void 0,!1,void 0,this),r("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 oP(e){return r(nt,{...e,children:[r("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),r("path",{d:"M3.5 10.5 L6 6.5 L8.5 9.5 L12.5 5"},void 0,!1,void 0,this),r("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 rP(e){return r(nt,{...e,children:[r("rect",{x:"2",y:"2",width:"12",height:"12",rx:"1.5"},void 0,!1,void 0,this),r("line",{x1:"4.5",y1:"5.5",x2:"11.5",y2:"5.5"},void 0,!1,void 0,this),r("line",{x1:"4.5",y1:"8",x2:"11.5",y2:"8"},void 0,!1,void 0,this),r("line",{x1:"4.5",y1:"10.5",x2:"8",y2:"10.5"},void 0,!1,void 0,this),r("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 iP(e){return r(nt,{...e,children:[r("rect",{x:"1.5",y:"1.5",width:"13",height:"13",rx:"2"},void 0,!1,void 0,this),r("path",{d:"M4 11 L4 6 L6 8.5 L8 6 L8 11"},void 0,!1,void 0,this),r("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 sP(e){return r(nt,{...e,children:[r("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),r("polyline",{points:"10 5 13 5 13 8"},void 0,!1,void 0,this),r("line",{x1:"13",y1:"5",x2:"8",y2:"10"},void 0,!1,void 0,this),r("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 aP(e){return r(nt,{...e,children:[r("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),r("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),r("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 mm(e){return r(nt,{...e,children:[r("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),r("line",{x1:"5.2",y1:"6",x2:"8",y2:"8"},void 0,!1,void 0,this),r("line",{x1:"8",y1:"8",x2:"10.8",y2:"6"},void 0,!1,void 0,this),r("line",{x1:"8",y1:"8",x2:"8",y2:"11"},void 0,!1,void 0,this),r("circle",{cx:"5.2",cy:"6",r:"1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),r("circle",{cx:"10.8",cy:"6",r:"1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),r("circle",{cx:"8",cy:"8",r:"1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),r("circle",{cx:"8",cy:"11",r:"1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Do(e){switch(e){case"markdown":return ti;case"prompt":return YR;case"response":return QR;case"file":return oS;case"diff":return oS;case"mermaid":return mm;case"image":return eP;case"webpage":return Fs;case"context":return tP;case"group":return gm;case"status":return nP;case"trace":return oP;case"ledger":return rP;case"mcp-app":return iP;case"ext-app":return sP;case"json-render":return aP;case"graph":return mm;case"board":return mm;case"html":return Fs;default:return ti}}function lP(e){return new Date(e).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function cP(){Yc()}function vS(){let e=Ga.value;if(e.length===0)return null;let t=qr.value,n=Ss.value;if(!t)return r("button",{type:"button",class:"attention-history-tab",onClick:cP,"aria-label":n>0?`Recent updates — ${n} new`:"Recent updates",children:[r("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:[r("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"},void 0,!1,void 0,this),r("circle",{cx:"4.5",cy:"8",r:"1.1",fill:"currentColor",stroke:"none"},void 0,!1,void 0,this),r("line",{x1:"6.5",y1:"6.5",x2:"12.5",y2:"6.5"},void 0,!1,void 0,this),r("line",{x1:"6.5",y1:"8",x2:"11",y2:"8"},void 0,!1,void 0,this),r("line",{x1:"6.5",y1:"9.5",x2:"12",y2:"9.5"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("span",{class:"attention-history-tab-label",children:"Updates"},void 0,!1,void 0,this),n>0&&r("span",{class:"attention-history-tab-badge","aria-hidden":"true",children:n>9?"9+":n},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return r("aside",{class:"attention-history","aria-label":"Recent semantic changes",children:[r("div",{class:"attention-history-header",children:[r("div",{class:"attention-history-header-text",children:[r("span",{class:"attention-history-title",children:"Recent Updates"},void 0,!1,void 0,this),r("span",{class:"attention-history-subtitle",children:"Focus and meaning shifts"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("button",{type:"button",class:"attention-history-close",onClick:zw,"aria-label":"Collapse changes panel",children:r(Tt,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"attention-history-list",children:e.map((o)=>r("article",{class:`attention-history-entry attention-tone-${o.tone}`,children:[r("div",{class:"attention-history-meta",children:[r("span",{class:"attention-history-kind",children:o.title},void 0,!1,void 0,this),r("time",{class:"attention-history-time",dateTime:new Date(o.createdAt).toISOString(),children:lP(o.createdAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("p",{class:"attention-history-detail",children:o.detail},void 0,!1,void 0,this)]},o.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function bS(){let e=Xc.value;if(!e)return null;return r("button",{type:"button",class:`attention-toast attention-tone-${e.tone}`,onClick:Yc,"aria-label":`${e.title}${e.detail?`: ${e.detail}`:""} — open change history`,children:[r("span",{class:"attention-toast-dot","aria-hidden":"true"},void 0,!1,void 0,this),r("span",{class:"attention-toast-copy",children:[r("span",{class:"attention-toast-title",children:e.title},void 0,!1,void 0,this),e.detail&&r("span",{class:"attention-toast-detail",children:e.detail},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var ml=ie(null),xS=0;function Dn(e,t,n={}){return new Promise((o)=>{ml.value?.resolve(null),xS+=1,ml.value={seq:xS,title:e,placeholder:t,initial:n.initial??"",allowEmpty:n.allowEmpty??!1,confirm:n.confirm??"Add",resolve:o}})}function fl(e){let t=ml.value;ml.value=null,t?.resolve(e)}function wS(){let e=ml.value,t=D(null);if(q(()=>{if(!e)return;let o=(i)=>{if(i.key!=="Escape")return;i.preventDefault(),i.stopPropagation(),fl(null)};return window.addEventListener("keydown",o,{capture:!0}),()=>window.removeEventListener("keydown",o,{capture:!0})},[e]),!e)return null;let n=()=>{let o=t.current?.value.trim()??"";fl(o?o:e.allowEmpty?"":null)};return r("div",{class:"text-prompt-backdrop",onPointerDown:()=>fl(null),children:r("div",{class:"text-prompt",role:"dialog","aria-label":e.title,"data-testid":"text-prompt",onPointerDown:(o)=>o.stopPropagation(),children:[r("div",{class:"text-prompt-title",children:e.title},void 0,!1,void 0,this),r("input",{ref:(o)=>{if(t.current=o,!o)return;if(o.focus(),e.initial)o.select()},class:"text-prompt-input",type:"text",defaultValue:e.initial,placeholder:e.placeholder,onKeyDown:(o)=>{if(o.key==="Enter")o.preventDefault(),o.stopPropagation(),n();else if(o.key==="Escape")o.preventDefault(),o.stopPropagation(),fl(null)}},e.seq,!1,void 0,this),r("div",{class:"text-prompt-actions",children:[r("button",{type:"button",class:"text-prompt-cancel",onClick:()=>fl(null),children:"Cancel"},void 0,!1,void 0,this),r("button",{type:"button",class:"text-prompt-confirm",onClick:n,children:e.confirm},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function js({children:e}){let t=Ke(()=>document.createElement("div"),[]);return Me(()=>(document.body.appendChild(t),()=>{Ea(null,t),t.remove()}),[t]),Me(()=>Ea(e,t),[e,t]),null}function _e({label:e,shortcut:t,body:n,align:o="center",side:i="down",tapToOpen:s=!1,fitWithin:a,children:l}){let[c,u]=E(null),d=(f)=>{if(!a)return;let m=f.currentTarget,h=m.closest(a)?.getBoundingClientRect(),g=m.querySelector(".toolbar-tooltip")?.getBoundingClientRect();if(!h||!g)return;let y=m.getBoundingClientRect(),b=y.right-g.width>=h.left,x=y.left+g.width<=h.right;u(b||!x?"end":"start")};return r("span",{class:`toolbar-tooltip-anchor toolbar-tooltip-anchor-${c??o}${i==="up"?" toolbar-tooltip-anchor-up":""}${s?" toolbar-tooltip-anchor-tap":""}`,tabIndex:s?-1:void 0,onPointerEnter:a?d:void 0,onFocusIn:a?d:void 0,children:[l,r("span",{class:"toolbar-tooltip",role:"tooltip",children:[r("span",{class:"toolbar-tooltip-label",children:e},void 0,!1,void 0,this),n&&r("span",{class:"toolbar-tooltip-body",children:n},void 0,!1,void 0,this),t&&r("span",{class:"toolbar-tooltip-meta",children:r("kbd",{class:"toolbar-tooltip-shortcut",children:t},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}async function ri(e,t,n,o){if((await mu({type:t,sourceNodeId:e.id,sourceSurface:"native-node",...n?{payload:n}:{}})).ok)mn("context",o,"",[e.id])}var qi={padding:"3px 8px",fontSize:"10px",background:"color-mix(in srgb, var(--c-accent) 12%, transparent)",border:"1px solid color-mix(in srgb, var(--c-accent) 25%, transparent)",borderRadius:"4px",color:"var(--c-text-soft)",cursor:"pointer",flexShrink:0};function uP(e){let t=e.title||e.label||e.key||"Context",n=e.summary?.trim()||"Available in startup context.",o=e.pathDisplay||e.path||"",i=e.category==="profile"?"Operator":e.category==="planning"||e.category==="memory"?"Product":e.category?e.category.charAt(0).toUpperCase()+e.category.slice(1):void 0,s=e.sourceKind==="global"?"Global":"Workspace",a=e.state==="missing"?"Missing":e.state==="stale"?"Stale":e.state==="invalid"?"Invalid":"Loaded";return{title:t,summary:n,pathDisplay:o,category:i,sourceKind:s,status:a,required:e.required===!0}}function Bo(e){return typeof e==="string"?e.trim():""}function dP(e){return e.replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim()}function pP(e){let t=Bo(e.title),n=Bo(e.content),o=dP(Bo(e.rendered)),i=n||o,s=Bo(e.path);if(!t&&!i&&!s)return null;return{title:t||"Context",summary:i,path:s}}function fP(e){let t=Bo(e.data.title)||e.id,n=Bo(e.data.content)||Bo(e.data.excerpt)||Bo(e.data.description)||Bo(e.data.pageTitle)||"",o=Bo(e.data.path)||Bo(e.data.url);return{id:e.id,title:t,summary:n,kind:an[e.type]??e.type,path:o}}function kS(e){if(e===null||!Number.isFinite(e)||e<0)return"0";if(e>=1e6)return`${(e/1e6).toFixed(1)}m`;if(e>=1000)return`${(e/1000).toFixed(1)}k`;return`${Math.round(e)}`}function mP(e){if(e>=0.95)return"var(--c-danger)";if(e>=0.85)return"var(--c-warn)";if(e>=0.7)return"var(--c-warn)";return"var(--c-accent)"}function Ru({node:e,expanded:t=!1,pinnedNodes:n=[]}){let o=e.data.cards??[],i=e.data.auxTabs??[],s=n.map(fP),a=s.length>0,l=typeof e.data.currentTokens==="number"?e.data.currentTokens:null,c=typeof e.data.tokenLimit==="number"?e.data.tokenLimit:null,u=typeof e.data.utilization==="number"?e.data.utilization:null,d=typeof e.data.messagesLength==="number"?e.data.messagesLength:null,p=u!==null?Math.max(0,Math.min(100,Math.round(u*100))):null,f=mP(u??0),m=!a&&o.length===0&&i.length===0?pP(e.data):null,h=async(g)=>{let y=typeof g.path==="string"?g.path.trim():"";if(!y)return;await uu(y)};return r("div",{style:{display:"flex",flexDirection:"column",gap:t?"10px":"6px",fontSize:t?"14px":"12px",maxWidth:t?"760px":void 0,margin:t?"0 auto":void 0,width:t?"100%":void 0,padding:t?"8px 0":void 0},children:[r("div",{style:{display:"flex",justifyContent:"flex-end"},children:r(_e,{label:"Point the agent at this node",body:"Sets it as the agent's current AX focus, so the agent pulls it into context to work on next — a one-click alternative to pinning.",align:"end",fitWithin:".node-content",children:r("button",{type:"button",class:"ax-node-action",style:qi,onClick:(g)=>{g.stopPropagation(),ri(e,"ax.focus.set",void 0,"Focus set")},children:"Set focus"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),c!==null&&c>0&&r("div",{style:{marginBottom:"8px"},children:[r("div",{style:{fontSize:"10px",fontWeight:600,color:"var(--c-muted)",textTransform:"uppercase",letterSpacing:"0.04em",marginBottom:"6px"},children:"Token Usage"},void 0,!1,void 0,this),r("div",{style:{height:"6px",background:"var(--c-surface-hover)",borderRadius:"3px",overflow:"hidden",marginBottom:"4px"},children:r("div",{style:{height:"100%",width:`${Math.min(100,(u??0)*100)}%`,background:f,borderRadius:"3px",transition:"width 0.3s ease"}},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("div",{style:{fontSize:"11px",color:"var(--c-muted)"},children:[p,"% — ",kS(l)," / ",kS(c)," tokens",d!==null&&r(be,{children:[" · ",d," messages"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),a&&r("div",{children:[r("div",{style:{fontSize:"10px",fontWeight:600,color:"var(--c-muted)",textTransform:"uppercase",letterSpacing:"0.04em",marginBottom:"6px"},children:["Pinned Context (",s.length,")"]},void 0,!0,void 0,this),s.map((g)=>r("div",{style:{padding:"6px 8px",background:"var(--c-surface-subtle)",borderRadius:"6px",marginBottom:"4px",borderLeft:"2px solid var(--c-accent)"},children:[r("div",{style:{fontWeight:600,color:"var(--c-text)",marginBottom:"2px"},children:g.title},void 0,!1,void 0,this),g.summary&&r("div",{style:{color:"var(--c-muted)",fontSize:"10px",lineHeight:1.45,marginBottom:"4px",whiteSpace:"pre-wrap"},children:g.summary},void 0,!1,void 0,this),r("div",{style:{display:"flex",gap:"4px",flexWrap:"wrap",marginTop:"4px"},children:r("span",{style:{fontSize:"9px",padding:"1px 4px",background:"var(--c-surface-hover)",color:"var(--c-text-soft)",borderRadius:"3px",display:"inline-block"},children:g.kind},void 0,!1,void 0,this)},void 0,!1,void 0,this),g.path&&r("div",{style:{marginTop:"6px"},children:[r("div",{style:{color:"var(--c-dim)",fontSize:"10px",wordBreak:"break-all",marginBottom:"6px"},children:g.path},void 0,!1,void 0,this),g.path.startsWith("/")&&r("button",{type:"button",onClick:()=>void uu(g.path),style:{padding:"4px 8px",fontSize:"10px",background:"color-mix(in srgb, var(--c-accent) 12%, transparent)",border:"1px solid color-mix(in srgb, var(--c-accent) 25%, transparent)",borderRadius:"4px",color:"var(--c-text-soft)",cursor:"pointer"},children:"Open in canvas"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},g.id,!0,void 0,this))]},void 0,!0,void 0,this),!a&&o.length>0&&r("div",{children:[r("div",{style:{fontSize:"10px",fontWeight:600,color:"var(--c-muted)",textTransform:"uppercase",letterSpacing:"0.04em",marginBottom:"6px"},children:["Context (",o.length,")"]},void 0,!0,void 0,this),o.map((g)=>{let y=uP(g);return r("div",{style:{padding:"6px 8px",background:"var(--c-surface-subtle)",borderRadius:"6px",marginBottom:"4px",borderLeft:"2px solid var(--c-accent)"},children:[r("div",{style:{fontWeight:600,color:"var(--c-text)",marginBottom:"2px"},children:y.title},void 0,!1,void 0,this),r("div",{style:{color:"var(--c-muted)",fontSize:"10px",lineHeight:1.45,marginBottom:"4px"},children:y.summary},void 0,!1,void 0,this),y.pathDisplay&&r("div",{style:{color:"var(--c-dim)",fontSize:"10px",wordBreak:"break-all"},children:y.pathDisplay},void 0,!1,void 0,this),r("div",{style:{display:"flex",gap:"4px",flexWrap:"wrap",marginTop:"4px"},children:[r("span",{style:{fontSize:"9px",padding:"1px 4px",background:"color-mix(in srgb, var(--c-accent) 10%, transparent)",color:"var(--c-accent)",borderRadius:"3px",display:"inline-block"},children:y.status},void 0,!1,void 0,this),y.category&&r("span",{style:{fontSize:"9px",padding:"1px 4px",background:"var(--c-surface-hover)",color:"var(--c-text-soft)",borderRadius:"3px",display:"inline-block"},children:y.category},void 0,!1,void 0,this),r("span",{style:{fontSize:"9px",padding:"1px 4px",background:"var(--c-surface-hover)",color:"var(--c-text-soft)",borderRadius:"3px",display:"inline-block"},children:y.sourceKind},void 0,!1,void 0,this),y.required&&r("span",{style:{fontSize:"9px",padding:"1px 4px",background:"color-mix(in srgb, var(--c-accent) 12%, transparent)",color:"var(--c-accent)",borderRadius:"3px",display:"inline-block"},children:"Required"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),g.path&&r("div",{style:{marginTop:"6px"},children:r("button",{type:"button",onClick:()=>void h(g),style:{padding:"4px 8px",fontSize:"10px",background:"color-mix(in srgb, var(--c-accent) 12%, transparent)",border:"1px solid color-mix(in srgb, var(--c-accent) 25%, transparent)",borderRadius:"4px",color:"var(--c-text-soft)",cursor:"pointer"},children:"Open in canvas"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},g.key??y.pathDisplay??y.title,!0,void 0,this)})]},void 0,!0,void 0,this),!a&&i.length>0&&r("div",{children:[r("div",{style:{fontSize:"10px",fontWeight:600,color:"var(--c-muted)",textTransform:"uppercase",letterSpacing:"0.04em",marginBottom:"6px",marginTop:o.length>0?"8px":0},children:["References (",i.length,")"]},void 0,!0,void 0,this),i.map((g)=>r("a",{href:g.url,target:"_blank",rel:"noopener noreferrer",style:{display:"block",padding:"4px 8px",color:"var(--c-accent)",fontSize:"11px",textDecoration:"none",borderRadius:"4px",marginBottom:"2px",wordBreak:"break-all"},children:[g.url,g.reason&&r("span",{style:{color:"var(--c-dim)",fontSize:"10px",marginLeft:"6px"},children:["(",g.reason,")"]},void 0,!0,void 0,this)]},g.id,!0,void 0,this))]},void 0,!0,void 0,this),m&&r("div",{style:{padding:"8px 10px",background:"var(--c-surface-subtle)",borderRadius:"6px",borderLeft:"2px solid var(--c-accent)"},children:[r("div",{style:{fontWeight:600,color:"var(--c-text)",marginBottom:"4px"},children:m.title},void 0,!1,void 0,this),m.summary&&r("div",{style:{color:"var(--c-text-soft)",fontSize:"11px",lineHeight:1.5,whiteSpace:"pre-wrap"},children:m.summary},void 0,!1,void 0,this),m.path&&r("div",{style:{marginTop:"6px"},children:[r("div",{style:{color:"var(--c-dim)",fontSize:"10px",wordBreak:"break-all",marginBottom:"6px"},children:m.path},void 0,!1,void 0,this),r("button",{type:"button",onClick:()=>void uu(m.path),style:{padding:"4px 8px",fontSize:"10px",background:"color-mix(in srgb, var(--c-accent) 12%, transparent)",border:"1px solid color-mix(in srgb, var(--c-accent) 25%, transparent)",borderRadius:"4px",color:"var(--c-text-soft)",cursor:"pointer"},children:"Open in canvas"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!a&&!m&&o.length===0&&i.length===0&&r("div",{style:{color:"var(--c-dim)",fontStyle:"italic"},children:"No context loaded"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function SS(e){return e.replace(/^[ab]\//,"")}function hP(e,t){if(t&&t!=="/dev/null")return SS(t);if(e&&e!=="/dev/null")return SS(e);return null}function gP(e){if(!e.trim())return[];let t=e.split(`
|
|
89
|
+
`);if(t.length>0&&t[t.length-1]==="")t.pop();let n=[],o=null,i=!1,s=(a)=>{let l={path:a,lines:[]};return i=!1,n.push(l),l};for(let a=0;a<t.length;a++){let l=t[a]??"",c=l.match(/^diff --git a\/(.+?) b\/(.+)$/);if(c){o=s(c[2]??null);continue}let u=t[a+1]??"";if(l.startsWith("--- ")&&u.startsWith("+++ ")){let p=hP(l.slice(4).trim(),u.slice(4).trim());if(o&&!i){if(!o.path)o.path=p}else o=s(p);a++;continue}if(!o)o=s(null);let d=o;if(l.startsWith("@@"))i=!0,d.lines.push({kind:"hunk",text:l});else if(l.startsWith("+"))d.lines.push({kind:"add",text:l});else if(l.startsWith("-"))d.lines.push({kind:"remove",text:l});else d.lines.push({kind:"context",text:l})}return n}function Pu({node:e}){let t=typeof e.data.content==="string"?e.data.content:"",n=Ke(()=>gP(t),[t]);if(n.length===0)return r("div",{class:"diff-node diff-node-empty",children:"Empty diff"},void 0,!1,void 0,this);return r("div",{class:"diff-node",children:n.map((o,i)=>r("div",{class:"diff-file",children:[o.path&&r("div",{class:"diff-file-header",children:o.path},void 0,!1,void 0,this),r("pre",{class:"diff-lines",children:o.lines.map((s,a)=>r("div",{class:s.kind==="hunk"?"diff-hunk":`diff-line-${s.kind}`,children:s.text||" "},a,!1,void 0,this))},void 0,!1,void 0,this)]},`${o.path??"anonymous"}-${i}`,!0,void 0,this))},void 0,!1,void 0,this)}function _S(e){let t=e.toLowerCase();if(t.endsWith(".csv"))return",";if(t.endsWith(".tsv"))return"\t";return null}function CS(e,t){let n=[],o=[],i="",s=!1,a=!1;for(let c=0;c<e.length;c++){let u=e[c];if(a=!0,s){if(u==='"')if(e[c+1]==='"')i+='"',c++;else s=!1;else if(u==="\r"&&e[c+1]===`
|
|
90
|
+
`)i+=`
|
|
91
|
+
`,c++;else i+=u;continue}if(u==='"'&&i==="")s=!0;else if(u===t)o.push(i),i="";else if(u===`
|
|
92
|
+
`||u==="\r"){if(u==="\r"&&e[c+1]===`
|
|
93
|
+
`)c++;o.push(i),i="",n.push(o),o=[],a=!1}else i+=u}if(a)o.push(i),n.push(o);let l=n.shift()??[];return{header:l,rows:n.map((c)=>Array.from({length:l.length},(u,d)=>c[d]??""))}}var TS="pmx-canvas-iframe-probe";var yP="/api/canvas/iframe-probe",vP=3000,Sn=ie(null);function bP(){let e=new URLSearchParams(window.location.search).get("iframe-mode");return e==="srcdoc"||e==="src"?e:null}function IS(e=vP){return new Promise((t)=>{let n=document.createElement("iframe");n.setAttribute("data-pmx-iframe-probe",""),n.style.cssText="position:fixed;width:1px;height:1px;left:-9999px;border:none",n.setAttribute("sandbox","allow-scripts");let o=(a)=>{window.clearTimeout(s),window.removeEventListener("message",i),n.remove(),t(a)},i=(a)=>{if(a.source!==n.contentWindow)return;if(a.data?.source!==TS)return;o(!0)},s=window.setTimeout(()=>o(!1),e);window.addEventListener("message",i),n.addEventListener("error",()=>o(!1)),n.src=yP,(document.body??document.documentElement).appendChild(n)})}var Nu=null;function xP(){try{return window.self!==window.top}catch{return!0}}function wP(){return window.__PMX_AMP_ORB===!0}function ES(e={}){if(tt())return Sn.value="srcdoc",Promise.resolve("srcdoc");if(Sn.value)return Promise.resolve(Sn.value);if(Nu)return Nu;let t=bP();if(t)return Sn.value=t,Promise.resolve(t);if(!(e.embedded??xP()))return Sn.value="src",IS(e.probeTimeoutMs).then((n)=>{if(!n&&Sn.value==="src")Sn.value="srcdoc"}),Promise.resolve("src");if(e.ampOrb??wP())return Sn.value="srcdoc",Promise.resolve("srcdoc");return Nu=IS(e.probeTimeoutMs).then((n)=>{let o=n?"src":"srcdoc";return Sn.value=o,o}),Nu}function Zs(e){let t=tt()&&e.startsWith("/"),[n,o]=E(null);return q(()=>{if(!t)return;let i=!1;return qt(e).then(async(s)=>{if(!s.ok)throw Error(`Asset read failed: ${s.status}`);let a=new FileReader;a.onload=()=>{if(!i&&typeof a.result==="string")o({path:e,url:a.result})},a.readAsDataURL(await s.blob())}).catch((s)=>console.error("[workbench-asset]",s)),()=>{i=!0}},[e,t]),t?n?.path===e?n.url:void 0:e}function AS({node:e,expanded:t=!1}){let n=String(e.data.attachmentId),o=Zs(`/api/canvas/attachments/${encodeURIComponent(n)}/bytes`),i=ae.value,[s,a]=E(null),[l,c]=E(t),[u,d]=E(!1);q(()=>{let m=!0,h=async()=>{let y=await de("readImports",`/api/canvas/imports?boardId=${encodeURIComponent(i??"")}`,null);if(m)a(y?.imports?.find((b)=>b.attachmentId===n)??null)};h();let g=window.setInterval(()=>void h(),2000);return()=>{m=!1,window.clearInterval(g)}},[n,i]),q(()=>{if(!l)return;let m=(h)=>{if(h.key==="Escape")h.stopPropagation(),c(!1)};return window.addEventListener("keydown",m,!0),()=>window.removeEventListener("keydown",m,!0)},[l]);let p=async(m)=>{if(!s)return;d(!0);let h=await de(`import.${m}`,`/api/canvas/imports/${s.id}/${m}`,null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({consent:!0})});if(d(!1),h?.import){if(a(h.import),c(!1),t&&m==="commit")Cr()}},f=s&&["attached","cancelled","unavailable"].includes(s.status);return r("div",{class:"attachment-node",onPointerDown:(m)=>m.stopPropagation(),children:[r("div",{class:"attachment-status",children:s?.status==="requested"?"Waiting for agent":s?.status==="drafted"?"Ready for review":s?.status==="committed"?"Markdown added":"Original attached"},void 0,!1,void 0,this),r("a",{href:o,download:String(e.data.title??"attachment"),target:"_blank",rel:"noopener noreferrer",children:["Download original · ",Math.ceil(Number(e.data.size??0)/1024)," KB"]},void 0,!0,void 0,this),s?.reason&&r("p",{children:s.reason},void 0,!1,void 0,this),f&&r(be,{children:[r("p",{id:`import-consent-${e.id}`,children:"Asking the agent to import allows it to process this file with its tools and model provider."},void 0,!1,void 0,this),r("button",{type:"button",class:"attachment-button is-primary","aria-describedby":`import-consent-${e.id}`,disabled:u,onClick:()=>void p("request"),children:"Ask agent to import"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s?.status==="requested"&&r("p",{children:"No automatic extraction. Ask your connected agent to check its pending steering or use canvas_import list."},void 0,!1,void 0,this),s?.status==="drafted"&&!l&&r("button",{type:"button",class:"attachment-button is-primary",onClick:()=>t?c(!0):xo(e.id),children:["Review Markdown · ",s.sections.length," ",s.sections.length===1?"card":"cards"]},void 0,!0,void 0,this),s&&["requested","drafted"].includes(s.status)&&r("button",{type:"button",class:"attachment-button",disabled:u,onClick:()=>void p("cancel"),children:"Cancel import"},void 0,!1,void 0,this),l&&s?.status==="drafted"&&r("div",{class:"attachment-review",role:"dialog","aria-label":"Review imported Markdown",children:[r("h3",{children:"Review imported Markdown"},void 0,!1,void 0,this),r("p",{children:["Source material, not instructions or verified knowledge. ",s.agentDescription]},void 0,!0,void 0,this),s.warnings.length>0&&r("ul",{children:s.warnings.map((m)=>r("li",{children:m},m,!1,void 0,this))},void 0,!1,void 0,this),s.sections.map((m,h)=>r("section",{children:[r("h4",{children:m.title},void 0,!1,void 0,this),r("p",{children:m.reference||"Source location not supplied"},void 0,!1,void 0,this),r("pre",{children:m.markdown},void 0,!1,void 0,this)]},h,!0,void 0,this)),r("div",{class:"attachment-review-actions",children:[r("button",{type:"button",class:"attachment-button",onClick:()=>c(!1),children:"Close review"},void 0,!1,void 0,this),r("button",{type:"button",class:"attachment-button is-primary",disabled:u||i!==s.boardId,onClick:()=>void p("commit"),children:"Add to board"},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 kP(e){let t=e.split(".").pop()?.toLowerCase()??"";return{ts:"TypeScript",tsx:"TSX",js:"JavaScript",jsx:"JSX",py:"Python",rs:"Rust",go:"Go",rb:"Ruby",java:"Java",kt:"Kotlin",swift:"Swift",c:"C",cpp:"C++",h:"C/C++",css:"CSS",html:"HTML",json:"JSON",yaml:"YAML",yml:"YAML",md:"Markdown",toml:"TOML",sql:"SQL",sh:"Shell",bash:"Shell",xml:"XML",graphql:"GraphQL",proto:"Protobuf"}[t]??(t.toUpperCase()||"Text")}var ym=500;function vm(e){if(!Number.isFinite(e)||e<0)return"";if(e<1024)return`${Math.round(e)} B`;let t=["KB","MB","GB","TB"],n=e/1024,o=0;while(n>=1024&&o<t.length-1)n/=1024,o++;return`${n<10?n.toFixed(1):Math.round(n)} ${t[o]}`}function Mu({node:e,expanded:t=!1}){if(typeof e.data.attachmentId==="string")return r(AS,{node:e,expanded:t},void 0,!1,void 0,this);return r(SP,{node:e,expanded:t},void 0,!1,void 0,this)}function SP({node:e,expanded:t=!1}){let n=e.data.path||e.data.content||"",o=e.data.title||n.split("/").pop()||"File",i=e.data.fileContent,s=e.data.updatedAt,a=e.data.lineCount,l=e.data.byteSize,c=e.data.binary===!0,u=e.data.truncated===!0,p=e.data.mimeType==="application/pdf"||n.toLowerCase().endsWith(".pdf"),f=c||p,[m,h]=E(i??""),[g,y]=E(!i&&!!n&&!f),[b,x]=E(null),[C,v]=E(0);q(()=>{if(!n)return;if(f){y(!1);return}if(i!==void 0){h(i),y(!1);return}let X=!1;return y(!0),x(null),el(n).then(({content:V})=>{if(X)return;if(!V&&V!==""){x("File not found"),y(!1);return}h(V),y(!1);let ee=V.split(`
|
|
94
|
+
`).length;Xe(e.id,{fileContent:V,lineCount:ee}),ln(e.id,{data:{fileContent:V,lineCount:ee}})}).catch(()=>{if(!X)x("Failed to load file"),y(!1)}),()=>{X=!0}},[n,i,f]),q(()=>{if(i!==void 0&&i!==m)h(i)},[i]);let k=oe(()=>{if(!n)return;if(f){v((X)=>X+1);return}y(!0),x(null),Xe(e.id,{fileContent:void 0}),ln(e.id,{data:{fileContent:void 0}}),el(n).then(({content:X})=>{h(X),y(!1);let V=X.split(`
|
|
95
|
+
`).length,ee=new Date().toISOString();Xe(e.id,{fileContent:X,lineCount:V,updatedAt:ee}),ln(e.id,{data:{fileContent:X,lineCount:V,updatedAt:ee}})}).catch(()=>{x("Failed to reload"),y(!1)})},[n,e.id,f]),_=kP(n),I=m.split(`
|
|
96
|
+
`),w=`${String(I.length).length+1}ch`,P=_S(n),L=Ke(()=>{if(!P||f||!m)return null;let X=CS(m,P);return X.header.length>=2?X:null},[m,P,f]),N=Zs(f?`/api/canvas/file-bytes?nodeId=${encodeURIComponent(e.id)}${C?`&v=${C}`:""}`:""),Y=Sn.value==="srcdoc",B=f||L!==null,J=u?r("div",{class:"file-node-notice",children:["Showing the first ",vm(m.length)," of ",vm(l??m.length)]},void 0,!0,void 0,this):null;if(!n)return r("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"12px"},children:"No file path set"},void 0,!1,void 0,this);return r("div",{style:{display:"flex",flexDirection:"column",height:"100%",fontFamily:"var(--font-code)",fontSize:t?"13px":"11px"},children:[r("div",{style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 10px",borderBottom:"1px solid var(--c-line)",flexShrink:0},children:[r("span",{style:{fontSize:"9px",padding:"1px 5px",background:"color-mix(in srgb, var(--c-accent) 12%, transparent)",color:"var(--c-accent)",borderRadius:"3px",fontWeight:600},children:_},void 0,!1,void 0,this),r("span",{style:{color:"var(--c-text-soft)",fontSize:t?"12px":"10px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},children:n},void 0,!1,void 0,this),a!==void 0&&r("span",{style:{color:"var(--c-dim)",fontSize:"10px",flexShrink:0},children:[a," lines"]},void 0,!0,void 0,this),s&&r("span",{style:{color:"var(--c-dim)",fontSize:"10px",flexShrink:0},children:new Date(s).toLocaleTimeString()},void 0,!1,void 0,this),r(_e,{label:"Mark this file as AX evidence",align:"end",fitWithin:".node-content",children:r("button",{type:"button",class:"ax-node-action","aria-label":"Mark this file as AX evidence",onClick:(X)=>{X.stopPropagation(),ri(e,"ax.evidence.add",{kind:"file",title:n.split("/").pop()||n,ref:n},"Marked as evidence")},style:{background:"none",border:"none",color:"var(--c-muted)",cursor:"pointer",padding:"2px 4px",fontSize:"12px",flexShrink:0},children:r(iS,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(_e,{label:"Reload file",align:"end",fitWithin:".node-content",children:r("button",{type:"button",onClick:k,"aria-label":"Reload file",style:{background:"none",border:"none",color:"var(--c-muted)",cursor:"pointer",padding:"2px 4px",fontSize:"12px",flexShrink:0},children:r(Tu,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{style:{flex:1,minHeight:0,overflow:B?"hidden":"auto",padding:B?0:"8px 0",background:t?"var(--c-panel-soft)":void 0,borderRadius:t?"0 0 8px 8px":void 0},children:[p&&(Y?r("div",{class:"file-node-placeholder",children:[r("div",{children:"PDF preview is unavailable in this embedded host."},void 0,!1,void 0,this),r("a",{class:"file-node-link",href:N,target:"_blank",rel:"noreferrer",children:"Open PDF"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):r("iframe",{src:N,title:o,sandbox:"",style:{width:"100%",height:"100%",border:"none",display:"block"}},void 0,!1,void 0,this)),!p&&c&&r("div",{class:"file-node-placeholder",children:[r("div",{class:"file-node-placeholder-name",children:o},void 0,!1,void 0,this),r("div",{children:"Binary file"},void 0,!1,void 0,this),l!==void 0&&r("div",{children:vm(l)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!f&&r(be,{children:[g&&r("div",{style:{color:"var(--c-dim)",padding:"12px",fontStyle:"italic"},children:"Loading…"},void 0,!1,void 0,this),b&&r("div",{style:{color:"var(--c-danger)",padding:"12px"},children:b},void 0,!1,void 0,this),!g&&!b&&(L?r("div",{class:"file-table-shell",children:[J,L.rows.length>ym&&r("div",{class:"file-node-notice",children:["Showing ",ym," of ",L.rows.length," rows"]},void 0,!0,void 0,this),r("div",{class:"file-table-wrap",children:r("table",{class:"file-table",children:[r("thead",{children:r("tr",{children:L.header.map((X,V)=>r("th",{children:X},V,!1,void 0,this))},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("tbody",{children:L.rows.slice(0,ym).map((X,V)=>r("tr",{children:X.map((ee,he)=>r("td",{children:ee},he,!1,void 0,this))},V,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):r(be,{children:[J,r("pre",{style:{margin:0,lineHeight:"1.55",tabSize:2},children:I.map((X,V)=>r("div",{style:{display:"flex",minHeight:"1.55em"},children:[r("span",{style:{width:w,minWidth:w,textAlign:"right",color:"var(--c-dim)",paddingRight:"12px",paddingLeft:"10px",userSelect:"none",flexShrink:0,opacity:0.6},children:V+1},void 0,!1,void 0,this),r("code",{style:{color:"var(--c-text)",whiteSpace:"pre",paddingRight:"10px"},children:X||`
|
|
97
|
+
`},void 0,!1,void 0,this)]},V,!0,void 0,this))},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)}var _P=new Set(["title","__type","content","strictSize","arrangeLocked"]);function zu({node:e}){let t=e.data,o=(typeof t.content==="string"?t.content:"").split(/\r\n|\r|\n|\\n/).map((s)=>s.trimEnd()).filter((s)=>s.length>0),i=Object.entries(t).filter(([s])=>!_P.has(s));if(o.length===0&&i.length===0)return r("div",{style:{color:"var(--c-dim)",fontSize:"12px",fontStyle:"italic"},children:"No ledger data"},void 0,!1,void 0,this);return r("div",{style:{display:"flex",flexDirection:"column",gap:"4px",fontSize:"12px"},children:[o.length>0&&r("div",{style:{display:"flex",flexDirection:"column"},children:o.map((s,a)=>r("div",{style:{padding:"3px 0",borderBottom:a<o.length-1?"1px solid rgba(45,55,90,0.3)":"none",color:"var(--c-text)",fontFamily:"var(--font-code)",fontSize:"11px",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:s},a,!1,void 0,this))},void 0,!1,void 0,this),i.map(([s,a])=>r("div",{style:{display:"flex",justifyContent:"space-between",gap:"8px",padding:"3px 0",borderBottom:"1px solid rgba(45,55,90,0.3)"},children:[r("span",{style:{color:"var(--c-muted)",fontSize:"11px",flexShrink:0},children:s.replace(/([A-Z])/g," $1").replace(/^./,(l)=>l.toUpperCase())},void 0,!1,void 0,this),r("span",{style:{color:"var(--c-text)",fontFamily:"var(--font-code)",fontSize:"11px",textAlign:"right",wordBreak:"break-word"},children:typeof a==="object"?JSON.stringify(a):String(a??"—")},void 0,!1,void 0,this)]},s,!0,void 0,this))]},void 0,!0,void 0,this)}function xm(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Ki=xm();function $S(e){Ki=e}var yl={exec:()=>null};function yt(e,t=""){let n=typeof e==="string"?e:e.source,o={replace:(i,s)=>{let a=typeof s==="string"?s:s.source;return a=a.replace(qn.caret,"$1"),n=n.replace(i,a),o},getRegex:()=>new RegExp(n,t)};return o}var qn={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:(e)=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:(e)=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:(e)=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:(e)=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:(e)=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:(e)=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},CP=/^(?:[ \t]*(?:\n|$))+/,TP=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,IP=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,vl=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,EP=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,wm=/(?:[*+-]|\d{1,9}[.)])/,LS=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,OS=yt(LS).replace(/bull/g,wm).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),AP=yt(LS).replace(/bull/g,wm).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),km=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,RP=/^[^\n]+/,Sm=/(?!\s*\])(?:\\.|[^\[\]\\])+/,PP=yt(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Sm).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),NP=yt(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,wm).getRegex(),Fu="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",_m=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,MP=yt("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",_m).replace("tag",Fu).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),DS=yt(km).replace("hr",vl).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Fu).getRegex(),zP=yt(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",DS).getRegex(),Cm={blockquote:zP,code:TP,def:PP,fences:IP,heading:EP,hr:vl,html:MP,lheading:OS,list:NP,newline:CP,paragraph:DS,table:yl,text:RP},RS=yt("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",vl).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Fu).getRegex(),$P={...Cm,lheading:AP,table:RS,paragraph:yt(km).replace("hr",vl).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",RS).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Fu).getRegex()},LP={...Cm,html:yt(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",_m).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:yl,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:yt(km).replace("hr",vl).replace("heading",` *#{1,6} *[^
|
|
98
|
+
]`).replace("lheading",OS).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},OP=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,DP=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,BS=/^( {2,}|\\)\n(?!\s*$)/,BP=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Hu=/[\p{P}\p{S}]/u,Tm=/[\s\p{P}\p{S}]/u,FS=/[^\s\p{P}\p{S}]/u,FP=yt(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Tm).getRegex(),HS=/(?!~)[\p{P}\p{S}]/u,HP=/(?!~)[\s\p{P}\p{S}]/u,UP=/(?:[^\s\p{P}\p{S}]|~)/u,jP=/\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g,US=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,ZP=yt(US,"u").replace(/punct/g,Hu).getRegex(),WP=yt(US,"u").replace(/punct/g,HS).getRegex(),jS="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",qP=yt(jS,"gu").replace(/notPunctSpace/g,FS).replace(/punctSpace/g,Tm).replace(/punct/g,Hu).getRegex(),GP=yt(jS,"gu").replace(/notPunctSpace/g,UP).replace(/punctSpace/g,HP).replace(/punct/g,HS).getRegex(),KP=yt("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,FS).replace(/punctSpace/g,Tm).replace(/punct/g,Hu).getRegex(),VP=yt(/\\(punct)/,"gu").replace(/punct/g,Hu).getRegex(),XP=yt(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),JP=yt(_m).replace("(?:-->|$)","-->").getRegex(),YP=yt("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",JP).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Ou=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,QP=yt(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",Ou).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ZS=yt(/^!?\[(label)\]\[(ref)\]/).replace("label",Ou).replace("ref",Sm).getRegex(),WS=yt(/^!?\[(ref)\](?:\[\])?/).replace("ref",Sm).getRegex(),e1=yt("reflink|nolink(?!\\()","g").replace("reflink",ZS).replace("nolink",WS).getRegex(),Im={_backpedal:yl,anyPunctuation:VP,autolink:XP,blockSkip:jP,br:BS,code:DP,del:yl,emStrongLDelim:ZP,emStrongRDelimAst:qP,emStrongRDelimUnd:KP,escape:OP,link:QP,nolink:WS,punctuation:FP,reflink:ZS,reflinkSearch:e1,tag:YP,text:BP,url:yl},t1={...Im,link:yt(/^!?\[(label)\]\((.*?)\)/).replace("label",Ou).getRegex(),reflink:yt(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ou).getRegex()},bm={...Im,emStrongRDelimAst:GP,emStrongLDelim:WP,url:yt(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},n1={...bm,br:yt(BS).replace("{2,}","*").getRegex(),text:yt(bm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},$u={normal:Cm,gfm:$P,pedantic:LP},hl={normal:Im,gfm:bm,breaks:n1,pedantic:t1},o1={"&":"&","<":"<",">":">",'"':""","'":"'"},PS=(e)=>o1[e];function Yo(e,t){if(t){if(qn.escapeTest.test(e))return e.replace(qn.escapeReplace,PS)}else if(qn.escapeTestNoEncode.test(e))return e.replace(qn.escapeReplaceNoEncode,PS);return e}function NS(e){try{e=encodeURI(e).replace(qn.percentDecode,"%")}catch{return null}return e}function MS(e,t){let n=e.replace(qn.findPipe,(s,a,l)=>{let c=!1,u=a;while(--u>=0&&l[u]==="\\")c=!c;if(c)return"|";else return" |"}),o=n.split(qn.splitPipe),i=0;if(!o[0].trim())o.shift();if(o.length>0&&!o.at(-1)?.trim())o.pop();if(t)if(o.length>t)o.splice(t);else while(o.length<t)o.push("");for(;i<o.length;i++)o[i]=o[i].trim().replace(qn.slashPipe,"|");return o}function gl(e,t,n){let o=e.length;if(o===0)return"";let i=0;while(i<o){let s=e.charAt(o-i-1);if(s===t&&!n)i++;else if(s!==t&&n)i++;else break}return e.slice(0,o-i)}function r1(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let o=0;o<e.length;o++)if(e[o]==="\\")o++;else if(e[o]===t[0])n++;else if(e[o]===t[1]){if(n--,n<0)return o}if(n>0)return-2;return-1}function zS(e,t,n,o,i){let s=t.href,a=t.title||null,l=e[1].replace(i.other.outputLinkReplace,"$1");o.state.inLink=!0;let c={type:e[0].charAt(0)==="!"?"image":"link",raw:n,href:s,title:a,text:l,tokens:o.inlineTokens(l)};return o.state.inLink=!1,c}function i1(e,t,n){let o=e.match(n.other.indentCodeCompensation);if(o===null)return t;let i=o[1];return t.split(`
|
|
99
|
+
`).map((s)=>{let a=s.match(n.other.beginningSpace);if(a===null)return s;let[l]=a;if(l.length>=i.length)return s.slice(i.length);return s}).join(`
|
|
100
|
+
`)}var Du=class{options;rules;lexer;constructor(e){this.options=e||Ki}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:!this.options.pedantic?gl(n,`
|
|
101
|
+
`):n}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],o=i1(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:o}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let o=gl(n,"#");if(this.options.pedantic)n=o.trim();else if(!o||this.rules.other.endingSpaceChar.test(o))n=o.trim()}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:gl(t[0],`
|
|
102
|
+
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=gl(t[0],`
|
|
103
|
+
`).split(`
|
|
104
|
+
`),o="",i="",s=[];while(n.length>0){let a=!1,l=[],c;for(c=0;c<n.length;c++)if(this.rules.other.blockquoteStart.test(n[c]))l.push(n[c]),a=!0;else if(!a)l.push(n[c]);else break;n=n.slice(c);let u=l.join(`
|
|
105
|
+
`),d=u.replace(this.rules.other.blockquoteSetextReplace,`
|
|
106
|
+
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");o=o?`${o}
|
|
107
|
+
${u}`:u,i=i?`${i}
|
|
108
|
+
${d}`:d;let p=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(d,s,!0),this.lexer.state.top=p,n.length===0)break;let f=s.at(-1);if(f?.type==="code")break;else if(f?.type==="blockquote"){let m=f,h=m.raw+`
|
|
109
|
+
`+n.join(`
|
|
110
|
+
`),g=this.blockquote(h);s[s.length-1]=g,o=o.substring(0,o.length-m.raw.length)+g.raw,i=i.substring(0,i.length-m.text.length)+g.text;break}else if(f?.type==="list"){let m=f,h=m.raw+`
|
|
111
|
+
`+n.join(`
|
|
112
|
+
`),g=this.list(h);s[s.length-1]=g,o=o.substring(0,o.length-f.raw.length)+g.raw,i=i.substring(0,i.length-m.raw.length)+g.raw,n=h.substring(s.at(-1).raw.length).split(`
|
|
113
|
+
`);continue}}return{type:"blockquote",raw:o,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),o=n.length>1,i={type:"list",raw:"",ordered:o,start:o?+n.slice(0,-1):"",loose:!1,items:[]};if(n=o?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic)n=o?n:"[*+-]";let s=this.rules.other.listItemRegex(n),a=!1;while(e){let c=!1,u="",d="";if(!(t=s.exec(e)))break;if(this.rules.block.hr.test(e))break;u=t[0],e=e.substring(u.length);let p=t[2].split(`
|
|
114
|
+
`,1)[0].replace(this.rules.other.listReplaceTabs,(b)=>" ".repeat(3*b.length)),f=e.split(`
|
|
115
|
+
`,1)[0],m=!p.trim(),h=0;if(this.options.pedantic)h=2,d=p.trimStart();else if(m)h=t[1].length+1;else h=t[2].search(this.rules.other.nonSpaceChar),h=h>4?1:h,d=p.slice(h),h+=t[1].length;if(m&&this.rules.other.blankLine.test(f))u+=f+`
|
|
116
|
+
`,e=e.substring(f.length+1),c=!0;if(!c){let b=this.rules.other.nextBulletRegex(h),x=this.rules.other.hrRegex(h),C=this.rules.other.fencesBeginRegex(h),v=this.rules.other.headingBeginRegex(h),k=this.rules.other.htmlBeginRegex(h);while(e){let _=e.split(`
|
|
117
|
+
`,1)[0],I;if(f=_,this.options.pedantic)f=f.replace(this.rules.other.listReplaceNesting," "),I=f;else I=f.replace(this.rules.other.tabCharGlobal," ");if(C.test(f))break;if(v.test(f))break;if(k.test(f))break;if(b.test(f))break;if(x.test(f))break;if(I.search(this.rules.other.nonSpaceChar)>=h||!f.trim())d+=`
|
|
118
|
+
`+I.slice(h);else{if(m)break;if(p.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4)break;if(C.test(p))break;if(v.test(p))break;if(x.test(p))break;d+=`
|
|
119
|
+
`+f}if(!m&&!f.trim())m=!0;u+=_+`
|
|
120
|
+
`,e=e.substring(_.length+1),p=I.slice(h)}}if(!i.loose){if(a)i.loose=!0;else if(this.rules.other.doubleBlankLine.test(u))a=!0}let g=null,y;if(this.options.gfm){if(g=this.rules.other.listIsTask.exec(d),g)y=g[0]!=="[ ] ",d=d.replace(this.rules.other.listReplaceTask,"")}i.items.push({type:"list_item",raw:u,task:!!g,checked:y,loose:!1,text:d,tokens:[]}),i.raw+=u}let l=i.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let c=0;c<i.items.length;c++)if(this.lexer.state.top=!1,i.items[c].tokens=this.lexer.blockTokens(i.items[c].text,[]),!i.loose){let u=i.items[c].tokens.filter((p)=>p.type==="space"),d=u.length>0&&u.some((p)=>this.rules.other.anyLine.test(p.raw));i.loose=d}if(i.loose)for(let c=0;c<i.items.length;c++)i.items[c].loose=!0;return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:"html",block:!0,raw:t[0],pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),o=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:t[0],href:o,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t)return;if(!this.rules.other.tableDelimiter.test(t[2]))return;let n=MS(t[1]),o=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
|
|
121
|
+
`):[],s={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length!==o.length)return;for(let a of o)if(this.rules.other.tableAlignRight.test(a))s.align.push("right");else if(this.rules.other.tableAlignCenter.test(a))s.align.push("center");else if(this.rules.other.tableAlignLeft.test(a))s.align.push("left");else s.align.push(null);for(let a=0;a<n.length;a++)s.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:s.align[a]});for(let a of i)s.rows.push(MS(a,s.header.length).map((l,c)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:s.align[c]})));return s}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`
|
|
122
|
+
`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t){if(!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0]))this.lexer.state.inLink=!0;else if(this.lexer.state.inLink&&this.rules.other.endATag.test(t[0]))this.lexer.state.inLink=!1;if(!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0]))this.lexer.state.inRawBlock=!0;else if(this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0]))this.lexer.state.inRawBlock=!1;return{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=gl(n.slice(0,-1),"\\");if((n.length-s.length)%2===0)return}else{let s=r1(t[2],"()");if(s===-2)return;if(s>-1){let l=(t[0].indexOf("!")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,l).trim(),t[3]=""}}let o=t[2],i="";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(o);if(s)o=s[1],i=s[3]}else i=t[3]?t[3].slice(1,-1):"";if(o=o.trim(),this.rules.other.startAngleBracket.test(o))if(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n))o=o.slice(1);else o=o.slice(1,-1);return zS(t,{href:o?o.replace(this.rules.inline.anyPunctuation,"$1"):o,title:i?i.replace(this.rules.inline.anyPunctuation,"$1"):i},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let o=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=t[o.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:"text",raw:s,text:s}}return zS(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let o=this.rules.inline.emStrongLDelim.exec(e);if(!o)return;if(o[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(o[1]||o[2])||!n||this.rules.inline.punctuation.exec(n)){let s=[...o[0]].length-1,a,l,c=s,u=0,d=o[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;d.lastIndex=0,t=t.slice(-1*e.length+s);while((o=d.exec(t))!=null){if(a=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!a)continue;if(l=[...a].length,o[3]||o[4]){c+=l;continue}else if(o[5]||o[6]){if(s%3&&!((s+l)%3)){u+=l;continue}}if(c-=l,c>0)continue;l=Math.min(l,l+c+u);let p=[...o[0]][0].length,f=e.slice(0,s+o.index+p+l);if(Math.min(s,l)%2){let h=f.slice(1,-1);return{type:"em",raw:f,text:h,tokens:this.lexer.inlineTokens(h)}}let m=f.slice(2,-2);return{type:"strong",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),o=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);if(o&&i)n=n.substring(1,n.length-1);return{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,o;if(t[2]==="@")n=t[1],o="mailto:"+n;else n=t[1],o=n;return{type:"link",raw:t[0],text:n,href:o,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,o;if(t[2]==="@")n=t[0],o="mailto:"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(i!==t[0]);if(n=t[0],t[1]==="www.")o="http://"+t[0];else o=t[0]}return{type:"link",raw:t[0],text:n,href:o,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:n}}}},Ir=class e{tokens;options;state;tokenizer;inlineQueue;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||Ki,this.options.tokenizer=this.options.tokenizer||new Du,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let n={other:qn,block:$u.normal,inline:hl.normal};if(this.options.pedantic)n.block=$u.pedantic,n.inline=hl.pedantic;else if(this.options.gfm)if(n.block=$u.gfm,this.options.breaks)n.inline=hl.breaks;else n.inline=hl.gfm;this.tokenizer.rules=n}static get rules(){return{block:$u,inline:hl}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(t){t=t.replace(qn.carriageReturn,`
|
|
123
|
+
`),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let o=this.inlineQueue[n];this.inlineTokens(o.src,o.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],o=!1){if(this.options.pedantic)t=t.replace(qn.tabCharGlobal," ").replace(qn.spaceLine,"");while(t){let i;if(this.options.extensions?.block?.some((a)=>{if(i=a.call({lexer:this},t,n))return t=t.substring(i.raw.length),n.push(i),!0;return!1}))continue;if(i=this.tokenizer.space(t)){t=t.substring(i.raw.length);let a=n.at(-1);if(i.raw.length===1&&a!==void 0)a.raw+=`
|
|
124
|
+
`;else n.push(i);continue}if(i=this.tokenizer.code(t)){t=t.substring(i.raw.length);let a=n.at(-1);if(a?.type==="paragraph"||a?.type==="text")a.raw+=`
|
|
125
|
+
`+i.raw,a.text+=`
|
|
126
|
+
`+i.text,this.inlineQueue.at(-1).src=a.text;else n.push(i);continue}if(i=this.tokenizer.fences(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.heading(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.hr(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.blockquote(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.list(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.html(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.def(t)){t=t.substring(i.raw.length);let a=n.at(-1);if(a?.type==="paragraph"||a?.type==="text")a.raw+=`
|
|
127
|
+
`+i.raw,a.text+=`
|
|
128
|
+
`+i.raw,this.inlineQueue.at(-1).src=a.text;else if(!this.tokens.links[i.tag])this.tokens.links[i.tag]={href:i.href,title:i.title};continue}if(i=this.tokenizer.table(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.lheading(t)){t=t.substring(i.raw.length),n.push(i);continue}let s=t;if(this.options.extensions?.startBlock){let a=1/0,l=t.slice(1),c;if(this.options.extensions.startBlock.forEach((u)=>{if(c=u.call({lexer:this},l),typeof c==="number"&&c>=0)a=Math.min(a,c)}),a<1/0&&a>=0)s=t.substring(0,a+1)}if(this.state.top&&(i=this.tokenizer.paragraph(s))){let a=n.at(-1);if(o&&a?.type==="paragraph")a.raw+=`
|
|
129
|
+
`+i.raw,a.text+=`
|
|
130
|
+
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text;else n.push(i);o=s.length!==t.length,t=t.substring(i.raw.length);continue}if(i=this.tokenizer.text(t)){t=t.substring(i.raw.length);let a=n.at(-1);if(a?.type==="text")a.raw+=`
|
|
131
|
+
`+i.raw,a.text+=`
|
|
132
|
+
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text;else n.push(i);continue}if(t){let a="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(a);break}else throw Error(a)}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){let o=t,i=null;if(this.tokens.links){let l=Object.keys(this.tokens.links);if(l.length>0){while((i=this.tokenizer.rules.inline.reflinkSearch.exec(o))!=null)if(l.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1)))o=o.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+o.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex)}}while((i=this.tokenizer.rules.inline.anyPunctuation.exec(o))!=null)o=o.slice(0,i.index)+"++"+o.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);while((i=this.tokenizer.rules.inline.blockSkip.exec(o))!=null)o=o.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+o.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);let s=!1,a="";while(t){if(!s)a="";s=!1;let l;if(this.options.extensions?.inline?.some((u)=>{if(l=u.call({lexer:this},t,n))return t=t.substring(l.raw.length),n.push(l),!0;return!1}))continue;if(l=this.tokenizer.escape(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.tag(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.link(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(l.raw.length);let u=n.at(-1);if(l.type==="text"&&u?.type==="text")u.raw+=l.raw,u.text+=l.text;else n.push(l);continue}if(l=this.tokenizer.emStrong(t,o,a)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.codespan(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.br(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.del(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.autolink(t)){t=t.substring(l.raw.length),n.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(t))){t=t.substring(l.raw.length),n.push(l);continue}let c=t;if(this.options.extensions?.startInline){let u=1/0,d=t.slice(1),p;if(this.options.extensions.startInline.forEach((f)=>{if(p=f.call({lexer:this},d),typeof p==="number"&&p>=0)u=Math.min(u,p)}),u<1/0&&u>=0)c=t.substring(0,u+1)}if(l=this.tokenizer.inlineText(c)){if(t=t.substring(l.raw.length),l.raw.slice(-1)!=="_")a=l.raw.slice(-1);s=!0;let u=n.at(-1);if(u?.type==="text")u.raw+=l.raw,u.text+=l.text;else n.push(l);continue}if(t){let u="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw Error(u)}}return n}},Bu=class{options;parser;constructor(e){this.options=e||Ki}space(e){return""}code({text:e,lang:t,escaped:n}){let o=(t||"").match(qn.notSpaceStart)?.[0],i=e.replace(qn.endingNewline,"")+`
|
|
133
|
+
`;if(!o)return"<pre><code>"+(n?i:Yo(i,!0))+`</code></pre>
|
|
134
|
+
`;return'<pre><code class="language-'+Yo(o)+'">'+(n?i:Yo(i,!0))+`</code></pre>
|
|
135
|
+
`}blockquote({tokens:e}){return`<blockquote>
|
|
136
|
+
${this.parser.parse(e)}</blockquote>
|
|
137
|
+
`}html({text:e}){return e}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
|
|
138
|
+
`}hr(e){return`<hr>
|
|
139
|
+
`}list(e){let{ordered:t,start:n}=e,o="";for(let a=0;a<e.items.length;a++){let l=e.items[a];o+=this.listitem(l)}let i=t?"ol":"ul",s=t&&n!==1?' start="'+n+'"':"";return"<"+i+s+`>
|
|
140
|
+
`+o+"</"+i+`>
|
|
141
|
+
`}listitem(e){let t="";if(e.task){let n=this.checkbox({checked:!!e.checked});if(e.loose)if(e.tokens[0]?.type==="paragraph"){if(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type==="text")e.tokens[0].tokens[0].text=n+" "+Yo(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0}else e.tokens.unshift({type:"text",raw:n+" ",text:n+" ",escaped:!0});else t+=n+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>
|
|
142
|
+
`}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox">'}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>
|
|
143
|
+
`}table(e){let t="",n="";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let o="";for(let i=0;i<e.rows.length;i++){let s=e.rows[i];n="";for(let a=0;a<s.length;a++)n+=this.tablecell(s[a]);o+=this.tablerow({text:n})}if(o)o=`<tbody>${o}</tbody>`;return`<table>
|
|
144
|
+
<thead>
|
|
145
|
+
`+t+`</thead>
|
|
146
|
+
`+o+`</table>
|
|
147
|
+
`}tablerow({text:e}){return`<tr>
|
|
148
|
+
${e}</tr>
|
|
149
|
+
`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
|
|
150
|
+
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Yo(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let o=this.parser.parseInline(n),i=NS(e);if(i===null)return o;e=i;let s='<a href="'+e+'"';if(t)s+=' title="'+Yo(t)+'"';return s+=">"+o+"</a>",s}image({href:e,title:t,text:n,tokens:o}){if(o)n=this.parser.parseInline(o,this.parser.textRenderer);let i=NS(e);if(i===null)return Yo(n);e=i;let s=`<img src="${e}" alt="${n}"`;if(t)s+=` title="${Yo(t)}"`;return s+=">",s}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):("escaped"in e)&&e.escaped?e.text:Yo(e.text)}},Em=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}},Er=class e{options;renderer;textRenderer;constructor(t){this.options=t||Ki,this.options.renderer=this.options.renderer||new Bu,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Em}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(t,n=!0){let o="";for(let i=0;i<t.length;i++){let s=t[i];if(this.options.extensions?.renderers?.[s.type]){let l=s,c=this.options.extensions.renderers[l.type].call({parser:this},l);if(c!==!1||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(l.type)){o+=c||"";continue}}let a=s;switch(a.type){case"space":{o+=this.renderer.space(a);continue}case"hr":{o+=this.renderer.hr(a);continue}case"heading":{o+=this.renderer.heading(a);continue}case"code":{o+=this.renderer.code(a);continue}case"table":{o+=this.renderer.table(a);continue}case"blockquote":{o+=this.renderer.blockquote(a);continue}case"list":{o+=this.renderer.list(a);continue}case"html":{o+=this.renderer.html(a);continue}case"paragraph":{o+=this.renderer.paragraph(a);continue}case"text":{let l=a,c=this.renderer.text(l);while(i+1<t.length&&t[i+1].type==="text")l=t[++i],c+=`
|
|
151
|
+
`+this.renderer.text(l);if(n)o+=this.renderer.paragraph({type:"paragraph",raw:c,text:c,tokens:[{type:"text",raw:c,text:c,escaped:!0}]});else o+=c;continue}default:{let l='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(l),"";else throw Error(l)}}}return o}parseInline(t,n=this.renderer){let o="";for(let i=0;i<t.length;i++){let s=t[i];if(this.options.extensions?.renderers?.[s.type]){let l=this.options.extensions.renderers[s.type].call({parser:this},s);if(l!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(s.type)){o+=l||"";continue}}let a=s;switch(a.type){case"escape":{o+=n.text(a);break}case"html":{o+=n.html(a);break}case"link":{o+=n.link(a);break}case"image":{o+=n.image(a);break}case"strong":{o+=n.strong(a);break}case"em":{o+=n.em(a);break}case"codespan":{o+=n.codespan(a);break}case"br":{o+=n.br(a);break}case"del":{o+=n.del(a);break}case"text":{o+=n.text(a);break}default:{let l='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(l),"";else throw Error(l)}}}return o}},Lu=class{options;block;constructor(e){this.options=e||Ki}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}provideLexer(){return this.block?Ir.lex:Ir.lexInline}provideParser(){return this.block?Er.parse:Er.parseInline}},Am=class{defaults=xm();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Er;Renderer=Bu;TextRenderer=Em;Lexer=Ir;Tokenizer=Du;Hooks=Lu;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let o of e)switch(n=n.concat(t.call(this,o)),o.type){case"table":{let i=o;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let a of s)n=n.concat(this.walkTokens(a.tokens,t));break}case"list":{let i=o;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=o;if(this.defaults.extensions?.childTokens?.[i.type])this.defaults.extensions.childTokens[i.type].forEach((s)=>{let a=i[s].flat(1/0);n=n.concat(this.walkTokens(a,t))});else if(i.tokens)n=n.concat(this.walkTokens(i.tokens,t))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach((n)=>{let o={...n};if(o.async=this.defaults.async||o.async||!1,n.extensions)n.extensions.forEach((i)=>{if(!i.name)throw Error("extension name required");if("renderer"in i){let s=t.renderers[i.name];if(s)t.renderers[i.name]=function(...a){let l=i.renderer.apply(this,a);if(l===!1)l=s.apply(this,a);return l};else t.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw Error("extension level must be 'block' or 'inline'");let s=t[i.level];if(s)s.unshift(i.tokenizer);else t[i.level]=[i.tokenizer];if(i.start){if(i.level==="block")if(t.startBlock)t.startBlock.push(i.start);else t.startBlock=[i.start];else if(i.level==="inline")if(t.startInline)t.startInline.push(i.start);else t.startInline=[i.start]}}if("childTokens"in i&&i.childTokens)t.childTokens[i.name]=i.childTokens}),o.extensions=t;if(n.renderer){let i=this.defaults.renderer||new Bu(this.defaults);for(let s in n.renderer){if(!(s in i))throw Error(`renderer '${s}' does not exist`);if(["options","parser"].includes(s))continue;let a=s,l=n.renderer[a],c=i[a];i[a]=(...u)=>{let d=l.apply(i,u);if(d===!1)d=c.apply(i,u);return d||""}}o.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new Du(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw Error(`tokenizer '${s}' does not exist`);if(["options","rules","lexer"].includes(s))continue;let a=s,l=n.tokenizer[a],c=i[a];i[a]=(...u)=>{let d=l.apply(i,u);if(d===!1)d=c.apply(i,u);return d}}o.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new Lu;for(let s in n.hooks){if(!(s in i))throw Error(`hook '${s}' does not exist`);if(["options","block"].includes(s))continue;let a=s,l=n.hooks[a],c=i[a];if(Lu.passThroughHooks.has(s))i[a]=(u)=>{if(this.defaults.async)return Promise.resolve(l.call(i,u)).then((p)=>c.call(i,p));let d=l.call(i,u);return c.call(i,d)};else i[a]=(...u)=>{let d=l.apply(i,u);if(d===!1)d=c.apply(i,u);return d}}o.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;o.walkTokens=function(a){let l=[];if(l.push(s.call(this,a)),i)l=l.concat(i.call(this,a));return l}}this.defaults={...this.defaults,...o}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return Ir.lex(e,t??this.defaults)}parser(e,t){return Er.parse(e,t??this.defaults)}parseMarkdown(e){return(n,o)=>{let i={...o},s={...this.defaults,...i},a=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return a(Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof n>"u"||n===null)return a(Error("marked(): input parameter is undefined or null"));if(typeof n!=="string")return a(Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(s.hooks)s.hooks.options=s,s.hooks.block=e;let l=s.hooks?s.hooks.provideLexer():e?Ir.lex:Ir.lexInline,c=s.hooks?s.hooks.provideParser():e?Er.parse:Er.parseInline;if(s.async)return Promise.resolve(s.hooks?s.hooks.preprocess(n):n).then((u)=>l(u,s)).then((u)=>s.hooks?s.hooks.processAllTokens(u):u).then((u)=>s.walkTokens?Promise.all(this.walkTokens(u,s.walkTokens)).then(()=>u):u).then((u)=>c(u,s)).then((u)=>s.hooks?s.hooks.postprocess(u):u).catch(a);try{if(s.hooks)n=s.hooks.preprocess(n);let u=l(n,s);if(s.hooks)u=s.hooks.processAllTokens(u);if(s.walkTokens)this.walkTokens(u,s.walkTokens);let d=c(u,s);if(s.hooks)d=s.hooks.postprocess(d);return d}catch(u){return a(u)}}}onError(e,t){return(n)=>{if(n.message+=`
|
|
152
|
+
Please report this to https://github.com/markedjs/marked.`,e){let o="<p>An error occurred:</p><pre>"+Yo(n.message+"",!0)+"</pre>";if(t)return Promise.resolve(o);return o}if(t)return Promise.reject(n);throw n}}},Gi=new Am;function It(e,t){return Gi.parse(e,t)}It.options=It.setOptions=function(e){return Gi.setOptions(e),It.defaults=Gi.defaults,$S(It.defaults),It};It.getDefaults=xm;It.defaults=Ki;It.use=function(...e){return Gi.use(...e),It.defaults=Gi.defaults,$S(It.defaults),It};It.walkTokens=function(e,t){return Gi.walkTokens(e,t)};It.parseInline=Gi.parseInline;It.Parser=Er;It.parser=Er.parse;It.Renderer=Bu;It.TextRenderer=Em;It.Lexer=Ir;It.lexer=Ir.lex;It.Tokenizer=Du;It.Hooks=Lu;It.parse=It;var{options:yU,setOptions:vU,use:bU,walkTokens:xU,parseInline:wU}=It;var kU=Er.parse,SU=Ir.lex;var bl=typeof navigator<"u"&&/Mac|iPod|iPhone|iPad/.test(navigator.platform),qS=bl?"⌘":"Ctrl";function Bt(e){return bl?`${qS}${e}`:`${qS}+${e}`}function Uu(e,t){let{selectionStart:n,selectionEnd:o,value:i}=e,s=i.slice(n,o),a=i.slice(Math.max(0,n-t.length),n),l=i.slice(o,o+t.length);if(a===t&&l===t){let c=i.slice(0,n-t.length)+s+i.slice(o+t.length);Qo(e,c,n-t.length,o-t.length);return}if(s){let c=i.slice(0,n)+t+s+t+i.slice(o);Qo(e,c,n+t.length,o+t.length)}else{let c=i.slice(0,n)+t+t+i.slice(o);Qo(e,c,n+t.length,n+t.length)}}function xl(e,t){let{selectionStart:n,selectionEnd:o,value:i}=e,s=i.lastIndexOf(`
|
|
153
|
+
`,n-1)+1,a=i.indexOf(`
|
|
154
|
+
`,o),l=a===-1?i.length:a,c=i.slice(s,l);if(c.startsWith(t)){let d=i.slice(0,s)+c.slice(t.length)+i.slice(l);Qo(e,d,Math.max(s,n-t.length),Math.max(s,o-t.length));return}let u=i.slice(0,s)+t+i.slice(s);Qo(e,u,n+t.length,o+t.length)}function s1(e){let{selectionStart:t,selectionEnd:n,value:o}=e,i=o.slice(t,n);if(i){let s=o.slice(0,t)+`[${i}](url)`+o.slice(n),a=t+i.length+3;Qo(e,s,a,a+3)}else{let s=o.slice(0,t)+"[text](url)"+o.slice(n);Qo(e,s,t+1,t+5)}}function a1(e){let{selectionStart:t,selectionEnd:n,value:o}=e,i=o.slice(t,n),s="```";if(i){let a=o.slice(0,t)+`\`\`\`
|
|
155
|
+
${i}
|
|
156
|
+
\`\`\``+o.slice(n);Qo(e,a,t+3+1,t+3+1+i.length)}else{let a=o.slice(0,t)+"```\n\n```"+o.slice(n);Qo(e,a,t+3+1,t+3+1)}}function GS(e,t){let{selectionStart:n,selectionEnd:o,value:i}=e,s=i.lastIndexOf(`
|
|
157
|
+
`,n-1)+1,a=i.indexOf(`
|
|
158
|
+
`,o),l=a===-1?i.length:a,c=i.slice(s,l).split(`
|
|
159
|
+
`),u=n,d=o,p=c.map((m,h)=>{if(t){if(m.startsWith(" ")){if(h===0)u=Math.max(s,u-2);return d-=2,m.slice(2)}else if(m.startsWith("\t")){if(h===0)u=Math.max(s,u-1);return d-=1,m.slice(1)}return m}else{if(h===0)u+=2;return d+=2," "+m}}),f=i.slice(0,s)+p.join(`
|
|
160
|
+
`)+i.slice(l);Qo(e,f,u,d)}function Qo(e,t,n,o){let i=Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype,"value")?.set;if(i)i.call(e,t);else e.value=t;e.selectionStart=n,e.selectionEnd=o,e.dispatchEvent(new Event("input",{bubbles:!0}))}var ju=[{key:"bold",label:"Bold",icon:"B",shortcut:"b",action:(e)=>Uu(e,"**")},{key:"italic",label:"Italic",icon:"I",shortcut:"i",action:(e)=>Uu(e,"_")},{key:"strike",label:"Strikethrough",icon:"S",shortcut:"u",action:(e)=>Uu(e,"~~")},{key:"code",label:"Inline code",icon:"`",shortcut:"e",action:(e)=>Uu(e,"`")},{key:"link",label:"Link",icon:"\uD83D\uDD17",shortcut:"k",action:s1},{key:"h1",label:"Heading 1",icon:"H1",action:(e)=>xl(e,"# ")},{key:"h2",label:"Heading 2",icon:"H2",action:(e)=>xl(e,"## ")},{key:"quote",label:"Blockquote",icon:"❝",action:(e)=>xl(e,"> ")},{key:"ul",label:"Bullet list",icon:"•",action:(e)=>xl(e,"- ")},{key:"ol",label:"Numbered list",icon:"1.",action:(e)=>xl(e,"1. ")},{key:"codeblock",label:"Code block",icon:"{ }",action:a1}];function KS(e,t){if(!(e.metaKey||e.ctrlKey))return!1;let n=ju.find((o)=>o.shortcut===e.key);if(!n)return!1;return e.preventDefault(),n.action(t),!0}function VS(e){if(e.selectionStart===e.selectionEnd)return null;let t=document.createElement("div"),n=getComputedStyle(e),o=["fontFamily","fontSize","fontWeight","lineHeight","letterSpacing","wordSpacing","textIndent","whiteSpace","wordWrap","overflowWrap","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","boxSizing","width"];for(let d of o)t.style[d]=n[d];t.style.position="absolute",t.style.visibility="hidden",t.style.overflow="hidden",t.style.height="auto",t.style.top="0",t.style.left="0";let i=e.value,s=document.createTextNode(i.slice(0,e.selectionStart)),a=document.createElement("span");a.textContent=i.slice(e.selectionStart,e.selectionEnd)||".",t.appendChild(s),t.appendChild(a),t.appendChild(document.createTextNode(i.slice(e.selectionEnd))),document.body.appendChild(t);let l=a.getBoundingClientRect(),c=t.getBoundingClientRect(),u=e.getBoundingClientRect();return document.body.removeChild(t),{top:u.top+(l.top-c.top)-e.scrollTop,left:u.left+(l.left-c.left)-e.scrollLeft,width:l.width}}var l1=ju.filter((e)=>e.shortcut),c1=ju.filter((e)=>!e.shortcut);function Rm({textareaRef:e}){let[t,n]=E(!1),[o,i]=E({top:0,left:0}),s=D(null),a=D(null),l=oe(()=>{let u=e.current;if(!u||u.selectionStart===u.selectionEnd){n(!1);return}let d=VS(u);if(!d){n(!1);return}let p=380,f=Math.max(8,Math.min(d.left+d.width/2-p/2,window.innerWidth-p-8));i({top:d.top-40,left:f}),n(!0)},[e]);q(()=>{let u=e.current;if(!u)return;let d=()=>{if(a.current)clearTimeout(a.current);a.current=setTimeout(l,50)},p=()=>{a.current=setTimeout(()=>n(!1),200)},f=(m)=>{if(m.shiftKey||m.key.startsWith("Arrow"))d()};return u.addEventListener("select",d),u.addEventListener("mouseup",d),u.addEventListener("keyup",f),u.addEventListener("blur",p),()=>{if(u.removeEventListener("select",d),u.removeEventListener("mouseup",d),u.removeEventListener("keyup",f),u.removeEventListener("blur",p),a.current)clearTimeout(a.current)}},[e,l]);let c=oe((u)=>{let d=e.current;if(d)u.action(d),d.focus()},[e]);if(!t)return null;return r("div",{ref:s,class:"md-format-bar",style:{top:`${o.top}px`,left:`${o.left}px`},onMouseDown:(u)=>u.preventDefault(),children:[l1.map((u)=>r(_e,{label:u.label,shortcut:Bt(u.shortcut.toUpperCase()),children:r("button",{type:"button",class:`md-format-btn md-format-btn-${u.key}`,"aria-label":u.label,onClick:()=>c(u),children:u.icon},void 0,!1,void 0,this)},u.key,!1,void 0,this)),r("div",{class:"md-format-divider"},void 0,!1,void 0,this),c1.map((u)=>r(_e,{label:u.label,children:r("button",{type:"button",class:`md-format-btn md-format-btn-${u.key}`,"aria-label":u.label,onClick:()=>c(u),children:u.icon},void 0,!1,void 0,this)},u.key,!1,void 0,this))]},void 0,!0,void 0,this)}var q0=aE(d0(),1);function C1(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)if(Object.prototype.hasOwnProperty.call(n,o))e[o]=n[o]}return e}function Om(e,t){return Array(t+1).join(e)}function m0(e){return e.replace(/^\n*/,"")}function h0(e){var t=e.length;while(t>0&&e[t-1]===`
|
|
161
|
+
`)t--;return e.substring(0,t)}function g0(e){return h0(m0(e))}var T1=["ADDRESS","ARTICLE","ASIDE","AUDIO","BLOCKQUOTE","BODY","CANVAS","CENTER","DD","DIR","DIV","DL","DT","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","FRAMESET","H1","H2","H3","H4","H5","H6","HEADER","HGROUP","HR","HTML","ISINDEX","LI","MAIN","MENU","NAV","NOFRAMES","NOSCRIPT","OL","OUTPUT","P","PRE","SECTION","TABLE","TBODY","TD","TFOOT","TH","THEAD","TR","UL"];function Dm(e){return Bm(e,T1)}var y0=["AREA","BASE","BR","COL","COMMAND","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"];function v0(e){return Bm(e,y0)}function I1(e){return x0(e,y0)}var b0=["A","TABLE","THEAD","TBODY","TFOOT","TH","TD","IFRAME","SCRIPT","AUDIO","VIDEO"];function E1(e){return Bm(e,b0)}function A1(e){return x0(e,b0)}function Bm(e,t){return t.indexOf(e.nodeName)>=0}function x0(e,t){return e.getElementsByTagName&&t.some(function(n){return e.getElementsByTagName(n).length})}var R1=[[/\\/g,"\\\\"],[/\*/g,"\\*"],[/^-/g,"\\-"],[/^\+ /g,"\\+ "],[/^(=+)/g,"\\$1"],[/^(#{1,6}) /g,"\\$1 "],[/`/g,"\\`"],[/^~~~/g,"\\~~~"],[/\[/g,"\\["],[/\]/g,"\\]"],[/^>/g,"\\>"],[/_/g,"\\_"],[/^(\d+)\. /g,"$1\\. "]];function w0(e){return R1.reduce(function(t,n){return t.replace(n[0],n[1])},e)}var Bn={};Bn.paragraph={filter:"p",replacement:function(e){return`
|
|
107
162
|
|
|
108
163
|
`+e+`
|
|
109
164
|
|
|
110
|
-
`}};
|
|
111
|
-
`}};
|
|
165
|
+
`}};Bn.lineBreak={filter:"br",replacement:function(e,t,n){return n.br+`
|
|
166
|
+
`}};Bn.heading={filter:["h1","h2","h3","h4","h5","h6"],replacement:function(e,t,n){var o=Number(t.nodeName.charAt(1));if(n.headingStyle==="setext"&&o<3){var i=Om(o===1?"=":"-",e.length);return`
|
|
112
167
|
|
|
113
168
|
`+e+`
|
|
114
|
-
`+
|
|
169
|
+
`+i+`
|
|
115
170
|
|
|
116
171
|
`}else return`
|
|
117
172
|
|
|
118
|
-
`+
|
|
173
|
+
`+Om("#",o)+" "+e+`
|
|
119
174
|
|
|
120
|
-
`}};
|
|
175
|
+
`}};Bn.blockquote={filter:"blockquote",replacement:function(e){return e=g0(e).replace(/^/gm,"> "),`
|
|
121
176
|
|
|
122
177
|
`+e+`
|
|
123
178
|
|
|
124
|
-
`}};
|
|
179
|
+
`}};Bn.list={filter:["ul","ol"],replacement:function(e,t){var n=t.parentNode;if(n.nodeName==="LI"&&n.lastElementChild===t)return`
|
|
125
180
|
`+e;else return`
|
|
126
181
|
|
|
127
182
|
`+e+`
|
|
128
183
|
|
|
129
|
-
`}};
|
|
184
|
+
`}};Bn.listItem={filter:"li",replacement:function(e,t,n){var o=n.bulletListMarker+" ",i=t.parentNode;if(i.nodeName==="OL"){var s=i.getAttribute("start"),a=Array.prototype.indexOf.call(i.children,t);o=(s?Number(s)+a:a+1)+". "}var l=/\n$/.test(e);return e=g0(e)+(l?`
|
|
130
185
|
`:""),e=e.replace(/\n/gm,`
|
|
131
186
|
`+" ".repeat(o.length)),o+e+(t.nextSibling?`
|
|
132
|
-
`:"")}};
|
|
187
|
+
`:"")}};Bn.indentedCodeBlock={filter:function(e,t){return t.codeBlockStyle==="indented"&&e.nodeName==="PRE"&&e.firstChild&&e.firstChild.nodeName==="CODE"},replacement:function(e,t,n){return`
|
|
133
188
|
|
|
134
189
|
`+t.firstChild.textContent.replace(/\n/g,`
|
|
135
190
|
`)+`
|
|
136
191
|
|
|
137
|
-
`}};
|
|
192
|
+
`}};Bn.fencedCodeBlock={filter:function(e,t){return t.codeBlockStyle==="fenced"&&e.nodeName==="PRE"&&e.firstChild&&e.firstChild.nodeName==="CODE"},replacement:function(e,t,n){var o=t.firstChild.getAttribute("class")||"",i=(o.match(/language-(\S+)/)||[null,""])[1],s=t.firstChild.textContent,a=n.fence.charAt(0),l=3,c=new RegExp("^"+a+"{3,}","gm"),u;while(u=c.exec(s))if(u[0].length>=l)l=u[0].length+1;var d=Om(a,l);return`
|
|
138
193
|
|
|
139
|
-
`+
|
|
194
|
+
`+d+i+`
|
|
140
195
|
`+s.replace(/\n$/,"")+`
|
|
141
|
-
`+
|
|
196
|
+
`+d+`
|
|
142
197
|
|
|
143
|
-
`}};
|
|
198
|
+
`}};Bn.horizontalRule={filter:"hr",replacement:function(e,t,n){return`
|
|
144
199
|
|
|
145
200
|
`+n.hr+`
|
|
146
201
|
|
|
147
|
-
`}};
|
|
202
|
+
`}};Bn.inlineLink={filter:function(e,t){return t.linkStyle==="inlined"&&e.nodeName==="A"&&e.getAttribute("href")},replacement:function(e,t){var n=Fm(t.getAttribute("href")),o=Hm(Zu(t.getAttribute("title"))),i=o?' "'+o+'"':"";return"["+e+"]("+n+i+")"}};Bn.referenceLink={filter:function(e,t){return t.linkStyle==="referenced"&&e.nodeName==="A"&&e.getAttribute("href")},replacement:function(e,t,n){var o=Fm(t.getAttribute("href")),i=Zu(t.getAttribute("title"));if(i)i=' "'+Hm(i)+'"';var s,a;switch(n.linkReferenceStyle){case"collapsed":s="["+e+"][]",a="["+e+"]: "+o+i;break;case"shortcut":s="["+e+"]",a="["+e+"]: "+o+i;break;default:var l=this.references.length+1;s="["+e+"]["+l+"]",a="["+l+"]: "+o+i}return this.references.push(a),s},references:[],append:function(e){var t="";if(this.references.length)t=`
|
|
148
203
|
|
|
149
204
|
`+this.references.join(`
|
|
150
205
|
`)+`
|
|
151
206
|
|
|
152
|
-
`,this.references=[];return t}};
|
|
153
|
-
`):""}function
|
|
207
|
+
`,this.references=[];return t}};Bn.emphasis={filter:["em","i"],replacement:function(e,t,n){if(!e.trim())return"";return n.emDelimiter+e+n.emDelimiter}};Bn.strong={filter:["strong","b"],replacement:function(e,t,n){if(!e.trim())return"";return n.strongDelimiter+e+n.strongDelimiter}};Bn.code={filter:function(e){var t=e.previousSibling||e.nextSibling,n=e.parentNode.nodeName==="PRE"&&!t;return e.nodeName==="CODE"&&!n},replacement:function(e){if(!e)return"";e=e.replace(/\r?\n|\r/g," ");var t=/^`|^ .*?[^ ].* $|`$/.test(e)?" ":"",n="`",o=e.match(/`+/gm)||[];while(o.indexOf(n)!==-1)n=n+"`";return n+t+e+t+n}};Bn.image={filter:"img",replacement:function(e,t){var n=w0(Zu(t.getAttribute("alt"))),o=Fm(t.getAttribute("src")||""),i=Zu(t.getAttribute("title")),s=i?' "'+Hm(i)+'"':"";return o?"":""}};function Zu(e){return e?e.replace(/(\n+\s*)+/g,`
|
|
208
|
+
`):""}function Fm(e){var t=e.replace(/([<>()])/g,"\\$1");return t.indexOf(" ")>=0?"<"+t+">":t}function Hm(e){return e.replace(/"/g,"\\\"")}function k0(e){this.options=e,this._keep=[],this._remove=[],this.blankRule={replacement:e.blankReplacement},this.keepReplacement=e.keepReplacement,this.defaultRule={replacement:e.defaultReplacement},this.array=[];for(var t in e.rules)this.array.push(e.rules[t])}k0.prototype={add:function(e,t){this.array.unshift(t)},keep:function(e){this._keep.unshift({filter:e,replacement:this.keepReplacement})},remove:function(e){this._remove.unshift({filter:e,replacement:function(){return""}})},forNode:function(e){if(e.isBlank)return this.blankRule;var t;if(t=zm(this.array,e,this.options))return t;if(t=zm(this._keep,e,this.options))return t;if(t=zm(this._remove,e,this.options))return t;return this.defaultRule},forEach:function(e){for(var t=0;t<this.array.length;t++)e(this.array[t],t)}};function zm(e,t,n){for(var o=0;o<e.length;o++){var i=e[o];if(P1(i,t,n))return i}return}function P1(e,t,n){var o=e.filter;if(typeof o==="string"){if(o===t.nodeName.toLowerCase())return!0}else if(Array.isArray(o)){if(o.indexOf(t.nodeName.toLowerCase())>-1)return!0}else if(typeof o==="function"){if(o.call(e,t,n))return!0}else throw TypeError("`filter` needs to be a string, array, or function")}function N1(e){var{element:t,isBlock:n,isVoid:o}=e,i=e.isPre||function(p){return p.nodeName==="PRE"};if(!t.firstChild||i(t))return;var s=null,a=!1,l=null,c=p0(l,t,i);while(c!==t){if(c.nodeType===3||c.nodeType===4){var u=c.data.replace(/[ \r\n\t]+/g," ");if((!s||/ $/.test(s.data))&&!a&&u[0]===" ")u=u.substr(1);if(!u){c=$m(c);continue}c.data=u,s=c}else if(c.nodeType===1){if(n(c)||c.nodeName==="BR"){if(s)s.data=s.data.replace(/ $/,"");s=null,a=!1}else if(o(c)||i(c))s=null,a=!0;else if(s)a=!1}else{c=$m(c);continue}var d=p0(l,c,i);l=c,c=d}if(s){if(s.data=s.data.replace(/ $/,""),!s.data)$m(s)}}function $m(e){var t=e.nextSibling||e.parentNode;return e.parentNode.removeChild(e),t}function p0(e,t,n){if(e&&e.parentNode===t||n(t))return t.nextSibling||t.parentNode;return t.firstChild||t.nextSibling||t.parentNode}var Um=typeof window<"u"?window:{};function M1(){var e=Um.DOMParser,t=!1;try{if(new e().parseFromString("","text/html"))t=!0}catch(n){}return t}function z1(){var e=function(){};if($1())e.prototype.parseFromString=function(t){var n=new window.ActiveXObject("htmlfile");return n.designMode="on",n.open(),n.write(t),n.close(),n};else e.prototype.parseFromString=function(t){var n=document.implementation.createHTMLDocument("");return n.open(),n.write(t),n.close(),n};return e}function $1(){var e=!1;try{document.implementation.createHTMLDocument("").open()}catch(t){if(Um.ActiveXObject)e=!0}return e}var L1=M1()?Um.DOMParser:z1();function O1(e,t){var n;if(typeof e==="string"){var o=D1().parseFromString('<x-turndown id="turndown-root">'+e+"</x-turndown>","text/html");n=o.getElementById("turndown-root")}else n=e.cloneNode(!0);return N1({element:n,isBlock:Dm,isVoid:v0,isPre:t.preformattedCode?B1:null}),n}var Lm;function D1(){return Lm=Lm||new L1,Lm}function B1(e){return e.nodeName==="PRE"||e.nodeName==="CODE"}function F1(e,t){return e.isBlock=Dm(e),e.isCode=e.nodeName==="CODE"||e.parentNode.isCode,e.isBlank=H1(e),e.flankingWhitespace=U1(e,t),e}function H1(e){return!v0(e)&&!E1(e)&&/^\s*$/i.test(e.textContent)&&!I1(e)&&!A1(e)}function U1(e,t){if(e.isBlock||t.preformattedCode&&e.isCode)return{leading:"",trailing:""};var n=j1(e.textContent);if(n.leadingAscii&&f0("left",e,t))n.leading=n.leadingNonAscii;if(n.trailingAscii&&f0("right",e,t))n.trailing=n.trailingNonAscii;return{leading:n.leading,trailing:n.trailing}}function j1(e){var t=e.match(/^(([ \t\r\n]*)(\s*))(?:(?=\S)[\s\S]*\S)?((\s*?)([ \t\r\n]*))$/);return{leading:t[1],leadingAscii:t[2],leadingNonAscii:t[3],trailing:t[4],trailingNonAscii:t[5],trailingAscii:t[6]}}function f0(e,t,n){var o,i,s;if(e==="left")o=t.previousSibling,i=/ $/;else o=t.nextSibling,i=/^ /;if(o){if(o.nodeType===3)s=i.test(o.nodeValue);else if(n.preformattedCode&&o.nodeName==="CODE")s=!1;else if(o.nodeType===1&&!Dm(o))s=i.test(o.textContent)}return s}var Z1=Array.prototype.reduce;function wl(e){if(!(this instanceof wl))return new wl(e);var t={rules:Bn,headingStyle:"setext",hr:"* * *",bulletListMarker:"*",codeBlockStyle:"indented",fence:"```",emDelimiter:"_",strongDelimiter:"**",linkStyle:"inlined",linkReferenceStyle:"full",br:" ",preformattedCode:!1,blankReplacement:function(n,o){return o.isBlock?`
|
|
154
209
|
|
|
155
210
|
`:""},keepReplacement:function(n,o){return o.isBlock?`
|
|
156
211
|
|
|
@@ -160,17 +215,17 @@ ${r}
|
|
|
160
215
|
|
|
161
216
|
`+n+`
|
|
162
217
|
|
|
163
|
-
`:n}};this.options=
|
|
218
|
+
`:n}};this.options=C1({},t,e),this.rules=new k0(this.options)}wl.prototype={turndown:function(e){if(!G1(e))throw TypeError(e+" is not a string, or an element/document/fragment node.");if(e==="")return"";var t=S0.call(this,new O1(e,this.options));return W1.call(this,t)},use:function(e){if(Array.isArray(e))for(var t=0;t<e.length;t++)this.use(e[t]);else if(typeof e==="function")e(this);else throw TypeError("plugin must be a Function or an Array of Functions");return this},addRule:function(e,t){return this.rules.add(e,t),this},keep:function(e){return this.rules.keep(e),this},remove:function(e){return this.rules.remove(e),this},escape:function(e){return w0(e)}};function S0(e){var t=this;return Z1.call(e.childNodes,function(n,o){o=new F1(o,t.options);var i="";if(o.nodeType===3)i=o.isCode?o.nodeValue:t.escape(o.nodeValue);else if(o.nodeType===1)i=q1.call(t,o);return _0(n,i)},"")}function W1(e){var t=this;return this.rules.forEach(function(n){if(typeof n.append==="function")e=_0(e,n.append(t.options))}),e.replace(/^[\t\r\n]+/,"").replace(/[\t\r\n\s]+$/,"")}function q1(e){var t=this.rules.forNode(e),n=S0.call(this,e),o=e.flankingWhitespace;if(o.leading||o.trailing)n=n.trim();return o.leading+t.replacement(n,e,this.options)+o.trailing}function _0(e,t){var n=h0(e),o=m0(t),i=Math.max(e.length-n.length,t.length-o.length),s=`
|
|
164
219
|
|
|
165
|
-
`.substring(0,
|
|
166
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function _A(e,t){return bA(e)||xA(e,t)||SA(e,t)||wA()}function SA(e,t){if(e){if(typeof e=="string")return fw(e,t);var n={}.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?fw(e,t):void 0}}var{entries:Iw,setPrototypeOf:hw,isFrozen:kA,getPrototypeOf:TA,getOwnPropertyDescriptor:CA,freeze:Mt,seal:$t,create:yi}=Object,Pw=typeof Reflect<"u"&&Reflect,{apply:hp,construct:gp}=Pw;if(!Mt)Mt=function(t){return t};if(!$t)$t=function(t){return t};if(!hp)hp=function(t,n){for(var o=arguments.length,r=Array(o>2?o-2:0),s=2;s<o;s++)r[s-2]=arguments[s];return t.apply(n,r)};if(!gp)gp=function(t){for(var n=arguments.length,o=Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return new t(...o)};var gi=vt(Array.prototype.forEach),EA=vt(Array.prototype.lastIndexOf),gw=vt(Array.prototype.pop),vi=vt(Array.prototype.push),AA=vt(Array.prototype.splice),qo=Array.isArray,zs=vt(String.prototype.toLowerCase),up=vt(String.prototype.toString),vw=vt(String.prototype.match),Ps=vt(String.prototype.replace),yw=vt(String.prototype.indexOf),IA=vt(String.prototype.trim),PA=vt(Number.prototype.toString),NA=vt(Boolean.prototype.toString),bw=typeof BigInt>"u"?null:vt(BigInt.prototype.toString),xw=typeof Symbol>"u"?null:vt(Symbol.prototype.toString),Et=vt(Object.prototype.hasOwnProperty),Ns=vt(Object.prototype.toString),Ct=vt(RegExp.prototype.test),Cr=zA(TypeError);function vt(e){return function(t){if(t instanceof RegExp)t.lastIndex=0;for(var n=arguments.length,o=Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return hp(e,t,o)}}function zA(e){return function(){for(var t=arguments.length,n=Array(t),o=0;o<t;o++)n[o]=arguments[o];return gp(e,n)}}function ze(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:zs;if(hw)hw(e,null);if(!qo(t))return e;let o=t.length;while(o--){let r=t[o];if(typeof r==="string"){let s=n(r);if(s!==r){if(!kA(t))t[o]=s;r=s}}e[r]=!0}return e}function RA(e){for(let t=0;t<e.length;t++)if(!Et(e,t))e[t]=null;return e}function Wt(e){let t=yi(null);for(let o of Iw(e)){var n=_A(o,2);let r=n[0],s=n[1];if(Et(e,r))if(qo(s))t[r]=RA(s);else if(s&&typeof s==="object"&&s.constructor===Object)t[r]=Wt(s);else t[r]=s}return t}function MA(e){switch(typeof e){case"string":return e;case"number":return PA(e);case"boolean":return NA(e);case"bigint":return bw?bw(e):"0";case"symbol":return xw?xw(e):"Symbol()";case"undefined":return Ns(e);case"function":case"object":{if(e===null)return Ns(e);let t=e,n=jn(t,"toString");if(typeof n==="function"){let o=n(t);return typeof o==="string"?o:Ns(o)}return Ns(e)}default:return Ns(e)}}function jn(e,t){while(e!==null){let o=CA(e,t);if(o){if(o.get)return vt(o.get);if(typeof o.value==="function")return vt(o.value)}e=TA(e)}function n(){return null}return n}function $A(e){try{return Ct(e,""),!0}catch(t){return!1}}var ww=Mt(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),dp=Mt(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),pp=Mt(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),OA=Mt(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),mp=Mt(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),LA=Mt(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),_w=Mt(["#text"]),Sw=Mt(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),fp=Mt(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),kw=Mt(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Gc=Mt(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),DA=$t(/{{[\w\W]*|^[\w\W]*}}/g),FA=$t(/<%[\w\W]*|^[\w\W]*%>/g),BA=$t(/\${[\w\W]*/g),HA=$t(/^data-[\-\w.\u00B7-\uFFFF]+$/),jA=$t(/^aria-[\-\w]+$/),Tw=$t(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),UA=$t(/^(?:\w+script|data):/i),ZA=$t(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),WA=$t(/^html$/i),qA=$t(/^[a-z][.\w]*(-[.\w]+)+$/i),Cw=$t(/<[/\w!]/g),Ew=$t(/<[/\w]/g),GA=$t(/<\/no(script|embed|frames)/i),VA=$t(/\/>/i),gn={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},XA=function(){return typeof window>"u"?null:window},KA=function(t,n){if(typeof t!=="object"||typeof t.createPolicy!=="function")return null;let o=null,r="data-tt-policy-suffix";if(n&&n.hasAttribute(r))o=n.getAttribute(r);let s="dompurify"+(o?"#"+o:"");try{return t.createPolicy(s,{createHTML(a){return a},createScriptURL(a){return a}})}catch(a){return console.warn("TrustedTypes policy "+s+" could not be created."),null}},Aw=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},Wo=function(t,n,o,r){return Et(t,n)&&qo(t[n])?ze(r.base?Wt(r.base):{},t[n],r.transform):o};function Nw(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:XA(),t=(V)=>Nw(V);if(t.version="3.4.13",t.removed=[],!e||!e.document||e.document.nodeType!==gn.document||!e.Element)return t.isSupported=!1,t;let n=e.document,o=n,r=o.currentScript;e.DocumentFragment;let{HTMLTemplateElement:s,Node:a,Element:c,NodeFilter:l,NamedNodeMap:u}=e;u===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let{DOMParser:p,trustedTypes:d}=e,m=c.prototype,f=jn(m,"cloneNode"),h=jn(m,"remove"),v=jn(m,"nextSibling"),x=jn(m,"childNodes"),g=jn(m,"parentNode"),b=jn(m,"shadowRoot"),I=jn(m,"attributes"),R=a&&a.prototype?jn(a.prototype,"nodeType"):null,M=a&&a.prototype?jn(a.prototype,"nodeName"):null,_=a&&a.prototype?jn(a.prototype,"ownerDocument"):null;if(typeof s==="function"){let V=n.createElement("template");if(V.content&&V.content.ownerDocument)n=V.content.ownerDocument}let N,w="",k,z=!1,X=0,W=function(){if(X>0)throw Cr('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},J=function(y){W(),X++;try{return N.createHTML(y)}finally{X--}},G=function(y){W(),X++;try{return N.createScriptURL(y)}finally{X--}},S=function(){if(!z)k=KA(d,r),z=!0;return k},q=n,{implementation:ie,createNodeIterator:ye,createDocumentFragment:ue,getElementsByTagName:Pe}=q,ke=o.importNode,Me=Aw();t.isSupported=typeof Iw==="function"&&typeof g==="function"&&ie&&ie.createHTMLDocument!==void 0;let cn=DA,Pn=FA,D=BA,Y=HA,Te=jA,de=UA,be=ZA,se=qA,re=Tw,Z=null,xe=ze({},[...ww,...dp,...pp,...mp,..._w]),T=null,ce=ze({},[...Sw,...fp,...kw,...Gc]),pe=Object.seal(yi(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),me=null,qt=null,St=Object.seal(yi(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Gt=!0,yn=!0,ar=!1,da=!0,bn=!1,Nn=!0,eo=!1,Gi=!1,to=null,_o=null,Vi=!1,So=!1,ko=!1,ln=!1,cr=!0,Hr=!1,jr="user-content-",Q=!0,le=!1,Ce={},Ie=null,Bt=ze({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),zn=null,Un=ze({},["audio","video","img","source","image","track"]),To=null,au=ze({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),un="http://www.w3.org/1998/Math/MathML",xn="http://www.w3.org/2000/svg",wn="http://www.w3.org/1999/xhtml",no=wn,Ur=!1,Fe=null,Xi=ze({},[un,xn,wn],up),Ki=Mt(["mi","mo","mn","ms","mtext"]),Ee=ze({},Ki),ut=Mt(["annotation-xml"]),Ht=ze({},ut),oo=ze({},["title","style","font","a","script"]),Co=null,n0=["application/xhtml+xml","text/html"],o0="text/html",it=null,Zr=null,r0=n.createElement("form"),Km=function(y){return y instanceof RegExp||y instanceof Function},cu=function(){let y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Zr&&Zr===y)return;if(!y||typeof y!=="object")y={};y=Wt(y),Co=n0.indexOf(y.PARSER_MEDIA_TYPE)===-1?o0:y.PARSER_MEDIA_TYPE,it=Co==="application/xhtml+xml"?up:zs,Z=Wo(y,"ALLOWED_TAGS",xe,{transform:it}),T=Wo(y,"ALLOWED_ATTR",ce,{transform:it}),Fe=Wo(y,"ALLOWED_NAMESPACES",Xi,{transform:up}),To=Wo(y,"ADD_URI_SAFE_ATTR",au,{transform:it,base:au}),zn=Wo(y,"ADD_DATA_URI_TAGS",Un,{transform:it,base:Un}),Ie=Wo(y,"FORBID_CONTENTS",Bt,{transform:it}),me=Wo(y,"FORBID_TAGS",Wt({}),{transform:it}),qt=Wo(y,"FORBID_ATTR",Wt({}),{transform:it}),Ce=Et(y,"USE_PROFILES")?y.USE_PROFILES&&typeof y.USE_PROFILES==="object"?Wt(y.USE_PROFILES):y.USE_PROFILES:!1,Gt=y.ALLOW_ARIA_ATTR!==!1,yn=y.ALLOW_DATA_ATTR!==!1,ar=y.ALLOW_UNKNOWN_PROTOCOLS||!1,da=y.ALLOW_SELF_CLOSE_IN_ATTR!==!1,bn=y.SAFE_FOR_TEMPLATES||!1,Nn=y.SAFE_FOR_XML!==!1,eo=y.WHOLE_DOCUMENT||!1,So=y.RETURN_DOM||!1,ko=y.RETURN_DOM_FRAGMENT||!1,ln=y.RETURN_TRUSTED_TYPE||!1,Vi=y.FORCE_BODY||!1,cr=y.SANITIZE_DOM!==!1,Hr=y.SANITIZE_NAMED_PROPS||!1,Q=y.KEEP_CONTENT!==!1,le=y.IN_PLACE||!1,re=$A(y.ALLOWED_URI_REGEXP)?y.ALLOWED_URI_REGEXP:Tw,no=typeof y.NAMESPACE==="string"?y.NAMESPACE:wn,Ee=Et(y,"MATHML_TEXT_INTEGRATION_POINTS")&&y.MATHML_TEXT_INTEGRATION_POINTS&&typeof y.MATHML_TEXT_INTEGRATION_POINTS==="object"?Wt(y.MATHML_TEXT_INTEGRATION_POINTS):ze({},Ki),Ht=Et(y,"HTML_INTEGRATION_POINTS")&&y.HTML_INTEGRATION_POINTS&&typeof y.HTML_INTEGRATION_POINTS==="object"?Wt(y.HTML_INTEGRATION_POINTS):ze({},ut);let E=Et(y,"CUSTOM_ELEMENT_HANDLING")&&y.CUSTOM_ELEMENT_HANDLING&&typeof y.CUSTOM_ELEMENT_HANDLING==="object"?Wt(y.CUSTOM_ELEMENT_HANDLING):yi(null);if(pe=yi(null),Et(E,"tagNameCheck")&&Km(E.tagNameCheck))pe.tagNameCheck=E.tagNameCheck;if(Et(E,"attributeNameCheck")&&Km(E.attributeNameCheck))pe.attributeNameCheck=E.attributeNameCheck;if(Et(E,"allowCustomizedBuiltInElements")&&typeof E.allowCustomizedBuiltInElements==="boolean")pe.allowCustomizedBuiltInElements=E.allowCustomizedBuiltInElements;if($t(pe),bn)yn=!1;if(ko)So=!0;if(Ce){if(Z=ze({},_w),T=yi(null),Ce.html===!0)ze(Z,ww),ze(T,Sw);if(Ce.svg===!0)ze(Z,dp),ze(T,fp),ze(T,Gc);if(Ce.svgFilters===!0)ze(Z,pp),ze(T,fp),ze(T,Gc);if(Ce.mathMl===!0)ze(Z,mp),ze(T,kw),ze(T,Gc)}if(St.tagCheck=null,St.attributeCheck=null,Et(y,"ADD_TAGS")){if(typeof y.ADD_TAGS==="function")St.tagCheck=y.ADD_TAGS;else if(qo(y.ADD_TAGS)){if(Z===xe)Z=Wt(Z);ze(Z,y.ADD_TAGS,it)}}if(Et(y,"ADD_ATTR")){if(typeof y.ADD_ATTR==="function")St.attributeCheck=y.ADD_ATTR;else if(qo(y.ADD_ATTR)){if(T===ce)T=Wt(T);ze(T,y.ADD_ATTR,it)}}if(Et(y,"ADD_URI_SAFE_ATTR")&&qo(y.ADD_URI_SAFE_ATTR))ze(To,y.ADD_URI_SAFE_ATTR,it);if(Et(y,"FORBID_CONTENTS")&&qo(y.FORBID_CONTENTS)){if(Ie===Bt)Ie=Wt(Ie);ze(Ie,y.FORBID_CONTENTS,it)}if(Et(y,"ADD_FORBID_CONTENTS")&&qo(y.ADD_FORBID_CONTENTS)){if(Ie===Bt)Ie=Wt(Ie);ze(Ie,y.ADD_FORBID_CONTENTS,it)}if(Q)Z["#text"]=!0;if(eo)ze(Z,["html","head","body"]);if(Z.table)ze(Z,["tbody"]),delete me.tbody;if(y.TRUSTED_TYPES_POLICY){if(typeof y.TRUSTED_TYPES_POLICY.createHTML!=="function")throw Cr('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof y.TRUSTED_TYPES_POLICY.createScriptURL!=="function")throw Cr('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let U=N;N=y.TRUSTED_TYPES_POLICY;try{w=J("")}catch(te){throw N=U,te}}else if(y.TRUSTED_TYPES_POLICY===null)N=void 0,w="";else{if(N===void 0)N=S();if(N&&typeof w==="string")w=J("")}if(Mt)Mt(y);Zr=y},Jm=ze({},[...dp,...pp,...OA]),Ym=ze({},[...mp,...LA]),i0=function(y,E,U){if(E.namespaceURI===wn)return y==="svg";if(E.namespaceURI===un)return y==="svg"&&(U==="annotation-xml"||Ee[U]);return Boolean(Jm[y])},s0=function(y,E,U){if(E.namespaceURI===wn)return y==="math";if(E.namespaceURI===xn)return y==="math"&&Ht[U];return Boolean(Ym[y])},a0=function(y,E,U){if(E.namespaceURI===xn&&!Ht[U])return!1;if(E.namespaceURI===un&&!Ee[U])return!1;return!Ym[y]&&(oo[y]||!Jm[y])},c0=function(y){let E=g(y);if(!E||!E.tagName)E={namespaceURI:no,tagName:"template"};let U=zs(y.tagName),te=zs(E.tagName);if(!Fe[y.namespaceURI])return!1;if(y.namespaceURI===xn)return i0(U,E,te);if(y.namespaceURI===un)return s0(U,E,te);if(y.namespaceURI===wn)return a0(U,E,te);if(Co==="application/xhtml+xml"&&Fe[y.namespaceURI])return!0;return!1},Eo=function(y){vi(t.removed,{element:y});try{g(y).removeChild(y)}catch(E){if(h(y),!g(y))throw Cr("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},pa=function(y){Ji(y);let E=x(y);if(E){let te=[];gi(E,(ae)=>{vi(te,ae)}),gi(te,(ae)=>{try{h(ae)}catch(we){}})}let U=I(y);if(U)for(let te=U.length-1;te>=0;--te){let ae=U[te],we=ae&&ae.name;if(typeof we==="string")try{y.removeAttribute(we)}catch(We){}}},lr=function(y,E){try{vi(t.removed,{attribute:E.getAttributeNode(y),from:E})}catch(U){vi(t.removed,{attribute:null,from:E})}if(E.removeAttribute(y),y==="is")if(So||ko)try{Eo(E)}catch(U){}else try{E.setAttribute(y,"")}catch(U){}},l0=function(y){let E=I(y);if(!E)return;for(let U=E.length-1;U>=0;--U){let te=E[U],ae=te&&te.name;if(typeof ae!=="string"||T[it(ae)])continue;try{y.removeAttribute(ae)}catch(we){}}},Ji=function(y){let E=[y];while(E.length>0){let U=E.pop();if((R?R(U):U.nodeType)===gn.element)l0(U);let ae=x(U);if(ae)for(let we=ae.length-1;we>=0;--we)E.push(ae[we])}},u0=function(y){if(!Nn)return;let E=[y];while(E.length>0){let U=E.pop(),te=R?R(U):U.nodeType;if(te===gn.processingInstruction||te===gn.comment&&Ct(Ew,U.data)){try{h(U)}catch(we){}continue}if(te===gn.element){let we=U,We=it(M?M(U):U.nodeName);try{if(we.hasAttribute&&we.hasAttribute("patchsrc"))we.removeAttribute("patchsrc");if(we.hasAttribute&&we.hasAttribute("for")&&We!=="label"&&We!=="output")we.removeAttribute("for")}catch(st){}}let ae=x(U);if(ae)for(let we=ae.length-1;we>=0;--we)E.push(ae[we])}},Qm=function(y){let E=null,U=null;if(Vi)y="<remove></remove>"+y;else{let we=vw(y,/^[\r\n\t ]+/);U=we&&we[0]}if(Co==="application/xhtml+xml"&&no===wn)y='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+y+"</body></html>";let te=N?J(y):y;if(no===wn)try{E=new p().parseFromString(te,Co)}catch(we){}if(!E||!E.documentElement){E=ie.createDocument(no,"template",null);try{E.documentElement.innerHTML=Ur?w:te}catch(we){}}let ae=E.body||E.documentElement;if(y&&U)ae.insertBefore(n.createTextNode(U),ae.childNodes[0]||null);if(no===wn)return Pe.call(E,eo?"html":"body")[0];return eo?E.documentElement:ae},ef=function(y){let E=_?_(y):y.ownerDocument;return ye.call(E||y,y,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},ma=function(y){return y=Ps(y,cn," "),y=Ps(y,Pn," "),y=Ps(y,D," "),y},lu=function(y){var E;y.normalize();let U=_?_(y):y.ownerDocument,te=ye.call(U||y,y,l.SHOW_TEXT|l.SHOW_COMMENT|l.SHOW_CDATA_SECTION|l.SHOW_PROCESSING_INSTRUCTION,null),ae=te.nextNode();while(ae)ae.data=ma(ae.data),ae=te.nextNode();let we=(E=y.querySelectorAll)===null||E===void 0?void 0:E.call(y,"template");if(we)gi(we,(We)=>{if(Wr(We.content))lu(We.content)})},fa=function(y){let E=M?M(y):null;if(typeof E!=="string")return!1;if(it(E)!=="form")return!1;return typeof y.nodeName!=="string"||typeof y.textContent!=="string"||typeof y.removeChild!=="function"||y.attributes!==I(y)||typeof y.removeAttribute!=="function"||typeof y.setAttribute!=="function"||typeof y.namespaceURI!=="string"||typeof y.insertBefore!=="function"||typeof y.hasChildNodes!=="function"||y.nodeType!==R(y)||y.childNodes!==x(y)},Wr=function(y){if(!R||typeof y!=="object"||y===null)return!1;try{return R(y)===gn.documentFragment}catch(E){return!1}},Yi=function(y){if(!R||typeof y!=="object"||y===null)return!1;try{return typeof R(y)==="number"}catch(E){return!1}};function Zn(V,y,E){if(V.length===0)return;gi(V,(U)=>{U.call(t,y,E,Zr)})}let d0=function(y,E){if(Nn&&y.hasChildNodes()&&!Yi(y.firstElementChild)&&Ct(Cw,y.textContent)&&Ct(Cw,y.innerHTML))return!0;if(Nn&&y.namespaceURI===wn&&E==="style"&&Yi(y.firstElementChild))return!0;if(y.nodeType===gn.processingInstruction)return!0;if(Nn&&y.nodeType===gn.comment&&Ct(Ew,y.data))return!0;return!1},p0=function(y,E,U){if(!me[E]&&rf(E)){if(pe.tagNameCheck instanceof RegExp&&Ct(pe.tagNameCheck,E))return!1;if(pe.tagNameCheck instanceof Function&&pe.tagNameCheck(E))return!1}if(Q&&!Ie[E]){let te=g(y),ae=x(y);if(ae&&te){let we=ae.length;for(let We=we-1;We>=0;--We){let st=y===U?f(ae[We],!0):ae[We];te.insertBefore(st,v(y))}}}return Eo(y),!0},tf=function(y,E,U,te){if(y.length===0)return E;return E===U||E===te?Wt(E):E},nf=function(y,E){if(Zn(Me.beforeSanitizeElements,y,null),y!==E&&g(y)===null){if(le)Ji(y);return!0}if(fa(y))return Eo(y),!0;let U=it(M?M(y):y.nodeName);if(Z=tf(Me.uponSanitizeElement,Z,xe,to),Zn(Me.uponSanitizeElement,y,{tagName:U,allowedTags:Z}),y!==E&&g(y)===null){if(le)Ji(y);return!0}if(d0(y,U))return Eo(y),!0;if(me[U]||!(St.tagCheck instanceof Function&&St.tagCheck(U))&&!Z[U]){let ae=p0(y,U,E);if(ae===!1)Zn(Me.afterSanitizeElements,y,null);return ae}if((R?R(y):y.nodeType)===gn.element&&!c0(y))return Eo(y),!0;if((U==="noscript"||U==="noembed"||U==="noframes")&&Ct(GA,y.innerHTML))return Eo(y),!0;if(bn&&y.nodeType===gn.text){let ae=ma(y.textContent);if(y.textContent!==ae)vi(t.removed,{element:y.cloneNode()}),y.textContent=ae}return Zn(Me.afterSanitizeElements,y,null),!1},of=function(y,E,U){if(qt[E])return!1;if(Nn&&E==="patchsrc")return!1;if(Nn&&E==="for"&&y!=="label"&&y!=="output")return!1;if(cr&&(E==="id"||E==="name")&&((U in n)||(U in r0)))return!1;let te=T[E]||St.attributeCheck instanceof Function&&St.attributeCheck(E,y);if(yn&&Ct(Y,E));else if(Gt&&Ct(Te,E));else if(!te)if(rf(y)&&(pe.tagNameCheck instanceof RegExp&&Ct(pe.tagNameCheck,y)||pe.tagNameCheck instanceof Function&&pe.tagNameCheck(y))&&(pe.attributeNameCheck instanceof RegExp&&Ct(pe.attributeNameCheck,E)||pe.attributeNameCheck instanceof Function&&pe.attributeNameCheck(E,y))||E==="is"&&pe.allowCustomizedBuiltInElements&&(pe.tagNameCheck instanceof RegExp&&Ct(pe.tagNameCheck,U)||pe.tagNameCheck instanceof Function&&pe.tagNameCheck(U)));else return!1;else if(To[E]);else if(Ct(re,Ps(U,be,"")));else if((E==="src"||E==="xlink:href"||E==="href")&&y!=="script"&&yw(U,"data:")===0&&zn[y]);else if(ar&&!Ct(de,Ps(U,be,"")));else if(U)return!1;return!0},m0=ze({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),rf=function(y){return!m0[zs(y)]&&Ct(se,y)},f0=function(y,E,U,te){if(N&&typeof d==="object"&&typeof d.getAttributeType==="function"&&!U)switch(d.getAttributeType(y,E)){case"TrustedHTML":return J(te);case"TrustedScriptURL":return G(te)}return te},h0=function(y,E,U,te){try{if(U)y.setAttributeNS(U,E,te);else y.setAttribute(E,te);if(fa(y))Eo(y);else gw(t.removed)}catch(ae){lr(E,y)}},sf=function(y){Zn(Me.beforeSanitizeAttributes,y,null);let E=y.attributes;if(!E||fa(y))return;T=tf(Me.uponSanitizeAttribute,T,ce,_o);let U={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:T,forceKeepAttr:void 0},te=E.length,ae=it(y.nodeName);while(te--){let we=E[te],{name:We,namespaceURI:st,value:en}=we,tn=it(We),du=en,Vt=We==="value"?du:IA(du);if(U.attrName=tn,U.attrValue=Vt,U.keepAttr=!0,U.forceKeepAttr=void 0,Zn(Me.uponSanitizeAttribute,y,U),Vt=U.attrValue,Hr&&(tn==="id"||tn==="name")&&yw(Vt,jr)!==0)lr(We,y),Vt=jr+Vt;if(Nn&&Ct(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,Vt)){lr(We,y);continue}if(tn==="attributename"&&vw(Vt,"href")){lr(We,y);continue}if(U.forceKeepAttr)continue;if(!U.keepAttr){lr(We,y);continue}if(!da&&Ct(VA,Vt)){lr(We,y);continue}if(bn)Vt=ma(Vt);if(!of(ae,tn,Vt)){lr(We,y);continue}if(Vt=f0(ae,tn,st,Vt),Vt!==du)h0(y,We,st,Vt)}Zn(Me.afterSanitizeAttributes,y,null)},ha=function(y){let E=null,U=ef(y);Zn(Me.beforeSanitizeShadowDOM,y,null);while(E=U.nextNode()){if(Zn(Me.uponSanitizeShadowNode,E,null),nf(E,y),sf(E),Wr(E.content))ha(E.content);if((R?R(E):E.nodeType)===gn.element){let ae=b(E);if(Wr(ae))uu(ae),ha(ae)}}Zn(Me.afterSanitizeShadowDOM,y,null)},uu=function(y){let E=[{node:y,shadow:null}];while(E.length>0){let U=E.pop();if(U.shadow){ha(U.shadow);continue}let te=U.node,we=(R?R(te):te.nodeType)===gn.element,We=x(te);if(We)for(let st=We.length-1;st>=0;--st)E.push({node:We[st],shadow:null});if(we){let st=M?M(te):null;if(typeof st==="string"&&it(st)==="template"){let en=te.content;if(Wr(en))E.push({node:en,shadow:null})}}if(we){let st=b(te);if(Wr(st))E.push({node:null,shadow:st},{node:st,shadow:null})}}};return t.sanitize=function(V){let y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},E=null,U=null,te=null,ae=null;if(Ur=!V,Ur)V="<!-->";if(typeof V!=="string"&&!Yi(V)){if(V=MA(V),typeof V!=="string")throw Cr("dirty is not a string, aborting")}if(!t.isSupported)return V;if(Gi)Z=to,T=_o;else cu(y);if(Me.uponSanitizeElement.length>0||Me.uponSanitizeAttribute.length>0)Z=Wt(Z);if(Me.uponSanitizeAttribute.length>0)T=Wt(T);t.removed=[];let we=le&&typeof V!=="string"&&Yi(V);if(we){u0(V);let en=M?M(V):V.nodeName;if(typeof en==="string"){let tn=it(en);if(!Z[tn]||me[tn])throw pa(V),Cr("root node is forbidden and cannot be sanitized in-place")}if(fa(V))throw pa(V),Cr("root node is clobbered and cannot be sanitized in-place");try{uu(V)}catch(tn){throw pa(V),tn}}else if(Yi(V)){if(E=Qm("<!---->"),U=E.ownerDocument.importNode(V,!0),U.nodeType===gn.element&&U.nodeName==="BODY")E=U;else if(U.nodeName==="HTML")E=U;else E.appendChild(U);uu(U)}else{if(!So&&!bn&&!eo&&V.indexOf("<")===-1)return N&&ln?J(V):V;if(E=Qm(V),!E)return So?null:ln?w:""}if(E&&Vi)Eo(E.firstChild);let We=we?V:E;try{let en=ef(We);while(te=en.nextNode())if(nf(te,We),sf(te),Wr(te.content))ha(te.content)}catch(en){if(we)pa(V),gi(t.removed,(tn)=>{if(tn.element)Ji(tn.element)});throw en}if(we){if(gi(t.removed,(en)=>{if(en.element)Ji(en.element)}),bn)lu(V);return V}if(So){if(bn)lu(E);if(ko){ae=ue.call(E.ownerDocument);while(E.firstChild)ae.appendChild(E.firstChild)}else ae=E;if(T.shadowroot||T.shadowrootmode)ae=ke.call(o,ae,!0);return ae}let st=eo?E.outerHTML:E.innerHTML;if(eo&&Z["!doctype"]&&E.ownerDocument&&E.ownerDocument.doctype&&E.ownerDocument.doctype.name&&Ct(WA,E.ownerDocument.doctype.name))st="<!DOCTYPE "+E.ownerDocument.doctype.name+`>
|
|
167
|
-
`+st;if(bn)st=ma(st);return N&&ln?J(st):st},t.setConfig=function(){let V=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};cu(V),Gi=!0,to=Z,_o=T},t.clearConfig=function(){Zr=null,Gi=!1,to=null,_o=null,N=k,w=""},t.isValidAttribute=function(V,y,E){if(!Zr)cu({});let U=it(V),te=it(y);return of(U,te,E)},t.addHook=function(V,y){if(typeof y!=="function")return;if(!Et(Me,V))return;vi(Me[V],y)},t.removeHook=function(V,y){if(!Et(Me,V))return;if(y!==void 0){let E=EA(Me[V],y);return E===-1?void 0:AA(Me[V],E,1)[0]}return gw(Me[V])},t.removeHooks=function(V){if(!Et(Me,V))return;Me[V]=[]},t.removeAllHooks=function(){Me=Aw()},t}var zw=Nw();function Qn(e){return zw.sanitize(e,{FORBID_TAGS:["form","svg","math"]})}var vp=null;function JA(){if(vp)return vp;let e=new Is({headingStyle:"atx",codeBlockStyle:"fenced",emDelimiter:"*",bulletListMarker:"-"});return e.use(Rw.gfm),vp=e,e}function Mw({initialHtml:e,className:t,onChange:n,onSave:o}){let r=L(null),s=L(e);H(()=>{let m=r.current;if(!m)return;m.innerHTML=Qn(s.current);for(let f of m.querySelectorAll('input[type="checkbox"][disabled]'))f.removeAttribute("disabled")},[]);let a=j(()=>{let m=r.current;if(!m)return"";return JA().turndown(m.innerHTML)},[]),c=j(()=>{n(a())},[n,a]),l=j(()=>{let m=r.current;if(!m||!m.isConnected||m.innerHTML==="")return;o?.(a())},[o,a]),u=j((m)=>{if(!(m.metaKey||m.ctrlKey))return;if(m.key==="s"){m.preventDefault(),l();return}if(m.key==="b"){m.preventDefault(),document.execCommand("bold"),c();return}if(m.key==="i"){m.preventDefault(),document.execCommand("italic"),c();return}if(m.key==="k")m.preventDefault(),Wc(),c()},[c,l]),p=j((m)=>{let f=m.target;if(f instanceof HTMLInputElement&&f.type==="checkbox")f.toggleAttribute("checked",f.checked),c()},[c]),d=j((m)=>{let f=m.clipboardData?.getData("text/plain");if(f==null)return;m.preventDefault(),document.execCommand("insertText",!1,f),c()},[c]);return i(_e,{children:[i("div",{ref:r,class:t,contentEditable:!0,spellcheck:!1,onInput:c,onKeyDown:u,onPaste:d,onClick:p,onBlur:l},void 0,!1,void 0,this),i(mw,{hostRef:r,onChange:c},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function yp({html:e,className:t,style:n,onTaskToggle:o}){let r=L(null),s=L(o);return s.current=o,H(()=>{let c=r.current;if(!c)return;if(c.replaceChildren(),!e)return;let l=document.createElement("template");if(l.innerHTML=Qn(e),c.append(l.content.cloneNode(!0)),s.current)for(let u of c.querySelectorAll('input[type="checkbox"][disabled]'))u.removeAttribute("disabled")},[e]),i("div",{ref:r,class:t,style:n,onClick:o?(c)=>{let l=s.current,u=r.current;if(!u||!l)return;let p=c.target,d=null;if(p instanceof HTMLInputElement&&p.type==="checkbox")d=p;else{let h=p.closest("li")?.querySelector(':scope > input[type="checkbox"]');if(h&&c.clientX<=h.getBoundingClientRect().right+6)d=h}if(!d)return;c.stopPropagation();let m=[...u.querySelectorAll('input[type="checkbox"]')].indexOf(d);if(m>=0)l(m)}:void 0},void 0,!1,void 0,this)}function YA(e,t){let n=-1;return e.replace(/^(\s*(?:[-*+]|\d+[.)])\s+\[)([ xX])(\])/gm,(o,r,s,a)=>{if(n+=1,n!==t)return o;return`${r}${s===" "?"x":" "}${a}`})}function Vc({node:e,expanded:t=!1}){let n=dc(),o=e.data.path,[r,s]=A(""),[a,c]=A(""),[l,u]=A(!1),[p,d]=A(!1),[m,f]=A(!1),[h,v]=A(!1),x=L(null),g=L(null),b=L(""),I=L(null),R=L(!1),M=L({boardId:Oe.value,revision:e.contentRevision??0}),_=L(Promise.resolve()),N=e.data.reviewActive;H(()=>{if(Se()&&R.current)return;M.current={boardId:Oe.value,revision:e.contentRevision??0};let S=!1;return(async()=>{let q;if(o){let ye=await vs(o);if(S)return;q=ye.content}else if(e.data.content)q=e.data.content;else{u(!0);return}s(q);let ie=await Vn(q);if(S||Se()&&R.current)return;c(ie),u(!0),fe(e.id,{content:q,rendered:ie})})(),()=>{S=!0}},[o,e.id,e.data.content]);let w=j(async(S)=>{let q=S.target.value;R.current=!0,b.current=q,s(q),v(!0);let ie=await Vn(q);c(ie)},[]),k=j(async(S)=>{if(Se()){_.current=_.current.then(async()=>{f(!0);let ie=await kt(e.id,{content:S,expectedBoardId:M.current.boardId,expectedContentRevision:M.current.revision});if(f(!1),!ie.ok)return;M.current.revision=ie.contentRevision??M.current.revision;let ye=F.value.get(e.id);if(ye)F.value=new Map(F.value).set(e.id,{...ye,contentRevision:M.current.revision});if(b.current!==S)return;R.current=!1,v(!1);let ue=await Vn(S);c(ue),fe(e.id,{content:S,rendered:ue})}),await _.current;return}if(!o){let ie=await Vn(S);c(ie),v(!1),fe(e.id,{content:S,rendered:ie}),await kt(e.id,{content:S,data:{rendered:ie}});return}f(!0);let q=await mb(o,S);if(f(!1),q.ok){let ie=await Vn(S);c(ie),v(!1),fe(e.id,{content:S,rendered:ie,savedAt:q.updatedAt}),await kt(e.id,{content:S,data:{rendered:ie,savedAt:q.updatedAt}})}},[o,e.id]),z=j(async()=>{if(!h)return;await k(r)},[h,r,k]),X=j((S)=>{if((S.metaKey||S.ctrlKey)&&S.key==="s"){S.preventDefault(),z();return}let q=x.current;if(q&&$x(S,q))return;if(q&&S.key==="Tab")S.preventDefault(),Mx(q,S.shiftKey)},[z]);I.current=k;let W=j((S)=>{if(R.current=!0,s(S),v(!0),b.current=S,g.current!==null)window.clearTimeout(g.current);g.current=window.setTimeout(()=>{g.current=null,k(S)},800)},[k]),J=j((S)=>{if(R.current=!0,s(S),b.current=S,g.current!==null)window.clearTimeout(g.current),g.current=null;k(S)},[k]);H(()=>()=>{if(g.current===null)return;window.clearTimeout(g.current),g.current=null;let S=I.current;if(S)S(b.current)},[e.id]);let G=N?i("div",{style:{padding:"4px 8px",fontSize:"10px",background:"color-mix(in srgb, var(--c-ok) 10%, transparent)",color:"var(--c-ok)",borderBottom:"1px solid color-mix(in srgb, var(--c-ok) 20%, transparent)",textTransform:"uppercase",letterSpacing:"0.05em",fontWeight:600},children:"Review active"},void 0,!1,void 0,this):null;if(p&&t)return i("div",{class:"md-editor-expanded",onKeyDown:X,children:[i("div",{class:"md-editor-toolbar",children:[i("button",{type:"button",class:"md-toolbar-btn",onClick:()=>d(!1),children:[i(sx,{size:14},void 0,!1,void 0,this)," Back to document"]},void 0,!0,void 0,this),i("div",{style:{display:"flex",gap:"6px",alignItems:"center"},children:[o&&i("span",{class:"md-toolbar-path",children:o.split("/").pop()},void 0,!1,void 0,this),i("button",{type:"button",class:`md-toolbar-btn${h?" md-toolbar-btn-primary":""}`,onClick:z,disabled:!h||m,children:m?"Saving…":h?"Save":"Saved"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"md-editor-split",children:[i("div",{style:{flex:1,position:"relative",display:"flex",flexDirection:"column"},children:[i("textarea",{ref:x,value:r,onInput:w,spellcheck:!1},void 0,!1,void 0,this),i(Jd,{textareaRef:x},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i(yp,{html:a,className:"md-preview"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(p)return i("div",{class:"md-editor-split",style:{height:"100%"},onKeyDown:X,children:[i("div",{style:{flex:1,position:"relative",display:"flex",flexDirection:"column"},children:[i("textarea",{ref:x,value:r,onInput:w,spellcheck:!1},void 0,!1,void 0,this),i(Jd,{textareaRef:x},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i(yp,{html:a,className:"md-preview"},void 0,!1,void 0,this),i("div",{style:{position:"absolute",bottom:"8px",right:"8px",display:"flex",gap:"6px"},children:[i("button",{type:"button",onClick:()=>d(!1),style:{padding:"4px 10px",fontSize:"11px",background:"var(--c-input-bg)",border:"1px solid var(--c-line)",borderRadius:"6px",color:"var(--c-text-soft)",cursor:"pointer"},children:"Document"},void 0,!1,void 0,this),i("button",{type:"button",onClick:z,disabled:!h||m,style:{padding:"4px 10px",fontSize:"11px",background:h?"color-mix(in srgb, var(--c-accent) 25%, transparent)":"var(--c-input-bg)",border:`1px solid ${h?"var(--c-accent)":"var(--c-line)"}`,borderRadius:"6px",color:h?"var(--c-text)":"var(--c-dim)",cursor:h?"pointer":"default"},children:m?"Saving…":h?"Save":"Saved"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(t)return i("div",{style:{height:"100%",position:"relative"},children:[G,i("div",{class:"md-reader",children:l?i(Mw,{initialHtml:a||"<p><br></p>",className:"md-reader-content md-reader-editable",onChange:W,onSave:J},e.id,!1,void 0,this):i("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"24px"},children:"Loading…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("button",{type:"button",class:"md-edit-fab",onClick:()=>d(!0),children:"</> Source"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return i("div",{class:"md-card-preview",children:[i("div",{class:"md-card-content",children:[G,i(yp,{html:a,style:{padding:a?"0":"12px",color:a?void 0:"var(--c-dim)"},onTaskToggle:(S)=>{let q=YA(r,S);if(q!==r)J(q)}},void 0,!1,void 0,this),!l&&i("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"12px"},children:"Loading…"},void 0,!1,void 0,this),l&&!a&&i("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"12px"},children:"Empty node"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),e.data.source&&typeof e.data.source==="object"&&"attachmentId"in e.data.source&&i("div",{class:"md-import-source",children:["Source material ·"," ",i("a",{href:`/api/canvas/attachments/${encodeURIComponent(String(e.data.source.attachmentId))}/bytes`,target:"_blank",rel:"noopener noreferrer",children:String(e.data.source.filename??"Original")},void 0,!1,void 0,this)," · ",String(e.data.source.reference??"Location not supplied")]},void 0,!0,void 0,this),i("div",{class:"md-card-actions",children:[n&&i("button",{type:"button",class:"md-readme-btn","aria-pressed":n.readmeNodeId===e.id,onClick:()=>void ub(n.id,n.readmeNodeId===e.id?null:e.id),children:n.readmeNodeId===e.id?"README":"Set as README"},void 0,!1,void 0,this),i("button",{type:"button",class:"md-card-edit",onClick:()=>kn(e.id),children:"Edit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var Xc="pmx-canvas-ax",Kc="pmx-canvas-ax-ack",Tn="pmx-canvas-html-node",bp="pmx-canvas-json-state",Jc="pmx-canvas-ext-app-alive",xp="pmx-canvas-ext-app-paint-probe";function $w(e,t){switch(e){case"html":return typeof t.html==="string"&&t.html.length>0||typeof t.content==="string"&&t.content.length>0;case"mermaid":return typeof t.content==="string"&&t.content.trim().length>0;case"json-render":case"graph":return!0;case"mcp-app":return t.viewerType==="web-artifact"&&typeof t.path==="string"&&t.path.length>0||typeof t.url==="string"&&t.url.length>0;case"webpage":return typeof t.url==="string"&&t.url.length>0;default:return!1}}var wp="allow-scripts allow-popups allow-popups-to-escape-sandbox";function bi(e){let t=5381;for(let n=0;n<e.length;n+=1)t=(t<<5)+t+e.charCodeAt(n)|0;return(t>>>0).toString(36)}function Rs(e,t={}){let n=new URLSearchParams;if(n.set("theme",t.theme??gt.value),t.themeToken)n.set("themeToken",t.themeToken);if(t.present)n.set("present","1");if(t.presentToken)n.set("presentToken",t.presentToken);if(t.v)n.set("v",t.v);if(t.axToken)n.set("axToken",t.axToken);if(t.frameToken)n.set("frameToken",t.frameToken);return`/api/canvas/surface/${encodeURIComponent(e)}?${n.toString()}`}function Yc(e){return $w(e.type,e.data)}async function Qc(e){if(Se()){on("context","Open in focus mode","This surface has no public URL. Use Expand to view it here, or export the board to download it.");return}let t=Rs(e.id);if(!(await bb(e.id,t)).opened)window.open(t,"_blank","noopener")}var Ow=30000;var _p=80;var lt=K(new Map),wi=K(null),QA=480,eI=320,tI=650,Ms=new Map,xi=new Map,el=new Map,vo=null;function Sp(e){lt.value=e,nI()}function kp(e){let t=Ms.get(e);if(t)clearTimeout(t),Ms.delete(e)}function Tp(e){let t=xi.get(e);if(t)clearTimeout(t),xi.delete(e)}function Dw(e){if(kp(e.id),Tp(e.id),!lt.value.has(e.id))el.set(e.id,Date.now());let t=new Map(lt.value);t.set(e.id,{...e,phase:"forming"}),Sp(t)}function Er(e){if(kp(e),Tp(e),el.delete(e),!lt.value.has(e))return;let t=new Map(lt.value);t.delete(e),Sp(t)}function Lw(e,t,n,o){let r=lt.value.get(e);if(!r||r.phase===t)return;let s=new Map(lt.value);s.set(e,{...r,phase:t,...o?{settledNodeId:o}:{}}),Sp(s),kp(e),Ms.set(e,setTimeout(()=>Er(e),n+1500))}function Fw(e,t,n,o){Tp(e);let r=Date.now()-(el.get(e)??0),s=Math.max(0,tI-r);if(s===0){Lw(e,t,n,o);return}xi.set(e,setTimeout(()=>{xi.delete(e),Lw(e,t,n,o)},s))}function Bw(e,t){Fw(e,"settling",QA,t)}function Cp(e){Fw(e,"dissolving",eI)}function tl(){for(let e of Ms.values())clearTimeout(e);Ms.clear();for(let e of xi.values())clearTimeout(e);if(xi.clear(),el.clear(),vo)clearInterval(vo),vo=null;wi.value=null,lt.value=new Map}function nI(){if(vo||lt.value.size===0)return;vo=setInterval(()=>{let e=Date.now();for(let t of lt.value.values())if(t.phase==="forming"&&t.expiresAt<=e)Cp(t.id);if(lt.value.size===0&&vo)clearInterval(vo),vo=null},1000),vo.unref?.()}function oI(e,t){try{let n=window.sessionStorage.getItem(e);if(n)return n;let o=t();return window.sessionStorage.setItem(e,o),o}catch{return t()}}var rl=oI("pmx-canvas-human-client",()=>`tab-${Math.random().toString(36).slice(2,8)}`);function rI(){try{let e=new URLSearchParams(window.location.search).get("name")?.trim();if(e)return window.localStorage.setItem("pmx-canvas-human-name",e),e;let t=window.localStorage.getItem("pmx-canvas-human-name")?.trim();if(t)return t}catch{}return`guest-${rl.slice(-4)}`}var jw=K(rI()),Uw=K([]),Os=Ge(()=>Uw.value.filter((e)=>e.clientId!==rl)),Ar=K(new Map);function Ep(e){if(!e||!Array.isArray(e.humans))return;Uw.value=e.humans}var _i=K(null),il=null,Zw=0,$s=null;function ol(e){if(Se())return;$n("humanPresence","/api/canvas/human-presence",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:rl,name:jw.value,...e})})}function Hw(){$s=null,Zw=Date.now(),ol({cursor:il,grabbingNodeId:_i.value})}function sl(e){il=e;let t=Date.now()-Zw;if(t>=_p){if($s)clearTimeout($s);Hw()}else if(!$s)$s=setTimeout(Hw,_p-t)}function Ap(e){_i.value=e,ol({cursor:il,grabbingNodeId:e})}function iI(e,t){let n=new Map(Ar.value);n.set(e,t),Ar.value=n,setTimeout(()=>{let o=new Map(Ar.value);if(o.get(e)===t)o.delete(e),Ar.value=o},6000)}function Ww(e,t){let n=[...lt.value.values()].filter((r)=>r.nodeId===e&&!r.auto&&r.phase==="forming");if(n.length===0)return;let o=jw.value;iI(e,o);for(let r of n)br({id:r.id,kind:r.kind,label:r.label,reason:`${o} took over “${t}” mid-edit — yield and requeue the change once it is released`}).then((s)=>{if(s)Er(r.id)});$n("yieldEvent","/api/canvas/ax/event",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({kind:"yield",summary:`${o} grabbed “${t}” mid-edit — agent yielded, change requeued`,nodeIds:[e],source:"browser"})})}var nl=null;function qw(){ol({cursor:il,grabbingNodeId:_i.value}),nl=setInterval(()=>ol({grabbingNodeId:_i.value}),3000);let e=()=>{try{navigator.sendBeacon?.("/api/canvas/human-presence",new Blob([JSON.stringify({clientId:rl,left:!0})],{type:"application/json"}))}catch{}};return window.addEventListener("pagehide",e),()=>{if(nl)clearInterval(nl);nl=null,window.removeEventListener("pagehide",e)}}var sI={markdown:{width:360,height:180},board:{width:320,height:140},context:{width:360,height:180},file:{width:360,height:200},diff:{width:420,height:240},mermaid:{width:360,height:240},status:{width:280,height:120},ledger:{width:320,height:200},image:{width:240,height:180},html:{width:420,height:280},webpage:{width:420,height:280},"json-render":{width:420,height:280},graph:{width:420,height:280},"mcp-app":{width:480,height:320}};function Gw(e){return sI[e]}function Vw(e,t,n,o,r){return e.x<o.position.x+o.size.width+r&&e.x+t+r>o.position.x&&e.y<o.position.y+o.size.height+r&&e.y+n+r>o.position.y}function aI(e,t,n,o,r){return o.some((s)=>Vw(e,t,n,s,r))}function al(e,t,n,o,r){return o.find((s)=>Vw(e,t,n,s,r))}function cl(e,t,n,o=24){if(e.length===0)return{x:40,y:80};let r=e[e.length-1],s={x:r.position.x+r.size.width+o,y:r.position.y};if(!aI(s,t,n,e,o))return s;let a=40,c=80,l=3000,u=c;for(let d=0;d<20;d++){let m=a;while(m+t<l){let v=al({x:m,y:u},t,n,e,o);if(!v)return{x:m,y:u};m=v.position.x+v.size.width+o}u=e.filter((v)=>v.position.y<=u+n+o&&v.position.y+v.size.height+o>u).reduce((v,x)=>Math.max(v,x.position.y+x.size.height),u)+o}let p=e.reduce((d,m)=>Math.max(d,m.position.y+m.size.height),0);return{x:a,y:p+o}}var Si=37,cI=600,lI=1400,uI=24;function dI(e){return e.type==="html"||e.type==="mermaid"||e.type==="json-render"||e.type==="graph"||e.type==="mcp-app"||e.type==="webpage"}function pI(e){if(e.type==="html")return e.data.presentation!==!0;if(e.type==="mermaid")return!0;if(e.type==="json-render"||e.type==="graph")return!0;if(e.type==="mcp-app")return e.data.viewerType==="web-artifact";return!1}function Xw(e){return e.collapsed===!0||e.data.strictSize===!0||e.data.userResized===!0||e.type==="group"}function Ip(e){return!Xw(e)&&!dI(e)}function Kw(e,t){if(!Ip(e)||t<=0)return null;let n=Math.min(t+Si,cI),o=Gw(e.type);return o?Math.max(n,o.height):n}function Pp(e){return pI(e)&&!Xw(e)}function Jw(e,t){if(!Pp(e)||!Number.isFinite(t)||t<=0)return null;let n=Math.min(t+Si+uI,lI);return n>e.size.height+8?n:null}function Yw(e,t,n){if(t<=e.size.height||e.pinned||e.data.parentGroup)return e.position;let o=n.filter((a)=>a.id!==e.id&&!a.pinned&&a.type!=="group"),r={...e.position},s=al(r,e.size.width,t,o,24);while(s)r.y=s.position.y+s.size.height+24,s=al(r,e.size.width,t,o,24);return r}function ki(e,t,n){H(()=>{if(!n)return;let o=null,r=null,s=()=>_i.value===e.id||Os.value.some((p)=>p.grabbingNodeId===e.id);function a(){if(o=null,s()||r===null)return;let p=r;r=null;let d=F.value.get(e.id);if(!d)return;let m=Jw(d,p);if(m===null)return;let f=Yw(d,m,Array.from(F.value.values())),h=f.x!==d.position.x||f.y!==d.position.y,v={size:{width:d.size.width,height:m},...h?{position:f}:{}};wt(d.id,v),hc([{id:d.id,...v}],{recordHistory:h})}function c(){if(o!==null)clearTimeout(o);o=r!==null&&!s()?setTimeout(a,300):null}let l=nn(()=>{s(),c()});function u(p){if(p.source!==t.current?.contentWindow)return;let d=p.data;if(!d||d.source!=="pmx-canvas-frame"||d.type!=="content-height"||d.token!==n)return;if(typeof d.height!=="number"||!Number.isFinite(d.height)||d.height<=0)return;r=d.height,c()}return window.addEventListener("message",u),()=>{if(window.removeEventListener("message",u),l(),o!==null)clearTimeout(o)}},[e.id,n])}function mI(e){if(Se())return e.startsWith("/")&&!e.startsWith("//");try{return new URL(e,window.location.origin).origin===window.location.origin}catch{return!1}}function Ti(e){let t=Rt.value,[n,o]=A(null),r=Boolean(e)&&mI(e),s=t==="srcdoc"&&r;if(H(()=>{if(!s)return;let a=!1;return ct(`${e}${e.includes("?")?"&":"?"}inline-assets=1`,{credentials:"same-origin"}).then((c)=>c.ok?c.text():Promise.reject(Error(`HTTP ${c.status}`))).then((c)=>{if(!a)o({url:e,html:c})}).catch((c)=>{if(console.error("[surface-frame] srcdoc fetch failed, falling back to src:",e,c),!a)o({url:e,html:""})}),()=>{a=!0}},[s,e]),!e)return{};if(!s)return t===null&&r?{}:{src:e};if(n)return n.html?{srcdoc:n.html}:{src:n.url};return{}}function ll({node:e,expanded:t=!1}){let n=L(null),o=gt.value,r=Be(()=>`theme-${crypto.randomUUID()}`,[]),s=Be(()=>`frame-${crypto.randomUUID()}`,[]),a=typeof e.data.content==="string"?e.data.content:"",c=e.data.fit==="none"?"none":"contain",l=Be(()=>bi(`${c}:${a}`),[a,c]),u=Be(()=>a?Rs(e.id,{theme:o,themeToken:r,v:l,frameToken:s}):"",[a,r,l,e.id,s]),p=Ti(u);ki(e,n,t?"":s);let d=()=>{n.current?.contentWindow?.postMessage({source:Tn,type:"theme-update",token:r,theme:o},"*")};if(H(d,[o,r]),!a)return i("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"12px"},children:"No diagram source set"},void 0,!1,void 0,this);return i("iframe",{ref:n,class:"html-node-frame",title:typeof e.data.title==="string"?e.data.title:"Mermaid diagram",sandbox:"allow-scripts",...p,onLoad:d,style:{width:"100%",height:"100%",minHeight:t?"70vh":"0",border:"none",background:"var(--c-bg)",borderRadius:"6px",display:"block"}},void 0,!1,void 0,this)}var Np=["harbor","daylight","high-contrast","midnight","sepia","arctic","ember","forest","volt"];function Ls(e){return typeof e==="string"&&Np.includes(e)}function zp(e,t="harbor"){return Ls(e)?e:t}var Ci={harbor:{label:"Harbor",scheme:"dark",swatchBg:"#081524",swatchAccent:"#4BBCFF"},daylight:{label:"Daylight",scheme:"light",swatchBg:"#F6F7F9",swatchAccent:"#1A7ABF"},"high-contrast":{label:"High contrast",scheme:"dark",swatchBg:"#000000",swatchAccent:"#00ffff"},midnight:{label:"Midnight",scheme:"dark",swatchBg:"#0A0D1C",swatchAccent:"#8B96FF"},sepia:{label:"Sepia",scheme:"light",swatchBg:"#F2E7D5",swatchAccent:"#B4632C"},arctic:{label:"Arctic",scheme:"dark",swatchBg:"#20242E",swatchAccent:"#7FC8DE"},ember:{label:"Ember",scheme:"dark",swatchBg:"#0B0B0C",swatchAccent:"#F34E1C"},forest:{label:"Forest",scheme:"dark",swatchBg:"#0C1712",swatchAccent:"#5CCF8F"},volt:{label:"Volt",scheme:"dark",swatchBg:"#0B0D0B",swatchAccent:"#DFDFC1"}};function Go(e){return Ci[zp(e)].scheme}var Vo="io.modelcontextprotocol/related-task",dl="2.0",Ot=Ey((e)=>e!==null&&(typeof e==="object"||typeof e==="function")),Qw=Ae([P(),ge().int()]),e_=P(),d2=Kt({ttl:Ae([ge(),cd()]).optional(),pollInterval:ge().optional()}),fI=O({ttl:ge().optional()}),hI=O({taskId:P()}),Rp=Kt({progressToken:Qw.optional(),[Vo]:hI.optional()}),vn=O({_meta:Rp.optional()}),Ds=vn.extend({task:fI.optional()}),t_=(e)=>Ds.safeParse(e).success,Lt=O({method:P(),params:vn.loose().optional()}),Cn=O({_meta:Rp.optional()}),En=O({method:P(),params:Cn.loose().optional()}),Dt=Kt({_meta:Rp.optional()}),Ai=Ae([P(),ge().int()]),n_=O({jsonrpc:C(dl),id:Ai,...Lt.shape}).strict(),Mp=(e)=>n_.safeParse(e).success,o_=O({jsonrpc:C(dl),...En.shape}).strict(),r_=(e)=>o_.safeParse(e).success,$p=O({jsonrpc:C(dl),id:Ai,result:Dt}).strict(),Fs=(e)=>$p.safeParse(e).success;var Ue;(function(e){e[e.ConnectionClosed=-32000]="ConnectionClosed",e[e.RequestTimeout=-32001]="RequestTimeout",e[e.ParseError=-32700]="ParseError",e[e.InvalidRequest=-32600]="InvalidRequest",e[e.MethodNotFound=-32601]="MethodNotFound",e[e.InvalidParams=-32602]="InvalidParams",e[e.InternalError=-32603]="InternalError",e[e.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(Ue||(Ue={}));var Op=O({jsonrpc:C(dl),id:Ai.optional(),error:O({code:ge().int(),message:P(),data:qe().optional()})}).strict();var i_=(e)=>Op.safeParse(e).success;var s_=Ae([n_,o_,$p,Op]),p2=Ae([$p,Op]),Lp=Dt.strict(),gI=Cn.extend({requestId:Ai.optional(),reason:P().optional()}),pl=En.extend({method:C("notifications/cancelled"),params:gI}),vI=O({src:P(),mimeType:P().optional(),sizes:he(P()).optional(),theme:Jt(["light","dark"]).optional()}),Bs=O({icons:he(vI).optional()}),Ei=O({name:P(),title:P().optional()}),Hs=Ei.extend({...Ei.shape,...Bs.shape,version:P(),websiteUrl:P().optional(),description:P().optional()}),yI=Wa(O({applyDefaults:Xe().optional()}),Ze(P(),qe())),bI=dd((e)=>{if(e&&typeof e==="object"&&!Array.isArray(e)){if(Object.keys(e).length===0)return{form:{}}}return e},Wa(O({form:yI.optional(),url:Ot.optional()}),Ze(P(),qe()).optional())),xI=Kt({list:Ot.optional(),cancel:Ot.optional(),requests:Kt({sampling:Kt({createMessage:Ot.optional()}).optional(),elicitation:Kt({create:Ot.optional()}).optional()}).optional()}),wI=Kt({list:Ot.optional(),cancel:Ot.optional(),requests:Kt({tools:Kt({call:Ot.optional()}).optional()}).optional()}),_I=O({experimental:Ze(P(),Ot).optional(),sampling:O({context:Ot.optional(),tools:Ot.optional()}).optional(),elicitation:bI.optional(),roots:O({listChanged:Xe().optional()}).optional(),tasks:xI.optional()}),SI=vn.extend({protocolVersion:P(),capabilities:_I,clientInfo:Hs}),kI=Lt.extend({method:C("initialize"),params:SI});var TI=O({experimental:Ze(P(),Ot).optional(),logging:Ot.optional(),completions:Ot.optional(),prompts:O({listChanged:Xe().optional()}).optional(),resources:O({subscribe:Xe().optional(),listChanged:Xe().optional()}).optional(),tools:O({listChanged:Xe().optional()}).optional(),tasks:wI.optional()}),CI=Dt.extend({protocolVersion:P(),capabilities:TI,serverInfo:Hs,instructions:P().optional()}),EI=En.extend({method:C("notifications/initialized"),params:Cn.optional()});var Ir=Lt.extend({method:C("ping"),params:vn.optional()}),AI=O({progress:ge(),total:at(ge()),message:at(P())}),II=O({...Cn.shape,...AI.shape,progressToken:Qw}),ml=En.extend({method:C("notifications/progress"),params:II}),PI=vn.extend({cursor:e_.optional()}),js=Lt.extend({params:PI.optional()}),Us=Dt.extend({nextCursor:e_.optional()}),NI=Jt(["working","input_required","completed","failed","cancelled"]),Zs=O({taskId:P(),status:NI,ttl:Ae([ge(),cd()]),createdAt:P(),lastUpdatedAt:P(),pollInterval:at(ge()),statusMessage:at(P())}),fl=Dt.extend({task:Zs}),zI=Cn.merge(Zs),Ws=En.extend({method:C("notifications/tasks/status"),params:zI}),hl=Lt.extend({method:C("tasks/get"),params:vn.extend({taskId:P()})}),gl=Dt.merge(Zs),vl=Lt.extend({method:C("tasks/result"),params:vn.extend({taskId:P()})}),m2=Dt.loose(),yl=js.extend({method:C("tasks/list")}),bl=Us.extend({tasks:he(Zs)}),xl=Lt.extend({method:C("tasks/cancel"),params:vn.extend({taskId:P()})}),a_=Dt.merge(Zs),c_=O({uri:P(),mimeType:at(P()),_meta:Ze(P(),qe()).optional()}),l_=c_.extend({text:P()}),Dp=P().refine((e)=>{try{return atob(e),!0}catch{return!1}},{message:"Invalid Base64 string"}),u_=c_.extend({blob:Dp}),qs=Jt(["user","assistant"]),Ii=O({audience:he(qs).optional(),priority:ge().min(0).max(1).optional(),lastModified:od({offset:!0}).optional()}),d_=O({...Ei.shape,...Bs.shape,uri:P(),description:at(P()),mimeType:at(P()),annotations:Ii.optional(),_meta:at(Kt({}))}),RI=O({...Ei.shape,...Bs.shape,uriTemplate:P(),description:at(P()),mimeType:at(P()),annotations:Ii.optional(),_meta:at(Kt({}))}),Fp=js.extend({method:C("resources/list")}),wl=Us.extend({resources:he(d_)}),Bp=js.extend({method:C("resources/templates/list")}),Hp=Us.extend({resourceTemplates:he(RI)}),jp=vn.extend({uri:P()}),MI=jp,Up=Lt.extend({method:C("resources/read"),params:MI}),_l=Dt.extend({contents:he(Ae([l_,u_]))}),Zp=En.extend({method:C("notifications/resources/list_changed"),params:Cn.optional()}),$I=jp,OI=Lt.extend({method:C("resources/subscribe"),params:$I}),LI=jp,DI=Lt.extend({method:C("resources/unsubscribe"),params:LI}),FI=Cn.extend({uri:P()}),BI=En.extend({method:C("notifications/resources/updated"),params:FI}),HI=O({name:P(),description:at(P()),required:at(Xe())}),jI=O({...Ei.shape,...Bs.shape,description:at(P()),arguments:at(he(HI)),_meta:at(Kt({}))}),Wp=js.extend({method:C("prompts/list")}),qp=Us.extend({prompts:he(jI)}),UI=vn.extend({name:P(),arguments:Ze(P(),P()).optional()}),ZI=Lt.extend({method:C("prompts/get"),params:UI}),Gp=O({type:C("text"),text:P(),annotations:Ii.optional(),_meta:Ze(P(),qe()).optional()}),Vp=O({type:C("image"),data:Dp,mimeType:P(),annotations:Ii.optional(),_meta:Ze(P(),qe()).optional()}),Xp=O({type:C("audio"),data:Dp,mimeType:P(),annotations:Ii.optional(),_meta:Ze(P(),qe()).optional()}),WI=O({type:C("tool_use"),name:P(),id:P(),input:Ze(P(),qe()),_meta:Ze(P(),qe()).optional()}),Kp=O({type:C("resource"),resource:Ae([l_,u_]),annotations:Ii.optional(),_meta:Ze(P(),qe()).optional()}),Jp=d_.extend({type:C("resource_link")}),Pi=Ae([Gp,Vp,Xp,Jp,Kp]),qI=O({role:qs,content:Pi}),GI=Dt.extend({description:P().optional(),messages:he(qI)}),Yp=En.extend({method:C("notifications/prompts/list_changed"),params:Cn.optional()}),VI=O({title:P().optional(),readOnlyHint:Xe().optional(),destructiveHint:Xe().optional(),idempotentHint:Xe().optional(),openWorldHint:Xe().optional()}),XI=O({taskSupport:Jt(["required","optional","forbidden"]).optional()}),Sl=O({...Ei.shape,...Bs.shape,description:P().optional(),inputSchema:O({type:C("object"),properties:Ze(P(),Ot).optional(),required:he(P()).optional()}).catchall(qe()),outputSchema:O({type:C("object"),properties:Ze(P(),Ot).optional(),required:he(P()).optional()}).catchall(qe()).optional(),annotations:VI.optional(),execution:XI.optional(),_meta:Ze(P(),qe()).optional()}),kl=js.extend({method:C("tools/list")}),KI=Us.extend({tools:he(Sl)}),Pr=Dt.extend({content:he(Pi).default([]),structuredContent:Ze(P(),qe()).optional(),isError:Xe().optional()}),f2=Pr.or(Dt.extend({toolResult:qe()})),JI=Ds.extend({name:P(),arguments:Ze(P(),qe()).optional()}),Tl=Lt.extend({method:C("tools/call"),params:JI}),Qp=En.extend({method:C("notifications/tools/list_changed"),params:Cn.optional()}),h2=O({autoRefresh:Xe().default(!0),debounceMs:ge().int().nonnegative().default(300)}),p_=Jt(["debug","info","notice","warning","error","critical","alert","emergency"]),YI=vn.extend({level:p_}),QI=Lt.extend({method:C("logging/setLevel"),params:YI}),e1=Cn.extend({level:p_,logger:P().optional(),data:qe()}),em=En.extend({method:C("notifications/message"),params:e1}),t1=O({name:P().optional()}),n1=O({hints:he(t1).optional(),costPriority:ge().min(0).max(1).optional(),speedPriority:ge().min(0).max(1).optional(),intelligencePriority:ge().min(0).max(1).optional()}),o1=O({mode:Jt(["auto","required","none"]).optional()}),r1=O({type:C("tool_result"),toolUseId:P().describe("The unique identifier for the corresponding tool call."),content:he(Pi).default([]),structuredContent:O({}).loose().optional(),isError:Xe().optional(),_meta:Ze(P(),qe()).optional()}),i1=ud("type",[Gp,Vp,Xp]),ul=ud("type",[Gp,Vp,Xp,WI,r1]),s1=O({role:qs,content:Ae([ul,he(ul)]),_meta:Ze(P(),qe()).optional()}),a1=Ds.extend({messages:he(s1),modelPreferences:n1.optional(),systemPrompt:P().optional(),includeContext:Jt(["none","thisServer","allServers"]).optional(),temperature:ge().optional(),maxTokens:ge().int(),stopSequences:he(P()).optional(),metadata:Ot.optional(),tools:he(Sl).optional(),toolChoice:o1.optional()}),c1=Lt.extend({method:C("sampling/createMessage"),params:a1}),l1=Dt.extend({model:P(),stopReason:at(Jt(["endTurn","stopSequence","maxTokens"]).or(P())),role:qs,content:i1}),u1=Dt.extend({model:P(),stopReason:at(Jt(["endTurn","stopSequence","maxTokens","toolUse"]).or(P())),role:qs,content:Ae([ul,he(ul)])}),d1=O({type:C("boolean"),title:P().optional(),description:P().optional(),default:Xe().optional()}),p1=O({type:C("string"),title:P().optional(),description:P().optional(),minLength:ge().optional(),maxLength:ge().optional(),format:Jt(["email","uri","date","date-time"]).optional(),default:P().optional()}),m1=O({type:Jt(["number","integer"]),title:P().optional(),description:P().optional(),minimum:ge().optional(),maximum:ge().optional(),default:ge().optional()}),f1=O({type:C("string"),title:P().optional(),description:P().optional(),enum:he(P()),default:P().optional()}),h1=O({type:C("string"),title:P().optional(),description:P().optional(),oneOf:he(O({const:P(),title:P()})),default:P().optional()}),g1=O({type:C("string"),title:P().optional(),description:P().optional(),enum:he(P()),enumNames:he(P()).optional(),default:P().optional()}),v1=Ae([f1,h1]),y1=O({type:C("array"),title:P().optional(),description:P().optional(),minItems:ge().optional(),maxItems:ge().optional(),items:O({type:C("string"),enum:he(P())}),default:he(P()).optional()}),b1=O({type:C("array"),title:P().optional(),description:P().optional(),minItems:ge().optional(),maxItems:ge().optional(),items:O({anyOf:he(O({const:P(),title:P()}))}),default:he(P()).optional()}),x1=Ae([y1,b1]),w1=Ae([g1,v1,x1]),_1=Ae([w1,d1,p1,m1]),S1=Ds.extend({mode:C("form").optional(),message:P(),requestedSchema:O({type:C("object"),properties:Ze(P(),_1),required:he(P()).optional()})}),k1=Ds.extend({mode:C("url"),message:P(),elicitationId:P(),url:P().url()}),T1=Ae([S1,k1]),C1=Lt.extend({method:C("elicitation/create"),params:T1}),E1=Cn.extend({elicitationId:P()}),A1=En.extend({method:C("notifications/elicitation/complete"),params:E1}),I1=Dt.extend({action:Jt(["accept","decline","cancel"]),content:dd((e)=>e===null?void 0:e,Ze(P(),Ae([P(),ge(),Xe(),he(P())])).optional())}),P1=O({type:C("ref/resource"),uri:P()});var N1=O({type:C("ref/prompt"),name:P()}),z1=vn.extend({ref:Ae([N1,P1]),argument:O({name:P(),value:P()}),context:O({arguments:Ze(P(),P()).optional()}).optional()}),R1=Lt.extend({method:C("completion/complete"),params:z1});var M1=Dt.extend({completion:Kt({values:he(P()).max(100),total:at(ge().int()),hasMore:at(Xe())})}),$1=O({uri:P().startsWith("file://"),name:P().optional(),_meta:Ze(P(),qe()).optional()}),O1=Lt.extend({method:C("roots/list"),params:vn.optional()}),L1=Dt.extend({roots:he($1)}),D1=En.extend({method:C("notifications/roots/list_changed"),params:Cn.optional()}),g2=Ae([Ir,kI,R1,QI,ZI,Wp,Fp,Bp,Up,OI,DI,Tl,kl,hl,vl,yl,xl]),v2=Ae([pl,ml,EI,D1,Ws]),y2=Ae([Lp,l1,u1,I1,L1,gl,bl,fl]),b2=Ae([Ir,c1,C1,O1,hl,vl,yl,xl]),x2=Ae([pl,ml,em,BI,Zp,Qp,Yp,Ws,A1]),w2=Ae([Lp,CI,M1,GI,qp,wl,Hp,_l,Pr,KI,gl,bl,fl]);class Re extends Error{constructor(e,t,n){super(`MCP error ${e}: ${t}`);this.code=e,this.data=n,this.name="McpError"}static fromError(e,t,n){if(e===Ue.UrlElicitationRequired&&n){let o=n;if(o.elicitations)return new m_(o.elicitations,t)}return new Re(e,t,n)}}class m_ extends Re{constructor(e,t=`URL elicitation${e.length>1?"s":""} required`){super(Ue.UrlElicitationRequired,t,{elicitations:e})}get elicitations(){return this.data?.elicitations??[]}}function Cl(e){return!!e._zod}function El(e,t){if(Cl(e))return is(e,t);return e.safeParse(t)}function f_(e){if(!e)return;let t;if(Cl(e))t=e._zod?.def?.shape;else t=e.shape;if(!t)return;if(typeof t==="function")try{return t()}catch{return}return t}function h_(e){if(Cl(e)){let s=e._zod?.def;if(s){if(s.value!==void 0)return s.value;if(Array.isArray(s.values)&&s.values.length>0)return s.values[0]}}let n=e._def;if(n){if(n.value!==void 0)return n.value;if(Array.isArray(n.values)&&n.values.length>0)return n.values[0]}let o=e.value;if(o!==void 0)return o;return}function Xo(e){return e==="completed"||e==="failed"||e==="cancelled"}var F1=Symbol("Let zodToJsonSchema decide on which parser to use");var mF=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function tm(e){let n=f_(e)?.method;if(!n)throw Error("Schema is missing a method literal");let o=h_(n);if(typeof o!=="string")throw Error("Schema method literal must be a string");return o}function nm(e,t){let n=El(e,t);if(!n.success)throw n.error;return n.data}var W1=60000;class Al{constructor(e){if(this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(pl,(t)=>{this._oncancel(t)}),this.setNotificationHandler(ml,(t)=>{this._onprogress(t)}),this.setRequestHandler(Ir,(t)=>({})),this._taskStore=e?.taskStore,this._taskMessageQueue=e?.taskMessageQueue,this._taskStore)this.setRequestHandler(hl,async(t,n)=>{let o=await this._taskStore.getTask(t.params.taskId,n.sessionId);if(!o)throw new Re(Ue.InvalidParams,"Failed to retrieve task: Task not found");return{...o}}),this.setRequestHandler(vl,async(t,n)=>{let o=async()=>{let r=t.params.taskId;if(this._taskMessageQueue){let a;while(a=await this._taskMessageQueue.dequeue(r,n.sessionId)){if(a.type==="response"||a.type==="error"){let c=a.message,l=c.id,u=this._requestResolvers.get(l);if(u)if(this._requestResolvers.delete(l),a.type==="response")u(c);else{let p=c,d=new Re(p.error.code,p.error.message,p.error.data);u(d)}else{let p=a.type==="response"?"Response":"Error";this._onerror(Error(`${p} handler missing for request ${l}`))}continue}await this._transport?.send(a.message,{relatedRequestId:n.requestId})}}let s=await this._taskStore.getTask(r,n.sessionId);if(!s)throw new Re(Ue.InvalidParams,`Task not found: ${r}`);if(!Xo(s.status))return await this._waitForTaskUpdate(r,n.signal),await o();if(Xo(s.status)){let a=await this._taskStore.getTaskResult(r,n.sessionId);return this._clearTaskQueue(r),{...a,_meta:{...a._meta,[Vo]:{taskId:r}}}}return await o()};return await o()}),this.setRequestHandler(yl,async(t,n)=>{try{let{tasks:o,nextCursor:r}=await this._taskStore.listTasks(t.params?.cursor,n.sessionId);return{tasks:o,nextCursor:r,_meta:{}}}catch(o){throw new Re(Ue.InvalidParams,`Failed to list tasks: ${o instanceof Error?o.message:String(o)}`)}}),this.setRequestHandler(xl,async(t,n)=>{try{let o=await this._taskStore.getTask(t.params.taskId,n.sessionId);if(!o)throw new Re(Ue.InvalidParams,`Task not found: ${t.params.taskId}`);if(Xo(o.status))throw new Re(Ue.InvalidParams,`Cannot cancel task in terminal status: ${o.status}`);await this._taskStore.updateTaskStatus(t.params.taskId,"cancelled","Client cancelled task execution.",n.sessionId),this._clearTaskQueue(t.params.taskId);let r=await this._taskStore.getTask(t.params.taskId,n.sessionId);if(!r)throw new Re(Ue.InvalidParams,`Task not found after cancellation: ${t.params.taskId}`);return{_meta:{},...r}}catch(o){if(o instanceof Re)throw o;throw new Re(Ue.InvalidRequest,`Failed to cancel task: ${o instanceof Error?o.message:String(o)}`)}})}async _oncancel(e){if(!e.params.requestId)return;this._requestHandlerAbortControllers.get(e.params.requestId)?.abort(e.params.reason)}_setupTimeout(e,t,n,o,r=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(o,t),startTime:Date.now(),timeout:t,maxTotalTimeout:n,resetTimeoutOnProgress:r,onTimeout:o})}_resetTimeout(e){let t=this._timeoutInfo.get(e);if(!t)return!1;let n=Date.now()-t.startTime;if(t.maxTotalTimeout&&n>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),Re.fromError(Ue.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:n});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){let t=this._timeoutInfo.get(e);if(t)clearTimeout(t.timeoutId),this._timeoutInfo.delete(e)}async connect(e){if(this._transport)throw Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=e;let t=this.transport?.onclose;this._transport.onclose=()=>{t?.(),this._onclose()};let n=this.transport?.onerror;this._transport.onerror=(r)=>{n?.(r),this._onerror(r)};let o=this._transport?.onmessage;this._transport.onmessage=(r,s)=>{if(o?.(r,s),Fs(r)||i_(r))this._onresponse(r);else if(Mp(r))this._onrequest(r,s);else if(r_(r))this._onnotification(r);else this._onerror(Error(`Unknown message type: ${JSON.stringify(r)}`))},await this._transport.start()}_onclose(){let e=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let n of this._timeoutInfo.values())clearTimeout(n.timeoutId);this._timeoutInfo.clear();for(let n of this._requestHandlerAbortControllers.values())n.abort();this._requestHandlerAbortControllers.clear();let t=Re.fromError(Ue.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let n of e.values())n(t)}_onerror(e){this.onerror?.(e)}_onnotification(e){let t=this._notificationHandlers.get(e.method)??this.fallbackNotificationHandler;if(t===void 0)return;Promise.resolve().then(()=>t(e)).catch((n)=>this._onerror(Error(`Uncaught error in notification handler: ${n}`)))}_onrequest(e,t){let n=this._requestHandlers.get(e.method)??this.fallbackRequestHandler,o=this._transport,r=e.params?._meta?.[Vo]?.taskId;if(n===void 0){let u={jsonrpc:"2.0",id:e.id,error:{code:Ue.MethodNotFound,message:"Method not found"}};if(r&&this._taskMessageQueue)this._enqueueTaskMessage(r,{type:"error",message:u,timestamp:Date.now()},o?.sessionId).catch((p)=>this._onerror(Error(`Failed to enqueue error response: ${p}`)));else o?.send(u).catch((p)=>this._onerror(Error(`Failed to send an error response: ${p}`)));return}let s=new AbortController;this._requestHandlerAbortControllers.set(e.id,s);let a=t_(e.params)?e.params.task:void 0,c=this._taskStore?this.requestTaskStore(e,o?.sessionId):void 0,l={signal:s.signal,sessionId:o?.sessionId,_meta:e.params?._meta,sendNotification:async(u)=>{if(s.signal.aborted)return;let p={relatedRequestId:e.id};if(r)p.relatedTask={taskId:r};await this.notification(u,p)},sendRequest:async(u,p,d)=>{if(s.signal.aborted)throw new Re(Ue.ConnectionClosed,"Request was cancelled");let m={...d,relatedRequestId:e.id};if(r&&!m.relatedTask)m.relatedTask={taskId:r};let f=m.relatedTask?.taskId??r;if(f&&c)await c.updateTaskStatus(f,"input_required");return await this.request(u,p,m)},authInfo:t?.authInfo,requestId:e.id,requestInfo:t?.requestInfo,taskId:r,taskStore:c,taskRequestedTtl:a?.ttl,closeSSEStream:t?.closeSSEStream,closeStandaloneSSEStream:t?.closeStandaloneSSEStream};Promise.resolve().then(()=>{if(a)this.assertTaskHandlerCapability(e.method)}).then(()=>n(e,l)).then(async(u)=>{if(s.signal.aborted)return;let p={result:u,jsonrpc:"2.0",id:e.id};if(r&&this._taskMessageQueue)await this._enqueueTaskMessage(r,{type:"response",message:p,timestamp:Date.now()},o?.sessionId);else await o?.send(p)},async(u)=>{if(s.signal.aborted)return;let p={jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(u.code)?u.code:Ue.InternalError,message:u.message??"Internal error",...u.data!==void 0&&{data:u.data}}};if(r&&this._taskMessageQueue)await this._enqueueTaskMessage(r,{type:"error",message:p,timestamp:Date.now()},o?.sessionId);else await o?.send(p)}).catch((u)=>this._onerror(Error(`Failed to send response: ${u}`))).finally(()=>{if(this._requestHandlerAbortControllers.get(e.id)===s)this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:t,...n}=e.params,o=Number(t),r=this._progressHandlers.get(o);if(!r){this._onerror(Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let s=this._responseHandlers.get(o),a=this._timeoutInfo.get(o);if(a&&s&&a.resetTimeoutOnProgress)try{this._resetTimeout(o)}catch(c){this._responseHandlers.delete(o),this._progressHandlers.delete(o),this._cleanupTimeout(o),s(c);return}r(n)}_onresponse(e){let t=Number(e.id),n=this._requestResolvers.get(t);if(n){if(this._requestResolvers.delete(t),Fs(e))n(e);else{let s=new Re(e.error.code,e.error.message,e.error.data);n(s)}return}let o=this._responseHandlers.get(t);if(o===void 0){this._onerror(Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}this._responseHandlers.delete(t),this._cleanupTimeout(t);let r=!1;if(Fs(e)&&e.result&&typeof e.result==="object"){let s=e.result;if(s.task&&typeof s.task==="object"){let a=s.task;if(typeof a.taskId==="string")r=!0,this._taskProgressTokens.set(a.taskId,t)}}if(!r)this._progressHandlers.delete(t);if(Fs(e))o(e);else{let s=Re.fromError(e.error.code,e.error.message,e.error.data);o(s)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(e,t,n){let{task:o}=n??{};if(!o){try{yield{type:"result",result:await this.request(e,t,n)}}catch(s){yield{type:"error",error:s instanceof Re?s:new Re(Ue.InternalError,String(s))}}return}let r;try{let s=await this.request(e,fl,n);if(s.task)r=s.task.taskId,yield{type:"taskCreated",task:s.task};else throw new Re(Ue.InternalError,"Task creation did not return a task");while(!0){let a=await this.getTask({taskId:r},n);if(yield{type:"taskStatus",task:a},Xo(a.status)){if(a.status==="completed")yield{type:"result",result:await this.getTaskResult({taskId:r},t,n)};else if(a.status==="failed")yield{type:"error",error:new Re(Ue.InternalError,`Task ${r} failed`)};else if(a.status==="cancelled")yield{type:"error",error:new Re(Ue.InternalError,`Task ${r} was cancelled`)};return}if(a.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:r},t,n)};return}let c=a.pollInterval??this._options?.defaultTaskPollInterval??1000;await new Promise((l)=>setTimeout(l,c)),n?.signal?.throwIfAborted()}}catch(s){yield{type:"error",error:s instanceof Re?s:new Re(Ue.InternalError,String(s))}}}request(e,t,n){let{relatedRequestId:o,resumptionToken:r,onresumptiontoken:s,task:a,relatedTask:c}=n??{};return new Promise((l,u)=>{let p=(g)=>{u(g)};if(!this._transport){p(Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{if(this.assertCapabilityForMethod(e.method),a)this.assertTaskCapability(e.method)}catch(g){p(g);return}n?.signal?.throwIfAborted();let d=this._requestMessageId++,m={...e,jsonrpc:"2.0",id:d};if(n?.onprogress)this._progressHandlers.set(d,n.onprogress),m.params={...e.params,_meta:{...e.params?._meta||{},progressToken:d}};if(a)m.params={...m.params,task:a};if(c)m.params={...m.params,_meta:{...m.params?._meta||{},[Vo]:c}};let f=(g)=>{this._responseHandlers.delete(d),this._progressHandlers.delete(d),this._cleanupTimeout(d),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:d,reason:String(g)}},{relatedRequestId:o,resumptionToken:r,onresumptiontoken:s}).catch((I)=>this._onerror(Error(`Failed to send cancellation: ${I}`)));let b=g instanceof Re?g:new Re(Ue.RequestTimeout,String(g));u(b)};this._responseHandlers.set(d,(g)=>{if(n?.signal?.aborted)return;if(g instanceof Error)return u(g);try{let b=El(t,g.result);if(!b.success)u(b.error);else l(b.data)}catch(b){u(b)}}),n?.signal?.addEventListener("abort",()=>{f(n?.signal?.reason)});let h=n?.timeout??W1,v=()=>f(Re.fromError(Ue.RequestTimeout,"Request timed out",{timeout:h}));this._setupTimeout(d,h,n?.maxTotalTimeout,v,n?.resetTimeoutOnProgress??!1);let x=c?.taskId;if(x){let g=(b)=>{let I=this._responseHandlers.get(d);if(I)I(b);else this._onerror(Error(`Response handler missing for side-channeled request ${d}`))};this._requestResolvers.set(d,g),this._enqueueTaskMessage(x,{type:"request",message:m,timestamp:Date.now()}).catch((b)=>{this._cleanupTimeout(d),u(b)})}else this._transport.send(m,{relatedRequestId:o,resumptionToken:r,onresumptiontoken:s}).catch((g)=>{this._cleanupTimeout(d),u(g)})})}async getTask(e,t){return this.request({method:"tasks/get",params:e},gl,t)}async getTaskResult(e,t,n){return this.request({method:"tasks/result",params:e},t,n)}async listTasks(e,t){return this.request({method:"tasks/list",params:e},bl,t)}async cancelTask(e,t){return this.request({method:"tasks/cancel",params:e},a_,t)}async notification(e,t){if(!this._transport)throw Error("Not connected");this.assertNotificationCapability(e.method);let n=t?.relatedTask?.taskId;if(n){let a={...e,jsonrpc:"2.0",params:{...e.params,_meta:{...e.params?._meta||{},[Vo]:t.relatedTask}}};await this._enqueueTaskMessage(n,{type:"notification",message:a,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(e.method)&&!e.params&&!t?.relatedRequestId&&!t?.relatedTask){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let a={...e,jsonrpc:"2.0"};if(t?.relatedTask)a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[Vo]:t.relatedTask}}};this._transport?.send(a,t).catch((c)=>this._onerror(c))});return}let s={...e,jsonrpc:"2.0"};if(t?.relatedTask)s={...s,params:{...s.params,_meta:{...s.params?._meta||{},[Vo]:t.relatedTask}}};await this._transport.send(s,t)}setRequestHandler(e,t){let n=tm(e);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(o,r)=>{let s=nm(e,o);return Promise.resolve(t(s,r))})}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,t){let n=tm(e);this._notificationHandlers.set(n,(o)=>{let r=nm(e,o);return Promise.resolve(t(r))})}removeNotificationHandler(e){this._notificationHandlers.delete(e)}_cleanupTaskProgressHandler(e){let t=this._taskProgressTokens.get(e);if(t!==void 0)this._progressHandlers.delete(t),this._taskProgressTokens.delete(e)}async _enqueueTaskMessage(e,t,n){if(!this._taskStore||!this._taskMessageQueue)throw Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let o=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(e,t,n,o)}async _clearTaskQueue(e,t){if(this._taskMessageQueue){let n=await this._taskMessageQueue.dequeueAll(e,t);for(let o of n)if(o.type==="request"&&Mp(o.message)){let r=o.message.id,s=this._requestResolvers.get(r);if(s)s(new Re(Ue.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(r);else this._onerror(Error(`Resolver missing for request ${r} during task ${e} cleanup`))}}}async _waitForTaskUpdate(e,t){let n=this._options?.defaultTaskPollInterval??1000;try{let o=await this._taskStore?.getTask(e);if(o?.pollInterval)n=o.pollInterval}catch{}return new Promise((o,r)=>{if(t.aborted){r(new Re(Ue.InvalidRequest,"Request cancelled"));return}let s=setTimeout(o,n);t.addEventListener("abort",()=>{clearTimeout(s),r(new Re(Ue.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(e,t){let n=this._taskStore;if(!n)throw Error("No task store configured");return{createTask:async(o)=>{if(!e)throw Error("No request provided");return await n.createTask(o,e.id,{method:e.method,params:e.params},t)},getTask:async(o)=>{let r=await n.getTask(o,t);if(!r)throw new Re(Ue.InvalidParams,"Failed to retrieve task: Task not found");return r},storeTaskResult:async(o,r,s)=>{await n.storeTaskResult(o,r,s,t);let a=await n.getTask(o,t);if(a){let c=Ws.parse({method:"notifications/tasks/status",params:a});if(await this.notification(c),Xo(a.status))this._cleanupTaskProgressHandler(o)}},getTaskResult:(o)=>n.getTaskResult(o,t),updateTaskStatus:async(o,r,s)=>{let a=await n.getTask(o,t);if(!a)throw new Re(Ue.InvalidParams,`Task "${o}" not found - it may have been cleaned up`);if(Xo(a.status))throw new Re(Ue.InvalidParams,`Cannot update task "${o}" from terminal status "${a.status}" to "${r}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(o,r,s,t);let c=await n.getTask(o,t);if(c){let l=Ws.parse({method:"notifications/tasks/status",params:c});if(await this.notification(l),Xo(c.status))this._cleanupTaskProgressHandler(o)}},listTasks:(o)=>n.listTasks(o,t)}}}var y_="2026-01-26";var q1="ui/notifications/tool-input-partial";var G1=Ae([C("light"),C("dark")]).describe("Color theme preference for the host environment."),Vs=Ae([C("inline"),C("fullscreen"),C("pip")]).describe("Display mode for UI presentation."),V1=Ae([C("--color-background-primary"),C("--color-background-secondary"),C("--color-background-tertiary"),C("--color-background-inverse"),C("--color-background-ghost"),C("--color-background-info"),C("--color-background-danger"),C("--color-background-success"),C("--color-background-warning"),C("--color-background-disabled"),C("--color-text-primary"),C("--color-text-secondary"),C("--color-text-tertiary"),C("--color-text-inverse"),C("--color-text-ghost"),C("--color-text-info"),C("--color-text-danger"),C("--color-text-success"),C("--color-text-warning"),C("--color-text-disabled"),C("--color-border-primary"),C("--color-border-secondary"),C("--color-border-tertiary"),C("--color-border-inverse"),C("--color-border-ghost"),C("--color-border-info"),C("--color-border-danger"),C("--color-border-success"),C("--color-border-warning"),C("--color-border-disabled"),C("--color-ring-primary"),C("--color-ring-secondary"),C("--color-ring-inverse"),C("--color-ring-info"),C("--color-ring-danger"),C("--color-ring-success"),C("--color-ring-warning"),C("--font-sans"),C("--font-mono"),C("--font-weight-normal"),C("--font-weight-medium"),C("--font-weight-semibold"),C("--font-weight-bold"),C("--font-text-xs-size"),C("--font-text-sm-size"),C("--font-text-md-size"),C("--font-text-lg-size"),C("--font-heading-xs-size"),C("--font-heading-sm-size"),C("--font-heading-md-size"),C("--font-heading-lg-size"),C("--font-heading-xl-size"),C("--font-heading-2xl-size"),C("--font-heading-3xl-size"),C("--font-text-xs-line-height"),C("--font-text-sm-line-height"),C("--font-text-md-line-height"),C("--font-text-lg-line-height"),C("--font-heading-xs-line-height"),C("--font-heading-sm-line-height"),C("--font-heading-md-line-height"),C("--font-heading-lg-line-height"),C("--font-heading-xl-line-height"),C("--font-heading-2xl-line-height"),C("--font-heading-3xl-line-height"),C("--border-radius-xs"),C("--border-radius-sm"),C("--border-radius-md"),C("--border-radius-lg"),C("--border-radius-xl"),C("--border-radius-full"),C("--border-width-regular"),C("--shadow-hairline"),C("--shadow-sm"),C("--shadow-md"),C("--shadow-lg")]).describe("CSS variable keys available to MCP apps for theming."),X1=Ze(V1.describe(`Style variables for theming MCP apps.
|
|
220
|
+
`.substring(0,i);return n+s+o}function G1(e){return e!=null&&(typeof e==="string"||e.nodeType&&(e.nodeType===1||e.nodeType===9||e.nodeType===11))}function Wu(){let e=window.getSelection(),t=e&&e.rangeCount>0?e.getRangeAt(0).cloneRange():null;Dn("Link URL","https://example.com").then((n)=>{if(!n)return;let o=n.trim().toLowerCase();if(o.startsWith("javascript:")||o.startsWith("data:"))return;if(t){let i=window.getSelection();i?.removeAllRanges(),i?.addRange(t)}document.execCommand("createLink",!1,n)})}function C0(){let e=window.getSelection();if(!e||e.rangeCount===0)return;let t=e.getRangeAt(0);if(t.collapsed)return;let n=t.toString(),o=document.createElement("code");o.textContent=n,t.deleteContents(),t.insertNode(o);let i=document.createRange();i.setStartAfter(o),i.setEndAfter(o),e.removeAllRanges(),e.addRange(i)}var qu=8,K1=[{kind:"exec",command:"bold",icon:"B",title:`Bold (${Bt("B")})`},{kind:"exec",command:"italic",icon:"I",title:`Italic (${Bt("I")})`},{kind:"exec",command:"strikeThrough",icon:"S",title:"Strikethrough"},{kind:"code",icon:"{ }",title:"Inline code",dividerBefore:!0},{kind:"block",tag:"H1",icon:"H1",title:"Heading 1",dividerBefore:!0},{kind:"block",tag:"H2",icon:"H2",title:"Heading 2"},{kind:"block",tag:"H3",icon:"H3",title:"Heading 3"},{kind:"block",tag:"P",icon:"¶",title:"Paragraph"},{kind:"block",tag:"BLOCKQUOTE",icon:"❝",title:"Quote",dividerBefore:!0},{kind:"exec",command:"insertUnorderedList",icon:"•",title:"Bullet list"},{kind:"exec",command:"insertOrderedList",icon:"1.",title:"Numbered list"},{kind:"link",icon:"\uD83D\uDD17",title:`Link (${Bt("K")})`,dividerBefore:!0}];function V1(e){switch(e.kind){case"exec":document.execCommand(e.command);return;case"block":document.execCommand("formatBlock",!1,e.tag);return;case"code":C0();return;case"link":Wu();return}}function T0({hostRef:e,onChange:t}){let[n,o]=E(!1),[i,s]=E({top:0,left:0}),[a,l]=E(0),c=D(null),u=D(null),d=oe(()=>{let m=e.current;if(!m){o(!1);return}let h=window.getSelection();if(!h||h.rangeCount===0||h.isCollapsed){o(!1);return}let g=h.getRangeAt(0);if(!m.contains(g.commonAncestorContainer)){o(!1);return}let y=g.getBoundingClientRect();if(y.width===0&&y.height===0){o(!1);return}let b=a||420,x=Math.max(qu,Math.min(y.left+y.width/2-b/2,window.innerWidth-b-qu)),C=Math.max(qu,y.top-qu-36);s({top:C,left:x}),o(!0)},[e,a]),p=oe(()=>{if(u.current!==null)return;u.current=requestAnimationFrame(()=>{u.current=null,d()})},[d]);q(()=>(document.addEventListener("selectionchange",p),window.addEventListener("scroll",p,!0),window.addEventListener("resize",p),()=>{if(document.removeEventListener("selectionchange",p),window.removeEventListener("scroll",p,!0),window.removeEventListener("resize",p),u.current!==null)cancelAnimationFrame(u.current)}),[p]),Me(()=>{if(!n)return;let m=c.current;if(!m)return;let h=m.getBoundingClientRect().width;if(h&&Math.abs(h-a)>1)l(h)},[n,a]);let f=oe((m)=>{V1(m),t(),d()},[t,d]);if(!n)return null;return r("div",{ref:c,class:"md-inline-format-bar",style:{top:`${i.top}px`,left:`${i.left}px`},onMouseDown:(m)=>m.preventDefault(),children:K1.flatMap((m,h)=>{let g=r(_e,{label:m.title,children:r("button",{type:"button",class:"md-inline-format-btn","aria-label":m.title,onClick:()=>f(m),children:m.icon},void 0,!1,void 0,this)},`btn-${h}`,!1,void 0,this);return m.dividerBefore?[r("span",{class:"md-inline-format-divider"},`div-${h}`,!1,void 0,this),g]:[g]})},void 0,!1,void 0,this)}/*! @license DOMPurify 3.4.13 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.13/LICENSE */function I0(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function X1(e){if(Array.isArray(e))return e}function J1(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var o,i,s,a,l=[],c=!0,u=!1;try{if(s=(n=n.call(e)).next,t===0);else for(;!(c=(o=s.call(n)).done)&&(l.push(o.value),l.length!==t);c=!0);}catch(d){u=!0,i=d}finally{try{if(!c&&n.return!=null&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return l}}function Y1(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
221
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Q1(e,t){return X1(e)||J1(e,t)||eN(e,t)||Y1()}function eN(e,t){if(e){if(typeof e=="string")return I0(e,t);var n={}.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?I0(e,t):void 0}}var{entries:U0,setPrototypeOf:E0,isFrozen:tN,getPrototypeOf:nN,getOwnPropertyDescriptor:oN,freeze:_n,seal:Cn,create:Gs}=Object,j0=typeof Reflect<"u"&&Reflect,{apply:Km,construct:Vm}=j0;if(!_n)_n=function(t){return t};if(!Cn)Cn=function(t){return t};if(!Km)Km=function(t,n){for(var o=arguments.length,i=Array(o>2?o-2:0),s=2;s<o;s++)i[s-2]=arguments[s];return t.apply(n,i)};if(!Vm)Vm=function(t){for(var n=arguments.length,o=Array(n>1?n-1:0),i=1;i<n;i++)o[i-1]=arguments[i];return new t(...o)};var Ws=nn(Array.prototype.forEach),rN=nn(Array.prototype.lastIndexOf),A0=nn(Array.prototype.pop),qs=nn(Array.prototype.push),iN=nn(Array.prototype.splice),ai=Array.isArray,_l=nn(String.prototype.toLowerCase),jm=nn(String.prototype.toString),R0=nn(String.prototype.match),kl=nn(String.prototype.replace),P0=nn(String.prototype.indexOf),sN=nn(String.prototype.trim),aN=nn(Number.prototype.toString),lN=nn(Boolean.prototype.toString),N0=typeof BigInt>"u"?null:nn(BigInt.prototype.toString),M0=typeof Symbol>"u"?null:nn(Symbol.prototype.toString),yn=nn(Object.prototype.hasOwnProperty),Sl=nn(Object.prototype.toString),gn=nn(RegExp.prototype.test),Vi=cN(TypeError);function nn(e){return function(t){if(t instanceof RegExp)t.lastIndex=0;for(var n=arguments.length,o=Array(n>1?n-1:0),i=1;i<n;i++)o[i-1]=arguments[i];return Km(e,t,o)}}function cN(e){return function(){for(var t=arguments.length,n=Array(t),o=0;o<t;o++)n[o]=arguments[o];return Vm(e,n)}}function at(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:_l;if(E0)E0(e,null);if(!ai(t))return e;let o=t.length;while(o--){let i=t[o];if(typeof i==="string"){let s=n(i);if(s!==i){if(!tN(t))t[o]=s;i=s}}e[i]=!0}return e}function uN(e){for(let t=0;t<e.length;t++)if(!yn(e,t))e[t]=null;return e}function Fn(e){let t=Gs(null);for(let o of U0(e)){var n=Q1(o,2);let i=n[0],s=n[1];if(yn(e,i))if(ai(s))t[i]=uN(s);else if(s&&typeof s==="object"&&s.constructor===Object)t[i]=Fn(s);else t[i]=s}return t}function dN(e){switch(typeof e){case"string":return e;case"number":return aN(e);case"boolean":return lN(e);case"bigint":return N0?N0(e):"0";case"symbol":return M0?M0(e):"Symbol()";case"undefined":return Sl(e);case"function":case"object":{if(e===null)return Sl(e);let t=e,n=Fo(t,"toString");if(typeof n==="function"){let o=n(t);return typeof o==="string"?o:Sl(o)}return Sl(e)}default:return Sl(e)}}function Fo(e,t){while(e!==null){let o=oN(e,t);if(o){if(o.get)return nn(o.get);if(typeof o.value==="function")return nn(o.value)}e=nN(e)}function n(){return null}return n}function pN(e){try{return gn(e,""),!0}catch(t){return!1}}var z0=_n(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Zm=_n(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Wm=_n(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),fN=_n(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),qm=_n(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),mN=_n(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),$0=_n(["#text"]),L0=_n(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),Gm=_n(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),O0=_n(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Gu=_n(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),hN=Cn(/{{[\w\W]*|^[\w\W]*}}/g),gN=Cn(/<%[\w\W]*|^[\w\W]*%>/g),yN=Cn(/\${[\w\W]*/g),vN=Cn(/^data-[\-\w.\u00B7-\uFFFF]+$/),bN=Cn(/^aria-[\-\w]+$/),D0=Cn(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),xN=Cn(/^(?:\w+script|data):/i),wN=Cn(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),kN=Cn(/^html$/i),SN=Cn(/^[a-z][.\w]*(-[.\w]+)+$/i),B0=Cn(/<[/\w!]/g),F0=Cn(/<[/\w]/g),_N=Cn(/<\/no(script|embed|frames)/i),CN=Cn(/\/>/i),po={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},TN=function(){return typeof window>"u"?null:window},IN=function(t,n){if(typeof t!=="object"||typeof t.createPolicy!=="function")return null;let o=null,i="data-tt-policy-suffix";if(n&&n.hasAttribute(i))o=n.getAttribute(i);let s="dompurify"+(o?"#"+o:"");try{return t.createPolicy(s,{createHTML(a){return a},createScriptURL(a){return a}})}catch(a){return console.warn("TrustedTypes policy "+s+" could not be created."),null}},H0=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},si=function(t,n,o,i){return yn(t,n)&&ai(t[n])?at(i.base?Fn(i.base):{},t[n],i.transform):o};function Z0(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:TN(),t=(me)=>Z0(me);if(t.version="3.4.13",t.removed=[],!e||!e.document||e.document.nodeType!==po.document||!e.Element)return t.isSupported=!1,t;let n=e.document,o=n,i=o.currentScript;e.DocumentFragment;let{HTMLTemplateElement:s,Node:a,Element:l,NodeFilter:c,NamedNodeMap:u}=e;u===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let{DOMParser:d,trustedTypes:p}=e,f=l.prototype,m=Fo(f,"cloneNode"),h=Fo(f,"remove"),g=Fo(f,"nextSibling"),y=Fo(f,"childNodes"),b=Fo(f,"parentNode"),x=Fo(f,"shadowRoot"),C=Fo(f,"attributes"),v=a&&a.prototype?Fo(a.prototype,"nodeType"):null,k=a&&a.prototype?Fo(a.prototype,"nodeName"):null,_=a&&a.prototype?Fo(a.prototype,"ownerDocument"):null;if(typeof s==="function"){let me=n.createElement("template");if(me.content&&me.content.ownerDocument)n=me.content.ownerDocument}let I,w="",P,L=!1,N=0,Y=function(){if(N>0)throw Vi('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},B=function(T){Y(),N++;try{return I.createHTML(T)}finally{N--}},J=function(T){Y(),N++;try{return I.createScriptURL(T)}finally{N--}},X=function(){if(!L)P=IN(p,i),L=!0;return P},V=n,{implementation:ee,createNodeIterator:he,createDocumentFragment:A,getElementsByTagName:te}=V,M=o.importNode,O=H0();t.isSupported=typeof U0==="function"&&typeof b==="function"&&ee&&ee.createHTMLDocument!==void 0;let Pe=hN,Fe=gN,De=yN,Ae=vN,ve=bN,z=xN,re=wN,Ne=SN,ke=D0,le=null,Se=at({},[...z0,...Zm,...Wm,...qm,...$0]),pe=null,Ue=at({},[...L0,...Gm,...O0,...Gu]),xe=Object.seal(Gs(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),qe=null,W=null,ye=Object.seal(Gs(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),He=!0,R=!0,ne=!1,Ce=!0,Ie=!1,fe=!0,it=!1,Ft=!1,Ye=null,Lt=null,F=!1,Ee=!1,S=!1,K=!1,ue=!0,$e=!1,je="user-content-",se=!0,we=!1,ge={},Le=null,Rt=at({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),pt=null,dn=at({},["audio","video","img","source","image","track"]),on=null,ps=at({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Rn="http://www.w3.org/1998/Math/MathML",xn="http://www.w3.org/2000/svg",pn="http://www.w3.org/1999/xhtml",cr=pn,fs=!1,ft=null,_a=at({},[Rn,xn,pn],jm),Ca=_n(["mi","mo","mn","ms","mtext"]),ot=at({},Ca),Gt=_n(["annotation-xml"]),Pn=at({},Gt),ur=at({},["title","style","font","a","script"]),Lr=null,HI=["application/xhtml+xml","text/html"],UI="text/html",Ht=null,ms=null,jI=n.createElement("form"),zg=function(T){return T instanceof RegExp||T instanceof Function},mp=function(){let T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(ms&&ms===T)return;if(!T||typeof T!=="object")T={};T=Fn(T),Lr=HI.indexOf(T.PARSER_MEDIA_TYPE)===-1?UI:T.PARSER_MEDIA_TYPE,Ht=Lr==="application/xhtml+xml"?jm:_l,le=si(T,"ALLOWED_TAGS",Se,{transform:Ht}),pe=si(T,"ALLOWED_ATTR",Ue,{transform:Ht}),ft=si(T,"ALLOWED_NAMESPACES",_a,{transform:jm}),on=si(T,"ADD_URI_SAFE_ATTR",ps,{transform:Ht,base:ps}),pt=si(T,"ADD_DATA_URI_TAGS",dn,{transform:Ht,base:dn}),Le=si(T,"FORBID_CONTENTS",Rt,{transform:Ht}),qe=si(T,"FORBID_TAGS",Fn({}),{transform:Ht}),W=si(T,"FORBID_ATTR",Fn({}),{transform:Ht}),ge=yn(T,"USE_PROFILES")?T.USE_PROFILES&&typeof T.USE_PROFILES==="object"?Fn(T.USE_PROFILES):T.USE_PROFILES:!1,He=T.ALLOW_ARIA_ATTR!==!1,R=T.ALLOW_DATA_ATTR!==!1,ne=T.ALLOW_UNKNOWN_PROTOCOLS||!1,Ce=T.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Ie=T.SAFE_FOR_TEMPLATES||!1,fe=T.SAFE_FOR_XML!==!1,it=T.WHOLE_DOCUMENT||!1,Ee=T.RETURN_DOM||!1,S=T.RETURN_DOM_FRAGMENT||!1,K=T.RETURN_TRUSTED_TYPE||!1,F=T.FORCE_BODY||!1,ue=T.SANITIZE_DOM!==!1,$e=T.SANITIZE_NAMED_PROPS||!1,se=T.KEEP_CONTENT!==!1,we=T.IN_PLACE||!1,ke=pN(T.ALLOWED_URI_REGEXP)?T.ALLOWED_URI_REGEXP:D0,cr=typeof T.NAMESPACE==="string"?T.NAMESPACE:pn,ot=yn(T,"MATHML_TEXT_INTEGRATION_POINTS")&&T.MATHML_TEXT_INTEGRATION_POINTS&&typeof T.MATHML_TEXT_INTEGRATION_POINTS==="object"?Fn(T.MATHML_TEXT_INTEGRATION_POINTS):at({},Ca),Pn=yn(T,"HTML_INTEGRATION_POINTS")&&T.HTML_INTEGRATION_POINTS&&typeof T.HTML_INTEGRATION_POINTS==="object"?Fn(T.HTML_INTEGRATION_POINTS):at({},Gt);let Z=yn(T,"CUSTOM_ELEMENT_HANDLING")&&T.CUSTOM_ELEMENT_HANDLING&&typeof T.CUSTOM_ELEMENT_HANDLING==="object"?Fn(T.CUSTOM_ELEMENT_HANDLING):Gs(null);if(xe=Gs(null),yn(Z,"tagNameCheck")&&zg(Z.tagNameCheck))xe.tagNameCheck=Z.tagNameCheck;if(yn(Z,"attributeNameCheck")&&zg(Z.attributeNameCheck))xe.attributeNameCheck=Z.attributeNameCheck;if(yn(Z,"allowCustomizedBuiltInElements")&&typeof Z.allowCustomizedBuiltInElements==="boolean")xe.allowCustomizedBuiltInElements=Z.allowCustomizedBuiltInElements;if(Cn(xe),Ie)R=!1;if(S)Ee=!0;if(ge){if(le=at({},$0),pe=Gs(null),ge.html===!0)at(le,z0),at(pe,L0);if(ge.svg===!0)at(le,Zm),at(pe,Gm),at(pe,Gu);if(ge.svgFilters===!0)at(le,Wm),at(pe,Gm),at(pe,Gu);if(ge.mathMl===!0)at(le,qm),at(pe,O0),at(pe,Gu)}if(ye.tagCheck=null,ye.attributeCheck=null,yn(T,"ADD_TAGS")){if(typeof T.ADD_TAGS==="function")ye.tagCheck=T.ADD_TAGS;else if(ai(T.ADD_TAGS)){if(le===Se)le=Fn(le);at(le,T.ADD_TAGS,Ht)}}if(yn(T,"ADD_ATTR")){if(typeof T.ADD_ATTR==="function")ye.attributeCheck=T.ADD_ATTR;else if(ai(T.ADD_ATTR)){if(pe===Ue)pe=Fn(pe);at(pe,T.ADD_ATTR,Ht)}}if(yn(T,"ADD_URI_SAFE_ATTR")&&ai(T.ADD_URI_SAFE_ATTR))at(on,T.ADD_URI_SAFE_ATTR,Ht);if(yn(T,"FORBID_CONTENTS")&&ai(T.FORBID_CONTENTS)){if(Le===Rt)Le=Fn(Le);at(Le,T.FORBID_CONTENTS,Ht)}if(yn(T,"ADD_FORBID_CONTENTS")&&ai(T.ADD_FORBID_CONTENTS)){if(Le===Rt)Le=Fn(Le);at(Le,T.ADD_FORBID_CONTENTS,Ht)}if(se)le["#text"]=!0;if(it)at(le,["html","head","body"]);if(le.table)at(le,["tbody"]),delete qe.tbody;if(T.TRUSTED_TYPES_POLICY){if(typeof T.TRUSTED_TYPES_POLICY.createHTML!=="function")throw Vi('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof T.TRUSTED_TYPES_POLICY.createScriptURL!=="function")throw Vi('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let ce=I;I=T.TRUSTED_TYPES_POLICY;try{w=B("")}catch(ze){throw I=ce,ze}}else if(T.TRUSTED_TYPES_POLICY===null)I=void 0,w="";else{if(I===void 0)I=X();if(I&&typeof w==="string")w=B("")}if(_n)_n(T);ms=T},$g=at({},[...Zm,...Wm,...fN]),Lg=at({},[...qm,...mN]),ZI=function(T,Z,ce){if(Z.namespaceURI===pn)return T==="svg";if(Z.namespaceURI===Rn)return T==="svg"&&(ce==="annotation-xml"||ot[ce]);return Boolean($g[T])},WI=function(T,Z,ce){if(Z.namespaceURI===pn)return T==="math";if(Z.namespaceURI===xn)return T==="math"&&Pn[ce];return Boolean(Lg[T])},qI=function(T,Z,ce){if(Z.namespaceURI===xn&&!Pn[ce])return!1;if(Z.namespaceURI===Rn&&!ot[ce])return!1;return!Lg[T]&&(ur[T]||!$g[T])},GI=function(T){let Z=b(T);if(!Z||!Z.tagName)Z={namespaceURI:cr,tagName:"template"};let ce=_l(T.tagName),ze=_l(Z.tagName);if(!ft[T.namespaceURI])return!1;if(T.namespaceURI===xn)return ZI(ce,Z,ze);if(T.namespaceURI===Rn)return WI(ce,Z,ze);if(T.namespaceURI===pn)return qI(ce,Z,ze);if(Lr==="application/xhtml+xml"&&ft[T.namespaceURI])return!0;return!1},Or=function(T){qs(t.removed,{element:T});try{b(T).removeChild(T)}catch(Z){if(h(T),!b(T))throw Vi("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},ac=function(T){Ta(T);let Z=y(T);if(Z){let ze=[];Ws(Z,(Be)=>{qs(ze,Be)}),Ws(ze,(Be)=>{try{h(Be)}catch(Qe){}})}let ce=C(T);if(ce)for(let ze=ce.length-1;ze>=0;--ze){let Be=ce[ze],Qe=Be&&Be.name;if(typeof Qe==="string")try{T.removeAttribute(Qe)}catch(St){}}},ki=function(T,Z){try{qs(t.removed,{attribute:Z.getAttributeNode(T),from:Z})}catch(ce){qs(t.removed,{attribute:null,from:Z})}if(Z.removeAttribute(T),T==="is")if(Ee||S)try{Or(Z)}catch(ce){}else try{Z.setAttribute(T,"")}catch(ce){}},KI=function(T){let Z=C(T);if(!Z)return;for(let ce=Z.length-1;ce>=0;--ce){let ze=Z[ce],Be=ze&&ze.name;if(typeof Be!=="string"||pe[Ht(Be)])continue;try{T.removeAttribute(Be)}catch(Qe){}}},Ta=function(T){let Z=[T];while(Z.length>0){let ce=Z.pop();if((v?v(ce):ce.nodeType)===po.element)KI(ce);let Be=y(ce);if(Be)for(let Qe=Be.length-1;Qe>=0;--Qe)Z.push(Be[Qe])}},VI=function(T){if(!fe)return;let Z=[T];while(Z.length>0){let ce=Z.pop(),ze=v?v(ce):ce.nodeType;if(ze===po.processingInstruction||ze===po.comment&&gn(F0,ce.data)){try{h(ce)}catch(Qe){}continue}if(ze===po.element){let Qe=ce,St=Ht(k?k(ce):ce.nodeName);try{if(Qe.hasAttribute&&Qe.hasAttribute("patchsrc"))Qe.removeAttribute("patchsrc");if(Qe.hasAttribute&&Qe.hasAttribute("for")&&St!=="label"&&St!=="output")Qe.removeAttribute("for")}catch(Ut){}}let Be=y(ce);if(Be)for(let Qe=Be.length-1;Qe>=0;--Qe)Z.push(Be[Qe])}},Og=function(T){let Z=null,ce=null;if(F)T="<remove></remove>"+T;else{let Qe=R0(T,/^[\r\n\t ]+/);ce=Qe&&Qe[0]}if(Lr==="application/xhtml+xml"&&cr===pn)T='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+T+"</body></html>";let ze=I?B(T):T;if(cr===pn)try{Z=new d().parseFromString(ze,Lr)}catch(Qe){}if(!Z||!Z.documentElement){Z=ee.createDocument(cr,"template",null);try{Z.documentElement.innerHTML=fs?w:ze}catch(Qe){}}let Be=Z.body||Z.documentElement;if(T&&ce)Be.insertBefore(n.createTextNode(ce),Be.childNodes[0]||null);if(cr===pn)return te.call(Z,it?"html":"body")[0];return it?Z.documentElement:Be},Dg=function(T){let Z=_?_(T):T.ownerDocument;return he.call(Z||T,T,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},lc=function(T){return T=kl(T,Pe," "),T=kl(T,Fe," "),T=kl(T,De," "),T},hp=function(T){var Z;T.normalize();let ce=_?_(T):T.ownerDocument,ze=he.call(ce||T,T,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),Be=ze.nextNode();while(Be)Be.data=lc(Be.data),Be=ze.nextNode();let Qe=(Z=T.querySelectorAll)===null||Z===void 0?void 0:Z.call(T,"template");if(Qe)Ws(Qe,(St)=>{if(hs(St.content))hp(St.content)})},cc=function(T){let Z=k?k(T):null;if(typeof Z!=="string")return!1;if(Ht(Z)!=="form")return!1;return typeof T.nodeName!=="string"||typeof T.textContent!=="string"||typeof T.removeChild!=="function"||T.attributes!==C(T)||typeof T.removeAttribute!=="function"||typeof T.setAttribute!=="function"||typeof T.namespaceURI!=="string"||typeof T.insertBefore!=="function"||typeof T.hasChildNodes!=="function"||T.nodeType!==v(T)||T.childNodes!==y(T)},hs=function(T){if(!v||typeof T!=="object"||T===null)return!1;try{return v(T)===po.documentFragment}catch(Z){return!1}},Ia=function(T){if(!v||typeof T!=="object"||T===null)return!1;try{return typeof v(T)==="number"}catch(Z){return!1}};function Ho(me,T,Z){if(me.length===0)return;Ws(me,(ce)=>{ce.call(t,T,Z,ms)})}let XI=function(T,Z){if(fe&&T.hasChildNodes()&&!Ia(T.firstElementChild)&&gn(B0,T.textContent)&&gn(B0,T.innerHTML))return!0;if(fe&&T.namespaceURI===pn&&Z==="style"&&Ia(T.firstElementChild))return!0;if(T.nodeType===po.processingInstruction)return!0;if(fe&&T.nodeType===po.comment&&gn(F0,T.data))return!0;return!1},JI=function(T,Z,ce){if(!qe[Z]&&Ug(Z)){if(xe.tagNameCheck instanceof RegExp&&gn(xe.tagNameCheck,Z))return!1;if(xe.tagNameCheck instanceof Function&&xe.tagNameCheck(Z))return!1}if(se&&!Le[Z]){let ze=b(T),Be=y(T);if(Be&&ze){let Qe=Be.length;for(let St=Qe-1;St>=0;--St){let Ut=T===ce?m(Be[St],!0):Be[St];ze.insertBefore(Ut,g(T))}}}return Or(T),!0},Bg=function(T,Z,ce,ze){if(T.length===0)return Z;return Z===ce||Z===ze?Fn(Z):Z},Fg=function(T,Z){if(Ho(O.beforeSanitizeElements,T,null),T!==Z&&b(T)===null){if(we)Ta(T);return!0}if(cc(T))return Or(T),!0;let ce=Ht(k?k(T):T.nodeName);if(le=Bg(O.uponSanitizeElement,le,Se,Ye),Ho(O.uponSanitizeElement,T,{tagName:ce,allowedTags:le}),T!==Z&&b(T)===null){if(we)Ta(T);return!0}if(XI(T,ce))return Or(T),!0;if(qe[ce]||!(ye.tagCheck instanceof Function&&ye.tagCheck(ce))&&!le[ce]){let Be=JI(T,ce,Z);if(Be===!1)Ho(O.afterSanitizeElements,T,null);return Be}if((v?v(T):T.nodeType)===po.element&&!GI(T))return Or(T),!0;if((ce==="noscript"||ce==="noembed"||ce==="noframes")&&gn(_N,T.innerHTML))return Or(T),!0;if(Ie&&T.nodeType===po.text){let Be=lc(T.textContent);if(T.textContent!==Be)qs(t.removed,{element:T.cloneNode()}),T.textContent=Be}return Ho(O.afterSanitizeElements,T,null),!1},Hg=function(T,Z,ce){if(W[Z])return!1;if(fe&&Z==="patchsrc")return!1;if(fe&&Z==="for"&&T!=="label"&&T!=="output")return!1;if(ue&&(Z==="id"||Z==="name")&&((ce in n)||(ce in jI)))return!1;let ze=pe[Z]||ye.attributeCheck instanceof Function&&ye.attributeCheck(Z,T);if(R&&gn(Ae,Z));else if(He&&gn(ve,Z));else if(!ze)if(Ug(T)&&(xe.tagNameCheck instanceof RegExp&&gn(xe.tagNameCheck,T)||xe.tagNameCheck instanceof Function&&xe.tagNameCheck(T))&&(xe.attributeNameCheck instanceof RegExp&&gn(xe.attributeNameCheck,Z)||xe.attributeNameCheck instanceof Function&&xe.attributeNameCheck(Z,T))||Z==="is"&&xe.allowCustomizedBuiltInElements&&(xe.tagNameCheck instanceof RegExp&&gn(xe.tagNameCheck,ce)||xe.tagNameCheck instanceof Function&&xe.tagNameCheck(ce)));else return!1;else if(on[Z]);else if(gn(ke,kl(ce,re,"")));else if((Z==="src"||Z==="xlink:href"||Z==="href")&&T!=="script"&&P0(ce,"data:")===0&&pt[T]);else if(ne&&!gn(z,kl(ce,re,"")));else if(ce)return!1;return!0},YI=at({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),Ug=function(T){return!YI[_l(T)]&&gn(Ne,T)},QI=function(T,Z,ce,ze){if(I&&typeof p==="object"&&typeof p.getAttributeType==="function"&&!ce)switch(p.getAttributeType(T,Z)){case"TrustedHTML":return B(ze);case"TrustedScriptURL":return J(ze)}return ze},eE=function(T,Z,ce,ze){try{if(ce)T.setAttributeNS(ce,Z,ze);else T.setAttribute(Z,ze);if(cc(T))Or(T);else A0(t.removed)}catch(Be){ki(Z,T)}},jg=function(T){Ho(O.beforeSanitizeAttributes,T,null);let Z=T.attributes;if(!Z||cc(T))return;pe=Bg(O.uponSanitizeAttribute,pe,Ue,Lt);let ce={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:pe,forceKeepAttr:void 0},ze=Z.length,Be=Ht(T.nodeName);while(ze--){let Qe=Z[ze],{name:St,namespaceURI:Ut,value:Kn}=Qe,Vn=Ht(St),yp=Kn,Un=St==="value"?yp:sN(yp);if(ce.attrName=Vn,ce.attrValue=Un,ce.keepAttr=!0,ce.forceKeepAttr=void 0,Ho(O.uponSanitizeAttribute,T,ce),Un=ce.attrValue,$e&&(Vn==="id"||Vn==="name")&&P0(Un,je)!==0)ki(St,T),Un=je+Un;if(fe&&gn(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,Un)){ki(St,T);continue}if(Vn==="attributename"&&R0(Un,"href")){ki(St,T);continue}if(ce.forceKeepAttr)continue;if(!ce.keepAttr){ki(St,T);continue}if(!Ce&&gn(CN,Un)){ki(St,T);continue}if(Ie)Un=lc(Un);if(!Hg(Be,Vn,Un)){ki(St,T);continue}if(Un=QI(Be,Vn,Ut,Un),Un!==yp)eE(T,St,Ut,Un)}Ho(O.afterSanitizeAttributes,T,null)},uc=function(T){let Z=null,ce=Dg(T);Ho(O.beforeSanitizeShadowDOM,T,null);while(Z=ce.nextNode()){if(Ho(O.uponSanitizeShadowNode,Z,null),Fg(Z,T),jg(Z),hs(Z.content))uc(Z.content);if((v?v(Z):Z.nodeType)===po.element){let Be=x(Z);if(hs(Be))gp(Be),uc(Be)}}Ho(O.afterSanitizeShadowDOM,T,null)},gp=function(T){let Z=[{node:T,shadow:null}];while(Z.length>0){let ce=Z.pop();if(ce.shadow){uc(ce.shadow);continue}let ze=ce.node,Qe=(v?v(ze):ze.nodeType)===po.element,St=y(ze);if(St)for(let Ut=St.length-1;Ut>=0;--Ut)Z.push({node:St[Ut],shadow:null});if(Qe){let Ut=k?k(ze):null;if(typeof Ut==="string"&&Ht(Ut)==="template"){let Kn=ze.content;if(hs(Kn))Z.push({node:Kn,shadow:null})}}if(Qe){let Ut=x(ze);if(hs(Ut))Z.push({node:null,shadow:Ut},{node:Ut,shadow:null})}}};return t.sanitize=function(me){let T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Z=null,ce=null,ze=null,Be=null;if(fs=!me,fs)me="<!-->";if(typeof me!=="string"&&!Ia(me)){if(me=dN(me),typeof me!=="string")throw Vi("dirty is not a string, aborting")}if(!t.isSupported)return me;if(Ft)le=Ye,pe=Lt;else mp(T);if(O.uponSanitizeElement.length>0||O.uponSanitizeAttribute.length>0)le=Fn(le);if(O.uponSanitizeAttribute.length>0)pe=Fn(pe);t.removed=[];let Qe=we&&typeof me!=="string"&&Ia(me);if(Qe){VI(me);let Kn=k?k(me):me.nodeName;if(typeof Kn==="string"){let Vn=Ht(Kn);if(!le[Vn]||qe[Vn])throw ac(me),Vi("root node is forbidden and cannot be sanitized in-place")}if(cc(me))throw ac(me),Vi("root node is clobbered and cannot be sanitized in-place");try{gp(me)}catch(Vn){throw ac(me),Vn}}else if(Ia(me)){if(Z=Og("<!---->"),ce=Z.ownerDocument.importNode(me,!0),ce.nodeType===po.element&&ce.nodeName==="BODY")Z=ce;else if(ce.nodeName==="HTML")Z=ce;else Z.appendChild(ce);gp(ce)}else{if(!Ee&&!Ie&&!it&&me.indexOf("<")===-1)return I&&K?B(me):me;if(Z=Og(me),!Z)return Ee?null:K?w:""}if(Z&&F)Or(Z.firstChild);let St=Qe?me:Z;try{let Kn=Dg(St);while(ze=Kn.nextNode())if(Fg(ze,St),jg(ze),hs(ze.content))uc(ze.content)}catch(Kn){if(Qe)ac(me),Ws(t.removed,(Vn)=>{if(Vn.element)Ta(Vn.element)});throw Kn}if(Qe){if(Ws(t.removed,(Kn)=>{if(Kn.element)Ta(Kn.element)}),Ie)hp(me);return me}if(Ee){if(Ie)hp(Z);if(S){Be=A.call(Z.ownerDocument);while(Z.firstChild)Be.appendChild(Z.firstChild)}else Be=Z;if(pe.shadowroot||pe.shadowrootmode)Be=M.call(o,Be,!0);return Be}let Ut=it?Z.outerHTML:Z.innerHTML;if(it&&le["!doctype"]&&Z.ownerDocument&&Z.ownerDocument.doctype&&Z.ownerDocument.doctype.name&&gn(kN,Z.ownerDocument.doctype.name))Ut="<!DOCTYPE "+Z.ownerDocument.doctype.name+`>
|
|
222
|
+
`+Ut;if(Ie)Ut=lc(Ut);return I&&K?B(Ut):Ut},t.setConfig=function(){let me=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};mp(me),Ft=!0,Ye=le,Lt=pe},t.clearConfig=function(){ms=null,Ft=!1,Ye=null,Lt=null,I=P,w=""},t.isValidAttribute=function(me,T,Z){if(!ms)mp({});let ce=Ht(me),ze=Ht(T);return Hg(ce,ze,Z)},t.addHook=function(me,T){if(typeof T!=="function")return;if(!yn(O,me))return;qs(O[me],T)},t.removeHook=function(me,T){if(!yn(O,me))return;if(T!==void 0){let Z=rN(O[me],T);return Z===-1?void 0:iN(O[me],Z,1)[0]}return A0(O[me])},t.removeHooks=function(me){if(!yn(O,me))return;O[me]=[]},t.removeAllHooks=function(){O=H0()},t}var W0=Z0();function er(e){return W0.sanitize(e,{FORBID_TAGS:["form","svg","math"]})}var Xm=null;function EN(){if(Xm)return Xm;let e=new wl({headingStyle:"atx",codeBlockStyle:"fenced",emDelimiter:"*",bulletListMarker:"-"});return e.use(q0.gfm),e.addRule("wikiLink",{filter:(t)=>t.nodeName==="A"&&t.hasAttribute("data-wiki-markdown"),replacement:(t,n)=>{let o=n.textContent??"";return o===n.getAttribute("data-wiki-label")?n.getAttribute("data-wiki-markdown"):`[[${n.getAttribute("data-wiki-ref")}|${o}]]`}}),Xm=e,e}function G0({markdown:e,initialHtml:t,className:n,onChange:o,onSave:i}){let s=D(null),a=D(!1),l=D(!1),c=D(e),u=D(e);Me(()=>{let y=s.current;if(!y)return;let b=er(t),x=u.current!==e;if(u.current=e,!a.current||x&&c.current!==e){a.current=!0,c.current=e,l.current=!1,y.innerHTML=b;for(let k of y.querySelectorAll('input[type="checkbox"][disabled]'))k.removeAttribute("disabled");return}let C=document.createElement("div");C.innerHTML=b;let v=new Map([...C.querySelectorAll("a[data-wiki-ref]")].map((k)=>[k.getAttribute("data-wiki-ref"),k]));for(let k of y.querySelectorAll("a[data-wiki-ref]")){let _=v.get(k.getAttribute("data-wiki-ref"));if(!_)continue;for(let I of["data-wiki-board","data-wiki-card","data-wiki-missing"]){let w=_.getAttribute(I);if(w===null)k.removeAttribute(I);else k.setAttribute(I,w)}k.classList.toggle("is-unresolved",_.classList.contains("is-unresolved"))}},[t,e]);let d=oe(()=>{let y=s.current;if(!y)return"";return EN().turndown(y.innerHTML)},[]),p=oe(()=>{l.current=!0;let y=d();c.current=y,o(y)},[o,d]),f=oe(()=>{let y=s.current;if(!y||!y.isConnected||y.innerHTML==="")return;i?.(l.current?d():e)},[e,i,d]),m=oe((y)=>{if(!(y.metaKey||y.ctrlKey))return;if(y.key==="s"){y.preventDefault(),f();return}if(y.key==="b"){y.preventDefault(),document.execCommand("bold"),p();return}if(y.key==="i"){y.preventDefault(),document.execCommand("italic"),p();return}if(y.key==="k")y.preventDefault(),Wu(),p()},[p,f]),h=oe((y)=>{let b=y.target;if(b instanceof HTMLInputElement&&b.type==="checkbox")b.toggleAttribute("checked",b.checked),p()},[p]),g=oe((y)=>{let b=y.clipboardData?.getData("text/plain");if(b==null)return;y.preventDefault(),document.execCommand("insertText",!1,b),p()},[p]);return r(be,{children:[r("div",{ref:s,class:n,contentEditable:!0,spellcheck:!1,onInput:p,onKeyDown:m,onPaste:g,onClick:h,onBlur:f},void 0,!1,void 0,this),r(T0,{hostRef:s,onChange:p},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function V0(e,t){let n=e.target.closest("a.wiki-link");if(!n)return!1;if(e.preventDefault(),e.stopPropagation(),n.dataset.wikiBoard)zt({boardId:n.dataset.wikiBoard,...n.dataset.wikiCard?{cardId:n.dataset.wikiCard}:{}});else{let o=n.dataset.wikiRef??"",i=o.split("#")[0];if(n.dataset.wikiMissing||o.includes("#")||Ge.value.some((s)=>s.name.toLocaleLowerCase()===i.toLocaleLowerCase()||s.id===i))mn("remove","Link unavailable","The target is missing or ambiguous. Use a board/card ID in the wiki link to choose it explicitly.");else window.dispatchEvent(new CustomEvent("pmx-open-board-link",{detail:{sourceNodeId:t,wikiRef:i}}))}return!0}function Jm({html:e,className:t,style:n,onTaskToggle:o,nodeId:i}){let s=D(null),a=D(o);return a.current=o,q(()=>{let c=s.current;if(!c)return;if(c.replaceChildren(),!e)return;let u=document.createElement("template");if(u.innerHTML=er(e),c.append(u.content.cloneNode(!0)),a.current)for(let d of c.querySelectorAll('input[type="checkbox"][data-pmx-task][disabled]'))d.removeAttribute("disabled")},[e]),r("div",{ref:s,class:t,style:n,onClick:(c)=>{if(V0(c,i))return;let u=c.target,d=a.current;if(!s.current||!d)return;let f=null;if(u instanceof HTMLInputElement&&u.matches('input[type="checkbox"][data-pmx-task]'))f=u;else{let h=u.closest("li")?.querySelector(":scope > input[data-pmx-task], :scope > p > input[data-pmx-task]");if(h&&c.clientX<=h.getBoundingClientRect().right+6)f=h}if(!f)return;c.preventDefault(),c.stopPropagation(),d(Number(f.dataset.pmxTask))}},void 0,!1,void 0,this)}var K0=new Am({gfm:!0,breaks:!0});function AN(e,t){let n=(d)=>{let p=[];return K0.walkTokens(K0.lexer(d),(f)=>{if(f.type==="list_item"&&f.task)p.push(!!f.checked)}),p},o=n(e);if(!Number.isInteger(t)||t<0||t>=o.length)return e;let i=[...e.matchAll(/(?:[-*+]|\d{1,9}[.)])[ \t]+\[[ xX]\](?=[ \t]|$)/gm)].map((d)=>d.index+d[0].lastIndexOf("[")+1),s=(d,p)=>{let f=e;for(let m=p;m>=d;m--){let h=i[m];f=f.slice(0,h)+(f[h]===" "?"x":" ")+f.slice(h+1)}return f},a=0,l=i.length-1;while(a<l){let d=Math.floor((a+l)/2);if(n(s(a,d))[t]!==o[t])l=d;else a=d+1}let c=s(a,a),u=n(c);return u.length===o.length&&u.every((d,p)=>d===(p===t?!o[p]:o[p]))?c:e}var Ar=new Map;function Ym(e,t){let n=Ar.get(JSON.stringify([e,t]));return!!n&&(n.dirty.value||n.pending.value>0)}async function Qm(e,t){let n=Sk(),o=wt,i=Ar.get(JSON.stringify([e,t]));return await i?.saveQueue.current,n()&&o===wt&&ae.value===e&&!i?.dirty.value}function Ku({node:e,expanded:t=!1}){let n=Yn(),o=ae.value,i=JSON.stringify([o,e.id]),s=Ke(()=>{let A=Ar.get(i);if(A)return A;let te={latestMdRef:{current:typeof e.data.content==="string"?e.data.content:""},renderedMdRef:{current:null},dirty:ie(!1),editBase:{current:{boardId:o,revision:e.contentRevision??0}},saveQueue:{current:Promise.resolve()},nativeSaveAttempts:new Set,pending:ie(0),owners:0};return Ar.set(i,te),te},[i]),{latestMdRef:a,renderedMdRef:l,editBase:c,saveQueue:u}=s,d=e.data.path,[p,f]=E(""),[m,h]=E(""),[g,y]=E(!1),[b,x]=E(!1),[C,v]=E(!1),k=s.dirty.value,_=D(null),I=Ke(()=>({current:null}),[s]),w=Ke(()=>({current:null}),[s]),P=e.data.reviewActive,L=JSON.stringify(e.data.wikiLinks??[]);Me(()=>{s.owners++,Ar.set(i,s),f(a.current);let A=l.current,te=A?.markdown===a.current;return h(te?A.html:""),y(te),()=>{if(s.owners--,!s.owners&&!s.pending.value&&!s.dirty.value&&Ar.get(i)===s)Ar.delete(i)}},[s]),q(()=>{let A=s.dirty.value||s.pending.value>0;if(!A)c.current={boardId:o,revision:e.contentRevision??0};let te=!1;return(async()=>{let M;if(A)M=a.current;else if(d){let Pe=await el(d);if(te)return;M=Pe.content}else if(typeof e.data.content==="string")M=e.data.content;else{y(!0);return}let O=await Ko(M,e.id,o);if(O===null||te||ae.value!==o||(A||s.dirty.value?a.current!==M:!d&&H.value.get(e.id)?.data.content!==M))return;if(l.current={markdown:M,html:O},h(O),y(!0),!A&&!s.dirty.value)a.current=M,f(M),Xe(e.id,{content:M,rendered:O});else if(H.value.get(e.id)?.data.content===M)Xe(e.id,{rendered:O})})(),()=>{te=!0}},[o,d,e.id,e.data.content,L,e.linksRevision]);let N=oe(async(A)=>{let te=A.target.value;s.dirty.value=!0,a.current=te,f(te);let M=await Ko(te,e.id,o);if(M===null||ae.value!==o||a.current!==te)return;l.current={markdown:te,html:M},h(M)},[o,s,e.id]),Y=oe(async(A)=>{let te=wt,M={revision:H.value.get(e.id)?.contentRevision??0};s.nativeSaveAttempts.add(M),s.pending.value++,u.current=u.current.then(async()=>{if(te!==wt||ae.value!==o||a.current!==A)return;if(tt()){v(!0);let Ae=await ln(e.id,{content:A,expectedBoardId:c.current.boardId,expectedContentRevision:c.current.revision});if(v(!1),!Ae.ok||te!==wt)return;c.current.revision=Ae.contentRevision??c.current.revision;let ve=await Ko(A,e.id,o);if(te!==wt||ae.value!==o||a.current!==A)return;let z=H.value.get(e.id);if(!z||(z.contentRevision??0)>c.current.revision)return;if(H.value=new Map(H.value).set(e.id,{...z,contentRevision:c.current.revision,lastEditedBy:Ae.lastEditedBy,data:{...z.data,content:A,...ve!==null?{rendered:ve}:{}}}),s.dirty.value=!1,ve!==null)l.current={markdown:A,html:ve},h(ve);return}let O=await Ko(A,e.id,o);if(O===null||te!==wt||ae.value!==o||a.current!==A)return;if(ae.value===o&&a.current===A&&l.current?.markdown!==A)l.current={markdown:A,html:O},h(O);let Pe=M.revision,Fe=await ln(e.id,{content:A,data:{rendered:O},expectedBoardId:o,expectedContentRevision:Pe,...d?{persistFile:!0}:{}});if(te!==wt)return;if(Fe.ok&&Fe.contentRevision!==void 0){for(let Ae of s.nativeSaveAttempts)if(Ae.revision===Pe)Ae.revision=Fe.contentRevision}let De=H.value.get(e.id);if(Fe.ok&&Fe.contentRevision!==void 0&&De&&ae.value===o&&(De.contentRevision??0)<=Fe.contentRevision){let Ae=l.current,ve=Ae?.markdown!==A;if(H.value=new Map(H.value).set(e.id,{...De,contentRevision:Fe.contentRevision,lastEditedBy:Fe.lastEditedBy,data:{...De.data,content:A,rendered:Ae?.markdown===A?Ae.html:O}}),a.current===A){if(ve)l.current={markdown:A,html:O},h(O);s.dirty.value=!1,f(A)}}});try{await u.current}finally{if(s.nativeSaveAttempts.delete(M),s.pending.value--,!s.owners&&!s.pending.value&&!s.dirty.value&&Ar.get(i)===s)Ar.delete(i)}},[o,d,e.id,s]),B=oe(async()=>{if(!k)return;await Y(p)},[k,p,Y]),J=oe(async()=>{if(l.current?.markdown!==p){let te=await Ko(p,e.id,o);if(te===null||ae.value!==o||a.current!==p)return;if(l.current?.markdown!==p)l.current={markdown:p,html:te}}if(ae.value!==o||a.current!==p)return;let A=l.current;if(A?.markdown!==p)return;h(A.html),y(!0),x(!1)},[o,p,e.id]),X=oe((A)=>{if((A.metaKey||A.ctrlKey)&&A.key==="s"){A.preventDefault(),B();return}let te=_.current;if(te&&KS(A,te))return;if(te&&A.key==="Tab")A.preventDefault(),GS(te,A.shiftKey)},[B]);w.current=Y;let V=oe((A)=>{if(s.dirty.value=!0,f(A),a.current=A,I.current!==null)window.clearTimeout(I.current);I.current=window.setTimeout(()=>{I.current=null,Y(A)},800)},[Y,s]),ee=oe((A)=>{if(!s.dirty.value&&A===a.current)return;if(s.dirty.value=!0,f(A),a.current=A,I.current!==null)window.clearTimeout(I.current),I.current=null;Y(A)},[Y,s]);q(()=>()=>{if(I.current===null)return;window.clearTimeout(I.current),I.current=null;let A=w.current;if(A)A(a.current)},[s]);let he=P?r("div",{style:{padding:"4px 8px",fontSize:"10px",background:"color-mix(in srgb, var(--c-ok) 10%, transparent)",color:"var(--c-ok)",borderBottom:"1px solid color-mix(in srgb, var(--c-ok) 20%, transparent)",textTransform:"uppercase",letterSpacing:"0.05em",fontWeight:600},children:"Review active"},void 0,!1,void 0,this):null;if(b&&t)return r("div",{class:"md-editor-expanded",onKeyDown:X,children:[r("div",{class:"md-editor-toolbar",children:[r("button",{type:"button",class:"md-toolbar-btn",onClick:J,children:[r(aS,{size:14},void 0,!1,void 0,this)," Back to document"]},void 0,!0,void 0,this),r("div",{style:{display:"flex",gap:"6px",alignItems:"center"},children:[d&&r("span",{class:"md-toolbar-path",children:d.split("/").pop()},void 0,!1,void 0,this),r("button",{type:"button",class:`md-toolbar-btn${k?" md-toolbar-btn-primary":""}`,onClick:B,disabled:!k||C,children:C?"Saving…":k?"Save":"Saved"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"md-editor-split",children:[r("div",{style:{flex:1,position:"relative",display:"flex",flexDirection:"column"},children:[r("textarea",{ref:_,value:p,onInput:N,spellcheck:!1},void 0,!1,void 0,this),r(Rm,{textareaRef:_},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r(Jm,{nodeId:e.id,html:m,className:"md-preview"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(b)return r("div",{class:"md-editor-split",style:{height:"100%"},onKeyDown:X,children:[r("div",{style:{flex:1,position:"relative",display:"flex",flexDirection:"column"},children:[r("textarea",{ref:_,value:p,onInput:N,spellcheck:!1},void 0,!1,void 0,this),r(Rm,{textareaRef:_},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r(Jm,{nodeId:e.id,html:m,className:"md-preview"},void 0,!1,void 0,this),r("div",{style:{position:"absolute",bottom:"8px",right:"8px",display:"flex",gap:"6px"},children:[r("button",{type:"button",onClick:J,style:{padding:"4px 10px",fontSize:"11px",background:"var(--c-input-bg)",border:"1px solid var(--c-line)",borderRadius:"6px",color:"var(--c-text-soft)",cursor:"pointer"},children:"Document"},void 0,!1,void 0,this),r("button",{type:"button",onClick:B,disabled:!k||C,style:{padding:"4px 10px",fontSize:"11px",background:k?"color-mix(in srgb, var(--c-accent) 25%, transparent)":"var(--c-input-bg)",border:`1px solid ${k?"var(--c-accent)":"var(--c-line)"}`,borderRadius:"6px",color:k?"var(--c-text)":"var(--c-dim)",cursor:k?"pointer":"default"},children:C?"Saving…":k?"Save":"Saved"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(t)return r("div",{class:"md-expanded-document",style:{height:"100%",position:"relative"},onClick:async(A)=>{if(!A.target.closest("a.wiki-link"))return;A.preventDefault(),A.stopPropagation();let te=document.activeElement;if(te instanceof HTMLElement&&A.currentTarget.contains(te))te.blur();if(!await Qm(o,e.id))return;V0(A,e.id)},children:[he,r("div",{class:"md-reader",children:g?r(G0,{markdown:p,initialHtml:m||"<p><br></p>",className:"md-reader-content md-reader-editable",onChange:V,onSave:ee},e.id,!1,void 0,this):r("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"24px"},children:"Loading…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("button",{type:"button",class:"md-edit-fab",onClick:()=>x(!0),children:"</> Source"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return r("div",{class:"md-card-preview",children:[r("div",{class:"md-card-content",children:[he,r(Jm,{nodeId:e.id,html:m,style:{padding:m?"0":"12px",color:m?void 0:"var(--c-dim)"},onTaskToggle:(A)=>{let te=l.current;if(te?.html!==m||te.markdown!==a.current)return;let M=AN(te.markdown,A);if(M!==p)ee(M)}},void 0,!1,void 0,this),!g&&r("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"12px"},children:"Loading…"},void 0,!1,void 0,this),g&&!m&&r("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"12px"},children:"Empty node"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),e.data.source&&typeof e.data.source==="object"&&"attachmentId"in e.data.source&&r("div",{class:"md-import-source",children:["Source material ·"," ",r("a",{href:`/api/canvas/attachments/${encodeURIComponent(String(e.data.source.attachmentId))}/bytes`,target:"_blank",rel:"noopener noreferrer",children:String(e.data.source.filename??"Original")},void 0,!1,void 0,this)," · ",String(e.data.source.reference??"Location not supplied")]},void 0,!0,void 0,this),r("div",{class:"md-card-actions",children:[n&&r("button",{type:"button",class:"md-readme-btn","aria-pressed":n.readmeNodeId===e.id,onClick:()=>void Ik(n.id,n.readmeNodeId===e.id?null:e.id),children:n.readmeNodeId===e.id?"README":"Set as README"},void 0,!1,void 0,this),r("button",{type:"button",class:"md-card-edit",onClick:()=>xo(e.id),children:"Edit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var Vu="pmx-canvas-ax",Xu="pmx-canvas-ax-ack",Qn="pmx-canvas-html-node",eh="pmx-canvas-json-state",Ju="pmx-canvas-ext-app-alive",th="pmx-canvas-ext-app-paint-probe";function X0(e,t){switch(e){case"html":return typeof t.html==="string"&&t.html.length>0||typeof t.content==="string"&&t.content.length>0;case"mermaid":return typeof t.content==="string"&&t.content.trim().length>0;case"json-render":case"graph":return!0;case"mcp-app":return t.viewerType==="web-artifact"&&typeof t.path==="string"&&t.path.length>0||typeof t.url==="string"&&t.url.length>0;case"webpage":return typeof t.url==="string"&&t.url.length>0;default:return!1}}var nh="allow-scripts allow-popups allow-popups-to-escape-sandbox";function Ks(e){let t=5381;for(let n=0;n<e.length;n+=1)t=(t<<5)+t+e.charCodeAt(n)|0;return(t>>>0).toString(36)}function Cl(e,t={}){let n=new URLSearchParams;if(n.set("theme",t.theme??Qt.value),t.themeToken)n.set("themeToken",t.themeToken);if(t.present)n.set("present","1");if(t.presentToken)n.set("presentToken",t.presentToken);if(t.v)n.set("v",t.v);if(t.axToken)n.set("axToken",t.axToken);if(t.frameToken)n.set("frameToken",t.frameToken);return`/api/canvas/surface/${encodeURIComponent(e)}?${n.toString()}`}function Yu(e){return X0(e.type,e.data)}async function Qu(e){if(tt()){mn("context","Open in focus mode","This surface has no public URL. Use Expand to view it here, or export the board to download it.");return}let t=Cl(e.id);if(!(await fk(e.id,t)).opened)window.open(t,"_blank","noopener")}var RN={markdown:{width:360,height:180},board:{width:320,height:140},context:{width:360,height:180},file:{width:360,height:200},diff:{width:420,height:240},mermaid:{width:360,height:240},status:{width:280,height:120},ledger:{width:320,height:200},image:{width:240,height:180},html:{width:420,height:280},webpage:{width:420,height:280},"json-render":{width:420,height:280},graph:{width:420,height:280},"mcp-app":{width:480,height:320}};function J0(e){return RN[e]}function Y0(e,t,n,o,i){return e.x<o.position.x+o.size.width+i&&e.x+t+i>o.position.x&&e.y<o.position.y+o.size.height+i&&e.y+n+i>o.position.y}function PN(e,t,n,o,i){return o.some((s)=>Y0(e,t,n,s,i))}function ed(e,t,n,o,i){return o.find((s)=>Y0(e,t,n,s,i))}function td(e,t,n,o=24){if(e.length===0)return{x:40,y:80};let i=e[e.length-1],s={x:i.position.x+i.size.width+o,y:i.position.y};if(!PN(s,t,n,e,o))return s;let a=40,l=80,c=3000,u=l;for(let p=0;p<20;p++){let f=a;while(f+t<c){let g=ed({x:f,y:u},t,n,e,o);if(!g)return{x:f,y:u};f=g.position.x+g.size.width+o}u=e.filter((g)=>g.position.y<=u+n+o&&g.position.y+g.size.height+o>u).reduce((g,y)=>Math.max(g,y.position.y+y.size.height),u)+o}let d=e.reduce((p,f)=>Math.max(p,f.position.y+f.size.height),0);return{x:a,y:d+o}}var Vs=37,NN=600,MN=1400,zN=24;function $N(e){return e.type==="html"||e.type==="mermaid"||e.type==="json-render"||e.type==="graph"||e.type==="mcp-app"||e.type==="webpage"}function LN(e){if(e.type==="html")return e.data.presentation!==!0;if(e.type==="mermaid")return!0;if(e.type==="json-render"||e.type==="graph")return!0;if(e.type==="mcp-app")return e.data.viewerType==="web-artifact";return!1}function Q0(e){return e.collapsed===!0||e.data.strictSize===!0||e.data.userResized===!0||e.type==="group"}function oh(e){return!Q0(e)&&!$N(e)}function e_(e,t){if(!oh(e)||t<=0)return null;let n=Math.min(t+Vs,NN),o=J0(e.type);return o?Math.max(n,o.height):n}function rh(e){return LN(e)&&!Q0(e)}function t_(e,t){if(!rh(e)||!Number.isFinite(t)||t<=0)return null;let n=Math.min(t+Vs+zN,MN);return n>e.size.height+8?n:null}function n_(e,t,n){if(t<=e.size.height||e.pinned||e.data.parentGroup)return e.position;let o=n.filter((a)=>a.id!==e.id&&!a.pinned&&a.type!=="group"),i={...e.position},s=ed(i,e.size.width,t,o,24);while(s)i.y=s.position.y+s.size.height+24,s=ed(i,e.size.width,t,o,24);return i}function Xs(e,t,n){q(()=>{if(!n)return;let o=null,i=null,s=()=>Zo.value===e.id||Xa.value.some((d)=>d.grabbingNodeId===e.id);function a(){if(o=null,s()||i===null)return;let d=i;i=null;let p=H.value.get(e.id);if(!p)return;let f=t_(p,d);if(f===null)return;let m=n_(p,f,Array.from(H.value.values())),h=m.x!==p.position.x||m.y!==p.position.y,g={size:{width:p.size.width,height:f},...h?{position:m}:{}};cn(p.id,g),pu([{id:p.id,...g}],{recordHistory:h})}function l(){if(o!==null)clearTimeout(o);o=i!==null&&!s()?setTimeout(a,300):null}let c=sn(()=>{s(),l()});function u(d){if(d.source!==t.current?.contentWindow)return;let p=d.data;if(!p||p.source!=="pmx-canvas-frame"||p.type!=="content-height"||p.token!==n)return;if(typeof p.height!=="number"||!Number.isFinite(p.height)||p.height<=0)return;i=p.height,l()}return window.addEventListener("message",u),()=>{if(window.removeEventListener("message",u),c(),o!==null)clearTimeout(o)}},[e.id,n])}function ON(e){if(tt())return e.startsWith("/")&&!e.startsWith("//");try{return new URL(e,window.location.origin).origin===window.location.origin}catch{return!1}}function Js(e){let t=Sn.value,[n,o]=E(null),i=Boolean(e)&&ON(e),s=t==="srcdoc"&&i;if(q(()=>{if(!s)return;let a=!1;return qt(`${e}${e.includes("?")?"&":"?"}inline-assets=1`,{credentials:"same-origin"}).then((l)=>l.ok?l.text():Promise.reject(Error(`HTTP ${l.status}`))).then((l)=>{if(!a)o({url:e,html:l})}).catch((l)=>{if(console.error("[surface-frame] srcdoc fetch failed, falling back to src:",e,l),!a)o({url:e,html:""})}),()=>{a=!0}},[s,e]),!e)return{};if(!s)return t===null&&i?{}:{src:e};if(n)return n.html?{srcdoc:n.html}:{src:n.url};return{}}function nd({node:e,expanded:t=!1}){let n=D(null),o=Qt.value,i=Ke(()=>`theme-${crypto.randomUUID()}`,[]),s=Ke(()=>`frame-${crypto.randomUUID()}`,[]),a=typeof e.data.content==="string"?e.data.content:"",l=e.data.fit==="none"?"none":"contain",c=Ke(()=>Ks(`${l}:${a}`),[a,l]),u=Ke(()=>a?Cl(e.id,{theme:o,themeToken:i,v:c,frameToken:s}):"",[a,i,c,e.id,s]),d=Js(u);Xs(e,n,t?"":s);let p=()=>{n.current?.contentWindow?.postMessage({source:Qn,type:"theme-update",token:i,theme:o},"*")};if(q(p,[o,i]),!a)return r("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"12px"},children:"No diagram source set"},void 0,!1,void 0,this);return r("iframe",{ref:n,class:"html-node-frame",title:typeof e.data.title==="string"?e.data.title:"Mermaid diagram",sandbox:"allow-scripts",...d,onLoad:p,style:{width:"100%",height:"100%",minHeight:t?"70vh":"0",border:"none",background:"var(--c-bg)",borderRadius:"6px",display:"block"}},void 0,!1,void 0,this)}var ih=["harbor","daylight","high-contrast","midnight","sepia","arctic","ember","forest","volt"];function Tl(e){return typeof e==="string"&&ih.includes(e)}function sh(e,t="harbor"){return Tl(e)?e:t}var Ys={harbor:{label:"Harbor",scheme:"dark",swatchBg:"#081524",swatchAccent:"#4BBCFF"},daylight:{label:"Daylight",scheme:"light",swatchBg:"#F6F7F9",swatchAccent:"#1A7ABF"},"high-contrast":{label:"High contrast",scheme:"dark",swatchBg:"#000000",swatchAccent:"#00ffff"},midnight:{label:"Midnight",scheme:"dark",swatchBg:"#0A0D1C",swatchAccent:"#8B96FF"},sepia:{label:"Sepia",scheme:"light",swatchBg:"#F2E7D5",swatchAccent:"#B4632C"},arctic:{label:"Arctic",scheme:"dark",swatchBg:"#20242E",swatchAccent:"#7FC8DE"},ember:{label:"Ember",scheme:"dark",swatchBg:"#0B0B0C",swatchAccent:"#F34E1C"},forest:{label:"Forest",scheme:"dark",swatchBg:"#0C1712",swatchAccent:"#5CCF8F"},volt:{label:"Volt",scheme:"dark",swatchBg:"#0B0D0B",swatchAccent:"#DFDFC1"}};function Qs(e){return Ys[sh(e)].scheme}var li="io.modelcontextprotocol/related-task",rd="2.0",Tn=xw((e)=>e!==null&&(typeof e==="object"||typeof e==="function")),o_=rt([U(),Ze().int()]),r_=U(),n4=Zn({ttl:rt([Ze(),bf()]).optional(),pollInterval:Ze().optional()}),DN=G({ttl:Ze().optional()}),BN=G({taskId:U()}),ah=Zn({progressToken:o_.optional(),[li]:BN.optional()}),fo=G({_meta:ah.optional()}),Il=fo.extend({task:DN.optional()}),i_=(e)=>Il.safeParse(e).success,In=G({method:U(),params:fo.loose().optional()}),wo=G({_meta:ah.optional()}),ko=G({method:U(),params:wo.loose().optional()}),En=Zn({_meta:ah.optional()}),ta=rt([U(),Ze().int()]),s_=G({jsonrpc:j(rd),id:ta,...In.shape}).strict(),lh=(e)=>s_.safeParse(e).success,a_=G({jsonrpc:j(rd),...ko.shape}).strict(),l_=(e)=>a_.safeParse(e).success,ch=G({jsonrpc:j(rd),id:ta,result:En}).strict(),El=(e)=>ch.safeParse(e).success;var vt;(function(e){e[e.ConnectionClosed=-32000]="ConnectionClosed",e[e.RequestTimeout=-32001]="RequestTimeout",e[e.ParseError=-32700]="ParseError",e[e.InvalidRequest=-32600]="InvalidRequest",e[e.MethodNotFound=-32601]="MethodNotFound",e[e.InvalidParams=-32602]="InvalidParams",e[e.InternalError=-32603]="InternalError",e[e.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(vt||(vt={}));var uh=G({jsonrpc:j(rd),id:ta.optional(),error:G({code:Ze().int(),message:U(),data:_t().optional()})}).strict();var c_=(e)=>uh.safeParse(e).success;var u_=rt([s_,a_,ch,uh]),o4=rt([ch,uh]),dh=En.strict(),FN=wo.extend({requestId:ta.optional(),reason:U().optional()}),id=ko.extend({method:j("notifications/cancelled"),params:FN}),HN=G({src:U(),mimeType:U().optional(),sizes:We(U()).optional(),theme:fn(["light","dark"]).optional()}),Al=G({icons:We(HN).optional()}),ea=G({name:U(),title:U().optional()}),Rl=ea.extend({...ea.shape,...Al.shape,version:U(),websiteUrl:U().optional(),description:U().optional()}),UN=Wc(G({applyDefaults:ht().optional()}),bt(U(),_t())),jN=kf((e)=>{if(e&&typeof e==="object"&&!Array.isArray(e)){if(Object.keys(e).length===0)return{form:{}}}return e},Wc(G({form:UN.optional(),url:Tn.optional()}),bt(U(),_t()).optional())),ZN=Zn({list:Tn.optional(),cancel:Tn.optional(),requests:Zn({sampling:Zn({createMessage:Tn.optional()}).optional(),elicitation:Zn({create:Tn.optional()}).optional()}).optional()}),WN=Zn({list:Tn.optional(),cancel:Tn.optional(),requests:Zn({tools:Zn({call:Tn.optional()}).optional()}).optional()}),qN=G({experimental:bt(U(),Tn).optional(),sampling:G({context:Tn.optional(),tools:Tn.optional()}).optional(),elicitation:jN.optional(),roots:G({listChanged:ht().optional()}).optional(),tasks:ZN.optional()}),GN=fo.extend({protocolVersion:U(),capabilities:qN,clientInfo:Rl}),KN=In.extend({method:j("initialize"),params:GN});var VN=G({experimental:bt(U(),Tn).optional(),logging:Tn.optional(),completions:Tn.optional(),prompts:G({listChanged:ht().optional()}).optional(),resources:G({subscribe:ht().optional(),listChanged:ht().optional()}).optional(),tools:G({listChanged:ht().optional()}).optional(),tasks:WN.optional()}),XN=En.extend({protocolVersion:U(),capabilities:VN,serverInfo:Rl,instructions:U().optional()}),JN=ko.extend({method:j("notifications/initialized"),params:wo.optional()});var Xi=In.extend({method:j("ping"),params:fo.optional()}),YN=G({progress:Ze(),total:Zt(Ze()),message:Zt(U())}),QN=G({...wo.shape,...YN.shape,progressToken:o_}),sd=ko.extend({method:j("notifications/progress"),params:QN}),eM=fo.extend({cursor:r_.optional()}),Pl=In.extend({params:eM.optional()}),Nl=En.extend({nextCursor:r_.optional()}),tM=fn(["working","input_required","completed","failed","cancelled"]),Ml=G({taskId:U(),status:tM,ttl:rt([Ze(),bf()]),createdAt:U(),lastUpdatedAt:U(),pollInterval:Zt(Ze()),statusMessage:Zt(U())}),ad=En.extend({task:Ml}),nM=wo.merge(Ml),zl=ko.extend({method:j("notifications/tasks/status"),params:nM}),ld=In.extend({method:j("tasks/get"),params:fo.extend({taskId:U()})}),cd=En.merge(Ml),ud=In.extend({method:j("tasks/result"),params:fo.extend({taskId:U()})}),r4=En.loose(),dd=Pl.extend({method:j("tasks/list")}),pd=Nl.extend({tasks:We(Ml)}),fd=In.extend({method:j("tasks/cancel"),params:fo.extend({taskId:U()})}),d_=En.merge(Ml),p_=G({uri:U(),mimeType:Zt(U()),_meta:bt(U(),_t()).optional()}),f_=p_.extend({text:U()}),ph=U().refine((e)=>{try{return atob(e),!0}catch{return!1}},{message:"Invalid Base64 string"}),m_=p_.extend({blob:ph}),$l=fn(["user","assistant"]),na=G({audience:We($l).optional(),priority:Ze().min(0).max(1).optional(),lastModified:mf({offset:!0}).optional()}),h_=G({...ea.shape,...Al.shape,uri:U(),description:Zt(U()),mimeType:Zt(U()),annotations:na.optional(),_meta:Zt(Zn({}))}),oM=G({...ea.shape,...Al.shape,uriTemplate:U(),description:Zt(U()),mimeType:Zt(U()),annotations:na.optional(),_meta:Zt(Zn({}))}),fh=Pl.extend({method:j("resources/list")}),md=Nl.extend({resources:We(h_)}),mh=Pl.extend({method:j("resources/templates/list")}),hh=Nl.extend({resourceTemplates:We(oM)}),gh=fo.extend({uri:U()}),rM=gh,yh=In.extend({method:j("resources/read"),params:rM}),hd=En.extend({contents:We(rt([f_,m_]))}),vh=ko.extend({method:j("notifications/resources/list_changed"),params:wo.optional()}),iM=gh,sM=In.extend({method:j("resources/subscribe"),params:iM}),aM=gh,lM=In.extend({method:j("resources/unsubscribe"),params:aM}),cM=wo.extend({uri:U()}),uM=ko.extend({method:j("notifications/resources/updated"),params:cM}),dM=G({name:U(),description:Zt(U()),required:Zt(ht())}),pM=G({...ea.shape,...Al.shape,description:Zt(U()),arguments:Zt(We(dM)),_meta:Zt(Zn({}))}),bh=Pl.extend({method:j("prompts/list")}),xh=Nl.extend({prompts:We(pM)}),fM=fo.extend({name:U(),arguments:bt(U(),U()).optional()}),mM=In.extend({method:j("prompts/get"),params:fM}),wh=G({type:j("text"),text:U(),annotations:na.optional(),_meta:bt(U(),_t()).optional()}),kh=G({type:j("image"),data:ph,mimeType:U(),annotations:na.optional(),_meta:bt(U(),_t()).optional()}),Sh=G({type:j("audio"),data:ph,mimeType:U(),annotations:na.optional(),_meta:bt(U(),_t()).optional()}),hM=G({type:j("tool_use"),name:U(),id:U(),input:bt(U(),_t()),_meta:bt(U(),_t()).optional()}),_h=G({type:j("resource"),resource:rt([f_,m_]),annotations:na.optional(),_meta:bt(U(),_t()).optional()}),Ch=h_.extend({type:j("resource_link")}),oa=rt([wh,kh,Sh,Ch,_h]),gM=G({role:$l,content:oa}),yM=En.extend({description:U().optional(),messages:We(gM)}),Th=ko.extend({method:j("notifications/prompts/list_changed"),params:wo.optional()}),vM=G({title:U().optional(),readOnlyHint:ht().optional(),destructiveHint:ht().optional(),idempotentHint:ht().optional(),openWorldHint:ht().optional()}),bM=G({taskSupport:fn(["required","optional","forbidden"]).optional()}),gd=G({...ea.shape,...Al.shape,description:U().optional(),inputSchema:G({type:j("object"),properties:bt(U(),Tn).optional(),required:We(U()).optional()}).catchall(_t()),outputSchema:G({type:j("object"),properties:bt(U(),Tn).optional(),required:We(U()).optional()}).catchall(_t()).optional(),annotations:vM.optional(),execution:bM.optional(),_meta:bt(U(),_t()).optional()}),yd=Pl.extend({method:j("tools/list")}),xM=Nl.extend({tools:We(gd)}),Ji=En.extend({content:We(oa).default([]),structuredContent:bt(U(),_t()).optional(),isError:ht().optional()}),i4=Ji.or(En.extend({toolResult:_t()})),wM=Il.extend({name:U(),arguments:bt(U(),_t()).optional()}),vd=In.extend({method:j("tools/call"),params:wM}),Ih=ko.extend({method:j("notifications/tools/list_changed"),params:wo.optional()}),s4=G({autoRefresh:ht().default(!0),debounceMs:Ze().int().nonnegative().default(300)}),g_=fn(["debug","info","notice","warning","error","critical","alert","emergency"]),kM=fo.extend({level:g_}),SM=In.extend({method:j("logging/setLevel"),params:kM}),_M=wo.extend({level:g_,logger:U().optional(),data:_t()}),Eh=ko.extend({method:j("notifications/message"),params:_M}),CM=G({name:U().optional()}),TM=G({hints:We(CM).optional(),costPriority:Ze().min(0).max(1).optional(),speedPriority:Ze().min(0).max(1).optional(),intelligencePriority:Ze().min(0).max(1).optional()}),IM=G({mode:fn(["auto","required","none"]).optional()}),EM=G({type:j("tool_result"),toolUseId:U().describe("The unique identifier for the corresponding tool call."),content:We(oa).default([]),structuredContent:G({}).loose().optional(),isError:ht().optional(),_meta:bt(U(),_t()).optional()}),AM=wf("type",[wh,kh,Sh]),od=wf("type",[wh,kh,Sh,hM,EM]),RM=G({role:$l,content:rt([od,We(od)]),_meta:bt(U(),_t()).optional()}),PM=Il.extend({messages:We(RM),modelPreferences:TM.optional(),systemPrompt:U().optional(),includeContext:fn(["none","thisServer","allServers"]).optional(),temperature:Ze().optional(),maxTokens:Ze().int(),stopSequences:We(U()).optional(),metadata:Tn.optional(),tools:We(gd).optional(),toolChoice:IM.optional()}),NM=In.extend({method:j("sampling/createMessage"),params:PM}),MM=En.extend({model:U(),stopReason:Zt(fn(["endTurn","stopSequence","maxTokens"]).or(U())),role:$l,content:AM}),zM=En.extend({model:U(),stopReason:Zt(fn(["endTurn","stopSequence","maxTokens","toolUse"]).or(U())),role:$l,content:rt([od,We(od)])}),$M=G({type:j("boolean"),title:U().optional(),description:U().optional(),default:ht().optional()}),LM=G({type:j("string"),title:U().optional(),description:U().optional(),minLength:Ze().optional(),maxLength:Ze().optional(),format:fn(["email","uri","date","date-time"]).optional(),default:U().optional()}),OM=G({type:fn(["number","integer"]),title:U().optional(),description:U().optional(),minimum:Ze().optional(),maximum:Ze().optional(),default:Ze().optional()}),DM=G({type:j("string"),title:U().optional(),description:U().optional(),enum:We(U()),default:U().optional()}),BM=G({type:j("string"),title:U().optional(),description:U().optional(),oneOf:We(G({const:U(),title:U()})),default:U().optional()}),FM=G({type:j("string"),title:U().optional(),description:U().optional(),enum:We(U()),enumNames:We(U()).optional(),default:U().optional()}),HM=rt([DM,BM]),UM=G({type:j("array"),title:U().optional(),description:U().optional(),minItems:Ze().optional(),maxItems:Ze().optional(),items:G({type:j("string"),enum:We(U())}),default:We(U()).optional()}),jM=G({type:j("array"),title:U().optional(),description:U().optional(),minItems:Ze().optional(),maxItems:Ze().optional(),items:G({anyOf:We(G({const:U(),title:U()}))}),default:We(U()).optional()}),ZM=rt([UM,jM]),WM=rt([FM,HM,ZM]),qM=rt([WM,$M,LM,OM]),GM=Il.extend({mode:j("form").optional(),message:U(),requestedSchema:G({type:j("object"),properties:bt(U(),qM),required:We(U()).optional()})}),KM=Il.extend({mode:j("url"),message:U(),elicitationId:U(),url:U().url()}),VM=rt([GM,KM]),XM=In.extend({method:j("elicitation/create"),params:VM}),JM=wo.extend({elicitationId:U()}),YM=ko.extend({method:j("notifications/elicitation/complete"),params:JM}),QM=En.extend({action:fn(["accept","decline","cancel"]),content:kf((e)=>e===null?void 0:e,bt(U(),rt([U(),Ze(),ht(),We(U())])).optional())}),ez=G({type:j("ref/resource"),uri:U()});var tz=G({type:j("ref/prompt"),name:U()}),nz=fo.extend({ref:rt([tz,ez]),argument:G({name:U(),value:U()}),context:G({arguments:bt(U(),U()).optional()}).optional()}),oz=In.extend({method:j("completion/complete"),params:nz});var rz=En.extend({completion:Zn({values:We(U()).max(100),total:Zt(Ze().int()),hasMore:Zt(ht())})}),iz=G({uri:U().startsWith("file://"),name:U().optional(),_meta:bt(U(),_t()).optional()}),sz=In.extend({method:j("roots/list"),params:fo.optional()}),az=En.extend({roots:We(iz)}),lz=ko.extend({method:j("notifications/roots/list_changed"),params:wo.optional()}),a4=rt([Xi,KN,oz,SM,mM,bh,fh,mh,yh,sM,lM,vd,yd,ld,ud,dd,fd]),l4=rt([id,sd,JN,lz,zl]),c4=rt([dh,MM,zM,QM,az,cd,pd,ad]),u4=rt([Xi,NM,XM,sz,ld,ud,dd,fd]),d4=rt([id,sd,Eh,uM,vh,Ih,Th,zl,YM]),p4=rt([dh,XN,rz,yM,xh,md,hh,hd,Ji,xM,cd,pd,ad]);class lt extends Error{constructor(e,t,n){super(`MCP error ${e}: ${t}`);this.code=e,this.data=n,this.name="McpError"}static fromError(e,t,n){if(e===vt.UrlElicitationRequired&&n){let o=n;if(o.elicitations)return new y_(o.elicitations,t)}return new lt(e,t,n)}}class y_ extends lt{constructor(e,t=`URL elicitation${e.length>1?"s":""} required`){super(vt.UrlElicitationRequired,t,{elicitations:e})}get elicitations(){return this.data?.elicitations??[]}}function bd(e){return!!e._zod}function xd(e,t){if(bd(e))return La(e,t);return e.safeParse(t)}function v_(e){if(!e)return;let t;if(bd(e))t=e._zod?.def?.shape;else t=e.shape;if(!t)return;if(typeof t==="function")try{return t()}catch{return}return t}function b_(e){if(bd(e)){let s=e._zod?.def;if(s){if(s.value!==void 0)return s.value;if(Array.isArray(s.values)&&s.values.length>0)return s.values[0]}}let n=e._def;if(n){if(n.value!==void 0)return n.value;if(Array.isArray(n.values)&&n.values.length>0)return n.values[0]}let o=e.value;if(o!==void 0)return o;return}function ci(e){return e==="completed"||e==="failed"||e==="cancelled"}var cz=Symbol("Let zodToJsonSchema decide on which parser to use");var r5=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function Ah(e){let n=v_(e)?.method;if(!n)throw Error("Schema is missing a method literal");let o=b_(n);if(typeof o!=="string")throw Error("Schema method literal must be a string");return o}function Rh(e,t){let n=xd(e,t);if(!n.success)throw n.error;return n.data}var hz=60000;class wd{constructor(e){if(this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(id,(t)=>{this._oncancel(t)}),this.setNotificationHandler(sd,(t)=>{this._onprogress(t)}),this.setRequestHandler(Xi,(t)=>({})),this._taskStore=e?.taskStore,this._taskMessageQueue=e?.taskMessageQueue,this._taskStore)this.setRequestHandler(ld,async(t,n)=>{let o=await this._taskStore.getTask(t.params.taskId,n.sessionId);if(!o)throw new lt(vt.InvalidParams,"Failed to retrieve task: Task not found");return{...o}}),this.setRequestHandler(ud,async(t,n)=>{let o=async()=>{let i=t.params.taskId;if(this._taskMessageQueue){let a;while(a=await this._taskMessageQueue.dequeue(i,n.sessionId)){if(a.type==="response"||a.type==="error"){let l=a.message,c=l.id,u=this._requestResolvers.get(c);if(u)if(this._requestResolvers.delete(c),a.type==="response")u(l);else{let d=l,p=new lt(d.error.code,d.error.message,d.error.data);u(p)}else{let d=a.type==="response"?"Response":"Error";this._onerror(Error(`${d} handler missing for request ${c}`))}continue}await this._transport?.send(a.message,{relatedRequestId:n.requestId})}}let s=await this._taskStore.getTask(i,n.sessionId);if(!s)throw new lt(vt.InvalidParams,`Task not found: ${i}`);if(!ci(s.status))return await this._waitForTaskUpdate(i,n.signal),await o();if(ci(s.status)){let a=await this._taskStore.getTaskResult(i,n.sessionId);return this._clearTaskQueue(i),{...a,_meta:{...a._meta,[li]:{taskId:i}}}}return await o()};return await o()}),this.setRequestHandler(dd,async(t,n)=>{try{let{tasks:o,nextCursor:i}=await this._taskStore.listTasks(t.params?.cursor,n.sessionId);return{tasks:o,nextCursor:i,_meta:{}}}catch(o){throw new lt(vt.InvalidParams,`Failed to list tasks: ${o instanceof Error?o.message:String(o)}`)}}),this.setRequestHandler(fd,async(t,n)=>{try{let o=await this._taskStore.getTask(t.params.taskId,n.sessionId);if(!o)throw new lt(vt.InvalidParams,`Task not found: ${t.params.taskId}`);if(ci(o.status))throw new lt(vt.InvalidParams,`Cannot cancel task in terminal status: ${o.status}`);await this._taskStore.updateTaskStatus(t.params.taskId,"cancelled","Client cancelled task execution.",n.sessionId),this._clearTaskQueue(t.params.taskId);let i=await this._taskStore.getTask(t.params.taskId,n.sessionId);if(!i)throw new lt(vt.InvalidParams,`Task not found after cancellation: ${t.params.taskId}`);return{_meta:{},...i}}catch(o){if(o instanceof lt)throw o;throw new lt(vt.InvalidRequest,`Failed to cancel task: ${o instanceof Error?o.message:String(o)}`)}})}async _oncancel(e){if(!e.params.requestId)return;this._requestHandlerAbortControllers.get(e.params.requestId)?.abort(e.params.reason)}_setupTimeout(e,t,n,o,i=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(o,t),startTime:Date.now(),timeout:t,maxTotalTimeout:n,resetTimeoutOnProgress:i,onTimeout:o})}_resetTimeout(e){let t=this._timeoutInfo.get(e);if(!t)return!1;let n=Date.now()-t.startTime;if(t.maxTotalTimeout&&n>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),lt.fromError(vt.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:n});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){let t=this._timeoutInfo.get(e);if(t)clearTimeout(t.timeoutId),this._timeoutInfo.delete(e)}async connect(e){if(this._transport)throw Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=e;let t=this.transport?.onclose;this._transport.onclose=()=>{t?.(),this._onclose()};let n=this.transport?.onerror;this._transport.onerror=(i)=>{n?.(i),this._onerror(i)};let o=this._transport?.onmessage;this._transport.onmessage=(i,s)=>{if(o?.(i,s),El(i)||c_(i))this._onresponse(i);else if(lh(i))this._onrequest(i,s);else if(l_(i))this._onnotification(i);else this._onerror(Error(`Unknown message type: ${JSON.stringify(i)}`))},await this._transport.start()}_onclose(){let e=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let n of this._timeoutInfo.values())clearTimeout(n.timeoutId);this._timeoutInfo.clear();for(let n of this._requestHandlerAbortControllers.values())n.abort();this._requestHandlerAbortControllers.clear();let t=lt.fromError(vt.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let n of e.values())n(t)}_onerror(e){this.onerror?.(e)}_onnotification(e){let t=this._notificationHandlers.get(e.method)??this.fallbackNotificationHandler;if(t===void 0)return;Promise.resolve().then(()=>t(e)).catch((n)=>this._onerror(Error(`Uncaught error in notification handler: ${n}`)))}_onrequest(e,t){let n=this._requestHandlers.get(e.method)??this.fallbackRequestHandler,o=this._transport,i=e.params?._meta?.[li]?.taskId;if(n===void 0){let u={jsonrpc:"2.0",id:e.id,error:{code:vt.MethodNotFound,message:"Method not found"}};if(i&&this._taskMessageQueue)this._enqueueTaskMessage(i,{type:"error",message:u,timestamp:Date.now()},o?.sessionId).catch((d)=>this._onerror(Error(`Failed to enqueue error response: ${d}`)));else o?.send(u).catch((d)=>this._onerror(Error(`Failed to send an error response: ${d}`)));return}let s=new AbortController;this._requestHandlerAbortControllers.set(e.id,s);let a=i_(e.params)?e.params.task:void 0,l=this._taskStore?this.requestTaskStore(e,o?.sessionId):void 0,c={signal:s.signal,sessionId:o?.sessionId,_meta:e.params?._meta,sendNotification:async(u)=>{if(s.signal.aborted)return;let d={relatedRequestId:e.id};if(i)d.relatedTask={taskId:i};await this.notification(u,d)},sendRequest:async(u,d,p)=>{if(s.signal.aborted)throw new lt(vt.ConnectionClosed,"Request was cancelled");let f={...p,relatedRequestId:e.id};if(i&&!f.relatedTask)f.relatedTask={taskId:i};let m=f.relatedTask?.taskId??i;if(m&&l)await l.updateTaskStatus(m,"input_required");return await this.request(u,d,f)},authInfo:t?.authInfo,requestId:e.id,requestInfo:t?.requestInfo,taskId:i,taskStore:l,taskRequestedTtl:a?.ttl,closeSSEStream:t?.closeSSEStream,closeStandaloneSSEStream:t?.closeStandaloneSSEStream};Promise.resolve().then(()=>{if(a)this.assertTaskHandlerCapability(e.method)}).then(()=>n(e,c)).then(async(u)=>{if(s.signal.aborted)return;let d={result:u,jsonrpc:"2.0",id:e.id};if(i&&this._taskMessageQueue)await this._enqueueTaskMessage(i,{type:"response",message:d,timestamp:Date.now()},o?.sessionId);else await o?.send(d)},async(u)=>{if(s.signal.aborted)return;let d={jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(u.code)?u.code:vt.InternalError,message:u.message??"Internal error",...u.data!==void 0&&{data:u.data}}};if(i&&this._taskMessageQueue)await this._enqueueTaskMessage(i,{type:"error",message:d,timestamp:Date.now()},o?.sessionId);else await o?.send(d)}).catch((u)=>this._onerror(Error(`Failed to send response: ${u}`))).finally(()=>{if(this._requestHandlerAbortControllers.get(e.id)===s)this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:t,...n}=e.params,o=Number(t),i=this._progressHandlers.get(o);if(!i){this._onerror(Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let s=this._responseHandlers.get(o),a=this._timeoutInfo.get(o);if(a&&s&&a.resetTimeoutOnProgress)try{this._resetTimeout(o)}catch(l){this._responseHandlers.delete(o),this._progressHandlers.delete(o),this._cleanupTimeout(o),s(l);return}i(n)}_onresponse(e){let t=Number(e.id),n=this._requestResolvers.get(t);if(n){if(this._requestResolvers.delete(t),El(e))n(e);else{let s=new lt(e.error.code,e.error.message,e.error.data);n(s)}return}let o=this._responseHandlers.get(t);if(o===void 0){this._onerror(Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}this._responseHandlers.delete(t),this._cleanupTimeout(t);let i=!1;if(El(e)&&e.result&&typeof e.result==="object"){let s=e.result;if(s.task&&typeof s.task==="object"){let a=s.task;if(typeof a.taskId==="string")i=!0,this._taskProgressTokens.set(a.taskId,t)}}if(!i)this._progressHandlers.delete(t);if(El(e))o(e);else{let s=lt.fromError(e.error.code,e.error.message,e.error.data);o(s)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(e,t,n){let{task:o}=n??{};if(!o){try{yield{type:"result",result:await this.request(e,t,n)}}catch(s){yield{type:"error",error:s instanceof lt?s:new lt(vt.InternalError,String(s))}}return}let i;try{let s=await this.request(e,ad,n);if(s.task)i=s.task.taskId,yield{type:"taskCreated",task:s.task};else throw new lt(vt.InternalError,"Task creation did not return a task");while(!0){let a=await this.getTask({taskId:i},n);if(yield{type:"taskStatus",task:a},ci(a.status)){if(a.status==="completed")yield{type:"result",result:await this.getTaskResult({taskId:i},t,n)};else if(a.status==="failed")yield{type:"error",error:new lt(vt.InternalError,`Task ${i} failed`)};else if(a.status==="cancelled")yield{type:"error",error:new lt(vt.InternalError,`Task ${i} was cancelled`)};return}if(a.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:i},t,n)};return}let l=a.pollInterval??this._options?.defaultTaskPollInterval??1000;await new Promise((c)=>setTimeout(c,l)),n?.signal?.throwIfAborted()}}catch(s){yield{type:"error",error:s instanceof lt?s:new lt(vt.InternalError,String(s))}}}request(e,t,n){let{relatedRequestId:o,resumptionToken:i,onresumptiontoken:s,task:a,relatedTask:l}=n??{};return new Promise((c,u)=>{let d=(b)=>{u(b)};if(!this._transport){d(Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{if(this.assertCapabilityForMethod(e.method),a)this.assertTaskCapability(e.method)}catch(b){d(b);return}n?.signal?.throwIfAborted();let p=this._requestMessageId++,f={...e,jsonrpc:"2.0",id:p};if(n?.onprogress)this._progressHandlers.set(p,n.onprogress),f.params={...e.params,_meta:{...e.params?._meta||{},progressToken:p}};if(a)f.params={...f.params,task:a};if(l)f.params={...f.params,_meta:{...f.params?._meta||{},[li]:l}};let m=(b)=>{this._responseHandlers.delete(p),this._progressHandlers.delete(p),this._cleanupTimeout(p),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:p,reason:String(b)}},{relatedRequestId:o,resumptionToken:i,onresumptiontoken:s}).catch((C)=>this._onerror(Error(`Failed to send cancellation: ${C}`)));let x=b instanceof lt?b:new lt(vt.RequestTimeout,String(b));u(x)};this._responseHandlers.set(p,(b)=>{if(n?.signal?.aborted)return;if(b instanceof Error)return u(b);try{let x=xd(t,b.result);if(!x.success)u(x.error);else c(x.data)}catch(x){u(x)}}),n?.signal?.addEventListener("abort",()=>{m(n?.signal?.reason)});let h=n?.timeout??hz,g=()=>m(lt.fromError(vt.RequestTimeout,"Request timed out",{timeout:h}));this._setupTimeout(p,h,n?.maxTotalTimeout,g,n?.resetTimeoutOnProgress??!1);let y=l?.taskId;if(y){let b=(x)=>{let C=this._responseHandlers.get(p);if(C)C(x);else this._onerror(Error(`Response handler missing for side-channeled request ${p}`))};this._requestResolvers.set(p,b),this._enqueueTaskMessage(y,{type:"request",message:f,timestamp:Date.now()}).catch((x)=>{this._cleanupTimeout(p),u(x)})}else this._transport.send(f,{relatedRequestId:o,resumptionToken:i,onresumptiontoken:s}).catch((b)=>{this._cleanupTimeout(p),u(b)})})}async getTask(e,t){return this.request({method:"tasks/get",params:e},cd,t)}async getTaskResult(e,t,n){return this.request({method:"tasks/result",params:e},t,n)}async listTasks(e,t){return this.request({method:"tasks/list",params:e},pd,t)}async cancelTask(e,t){return this.request({method:"tasks/cancel",params:e},d_,t)}async notification(e,t){if(!this._transport)throw Error("Not connected");this.assertNotificationCapability(e.method);let n=t?.relatedTask?.taskId;if(n){let a={...e,jsonrpc:"2.0",params:{...e.params,_meta:{...e.params?._meta||{},[li]:t.relatedTask}}};await this._enqueueTaskMessage(n,{type:"notification",message:a,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(e.method)&&!e.params&&!t?.relatedRequestId&&!t?.relatedTask){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let a={...e,jsonrpc:"2.0"};if(t?.relatedTask)a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[li]:t.relatedTask}}};this._transport?.send(a,t).catch((l)=>this._onerror(l))});return}let s={...e,jsonrpc:"2.0"};if(t?.relatedTask)s={...s,params:{...s.params,_meta:{...s.params?._meta||{},[li]:t.relatedTask}}};await this._transport.send(s,t)}setRequestHandler(e,t){let n=Ah(e);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(o,i)=>{let s=Rh(e,o);return Promise.resolve(t(s,i))})}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,t){let n=Ah(e);this._notificationHandlers.set(n,(o)=>{let i=Rh(e,o);return Promise.resolve(t(i))})}removeNotificationHandler(e){this._notificationHandlers.delete(e)}_cleanupTaskProgressHandler(e){let t=this._taskProgressTokens.get(e);if(t!==void 0)this._progressHandlers.delete(t),this._taskProgressTokens.delete(e)}async _enqueueTaskMessage(e,t,n){if(!this._taskStore||!this._taskMessageQueue)throw Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let o=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(e,t,n,o)}async _clearTaskQueue(e,t){if(this._taskMessageQueue){let n=await this._taskMessageQueue.dequeueAll(e,t);for(let o of n)if(o.type==="request"&&lh(o.message)){let i=o.message.id,s=this._requestResolvers.get(i);if(s)s(new lt(vt.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(i);else this._onerror(Error(`Resolver missing for request ${i} during task ${e} cleanup`))}}}async _waitForTaskUpdate(e,t){let n=this._options?.defaultTaskPollInterval??1000;try{let o=await this._taskStore?.getTask(e);if(o?.pollInterval)n=o.pollInterval}catch{}return new Promise((o,i)=>{if(t.aborted){i(new lt(vt.InvalidRequest,"Request cancelled"));return}let s=setTimeout(o,n);t.addEventListener("abort",()=>{clearTimeout(s),i(new lt(vt.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(e,t){let n=this._taskStore;if(!n)throw Error("No task store configured");return{createTask:async(o)=>{if(!e)throw Error("No request provided");return await n.createTask(o,e.id,{method:e.method,params:e.params},t)},getTask:async(o)=>{let i=await n.getTask(o,t);if(!i)throw new lt(vt.InvalidParams,"Failed to retrieve task: Task not found");return i},storeTaskResult:async(o,i,s)=>{await n.storeTaskResult(o,i,s,t);let a=await n.getTask(o,t);if(a){let l=zl.parse({method:"notifications/tasks/status",params:a});if(await this.notification(l),ci(a.status))this._cleanupTaskProgressHandler(o)}},getTaskResult:(o)=>n.getTaskResult(o,t),updateTaskStatus:async(o,i,s)=>{let a=await n.getTask(o,t);if(!a)throw new lt(vt.InvalidParams,`Task "${o}" not found - it may have been cleaned up`);if(ci(a.status))throw new lt(vt.InvalidParams,`Cannot update task "${o}" from terminal status "${a.status}" to "${i}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(o,i,s,t);let l=await n.getTask(o,t);if(l){let c=zl.parse({method:"notifications/tasks/status",params:l});if(await this.notification(c),ci(l.status))this._cleanupTaskProgressHandler(o)}},listTasks:(o)=>n.listTasks(o,t)}}}var k_="2026-01-26";var gz="ui/notifications/tool-input-partial";var yz=rt([j("light"),j("dark")]).describe("Color theme preference for the host environment."),Ol=rt([j("inline"),j("fullscreen"),j("pip")]).describe("Display mode for UI presentation."),vz=rt([j("--color-background-primary"),j("--color-background-secondary"),j("--color-background-tertiary"),j("--color-background-inverse"),j("--color-background-ghost"),j("--color-background-info"),j("--color-background-danger"),j("--color-background-success"),j("--color-background-warning"),j("--color-background-disabled"),j("--color-text-primary"),j("--color-text-secondary"),j("--color-text-tertiary"),j("--color-text-inverse"),j("--color-text-ghost"),j("--color-text-info"),j("--color-text-danger"),j("--color-text-success"),j("--color-text-warning"),j("--color-text-disabled"),j("--color-border-primary"),j("--color-border-secondary"),j("--color-border-tertiary"),j("--color-border-inverse"),j("--color-border-ghost"),j("--color-border-info"),j("--color-border-danger"),j("--color-border-success"),j("--color-border-warning"),j("--color-border-disabled"),j("--color-ring-primary"),j("--color-ring-secondary"),j("--color-ring-inverse"),j("--color-ring-info"),j("--color-ring-danger"),j("--color-ring-success"),j("--color-ring-warning"),j("--font-sans"),j("--font-mono"),j("--font-weight-normal"),j("--font-weight-medium"),j("--font-weight-semibold"),j("--font-weight-bold"),j("--font-text-xs-size"),j("--font-text-sm-size"),j("--font-text-md-size"),j("--font-text-lg-size"),j("--font-heading-xs-size"),j("--font-heading-sm-size"),j("--font-heading-md-size"),j("--font-heading-lg-size"),j("--font-heading-xl-size"),j("--font-heading-2xl-size"),j("--font-heading-3xl-size"),j("--font-text-xs-line-height"),j("--font-text-sm-line-height"),j("--font-text-md-line-height"),j("--font-text-lg-line-height"),j("--font-heading-xs-line-height"),j("--font-heading-sm-line-height"),j("--font-heading-md-line-height"),j("--font-heading-lg-line-height"),j("--font-heading-xl-line-height"),j("--font-heading-2xl-line-height"),j("--font-heading-3xl-line-height"),j("--border-radius-xs"),j("--border-radius-sm"),j("--border-radius-md"),j("--border-radius-lg"),j("--border-radius-xl"),j("--border-radius-full"),j("--border-width-regular"),j("--shadow-hairline"),j("--shadow-sm"),j("--shadow-md"),j("--shadow-lg")]).describe("CSS variable keys available to MCP apps for theming."),bz=bt(vz.describe(`Style variables for theming MCP apps.
|
|
168
223
|
|
|
169
224
|
Individual style keys are optional - hosts may provide any subset of these values.
|
|
170
225
|
Values are strings containing CSS values (colors, sizes, font stacks, etc.).
|
|
171
226
|
|
|
172
227
|
Note: This type uses \`Record<K, string | undefined>\` rather than \`Partial<Record<K, string>>\`
|
|
173
|
-
for compatibility with Zod schema generation. Both are functionally equivalent for validation.`),
|
|
228
|
+
for compatibility with Zod schema generation. Both are functionally equivalent for validation.`),rt([U(),vf()]).describe(`Style variables for theming MCP apps.
|
|
174
229
|
|
|
175
230
|
Individual style keys are optional - hosts may provide any subset of these values.
|
|
176
231
|
Values are strings containing CSS values (colors, sizes, font stacks, etc.).
|
|
@@ -182,10 +237,10 @@ Individual style keys are optional - hosts may provide any subset of these value
|
|
|
182
237
|
Values are strings containing CSS values (colors, sizes, font stacks, etc.).
|
|
183
238
|
|
|
184
239
|
Note: This type uses \`Record<K, string | undefined>\` rather than \`Partial<Record<K, string>>\`
|
|
185
|
-
for compatibility with Zod schema generation. Both are functionally equivalent for validation.`),
|
|
240
|
+
for compatibility with Zod schema generation. Both are functionally equivalent for validation.`),xz=G({method:j("ui/open-link"),params:G({url:U().describe("URL to open in the host's browser")})}),s3=G({isError:ht().optional().describe("True if the host failed to open the URL (e.g., due to security policy).")}).passthrough(),a3=G({isError:ht().optional().describe("True if the download failed (e.g., user cancelled or host denied).")}).passthrough(),l3=G({isError:ht().optional().describe("True if the host rejected or failed to deliver the message.")}).passthrough(),wz=G({method:j("ui/notifications/sandbox-proxy-ready"),params:G({})}),Ph=G({connectDomains:We(U()).optional().describe(`Origins for network requests (fetch/XHR/WebSocket).
|
|
186
241
|
|
|
187
242
|
- Maps to CSP \`connect-src\` directive
|
|
188
|
-
- Empty or omitted → no network connections (secure default)`),resourceDomains:
|
|
243
|
+
- Empty or omitted → no network connections (secure default)`),resourceDomains:We(U()).optional().describe("Origins for static resources (images, scripts, stylesheets, fonts, media).\n\n- Maps to CSP `img-src`, `script-src`, `style-src`, `font-src`, `media-src` directives\n- Wildcard subdomains supported: `https://*.example.com`\n- Empty or omitted → no network resources (secure default)"),frameDomains:We(U()).optional().describe("Origins for nested iframes.\n\n- Maps to CSP `frame-src` directive\n- Empty or omitted → no nested iframes allowed (`frame-src 'none'`)"),baseUriDomains:We(U()).optional().describe("Allowed base URIs for the document.\n\n- Maps to CSP `base-uri` directive\n- Empty or omitted → only same origin allowed (`base-uri 'self'`)")}),Nh=G({camera:G({}).optional().describe("Request camera access.\n\nMaps to Permission Policy `camera` feature."),microphone:G({}).optional().describe("Request microphone access.\n\nMaps to Permission Policy `microphone` feature."),geolocation:G({}).optional().describe("Request geolocation access.\n\nMaps to Permission Policy `geolocation` feature."),clipboardWrite:G({}).optional().describe("Request clipboard write access.\n\nMaps to Permission Policy `clipboard-write` feature.")}),kz=G({method:j("ui/notifications/size-changed"),params:G({width:Ze().optional().describe("New width in pixels."),height:Ze().optional().describe("New height in pixels.")})}),c3=G({method:j("ui/notifications/tool-input"),params:G({arguments:bt(U(),_t().describe("Complete tool call arguments as key-value pairs.")).optional().describe("Complete tool call arguments as key-value pairs.")})}),u3=G({method:j("ui/notifications/tool-input-partial"),params:G({arguments:bt(U(),_t().describe("Partial tool call arguments (incomplete, may change).")).optional().describe("Partial tool call arguments (incomplete, may change).")})}),d3=G({method:j("ui/notifications/tool-cancelled"),params:G({reason:U().optional().describe('Optional reason for the cancellation (e.g., "user action", "timeout").')})}),Sz=G({fonts:U().optional()}),_z=G({variables:bz.optional().describe("CSS variables for theming the app."),css:Sz.optional().describe("CSS blocks that apps can inject.")}),p3=G({method:j("ui/resource-teardown"),params:G({})}),Cz=bt(U(),_t()),x_=G({text:G({}).optional().describe("Host supports text content blocks."),image:G({}).optional().describe("Host supports image content blocks."),audio:G({}).optional().describe("Host supports audio content blocks."),resource:G({}).optional().describe("Host supports resource content blocks."),resourceLink:G({}).optional().describe("Host supports resource link content blocks."),structuredContent:G({}).optional().describe("Host supports structured content.")}),Tz=G({method:j("ui/notifications/request-teardown"),params:G({}).optional()}),Iz=G({experimental:G({}).optional().describe("Experimental features (structure TBD)."),openLinks:G({}).optional().describe("Host supports opening external URLs."),downloadFile:G({}).optional().describe("Host supports file downloads via ui/download-file."),serverTools:G({listChanged:ht().optional().describe("Host supports tools/list_changed notifications.")}).optional().describe("Host can proxy tool calls to the MCP server."),serverResources:G({listChanged:ht().optional().describe("Host supports resources/list_changed notifications.")}).optional().describe("Host can proxy resource reads to the MCP server."),logging:G({}).optional().describe("Host accepts log messages."),sandbox:G({permissions:Nh.optional().describe("Permissions granted by the host (camera, microphone, geolocation)."),csp:Ph.optional().describe("CSP domains approved by the host.")}).optional().describe("Sandbox configuration applied by the host."),updateModelContext:x_.optional().describe("Host accepts context updates (ui/update-model-context) to be included in the model's context for future turns."),message:x_.optional().describe("Host supports receiving content messages (ui/message) from the view.")}),Ez=G({experimental:G({}).optional().describe("Experimental features (structure TBD)."),tools:G({listChanged:ht().optional().describe("App supports tools/list_changed notifications.")}).optional().describe("App exposes MCP-style tools that the host can call."),availableDisplayModes:We(Ol).optional().describe("Display modes the app supports.")}),Az=G({method:j("ui/notifications/initialized"),params:G({}).optional()}),f3=G({csp:Ph.optional().describe("Content Security Policy configuration for UI resources."),permissions:Nh.optional().describe("Sandbox permissions requested by the UI resource."),domain:U().optional().describe(`Dedicated origin for view sandbox.
|
|
189
244
|
|
|
190
245
|
Useful when views need stable, dedicated origins for OAuth callbacks, CORS policies, or API key allowlists.
|
|
191
246
|
|
|
@@ -193,16 +248,16 @@ Useful when views need stable, dedicated origins for OAuth callbacks, CORS polic
|
|
|
193
248
|
- Hash-based subdomains (e.g., \`{hash}.claudemcpcontent.com\`)
|
|
194
249
|
- URL-derived subdomains (e.g., \`www-example-com.oaiusercontent.com\`)
|
|
195
250
|
|
|
196
|
-
If omitted, host uses default sandbox origin (typically per-conversation).`),prefersBorder:
|
|
251
|
+
If omitted, host uses default sandbox origin (typically per-conversation).`),prefersBorder:ht().optional().describe(`Visual boundary preference - true if view prefers a visible border.
|
|
197
252
|
|
|
198
253
|
Boolean requesting whether a visible border and background is provided by the host. Specifying an explicit value for this is recommended because hosts' defaults may vary.
|
|
199
254
|
|
|
200
255
|
- \`true\`: request visible border + background
|
|
201
256
|
- \`false\`: request no visible border + background
|
|
202
|
-
- omitted: host decides border`)}),
|
|
257
|
+
- omitted: host decides border`)}),w_=G({method:j("ui/request-display-mode"),params:G({mode:Ol.describe("The display mode being requested.")})}),m3=G({mode:Ol.describe("The display mode that was actually set. May differ from requested if not supported.")}).passthrough(),Rz=rt([j("model"),j("app")]).describe("Tool visibility scope - who can access the tool."),h3=G({resourceUri:U().optional(),visibility:We(Rz).optional().describe(`Who can access this tool. Default: ["model", "app"]
|
|
203
258
|
- "model": Tool visible to and callable by the agent
|
|
204
|
-
- "app": Tool callable by the app from this server only`)}),
|
|
205
|
-
container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:P().optional().describe("User's language and region preference in BCP 47 format."),timeZone:P().optional().describe("User's timezone in IANA format."),userAgent:P().optional().describe("Host application identifier."),platform:Ae([C("web"),C("desktop"),C("mobile")]).optional().describe("Platform type for responsive design decisions."),deviceCapabilities:O({touch:Xe().optional().describe("Whether the device supports touch input."),hover:Xe().optional().describe("Whether the device supports hover interactions.")}).optional().describe("Device input capabilities."),safeAreaInsets:O({top:ge().describe("Top safe area inset in pixels."),right:ge().describe("Right safe area inset in pixels."),bottom:ge().describe("Bottom safe area inset in pixels."),left:ge().describe("Left safe area inset in pixels.")}).optional().describe("Mobile safe area boundaries in pixels.")}).passthrough(),A5=O({method:C("ui/notifications/host-context-changed"),params:b_.describe("Partial context update containing only changed fields.")}),lP=O({method:C("ui/update-model-context"),params:O({content:he(Pi).optional().describe("Context content blocks (text, image, etc.)."),structuredContent:Ze(P(),qe().describe("Structured content for machine-readable context data.")).optional().describe("Structured content for machine-readable context data.")})}),uP=O({method:C("ui/initialize"),params:O({appInfo:Hs.describe("App identification (name and version)."),appCapabilities:rP.describe("Features and capabilities this app provides."),protocolVersion:P().describe("Protocol version this app supports.")})}),I5=O({protocolVersion:P().describe('Negotiated protocol version string (e.g., "2025-11-21").'),hostInfo:Hs.describe("Host application identification and version."),hostCapabilities:oP.describe("Features and capabilities provided by the host."),hostContext:b_.describe("Rich context about the host environment.")}).passthrough();class im{eventTarget;eventSource;messageListener;constructor(e=window.parent,t){this.eventTarget=e,this.eventSource=t,this.messageListener=(n)=>{if(t&&n.source!==this.eventSource){console.debug("Ignoring message from unknown source",n);return}let o=s_.safeParse(n.data);if(o.success)console.debug("Parsed message",o.data),this.onmessage?.(o.data);else if(n.data?.jsonrpc!=="2.0")console.debug("Ignoring non-JSON-RPC message",o.error.message,n);else console.error("Failed to parse message",o.error.message,n),this.onerror?.(Error("Invalid JSON-RPC message received: "+o.error.message))}}async start(){window.addEventListener("message",this.messageListener)}async send(e,t){if(e.method!==q1)console.debug("Sending message",e);this.eventTarget.postMessage(e,"*")}async close(){window.removeEventListener("message",this.messageListener),this.onclose?.()}onclose;onerror;onmessage;sessionId;setProtocolVersion}function x_(e){if(!e)return"";let t=[];if(e.camera)t.push("camera");if(e.microphone)t.push("microphone");if(e.geolocation)t.push("geolocation");if(e.clipboardWrite)t.push("clipboard-write");return t.join("; ")}var dP=[y_];class sm extends Al{_client;_hostInfo;_capabilities;_appCapabilities;_hostContext={};_appInfo;constructor(e,t,n,o){super(o);this._client=e,this._hostInfo=t,this._capabilities=n,this._hostContext=o?.hostContext||{},this.setRequestHandler(uP,(r)=>this._oninitialize(r)),this.setRequestHandler(Ir,(r,s)=>(this.onping?.(r.params,s),{})),this.setRequestHandler(v_,(r)=>({mode:this._hostContext.displayMode??"inline"}))}getAppCapabilities(){return this._appCapabilities}getAppVersion(){return this._appInfo}onping;set onsizechange(e){this.setNotificationHandler(Y1,(t)=>e(t.params))}set onsandboxready(e){this.setNotificationHandler(J1,(t)=>e(t.params))}set oninitialized(e){this.setNotificationHandler(iP,(t)=>e(t.params))}set onmessage(e){this.setRequestHandler(cP,async(t,n)=>e(t.params,n))}set onopenlink(e){this.setRequestHandler(K1,async(t,n)=>e(t.params,n))}set ondownloadfile(e){this.setRequestHandler(aP,async(t,n)=>e(t.params,n))}set onrequestteardown(e){this.setNotificationHandler(nP,(t)=>e(t.params))}set onrequestdisplaymode(e){this.setRequestHandler(v_,async(t,n)=>e(t.params,n))}set onloggingmessage(e){this.setNotificationHandler(em,async(t)=>{e(t.params)})}set onupdatemodelcontext(e){this.setRequestHandler(lP,async(t,n)=>e(t.params,n))}set oncalltool(e){this.setRequestHandler(Tl,async(t,n)=>e(t.params,n))}sendToolListChanged(e={}){return this.notification({method:"notifications/tools/list_changed",params:e})}set onlistresources(e){this.setRequestHandler(Fp,async(t,n)=>e(t.params,n))}set onlistresourcetemplates(e){this.setRequestHandler(Bp,async(t,n)=>e(t.params,n))}set onreadresource(e){this.setRequestHandler(Up,async(t,n)=>e(t.params,n))}sendResourceListChanged(e={}){return this.notification({method:"notifications/resources/list_changed",params:e})}set onlistprompts(e){this.setRequestHandler(Wp,async(t,n)=>e(t.params,n))}sendPromptListChanged(e={}){return this.notification({method:"notifications/prompts/list_changed",params:e})}assertCapabilityForMethod(e){}assertRequestHandlerCapability(e){}assertNotificationCapability(e){}assertTaskCapability(e){throw Error("Tasks are not supported in MCP Apps")}assertTaskHandlerCapability(e){throw Error("Task handlers are not supported in MCP Apps")}getCapabilities(){return this._capabilities}async _oninitialize(e){let t=e.params.protocolVersion;return this._appCapabilities=e.params.appCapabilities,this._appInfo=e.params.appInfo,{protocolVersion:dP.includes(t)?t:y_,hostCapabilities:this.getCapabilities(),hostInfo:this._hostInfo,hostContext:this._hostContext}}setHostContext(e){let t={},n=!1;for(let o of Object.keys(e)){let r=this._hostContext[o],s=e[o];if(pP(r,s))continue;t[o]=s,n=!0}if(n)this._hostContext=e,this.sendHostContextChange(t)}sendHostContextChange(e){return this.notification({method:"ui/notifications/host-context-changed",params:e})}sendToolInput(e){return this.notification({method:"ui/notifications/tool-input",params:e})}sendToolInputPartial(e){return this.notification({method:"ui/notifications/tool-input-partial",params:e})}sendToolResult(e){return this.notification({method:"ui/notifications/tool-result",params:e})}sendToolCancelled(e){return this.notification({method:"ui/notifications/tool-cancelled",params:e})}sendSandboxResourceReady(e){return this.notification({method:"ui/notifications/sandbox-resource-ready",params:e})}teardownResource(e,t){return this.request({method:"ui/resource-teardown",params:e},tP,t)}sendResourceTeardown=this.teardownResource;async connect(e){if(this.transport)throw Error("AppBridge is already connected. Call close() before connecting again.");if(this._client){let t=this._client.getServerCapabilities();if(!t)throw Error("Client server capabilities not available");if(t.tools){if(this.oncalltool=async(n,o)=>this._client.request({method:"tools/call",params:n},Pr,{signal:o.signal}),t.tools.listChanged)this._client.setNotificationHandler(Qp,(n)=>this.sendToolListChanged(n.params))}if(t.resources){if(this.onlistresources=async(n,o)=>this._client.request({method:"resources/list",params:n},wl,{signal:o.signal}),this.onlistresourcetemplates=async(n,o)=>this._client.request({method:"resources/templates/list",params:n},Hp,{signal:o.signal}),this.onreadresource=async(n,o)=>this._client.request({method:"resources/read",params:n},_l,{signal:o.signal}),t.resources.listChanged)this._client.setNotificationHandler(Zp,(n)=>this.sendResourceListChanged(n.params))}if(t.prompts){if(this.onlistprompts=async(n,o)=>this._client.request({method:"prompts/list",params:n},qp,{signal:o.signal}),t.prompts.listChanged)this._client.setNotificationHandler(Yp,(n)=>this.sendPromptListChanged(n.params))}}return super.connect(e)}}function pP(e,t){return JSON.stringify(e)===JSON.stringify(t)}function am(e){return e!==null&&typeof e==="object"&&!Array.isArray(e)}function mP(e){return am(e)&&Array.isArray(e.content)&&e.content.every((t)=>am(t)&&typeof t.type==="string")}function fP(...e){for(let t of e)if(typeof t==="string"){if(t.trim().length>0)return t}return}function hP(e){if(typeof e==="string")return e;if(e===void 0)return;try{return JSON.stringify(e)}catch(t){return console.debug("[ext-app-tool-result] stringify failed",t),String(e)}}function cm(e){let t=e.success===!1;if(mP(e.result))return{...e.result,isError:e.result.isError===!0||t};let n=am(e.result)?e.result:null,o=fP(e.detailedContent,e.content,n?.detailedContent,n?.content,n?.textResultForLlm,n?.text,n?.message,typeof e.result==="string"?e.result:void 0,e.error)??hP(e.result);return{content:o?[{type:"text",text:o}]:[],isError:t}}function w_(e,t){if(e===t)return!0;if(e.isError!==t.isError)return!1;try{let n=JSON.stringify(e),o=JSON.stringify(t);if(n===void 0||o===void 0)return!1;if(Math.abs(n.length-o.length)>2000000)return!1;return n===o}catch{return!1}}function __(e){return Boolean(e)&&typeof e==="object"&&e!==null&&!Array.isArray(e)&&"ok"in e&&typeof e.ok==="boolean"}async function gP(e,t){let n=await ct("/api/canvas/frame-documents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({html:e,sandbox:t})}),o=await n.json();if(!n.ok||!__(o)||!o.ok||typeof o.url!=="string"){let r=__(o)&&o.error?o.error:`Frame document request failed with HTTP ${n.status}`;throw Error(r)}return o.url}function S_(e,t){let n=Rt.value,[o,r]=A(null),[s,a]=A(0),c=L(0);H(()=>{if(r(null),!e||n!=="src")return;let u=!1;return c.current=_r.value,gP(e,t).then((p)=>{if(!u)r(p)}).catch((p)=>{console.error("[iframe-document] failed to create frame document:",p)}),()=>{u=!0}},[e,t,n,s]);let l=_r.value;return H(()=>{if(n!=="src"||l===c.current)return;if(!o){a((p)=>p+1);return}let u=!1;return ct(o,{method:"HEAD"}).then((p)=>{if(u)return;if(p.ok){c.current=l;return}a((d)=>d+1)}).catch(()=>{}),()=>{u=!0}},[l,o,n]),Be(()=>{if(n==="srcdoc"&&e)return{attributes:{srcdoc:e},ready:!0,key:`srcdoc-${bi(e)}`};return{attributes:o?{src:o}:{},ready:Boolean(o),key:o??""}},[o,n,e])}function Ni(e){let{enabled:t,token:n,nodeId:o,sourceSurface:r,iframeRef:s}=e;_n(()=>{if(!t||!n)return;function a(c){if(c.source!==s.current?.contentWindow)return;let l=c.data;if(!l||l.source!==Xc||l.token!==n||l.nodeId!==o)return;let u=l.interaction;if(!u||typeof u.type!=="string")return;let p=u.type;vc({type:p,sourceNodeId:o,sourceSurface:r,...u.payload&&typeof u.payload==="object"?{payload:u.payload}:{}}).then((d)=>{if(d.ok)on("context","AX interaction",p,[o]);s.current?.contentWindow?.postMessage({source:Kc,token:n,...l.correlationId?{correlationId:l.correlationId}:{},interaction:{type:p},result:d},"*")})}return window.addEventListener("message",a),()=>window.removeEventListener("message",a)},[t,n,o,r])}async function Nr(e,t){let o=await(await ct(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})).json();if(!o.ok)throw Error(o.error??`Request failed: ${e}`);return o.result}function zr(e){return/AppleWebKit/.test(e)&&!/Chrome|Chromium|CriOS|Edg|Android/.test(e)}function vP(e){let{userAgent:t,visibilityState:n,rect:o,viewport:r,alreadyRearmed:s}=e;if(s)return!1;if(!zr(t))return!1;if(n!=="hidden")return!1;if(o.width<=0||o.height<=0)return!1;return o.bottom>0&&o.right>0&&o.top<r.height&&o.left<r.width}var N_=1000,k_=7000;function At(e,t){if(typeof window>"u")return;let n=window;if(n.__PMX_EXTAPP_LOG??=[],n.__PMX_EXTAPP_LOG.length<500)n.__PMX_EXTAPP_LOG.push({t:Date.now(),nodeId:e,event:t});yP({t:Date.now(),nodeId:e,event:t})}var T_=[],lm=null;function yP(e){if(T_.push({...e,...typeof document<"u"?{visibility:document.visibilityState}:{}}),lm)return;lm=setTimeout(()=>{lm=null;let t=T_.splice(0);if(t.length===0)return;ct("/api/canvas/debug/ext-app-recovery",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({entries:t})}).catch(()=>{})},1500)}var C_=Promise.resolve();function E_(e){C_=C_.then(async()=>{if(!e.remount())return;await e.awaitBoot(),await new Promise((t)=>setTimeout(t,N_))}).catch(()=>{})}function bP(e,t){let n=typeof e.data.html==="string"?e.data.html:"",o=typeof e.data.serverName==="string"?e.data.serverName:"",r=typeof e.data.appSessionId==="string"?e.data.appSessionId:"",s=typeof e.data.sessionStatus==="string"?e.data.sessionStatus:"";return`${e.id}:${t}:${o}:${r}:${s}:${n}`}function xP(e,t){if(e==="fullscreen")return{nextMode:"fullscreen",shouldExpand:!t,shouldCollapse:!1};if(e==="inline")return{nextMode:"inline",shouldExpand:!1,shouldCollapse:t};return{nextMode:e,shouldExpand:!1,shouldCollapse:!1}}async function A_(e,t,n){if(await e.sendToolInput({arguments:t}),n)await e.sendToolResult(n)}function wP(e){return typeof e==="string"&&e.trim().length>0?e.trim():wp}function _P(e,t){return`<script data-pmx-canvas-ax-bridge>
|
|
259
|
+
- "app": Tool callable by the app from this server only`)}),g3=G({mimeTypes:We(U()).optional().describe('Array of supported MIME types for UI resources.\nMust include `"text/html;profile=mcp-app"` for MCP Apps support.')}),Pz=G({method:j("ui/download-file"),params:G({contents:We(rt([_h,Ch])).describe("Resource contents to download — embedded (inline data) or linked (host fetches). Uses standard MCP resource types.")})}),Nz=G({method:j("ui/message"),params:G({role:j("user").describe('Message role, currently only "user" is supported.'),content:We(oa).describe("Message content blocks (text, image, etc.).")})}),y3=G({method:j("ui/notifications/sandbox-resource-ready"),params:G({html:U().describe("HTML content to load into the inner iframe."),sandbox:U().optional().describe("Optional override for the inner iframe's sandbox attribute."),csp:Ph.optional().describe("CSP configuration from resource metadata."),permissions:Nh.optional().describe("Sandbox permissions from resource metadata.")})}),v3=G({method:j("ui/notifications/tool-result"),params:Ji.describe("Standard MCP tool execution result.")}),S_=G({toolInfo:G({id:ta.optional().describe("JSON-RPC id of the tools/call request."),tool:gd.describe("Tool definition including name, inputSchema, etc.")}).optional().describe("Metadata of the tool call that instantiated this App."),theme:yz.optional().describe("Current color theme preference."),styles:_z.optional().describe("Style configuration for theming the app."),displayMode:Ol.optional().describe("How the UI is currently displayed."),availableDisplayModes:We(Ol).optional().describe("Display modes the host supports."),containerDimensions:rt([G({height:Ze().describe("Fixed container height in pixels.")}),G({maxHeight:rt([Ze(),vf()]).optional().describe("Maximum container height in pixels.")})]).and(rt([G({width:Ze().describe("Fixed container width in pixels.")}),G({maxWidth:rt([Ze(),vf()]).optional().describe("Maximum container width in pixels.")})])).optional().describe(`Container dimensions. Represents the dimensions of the iframe or other
|
|
260
|
+
container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:U().optional().describe("User's language and region preference in BCP 47 format."),timeZone:U().optional().describe("User's timezone in IANA format."),userAgent:U().optional().describe("Host application identifier."),platform:rt([j("web"),j("desktop"),j("mobile")]).optional().describe("Platform type for responsive design decisions."),deviceCapabilities:G({touch:ht().optional().describe("Whether the device supports touch input."),hover:ht().optional().describe("Whether the device supports hover interactions.")}).optional().describe("Device input capabilities."),safeAreaInsets:G({top:Ze().describe("Top safe area inset in pixels."),right:Ze().describe("Right safe area inset in pixels."),bottom:Ze().describe("Bottom safe area inset in pixels."),left:Ze().describe("Left safe area inset in pixels.")}).optional().describe("Mobile safe area boundaries in pixels.")}).passthrough(),b3=G({method:j("ui/notifications/host-context-changed"),params:S_.describe("Partial context update containing only changed fields.")}),Mz=G({method:j("ui/update-model-context"),params:G({content:We(oa).optional().describe("Context content blocks (text, image, etc.)."),structuredContent:bt(U(),_t().describe("Structured content for machine-readable context data.")).optional().describe("Structured content for machine-readable context data.")})}),zz=G({method:j("ui/initialize"),params:G({appInfo:Rl.describe("App identification (name and version)."),appCapabilities:Ez.describe("Features and capabilities this app provides."),protocolVersion:U().describe("Protocol version this app supports.")})}),x3=G({protocolVersion:U().describe('Negotiated protocol version string (e.g., "2025-11-21").'),hostInfo:Rl.describe("Host application identification and version."),hostCapabilities:Iz.describe("Features and capabilities provided by the host."),hostContext:S_.describe("Rich context about the host environment.")}).passthrough();class Mh{eventTarget;eventSource;messageListener;constructor(e=window.parent,t){this.eventTarget=e,this.eventSource=t,this.messageListener=(n)=>{if(t&&n.source!==this.eventSource){console.debug("Ignoring message from unknown source",n);return}let o=u_.safeParse(n.data);if(o.success)console.debug("Parsed message",o.data),this.onmessage?.(o.data);else if(n.data?.jsonrpc!=="2.0")console.debug("Ignoring non-JSON-RPC message",o.error.message,n);else console.error("Failed to parse message",o.error.message,n),this.onerror?.(Error("Invalid JSON-RPC message received: "+o.error.message))}}async start(){window.addEventListener("message",this.messageListener)}async send(e,t){if(e.method!==gz)console.debug("Sending message",e);this.eventTarget.postMessage(e,"*")}async close(){window.removeEventListener("message",this.messageListener),this.onclose?.()}onclose;onerror;onmessage;sessionId;setProtocolVersion}function __(e){if(!e)return"";let t=[];if(e.camera)t.push("camera");if(e.microphone)t.push("microphone");if(e.geolocation)t.push("geolocation");if(e.clipboardWrite)t.push("clipboard-write");return t.join("; ")}var $z=[k_];class zh extends wd{_client;_hostInfo;_capabilities;_appCapabilities;_hostContext={};_appInfo;constructor(e,t,n,o){super(o);this._client=e,this._hostInfo=t,this._capabilities=n,this._hostContext=o?.hostContext||{},this.setRequestHandler(zz,(i)=>this._oninitialize(i)),this.setRequestHandler(Xi,(i,s)=>(this.onping?.(i.params,s),{})),this.setRequestHandler(w_,(i)=>({mode:this._hostContext.displayMode??"inline"}))}getAppCapabilities(){return this._appCapabilities}getAppVersion(){return this._appInfo}onping;set onsizechange(e){this.setNotificationHandler(kz,(t)=>e(t.params))}set onsandboxready(e){this.setNotificationHandler(wz,(t)=>e(t.params))}set oninitialized(e){this.setNotificationHandler(Az,(t)=>e(t.params))}set onmessage(e){this.setRequestHandler(Nz,async(t,n)=>e(t.params,n))}set onopenlink(e){this.setRequestHandler(xz,async(t,n)=>e(t.params,n))}set ondownloadfile(e){this.setRequestHandler(Pz,async(t,n)=>e(t.params,n))}set onrequestteardown(e){this.setNotificationHandler(Tz,(t)=>e(t.params))}set onrequestdisplaymode(e){this.setRequestHandler(w_,async(t,n)=>e(t.params,n))}set onloggingmessage(e){this.setNotificationHandler(Eh,async(t)=>{e(t.params)})}set onupdatemodelcontext(e){this.setRequestHandler(Mz,async(t,n)=>e(t.params,n))}set oncalltool(e){this.setRequestHandler(vd,async(t,n)=>e(t.params,n))}sendToolListChanged(e={}){return this.notification({method:"notifications/tools/list_changed",params:e})}set onlistresources(e){this.setRequestHandler(fh,async(t,n)=>e(t.params,n))}set onlistresourcetemplates(e){this.setRequestHandler(mh,async(t,n)=>e(t.params,n))}set onreadresource(e){this.setRequestHandler(yh,async(t,n)=>e(t.params,n))}sendResourceListChanged(e={}){return this.notification({method:"notifications/resources/list_changed",params:e})}set onlistprompts(e){this.setRequestHandler(bh,async(t,n)=>e(t.params,n))}sendPromptListChanged(e={}){return this.notification({method:"notifications/prompts/list_changed",params:e})}assertCapabilityForMethod(e){}assertRequestHandlerCapability(e){}assertNotificationCapability(e){}assertTaskCapability(e){throw Error("Tasks are not supported in MCP Apps")}assertTaskHandlerCapability(e){throw Error("Task handlers are not supported in MCP Apps")}getCapabilities(){return this._capabilities}async _oninitialize(e){let t=e.params.protocolVersion;return this._appCapabilities=e.params.appCapabilities,this._appInfo=e.params.appInfo,{protocolVersion:$z.includes(t)?t:k_,hostCapabilities:this.getCapabilities(),hostInfo:this._hostInfo,hostContext:this._hostContext}}setHostContext(e){let t={},n=!1;for(let o of Object.keys(e)){let i=this._hostContext[o],s=e[o];if(Lz(i,s))continue;t[o]=s,n=!0}if(n)this._hostContext=e,this.sendHostContextChange(t)}sendHostContextChange(e){return this.notification({method:"ui/notifications/host-context-changed",params:e})}sendToolInput(e){return this.notification({method:"ui/notifications/tool-input",params:e})}sendToolInputPartial(e){return this.notification({method:"ui/notifications/tool-input-partial",params:e})}sendToolResult(e){return this.notification({method:"ui/notifications/tool-result",params:e})}sendToolCancelled(e){return this.notification({method:"ui/notifications/tool-cancelled",params:e})}sendSandboxResourceReady(e){return this.notification({method:"ui/notifications/sandbox-resource-ready",params:e})}teardownResource(e,t){return this.request({method:"ui/resource-teardown",params:e},Cz,t)}sendResourceTeardown=this.teardownResource;async connect(e){if(this.transport)throw Error("AppBridge is already connected. Call close() before connecting again.");if(this._client){let t=this._client.getServerCapabilities();if(!t)throw Error("Client server capabilities not available");if(t.tools){if(this.oncalltool=async(n,o)=>this._client.request({method:"tools/call",params:n},Ji,{signal:o.signal}),t.tools.listChanged)this._client.setNotificationHandler(Ih,(n)=>this.sendToolListChanged(n.params))}if(t.resources){if(this.onlistresources=async(n,o)=>this._client.request({method:"resources/list",params:n},md,{signal:o.signal}),this.onlistresourcetemplates=async(n,o)=>this._client.request({method:"resources/templates/list",params:n},hh,{signal:o.signal}),this.onreadresource=async(n,o)=>this._client.request({method:"resources/read",params:n},hd,{signal:o.signal}),t.resources.listChanged)this._client.setNotificationHandler(vh,(n)=>this.sendResourceListChanged(n.params))}if(t.prompts){if(this.onlistprompts=async(n,o)=>this._client.request({method:"prompts/list",params:n},xh,{signal:o.signal}),t.prompts.listChanged)this._client.setNotificationHandler(Th,(n)=>this.sendPromptListChanged(n.params))}}return super.connect(e)}}function Lz(e,t){return JSON.stringify(e)===JSON.stringify(t)}function $h(e){return e!==null&&typeof e==="object"&&!Array.isArray(e)}function Oz(e){return $h(e)&&Array.isArray(e.content)&&e.content.every((t)=>$h(t)&&typeof t.type==="string")}function Dz(...e){for(let t of e)if(typeof t==="string"){if(t.trim().length>0)return t}return}function Bz(e){if(typeof e==="string")return e;if(e===void 0)return;try{return JSON.stringify(e)}catch(t){return console.debug("[ext-app-tool-result] stringify failed",t),String(e)}}function Lh(e){let t=e.success===!1;if(Oz(e.result))return{...e.result,isError:e.result.isError===!0||t};let n=$h(e.result)?e.result:null,o=Dz(e.detailedContent,e.content,n?.detailedContent,n?.content,n?.textResultForLlm,n?.text,n?.message,typeof e.result==="string"?e.result:void 0,e.error)??Bz(e.result);return{content:o?[{type:"text",text:o}]:[],isError:t}}function C_(e,t){if(e===t)return!0;if(e.isError!==t.isError)return!1;try{let n=JSON.stringify(e),o=JSON.stringify(t);if(n===void 0||o===void 0)return!1;if(Math.abs(n.length-o.length)>2000000)return!1;return n===o}catch{return!1}}function T_(e){return Boolean(e)&&typeof e==="object"&&e!==null&&!Array.isArray(e)&&"ok"in e&&typeof e.ok==="boolean"}async function Fz(e,t){let n=await qt("/api/canvas/frame-documents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({html:e,sandbox:t})}),o=await n.json();if(!n.ok||!T_(o)||!o.ok||typeof o.url!=="string"){let i=T_(o)&&o.error?o.error:`Frame document request failed with HTTP ${n.status}`;throw Error(i)}return o.url}function I_(e,t){let n=Sn.value,[o,i]=E(null),[s,a]=E(0),l=D(0);q(()=>{if(i(null),!e||n!=="src")return;let u=!1;return l.current=ji.value,Fz(e,t).then((d)=>{if(!u)i(d)}).catch((d)=>{console.error("[iframe-document] failed to create frame document:",d)}),()=>{u=!0}},[e,t,n,s]);let c=ji.value;return q(()=>{if(n!=="src"||c===l.current)return;if(!o){a((d)=>d+1);return}let u=!1;return qt(o,{method:"HEAD"}).then((d)=>{if(u)return;if(d.ok){l.current=c;return}a((p)=>p+1)}).catch(()=>{}),()=>{u=!0}},[c,o,n]),Ke(()=>{if(n==="srcdoc"&&e)return{attributes:{srcdoc:e},ready:!0,key:`srcdoc-${Ks(e)}`};return{attributes:o?{src:o}:{},ready:Boolean(o),key:o??""}},[o,n,e])}function ra(e){let{enabled:t,token:n,nodeId:o,sourceSurface:i,iframeRef:s}=e;Me(()=>{if(!t||!n)return;function a(l){if(l.source!==s.current?.contentWindow)return;let c=l.data;if(!c||c.source!==Vu||c.token!==n||c.nodeId!==o)return;let u=c.interaction;if(!u||typeof u.type!=="string")return;let d=u.type;mu({type:d,sourceNodeId:o,sourceSurface:i,...u.payload&&typeof u.payload==="object"?{payload:u.payload}:{}}).then((p)=>{if(p.ok)mn("context","AX interaction",d,[o]);s.current?.contentWindow?.postMessage({source:Xu,token:n,...c.correlationId?{correlationId:c.correlationId}:{},interaction:{type:d},result:p},"*")})}return window.addEventListener("message",a),()=>window.removeEventListener("message",a)},[t,n,o,i])}async function Yi(e,t){let o=await(await qt(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})).json();if(!o.ok)throw Error(o.error??`Request failed: ${e}`);return o.result}function Qi(e){return/AppleWebKit/.test(e)&&!/Chrome|Chromium|CriOS|Edg|Android/.test(e)}function Hz(e){let{userAgent:t,visibilityState:n,rect:o,viewport:i,alreadyRearmed:s}=e;if(s)return!1;if(!Qi(t))return!1;if(n!=="hidden")return!1;if(o.width<=0||o.height<=0)return!1;return o.bottom>0&&o.right>0&&o.top<i.height&&o.left<i.width}var $_=1000,E_=7000;function vn(e,t){if(typeof window>"u")return;let n=window;if(n.__PMX_EXTAPP_LOG??=[],n.__PMX_EXTAPP_LOG.length<500)n.__PMX_EXTAPP_LOG.push({t:Date.now(),nodeId:e,event:t});Uz({t:Date.now(),nodeId:e,event:t})}var A_=[],Oh=null;function Uz(e){if(A_.push({...e,...typeof document<"u"?{visibility:document.visibilityState}:{}}),Oh)return;Oh=setTimeout(()=>{Oh=null;let t=A_.splice(0);if(t.length===0)return;qt("/api/canvas/debug/ext-app-recovery",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({entries:t})}).catch(()=>{})},1500)}var R_=Promise.resolve();function P_(e){R_=R_.then(async()=>{if(!e.remount())return;await e.awaitBoot(),await new Promise((t)=>setTimeout(t,$_))}).catch(()=>{})}function jz(e,t){let n=typeof e.data.html==="string"?e.data.html:"",o=typeof e.data.serverName==="string"?e.data.serverName:"",i=typeof e.data.appSessionId==="string"?e.data.appSessionId:"",s=typeof e.data.sessionStatus==="string"?e.data.sessionStatus:"";return`${e.id}:${t}:${o}:${i}:${s}:${n}`}function Zz(e,t){if(e==="fullscreen")return{nextMode:"fullscreen",shouldExpand:!t,shouldCollapse:!1};if(e==="inline")return{nextMode:"inline",shouldExpand:!1,shouldCollapse:t};return{nextMode:e,shouldExpand:!1,shouldCollapse:!1}}async function N_(e,t,n){if(await e.sendToolInput({arguments:t}),n)await e.sendToolResult(n)}function Wz(e){return typeof e==="string"&&e.trim().length>0?e.trim():nh}function qz(e,t){return`<script data-pmx-canvas-ax-bridge>
|
|
206
261
|
(function () {
|
|
207
262
|
const PMX_AX_TOKEN = ${JSON.stringify(e)};
|
|
208
263
|
const PMX_AX_NODE_ID = ${JSON.stringify(t)};
|
|
@@ -220,7 +275,7 @@ container holding the app. Specify either width or maxWidth, and either height o
|
|
|
220
275
|
}, 10000);
|
|
221
276
|
pending.set(correlationId, function (result) { clearTimeout(timer); resolve(result); });
|
|
222
277
|
window.parent.postMessage({
|
|
223
|
-
source: '${
|
|
278
|
+
source: '${Vu}',
|
|
224
279
|
token: PMX_AX_TOKEN,
|
|
225
280
|
nodeId: PMX_AX_NODE_ID,
|
|
226
281
|
correlationId: correlationId,
|
|
@@ -233,7 +288,7 @@ container holding the app. Specify either width or maxWidth, and either height o
|
|
|
233
288
|
};
|
|
234
289
|
window.addEventListener('message', function (event) {
|
|
235
290
|
const m = event.data;
|
|
236
|
-
if (!m || m.source !== '${
|
|
291
|
+
if (!m || m.source !== '${Xu}' || m.token !== PMX_AX_TOKEN) return;
|
|
237
292
|
const result = m.result || { ok: false };
|
|
238
293
|
const resolver = m.correlationId ? pending.get(m.correlationId) : undefined;
|
|
239
294
|
if (resolver) { pending.delete(m.correlationId); resolver(result); }
|
|
@@ -243,11 +298,11 @@ container holding the app. Specify either width or maxWidth, and either height o
|
|
|
243
298
|
try { window.dispatchEvent(new CustomEvent('pmx-ax-ack', { detail: { result: result, interaction: m.interaction || null } })); } catch (e) {}
|
|
244
299
|
});
|
|
245
300
|
})();
|
|
246
|
-
</script>`}function
|
|
301
|
+
</script>`}function Gz(e,t){return`<script data-pmx-canvas-boot-beacon>
|
|
247
302
|
(function () {
|
|
248
303
|
var TOKEN = ${JSON.stringify(e)};
|
|
249
304
|
var NODE_ID = ${JSON.stringify(t)};
|
|
250
|
-
window.parent.postMessage({ source: '${
|
|
305
|
+
window.parent.postMessage({ source: '${Ju}', token: TOKEN, nodeId: NODE_ID }, '*');
|
|
251
306
|
// Paint-tick answers (Finding N): a double rAF only fires when this frame's
|
|
252
307
|
// rendering pipeline is actually running — a frame whose layer WebKit never
|
|
253
308
|
// composites stays silent, and that silence drives the parent's recovery
|
|
@@ -317,17 +372,23 @@ container holding the app. Specify either width or maxWidth, and either height o
|
|
|
317
372
|
requestAnimationFrame(function () {
|
|
318
373
|
requestAnimationFrame(function () {
|
|
319
374
|
var v = contentVerdict();
|
|
320
|
-
window.parent.postMessage({ source: '${
|
|
375
|
+
window.parent.postMessage({ source: '${Ju}', token: TOKEN, nodeId: NODE_ID, kind: 'paint-tick', content: v.content, detail: v.detail }, '*');
|
|
321
376
|
});
|
|
322
377
|
});
|
|
323
378
|
}
|
|
324
379
|
window.addEventListener('message', function (event) {
|
|
325
380
|
var m = event.data;
|
|
326
|
-
if (m && m.source === '${
|
|
381
|
+
if (m && m.source === '${th}' && m.token === TOKEN) sendPaintTick();
|
|
327
382
|
});
|
|
328
383
|
sendPaintTick();
|
|
329
384
|
})();
|
|
330
|
-
</script>`}function I_(){return"<style data-pmx-canvas-ext-app-base>html, body { background: transparent !important; }</style>"}function P_(e,t){if(!t)return e;let n=/<head\b[^>]*>/i.exec(e);if(n?.index!==void 0){let r=n.index+n[0].length;return`${e.slice(0,r)}${t}${e.slice(r)}`}let o=/<body\b[^>]*>/i.exec(e);if(o?.index!==void 0){let r=o.index+o[0].length;return`${e.slice(0,r)}${t}${e.slice(r)}`}return`${t}${e}`}function zi(e,t){if(Number.isFinite(e)&&e>0)return Math.round(e);if(Number.isFinite(t)&&t>0)return Math.round(t);return 1}function um(e,t){let n=e?.getBoundingClientRect();return{width:zi(e?.clientWidth??0,zi(n?.width??0,t.width)),height:zi(e?.clientHeight??0,zi(n?.height??0,t.height))}}function kP(e,t){return typeof e==="number"&&Number.isFinite(e)&&e>0&&!t}function TP(e,t){return Math.max(zi(e,1),zi(t,1))}function z_({node:e,expanded:t=!1}){let n=L(null),o=L(null),r=L(null),s=L(null),a=L({}),c=L(void 0),l=L(!1),u=L(void 0),p=L(null),d=L(!1),m=L(null),f=L(0),h=L([]),v=L(""),x=L(!1),g=L(!1),b=L([]),I=L(!1),R=L(!1),M=L(!1),_=L(!1),[N,w]=A("loading"),[k,z]=A(null),[X,W]=A(0),[J,G]=A(!1),[S,q]=A(!1),[ie,ye]=A(()=>t||typeof navigator>"u"||typeof window>"u"||!zr(navigator.userAgent)),ue=e.data.html,Pe=e.data.serverName,ke=e.data.appSessionId,Me=e.data.toolInput??{},cn=e.data.toolResult,Pn=e.data.toolName??"ext-app",D=e.data.toolDefinition,Y=e.data.toolCallId,Te=typeof Y==="string"||typeof Y==="number"?Y:void 0,de=e.data.resourceMeta,be=e.data.sessionStatus,se=e.data.sessionError,re=e.size.height,Z=e.id,xe=bP(e,X),T=wP(null),pe=e.data.axCapabilities?.enabled===!0&&typeof ue==="string"&&ue.length>0,me=Be(()=>`ax-${crypto.randomUUID()}`,[]),qt=pe?_P(me,Z):"",St=typeof ue==="string"&&ue.length>0?SP(me,Z):"",Gt=S_(P_(ue??"",I_()+St+qt),T);H(()=>{function Q(le){if(le.source!==n.current?.contentWindow)return;let Ce=le.data;if(!Ce||Ce.source!==Jc||Ce.token!==me||Ce.nodeId!==Z)return;if(g.current=!0,Ce.kind==="paint-tick"){let Ie=Ce,Bt={content:Ie.content===!0,detail:typeof Ie.detail==="string"?Ie.detail:""};for(let zn of h.current.splice(0))zn(Bt)}}return window.addEventListener("message",Q),()=>window.removeEventListener("message",Q)},[me,Z]),H(()=>{if(ie)return;E_({remount:()=>{if(_.current)return!1;return At(Z,"mount-slot"),ye(!0),!0},awaitBoot:()=>new Promise((Q)=>{let le=window.setTimeout(Ce,k_);function Ce(){window.clearTimeout(le),Q()}b.current.push(Ce)})})},[]),Ni({enabled:pe,token:me,nodeId:Z,sourceSurface:"mcp-app",iframeRef:n});let yn=3,ar=(Q)=>{if(f.current>=yn)return At(Z,`remount-cap-hit (${Q})`),!1;if(I.current)return!0;return f.current+=1,I.current=!0,At(Z,`remount-queued #${f.current} (${Q})`),E_({remount:()=>{if(I.current=!1,_.current||!t&&ot.value===Z)return At(Z,"remount-skipped"),G(!1),!1;return R.current=typeof document<"u"&&document.visibilityState==="hidden",At(Z,`remount-run #${f.current}`),w("loading"),W((le)=>le+1),!0},awaitBoot:()=>new Promise((le)=>{let Ce=window.setTimeout(Ie,k_);function Ie(){window.clearTimeout(Ce),le()}b.current.push(Ie)})}),!0},da=1500,bn=()=>new Promise((Q)=>{let le=n.current?.contentWindow;if(!le||_.current){Q("timeout");return}let Ce=!1,Ie=window.setTimeout(()=>{if(Ce)return;Ce=!0,Q("timeout")},da);h.current.push((Bt)=>{if(Ce)return;Ce=!0,window.clearTimeout(Ie),v.current=Bt.detail,Q(Bt.content?"content-verified":"tick-no-content")}),le.postMessage({source:xp,token:me},"*")}),Nn=async(Q)=>{let le=Date.now()+Q;while(Date.now()<le&&!_.current){if(await bn()==="content-verified")return!0;await new Promise((Ce)=>window.setTimeout(Ce,400))}return!1},eo=()=>new Promise((Q)=>{let le=n.current;if(!le){Q();return}let Ce=le.style.width,Ie=le.style.height;le.style.width="140%",le.style.height="140%",requestAnimationFrame(()=>{requestAnimationFrame(()=>{le.style.width=Ce,le.style.height=Ie,At(Z,"soft-expand-cycle"),Q()})})}),Gi=600,to=()=>{if(typeof document>"u"||typeof navigator>"u"||typeof window>"u")return;let Q=n.current;if(!Q||_.current)return;if(!vP({userAgent:navigator.userAgent,visibilityState:document.visibilityState,rect:Q.getBoundingClientRect(),viewport:{width:window.innerWidth,height:window.innerHeight},alreadyRearmed:M.current}))return;M.current=!0,window.setTimeout(()=>{if(_.current||document.visibilityState==="visible")return;f.current=0,q(!1),R.current=!1,At(Z,"assume-visible-rearm"),ar("assume-visible")},Gi)},_o=(Q="")=>{let le=v.current?` [${v.current}]`:"";return typeof document<"u"&&document.visibilityState==="hidden"?`paint-ok (content-verified)${le}${Q} (host hidden)`:`paint-ok (content-verified)${le}${Q}`},Vi=async()=>{if(typeof navigator>"u"||typeof window>"u")return;if(!zr(navigator.userAgent))return;G(!0);let Q=await bn();if(Q==="content-verified"){At(Z,_o()),G(!1),to();return}if(At(Z,Q==="tick-no-content"?`paint-fail (tick without content: ${v.current||"unknown"})`:"paint-fail (no tick)"),await eo(),Q=await bn(),Q==="content-verified"){At(Z,_o(" (after soft-expand)")),G(!1),to();return}if(_.current)return;if(Q==="tick-no-content"&&await Nn(3000)){At(Z,_o(" (after content wait)")),G(!1),to();return}if(_.current)return;if(!ar("paint-fail"))At(Z,"recovery-exhausted"),G(!1),q(!0),to()};H(()=>{if(t)return;if(typeof document>"u"||typeof navigator>"u"||typeof window>"u")return;if(!zr(navigator.userAgent))return;function Q(){if(document.visibilityState!=="visible")return;if(!R.current||_.current)return;R.current=!1,f.current=0,q(!1),At(Z,"visible-again-rearm"),ar("visible-after-hidden-boot")}return document.addEventListener("visibilitychange",Q),()=>document.removeEventListener("visibilitychange",Q)},[t,Z]);let So=6000;H(()=>{if(typeof navigator>"u"||typeof window>"u")return;if(!zr(navigator.userAgent))return;if(!Gt.ready||!ie)return;let Q=window.setTimeout(()=>{if(x.current||g.current||_.current)return;ar("boot-watchdog")},So);return()=>window.clearTimeout(Q)},[xe,Gt.ready,t,ie]),H(()=>()=>{_.current=!0;for(let Q of b.current.splice(0))Q();for(let Q of h.current.splice(0))Q({content:!1,detail:"unmounted"})},[]);let ko=(Q)=>Go(Q),ln=t||ot.value===Z;a.current=Me,c.current=cn;let cr=be==="error"&&typeof ue==="string"&&ue.length>0,Hr=be==="error"?cr?`Live session unavailable — showing saved content. Reopen the app to restore interactivity.${se?` (${se})`:""}`:se??"Saved app session is unavailable. Reopen the app to restore interactivity.":"Reconnecting saved app session...",jr=(Q)=>{let le=c.current;if(!Q||!d.current||!le)return null;if(u.current===le)return null;if(u.current&&w_(u.current,le))return u.current=le,null;if(p.current)return p.current;let Ce=Q.sendToolResult(le).then(()=>{u.current=le,l.current=!0,w("done")}).catch((Ie)=>{let Bt=Ie instanceof Error?Ie.message:String(Ie);throw z(`Tool result delivery failed: ${Bt}`),Ie}).finally(()=>{p.current=null});return p.current=Ce,Ce};if(H(()=>{if(!ue||!Gt.ready||!ie)return;let Q=n.current;if(!Q)return;let le=!1,Ce=null,Ie=null,Bt=null,zn=null,Un=null;l.current=!1,u.current=void 0,p.current=null,d.current=!1,x.current=!1,g.current=!1;let To=()=>{if(!Ce)return;clearTimeout(Ce),Ce=null};return(async()=>{if(!ue)return;let un=Q.contentWindow;if(!un)throw Error("Ext-app iframe window is unavailable");let xn=(Ee=ot.value===Z?"fullscreen":"inline")=>({theme:ko(gt.value),platform:"web",containerDimensions:um(Q,{width:e.size.width,height:re}),displayMode:Ee,locale:navigator.language,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,...D?{toolInfo:{id:Te,tool:D}}:{}}),wn=()=>{if(zn!==null)return;zn=requestAnimationFrame(()=>{if(zn=null,le||!d.current)return;Fe.setHostContext?.(xn())})},no=()=>{if(Un!==null)return;Un=requestAnimationFrame(()=>{Un=requestAnimationFrame(()=>{if(Un=null,le||!d.current)return;Fe.sendHostContextChange?.(xn())})})},Ur=()=>{if(!zr(navigator.userAgent))return;if(Ie)clearTimeout(Ie);Ie=setTimeout(()=>{if(Ie=null,le)return;Vi()},N_+200)},Fe=new sm(null,{name:"PMX Canvas",version:"1.0.0"},{openLinks:{},serverTools:{listChanged:!1},serverResources:{listChanged:!1},logging:{},updateModelContext:{text:{},structuredContent:{}}},{hostContext:xn(ln?"fullscreen":"inline")});Fe.onsizechange=async({height:Ee})=>{if(kP(Ee,ot.value===Z)){let ut=um(Q.parentElement??Q,{width:e.size.width,height:re}),Ht=TP(Ee,ut.height);Q.style.height=`${Ht}px`;let oo=F.value.get(Z)?.size??e.size,Co=Math.max(oo.height,Ht+Si);if(Math.abs(Co-oo.height)>8){if(Cc(Z,{width:oo.width,height:Co}),s.current!==null)window.clearTimeout(s.current);s.current=window.setTimeout(()=>{Tt({recordHistory:!1}),s.current=null},0)}}return{}},Fe.onopenlink=async({url:Ee})=>(window.open(Ee,"_blank","noopener"),{}),Fe.onsandboxready=async()=>{await Fe.sendSandboxResourceReady({html:P_(ue,I_()),sandbox:wp,...de?.csp?{csp:de.csp}:{},...de?.permissions?{permissions:de.permissions}:{}})},Fe.onrequestdisplaymode=async({mode:Ee})=>{let{nextMode:ut,shouldExpand:Ht,shouldCollapse:oo}=xP(Ee,ln);if(Ht)kn(Z);else if(oo)ho();return{mode:ut}},Fe.oncalltool=async(Ee)=>{if(!ke)throw Error(Hr);try{let ut=await Nr("/api/ext-app/call-tool",{sessionId:ke,nodeId:Z,serverName:Pe,toolName:Ee.name,arguments:Ee.arguments??{}});return z(null),ut}catch(ut){let Ht=ut instanceof Error?ut.message:String(ut);throw z(`Tool call failed: ${Ht}`),ut}},Fe.setRequestHandler(kl,async()=>{if(!ke)return{tools:[]};return Nr("/api/ext-app/list-tools",{sessionId:ke})}),Fe.onlistresources=async()=>ke?Nr("/api/ext-app/list-resources",{sessionId:ke}):{resources:[]},Fe.onlistresourcetemplates=async()=>ke?Nr("/api/ext-app/list-resource-templates",{sessionId:ke}):{resourceTemplates:[]},Fe.onreadresource=async(Ee)=>{if(!ke)throw Error(Hr);return Nr("/api/ext-app/read-resource",{sessionId:ke,uri:Ee.uri})},Fe.onlistprompts=async()=>ke?Nr("/api/ext-app/list-prompts",{sessionId:ke}):{prompts:[]},Fe.onupdatemodelcontext=async(Ee)=>{if(!ke)return{};return await Nr("/api/ext-app/model-context",{nodeId:Z,...Array.isArray(Ee.content)?{content:Ee.content}:{},...Ee.structuredContent&&typeof Ee.structuredContent==="object"?{structuredContent:Ee.structuredContent}:{}}),{}};let Xi=new im(un,un);if(Fe.oninitialized=()=>{if(le)return;To(),d.current=!0,x.current=!0,At(Z,"initialized"),w("ready"),z(null),Promise.resolve(Fe.sendHostContextChange(xn(ln?"fullscreen":"inline"))).then(()=>A_(Fe,a.current,void 0)).then(()=>jr(Fe)).then(()=>{let Ee=()=>{for(let ut of b.current.splice(0))ut()};if(typeof navigator<"u"&&zr(navigator.userAgent))Nn(4000).then((ut)=>{At(Z,ut?"settled (content-verified)":`settled (content-timeout${v.current?`: ${v.current}`:""})`),Ee()});else At(Z,"settled"),Ee();no(),Ur()}).catch((Ee)=>{let ut=Ee instanceof Error?Ee.message:String(Ee);z(`Bridge bootstrap failed: ${ut}`)})},Ce=setTimeout(()=>{if(le||d.current)return;let Ee=c.current,ut=xn(ln?"fullscreen":"inline");d.current=!0,Fe.setHostContext?.(ut),Promise.resolve(Fe.sendHostContextChange(ut)).then(()=>A_(Fe,a.current,Ee)).then(()=>{if(l.current=Boolean(Ee),Ee)u.current=Ee;if(w(Ee?"done":"ready"),z(null),no(),Ur(),g.current){At(Z,"settled (fallback)");for(let Ht of b.current.splice(0))Ht()}}).catch((Ht)=>{let oo=Ht instanceof Error?Ht.message:String(Ht);z(`Bridge bootstrap fallback failed: ${oo}`)})},1200),await Fe.connect(Xi),le){To(),await Xi.close();return}if(o.current=Fe,r.current=Xi,Bt=new ResizeObserver(wn),Bt.observe(Q),Q.parentElement)Bt.observe(Q.parentElement);let Ki=!0;m.current=gt.subscribe((Ee)=>{if(Ki){Ki=!1;return}if(le)return;Fe.setHostContext?.({...xn(),theme:ko(Ee)}),Fe.sendHostContextChange?.(xn())}),jr(Fe)})().catch((un)=>{To(),console.error("[ext-app] Bridge init failed:",un),z(un?.message??"Bridge initialization failed")}),()=>{if(le=!0,To(),Ie)clearTimeout(Ie),Ie=null;if(Bt?.disconnect(),Bt=null,zn!==null)cancelAnimationFrame(zn),zn=null;if(Un!==null)cancelAnimationFrame(Un),Un=null;if(d.current=!1,p.current=null,m.current?.(),m.current=null,s.current!==null)window.clearTimeout(s.current),s.current=null;if(o.current=null,r.current)r.current.close().catch((un)=>{console.error("[ext-app] transport close failed:",un)}),r.current=null}},[xe,Gt.key,ie]),H(()=>{if(cn&&o.current&&(N==="ready"||N==="done"))jr(o.current)},[cn,N]),H(()=>{let Q=o.current;if(n.current)n.current.style.height="100%";if(!Q||!d.current)return;let le=null,Ce=null;return le=requestAnimationFrame(()=>{le=null,Ce=requestAnimationFrame(()=>{if(Ce=null,!d.current)return;let Ie={theme:ko(gt.value),platform:"web",containerDimensions:um(n.current,{width:e.size.width,height:re}),displayMode:ln?"fullscreen":"inline",locale:navigator.language,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone};Q.setHostContext?.(Ie),Q.sendHostContextChange?.(Ie)})}),()=>{if(le!==null)cancelAnimationFrame(le);if(Ce!==null)cancelAnimationFrame(Ce)}},[ln,re]),!ue)return i("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--c-muted)",fontSize:"13px",flexDirection:"column",gap:"8px"},children:[i("div",{style:{opacity:0.6},children:["Loading ",Pn," viewer..."]},void 0,!0,void 0,this),i("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),i("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return i("div",{style:{flex:1,width:"100%",height:"100%",minWidth:0,minHeight:0,display:"flex",flexDirection:"column"},children:[be&&be!=="ready"&&i("div",{style:{padding:"6px 10px",fontSize:"11px",background:be==="error"&&!cr?"color-mix(in srgb, var(--c-danger) 12%, transparent)":"color-mix(in srgb, var(--c-warn) 10%, transparent)",color:be==="error"&&!cr?"var(--c-danger)":"var(--c-warn)",borderBottom:`1px solid ${be==="error"&&!cr?"color-mix(in srgb, var(--c-danger) 12%, transparent)":"color-mix(in srgb, var(--c-warn) 15%, transparent)"}`},children:Hr},void 0,!1,void 0,this),k&&i("div",{style:{padding:"6px 10px",fontSize:"11px",background:"color-mix(in srgb, var(--c-danger) 12%, transparent)",color:"var(--c-danger)",borderBottom:"1px solid color-mix(in srgb, var(--c-danger) 12%, transparent)",display:"flex",alignItems:"center",gap:"6px"},children:[i("span",{children:"⚠"},void 0,!1,void 0,this),i("span",{style:{flex:1},children:k},void 0,!1,void 0,this),i("button",{type:"button",onClick:()=>{z(null),w("loading"),W((Q)=>Q+1)},style:{background:"var(--c-surface-hover)",border:"1px solid color-mix(in srgb, var(--c-danger) 12%, transparent)",borderRadius:"3px",color:"var(--c-danger)",cursor:"pointer",fontSize:"10px",padding:"1px 6px"},children:"Retry"},void 0,!1,void 0,this),i("button",{type:"button",onClick:()=>z(null),"aria-label":"Dismiss error",style:{background:"none",border:"none",color:"var(--c-danger)",cursor:"pointer",fontSize:"13px",padding:"0 2px"},children:i(Ve,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{style:{flex:1,position:"relative",display:"flex",minHeight:0,height:"100%"},children:[ie&&i("iframe",{ref:n,...Gt.attributes,sandbox:T,allow:x_(de?.permissions),style:{flex:1,width:"100%",height:"100%",minHeight:0,border:"none",background:"var(--c-panel)",pointerEvents:ln?"auto":"none"},title:`Ext App: ${Pn}`},xe,!1,void 0,this),S&&!k&&i("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"10px",background:"var(--c-panel)",color:"var(--c-warn)",fontSize:"12px"},children:[i("div",{children:"App surface failed to paint."},void 0,!1,void 0,this),i("button",{type:"button",onClick:(Q)=>{Q.stopPropagation(),At(Z,"manual-retry"),f.current=0,q(!1),w("loading"),W((le)=>le+1)},style:{background:"var(--c-surface-hover)",border:"1px solid color-mix(in srgb, var(--c-warn) 15%, transparent)",borderRadius:"4px",color:"var(--c-warn)",cursor:"pointer",fontSize:"11px",padding:"3px 10px"},children:"Retry"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(N==="loading"||J)&&!k&&!S&&i("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"10px",background:"var(--c-panel)",color:"var(--c-muted)",fontSize:"12px",pointerEvents:"none"},children:[i("div",{style:{width:"22px",height:"22px",border:"2px solid var(--c-line)",borderTopColor:"var(--c-muted)",borderRadius:"50%",animation:"spin 1s linear infinite"}},void 0,!1,void 0,this),i("div",{children:N==="loading"?`Connecting to ${Pn}...`:"Finishing paint..."},void 0,!1,void 0,this),i("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!ln&&!(S&&!k)&&i("button",{type:"button",onClick:(Q)=>{Q.stopPropagation(),kn(Z)},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)}var Xs=new Map,R_=!1;function M_(e,t,n){if(!R_)R_=!0,nn(()=>{let s=F.value,a=yr.value;for(let[c,l]of Xs){let u=s.get(c);if(!u||l.epoch!==a||l.version!==u.data.specVersion||l.documentUrl!==u.data.url)Xs.delete(c)}}),window.addEventListener("message",(s)=>{let a=s.data;if(!a||a.source!==bp||a.type!=="snapshot"||typeof a.nodeId!=="string")return;let c=Xs.get(a.nodeId),l=c?.owners.findIndex((d)=>d.token===a.token&&d.source===s.source)??-1;if(!c||l<0)return;if(!a.state||typeof a.state!=="object"||Array.isArray(a.state))return;let{ax:u,...p}=a.state;c.state=p,c.owners=c.owners.slice(l)});let o=F.value.get(e);if(!o)return;let r=Xs.get(e);if(!r)r={epoch:yr.value,version:o.data.specVersion,documentUrl:o.data.url,state:null,owners:[]},Xs.set(e,r);r.owners=[...r.owners.filter((s)=>s.source!==n).slice(-1),{token:t,source:n}],n.postMessage({source:bp,type:"restore",token:t,state:r.state},"*")}function CP(e,t,n,o,r,s,a,c){if(!e)return e;try{let l=Se()&&e.startsWith("/"),u=new URL(e,l?"https://pmx.invalid":window.location.origin);if(u.searchParams.set("theme",Go(gt.value)),t)u.searchParams.set("display","expanded");if(typeof n==="number")u.searchParams.set("v",String(n));if(o)u.searchParams.set("axToken",o);if(r)u.searchParams.set("axNodeId",r);if(s)u.searchParams.set("frameToken",s);if(a)u.searchParams.set("fit","content");if(c)u.searchParams.set("stateToken",c);return l?`${u.pathname}${u.search}`:u.toString()}catch{return e}}function EP(e,t=window.location.origin){if(!e)return!1;try{let n=new URL(t).origin,o=new URL(e,n);return o.origin===n&&o.pathname.startsWith("/api/canvas/frame-documents/")}catch{return!1}}function dm({source:e,iframeRef:t,onLoad:n,onDocumentLoad:o,title:r,className:s="mcp-app-frame",sandbox:a="allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox",allow:c="clipboard-read; clipboard-write",tabIndex:l}){let u=e.src??e.srcdoc??"",[p,d]=A({key:u,source:e}),[m,f]=A(null),h=L(0);H(()=>{if(h.current+=1,!u||u===p.key){f(null);return}if(!p.key){d({key:u,source:e});return}f({key:u,source:e})},[u,p.key]),H(()=>()=>{h.current+=1},[]);let v=(x,g)=>i("iframe",{ref:g?void 0:t,...x.source,class:s,sandbox:a,allow:c,tabIndex:l,loading:Rt.value==="srcdoc"?void 0:"lazy",onLoad:(b)=>{if(o?.(b.currentTarget),!g){n();return}let I=++h.current,R=b.currentTarget;requestAnimationFrame(()=>requestAnimationFrame(()=>{if(h.current!==I)return;t.current=R,d(x),f(null),n()}))},style:{position:"absolute",inset:0,width:"100%",height:"100%",visibility:g?"hidden":"visible",background:"var(--c-panel-soft)"},title:r},x.key,!1,void 0,this);return i("div",{class:"mcp-app-frame-stack",children:[v(p,!1),m&&v(m,!0)]},void 0,!0,void 0,this)}function Ko({node:e,expanded:t=!1}){if(e.data.mode==="ext-app")return i(z_,{node:e,expanded:t},void 0,!1,void 0,this);return i(AP,{node:e,expanded:t},void 0,!1,void 0,this)}function AP({node:e,expanded:t}){let n=L(null),o=e.type==="mcp-app"&&e.data.viewerType==="web-artifact",r=e.type==="json-render"||e.type==="graph",s=e.data.axCapabilities?.enabled,c=(r||o)&&(o?s===!0:s!==!1),l=o?"mcp-app":"json-render",u=Be(()=>c?`ax-${crypto.randomUUID()}`:"",[c]),p=Pp(e)&&!t,d=Be(()=>p?`frame-${crypto.randomUUID()}`:"",[p]);ki(e,n,d),Ni({enabled:c&&Boolean(u),token:u,nodeId:e.id,sourceSurface:l,iframeRef:n});let m=Dn.value,f=()=>{if(!c||!u||m==null)return;n.current?.contentWindow?.postMessage({source:Tn,type:"ax-update",token:u,state:m},"*")};H(f,[c,u,m]);let h=typeof e.data.specVersion==="number"?e.data.specVersion:void 0,v=Be(()=>r?`ui-${crypto.randomUUID()}`:"",[r,h,e.data.url]),x=CP(e.data.url||"",t,h,u||void 0,c?e.id:void 0,d||void 0,p,v||void 0),g=Ti(x),b=e.data.sourceServer||"",I=e.data.hostMode||"hosted",R=e.data.fallbackReason,M=e.data.trustedDomain===!0||EP(x);if(I==="fallback")return i("div",{style:{display:"flex",flexDirection:"column",gap:"8px",fontSize:"12px"},children:[i("div",{style:{color:"var(--c-warn)",display:"flex",alignItems:"center",gap:"6px"},children:[i("span",{children:"⚠"},void 0,!1,void 0,this),i("span",{children:"Cannot embed — opened externally"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R&&i("div",{style:{color:"var(--c-muted)",fontSize:"11px"},children:["Reason: ",R]},void 0,!0,void 0,this),i("a",{href:x,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--c-accent)",fontSize:"12px",wordBreak:"break-all"},children:x},void 0,!1,void 0,this),b&&i("div",{style:{color:"var(--c-dim)",fontSize:"10px"},children:["Source: ",b]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);return i("div",{style:{height:"100%",display:"flex",flexDirection:"column",...t?{flex:1,minHeight:0,width:"100%"}:{}},children:[!M&&i("div",{style:{padding:"4px 8px",fontSize:"10px",background:"color-mix(in srgb, var(--c-warn) 10%, transparent)",color:"var(--c-warn)",borderBottom:"1px solid color-mix(in srgb, var(--c-warn) 15%, transparent)"},children:"Unverified domain"},void 0,!1,void 0,this),i(dm,{source:g,iframeRef:n,onDocumentLoad:(_)=>{if(v&&_.contentWindow)M_(e.id,v,_.contentWindow)},onLoad:f,title:`MCP App: ${b}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var IP=null;function Ri(){IP=null}var $_={idle:"var(--c-muted)",running:"var(--c-accent)",planning:"var(--c-agent)",thinking:"var(--c-agent)",drafting:"var(--c-accent)",tooling:"var(--c-accent)",review:"var(--c-ok)","waiting-approval":"var(--c-warn)",waiting:"var(--c-warn)"};function PP(e){let t=typeof e.data.phase==="string"&&e.data.phase.trim().length>0?e.data.phase.trim():"";if(t)return t;let n=typeof e.data.content==="string"&&e.data.content.trim().length>0?e.data.content.trim():"";if(n)return n;return(typeof e.data.status==="string"&&e.data.status.trim().length>0?e.data.status.trim():"")||"idle"}function Il({node:e}){let t=PP(e),n=e.data.detail||"",o=e.data.message||"",r=e.data.level||"ok",s=e.data.activeTool,a=e.data.subagent,c=$_[t]??"var(--c-muted)",l=t!=="idle";return i("div",{style:{display:"flex",flexDirection:"column",gap:"8px",fontSize:"12px"},children:[i("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[i("div",{style:{width:"8px",height:"8px",borderRadius:"50%",background:c,boxShadow:l?`0 0 8px ${c}`:"none",animation:l?"pulse 1.5s infinite":"none",flexShrink:0}},void 0,!1,void 0,this),i("span",{style:{fontWeight:600,color:c,textTransform:"uppercase",letterSpacing:"0.05em"},children:t},void 0,!1,void 0,this),n&&i("span",{style:{color:"var(--c-muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s&&i("div",{style:{display:"flex",alignItems:"center",gap:"6px",color:"var(--c-agent)"},children:[i("span",{style:{fontSize:"10px"},children:"⚙"},void 0,!1,void 0,this),i("span",{style:{fontFamily:"var(--font-code)",fontSize:"11px"},children:s},void 0,!1,void 0,this)]},void 0,!0,void 0,this),a&&a.state!=="completed"&&i("div",{style:{display:"flex",alignItems:"center",gap:"6px",color:"var(--c-subagent)"},children:[i("span",{style:{fontSize:"10px"},children:"⠉"},void 0,!1,void 0,this),i("span",{children:a.name},void 0,!1,void 0,this),i("span",{style:{color:"var(--c-muted)",fontSize:"10px"},children:["(",a.state,")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),o&&i("div",{style:{color:r==="warn"?"var(--c-warn)":r==="error"?"var(--c-danger)":"var(--c-muted)",lineHeight:1.4},children:o},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Mi(e){return typeof e==="string"&&e.trim().length>0?e.trim():null}function O_(e){if(typeof e==="string"){let r=Mi(e);return r?{title:"Evidence warning",detail:r}:null}if(!e||typeof e!=="object")return null;let t=e,n=Mi(t.title)??"Evidence warning",o=Mi(t.detail);return o?{title:n,detail:o}:null}function NP(e){let t=[],n=O_(e.data.warning);if(n)t.push(n);let o=e.data.warnings;if(Array.isArray(o))for(let s of o){let a=O_(s);if(a)t.push(a)}let r=Mi(e.data.validationStatus)?.toLowerCase();if(r==="failed"||r==="invalid")t.push({title:"Image failed validation",detail:Mi(e.data.validationMessage)??"Review this image before using it as evidence."});return t}function zP(e){let t=[e.data.title,e.data.caption,e.data.alt,e.data.src,e.data.path].map((n)=>Mi(n)?.toLowerCase()??"").join(" ");if(t.length===0)return!1;return["login","log in","sign in","signin","password","2fa","mfa","authenticate","authentication","sso"].some((n)=>t.includes(n))}function L_(e){let t=NP(e);if(t.length>0)return t;if(zP(e))return[{title:"Captured login page",detail:"This image looks like an auth screen. Treat it as environment context, not product evidence."}];return[]}function Pl({node:e,expanded:t=!1}){let n=e.data.src||"",o=e.data.alt||e.data.title||"Image",r=e.data.caption||"",s=L_(e),a=hi(n.startsWith("data:")||n.startsWith("http://")||n.startsWith("https://")?n:`/api/canvas/image/${e.id}`),[c,l]=A(!1),[u,p]=A(!1),[d,m]=A(1),[f,h]=A({x:0,y:0}),[v,x]=A({w:0,h:0}),g=L(null),b=L(!1),I=L({x:0,y:0}),R=j((J)=>{let G=J.target;x({w:G.naturalWidth,h:G.naturalHeight}),l(!0),p(!1)},[]),M=j(()=>{p(!0),l(!1)},[]);H(()=>{m(1),h({x:0,y:0})},[n]);let _=j((J)=>{J.preventDefault(),J.stopPropagation();let G=J.deltaY>0?0.9:1.1;m((S)=>Math.max(0.25,Math.min(10,S*G)))},[]),N=j((J)=>{if(d<=1)return;J.stopPropagation(),b.current=!0,I.current={x:J.clientX,y:J.clientY},J.target.setPointerCapture(J.pointerId)},[d]),w=j((J)=>{if(!b.current)return;let G=J.clientX-I.current.x,S=J.clientY-I.current.y;I.current={x:J.clientX,y:J.clientY},h((q)=>({x:q.x+G,y:q.y+S}))},[]),k=j(()=>{b.current=!1},[]),z=j(()=>{m(1),h({x:0,y:0})},[]);if(!n)return i("div",{class:"image-node-empty",children:[i("div",{class:"image-node-empty-icon",children:"\uD83D\uDDBC"},void 0,!1,void 0,this),i("div",{class:"image-node-empty-text",children:"No image source"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let X=v.w>0?`${v.w}×${v.h}`:"",W=Math.round(d*100);return i("div",{class:`image-node ${t?"image-node-expanded":""}`,ref:g,children:[s.length>0&&i("div",{class:"image-node-warning-stack",children:s.map((J)=>i("div",{class:"image-node-warning",children:[i("span",{class:"image-node-warning-title",children:J.title},void 0,!1,void 0,this),i("span",{class:"image-node-warning-detail",children:J.detail},void 0,!1,void 0,this)]},`${J.title}-${J.detail}`,!0,void 0,this))},void 0,!1,void 0,this),i("div",{class:"image-node-viewport",onWheel:_,onPointerDown:N,onPointerMove:w,onPointerUp:k,style:{cursor:d>1?"grab":"default"},children:[!c&&!u&&i("div",{class:"image-node-loading",children:"Loading…"},void 0,!1,void 0,this),u&&i("div",{class:"image-node-error",children:[i("div",{class:"image-node-error-icon",children:"⚠"},void 0,!1,void 0,this),i("div",{children:"Failed to load image"},void 0,!1,void 0,this),i("div",{class:"image-node-error-path",children:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("img",{src:a,alt:o,onLoad:R,onError:M,draggable:!1,style:{transform:`translate(${f.x}px, ${f.y}px) scale(${d})`,opacity:c?1:0,display:u?"none":"block"}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(r||X||d!==1)&&i("div",{class:"image-node-footer",children:[r&&i("span",{class:"image-node-caption",children:r},void 0,!1,void 0,this),i("span",{class:"image-node-meta",children:[X&&i("span",{children:X},void 0,!1,void 0,this),d!==1&&i("button",{type:"button",class:"image-node-zoom-reset",onClick:z,title:"Reset zoom",children:[W,"% ",i(Pc,{size:14},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 D_({node:e}){if((e.data.children??[]).filter((o)=>F.value.has(o)).length>0)return null;return i("div",{class:"group-empty-hint",children:"Drop nodes here — release while the frame lights up to add them"},void 0,!1,void 0,this)}function RP(e){try{return new URL(e).host}catch{return e}}function MP(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toLocaleString()}function Nl({node:e,expanded:t=!1}){let n=typeof e.data.url==="string"?e.data.url:"",o=typeof e.data.pageTitle==="string"?e.data.pageTitle:"",r=typeof e.data.description==="string"?e.data.description:"",s=typeof e.data.excerpt==="string"?e.data.excerpt:typeof e.data.content==="string"?e.data.content:"",a=typeof e.data.status==="string"?e.data.status:"idle",c=typeof e.data.error==="string"?e.data.error:"",l=MP(typeof e.data.fetchedAt==="string"?e.data.fetchedAt:void 0),u=typeof e.data.statusCode==="number"?e.data.statusCode:null,p=typeof e.data.imageUrl==="string"?e.data.imageUrl:"",d=e.data.frameBlocked===!0,m=typeof e.data.frameBlockedReason==="string"?e.data.frameBlockedReason:"",[f,h]=A(!1),[v,x]=A(t);H(()=>{if(t)x(!0)},[t]);let g=j(async()=>{if(!n||f)return;h(!0);try{await gc(e.id)}finally{h(!1)}},[e.id,f,n]);if(!n)return i("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"12px"},children:"No webpage URL set"},void 0,!1,void 0,this);let b=a==="ready"?"var(--c-ok)":a==="error"?"var(--c-danger)":"var(--c-muted)";return i("div",{style:{display:"flex",flexDirection:"column",gap:"12px",height:"100%"},children:[i("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"12px"},children:[i("div",{style:{minWidth:0,flex:1},children:[i("div",{style:{fontSize:"12px",color:"var(--c-muted)"},children:RP(n)},void 0,!1,void 0,this),i("div",{style:{fontSize:t?"18px":"15px",fontWeight:700,color:"var(--c-text)"},children:o||e.data.title||n},void 0,!1,void 0,this),i("a",{href:n,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--c-accent)",fontSize:"12px",wordBreak:"break-all",textDecoration:"none"},children:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{style:{display:"inline-flex",alignItems:"center",gap:"6px",padding:"4px 8px",borderRadius:"999px",background:"rgba(255,255,255,0.04)",color:b,fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.04em",flexShrink:0},children:[i("span",{style:{width:"7px",height:"7px",borderRadius:"999px",background:b}},void 0,!1,void 0,this),a]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),(r||p)&&i("div",{style:{display:"grid",gridTemplateColumns:p&&t?"160px 1fr":"1fr",gap:"12px",alignItems:"start"},children:[p&&t&&i("img",{src:p,alt:o||"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),r&&i("p",{style:{margin:0,color:"var(--c-text-soft)",lineHeight:1.5,fontSize:t?"14px":"12px"},children:r},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"},children:[i("button",{type:"button",onClick:g,disabled:f,style:{border:"1px solid var(--c-line)",background:"var(--c-panel-soft)",color:"var(--c-text)",borderRadius:"8px",padding:"6px 10px",cursor:f?"progress":"pointer",fontSize:"12px"},children:f||a==="fetching"?"Refreshing…":"Refresh"},void 0,!1,void 0,this),t&&!d&&i("button",{type:"button",onClick:()=>x((I)=>!I),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:v?"Hide live preview":"Show live preview"},void 0,!1,void 0,this),i("button",{type:"button",onClick:()=>window.open(n,"_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),t&&d&&i("div",{style:{border:"1px solid var(--c-line)",borderRadius:"12px",overflow:"hidden",background:"var(--c-panel-soft)"},children:[i("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),i("div",{style:{padding:"20px",color:"var(--c-text-soft)",lineHeight:1.6,fontSize:"13px"},children:m||"The remote site blocks iframe embedding."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t&&v&&!d&&i("div",{style:{border:"1px solid var(--c-line)",borderRadius:"12px",overflow:"hidden",background:"var(--c-panel-soft)"},children:[i("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),i("iframe",{class:"webpage-node-iframe",title:o||e.data.title||n,src:n,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:t?"320px":"180px",border:"none",background:"#fff"}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(l||u!==null)&&i("div",{style:{display:"flex",gap:"12px",flexWrap:"wrap",color:"var(--c-muted)",fontSize:"11px"},children:[l&&i("span",{children:["Fetched ",l]},void 0,!0,void 0,this),u!==null&&i("span",{children:["HTTP ",u]},void 0,!0,void 0,this),d&&i("span",{children:"Preview blocked by site"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),c&&i("div",{style:{color:"var(--c-danger)",fontSize:"12px",lineHeight:1.5},children:c},void 0,!1,void 0,this),i("div",{style:{flex:1,minHeight:0,overflow:"auto",border:"1px solid var(--c-line)",borderRadius:"10px",background:"var(--c-panel-soft)",padding:t?"14px":"10px"},children:s?i("div",{style:{whiteSpace:"pre-wrap",lineHeight:1.55,color:"var(--c-text)",fontSize:t?"14px":"12px"},children:s},void 0,!1,void 0,this):i("div",{style:{color:"var(--c-dim)",fontStyle:"italic"},children:a==="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 F_(e){return e.type==="html"&&e.data.presentation===!0}function Ks({node:e,expanded:t=!1,presentation:n=!1,presentationExitToken:o,autoFocus:r=!1}){let s=L(null),a=gt.value,c=Be(()=>`theme-${crypto.randomUUID()}`,[]),l=Be(()=>`ax-${crypto.randomUUID()}`,[]),u=Be(()=>`frame-${crypto.randomUUID()}`,[]),p=typeof e.data.html==="string"?e.data.html:typeof e.data.content==="string"?e.data.content:"",d=Be(()=>bi(p),[p]),m=Be(()=>p?Rs(e.id,{theme:a,themeToken:c,present:n,presentToken:o,v:d,axToken:l,frameToken:u}):"",[p,n,o,c,d,e.id,l,u]),f=Ti(m);ki(e,s,t?"":u),Ni({enabled:!0,token:l,nodeId:e.id,sourceSurface:"html-node",iframeRef:s}),H(()=>{if(s.current?.contentWindow?.postMessage({source:Tn,type:"theme-update",token:c,theme:a},"*"),r)s.current?.focus()},[a,c]);let h=e.data.axCapabilities,v=h?.enabled===!0&&(!Array.isArray(h.allowed)||h.allowed.length>0),x=Dn.value;H(()=>{if(!v||x==null)return;s.current?.contentWindow?.postMessage({source:Tn,type:"ax-update",token:l,state:x},"*")},[v,x,l]),H(()=>{if(!r)return;let b=window.setTimeout(()=>s.current?.focus(),0);return()=>window.clearTimeout(b)},[r,m]);let g=()=>{if(s.current?.contentWindow?.postMessage({source:Tn,type:"theme-update",token:c,theme:a},"*"),v&&Dn.value!=null)s.current?.contentWindow?.postMessage({source:Tn,type:"ax-update",token:l,state:Dn.value},"*");if(r)s.current?.focus()};if(!p)return i("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"12px"},children:"No HTML content set"},void 0,!1,void 0,this);return i(dm,{source:f,iframeRef:s,className:n?"html-node-frame html-node-frame-presentation":t?"html-node-frame html-node-frame-expanded":"html-node-frame",title:typeof e.data.title==="string"?e.data.title:"HTML node",sandbox:"allow-scripts",allow:"",tabIndex:r?0:void 0,onLoad:g},void 0,!1,void 0,this)}var pm=null;async function B_(){if(!pm)pm=await hb();return pm}function H_(e,t){if(!e)return null;let n=e.toLowerCase(),o=t.find((s)=>s.name.toLowerCase()===n);if(o)return o.name;let r=t.filter((s)=>s.name.toLowerCase().startsWith(n));return r.length===1?r[0].name:null}function $P({html:e}){let t=L(null);return H(()=>{let n=t.current;if(!n)return;if(n.replaceChildren(),!e)return;let o=document.createElement("template");o.innerHTML=Qn(e),n.append(o.content.cloneNode(!0))},[e]),i("div",{ref:t},void 0,!1,void 0,this)}function OP(e,t){return`${e.role}:${e.status??"none"}:${t}:${e.text}`}function j_({count:e}){if(e===0)return null;return i("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:["✦"," ",e," context node",e!==1?"s":""," attached"]},void 0,!0,void 0,this)}function U_({message:e,onDismiss:t}){if(!e)return null;return i("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:[i("span",{style:{flex:1},children:e},void 0,!1,void 0,this),i("button",{type:"button",onClick:t,"aria-label":"Dismiss error",style:{background:"none",border:"none",color:"var(--c-danger)",cursor:"pointer",fontSize:"13px",padding:"0 2px"},children:i(Ve,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function zl({node:e,expanded:t=!1}){let n=Array.isArray(e.data.turns)?e.data.turns:[],o=n.length===0,r=e.data.text||"",s=e.data.status||"draft",a=o?s:e.data.threadStatus||"draft",c=a==="draft",l=a==="pending"||a==="sending",u=a==="streaming",p=a==="answered",[d,m]=A(""),[f,h]=A(""),[v,x]=A(null),[g,b]=A(new Map),I=L(null),R=L(null),M=n[n.length-1],_=`${n.length}:${M?.role??""}:${M?.status??""}:${Math.floor((M?.text?.length??0)/200)}`;H(()=>{if(t&&c&&I.current)I.current.focus()},[t,c]),H(()=>{if(!_)return;if(R.current)R.current.scrollTo({top:R.current.scrollHeight,behavior:"smooth"})},[_]);let N=L(null),w=L(n);w.current=n,H(()=>{let G=n.some((q)=>q.role==="assistant"&&q.status==="streaming"),S=()=>{let q=!1,ye=w.current.map((ue,Pe)=>({turn:ue,index:Pe})).filter(({turn:ue})=>ue.role==="assistant"&&ue.text);if(ye.length===0)return;return Promise.all(ye.map(async({turn:ue,index:Pe})=>{let ke=await Vn(ue.text);return{index:Pe,html:Qn(ke)}})).then((ue)=>{if(q)return;let Pe=new Map;for(let ke of ue)Pe.set(ke.index,ke.html);b(Pe)}),()=>{q=!0}};if(!G){if(N.current)clearTimeout(N.current),N.current=null;return S()}if(N.current)clearTimeout(N.current);return N.current=setTimeout(()=>{N.current=null,S()},400),()=>{if(N.current)clearTimeout(N.current),N.current=null}},[n]);let k=j(async()=>{let G=d.trim();if(!G)return;let S=d;x(null),fe(e.id,{turns:[{role:"user",text:G,status:"pending"}],threadStatus:"pending",text:G}),m("");let q=Array.isArray(e.data.contextNodeIds)?e.data.contextNodeIds:void 0;if(!(await ys(G,e.position,e.id,q,e.id)).ok)fe(e.id,{turns:[],threadStatus:"draft",text:"",status:"draft"}),m(S),x("Failed to send prompt. Your draft has been restored.")},[d,e.id,e.position,e.data.contextNodeIds]),z=j(async()=>{let G=f.trim();if(!G)return;let S=f;x(null);let q=Array.isArray(e.data.turns)?[...e.data.turns]:[];if(q.push({role:"user",text:G,status:"pending"}),fe(e.id,{turns:q,threadStatus:"pending"}),h(""),!(await gb(e.id,G)).ok)q.pop(),fe(e.id,{turns:q,threadStatus:"answered"}),h(S),x("Failed to send reply. Your draft has been restored.")},[f,e.id,e.data.turns]),X=j((G)=>{if(G.key==="Enter"&&(G.metaKey||G.ctrlKey)){G.preventDefault(),k();return}if(G.key==="Tab"&&d.startsWith("/")){G.preventDefault();let S=d.slice(1).split(/\s/)[0];if(S)B_().then((q)=>{let ie=H_(S,q);if(ie)m(`/${ie}`)})}},[k,d]),W=j((G)=>{if(G.key==="Enter"&&(G.metaKey||G.ctrlKey)){G.preventDefault(),z();return}if(G.key==="Tab"&&f.startsWith("/")){G.preventDefault();let S=f.slice(1).split(/\s/)[0];if(S)B_().then((q)=>{let ie=H_(S,q);if(ie)h(`/${ie}`)})}},[z,f]),J=Array.isArray(e.data.contextNodeIds)?e.data.contextNodeIds.length:0;if(c&&n.length===0)return i("div",{class:"prompt-node-inner",style:{display:"flex",flexDirection:"column",height:"100%",gap:"8px"},children:[i(j_,{count:J},void 0,!1,void 0,this),i(U_,{message:v,onDismiss:()=>x(null)},void 0,!1,void 0,this),i("textarea",{ref:I,value:d,onInput:(G)=>m(G.target.value),onKeyDown:X,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-ui)",fontSize:"13px",lineHeight:"1.5",padding:"8px 10px",outline:"none"}},void 0,!1,void 0,this),i("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[i("span",{style:{fontSize:"10px",color:"var(--c-muted)"},children:["⌘","+Enter to send"]},void 0,!0,void 0,this),i("button",{type:"button",onClick:k,disabled:!d.trim(),style:{padding:"5px 14px",fontSize:"12px",fontWeight:600,background:d.trim()?"var(--c-accent)":"var(--c-line)",color:d.trim()?"var(--c-contrast-fg)":"var(--c-muted)",border:"none",borderRadius:"var(--radius-sm)",cursor:d.trim()?"pointer":"default"},children:"Send"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(o)return i("div",{class:"prompt-node-inner",style:{display:"flex",flexDirection:"column",height:"100%"},children:[i("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:r},void 0,!1,void 0,this),i("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",paddingTop:"6px",borderTop:"1px solid var(--c-line)",marginTop:"4px"},children:i("span",{style:{fontSize:"10px",textTransform:"uppercase",fontWeight:600,color:l?"var(--c-warn)":p?"var(--c-ok)":"var(--c-muted)"},children:l?"Sending…":p?"Answered":s},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return i("div",{class:"prompt-node-inner",style:{display:"flex",flexDirection:"column",height:"100%"},children:[i(j_,{count:J},void 0,!1,void 0,this),i(U_,{message:v,onDismiss:()=>x(null)},void 0,!1,void 0,this),i("div",{ref:R,style:{flex:1,overflow:"auto",minHeight:0},children:n.map((G,S)=>i("div",{children:[S>0&&i("div",{class:"thread-turn-divider"},void 0,!1,void 0,this),G.role==="user"?i("div",{class:"thread-turn-user",children:[i("div",{class:"thread-turn-role",children:[i("span",{class:"status-dot"},void 0,!1,void 0,this),"You"]},void 0,!0,void 0,this),i("div",{style:{fontSize:t?"15px":"13px",lineHeight:t?"1.7":"1.55",color:"var(--c-text)",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:G.text},void 0,!1,void 0,this)]},void 0,!0,void 0,this):i("div",{class:"thread-turn-assistant",children:[i("div",{class:"thread-turn-role",children:[i("span",{class:`status-dot${G.status==="streaming"?" pulsing":""}`},void 0,!1,void 0,this),"PMX"]},void 0,!0,void 0,this),G.status==="streaming"&&!G.text&&i("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),i("div",{class:t?"md-reader-content":void 0,style:{fontSize:t?void 0:"13px",lineHeight:t?void 0:"1.55",opacity:G.text?1:0.4},children:g.get(S)?i(_e,{children:[i($P,{html:g.get(S)??""},void 0,!1,void 0,this),G.status==="streaming"&&i("span",{class:"streaming-cursor"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):i("div",{style:{color:"var(--c-muted)",fontStyle:"italic"},children:G.status==="streaming"?"Waiting for response…":G.text||"Empty response"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},OP(G,S),!0,void 0,this))},void 0,!1,void 0,this),i("div",{style:{flexShrink:0,borderTop:"1px solid var(--c-line)",marginTop:"4px",paddingTop:"6px"},children:[i("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:p?"6px":0},children:[i("span",{style:{fontSize:"10px",textTransform:"uppercase",fontWeight:600,color:u?"var(--c-accent)":l?"var(--c-warn)":p?"var(--c-ok)":"var(--c-muted)"},children:u?"Streaming…":l?"Sending…":p?"Answered":a},void 0,!1,void 0,this),i("span",{style:{fontSize:"10px",color:"var(--c-muted)"},children:[n.length," turn",n.length!==1?"s":""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),p&&i("div",{class:"thread-reply-area",children:[i("textarea",{value:f,onInput:(G)=>h(G.target.value),onKeyDown:W,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-ui)",fontSize:"12px",lineHeight:"1.5",padding:"6px 8px",outline:"none"}},void 0,!1,void 0,this),i("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:"4px"},children:[i("span",{style:{fontSize:"10px",color:"var(--c-muted)"},children:["⌘","+Enter"]},void 0,!0,void 0,this),i("button",{type:"button",onClick:z,disabled:!f.trim(),style:{padding:"3px 10px",fontSize:"11px",fontWeight:600,background:f.trim()?"var(--c-accent)":"var(--c-line)",color:f.trim()?"var(--c-contrast-fg)":"var(--c-muted)",border:"none",borderRadius:"var(--radius-sm)",cursor:f.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 LP({html:e}){let t=L(null);return H(()=>{let n=t.current;if(!n)return;if(n.replaceChildren(),!e)return;let o=document.createElement("template");o.innerHTML=Qn(e),n.append(o.content.cloneNode(!0))},[e]),i("div",{ref:t},void 0,!1,void 0,this)}function Rl({node:e,expanded:t=!1}){let n=e.data.content||"",o=e.data.status||"streaming",[r,s]=A(""),a=o==="streaming",c=o==="complete";H(()=>{if(!n){s("");return}let u=!1;return Vn(n).then((p)=>{if(!u)s(Qn(p))}),()=>{u=!0}},[n]);let l=j(()=>{ys("",{x:e.position.x,y:e.position.y+e.size.height+24},e.id)},[e]);return i("div",{class:"response-node-inner",style:{display:"flex",flexDirection:"column",height:"100%"},children:[a&&i("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),i("div",{class:t?"md-reader":void 0,style:{flex:1,overflow:"auto",minHeight:0,opacity:n?1:0.4,transition:"opacity 0.2s ease"},children:r?i("div",{class:t?"md-reader-content":void 0,children:i(LP,{html:r},void 0,!1,void 0,this)},void 0,!1,void 0,this):i("div",{style:{color:"var(--c-muted)",fontStyle:"italic",fontSize:"13px"},children:a?"Waiting for response…":"Empty response"},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",paddingTop:"6px",borderTop:"1px solid var(--c-line)",marginTop:"4px",flexShrink:0},children:[i("span",{style:{fontSize:"10px",textTransform:"uppercase",fontWeight:600,color:a?"var(--c-accent)":c?"var(--c-ok)":"var(--c-muted)"},children:a?"Streaming…":c?"Complete":o},void 0,!1,void 0,this),c&&i("button",{type:"button",onClick:l,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 Z_(e){return{toolName:e.toolName||e.title||"unknown",category:e.category||"other",status:e.status||"running",duration:e.duration||"",resultSummary:e.resultSummary||e.content||"",error:e.error||""}}var W_={mcp:"var(--c-muted)",file:"var(--c-muted)",subagent:"var(--c-subagent)",other:"var(--c-muted)"},DP={running:"⠋",success:"✓",failed:"✕"},FP={running:"var(--c-accent)",success:"var(--c-ok)",failed:"var(--c-danger)"};function Ml({node:e}){let{toolName:t,category:n,status:o,duration:r,resultSummary:s,error:a}=Z_(e.data),c=W_[n]??W_.other,l=DP[o]??"◌",u=FP[o]??"var(--c-muted)",p=o==="running",d=a?a.slice(0,30):s.length>30?`${s.slice(0,28)}…`:s;return i("div",{style:{display:"flex",alignItems:"center",gap:"8px",padding:"0 12px",height:"100%",overflow:"hidden"},children:[i("span",{style:{fontSize:"14px",color:u,flexShrink:0,animation:p?"pulse 1.5s infinite":"none"},children:l},void 0,!1,void 0,this),i("div",{style:{flex:1,minWidth:0,overflow:"hidden"},children:[i("div",{style:{fontFamily:"var(--font-code)",fontSize:"11px",fontWeight:600,color:c,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:t},void 0,!1,void 0,this),d&&i("div",{style:{fontSize:"10px",color:a?"var(--c-danger)":"var(--c-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",lineHeight:1.3},children:d},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r&&i("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:r},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var BP=new Set(["png","jpg","jpeg","gif","svg","webp","bmp","ico","avif"]),HP=new Set(["md","mdx","markdown"]);function jP(e){let t=e.split(".").pop()?.toLowerCase()??"";if(BP.has(t))return"image";if(HP.has(t))return"markdown";return"file"}async function $i(e,t,n){let o=Oe.value,r=400,s=300,a=20,c=Math.ceil(Math.sqrt(e.length));for(let l=0;l<e.length;l++){let u=e[l],p=l%c,d=Math.floor(l/c),m=t-c*420/2+p*420,f=n-150+d*320,h=jP(u.name),v=u.name;if(/\.(pdf|pptx?|xlsx?|docx?|od[pts])$/i.test(v)){if(!o||u.size===0||u.size>20971520){on("remove","File not attached","Open a board and choose a nonempty file under 20 MiB.");continue}let x=new URLSearchParams({boardId:o,name:v,mime:u.type,x:String(m),y:String(f)});on("context","Attaching document",v),await ne("attachDocument",`/api/canvas/attachments?${x}`,null,{method:"POST",body:u});continue}if(Oe.value!==o)return;if(h==="image"){let x=new FileReader,g=await new Promise((b)=>{x.onload=()=>b(x.result),x.readAsDataURL(u)});if(Oe.value!==o)return;await On({type:"image",title:v,content:g,x:m,y:f,width:400,height:300,...o?{boardId:o}:{}})}else{let x=await u.text();if(Oe.value!==o)return;let g=h==="markdown"||h==="file";await On({type:h,title:v,content:x,x:m,y:f,width:g?720:400,height:g?500:300,...o?{boardId:o}:{}})}}}var q_={width:260,height:150},UP={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 fm(e){return!!e&&e in Nt}function bo(e){if(!e)return null;let t=F.value.get(e);if(!t)return null;return{left:t.position.x,top:t.position.y,width:t.size.width,height:t.size.height}}function mm(e){return{x:e.left+e.width/2,y:e.top+e.height/2}}function Js(e){let t=typeof e.confidence!=="number"?0.82:0.4+Math.max(0,Math.min(1,e.confidence))*0.55;return e.auto?t*0.62:t}function G_(e,t){let n=Math.max(40,Math.abs(t.x-e.x)/2);return`M ${e.x} ${e.y} C ${e.x+n} ${e.y}, ${t.x-n} ${t.y}, ${t.x} ${t.y}`}function hm({intent:e}){let t=fm(e.nodeType)?Bn(e.nodeType):null,n=e.label||e.kind,o=typeof e.confidence==="number"?`${Math.round(e.confidence*100)}%`:null;return i("div",{class:"intent-info",onMouseEnter:()=>wi.value=e.id,onMouseLeave:()=>{if(wi.value===e.id)wi.value=null},children:[i("div",{class:"intent-chip",children:[typeof e.seq==="number"&&i("span",{class:"intent-seq",children:e.seq},void 0,!1,void 0,this),t&&i("span",{class:"intent-chip-icon","aria-hidden":"true",children:i(t,{size:12},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("span",{class:"intent-chip-label",children:n},void 0,!1,void 0,this),o&&i("span",{class:"intent-confidence",children:o},void 0,!1,void 0,this),e.phase==="forming"&&!e.auto&&i("button",{type:"button",class:"intent-veto",title:"Veto this move (Esc)","aria-label":"Veto this move",onClick:(r)=>{r.stopPropagation(),br(e)},children:i(Ve,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),e.reason&&i("div",{class:"intent-reason",children:e.reason},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function V_({intent:e,rect:t}){let n=fm(e.nodeType)?Bn(e.nodeType):null,o=fm(e.nodeType)?Nt[e.nodeType]:"Node";return i("div",{class:`intent-ghost intent-ghost-box is-${e.phase}${e.auto?" is-auto":""}`,"data-intent-id":e.id,style:{left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`,opacity:Js(e)},children:[i("div",{class:"intent-ghost-titlebar",children:[i("span",{class:"intent-ghost-icon","aria-hidden":"true",children:n?i(n,{size:13},void 0,!1,void 0,this):"◇"},void 0,!1,void 0,this),i("span",{class:"intent-ghost-badge",children:o},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i(hm,{intent:e},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function X_({intent:e,rect:t,variant:n}){return i("div",{class:`intent-ghost intent-ghost-${n} is-${e.phase}${e.auto?" is-auto":""}`,"data-intent-id":e.id,style:{left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`,opacity:Js(e)},children:[n==="edit"&&i("div",{class:"intent-edit-bar"},void 0,!1,void 0,this),i(hm,{intent:e},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ZP(e){let t=e.phase==="settling"?bo(e.settledNodeId):null;switch(e.kind){case"create":{if(!e.position)return null;let n=e.nodeType&&UP[e.nodeType]||q_,o=t??{left:e.position.x,top:e.position.y,...n};return i(V_,{intent:e,rect:o},e.id,!1,void 0,this)}case"move":{if(!e.position)return null;let o=bo(e.nodeId)??q_,r=t??{left:e.position.x,top:e.position.y,width:o.width,height:o.height};return i(V_,{intent:e,rect:r},e.id,!1,void 0,this)}case"remove":{let n=t??bo(e.nodeId);if(!n)return null;return i(X_,{intent:e,rect:n,variant:"remove"},e.id,!1,void 0,this)}case"edit":{let n=t??bo(e.nodeId);if(!n)return null;return i(X_,{intent:e,rect:n,variant:"edit"},e.id,!1,void 0,this)}case"connect":{if(!e.edge)return null;let n=bo(e.edge.from),o=bo(e.edge.to);if(!n||!o)return null;let r={x:(n.left+n.width/2+o.left+o.width/2)/2,y:(n.top+n.height/2+o.top+o.height/2)/2},s={left:r.x-110,top:r.y-18,width:220,height:36};return i("div",{class:`intent-ghost intent-ghost-connect is-${e.phase}${e.auto?" is-auto":""}`,"data-intent-id":e.id,style:{left:`${s.left}px`,top:`${s.top}px`,width:`${s.width}px`,opacity:Js(e)},children:i(hm,{intent:e},void 0,!1,void 0,this)},e.id,!1,void 0,this)}default:return null}}function K_(){let e=Array.from(lt.value.values());if(H(()=>{function t(n){if(n.key!=="Escape")return;let o=wi.value;if(!o)return;let r=lt.value.get(o);if(!r||r.phase!=="forming")return;n.stopImmediatePropagation(),n.preventDefault(),br(r)}return window.addEventListener("keydown",t,!0),()=>window.removeEventListener("keydown",t,!0)},[]),e.length===0)return null;return i("div",{class:"intent-layer",onAnimationEnd:(t)=>{if(t.animationName!=="intent-settle"&&t.animationName!=="intent-dissolve")return;let n=t.target.dataset.intentId;if(n&<.value.get(n)?.phase!=="forming")Er(n)},children:[i("svg",{class:"intent-line-layer",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"visible",pointerEvents:"none"},children:[i("defs",{children:i("marker",{id:"intent-arrow",markerWidth:"8",markerHeight:"8",refX:"6",refY:"3",orient:"auto",children:i("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),e.map((t)=>{if(t.kind==="connect"&&t.edge){let n=bo(t.edge.from),o=bo(t.edge.to);if(!n||!o)return null;return i("path",{d:G_(mm(n),mm(o)),class:`intent-edge type-${t.edge.type}`,style:{opacity:Js(t)}},`line-${t.id}`,!1,void 0,this)}if(t.kind==="move"&&t.position){let n=bo(t.nodeId);if(!n)return null;let o=n,r={x:t.position.x+o.width/2,y:t.position.y+o.height/2};return i("path",{d:G_(mm(n),r),class:"intent-trail",markerEnd:"url(#intent-arrow)",style:{opacity:Js(t)}},`line-${t.id}`,!1,void 0,this)}return null})]},void 0,!0,void 0,this),e.map(ZP)]},void 0,!0,void 0,this)}var J_=32000;var $l="Agent session";function Y_(e){return e.some((t)=>t.attached)}function Q_(e){return e.filter((t)=>!t.attached)}function Jo(e){switch(e.phase){case"thinking":return"Thinking";case"tooling":return e.detail?`Running ${e.detail}`:"Working";case"waiting-approval":return"Waiting on you";default:return"Idle"}}var It=K([]),gm=K({used:0,total:J_}),Yo=K([]),Rr=K(!1),Oi=K(!1),vm=K(null);function An(e){return It.value.find((n)=>n.sessionId===e)?.parentAgentId?"var(--c-subagent)":"var(--c-agent)"}function eS(e){return(e.trim().replace(/^[^a-z0-9]+/i,"").charAt(0)||e.trim().charAt(0)||"?").toUpperCase()}function Ol(e,t=Date.now()){let n=t-Date.parse(e);if(!Number.isFinite(n)||n<5000)return"now";if(n<60000)return`${Math.floor(n/1000)}s`;if(n<3600000)return`${Math.floor(n/60000)}m`;return`${Math.floor(n/3600000)}h`}var _t=Ge(()=>Y_(It.value)),ym=Ge(()=>Q_(It.value)),tS=Ge(()=>{let e=new Set;return[...It.value].filter((t)=>t.label!==$l).sort((t,n)=>Number(n.attached)-Number(t.attached)).map((t)=>({value:t.sessionId==="browser"?t.label:t.sessionId,label:t.label,attached:t.attached,steerable:t.attached||t.steerable===!0,pendingSteers:t.pendingSteers??0,polling:t.lastClaimAt!==void 0&&Date.now()-Date.parse(t.lastClaimAt)<300000})).filter((t)=>e.has(t.value)?!1:(e.add(t.value),!0))}),nS=Ge(()=>It.value.filter((e)=>e.attached)),Li=Ge(()=>It.value.find((e)=>e.attached)??null);function WP(e){let t=new Set;for(let n of e)if(n.nodeId&&n.kind!=="create")t.add(n.nodeId);return t}var Ll=Ge(()=>WP(lt.value.values()));function Dl(e,t){if(e.cursor)return{x:e.cursor.x,y:e.cursor.y};if(!e.focusNodeId)return null;let n=t(e.focusNodeId);if(!n)return null;return{x:n.position.x+Math.max(24,n.size.width-28),y:n.position.y+16}}function bm(e){if(!e)return;if(Array.isArray(e.presences))It.value=e.presences;if(e.budget&&Number.isFinite(e.budget.used)&&Number.isFinite(e.budget.total))gm.value={used:e.budget.used,total:e.budget.total};if(Array.isArray(e.activity))Yo.value=e.activity}function oS(){let e=L(new Map),t=oe.value.scale,n=F.value,o=1/Math.max(0.05,t),r=It.value.map((s)=>{let a=Dl(s,(l)=>n.get(l));if(a)e.current.set(s.sessionId,a);let c=a??e.current.get(s.sessionId)??null;return c?{presence:s,position:c}:null}).filter((s)=>s!==null);if(r.length===0)return null;return i("div",{class:"agent-presence-layer","aria-hidden":"true",children:r.map(({presence:s,position:a})=>i("div",{class:`agent-cursor phase-${s.phase}${s.cursor?" has-explicit-cursor":""}${s.attached?"":" is-external"}${s.parentAgentId?" is-worker":""}`,"data-session-id":s.sessionId,style:{transform:`translate(${a.x}px, ${a.y}px)`,"--identity-color":An(s.sessionId)},children:i("div",{class:"agent-cursor-inner",style:{transform:`scale(${o})`},children:[i("svg",{class:"agent-cursor-glyph",width:"16",height:"18",viewBox:"0 0 16 18","aria-hidden":"true",children:i("path",{d:"M1.5 1.5L14.5 9.2 8.3 10.6 5.2 16.5z",fill:"currentColor",stroke:"var(--c-bg)","stroke-width":"1.2"},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("span",{class:"agent-cursor-chip",children:[i("span",{class:"agent-cursor-dot"},void 0,!1,void 0,this),i("span",{class:"agent-cursor-label",children:Jo(s)},void 0,!1,void 0,this),i("span",{class:"agent-cursor-who",children:s.label},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},s.sessionId,!1,void 0,this))},void 0,!1,void 0,this)}function xo(e=1000){let[t,n]=A(()=>Date.now());return H(()=>{if(e<=0)return;n(Date.now());let o=window.setInterval(()=>n(Date.now()),e);return()=>window.clearInterval(o)},[e]),t}function rS(){let e=xo(Os.value.length>0?5000:0),t=Os.value.filter((o)=>o.cursor!==null&&(!o.lastSeenAt||e-Date.parse(o.lastSeenAt)<Ow+5000));if(t.length===0)return null;let n=1/Math.max(0.05,oe.value.scale);return i("div",{class:"human-presence-layer","aria-hidden":"true",children:t.map((o)=>i("div",{class:`human-cursor${o.grabbingNodeId?" is-grabbing":""}`,"data-client-id":o.clientId,style:{transform:`translate(${o.cursor.x}px, ${o.cursor.y}px)`},children:i("div",{class:"human-cursor-inner",style:{transform:`scale(${n})`},children:[i("svg",{class:"human-cursor-glyph",width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:i("path",{d:"M3 2 L13 8 L8.5 9.5 L6.5 14 Z",fill:"currentColor",stroke:"var(--c-bg)","stroke-width":"1"},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("span",{class:"human-cursor-tag",children:o.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},o.clientId,!1,void 0,this))},void 0,!1,void 0,this)}function Fl(e,t){let{POSITIVE_INFINITY:n,POSITIVE_INFINITY:o,NEGATIVE_INFINITY:r,NEGATIVE_INFINITY:s}=Number,a=0;for(let c of e)a+=1,n=Math.min(n,c.position.x),o=Math.min(o,c.position.y),r=Math.max(r,c.position.x+c.size.width),s=Math.max(s,c.position.y+c.size.height);if(a===0)return null;return{x:n-t,y:o-t,width:r-n+t*2,height:s-o+t*2}}function wm(){let e=Dn.value;return e&&typeof e==="object"?e:{}}var iS=Ge(()=>wm().workItems??[]),_m=Ge(()=>wm().approvalGates??[]),Mr=Ge(()=>_m.value.filter((e)=>e.status==="pending")),Qo=Ge(()=>{let e=wm().policy?.scope;return e&&Array.isArray(e.nodeIds)&&e.nodeIds.length>0?{nodeIds:e.nodeIds,padding:typeof e.padding==="number"?e.padding:40}:null});async function sS(e){return(await mn("setScopeFence","/api/canvas/ax/policy",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({scope:e&&e.length>0?{nodeIds:e}:null,source:"browser"})})).ok}var aS=Ge(()=>_m.value.filter((e)=>e.status==="held")),cS=Ge(()=>_m.value.filter((e)=>e.status==="approved"||e.status==="rejected")),lS=K({events:[],evidence:[],steering:[]}),$r=K("all");function Sm(e){if(e==="update")return"update";if(e==="steer"||e==="steering"||e==="yield")return"steer";if(e==="assistant-message")return"assistant";if(e==="evidence")return"evidence";return"event"}var qP=new Set(["api","mcp","sdk","cli"]);function xm(e,t){if(e?.trim())return e.trim();let n=t?.trim();if(n&&!qP.has(n))return n;return null}var GP=/^(node|edge|group|annotation|jsonrender|graph|render)\.|^arrange$|^canvas\.clear$|^snapshot\.restore$/,uS=K(null),ea=K(new Set),VP={prompt:"Prompt","assistant-message":"Assistant","tool-start":"Tool run","tool-result":"Tool result",failure:"Failure",approval:"Approval",steering:"Steering",command:"Command",note:"Note",policy:"Policy",yield:"Yield"};function XP(e,t=40,n=[],o=null,r="all"){let s=n.find((l)=>GP.test(l.op)),a=[...n.map((l)=>({id:`update-${l.id}`,kind:"update",label:"Update",body:l.summary,createdAt:l.at,who:l.sessionId??null,...!Se()&&o?.actor==="agent"&&s?.id===l.id?{undoable:!0}:{}})),...e.events.map((l)=>({id:`event-${l.id}`,kind:l.kind,label:VP[l.kind]??l.kind,body:l.detail?`${l.summary} — ${l.detail}`:l.summary,createdAt:l.createdAt,who:xm(l.agentId,l.source)})),...e.evidence.map((l)=>({id:`evidence-${l.id}`,kind:"evidence",label:"Evidence",body:l.body?`${l.title} — ${l.body}`:l.title,createdAt:l.createdAt,who:xm(l.agentId,l.source)})),...e.steering.map((l)=>{let u=l.agentId??(l.source&&l.source!=="browser"?l.source:null),p=l.target?`→ ${l.target} · `:u?"→ all · ":"",d=l.target&&l.delivered===!1?` — waiting for ${l.target} to pick it up`:"";return{id:`steer-${l.id}`,kind:"steer",label:"Steer",body:`${u?`${u} `:""}${p}${l.message}${d}`,createdAt:l.createdAt,who:xm(l.agentId,l.source)}})],c=r==="all"?a:a.filter((l)=>Sm(l.kind)===r);return c.sort((l,u)=>l.createdAt<u.createdAt?1:l.createdAt>u.createdAt?-1:0),c.slice(0,t)}var dS=Ge(()=>XP(lS.value,40,Yo.value,uS.value,$r.value));async function er(){let[e,t]=await Promise.all([ne("refreshTimeline","/api/canvas/ax/timeline?limit=40",null),ne("refreshHistoryTop","/api/canvas/history",null)]);if(t)uS.value=t.top??null;if(!e)return;lS.value={events:Array.isArray(e.events)?e.events:[],evidence:Array.isArray(e.evidence)?e.evidence:[],steering:Array.isArray(e.steering)?e.steering:[]}}async function km(e){if(!(await mn("undoAgentEdit","/api/canvas/undo",{method:"POST"})).ok)return!1;return ea.value=new Set([...ea.value,e.id]),await $n("undoAgentEditSteering","/api/canvas/ax/steer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:`Undid your edit: ${e.body} — it was reverted on the board.`,source:"browser"})}),er(),!0}async function Tm(e=!1){if(Se())return on("remove","Undo / redo unavailable","Open the local PMX workbench to use shared history."),!1;let t=await mn(e?"redo":"undo",e?"/api/canvas/redo":"/api/canvas/undo",{method:"POST"});if(t.ok)er();return t.ok}async function pS(e,t){if(!(await mn("resolveGate",`/api/canvas/ax/approval/${encodeURIComponent(e.id)}/resolve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({decision:t,source:"browser"})})).ok)return!1;if(t==="rejected")await $n("rejectGateSteering","/api/canvas/ax/steer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:`Rejected gate "${e.title}" — do not proceed with it.`,source:"browser"})});return!0}async function mS(e){return(await mn("reopenGate",`/api/canvas/ax/approval/${encodeURIComponent(e.id)}/reopen`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source:"browser"})})).ok}async function fS(e,t){return(await mn("sendSteering","/api/canvas/ax/steer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:e,source:"browser",...t?{target:t}:{}})})).ok}async function tr(){return(await mn("startSession","/api/canvas/ax/presence",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source:"browser",label:$l,attached:!0,phase:"idle"})})).ok}async function Bl(e){return(await mn("endSession","/api/canvas/ax/presence",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source:e.source,agentId:e.agentId,attached:!1,endedBy:"human"})})).ok}function Ys(e){if(!Array.isArray(e))return[];return e.flatMap((t)=>{if(!t||typeof t!=="object")return[];let n=t;if(typeof n.id!=="string"||typeof n.title!=="string")return[];return[{id:n.id,title:n.title,...typeof n.reason==="string"?{reason:n.reason}:{}}]})}var nr=K(null);function Cm(e){let t=Di.value?.context;nr.value=e&&t?new Set([...t.read,...t.pinned,...t.created,...t.edited].map((n)=>n.id)):null}var Di=K(null);function Qs(e,t){let n=new Set(e.map((o)=>o.id));return[...e,...t.filter((o)=>!n.has(o.id))]}function KP(e,t){return{labels:[...new Set([...e.labels,...t.labels])],sessions:e.sessions+1,endedAt:t.endedAt,endedBy:e.endedBy===t.endedBy?t.endedBy:void 0,counts:t.counts,snapshot:null,context:{read:Qs(e.context.read,t.context.read),pinned:Qs(e.context.pinned,t.context.pinned),created:Qs(e.context.created,t.context.created),edited:Qs(e.context.edited,t.context.edited),changedSinceRead:Qs(e.context.changedSinceRead,t.context.changedSinceRead)}}}function hS(e){let{counts:t,snapshot:n,context:o}=e;if(typeof e.label!=="string"||typeof e.endedAt!=="string")return;if(e.unchanged===!0||typeof e.parentAgentId==="string")return;let r={labels:[e.label],sessions:1,endedAt:e.endedAt,endedBy:e.endedBy==="human"||e.endedBy==="agent"||e.endedBy==="idle-timeout"?e.endedBy:void 0,counts:{items:Number(t?.items??0)||0,done:Number(t?.done??0)||0,cancelled:Number(t?.cancelled??0)||0,rejected:Number(t?.rejected??0)||0,held:Number(t?.held??0)||0},snapshot:n&&typeof n.id==="string"?{id:n.id,name:String(n.name??"")}:null,context:{read:Ys(o?.read),pinned:Ys(o?.pinned),created:Ys(o?.created),edited:Ys(o?.edited),changedSinceRead:Ys(o?.changedSinceRead)}},s=Di.value;if(Di.value=s?KP(s,r):r,s&&nr.value)Cm(!0)}function Hl(){Di.value=null,nr.value=null}function gS(){if(!_t.value)return null;let e=Qo.value;if(!e)return null;let t=F.value,n=e.nodeIds.map((s)=>t.get(s)).filter((s)=>s!==void 0),o=Fl(n,e.padding);if(!o)return null;let r=1/Math.max(0.05,oe.value.scale);return i("div",{class:"scope-fence","data-fenced-count":n.length,style:{transform:`translate(${o.x}px, ${o.y}px)`,width:`${o.width}px`,height:`${o.height}px`},"aria-hidden":"true",children:[i("span",{class:"scope-fence-pill scope-fence-pill-top",style:{transform:`scale(${r})`},children:["Agent scope · ",n.length," node",n.length===1?"":"s"]},void 0,!0,void 0,this),i("span",{class:"scope-fence-pill scope-fence-pill-bottom",style:{transform:`scale(${r})`},children:"writes outside are blocked · reads allowed"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var vS=K(new Map),ta=K({});function Em(e){vS.value=new Map((e.nodes??[]).map((t)=>[t.nodeId,t])),ta.value=e.pins??{}}async function jl(){let e=await ne("fetchContextStatus","/api/canvas/ax/context-status",{});if(e.ok&&e.boardId===Oe.value)Em(e)}function yS(e,t){let n=vS.value.get(e),o=ta.value[e]?.pinnedAt;if(!n||o&&n.lastReadAt<o)return{kind:"not-read"};if(t>n.readRevision)return{kind:"changed",by:n.lastReadBy,at:n.lastReadAt};return{kind:"read",by:n.lastReadBy,at:n.lastReadAt,count:n.readCount}}function Ul(e){return e.agentId?.trim()||e.source}var bS="",xS=new Map,wS=Ge(()=>{let e=Le.value,t=new Map;if(e.size>0){let o=new Map;for(let r of wd([...F.value.values()],e)){let s=r.pinnedNodeTitle??r.pinnedNodeId;for(let a of r.neighbors){let c=o.get(a.id)??[];c.push({pinNodeId:r.pinnedNodeId,pinTitle:s,distance:a.distance}),o.set(a.id,c)}}for(let[r,s]of o)s.sort((a,c)=>a.distance-c.distance),t.set(r,s.map(({pinNodeId:a,pinTitle:c})=>({pinNodeId:a,pinTitle:c})))}let n=[...t].sort(([o],[r])=>o.localeCompare(r)).map(([o,r])=>`${o}:${r.map((s)=>`${s.pinNodeId}=${s.pinTitle}`).join(",")}`).join("|");if(n===bS)return xS;return bS=n,xS=t,t});function Qe({label:e,shortcut:t,body:n,align:o="center",side:r="down",tapToOpen:s=!1,children:a}){return i("span",{class:`toolbar-tooltip-anchor toolbar-tooltip-anchor-${o}${r==="up"?" toolbar-tooltip-anchor-up":""}${s?" toolbar-tooltip-anchor-tap":""}`,tabIndex:s?-1:void 0,children:[a,i("span",{class:"toolbar-tooltip",role:"tooltip",children:[i("span",{class:"toolbar-tooltip-label",children:e},void 0,!1,void 0,this),n&&i("span",{class:"toolbar-tooltip-body",children:n},void 0,!1,void 0,this),t&&i("span",{class:"toolbar-tooltip-meta",children:i("kbd",{class:"toolbar-tooltip-shortcut",children:t},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var Zl={eye:"M2 12s3.5-6 10-6 10 6 10 6-3.5 6-10 6S2 12 2 12zM12 9.5a2.5 2.5 0 1 0 0 5a2.5 2.5 0 1 0 0-5",eyeOff:"M3 3l18 18M10.6 6.1A10 10 0 0 1 12 6c6.5 0 10 6 10 6a17 17 0 0 1-3 3.6M6.6 6.6C3.8 8.3 2 12 2 12s3.5 6 10 6a9.6 9.6 0 0 0 4.4-1",spark:"M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z",pen:"M4 20l4.2-1L19 8.2 15.8 5 5 15.8z",warn:"M12 4l9 16H3zM12 10v4M12 17v.5"};function _S(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function JP(e,t){if(t){let n=ta.value[e.id],o=n?.pinnedBy.actor==="agent"?` Pinned by ${Ul(n.pinnedBy)}${n.reason?`: ${n.reason}`:""}.`:"",r=yS(e.id,e.contentRevision??0);if(r.kind==="not-read")return{tone:"muted",glyph:"eyeOff",word:"not read",label:"Not read yet",body:`In context, but no agent has loaded it since it was pinned.${o}`};if(r.kind==="changed")return{tone:"warn",glyph:"warn",word:"changed since read",label:"The agent's copy is out of date",body:`Changed after ${r.by} read it at ${_S(r.at)}.${o}`};return{tone:"agent",glyph:"eye",word:"read",label:"Read by the agent",body:`${r.count>1?`Read ${r.count} times · last`:"Read"} ${_S(r.at)} by ${r.by}.${o}`}}if(e.lastEditedBy?.actor==="human")return null;if(e.createdBy?.actor==="agent"){let n=Ul(e.createdBy);return{tone:"agent",glyph:"spark",word:`by ${n}`,label:`Created by ${n}`,body:"The byline stays until you edit the node."}}if(e.lastEditedBy?.actor==="agent")return{tone:"agent",glyph:"pen",word:"edited",label:`Edited by ${Ul(e.lastEditedBy)}`,body:"The mark stays until you edit the node."};return null}function SS({node:e,pinned:t}){let n=JP(e,t);if(!n)return null;return i(Qe,{label:n.label,body:n.body,align:"end",tapToOpen:!0,children:i("span",{class:`node-context-mark is-${n.tone}`,"data-mark":n.word,children:[i("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:i("path",{d:Zl[n.glyph]},void 0,!1,void 0,this)},void 0,!1,void 0,this),n.word]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function kS(e){return ta.value[e]?.pinnedBy.actor==="agent"}function TS({node:e,pinned:t}){let[n,o]=A(!1),r=t?void 0:wS.value.get(e.id);if(!r||r.length===0)return null;let s=r.length>1?`near ${r.length}`:"near",a=n?r.map((c)=>{let l=F.value.get(c.pinNodeId);return l?`“${c.pinTitle}” (${Math.round(xd(e,l))} px)`:`“${c.pinTitle}”`}).join(", "):"";return i(Qe,{label:n?`Near ${a}`:"Near a pin",body:"The agent gets its title and a short summary, not its full content. Pin it to send its content.",align:"end",tapToOpen:!0,children:i("span",{class:"node-near-mark","data-near":r.map((c)=>c.pinNodeId).join(" "),onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),onFocusIn:()=>o(!0),onFocusOut:()=>o(!1),children:[i("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:[i("circle",{cx:"12",cy:"12",r:"8",class:"node-near-ring"},void 0,!1,void 0,this),i("circle",{cx:"12",cy:"12",r:"2.2",class:"node-near-dot"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function YP(e){let t=typeof e==="number"&&Number.isFinite(e)?Math.floor(e):1;return Math.max(1,Math.min(20,t))}function Wl(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function na(e){return typeof e==="string"&&e.length>0}function CS(e){let t=e.axStep;if(!Wl(t))return null;if(!na(t.flowId)||!na(t.workItemId))return null;if(typeof t.index!=="number"||typeof t.total!=="number")return null;return{flowId:t.flowId,index:t.index,total:t.total,workItemId:t.workItemId}}function ES(e){let t=e.axFlow;if(!Wl(t)||!na(t.flowId)||!Array.isArray(t.steps))return null;let n=[];for(let r of t.steps){if(!Wl(r)||!na(r.nodeId)||!na(r.workItemId))return null;if(typeof r.index!=="number")return null;n.push({index:r.index,nodeId:r.nodeId,workItemId:r.workItemId,title:typeof r.title==="string"?r.title:""})}if(n.length===0)return null;let o=Wl(t.loop)?t.loop:{};return{flowId:t.flowId,title:typeof t.title==="string"?t.title:"Flow",steps:n,loop:{running:o.running===!0,run:typeof o.run==="number"&&Number.isFinite(o.run)?Math.max(0,Math.floor(o.run)):0,maxRuns:YP(o.maxRuns)}}}var QP={position:"sticky",bottom:"calc(-1 * var(--ax-dock-bleed, 12px))",marginTop:"12px",marginLeft:"calc(-1 * var(--ax-dock-bleed, 12px))",marginRight:"calc(-1 * var(--ax-dock-bleed, 12px))",marginBottom:"calc(-1 * var(--ax-dock-bleed, 12px))",padding:"9px var(--ax-dock-pad, 12px) 10px",background:"var(--c-panel-overlay)",borderTop:"1px solid var(--c-line)",backdropFilter:"blur(6px)"},IS={display:"flex",alignItems:"center",gap:"6px",flexWrap:"wrap"},PS={fontSize:"10px",color:"var(--c-muted)",textTransform:"uppercase",letterSpacing:"0.04em",marginRight:"auto"},NS={...Tr,background:"color-mix(in srgb, var(--c-accent) 25%, transparent)",color:"var(--c-text)"},eN=[{status:"in-progress",label:"Start",toast:"Step started"},{status:"done",label:"Done",toast:"Step done"},{status:"blocked",label:"Blocked",toast:"Step blocked"}];async function AS(e,t,n){let o={...t,loop:n};fe(e.id,{axFlow:o}),await kt(e.id,{data:{axFlow:o}})}function zS(e){return typeof e?.axWorkStatus==="string"?e.axWorkStatus:"todo"}function tN({node:e,flow:t}){let[n,o]=A(""),{running:r,run:s,maxRuns:a}=t.loop,c=async()=>{await AS(e,t,{running:!0,run:s>=a?0:s,maxRuns:a});let u=t.steps.find((d)=>zS(F.value.get(d.nodeId)?.data)!=="done"),p=u??t.steps[t.steps.length-1];await Uo(e,"ax.work.update",{id:p.workItemId,status:u?"in-progress":"done"},"Loop running")},l=async()=>{let u=n.trim();if(!u)return;await Uo(e,"ax.steer",{message:u},"Steering sent"),o("")};return i("div",{class:"ax-flow-controls",style:{...IS,marginTop:"6px",rowGap:"4px"},children:[i("span",{class:"ax-flow-runs",style:PS,children:r?`Loop running · run ${s+1}/${a}`:`Loop idle · ${s}/${a} runs`},void 0,!1,void 0,this),r?i("button",{type:"button",class:"ax-node-action",style:NS,title:"Stop the loop now. The stop is persisted on this node, so it survives a refresh and no further step is opened.",onClick:(u)=>{u.stopPropagation(),AS(e,t,{...t.loop,running:!1})},children:"Stop"},void 0,!1,void 0,this):i("button",{type:"button",class:"ax-node-action",style:Tr,title:"Run this flow as a loop: each completed step opens the next one, and the last step starts the next run — until the run cap is reached or you press Stop.",onClick:(u)=>{u.stopPropagation(),c()},children:"Run loop"},void 0,!1,void 0,this),i("input",{class:"ax-flow-steer-input",value:n,placeholder:"Steer the agent…","aria-label":"Steer the agent",onInput:(u)=>o(u.target.value),onClick:(u)=>u.stopPropagation(),onKeyDown:(u)=>{if(u.key!=="Enter")return;u.stopPropagation(),l()},style:{flex:"1 1 120px",minWidth:"90px",fontSize:"10px",padding:"3px 6px",borderRadius:"4px",border:"1px solid var(--c-line)",background:"var(--c-panel-overlay)",color:"var(--c-text)"}},void 0,!1,void 0,this),i("button",{type:"button",class:"ax-node-action",style:Tr,title:"Send a steering message to the agent working this flow.",onClick:(u)=>{u.stopPropagation(),l()},children:"Steer"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ql({node:e}){let t=CS(e.data);if(!t)return null;let n=ES(e.data),o=zS(e.data);return i("div",{class:"ax-step-dock",style:QP,children:[i("div",{class:"ax-step-controls",style:IS,children:[i("span",{class:"ax-step-position",style:PS,children:["Step ",t.index,"/",t.total]},void 0,!0,void 0,this),eN.map((r)=>i("button",{type:"button",class:"ax-node-action","aria-pressed":o===r.status,style:o===r.status?NS:Tr,title:`Set this step's work item to "${r.status}".`,onClick:(s)=>{s.stopPropagation(),Uo(e,"ax.work.update",{id:t.workItemId,status:r.status},r.toast)},children:r.label},r.status,!1,void 0,this))]},void 0,!0,void 0,this),n&&i(tN,{node:e,flow:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Fi=8,Or=K(null),Bi=[],Hi=[],$S=null;function RS(e){let t=e?.data.parentGroup;return typeof t==="string"&&t.length>0?t:null}function MS(e){if(!e||!Array.isArray(e.data.children))return[];return e.data.children.filter((t)=>typeof t==="string")}function nN(e,t){let n=new Map(t.map((c)=>[c.id,c])),o=new Set([e]),r=n.get(e);if(!r)return o;let s=RS(r);while(s&&!o.has(s))o.add(s),s=RS(n.get(s));if(r.type!=="group")return o;let a=[...MS(r)];while(a.length>0){let c=a.pop();if(!c||o.has(c))continue;o.add(c);let l=n.get(c);if(l?.type==="group")a.push(...MS(l))}return o}function OS(e,t){Bi=[],Hi=[],$S=e;let n=Array.from(t),o=nN(e,n);for(let r of n){if(o.has(r.id))continue;let s=r.position.x,a=r.position.x+r.size.width,c=r.position.x+r.size.width/2,l=r.position.y,u=r.position.y+r.size.height,p=r.position.y+r.size.height/2;Bi.push({val:s,minY:l,maxY:u}),Bi.push({val:a,minY:l,maxY:u}),Bi.push({val:c,minY:l,maxY:u}),Hi.push({val:l,minX:s,maxX:a}),Hi.push({val:u,minX:s,maxX:a}),Hi.push({val:p,minX:s,maxX:a})}}function LS(){Bi=[],Hi=[],$S=null}function DS(e,t,n,o){let r=[e,e+n/2,e+n],s=[t,t+o/2,t+o],a=[0,n/2,n],c=[0,o/2,o],l=null,u=Fi+1,p=null;for(let v=0;v<3;v++){let x=r[v];for(let g of Bi){let b=Math.abs(x-g.val);if(b<u)u=b,l=g.val-a[v],p={axis:"x",pos:g.val,from:Math.min(g.minY,t),to:Math.max(g.maxY,t+o)}}}let d=null,m=Fi+1,f=null;for(let v=0;v<3;v++){let x=s[v];for(let g of Hi){let b=Math.abs(x-g.val);if(b<m)m=b,d=g.val-c[v],f={axis:"y",pos:g.val,from:Math.min(g.minX,e),to:Math.max(g.maxX,e+n)}}}let h=[];if(p&&u<=Fi)h.push(p);if(f&&m<=Fi)h.push(f);return{x:l!==null&&u<=Fi?l:e,y:d!==null&&m<=Fi?d:t,guides:h}}function FS({nodeId:e,viewport:t,onMove:n,onDragEnd:o,onClick:r}){let s=L(!1),a=L({x:0,y:0}),c=L({x:0,y:0});return j((u,p,d)=>{u.stopPropagation(),u.preventDefault(),s.current=!0,document.documentElement.classList.add("is-node-dragging"),window.getSelection()?.removeAllRanges(),a.current={x:u.clientX,y:u.clientY},c.current={x:p,y:d};let m=null,f=null,h=!1,v=()=>{if(f=null,!s.current||!m)return;let b=m;m=null;let I=t.value.scale,R=(b.x-a.current.x)/I,M=(b.y-a.current.y)/I;n(e,c.current.x+R,c.current.y+M)},x=(b)=>{if(!s.current)return;if(!h&&Math.hypot(b.clientX-u.clientX,b.clientY-u.clientY)<4)return;if(h=!0,m={x:b.clientX,y:b.clientY},f!==null)return;f=window.requestAnimationFrame(v)},g=(b)=>{if(f!==null)window.cancelAnimationFrame(f),v();if(s.current=!1,document.documentElement.classList.remove("is-node-dragging"),document.removeEventListener("pointermove",x),document.removeEventListener("pointerup",g),document.removeEventListener("pointercancel",g),o(),!h&&b.type==="pointerup")r?.()};document.addEventListener("pointermove",x),document.addEventListener("pointerup",g),document.addEventListener("pointercancel",g)},[e,t,n,o,r])}var oN=200,rN=100;function BS({nodeId:e,viewport:t,onResize:n,onResizeEnd:o}){let r=L(!1),s=L({x:0,y:0}),a=L({w:0,h:0});return j((l,u,p)=>{l.stopPropagation(),l.preventDefault(),r.current=!0,s.current={x:l.clientX,y:l.clientY},a.current={w:u,h:p},document.documentElement.classList.add("is-node-resizing");let d=null,m=null,f=()=>{if(m=null,!r.current||!d)return;let x=d;d=null;let g=t.value.scale,b=(x.x-s.current.x)/g,I=(x.y-s.current.y)/g;n(e,Math.max(oN,a.current.w+b),Math.max(rN,a.current.h+I))},h=(x)=>{if(!r.current)return;if(d={x:x.clientX,y:x.clientY},m!==null)return;m=window.requestAnimationFrame(f)},v=()=>{if(m!==null)window.cancelAnimationFrame(m),f();r.current=!1,document.documentElement.classList.remove("is-node-resizing"),document.removeEventListener("pointermove",h),document.removeEventListener("pointerup",v),document.removeEventListener("pointercancel",v),o()};document.addEventListener("pointermove",h),document.addEventListener("pointerup",v),document.addEventListener("pointercancel",v)},[e,t,n,o])}var iN={ArrowLeft:{dx:-1,dy:0},ArrowRight:{dx:1,dy:0},ArrowUp:{dx:0,dy:-1},ArrowDown:{dx:0,dy:1}};function sN(e,t,n){let o=e.position.x+e.size.width/2,r=e.position.y+e.size.height/2,s=null,a=Number.POSITIVE_INFINITY;for(let c of n){if(c.id===e.id)continue;let l=c.position.x+c.size.width/2-o,u=c.position.y+c.size.height/2-r,p=l*t.dx+u*t.dy;if(p<=0)continue;let d=Math.abs(l*t.dy)+Math.abs(u*t.dx);if(d>p)continue;let m=p+d*2;if(m<a)a=m,s=c}return s}var aN=0.4,cN=0.55,lN=175;function uN(e,t,n=0){if(!Number.isFinite(e)||e>=1)return 1;let r=Math.min(2.2,1/Math.max(e,0.01));if(Number.isFinite(t)&&t>0)r=Math.min(r,t*aN/Si);if(Number.isFinite(n)&&n>0)r=Math.min(r,n*cN/lN);return Math.max(1,r)}function HS({node:e,children:t,onContextMenu:n}){let o=je.value===e.id,r=Ne.value.has(e.id),s=Le.value.has(e.id),a=oc.value.has(e.id),c=!o&&zb.value.has(e.id),l=uo.value,u=l!==null&&l.has(e.id),p=l!==null&&!l.has(e.id),[d,m]=A(!1),f=L(null),h=j((T,ce,pe)=>{let me=DS(ce,pe,e.size.width,e.size.height),qt=F.value.get(T);if(qt?.position.x===me.x&&qt.position.y===me.y){Or.value=me.guides.length>0?me.guides:null;return}wt(T,{position:{x:me.x,y:me.y}}),Or.value=me.guides.length>0?me.guides:null,Lb(T)},[e.size.width,e.size.height]),v=L(null),x=j(()=>{if(LS(),Or.value=null,Ap(null),v.current)document.removeEventListener("keydown",v.current),v.current=null;Tt();let T=Xn.value;if(Ob(),!T||T.nodeId!==e.id)return;if(T.mode==="add")$d(T.groupId,[e.id]);else{let ce=F.value.get(T.groupId),pe=Array.isArray(ce?.data.children)?ce.data.children.filter((me)=>typeof me==="string"&&me!==e.id):[];yc(T.groupId,pe)}},[e.id]),g=FS({nodeId:e.id,viewport:oe,onMove:h,onDragEnd:x,onClick:()=>{Ne.value=new Set([e.id])}}),b=j((T,ce,pe)=>{let me=F.value.get(T);if(me?.size.width===ce&&me.size.height===pe)return;wt(T,{size:{width:ce,height:pe}})},[]),I=j(()=>{fe(e.id,{userResized:!0}),kt(e.id,{data:{userResized:!0}}),Tt()},[e.id]),R=BS({nodeId:e.id,viewport:oe,onResize:b,onResizeEnd:I}),M=j((T)=>{T.stopPropagation(),T.preventDefault(),Ye.value={fromId:e.id,fromX:e.position.x+e.size.width/2,fromY:e.position.y+e.size.height/2,cursorX:e.position.x+e.size.width/2,cursorY:e.position.y+e.size.height/2,targetId:null}},[e.id,e.position.x,e.position.y,e.size.width,e.size.height]),_=j((T)=>{if(T.button!==0)return;if(d)return;if(T.target instanceof Element&&T.target.closest("button, input")){T.stopPropagation();return}if(Qt.value==="connect"){M(T);return}if(T.shiftKey){T.stopPropagation(),Dd(e.id);return}if(mo(e.id),Ap(e.id),Ww(e.id,typeof e.data.title==="string"&&e.data.title?e.data.title:e.type),OS(e.id,F.value.values()),e.type!=="group"){let ce=(pe)=>{if(pe.key==="Escape")$b()};v.current=ce,document.addEventListener("keydown",ce)}g(T,e.position.x,e.position.y)},[e.id,e.type,e.data.title,e.position.x,e.position.y,g,d,M]),N=j((T)=>{if(T.button!==0)return;if(T.stopPropagation(),Qt.value==="connect"){M(T);return}if(T.shiftKey){Dd(e.id);return}mo(e.id)},[e.id,M]),w=j((T)=>{if((T.target instanceof Element?T.target:null)?.closest('button, input, textarea, select, a, [contenteditable="true"]'))return;if(n)n(T,e.id)},[n,e.id]),k=j((T)=>{let ce=T.target;if(ce&&ce!==T.currentTarget&&ce.closest('input, textarea, [contenteditable="true"]'))return;let pe=iN[T.key];if(pe){T.preventDefault();let me=sN(e,pe,F.value.values());if(!me)return;mo(me.id),requestAnimationFrame(()=>{document.querySelector(`.canvas-node[data-node-id="${CSS.escape(me.id)}"]`)?.focus()})}else if(T.key==="Enter"&&T.target===T.currentTarget&&ms.has(e.type))T.preventDefault(),kn(e.id)},[e]),z=e.data.title||(e.type==="file"?(e.data.path||e.data.content||"").split(/[\\/]/).pop()??"":"")||Nt[e.type],X=j((T)=>{let ce=T.trim();if(ce&&ce!==z)fe(e.id,{title:ce}),kt(e.id,{title:ce});m(!1)},[e.id,z]),W=L(null),J=L(!1),G=L(null);H(()=>{if(J.current||!Ip(e))return;let T=W.current;if(!T)return;let ce=new ResizeObserver(()=>{if(J.current){ce.disconnect();return}let pe=T.scrollHeight,me=Kw(e,pe);if(me===null)return;if(Math.abs(me-e.size.height)>8){if(Cc(e.id,{width:e.size.width,height:me}),G.current!==null)window.clearTimeout(G.current);G.current=window.setTimeout(()=>{Tt({recordHistory:!1}),G.current=null},0)}J.current=!0,ce.disconnect()});return ce.observe(T),()=>{if(ce.disconnect(),G.current!==null)window.clearTimeout(G.current),G.current=null}},[e.id,e.type,e.data.mode,e.data.strictSize,e.collapsed,e.size.width,e.size.height]);let S=e.pinned,q=e.type==="trace",ie=q&&e.data.status==="running",ye=e.type==="group",ue=e.data.strictSize===!0,Pe=Math.max(oe.value.scale,0.01),ke=uN(Pe,e.collapsed?0:e.size.height,e.size.width),Me=ye&&e.data.color?e.data.color:void 0,cn={left:`${e.position.x}px`,top:`${e.position.y}px`,width:`${e.size.width}px`,height:e.collapsed?"auto":`${e.size.height}px`,zIndex:e.zIndex,"--node-chrome-scale":ke.toFixed(3),"--node-port-scale":(1/Pe).toFixed(3),...Me?{"--group-color":Me}:{}},Pn=_t.value&&Ll.value.has(e.id),D=["canvas-node",o?"active":"",c?"neighbor":"",u?"search-match":"",p?"search-dimmed":"",r?"selected":"",s?"context-pinned":"",a?"attention-pulse":"",S?"pinned":"",q?"trace-node":"",ie?"trace-running":"",ye?"group-node":"",ue?"strict-size":"",Pn?"agent-mutating":"",nr.value&&!nr.value.has(e.id)?"lens-dimmed":""].filter(Boolean).join(" "),Y=ye?(Array.isArray(e.data.children)?e.data.children:[]).filter((T)=>typeof T==="string"&&F.value.has(T)):[],[Te,de]=A(!1),be=Xn.value,se=ye&&be?.groupId===e.id&&be.mode==="add",re=ye&&be?.groupId===e.id&&be.mode==="remove",Z=Ye.value?.targetId===e.id,xe=ye?[...new Set(Y.map((T)=>F.value.get(T)?.type).filter((T)=>!!T))].slice(0,4):[];if(ye&&e.collapsed)return i("div",{class:`${D} group-chip`,"data-node-type":e.type,style:{...cn,width:"auto",height:"auto"},onPointerDown:N,onDblClick:w,title:"Expand group","data-testid":"group-chip",children:i("div",{class:"node-titlebar group-chip-inner",onPointerDown:_,children:[i("button",{type:"button",class:"group-chip-expand","aria-label":`Expand group ${z}`,onClick:(T)=>{T.stopPropagation(),Ss(e.id)},children:i(ks,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("div",{class:"group-chip-text",children:[i("div",{class:"group-chip-name",children:z},void 0,!1,void 0,this),i("div",{class:"group-chip-meta",children:[xe.map((T)=>i("span",{class:"group-kind-dot","aria-hidden":"true"},T,!1,void 0,this)),i("span",{class:"group-chip-count",children:[Y.length," node",Y.length===1?"":"s"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this);return i("div",{class:`${D}${se?" is-drop-target":""}${re?" is-drop-source":""}${Z?" is-edge-target":""}${ye&&Te?" group-menu-open":""}`,"data-node-type":e.type,"data-node-id":e.id,style:cn,tabIndex:o?0:-1,onKeyDown:k,onPointerDown:N,onMouseDown:(T)=>{if(T.shiftKey)T.preventDefault()},onDblClick:w,children:[i("div",{class:"node-content",children:[ye&&i("div",{class:"node-titlebar group-edge-row",onPointerDown:_,children:[i("span",{class:"group-name-pill",children:[d?i("input",{ref:f,class:"node-title-input group-title-input",value:z,onBlur:(T)=>X(T.target.value),onKeyDown:(T)=>{if(T.key==="Enter")X(T.target.value);if(T.key==="Escape")m(!1)},onClick:(T)=>T.stopPropagation()},void 0,!1,void 0,this):i("span",{class:"group-name",title:z,children:z},void 0,!1,void 0,this),i("span",{class:"group-count",children:Y.length},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("span",{class:"group-edge-spacer"},void 0,!1,void 0,this),i("span",{class:"group-actions",role:"toolbar","aria-label":`${z} actions`,children:[i("button",{type:"button",class:"group-action",title:"Auto-arrange children","aria-label":"Auto-arrange children",disabled:Y.length===0,onClick:(T)=>{T.stopPropagation(),$d(e.id,Y,"grid")},children:i("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","aria-hidden":"true",children:[i("rect",{x:"1.5",y:"1.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),i("rect",{x:"9.5",y:"1.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),i("rect",{x:"1.5",y:"9.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),i("rect",{x:"9.5",y:"9.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),i("button",{type:"button",class:"group-action",title:"Collapse group","aria-label":"Collapse group",onClick:(T)=>{T.stopPropagation(),Ss(e.id)},children:i("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:i("path",{d:"M3 10 L8 5 L13 10"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("button",{type:"button",class:"group-action",title:"Rename · Ungroup · Pin all to context","aria-label":"Group menu","aria-expanded":Te,onClick:(T)=>{T.stopPropagation(),de((ce)=>!ce)},children:i(qd,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this),Te&&i("div",{class:"group-menu",role:"menu",onPointerDown:(T)=>T.stopPropagation(),children:[i("button",{type:"button",role:"menuitem",onClick:(T)=>{T.stopPropagation(),de(!1),m(!0),requestAnimationFrame(()=>f.current?.focus())},children:"Rename"},void 0,!1,void 0,this),i("button",{type:"button",role:"menuitem",onClick:(T)=>{T.stopPropagation(),de(!1),Do(e.id),si(e.id)},children:"Ungroup"},void 0,!1,void 0,this),i("button",{type:"button",role:"menuitem",disabled:Y.length===0,onClick:(T)=>{T.stopPropagation(),de(!1),Sc(Y)},children:"Pin all to context"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!ye&&i("div",{class:"node-titlebar",onPointerDown:_,children:[i("span",{class:"node-type-icon","aria-hidden":"true",children:(()=>{let T=Bn(e.type);return i(T,{size:Math.round(14*ke)},void 0,!1,void 0,this)})()},void 0,!1,void 0,this),typeof e.data.axWorkStatus==="string"&&i("span",{class:`node-ax-status node-ax-status-${e.data.axWorkStatus}`,children:e.data.axWorkStatus},void 0,!1,void 0,this),d?i("input",{ref:f,class:"node-title-input",value:z,onBlur:(T)=>X(T.target.value),onKeyDown:(T)=>{if(T.key==="Enter")X(T.target.value);if(T.key==="Escape")m(!1)},onClick:(T)=>T.stopPropagation()},void 0,!1,void 0,this):i("span",{class:"node-title",title:z,children:z},void 0,!1,void 0,this),i(TS,{node:e,pinned:s},void 0,!1,void 0,this),i(SS,{node:e,pinned:s},void 0,!1,void 0,this),i("div",{class:"node-controls",children:[S&&i("span",{class:"pin-indicator",title:"Pinned",children:"⊙"},void 0,!1,void 0,this),ms.has(e.type)&&i("button",{type:"button",onClick:(T)=>{T.stopPropagation(),kn(e.id)},title:"Expand (focus mode)",children:i(ix,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("button",{type:"button",class:`ctx-pin-btn${s?" ctx-pin-active":""}`,onClick:(T)=>{T.stopPropagation(),Jn(e.id)},title:s?"Remove from context":"Add to context","aria-label":s?"Remove from context":"Add to context","aria-pressed":s,children:i("span",{class:"ctx-pin-mark",children:[i($c,{},void 0,!1,void 0,this),s&&kS(e.id)&&i("span",{class:"ctx-pin-agent-dot","aria-hidden":"true"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),i("button",{type:"button",class:"node-hover-control",onClick:(T)=>{T.stopPropagation(),n?.(T,e.id)},title:"More actions","aria-label":"More actions",children:i(qd,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("button",{type:"button",class:"node-hover-control",onClick:(T)=>{T.stopPropagation(),Oo(e.id)},title:"Close",children:i(Ve,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!e.collapsed&&i("div",{ref:W,class:"node-body",children:[t,i(ql,{node:e},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!e.collapsed&&i("div",{class:"node-resize-handle",onPointerDown:(T)=>R(T,e.size.width,e.size.height)},void 0,!1,void 0,this),r&&["tl","tr","bl","br"].map((T)=>i("span",{class:`node-selection-handle is-${T}`,"aria-hidden":"true"},T,!1,void 0,this)),Ar.value.has(e.id)&&i("span",{class:"node-yield-pill","data-testid":"yield-pill",children:[i("span",{class:"node-yield-dot","aria-hidden":"true"},void 0,!1,void 0,this),Ar.value.get(e.id)," took over — agent yielded"]},void 0,!0,void 0,this),!ye&&["top","right","bottom","left"].map((T)=>i("div",{class:`node-port node-port-${T}`,onPointerDown:(ce)=>{if(ce.button!==0)return;ce.stopPropagation(),ce.preventDefault(),ce.currentTarget.setPointerCapture(ce.pointerId);let pe=e.position.x+e.size.width/2,me=e.position.y+e.size.height/2,qt=e.size.width/2,St=e.size.height/2,Gt,yn;switch(T){case"top":Gt=pe,yn=me-St;break;case"bottom":Gt=pe,yn=me+St;break;case"left":Gt=pe-qt,yn=me;break;case"right":Gt=pe+qt,yn=me;break}Ye.value={fromId:e.id,fromX:Gt,fromY:yn,cursorX:Gt,cursorY:yn}}},T,!1,void 0,this))]},void 0,!0,void 0,this)}function Gl({node:e}){let t=typeof e.data.boardId==="string"?e.data.boardId:"",n=rn.value.find((o)=>o.id===t);return i("div",{class:"board-node",children:[i("div",{class:"board-node-content",children:[i("div",{class:"board-node-label",children:"Linked board"},void 0,!1,void 0,this),i("strong",{class:"board-node-title",children:n?.name??"Missing board"},void 0,!1,void 0,this),i("div",{class:"board-node-meta",children:n?`${n.nodeCount} nodes`:t||"No target id"},void 0,!1,void 0,this),n?.summary&&i("p",{class:"board-node-summary",children:n.summary},void 0,!1,void 0,this),!!n?.pinnedTitles?.length&&i("p",{class:"board-node-meta",children:["Pinned: ",n.pinnedTitles.map((o)=>o.title).join(", ")]},void 0,!0,void 0,this),!!n?.backlinks?.length&&i("p",{class:"board-node-meta",children:["Linked from: ",[...new Set(n.backlinks.map((o)=>o.title))].join(", ")]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),i("button",{class:"board-node-open",type:"button",disabled:!n,onClick:()=>n&&void sn(n.id),children:[n?"Open board":"Target unavailable",n&&i(jo,{size:14},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var dN={relation:"var(--c-muted)","depends-on":"var(--c-rel-informs)",flow:"var(--c-accent)",references:"var(--c-muted)"},pN=new Set(["depends-on","flow"]);function mN(e){if(!Number.isFinite(e)||e<=0)return 1;return e<1?1/e:1}function fN(e,t){let n=`${8*t} ${4*t}`;if(e.style==="dashed")return n;if(e.style==="dotted")return`${3*t} ${3*t}`;if(e.type==="references"&&!e.style)return n;return}function Vl(e,t){let n=e.position.x+e.size.width/2,o=e.position.y+e.size.height/2,r=t.position.x+t.size.width/2,s=t.position.y+t.size.height/2,a=r-n,c=s-o,l=e.size.width/2,u=e.size.height/2,p=Math.abs(c/(a||0.001)),d=u/(l||0.001);if(p>d){let f=c>0?1:-1;return{x:n+u/p*(a>0?1:-1),y:o+u*f,side:f>0?"bottom":"top"}}let m=a>0?1:-1;return{x:n+l*m,y:o+p*l*(c>0?1:-1),side:m>0?"right":"left"}}function Xl(e,t){switch(e.side){case"top":return{x:e.x,y:e.y-t};case"bottom":return{x:e.x,y:e.y+t};case"left":return{x:e.x-t,y:e.y};case"right":return{x:e.x+t,y:e.y}}}function hN(e,t,n,o,r,s,a,c){return{x:0.125*e+0.375*n+0.375*r+0.125*a,y:0.125*t+0.375*o+0.375*s+0.125*c}}function gN({edge:e,fromNode:t,toNode:n,focused:o,dimmed:r,selected:s,scale:a,onContextMenu:c}){let l=Vl(t,n),u=Vl(n,t),p=u.x-l.x,d=u.y-l.y,m=Math.sqrt(p*p+d*d),f=Math.min(Math.max(m*0.35,32),160),h=Xl(l,f),v=Xl(u,f),x=`M ${l.x} ${l.y} C ${h.x} ${h.y}, ${v.x} ${v.y}, ${u.x} ${u.y}`,g=dN[e.type],b=pN.has(e.type),I=fN(e,a),R=Math.min(a,2.2),M=e.label&&a<=3.4?hN(l.x,l.y,h.x,h.y,v.x,v.y,u.x,u.y):null,_=`edge-path-${e.id}`;return i("g",{children:[i("path",{d:x,fill:"none",stroke:"transparent","stroke-width":12*a,style:{cursor:"pointer",pointerEvents:"stroke"},onClick:(N)=>{N.stopPropagation(),Kn.value=e.id},onDblClick:c?(N)=>c(N,e.id):void 0},void 0,!1,void 0,this),(o||s)&&i("path",{d:x,fill:"none",stroke:g,"stroke-width":6*a,"stroke-dasharray":I,opacity:s?0.3:0.15,style:{filter:"blur(3px)"}},void 0,!1,void 0,this),i("path",{id:_,d:x,class:s?"edge-selected":void 0,fill:"none",stroke:g,"stroke-width":(s?3:o?2.5:1.5)*a,"stroke-dasharray":I,"marker-end":b?"url(#edge-arrow)":void 0,opacity:s?1:r?0.2:o?1:0.85,style:{transition:"opacity 0.2s, stroke-width 0.2s"}},void 0,!1,void 0,this),e.animated&&i("circle",{r:3*a,fill:g,opacity:"0.9",children:i("animateMotion",{dur:"2s",repeatCount:"indefinite",children:i("mpath",{href:`#${_}`},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),M&&e.label&&i("g",{transform:`translate(${M.x}, ${M.y})`,children:[i("rect",{class:"edge-label-bg",x:-(e.label.length*3.5+8)*R,y:-10*R,width:(e.label.length*7+16)*R,height:20*R,rx:4*R},void 0,!1,void 0,this),i("text",{class:"edge-label","text-anchor":"middle","dominant-baseline":"central",fill:"var(--c-text)",children:e.label},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function jS({nodes:e,edges:t,onEdgeContextMenu:n}){let o=e.value,r=Array.from(t.value.values()),s=je.value,a=s!==null,c=uo.value,l=c!==null,u=mN(oe.value.scale);if(r.length===0&&!Ye.value)return null;let p=96,d=Array.from(o.values());if(d.length===0)return null;let m=Math.min(...d.map((b)=>b.position.x))-p,f=Math.min(...d.map((b)=>b.position.y))-p,h=Math.max(...d.map((b)=>b.position.x+b.size.width))+p,v=Math.max(...d.map((b)=>b.position.y+b.size.height))+p,x=Math.max(1,h-m),g=Math.max(1,v-f);return i("svg",{"aria-label":"Canvas connections",role:"img",viewBox:`${m} ${f} ${x} ${g}`,width:x,height:g,style:{position:"absolute",top:`${f}px`,left:`${m}px`,pointerEvents:"none",overflow:"visible","--edge-chrome-scale":u.toFixed(3),"--edge-label-scale":Math.min(u,2.2).toFixed(3)},children:[i("title",{children:"Canvas connections"},void 0,!1,void 0,this),i("defs",{children:i("marker",{id:"edge-arrow",viewBox:"0 0 10 10",refX:"9",refY:"5",markerUnits:"userSpaceOnUse",markerWidth:8*Math.min(u,2.2),markerHeight:8*Math.min(u,2.2),orient:"auto-start-reverse",children:i("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),r.map((b)=>{let I=_c(b.from),R=_c(b.to);if(!I||!R||I.id===R.id)return null;let M=a&&(b.from===s||b.to===s),_=l&&!(c.has(b.from)||c.has(b.to));return i(gN,{edge:b,fromNode:I,toNode:R,focused:M,dimmed:a&&!M||_,selected:Kn.value===b.id,scale:u,onContextMenu:n},b.id,!1,void 0,this)}),Ye.value&&(()=>{let b=Ye.value,I=_c(b.fromId),R={position:{x:b.cursorX,y:b.cursorY},size:{width:1,height:1}},M;if(I){let _=Vl(I,R),N=Vl(R,I),w=N.x-_.x,k=N.y-_.y,z=Math.sqrt(w*w+k*k),X=Math.min(Math.max(z*0.35,32),160),W=Xl(_,X),J=Xl(N,X);M=`M ${_.x} ${_.y} C ${W.x} ${W.y}, ${J.x} ${J.y}, ${N.x} ${N.y}`}else{let _=b.cursorX-b.fromX,N=b.cursorY-b.fromY,w=Math.sqrt(_*_+N*N),k=Math.min(w*0.25,80),z=_/(w||1),X=N/(w||1);M=`M ${b.fromX} ${b.fromY} C ${b.fromX+z*k} ${b.fromY+X*k}, ${b.cursorX-z*k} ${b.cursorY-X*k}, ${b.cursorX} ${b.cursorY}`}return i("g",{children:[i("path",{d:M,fill:"none",stroke:"var(--c-accent)","stroke-width":6*u,opacity:"0.1",style:{filter:"blur(3px)"}},void 0,!1,void 0,this),i("path",{d:M,fill:"none",stroke:"var(--c-accent)","stroke-width":2*u,"stroke-dasharray":`${6*u} ${4*u}`,opacity:"0.8"},void 0,!1,void 0,this),i("circle",{cx:b.cursorX,cy:b.cursorY,r:5*u,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 vN(e){let[t,...n]=e;if(!t)return"";return n.reduce((o,r)=>`${o} L ${r.x} ${r.y}`,`M ${t.x} ${t.y}`)}function Am({annotations:e}){if(e.length===0)return null;return i("svg",{class:"annotation-layer","aria-hidden":"true",children:e.map((t)=>{let n=t.color==="currentColor"?"var(--c-annotation)":t.color;if(t.type==="text"){let o=t.points[0];if(!o||!t.text)return null;return i("text",{x:o.x,y:o.y,fill:n,"font-size":t.width,"font-family":"var(--font-ui)","font-weight":"700",opacity:"0.95",children:t.text},t.id,!1,void 0,this)}return i("path",{d:vN(t.points),fill:"none",stroke:n,"stroke-width":t.width,"stroke-linecap":"round","stroke-linejoin":"round",opacity:"0.9"},t.id,!1,void 0,this)})},void 0,!1,void 0,this)}function yN(e){switch(e.type){case"markdown":return i(Vc,{node:e},void 0,!1,void 0,this);case"mcp-app":return i(Ko,{node:e},void 0,!1,void 0,this);case"webpage":return i(Nl,{node:e},void 0,!1,void 0,this);case"json-render":return i(Ko,{node:e},void 0,!1,void 0,this);case"graph":return i(Ko,{node:e},void 0,!1,void 0,this);case"board":return i(Gl,{node:e},void 0,!1,void 0,this);case"prompt":return i(zl,{node:e},void 0,!1,void 0,this);case"response":return i(Rl,{node:e},void 0,!1,void 0,this);case"status":return i(Il,{node:e},void 0,!1,void 0,this);case"context":return i(Lc,{node:e},void 0,!1,void 0,this);case"ledger":return i(Hc,{node:e},void 0,!1,void 0,this);case"trace":return i(Ml,{node:e},void 0,!1,void 0,this);case"file":return i(Bc,{node:e},void 0,!1,void 0,this);case"diff":return i(Dc,{node:e},void 0,!1,void 0,this);case"mermaid":return i(ll,{node:e},void 0,!1,void 0,this);case"image":return i(Pl,{node:e},void 0,!1,void 0,this);case"html":return i(Ks,{node:e},void 0,!1,void 0,this);case"group":return i(D_,{node:e},void 0,!1,void 0,this);default:return i("div",{children:"Unknown node type"},void 0,!1,void 0,this)}}function bN(e,t,n){let o=n.x-t.x,r=n.y-t.y,s=o*o+r*r;if(s===0)return Math.hypot(e.x-t.x,e.y-t.y);let a=Math.max(0,Math.min(1,((e.x-t.x)*o+(e.y-t.y)*r)/s));return Math.hypot(e.x-(t.x+a*o),e.y-(t.y+a*r))}function xN(e,t,n){for(let o=e.length-1;o>=0;o--){let r=e[o];if(!r)continue;let s=n+r.width;if(t.x<r.bounds.x-s||t.x>r.bounds.x+r.bounds.width+s||t.y<r.bounds.y-s||t.y>r.bounds.y+r.bounds.height+s)continue;if(r.type==="text")return r;for(let a=1;a<r.points.length;a++){let c=r.points[a-1],l=r.points[a];if(c&&l&&bN(t,c,l)<=n+r.width/2)return r}}return null}var Im="currentColor",US=4,ZS=24,wN=14,WS={width:520,height:420};function _N(e){let t=e.trim();if(!t||/\s/.test(t))return null;let n=/^[a-z][a-z0-9+.-]*:/i.test(t)?t:`https://${t}`;try{let o=new URL(n);if(o.protocol!=="http:"&&o.protocol!=="https:")return null;return o.toString()}catch{return null}}function Nm(e){let t=e.trim();if(!t)return[];let n=t.includes(`
|
|
331
|
-
`)?t.split(/\r?\n/):t.split(/\s+/),o=new Set,r=[];for(let s of n){let a=s.trim();if(!a||a.startsWith("#"))continue;let c=_N(a);if(!c||o.has(c))continue;o.add(c),r.push(c)}return r}function SN(e){let t=Nm(e.getData("text/uri-list"));if(t.length>0)return t;return Nm(e.getData("text/plain"))}function kN(e){if(!e)return!1;return e.types.includes("text/uri-list")||e.types.includes("text/plain")}function Pm(e){if(!(e instanceof HTMLElement))return!1;return Boolean(e.closest('input, textarea, select, [contenteditable="true"], [contenteditable=""]'))}function TN(e,t,n=new Set){let o=[],r=0;for(let s of e){if(n.has(s.id))continue;if(t&&s.id===t)continue;if(s.type==="group")o.splice(r++,0,s);else o.push(s)}return o}function qS({onNodeContextMenu:e,onEdgeContextMenu:t,onCanvasContextMenu:n,annotationMode:o=!1,annotationTool:r=null}){let s=oe.value,a=L(!1),c=L(null),l=L(!1),u=L([]),[p,d]=A(null),[m,f]=A(null),[h,v]=A(null),x=L(null),[g,b]=A(!1),I=L(0),R=L(null),M=L(null);H(()=>{let D=null,Y=nn(()=>{oe.value;let Te=M.current;if(!Te)return;if(Te.style.willChange="transform",D)clearTimeout(D);D=setTimeout(()=>{Te.style.willChange="auto"},180)});return()=>{if(D)clearTimeout(D);Y()}},[]);let _=Ic({viewport:oe,disabled:o,onViewportChange:(D)=>{if(a.current||o)return;fo(),Wb(D)},onViewportCommit:(D)=>{if(a.current||o)return;fo(),Gb(D)}}),N=j((D)=>{x.current=D,v(D)},[]),w=j(async(D,Y,Te)=>{if(D.length===0)return;let{width:de,height:be}=WS,se=24,re=Math.ceil(Math.sqrt(D.length)),Z=Math.ceil(D.length/re),xe=re*de+Math.max(0,re-1)*se,T=Z*be+Math.max(0,Z-1)*se;for(let ce=0;ce<D.length;ce++){let pe=ce%re,me=Math.floor(ce/re),qt=Y-xe/2+pe*(de+se),St=Te-T/2+me*(be+se);await On({type:"webpage",content:D[ce],x:qt,y:St,width:de,height:be})}},[]),k=j((D)=>{let Y=_.current;if(!Y)return;if(r==="eraser"){if((D.target instanceof Element?D.target:null)?.closest(".tool-rail, .top-bar, .snapshot-panel, .context-menu, .command-palette"))return;D.preventDefault(),D.stopPropagation();let Z=Y.getBoundingClientRect(),xe=oe.value,T={x:(D.clientX-Z.left-xe.x)/xe.scale,y:(D.clientY-Z.top-xe.y)/xe.scale},ce=xN(Array.from(ci.value.values()),T,wN/xe.scale);if(ce)Zb(ce.id);return}if(r==="text"){if((D.target instanceof Element?D.target:null)?.closest(".tool-rail, .top-bar, .snapshot-panel, .context-menu, .command-palette"))return;D.preventDefault(),D.stopPropagation(),je.value=null,Ut();let Z=Y.getBoundingClientRect(),xe=oe.value;N({x:(D.clientX-Z.left-xe.x)/xe.scale,y:(D.clientY-Z.top-xe.y)/xe.scale,value:""});return}if(r==="pen"){if((D.target instanceof Element?D.target:null)?.closest(".tool-rail, .top-bar, .snapshot-panel, .context-menu, .command-palette"))return;D.preventDefault(),D.stopPropagation(),je.value=null,Ut(),l.current=!0;let Z=Y.getBoundingClientRect(),xe=oe.value,T={x:(D.clientX-Z.left-xe.x)/xe.scale,y:(D.clientY-Z.top-xe.y)/xe.scale};u.current=[T],f({id:"draft-annotation",type:"freehand",points:[T],bounds:{x:0,y:0,width:0,height:0},color:Im,width:US,createdAt:""}),Y.setPointerCapture(D.pointerId);return}if(D.target!==Y)return;if(ui()||D.button===1||D.button===2){if(!D.shiftKey&&!R.current)je.value=null,Ut();return}D.preventDefault(),D.stopPropagation(),a.current=!0;let Te=Y.getBoundingClientRect(),de=D.clientX-Te.left,be=D.clientY-Te.top,se={startX:de,startY:be,currentX:de,currentY:be};R.current=se,d(se),Y.setPointerCapture(D.pointerId)},[r,_]);H(()=>nn(()=>{let D=oe.value,Y=c.current,Te=_.current;if(!Y||!Te)return;let de=Te.getBoundingClientRect();sl({x:(Y.x-de.left-D.x)/D.scale,y:(Y.y-de.top-D.y)/D.scale})}),[]);let z=j((D)=>{{let de=_.current;if(de){c.current={x:D.clientX,y:D.clientY};let be=de.getBoundingClientRect(),se=oe.value;sl({x:(D.clientX-be.left-se.x)/se.scale,y:(D.clientY-be.top-se.y)/se.scale})}}if(l.current){let de=_.current;if(!de)return;let be=de.getBoundingClientRect(),se=oe.value,re={x:(D.clientX-be.left-se.x)/se.scale,y:(D.clientY-be.top-se.y)/se.scale},Z=u.current.at(-1);if(Z&&Math.hypot(re.x-Z.x,re.y-Z.y)<2)return;u.current=[...u.current,re],f((xe)=>xe?{...xe,points:u.current}:null);return}if(!a.current||!R.current)return;let Y=_.current?.getBoundingClientRect();if(!Y)return;let Te={...R.current,currentX:D.clientX-Y.left,currentY:D.clientY-Y.top};R.current=Te,d(Te)},[_]),X=j((D)=>{if(l.current){l.current=!1;let re=u.current;if(u.current=[],f(null),re.length>=2)jd({points:re,color:Im,width:US});let Z=_.current;if(Z?.hasPointerCapture(D.pointerId))Z.releasePointerCapture(D.pointerId);return}let Y=R.current;if(!a.current||!Y)return;a.current=!1,R.current=null;let Te=Math.min(Y.startX,Y.currentX),de=Math.max(Y.startX,Y.currentX),be=Math.min(Y.startY,Y.currentY),se=Math.max(Y.startY,Y.currentY);if(de-Te<=5&&se-be<=5)je.value=null,Ut();if(de-Te>5||se-be>5){let re=oe.value,Z=(Te-re.x)/re.scale,xe=(de-re.x)/re.scale,T=(be-re.y)/re.scale,ce=(se-re.y)/re.scale,pe=[];for(let me of F.value.values()){let qt=me.position.x,St=me.position.y;if(qt+me.size.width>Z&&qt<xe&&St+me.size.height>T&&St<ce)pe.push(me.id)}if(pe.length>0)Rb(pe)}d(null)},[]);H(()=>{if(o)return;if(!l.current&&!m&&!h)return;l.current=!1,u.current=[],f(null),N(null)},[o,m,N,h]);let W=j(()=>{let D=x.current;if(!D)return;let Y=D.value.trim();if(N(null),!Y)return;let Te={x:D.x,y:D.y};jd({type:"text",points:[Te],color:Im,width:ZS,text:Y})},[N]);H(()=>{if(r!=="text"&&h)N(null)},[r,N,h]),H(()=>{let D=(se,re,Z)=>{let xe=null;for(let T of F.value.values()){if(T.id===Z||T.type==="group")continue;if(se>=T.position.x&&se<=T.position.x+T.size.width&&re>=T.position.y&&re<=T.position.y+T.size.height)xe=T.id}return xe};function Y(se){if(!Ye.value)return;let re=_.current;if(!re)return;let Z=re.getBoundingClientRect(),xe=oe.value,T=(se.clientX-Z.left-xe.x)/xe.scale,ce=(se.clientY-Z.top-xe.y)/xe.scale;Ye.value={...Ye.value,cursorX:T,cursorY:ce,targetId:D(T,ce,Ye.value.fromId)}}function Te(){let se=Ye.value;if(!se)return;Ye.value=null;let re=se.targetId;if(!re)return;if(se.withLabel){hn("Edge label","label text").then((Z)=>{xr(se.fromId,re,"relation",Z??void 0)});return}xr(se.fromId,re,"relation",void 0)}function de(se){let re=Ye.value;if(!re)return;if(se.key==="Escape")se.preventDefault(),Ye.value=null;else if(se.key==="l"||se.key==="L")se.preventDefault(),Ye.value={...re,withLabel:!re.withLabel}}function be(){Ye.value=null}return document.addEventListener("pointermove",Y),document.addEventListener("pointerup",Te),document.addEventListener("pointercancel",be),document.addEventListener("keydown",de),()=>{document.removeEventListener("pointermove",Y),document.removeEventListener("pointerup",Te),document.removeEventListener("pointercancel",be),document.removeEventListener("keydown",de)}},[_]);let J=j((D)=>{if(o)return;let Y=_.current;if(!Y||D.target!==Y||!n)return;let Te=Y.getBoundingClientRect(),de=oe.value,be=(D.clientX-Te.left-de.x)/de.scale,se=(D.clientY-Te.top-de.y)/de.scale;n(D,be,se)},[o,_,n]),G=j((D)=>{D.preventDefault()},[]),S=j((D)=>{if(Pm(D.target instanceof Element?D.target:null))return;D.preventDefault()},[]),q=j((D)=>{if(D.preventDefault(),I.current++,D.dataTransfer?.types.includes("Files")||kN(D.dataTransfer))b(!0)},[]),ie=j((D)=>{if(D.preventDefault(),D.dataTransfer)D.dataTransfer.dropEffect="copy"},[]),ye=j((D)=>{if(D.preventDefault(),I.current--,I.current<=0)I.current=0,b(!1)},[]),ue=j(async(D)=>{D.preventDefault(),b(!1),I.current=0;let Y=_.current;if(!Y||!D.dataTransfer)return;let Te=Y.getBoundingClientRect(),de=oe.value,be=(D.clientX-Te.left-de.x)/de.scale,se=(D.clientY-Te.top-de.y)/de.scale,re=Array.from(D.dataTransfer.files);if(re.length===0){let Z=SN(D.dataTransfer);await w(Z,be,se);return}await $i(re,be,se)},[_,w]);H(()=>{let D=async(Y)=>{if(Y.defaultPrevented)return;if(Pm(Y.target instanceof Element?Y.target:null))return;if(Pm(document.activeElement))return;let Te=Y.clipboardData?.getData("text/plain")??"",de=Nm(Te);if(de.length===0)return;let be=_.current;if(!be)return;Y.preventDefault();let se=be.getBoundingClientRect(),re=oe.value,Z=(se.width/2-re.x)/re.scale,xe=(se.height/2-re.y)/re.scale;await w(de,Z,xe)};return document.addEventListener("paste",D),()=>{document.removeEventListener("paste",D)}},[_,w]);let Pe=TN(F.value.values(),ot.value,new Set(Fd.value.keys())),ke=Xn.value,Me=ke?F.value.get(ke.groupId):void 0,cn=ke?F.value.get(ke.nodeId):void 0,Pn=null;if(p){let D=Math.min(p.startX,p.currentX),Y=Math.min(p.startY,p.currentY),Te=Math.abs(p.currentX-p.startX),de=Math.abs(p.currentY-p.startY);Pn={position:"absolute",left:`${D}px`,top:`${Y}px`,width:`${Te}px`,height:`${de}px`,pointerEvents:"none"}}return i("div",{class:`canvas-viewport${ui()?" pan-mode":""}`,ref:_,tabIndex:0,onPointerDown:k,onPointerMove:z,onPointerLeave:()=>{c.current=null,sl(null)},onPointerUp:X,onContextMenu:G,onDblClick:J,onDragStart:S,onDragEnter:q,onDragOver:ie,onDragLeave:ye,onDrop:ue,style:{width:"100%",height:"100%",position:"relative",overflow:"hidden",cursor:r==="eraser"?"cell":r==="text"?"text":o||Ye.value||a.current||Qt.value==="connect"?"crosshair":ui()?"grab":"default"},children:[i("div",{ref:M,class:"canvas-world",style:{transform:`matrix(${s.scale}, 0, 0, ${s.scale}, ${s.x}, ${s.y})`,transformOrigin:"0 0",position:"absolute",top:0,left:0},children:[i(gS,{},void 0,!1,void 0,this),i(K_,{},void 0,!1,void 0,this),i(oS,{},void 0,!1,void 0,this),i(rS,{},void 0,!1,void 0,this),i(jS,{nodes:F,edges:Je,onEdgeContextMenu:t},void 0,!1,void 0,this),Ye.value&&i("div",{class:"edge-hint-pill","data-testid":"edge-hint",style:{left:`${Ye.value.cursorX+14}px`,top:`${Ye.value.cursorY+14}px`},children:[i("span",{class:"edge-hint-main",children:Ye.value.targetId?"release to connect":"drag onto a node"},void 0,!1,void 0,this),i("span",{class:"edge-hint-keys",children:["esc cancels · L labels",Ye.value.withLabel?" · label on":""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ke&&Me&&cn&&i("div",{class:"drop-pill","data-testid":"drop-pill",style:{left:`${cn.position.x}px`,top:`${cn.position.y+cn.size.height+10}px`},children:[i("span",{class:"drop-pill-text",children:ke.mode==="add"?`release to add to ${String(Me.data.title??"group")}`:`release to remove from ${String(Me.data.title??"group")}`},void 0,!1,void 0,this),i("span",{class:"drop-pill-hint",children:ke.mode==="add"?"esc keeps it out":"esc keeps it in"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i(Am,{annotations:Array.from(ci.value.values())},void 0,!1,void 0,this),m&&m.points.length>=2&&i(Am,{annotations:[m]},void 0,!1,void 0,this),Pe.map((D)=>i(HS,{node:D,onContextMenu:e,children:yN(D)},D.id,!1,void 0,this)),Or.value&&i("svg",{class:"snap-guides-svg",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",pointerEvents:"none",overflow:"visible"},children:Or.value.map((D,Y)=>D.axis==="x"?i("line",{x1:D.pos,y1:D.from-20,x2:D.pos,y2:D.to+20,class:"snap-guide-line"},Y,!1,void 0,this):i("line",{x1:D.from-20,y1:D.pos,x2:D.to+20,y2:D.pos,class:"snap-guide-line"},Y,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),o&&i("div",{class:`annotation-capture-layer${r==="eraser"?" erasing":""}${r==="text"?" text":""}`,"aria-hidden":"true"},void 0,!1,void 0,this),h&&i("input",{class:"annotation-text-input",value:h.value,autoFocus:!0,style:{left:`${h.x*s.scale+s.x}px`,top:`${h.y*s.scale+s.y}px`,fontSize:`${ZS*s.scale}px`},onInput:(D)=>N({...h,value:D.target.value}),onBlur:W,onPointerDown:(D)=>D.stopPropagation(),onKeyDown:(D)=>{if(D.key==="Enter")D.preventDefault(),W();if(D.key==="Escape")D.preventDefault(),N(null)}},void 0,!1,void 0,this),Pn&&i("div",{class:"lasso-rect",style:Pn},void 0,!1,void 0,this),g&&i("div",{class:"drop-zone-overlay",children:i("div",{class:"drop-zone-indicator",children:[i("div",{class:"drop-zone-icon",children:"+"},void 0,!1,void 0,this),i("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 Kl({label:e,value:t,options:n,onChange:o,className:r="",above:s=!1}){let[a,c]=A(!1),l=L(null),u=L(null),p=L(null),d=()=>{c(!1),u.current?.focus()};return _n(()=>{if(!a)return;(p.current?.querySelector('[aria-checked="true"]:not(:disabled)')??p.current?.querySelector("button:not(:disabled)"))?.focus();let f=(h)=>{if(h.target instanceof Node&&!l.current?.contains(h.target))c(!1)};return document.addEventListener("pointerdown",f),()=>document.removeEventListener("pointerdown",f)},[a]),i("div",{ref:l,class:`choice-menu ${r}`,onBlur:(m)=>{if(m.relatedTarget instanceof Node&&!l.current?.contains(m.relatedTarget))c(!1)},onKeyDown:(m)=>{if(m.key!=="Tab"&&(m.key!=="Escape"||a))m.stopPropagation();if(m.key==="Escape"&&a)m.preventDefault(),m.stopPropagation(),d();if(["ArrowDown","ArrowUp","Home","End"].includes(m.key)){if(m.preventDefault(),m.stopPropagation(),!a){c(!0);return}let f=[...p.current?.querySelectorAll("button:not(:disabled)")??[]];if(!f.length)return;let h=f.findIndex((x)=>x===document.activeElement),v=m.key==="Home"?0:m.key==="End"?f.length-1:(h+(m.key==="ArrowUp"?-1:1)+f.length)%f.length;f[v]?.focus()}},children:[i("button",{ref:u,type:"button",class:"choice-menu-trigger","aria-label":e,"aria-haspopup":"menu","aria-expanded":a,onClick:()=>c(!a),children:[i("span",{children:n.find((m)=>m.value===t)?.label??e},void 0,!1,void 0,this),i(Nc,{size:14},void 0,!1,void 0,this)]},void 0,!0,void 0,this),a&&i("div",{ref:p,role:"menu","aria-label":e,class:`toolbar-menu choice-menu-options${s?" opens-above":""}`,children:n.map((m)=>i("button",{type:"button",role:"menuitemradio",class:`toolbar-menu-item${m.value===t?" active":""}`,"aria-checked":m.value===t,disabled:m.disabled,tabIndex:-1,"data-value":m.value,onClick:()=>{o(m.value),d()},children:[i("span",{children:m.label},void 0,!1,void 0,this),m.value===t&&i("span",{class:"toolbar-menu-check","aria-hidden":"true",children:"✓"},void 0,!1,void 0,this)]},m.value,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function GS(){let e=[...Le.value],t=F.value,[n,o]=A(""),[r,s]=A(!1),a=tS.value,[c,l]=A(null),u=a.length>=2,p=!u&&a.length===1&&a[0].steerable?a[0]:null,d=u?c?a.find((h)=>h.value===c&&h.steerable)??null:null:p,m=d?.value??null,f=async()=>{let h=n.trim();if(!h||r)return;s(!0);let v=await fS(h,m);if(s(!1),v)o("")};return i("div",{class:"command-bar","data-testid":"command-bar",children:[e.length>0&&i("div",{class:"command-bar-chips","aria-label":"Pinned context",children:[e.map((h)=>{let v=t.get(h),x=typeof v?.data.title==="string"&&v.data.title.trim()?v.data.title:v?.type??h;return i("span",{class:"command-bar-chip","data-node-id":h,children:[i("span",{class:"command-bar-chip-glyph","aria-hidden":"true",children:"✦"},void 0,!1,void 0,this),i("span",{class:"command-bar-chip-label",title:x,children:x},void 0,!1,void 0,this),i("button",{type:"button",class:"command-bar-chip-unpin","aria-label":`Unpin ${x}`,title:"Remove from context",onClick:()=>Jn(h),children:i(Ve,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},h,!0,void 0,this)}),i("span",{class:"command-bar-chips-note",children:"in agent context"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"command-bar-composer",children:[i(fi,{size:15,class:"command-bar-icon"},void 0,!1,void 0,this),u&&i(Kl,{className:"command-bar-target",label:"Steer which agent",value:m??"",above:!0,onChange:(h)=>l(h||null),options:[{value:"",label:"All agents"},...a.map((h)=>{let v=h.pendingSteers&&h.pendingSteers>0?` · ${h.pendingSteers} queued`:"",x=h.polling?" · polling":"";return{value:h.value,disabled:!h.steerable,label:h.attached?`${h.label}${x}${v}`:h.steerable?`${h.label} · writer${x}${v}`:`${h.label} · no inbox`}})]},void 0,!1,void 0,this),i("input",{class:"command-bar-input",type:"text",value:n,placeholder:`Steer ${d?.label??"the agent"}, or ${rt("K")} to search the board…`,"aria-label":"Steer the agent",disabled:r,onInput:(h)=>o(h.target.value),onKeyDown:(h)=>{if(h.key==="Enter")h.preventDefault(),f()}},void 0,!1,void 0,this),i("button",{type:"button",class:"command-bar-send",disabled:r||!n.trim(),onClick:()=>void f(),children:r?"Sending…":"Send"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var zm=Ge(()=>{if(fn.value==="disconnected")return"reconnecting";if(fn.value==="connected"&&!Yt.value&&_r.value>1)return"resyncing";return null});function VS(){let e=zm.value;if(!e)return null;if(e==="reconnecting"){let t=Sr.value,n=kr.value;return i("div",{class:"connection-banner is-reconnecting",role:"status","data-testid":"connection-banner",children:[i("span",{class:"connection-banner-glyph","aria-hidden":"true",children:"↻"},void 0,!1,void 0,this),i("span",{class:"connection-banner-text",children:[i("b",{children:"Reconnecting…"},void 0,!1,void 0,this)," live updates are paused; edits still save, the board may be stale until the stream returns."]},void 0,!0,void 0,this),i("span",{class:"connection-banner-meta",children:[t>0?`retry ${t}`:"retrying",n>0?` · ${Math.max(1,Math.round(n/1000))}s`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}return i("div",{class:"connection-banner is-resyncing",role:"status","data-testid":"connection-banner",children:[i("span",{class:"connection-banner-glyph","aria-hidden":"true",children:"⟳"},void 0,!1,void 0,this),i("span",{class:"connection-banner-text",children:[i("b",{children:"Resyncing from snapshot"},void 0,!1,void 0,this)," — the event cursor went stale; the board reloads without losing local edits."]},void 0,!0,void 0,this),i("span",{class:"connection-banner-progress","aria-hidden":"true",children:i("span",{class:"connection-banner-progress-fill"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var CN={markdown:{width:520,height:360},group:{width:600,height:400},html:{width:720,height:640},image:{width:720,height:520},file:{width:720,height:600},webpage:{width:520,height:420}};async function In(e){if(e.x!==void 0&&e.y!==void 0)return On(e);let t=CN[e.type]??{width:360,height:200},n=e.width??t.width,o=e.height??t.height,r=Ro(),s=oe.value,a=await On({...e,width:n,height:o,x:Math.round((r.x-s.x)/s.scale-n/2),y:Math.round((r.y-s.y)/s.scale-o/2)});if(a.ok&&a.id)pt(a.id);return a}var Jl=!1,XS=!1,Lr=null,ji=null;function Rm(){return Jl}function Yl(){Jl=!1,XS=!0,KS()}function KS(){if(Lr&&ji)Lr.removeEventListener("change",ji);Lr=null,ji=null}function EN(){if(typeof window>"u"||!window.location)return null;let e=new URLSearchParams(window.location.search).get("theme");if(e==="auto")return"auto";return Ls(e)?e:null}function JS(e){if(XS)return;let t=EN();if(!t)return;if(KS(),Jl=!0,t!=="auto"){e(t);return}Lr=window.matchMedia("(prefers-color-scheme: light)"),ji=()=>{if(Jl&&Lr)e(Lr.matches?"daylight":"harbor")},ji(),Lr.addEventListener("change",ji)}var AN='a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';function an(e,t,n={}){H(()=>{if(!t)return;let o=e.current;if(!o)return;let r=document.activeElement,s=n.restoreTo,a=()=>Array.from(o.querySelectorAll(AN)),c=n.initial?.current??a()[0];if(c&&!o.contains(document.activeElement))c.focus();let l=(u)=>{if(u.key!=="Tab")return;let p=a();if(p.length===0)return;let d=p[0],m=p[p.length-1],f=document.activeElement;if(u.shiftKey&&(f===d||!o.contains(f)))u.preventDefault(),m.focus();else if(!u.shiftKey&&f===m)u.preventDefault(),d.focus()};return o.addEventListener("keydown",l),()=>{if(o.removeEventListener("keydown",l),s)requestAnimationFrame(()=>s()?.focus());else if(r&&document.contains(r)&&r!==document.body)r.focus()}},[e,t,n.initial,n.restoreTo])}function IN(e,t){let n=e.toLowerCase(),o=t.toLowerCase(),r=[],s=0,a=0,c=-1;for(let l=0;l<o.length&&s<n.length;l++)if(o[l]===n[s]){if(r.push(l),a+=c===l-1?10:1,l===0||o[l-1]===" "||o[l-1]==="-"||o[l-1]==="_")a+=5;c=l,s++}return{match:s===n.length,score:a,indices:r}}function PN(e,t){if(t.length===0)return e;let n=[],o=0;for(let r of t){if(r>o)n.push(e.slice(o,r));n.push(i("mark",{children:e[r]},r,!1,void 0,this)),o=r+1}if(o<e.length)n.push(e.slice(o));return n}var Mm={md:"markdown",app:"mcp-app",web:"webpage",ui:"json-render",chart:"graph",ctx:"context",log:"ledger"};function NN(e){let t=e.toLowerCase().trim();if(t.startsWith("type:")){let n=t.slice(5).trim(),r=Object.keys(Nt).find((a)=>a.startsWith(n));if(r)return{typeFilter:r,remaining:""};let s=Mm[n];if(s)return{typeFilter:s,remaining:""}}if(Mm[t])return{typeFilter:Mm[t],remaining:""};return{typeFilter:null,remaining:e}}function YS({onClose:e,onToggleMinimap:t}){let[n,o]=A(""),[r,s]=A(0),[a,c]=A([]),[l,u]=A("idle"),p=L(null),d=L(null),m=L(null);an(m,!0,{initial:p}),H(()=>{setTimeout(()=>p.current?.focus(),30)},[]),H(()=>{let _=n.trim();if(_.length<2){c([]),u("idle");return}let N=!0;u("loading");let w=window.setTimeout(()=>void ne("paletteLibrarySearch",`/api/canvas/search?q=${encodeURIComponent(_)}&scope=library&limit=12`,null).then((k)=>{if(!N)return;if(!k){c([]),u("error");return}c(k.results??[]),u("idle")}),150);return()=>{N=!1,window.clearTimeout(w)}},[n]);let f=j(()=>{let _=[];for(let w of F.value.values()){let k=w.data.title||Nt[w.type],z=w.data.content||w.data.path||"",X=w.type==="group"&&Array.isArray(w.data.children)?w.data.children.length:0;_.push({id:`node:${w.id}`,kind:"node",label:k,description:w.type==="group"?`group · ${X} node${X===1?"":"s"}`:z.length>60?`${Nt[w.type].toLowerCase()} · ${z.slice(0,60)}…`:z?`${Nt[w.type].toLowerCase()} · ${z}`:Nt[w.type].toLowerCase(),icon:Bn(w.type),nodeType:w.type,action:()=>{pt(w.id),e()}})}let N=[{label:"New markdown note",shortcut:"M",icon:Ho,iconTone:"accent",action:()=>{In({type:"markdown",title:"New note",width:520,height:360}),e()}},{label:"Link to board…",icon:Bn("board"),iconTone:"accent",action:()=>{window.dispatchEvent(new CustomEvent("pmx-open-board-link")),e()}},..._t.value?[]:[{label:"Start agent session",icon:fi,iconTone:"purple",action:()=>{tr(),e()}}],{label:"Fit view",shortcut:"F",icon:zc,iconTone:"muted",action:()=>{pi(bt().width,bt().height),e()}},{label:"Auto-arrange (grid)",icon:go,iconTone:"muted",action:()=>{Ec(),e()}},{label:"Auto-arrange (graph-aware)",icon:go,iconTone:"muted",action:()=>{Ac(),e()}},{label:"Toggle minimap",icon:Rc,iconTone:"muted",action:()=>{t(),e()}},{label:"Toggle theme (Harbor/Daylight)",icon:Mc,iconTone:"muted",action:()=>{let w=Go(gt.value)==="dark"?"daylight":"harbor";Yl(),document.documentElement.setAttribute("data-theme",w),Ri(),gt.value=w,fc(w),e()}}];for(let w of N)_.push({id:`action:${w.label}`,kind:"action",label:w.label,...w.shortcut?{shortcut:w.shortcut}:{},icon:w.icon,...w.iconTone?{iconTone:w.iconTone}:{},action:w.action});return _},[e,t]),{typeFilter:h,remaining:v}=NN(n),x=f(),g;if(!n.trim())g=x.map((_)=>({..._,score:0,indices:[]}));else{g=[];for(let _ of x){if(h){if(_.kind!=="node"||_.nodeType!==h)continue;if(!v){g.push({..._,score:0,indices:[]});continue}}let N=IN(v||n,_.label);if(N.match)g.push({..._,score:N.score,indices:N.indices})}g.sort((_,N)=>N.score-_.score)}for(let _ of a)g.push({id:`library:${_.boardId}:${_.cardId}`,kind:"library",label:_.title||_.boardTitle,description:`${_.boardTitle} · ${_.snippet}`,icon:Bn("board"),score:0,indices:[],action:()=>{(async()=>{if(await sn(_.boardId),Oe.value!==_.boardId)return;for(let N=0;N<40&&Oe.value===_.boardId;N++){if(F.value.has(_.cardId)){pt(_.cardId),e();return}await new Promise((w)=>window.setTimeout(w,25))}})()}});g=[...g.filter((_)=>_.kind==="action"),...g.filter((_)=>_.kind==="node"),...g.filter((_)=>_.kind==="library")];let b=g.findIndex((_)=>_.kind==="node"),I=g.findIndex((_)=>_.kind==="library");H(()=>{if(!n.trim()){uo.value=null;return}let _=new Set;for(let N of g)if(N.kind==="node")_.add(N.id.slice(5));uo.value=_.size>0?_:null},[n,g]),H(()=>()=>{uo.value=null},[]);let R=Math.min(r,Math.max(0,g.length-1)),M=j((_)=>{if(_.key==="ArrowDown")_.preventDefault(),s((N)=>Math.min(N+1,g.length-1));else if(_.key==="ArrowUp")_.preventDefault(),s((N)=>Math.max(N-1,0));else if(_.key==="Enter"){if(_.preventDefault(),g[R])g[R].action()}else if(_.key==="Escape")_.preventDefault(),_.stopPropagation(),e()},[g,R,e]);return H(()=>{let _=d.current;if(!_)return;_.children[R]?.scrollIntoView({block:"nearest"})},[R]),H(()=>{s(0)},[n]),i("div",{class:"command-palette-backdrop",onMouseDown:e,children:i("div",{ref:m,class:"command-palette",role:"dialog","aria-modal":"true","aria-label":"Search and commands",onMouseDown:(_)=>_.stopPropagation(),children:[i("div",{class:"command-palette-search",children:[i("svg",{width:"15",height:"15",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","aria-hidden":"true",children:[i("circle",{cx:"7",cy:"7",r:"4.5"},void 0,!1,void 0,this),i("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),i("input",{ref:p,type:"text",class:"command-palette-input",value:n,onInput:(_)=>o(_.target.value),onKeyDown:M,placeholder:"Search nodes, run actions, jump to…","aria-label":"Search nodes, run actions, jump to"},void 0,!1,void 0,this),i("kbd",{class:"command-palette-esc",children:"esc"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"command-palette-results",ref:d,children:[l==="loading"&&i("div",{class:"command-palette-empty",role:"status",children:"Searching all boards…"},void 0,!1,void 0,this),l==="error"&&i("div",{class:"command-palette-empty",role:"alert",children:"Library search is unavailable."},void 0,!1,void 0,this),g.length===0&&l!=="loading"&&i("div",{class:"command-palette-empty",children:"No matching nodes, boards, or actions"},void 0,!1,void 0,this),g.map((_,N)=>{let w=_.icon,k=N===0&&_.kind==="action"?"Actions":N===b?"Jump to":N===I?"Across boards":null;return i("div",{class:"command-palette-row",children:[k&&i("div",{class:"command-palette-group",children:k},void 0,!1,void 0,this),i("button",{type:"button",class:`command-palette-item${N===R?" selected":""}`,onMouseEnter:()=>s(N),onClick:()=>_.action(),children:[i("span",{class:`command-palette-icon tone-${_.iconTone??"kind"}`,"aria-hidden":"true",children:i(w,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("span",{class:"command-palette-label",children:[_.indices.length>0?PN(_.label,_.indices):_.label,_.description&&i("span",{class:"command-palette-desc",children:[" — ",_.description]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),_.shortcut&&i("kbd",{class:"command-palette-kbd",children:_.shortcut},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},_.id,!0,void 0,this)})]},void 0,!0,void 0,this),i("div",{class:"command-palette-hint",children:[i("span",{children:"↑↓ navigate"},void 0,!1,void 0,this),i("span",{children:"↵ open"},void 0,!1,void 0,this),i("span",{children:"esc close"},void 0,!1,void 0,this),i("span",{children:"type: filter"},void 0,!1,void 0,this),i("span",{class:"command-palette-hint-spacer"},void 0,!1,void 0,this),i("span",{children:rt("K")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function QS({onClose:e}){let t=L(null),n=L(null),[o,r]=A(""),[s,a]=A("");an(t,!0,{initial:n});let c=rn.value.filter((u)=>u.id!==Oe.value&&u.name.toLowerCase().includes(o.trim().toLowerCase())),l=async(u)=>{let p=rn.value.find((h)=>h.id===u);if(!p)return a("That board is no longer available.");let d=Ro(),m=oe.value;if(!(await ne("createBoardLink","/api/canvas/node",{},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"board",title:p.name,x:Math.round((d.x-m.x)/m.scale-180),y:Math.round((d.y-m.y)/m.scale-100),width:360,height:200,data:{boardId:u}})})).ok)return a("Could not create the board link.");e()};return i("div",{class:"text-prompt-backdrop",onMouseDown:e,children:i("div",{ref:t,class:"text-prompt board-link-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"board-link-title",onMouseDown:(u)=>u.stopPropagation(),children:[i("h2",{id:"board-link-title",children:"Link to a board"},void 0,!1,void 0,this),i("input",{ref:n,type:"search",class:"text-prompt-input","aria-label":"Find a board to link",placeholder:"Find a board…",value:o,onInput:(u)=>r(u.currentTarget.value)},void 0,!1,void 0,this),s&&i("div",{role:"alert",class:"board-copy-error",children:s},void 0,!1,void 0,this),i("ul",{class:"board-link-results",children:[c.map((u)=>i("li",{children:i("button",{type:"button",onClick:()=>void l(u.id),children:[i("span",{children:u.name},void 0,!1,void 0,this),i("small",{children:[u.nodeCount," nodes"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},u.id,!1,void 0,this)),c.length===0&&i("li",{class:"board-copy-status",children:rn.value.length<=1?"Create another board first, then link it here.":"No boards match your search."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"text-prompt-actions",children:i("button",{type:"button",onClick:e,children:"Cancel"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function ek(){let[e,t]=A(null),n=j((a,c)=>{a.preventDefault(),a.stopPropagation(),t({kind:"node",x:a.clientX,y:a.clientY,nodeId:c})},[]),o=j((a,c,l)=>{a.preventDefault(),a.stopPropagation(),t({kind:"canvas",x:a.clientX,y:a.clientY,canvasX:c,canvasY:l})},[]),r=j((a,c)=>{a.preventDefault(),a.stopPropagation(),t({kind:"edge",x:a.clientX,y:a.clientY,edgeId:c})},[]),s=j(()=>t(null),[]);return H(()=>{if(!e)return;let a=()=>t(null),c=(l)=>{if(l.key==="Escape")t(null)};return document.addEventListener("click",a),document.addEventListener("keydown",c),()=>{document.removeEventListener("click",a),document.removeEventListener("keydown",c)}},[e]),{menu:e,openNodeMenu:n,openCanvasMenu:o,openEdgeMenu:r,closeMenu:s}}var zN="#4bbcFF",RN=[{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 tk({menu:e,onClose:t}){let n;if(e.kind==="node"){let c=F.value.get(e.nodeId);if(!c)return null;n=FN(c)}else if(e.kind==="edge"){let c=e.edgeId,l=Je.value.get(c);n=[{label:l?.label?`Edit label “${l.label.slice(0,18)}${l.label.length>18?"…":""}”`:"Add label…",action:()=>{hn("Edge label (empty clears it)","label text",{initial:l?.label??"",allowEmpty:!0,confirm:"Save"}).then((u)=>{if(u===null)return;bc(c,{label:u})})}},{separator:!0},...["flow","depends-on","relation","references"].map((u)=>({label:`${l?.type===u?"✓":" "} ${u}`,action:()=>void bc(c,{type:u})})),{separator:!0},...["solid","dashed","dotted"].map((u)=>({label:`${(l?.style??"solid")===u?"✓":" "} ${u}`,action:()=>void bc(c,{style:u})})),{separator:!0},{label:"Delete edge",danger:!0,action:()=>void xc(c)}]}else n=DN(e.canvasX,e.canvasY);let o=new Map,r=n.some((c)=>c.render)?n.length*32+168:n.length*32+8,s=Math.min(e.x,Math.max(12,window.innerWidth-240)),a=Math.min(e.y,Math.max(12,window.innerHeight-r));return i("div",{class:"context-menu",style:{position:"fixed",left:`${s}px`,top:`${a}px`,zIndex:1e4},onPointerDown:(c)=>c.stopPropagation(),onClick:(c)=>c.stopPropagation(),children:n.map((c)=>{let l=c.separator?"separator":c.render?"custom":`${c.label??"item"}:${c.shortcut??""}`,u=(o.get(l)??0)+1;o.set(l,u);let p=`${l}:${u}`;if(c.separator)return i("div",{class:"context-menu-separator"},p,!1,void 0,this);if(c.render)return i("div",{class:"context-menu-custom",children:c.render(t)},p,!1,void 0,this);return i("button",{type:"button",class:`context-menu-item${c.danger?" is-danger":""}`,onClick:()=>{c.action?.(),t()},children:[i("span",{class:"context-menu-label",children:c.label},void 0,!1,void 0,this),c.shortcut&&i("span",{class:"context-menu-shortcut",children:c.shortcut},void 0,!1,void 0,this)]},p,!0,void 0,this)})},void 0,!1,void 0,this)}function MN(e){return(typeof e.data.path==="string"?e.data.path.trim():"")||null}function Ql(e){let t=e.trim().toLowerCase(),n=t.match(/^#([0-9a-f]{3})$/);if(n){let[o,r,s]=n[1].split("");return`#${o}${o}${r}${r}${s}${s}`}return t}function nk(e){if(typeof e.data.color!=="string"||!e.data.color.trim())return null;return Ql(e.data.color)}function $N(e){let t=nk(e);return t&&/^#[0-9a-f]{6}$/.test(t)?t:Ql(zN)}function $m(e,t){let n=t?Ql(t):null;wt(e.id,{data:{...e.data,color:n}}),kt(e.id,{data:{color:n}})}function ON(e,t){let n=nk(e);return i("div",{class:"context-menu-section",children:[i("div",{class:"context-menu-section-header",children:[i("span",{class:"context-menu-section-label",children:"Group color"},void 0,!1,void 0,this),i("button",{type:"button",class:"context-menu-reset",onClick:()=>{$m(e,null),t()},children:"Theme default"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"context-menu-color-grid",children:RN.map((o)=>{let r=Ql(o.value);return i("button",{type:"button",class:`context-menu-color-swatch${n===r?" active":""}`,"aria-label":`Set group color to ${o.label}`,title:o.label,style:{"--swatch-color":o.value},onClick:()=>{$m(e,o.value),t()},children:[i("span",{class:"context-menu-color-dot",style:{"--swatch-color":o.value}},void 0,!1,void 0,this),i("span",{children:o.label},void 0,!1,void 0,this)]},o.value,!0,void 0,this)})},void 0,!1,void 0,this),i("label",{class:"context-menu-color-custom",children:[i("span",{children:"Custom"},void 0,!1,void 0,this),i("input",{type:"color",class:"context-menu-color-input","aria-label":"Custom group color",value:$N(e),onClick:(o)=>o.stopPropagation(),onInput:(o)=>{$m(e,o.currentTarget.value),t()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Lm(e,t,n,o){return{x:e-n/2,y:t-o/2}}function LN(e,t){return e.trim().replace(/[?#].*$/,"").split("/").filter(Boolean).at(-1)||t}async function Om(e){let t=await hn(e.promptLabel,e.placeholder??"");if(!t)return;let n=t.trim();if(!n)return;let o=Lm(e.canvasX,e.canvasY,e.width,e.height);if(!(await On({type:e.type,...e.type!=="webpage"?{title:LN(n,e.titleFallback)}:{},content:n,x:o.x,y:o.y,width:e.width,height:e.height})).ok)console.error(`[canvas-menu] ${e.errorMessage}`)}function DN(e,t){return[{label:"New note",action:()=>{let r=Lm(e,t,520,360);On({type:"markdown",title:"New note",x:r.x,y:r.y,width:520,height:360})}},{label:"Open webpage...",action:()=>{Om({promptLabel:"Webpage URL:",type:"webpage",canvasX:e,canvasY:t,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:()=>{Om({promptLabel:"Workspace path or absolute file path:",type:"file",canvasX:e,canvasY:t,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:()=>{Om({promptLabel:"Image path, URL, or data URI:",type:"image",canvasX:e,canvasY:t,width:480,height:360,placeholder:"artifacts/architecture.png",titleFallback:"Image",errorMessage:"Could not create image node. Check the image source and try again."})}},{label:"Link to board…",action:()=>window.dispatchEvent(new CustomEvent("pmx-open-board-link"))},{separator:!0},{label:"New group",action:()=>{let r=Lm(e,t,600,400);ii({title:"Group",x:r.x,y:r.y,width:600,height:400})}}]}function FN(e){let t=[],n=MN(e);if(t.push({label:"Focus",action:()=>pt(e.id)}),t.push({label:"Rename…",action:()=>{hn("Rename node","Node title",{initial:typeof e.data.title==="string"?e.data.title:"",confirm:"Save"}).then((l)=>{if(!l?.trim())return;kt(e.id,{title:l.trim()})})}}),ms.has(e.type))t.push({label:"Expand",shortcut:"⤢",action:()=>kn(e.id)});if(t.push({label:e.collapsed?"Expand":"Collapse",action:()=>Ss(e.id)}),Yc(e))t.push({label:"Open in new tab",action:()=>void Qc(e)});let o=Le.value.has(e.id);t.push({label:o?"Unpin from context":"Pin as context",action:()=>Jn(e.id)}),t.push({label:e.pinned?"Unlock position":"Lock position (no auto-arrange)",action:()=>{let l=!e.pinned;wt(e.id,{pinned:l}),kt(e.id,{pinned:l}),Tt()}});let r=ws.value;if(r&&r.from!==e.id){let l=F.value.get(r.from),u=l?(l.data.title||l.id).slice(0,20):r.from;t.push({label:`Connect from "${u}"`,action:()=>{xr(r.from,e.id,"relation"),ws.value=null}})}t.push({label:r?"Connect from here (replace)":"Connect from here",action:()=>{ws.value={from:e.id}}});let s=Array.from(Je.value.values()).filter((l)=>l.from===e.id||l.to===e.id).length;if(s>0)t.push({label:`${s} edge${s!==1?"s":""} connected`});if(t.push({separator:!0}),(e.type==="markdown"||e.type==="file"||e.type==="image")&&n)t.push({label:"Open in browser",action:()=>{window.open(`/artifact?path=${encodeURIComponent(n)}`,"_blank","noopener")}}),t.push({label:"Copy path",action:()=>{navigator.clipboard.writeText(n)}});if(e.type==="mcp-app"||e.type==="json-render"||e.type==="graph")if(e.data.chartConfig){let l=e.data.chartConfig.title||"chart";t.push({label:"Copy chart data",action:()=>{navigator.clipboard.writeText(JSON.stringify(e.data.chartConfig,null,2))}})}else{let l=e.data.url;if(t.push({label:"Open in browser",action:()=>{if(l)window.open(l,"_blank")}}),t.push({label:"Focus in TUI",action:()=>pb("mcp-app-focus",{url:l})}),e.type==="json-render"||e.type==="graph")t.push({label:"Copy spec",action:()=>{navigator.clipboard.writeText(JSON.stringify(e.data.spec??e.data.graphConfig??{},null,2))}})}if(e.type==="webpage"){let l=typeof e.data.url==="string"?e.data.url:"";t.push({label:"Refresh webpage",action:()=>{gc(e.id)}}),t.push({label:"Open in browser",action:()=>{if(l)window.open(l,"_blank","noopener")}}),t.push({label:"Copy URL",action:()=>{if(l)navigator.clipboard.writeText(l)}})}if(e.type==="group"){let l=e.data.children??[];if(t.push({separator:!0}),t.push({render:(u)=>ON(e,u)}),l.length>0)t.push({label:`Ungroup (${l.length} node${l.length!==1?"s":""})`,action:()=>{Do(e.id),si(e.id)}})}let a=typeof e.data.parentGroup==="string"?e.data.parentGroup:null,c=a?F.value.get(a):void 0;if(c&&c.type==="group"){let l=typeof c.data.title==="string"&&c.data.title?c.data.title:"frame",u=Array.isArray(c.data.children)?c.data.children.filter((p)=>p!==e.id):[];t.push({label:`Remove from “${l}”`,action:()=>{yc(c.id,u)}})}return t.push({separator:!0}),t.push({label:e.type==="group"?"Delete frame (children stay)":"Delete",danger:!0,action:()=>{Oo(e.id)}}),t}function ok(){let e=Le.value.size;if(e===0||Gn.value)return null;return i("div",{class:"context-pin-bar",children:[i("span",{class:"context-pin-bar-count",children:["✦"," ",e," node",e!==1?"s":""," in context"]},void 0,!0,void 0,this),i("button",{type:"button",class:"context-pin-bar-btn context-pin-bar-clear",onClick:Hb,title:"Clear all context pins","aria-label":"Clear all context pins",children:i(Ve,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function rk({onClose:e}){let t=L(null),[n,o]=A("Bug report"),[r,s]=A(""),[a,c]=A("");return an(t,!0),i("div",{class:"text-prompt-backdrop feedback-backdrop",onPointerDown:e,children:i("form",{ref:t,class:"text-prompt feedback-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"feedback-title","aria-describedby":"feedback-privacy",action:"https://github.com/pskoett/pmx-canvas/issues/new",method:"get",target:"_blank",rel:"noopener noreferrer",onPointerDown:(l)=>l.stopPropagation(),onKeyDown:(l)=>{if(l.stopPropagation(),l.key==="Escape")l.preventDefault(),e()},children:[i("div",{id:"feedback-title",class:"text-prompt-title",children:"Bug and feedback"},void 0,!1,void 0,this),i("p",{id:"feedback-privacy",class:"feedback-note",children:"Opens a draft issue in pskoett/pmx-canvas. Review and submit it on GitHub using your account. Issues are public. Only what you enter below is included; no board contents, workspace paths, screenshots, or logs are attached."},void 0,!1,void 0,this),i("div",{class:"feedback-field",children:[i("span",{children:"Feedback type"},void 0,!1,void 0,this),i(Kl,{label:"Feedback type",value:n,onChange:o,options:["Bug report","Feature request","General feedback"].map((l)=>({value:l,label:l}))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("label",{children:["Title",i("input",{class:"text-prompt-input",name:"title",required:!0,maxLength:120,value:r,onInput:(l)=>s(l.currentTarget.value),placeholder:"A short summary"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("label",{children:["Description",i("textarea",{class:"text-prompt-input",required:!0,maxLength:1200,rows:6,value:a,onInput:(l)=>c(l.currentTarget.value),placeholder:"What happened, what you expected, and steps to reproduce — or describe your idea."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("input",{type:"hidden",name:"body",value:`## ${n}
|
|
332
|
-
|
|
333
|
-
${a.trim()}`},void 0,!1,void 0,this),i("div",{class:"text-prompt-actions",children:[i("button",{type:"button",class:"text-prompt-cancel",onClick:e,children:"Cancel"},void 0,!1,void 0,this),i("button",{type:"submit",class:"text-prompt-confirm",disabled:!r.trim()||!a.trim(),children:["Continue on GitHub ",i(jo,{size:14},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,!1,void 0,this)}function oa(e,t){console.error(`[tool-rail] ${e} failed`,t)}function Dr(e){let t={image:{message:"Image URL (https://… or data:image/…)",placeholder:"https://example.com/diagram.png"},file:{message:"Workspace file path",placeholder:"src/server/server.ts"},webpage:{message:"Page URL",placeholder:"https://example.com"}};hn(t[e].message,t[e].placeholder).then((n)=>{if(!n)return;In({type:e,content:n}).catch((o)=>oa(`create ${e}`,o))})}function yt({label:e,shortcut:t,detail:n,ariaLabel:o,active:r,menuOpen:s,onClick:a,btnRef:c,children:l}){let[u,p]=A(null),d=(h)=>{let v=h.currentTarget.getBoundingClientRect();p({left:v.right+10,top:v.top+v.height/2})},m=()=>p(null),f=o??(t?`${e} (${t})`:n?`${e} (${n})`:e);return i(_e,{children:[i("button",{ref:c,type:"button",class:`rail-btn${r?" active":""}`,"aria-label":f,"aria-pressed":r===void 0?void 0:r,onClick:(h)=>{m(),a(h)},onPointerEnter:d,onPointerLeave:m,onFocus:d,onBlur:m,children:l},void 0,!1,void 0,this),u&&!s&&i("span",{class:"toolbar-tooltip rail-tooltip",role:"tooltip","data-testid":"rail-tooltip",style:{left:`${u.left}px`,top:`${u.top}px`},children:[i("span",{class:"toolbar-tooltip-label",children:e},void 0,!1,void 0,this),(t||n)&&i("span",{class:"toolbar-tooltip-meta",children:[t&&i("kbd",{class:"toolbar-tooltip-shortcut",children:t},void 0,!1,void 0,this),n&&i("span",{children:n},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 ik({minimapVisible:e,onToggleMinimap:t,snapshotOpen:n,onToggleSnapshot:o,snapshotBtnRef:r,onOpenPalette:s,onOpenShortcuts:a,annotationTool:c,onSetAnnotationTool:l}){let u=Qt.value,p=li.value,d=Array.from(F.value.values()).filter((z)=>z.type==="trace").length,m=Je.value.size,[f,h]=A(!1),[v,x]=A(null),[g,b]=A(null),I=L(null),R=L(null),M=(z)=>(X)=>{if(v===z){x(null);return}let W=X.currentTarget.getBoundingClientRect();b({bottom:W.bottom,right:W.right}),x(z)},_=g?{position:"fixed",left:`${g.right+8}px`,bottom:`${window.innerHeight-g.bottom}px`,top:"auto",right:"auto"}:void 0;H(()=>{if(!v)return;let z=(W)=>{if(I.current&&W.target instanceof Node&&!I.current.contains(W.target))x(null)},X=(W)=>{if(W.key==="Escape")x(null)};return document.addEventListener("pointerdown",z),document.addEventListener("keydown",X),()=>{document.removeEventListener("pointerdown",z),document.removeEventListener("keydown",X)}},[v]);let N=(z)=>{Yl(),document.documentElement.setAttribute("data-theme",z),Ri(),gt.value=z,fc(z),x(null)},w=zp(gt.value),k=(z,X={})=>{ct(`/api/workbench/intent?_ts=${Date.now()}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:z,payload:X})}).catch((W)=>oa("sendIntent",W))};return i(_e,{children:[i("div",{class:"tool-rail",ref:I,role:"toolbar","aria-label":"Canvas tools","aria-orientation":"vertical",children:[i(yt,{label:"Home",ariaLabel:"PMX Canvas — Home",onClick:()=>{x(null),sn(null).catch((z)=>oa("openHome",z))},children:i("span",{class:"rail-brand",children:i(Oc,{size:22},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(yt,{label:"Bug and feedback",menuOpen:f,onClick:()=>{x(null),h(!0)},children:i("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[i("rect",{x:"4.5",y:"5",width:"7",height:"9",rx:"3.5"},void 0,!1,void 0,this),i("path",{d:"M6 5V4a2 2 0 0 1 4 0v1M8 8v6M2 4l2.5 2M14 4l-2.5 2M1.5 9h3M11.5 9h3M2 14l2.5-2M14 14l-2.5-2"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),i("div",{class:"rail-divider"},void 0,!1,void 0,this),i(yt,{label:"Select",shortcut:"V",active:u==="select",onClick:()=>Qt.value="select",children:i(bx,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(yt,{label:"Pan",shortcut:"Space",active:u==="pan",onClick:()=>Qt.value="pan",children:i(xx,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(yt,{label:"Connect",shortcut:"C",active:u==="connect",onClick:()=>Qt.value="connect",children:i("svg",{width:"15",height:"15",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","aria-hidden":"true",children:[i("circle",{cx:"4",cy:"4",r:"2"},void 0,!1,void 0,this),i("circle",{cx:"12",cy:"12",r:"2"},void 0,!1,void 0,this),i("path",{d:"M5.5 5.5 C 8 8, 8 8, 10.5 10.5"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),i("div",{class:"rail-divider"},void 0,!1,void 0,this),i(yt,{label:"Markdown note",shortcut:"M",onClick:()=>void In({type:"markdown",title:"New note",width:520,height:360}).catch((z)=>oa("create markdown",z)),children:i(Ho,{size:15},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(yt,{label:"Attach files",ariaLabel:"Attach files",detail:"Images (PNG, JPEG, SVG…), Markdown and text/code files. PDF, Word, Excel, PowerPoint and OpenDocument use agent import with review.",onClick:()=>R.current?.click(),children:i(ax,{size:15},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("input",{ref:R,type:"file",hidden:!0,multiple:!0,"aria-label":"Attach files",onChange:(z)=>{let X=bt(),W=oe.value;$i(Array.from(z.currentTarget.files??[]),(X.width/2-W.x)/W.scale,(X.height/2-W.y)/W.scale),z.currentTarget.value=""}},void 0,!1,void 0,this),i(yt,{label:"Webpage",shortcut:"W",onClick:()=>Dr("webpage"),children:i(mi,{size:15},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(yt,{label:"Group",shortcut:"G",onClick:()=>void In({type:"group",title:"Group"}).catch((z)=>oa("create group",z)),children:i(Vd,{size:15},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(yt,{label:"Draw",shortcut:"A",active:c==="pen",onClick:()=>l(c==="pen"?null:"pen"),children:i(dx,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(yt,{label:"Text note",active:c==="text",onClick:()=>l(c==="text"?null:"text"),children:i(mx,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(yt,{label:"Eraser",active:c==="eraser",onClick:()=>l(c==="eraser"?null:"eraser"),children:i(px,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("div",{class:"rail-spacer"},void 0,!1,void 0,this),i(yt,{label:"Search & commands",shortcut:rt("K"),onClick:s,children:i(vx,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(yt,{label:"Arrange",detail:m>0?"graph-aware":"grid",onClick:()=>m>0?Ac():Ec(),children:i(go,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),!Se()&&i(yt,{label:p?"Disable trace":"Enable trace",active:p,onClick:()=>k("trace-toggle",{enabled:!p}),children:i(hx,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),!Se()&&(p||d>0)&&i(yt,{label:"Clear trace",onClick:()=>k("trace-clear"),children:i(gx,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(yt,{label:e?"Hide minimap":"Show minimap",active:e,onClick:t,children:i(Rc,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(yt,{label:"Snapshots",active:n,onClick:o,btnRef:r,children:i(fx,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("span",{class:"toolbar-menu-anchor",children:[i(yt,{label:"Theme",detail:Ci[w].label,menuOpen:v==="theme",ariaLabel:"Choose theme",active:v==="theme",onClick:M("theme"),children:Go(w)==="dark"?i(ux,{},void 0,!1,void 0,this):i(Mc,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),v==="theme"&&i("div",{class:"toolbar-menu",style:_,role:"menu","aria-label":"Theme",children:Np.map((z)=>i("button",{type:"button",role:"menuitemradio","aria-checked":w===z,class:`toolbar-menu-item${w===z?" active":""}`,onClick:()=>N(z),children:[i("span",{class:"theme-swatch",style:{background:Ci[z].swatchBg},children:i("span",{class:"theme-swatch-dot",style:{background:Ci[z].swatchAccent}},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("span",{children:Ci[z].label},void 0,!1,void 0,this),w===z&&i("span",{class:"toolbar-menu-check","aria-hidden":"true",children:"✓"},void 0,!1,void 0,this)]},z,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i(yt,{label:"Shortcuts",shortcut:"?",onClick:a,children:i(yx,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),f&&i(rk,{onClose:()=>h(!1)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function sk({onOpenPalette:e}){let t=L(null),n=()=>{In({type:"markdown",title:"New note",width:520,height:360}).catch(()=>{})},o=async(r)=>{if(!r||r.length===0)return;let s=Ro(),a=oe.value;await $i(Array.from(r),(s.x-a.x)/a.scale,(s.y-a.y)/a.scale)};return i("div",{class:"empty-state","data-testid":"empty-state",children:[i("svg",{class:"empty-state-mark",width:"52",height:"52",viewBox:"0 0 64 64",fill:"none","aria-hidden":"true",children:[i("rect",{x:"8",y:"8",width:"48",height:"48",rx:"7"},void 0,!1,void 0,this),i("rect",{x:"20",y:"20",width:"24",height:"24",rx:"4","stroke-dasharray":"4 4"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{children:[i("div",{class:"empty-state-title",children:"Nothing on this board yet"},void 0,!1,void 0,this),i("div",{class:"empty-state-sub",children:"Drop files anywhere, paste a link, or start from a note."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"empty-state-grid",children:[i("button",{type:"button",class:"empty-state-action",onClick:n,children:[i(Ho,{size:16,class:"tone-accent"},void 0,!1,void 0,this),i("span",{class:"empty-state-action-label",children:"New markdown note"},void 0,!1,void 0,this),i("kbd",{children:"M"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("button",{type:"button",class:"empty-state-action",onClick:()=>t.current?.click(),children:[i("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round",class:"tone-warn","aria-hidden":"true",children:[i("path",{d:"M8 10 V2 M8 2 L5 5 M8 2 L11 5"},void 0,!1,void 0,this),i("path",{d:"M2 10 V13 H14 V10"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("span",{class:"empty-state-action-label",children:"Drop files"},void 0,!1,void 0,this),i("span",{class:"empty-state-action-hint",children:"or pick"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("button",{type:"button",class:"empty-state-action",onClick:()=>Dr("webpage"),children:[i(mi,{size:16,class:"tone-ok"},void 0,!1,void 0,this),i("span",{class:"empty-state-action-label",children:"Paste a link"},void 0,!1,void 0,this),i("kbd",{children:rt("V")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("button",{type:"button",class:"empty-state-action is-agent",onClick:()=>void tr(),children:[i(fi,{size:16,class:"tone-purple"},void 0,!1,void 0,this),i("span",{class:"empty-state-action-label",children:"Start agent session"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),i("button",{type:"button",class:"empty-state-hint",onClick:e,children:["? shortcuts · ",rt("K")," palette"]},void 0,!0,void 0,this),i("input",{ref:t,type:"file",multiple:!0,hidden:!0,"aria-hidden":"true",tabIndex:-1,onChange:(r)=>{let s=r.currentTarget;o(s.files).finally(()=>{s.value=""})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var ak="From old snapshots";function ck(e){if(!e?.trim())return null;let t=e.split("/").map((n)=>n.trim());if(t.length>8)throw Error("Folders can be nested up to 8 levels.");if(t.some((n)=>!n||n==="."||n===".."||n.length>60))throw Error('Each folder name must be 1–60 characters, and cannot be "." or "..".');return t.join("/")}function Dm(e){return e.split("/").map((t,n,o)=>o.slice(0,n+1).join("/"))}function lk({board:e,folders:t,onClose:n}){let o=L(null),[r,s]=A(e.category??""),[a,c]=A(""),[l,u]=A(!1),[p,d]=A("");an(o,!0),H(()=>{let h=(v)=>{if(v.key!=="Escape")return;if(v.preventDefault(),v.stopPropagation(),!l)n()};return window.addEventListener("keydown",h,!0),()=>window.removeEventListener("keydown",h,!0)},[l,n]);let m=a.trim()?[r,a.trim()].filter(Boolean).join("/"):r,f=async()=>{let h;try{if(a.includes("/"))throw Error("Use one folder name; choose its parent above.");h=ck(m)}catch(v){d(v instanceof Error?v.message:String(v));return}if(u(!0),d(""),await uc(e.id,{category:h}),rn.value.find((v)=>v.id===e.id)?.category===h)n();else d("Could not move this board. Try again.");u(!1)};return i("div",{class:"text-prompt-backdrop",onPointerDown:()=>!l&&n(),children:i("div",{ref:o,class:"text-prompt home-folder-dialog",role:"dialog","aria-modal":"true","aria-label":`Move ${e.name}`,onPointerDown:(h)=>h.stopPropagation(),children:[i("div",{class:"text-prompt-title",children:["Move “",e.name,"”"]},void 0,!0,void 0,this),i("p",{class:"home-folder-hint",children:"Choose a folder, or create one inside it. The board keeps its content and links."},void 0,!1,void 0,this),i("fieldset",{class:"home-folder-options",disabled:l,children:[i("legend",{children:"Destination folder"},void 0,!1,void 0,this),["",...t].map((h)=>i("label",{class:"home-folder-option",style:{paddingLeft:`${8+Math.min(h.split("/").length-1,5)*14}px`},children:[i("input",{type:"radio",name:"folder-destination",value:h,checked:r===h,onChange:()=>{s(h),d("")}},void 0,!1,void 0,this),i("span",{children:h||"Home (no folder)"},void 0,!1,void 0,this)]},h,!0,void 0,this))]},void 0,!0,void 0,this),i("label",{class:"home-folder-new",children:["New folder inside ",r||"Home"," ",i("span",{class:"home-folder-hint",children:"(optional)"},void 0,!1,void 0,this),i("input",{class:"text-prompt-input","aria-label":"New folder name",placeholder:"e.g. Decisions",maxLength:60,value:a,disabled:l,onInput:(h)=>{c(h.currentTarget.value),d("")}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"home-folder-hint",children:["Move to: ",i("strong",{children:m||"Home"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),p&&i("p",{role:"alert",children:p},void 0,!1,void 0,this),i("div",{class:"text-prompt-actions",children:[i("button",{type:"button",class:"text-prompt-cancel",disabled:l,onClick:n,children:"Cancel"},void 0,!1,void 0,this),i("button",{type:"button",class:"text-prompt-confirm",disabled:l||m===(e.category??""),onClick:()=>void f(),children:l?"Moving…":"Move board"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function uk({board:e,onClose:t}){let n=L(null),o=L(null),[r,s]=A(null),[a,c]=A(new Set),[l,u]=A(`${e.name} copy`),[p,d]=A(!0),[m,f]=A(!0),[h,v]=A(!1),[x,g]=A(""),[b,I]=A(!1);return an(n,!0,{initial:o}),H(()=>{let M=!0;return cb(e.id).then((_)=>{if(!M)return;if(!_||!Array.isArray(_.cards))return g("Could not load reusable cards. Try again.");s(_),c(new Set(_.cards.filter((N)=>N.reusable).map((N)=>N.id)))}),()=>{M=!1}},[e.id]),i("div",{class:"text-prompt-backdrop",onMouseDown:t,children:i("div",{ref:n,class:"text-prompt board-copy-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"board-copy-title",onMouseDown:(M)=>M.stopPropagation(),children:i("form",{onSubmit:async(M)=>{if(M.preventDefault(),!l.trim()||!r)return;I(!0),g("");let _=await lb({sourceBoardId:e.id,name:l.trim(),...e.category?{category:e.category}:{},nodeIds:[...a],includeReadme:p,includeStructure:m});if(I(!1),!_)return g("Could not create the board. Try a different name.");if(h)await sn(_.id);t()},children:[i("h2",{id:"board-copy-title",children:["Create from ",e.name]},void 0,!0,void 0,this),i("label",{class:"board-copy-field",children:["Board name",i("input",{ref:o,class:"text-prompt-input",value:l,onInput:(M)=>u(M.currentTarget.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!r&&!x&&i("div",{class:"board-copy-status",role:"status",children:"Loading reusable cards…"},void 0,!1,void 0,this),x&&i("div",{class:"board-copy-error",role:"alert",children:x},void 0,!1,void 0,this),r&&i("fieldset",{class:"board-copy-cards",children:[i("legend",{children:"Cards to copy"},void 0,!1,void 0,this),r.cards.filter((M)=>M.reusable).length===0?i("div",{class:"board-copy-status",children:"No reusable cards on this board."},void 0,!1,void 0,this):r.cards.filter((M)=>M.reusable).map((M)=>i("label",{class:"board-copy-card",children:[i("input",{type:"checkbox",checked:a.has(M.id),onChange:(_)=>{let N=new Set(a);_.currentTarget.checked?N.add(M.id):N.delete(M.id),c(N)}},void 0,!1,void 0,this),i("span",{children:[i("strong",{children:M.title||"Untitled card"},void 0,!1,void 0,this),i("small",{children:M.type},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},M.id,!0,void 0,this))]},void 0,!0,void 0,this),i("div",{class:"board-copy-options",children:[i("label",{children:[i("input",{type:"checkbox",checked:m,onChange:(M)=>f(M.currentTarget.checked)},void 0,!1,void 0,this)," ","Preserve groups and connections"]},void 0,!0,void 0,this),i("label",{children:[i("input",{type:"checkbox",checked:p,disabled:!r?.readmeNodeId,onChange:(M)=>d(M.currentTarget.checked)},void 0,!1,void 0,this)," ","Include README"]},void 0,!0,void 0,this),i("label",{children:[i("input",{type:"checkbox",checked:h,onChange:(M)=>v(M.currentTarget.checked)},void 0,!1,void 0,this)," Open the new board after creating"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),i("p",{class:"board-copy-note",children:"Only selected cards and structure are copied. Asks, history, and context pins start clear."},void 0,!1,void 0,this),i("div",{class:"text-prompt-actions",children:[i("button",{type:"button",onClick:t,children:"Cancel"},void 0,!1,void 0,this),i("button",{type:"submit",disabled:!r||!l.trim()||b,children:b?"Creating…":"Create board"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function BN(e){if(!e)return"never opened";let t=Math.floor((Date.now()-new Date(e).getTime())/60000);if(t<1)return"just now";if(t<60)return`${t}m ago`;let n=Math.floor(t/60);if(n<24)return`${n}h ago`;let o=Math.floor(n/24);if(o<30)return`${o}d ago`;return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}function dk(e){return`${e} node${e!==1?"s":""}`}async function Fm(){let e=await hn("New board","Board name",{confirm:"Create"});if(e)await ab(e)}var pk="pmx-canvas-home-collapsed";function HN(){try{let e=localStorage.getItem(pk);if(e)return new Set(JSON.parse(e))}catch{}return new Set([ak])}function jN(e){try{localStorage.setItem(pk,JSON.stringify([...e]))}catch{}}function mk(){let e=rn.value,[t,n]=A(null),[o,r]=A(null),[s,a]=A(null),[c,l]=A(""),[u,p]=A([]),[d,m]=A(HN),f=L(0),h=[...new Set(e.flatMap((k)=>k.category?Dm(k.category):[]))].sort((k,z)=>k.localeCompare(z)),v=c.trim().toLocaleLowerCase(),x=e.filter((k)=>`${k.name} ${k.category??""}`.toLocaleLowerCase().includes(v)),g=new Set(x.flatMap((k)=>k.category?Dm(k.category):[])),b=e.find((k)=>k.id===o),I=e.find((k)=>k.id===s);H(()=>{let k=c.trim();if(!k){p([]);return}let z=!1,X=window.setTimeout(()=>{ne("searchLibrary",`/api/canvas/search?q=${encodeURIComponent(k)}&scope=library&limit=30`,null).then((W)=>{if(!z)p(W?.results??[])})},150);return()=>{z=!0,window.clearTimeout(X)}},[c]);let R=async(k)=>{let z=++f.current;await sn(k.boardId);for(let X=0;X<40;X++){if(z!==f.current||Oe.value!==k.boardId)return;if(F.value.has(k.cardId)){pt(k.cardId);return}await new Promise((W)=>window.setTimeout(W,25))}},M=(k)=>{let z=new Set(d);if(z.has(k))z.delete(k);else z.add(k);m(z),jN(z)},_=async(k)=>{let z=await hn("Rename board","Board name",{initial:k.name,confirm:"Rename"});if(z&&z!==k.name)await uc(k.id,{name:z})},N=(k)=>t===k.id?i("li",{class:"home-board is-confirming","data-testid":"home-board",children:[i("div",{class:"home-board-confirm-text",children:["Delete ",i("strong",{children:k.name},void 0,!1,void 0,this)," and its ",dk(k.nodeCount)," and snapshots? This can't be undone."]},void 0,!0,void 0,this),i("div",{class:"home-board-actions",children:[i("button",{type:"button",class:"home-board-action",onClick:()=>n(null),children:"Cancel"},void 0,!1,void 0,this),i("button",{type:"button",class:"home-board-action is-danger",onClick:()=>{n(null),db(k.id)},children:"Delete board"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},k.id,!0,void 0,this):i("li",{class:"home-board","data-testid":"home-board",children:[i("button",{type:"button",class:"home-board-open",onClick:()=>void sn(k.id),children:[i("span",{class:"home-board-name",children:k.name},void 0,!1,void 0,this),i("span",{class:"home-board-meta",children:[dk(k.nodeCount)," · ",BN(k.lastOpenedAt)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"home-board-actions",children:[i("button",{type:"button",class:"home-board-action","aria-haspopup":"dialog",onClick:()=>r(k.id),children:"Move"},void 0,!1,void 0,this),i("button",{type:"button",class:"home-board-action","aria-haspopup":"dialog",onClick:()=>a(k.id),children:"Create from…"},void 0,!1,void 0,this),i("button",{type:"button",class:"home-board-action",onClick:()=>void _(k),children:"Rename"},void 0,!1,void 0,this),i("button",{type:"button",class:"home-board-action",onClick:()=>n(k.id),children:"Delete"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},k.id,!0,void 0,this),w=(k,z)=>{let X=h.filter((S)=>S.slice(0,S.lastIndexOf("/"))===k&&S.includes("/")),W=x.filter((S)=>S.category===k),J=x.filter((S)=>S.category===k||S.category?.startsWith(`${k}/`)).length,G=!!v||!d.has(k);return i("section",{class:"home-section","data-testid":"home-section","data-folder":k,"aria-label":k,children:[i("button",{type:"button",class:"home-section-head","aria-expanded":G,onClick:()=>M(k),children:[i("svg",{class:"home-section-chevron",viewBox:"0 0 20 20",width:"18",height:"18",fill:"none","aria-hidden":"true",children:i("path",{d:"m7.5 4.75 5.25 5.25-5.25 5.25"},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("svg",{class:"home-section-folder",viewBox:"0 0 20 20",width:"18",height:"18",fill:"none","aria-hidden":"true",children:i("path",{d:"M2.75 5.75A1.75 1.75 0 0 1 4.5 4h3l1.75 2h6.25a1.75 1.75 0 0 1 1.75 1.75v6.5A1.75 1.75 0 0 1 15.5 16h-11a1.75 1.75 0 0 1-1.75-1.75v-8.5Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("span",{class:"home-section-name",children:k.split("/").at(-1)},void 0,!1,void 0,this),i("span",{class:"home-section-count",children:J},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G&&i("div",{class:"home-folder-children",style:{marginLeft:z<5?"14px":"0"},children:[X.filter((S)=>g.has(S)).map((S)=>w(S,z+1)),W.length>0&&i("ul",{class:"home-view-list","aria-label":`Boards in ${k}`,children:W.map(N)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},k,!0,void 0,this)};return i("div",{class:"home-view","data-testid":"home-view",children:[i("div",{class:"home-view-inner",children:[i("div",{class:"home-view-head",children:[i("h1",{class:"home-view-title",children:"Boards"},void 0,!1,void 0,this),i("button",{type:"button",class:"home-view-new",onClick:()=>void Fm(),children:"New board"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("input",{class:"text-prompt-input home-search",type:"search","aria-label":"Find boards and folders",placeholder:"Find boards and folders…",value:c,onInput:(k)=>l(k.currentTarget.value)},void 0,!1,void 0,this),e.length===0?i("div",{class:"home-view-empty",children:"No boards yet. Create one, or let an agent start writing — it opens one."},void 0,!1,void 0,this):v&&u.length>0?i("ul",{class:"home-view-list","aria-label":"Library search results",children:u.map((k)=>i("li",{class:"home-board",children:i("button",{type:"button",class:"home-board-open",onClick:()=>void R(k),children:[i("span",{class:"home-board-name",children:k.title||k.boardTitle},void 0,!1,void 0,this),i("span",{class:"home-board-meta",children:[k.boardTitle," · ",k.snippet]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},`${k.boardId}:${k.cardId}`,!1,void 0,this))},void 0,!1,void 0,this):x.length===0?i("div",{class:"home-view-empty",role:"status",children:["No boards match “",c,"”."]},void 0,!0,void 0,this):i(_e,{children:[h.filter((k)=>!k.includes("/")&&g.has(k)).map((k)=>w(k,0)),x.some((k)=>!k.category)&&i("section",{"aria-label":"Unfiled boards",children:[h.length>0&&i("div",{class:"home-folder-hint",children:"Unfiled boards"},void 0,!1,void 0,this),i("ul",{class:"home-view-list",children:x.filter((k)=>!k.category).map(N)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),b&&i(lk,{board:b,folders:h,onClose:()=>r(null)},b.id,!1,void 0,this),I&&i(uk,{board:I,onClose:()=>a(null)},I.id,!1,void 0,this)]},void 0,!0,void 0,this)}var Ui=K(!1);function UN(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:`${Math.ceil(e/1024)} KB`}function fk(){let[e,t]=A(!1),[n,o]=A(!1),[r,s]=A(null),[a,c]=A(null),[l,u]=A(!1),[p,d]=A(""),m=Ui.value,f=Oe.value;if(H(()=>{if(!m||!f)return;let v=!0;return c(null),d(""),s(null),ne("exportPreview",`/api/canvas/export/preview?board=${encodeURIComponent(f)}&includeFiles=${e}&includeDerivedText=${n}`,null).then((x)=>{if(v)s(x?.manifest??null)}),()=>{v=!1}},[m,e,n,f]),H(()=>{o(!1)},[m,f]),H(()=>{if(!m)return;let v=(x)=>{if(x.key!=="Escape")return;x.stopPropagation(),Ui.value=!1};return window.addEventListener("keydown",v,{capture:!0}),()=>window.removeEventListener("keydown",v,{capture:!0})},[m]),!m)return null;let h=async()=>{if(!r||r.boardId!==Oe.value)return;u(!0);let v=await ne("exportBoard","/api/canvas/export",null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({board:r.boardId,includeFiles:e,includeDerivedText:n})});if(u(!1),v?.path&&Oe.value===r.boardId)c(v)};return i("div",{class:"text-prompt-backdrop",onPointerDown:()=>Ui.value=!1,children:i("div",{class:"text-prompt export-dialog",role:"dialog","aria-label":"Export board","data-testid":"export-dialog",onPointerDown:(v)=>v.stopPropagation(),children:[i("div",{class:"text-prompt-title",children:["Export ",r?`“${r.boardName}”`:"board"]},void 0,!0,void 0,this),!r?i("div",{class:"export-dialog-note",children:"Reading the board…"},void 0,!1,void 0,this):i(_e,{children:[i("div",{class:"export-dialog-note",children:"One HTML file anyone can open without installing anything. It will contain:"},void 0,!1,void 0,this),i("ul",{class:"export-dialog-list",children:[i("li",{children:[r.cards," card",r.cards!==1?"s":""," and ",r.connections," connection",r.connections!==1?"s":""]},void 0,!0,void 0,this),r.frames>0&&i("li",{children:[r.frames," embedded pages, charts or diagrams, with the code that draws them"]},void 0,!0,void 0,this),r.embeddedImages>0&&i("li",{children:[r.embeddedImages," local images"]},void 0,!0,void 0,this),r.placeholders.length>0&&i("li",{children:["Shown as placeholders:"," ",r.placeholders.map((v)=>`${v.title} (${v.reason})`).join(", ")]},void 0,!0,void 0,this),r.remoteImages.length>0&&i("li",{children:["Web images loaded when opened: ",r.remoteImages.join(", ")]},void 0,!0,void 0,this),r.links.length>0&&i("li",{children:["Links included in cards: ",r.links.join(", ")]},void 0,!0,void 0,this),r.frameNetworkDestinations.length>0&&i("li",{children:["Network destinations referenced by embedded pages: ",r.frameNetworkDestinations.join(", ")]},void 0,!0,void 0,this),r.embeddedCodeCanAccessNetwork&&i("li",{children:"Warning: embedded code can access the network. Scripts may contact destinations that cannot be listed in advance."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(r.attachments?.length??0)>0&&i("p",{children:"Original attachments are excluded. Their filenames remain visible."},void 0,!1,void 0,this),(r.sourceDerivedCards?.length??0)>0&&i("label",{class:"export-dialog-files",children:[i("input",{type:"checkbox",checked:n,onChange:(v)=>o(v.currentTarget.checked)},void 0,!1,void 0,this),i("span",{children:["Include imported document text (",r.sourceDerivedCards.length," cards)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r.files.length>0&&i("label",{class:"export-dialog-files",children:[i("input",{type:"checkbox",checked:e,onChange:(v)=>t(v.target.checked)},void 0,!1,void 0,this),i("span",{children:["Include the contents of ",r.files.length," local file",r.files.length!==1?"s":"",": ",r.files.map((v)=>v.path).join(", ")]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),a&&i("div",{class:"export-dialog-result","data-testid":"export-result",children:[i("div",{children:["Saved (",UN(a.bytes),"): ",i("code",{children:a.path},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"export-dialog-links",children:Se()?i("button",{type:"button",disabled:l,onClick:async()=>{u(!0),d("");try{await ob(a.url)}catch(v){d(v instanceof Error?v.message:"Download failed. Try again.")}finally{u(!1)}},children:l?"Downloading…":"Download"},void 0,!1,void 0,this):i(_e,{children:[i("a",{href:a.url,target:"_blank",rel:"noopener noreferrer",children:"Open"},void 0,!1,void 0,this),i("a",{class:"is-primary",href:`${a.url}?download=1`,children:"Download"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),Se()&&i("p",{children:"Download the HTML file to open it outside ChatGPT."},void 0,!1,void 0,this),p&&i("p",{role:"alert",children:p},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"text-prompt-actions",children:[i("button",{type:"button",class:"text-prompt-cancel",onClick:()=>Ui.value=!1,children:a?"Done":"Cancel"},void 0,!1,void 0,this),!a&&i("button",{type:"button",class:"text-prompt-confirm",disabled:!r||l,onClick:()=>void h(),children:l?"Exporting…":"Export"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function Bm({presence:e,size:t=18}){return i("span",{class:"writer-avatar",style:{background:An(e.sessionId),width:`${t}px`,height:`${t}px`},"aria-hidden":"true",children:eS(e.label)},void 0,!1,void 0,this)}function hk(){let e=ym.value;if(_t.value||e.length===0)return null;let t=e.reduce((r,s)=>r+s.opCount,0),n=e.length===1?e[0].label:`${e.length} writers`,o=Rr.value;return i("button",{type:"button",class:"external-indicator","data-testid":"external-indicator","aria-expanded":o,title:`${e.length} external writer${e.length===1?"":"s"} on this board — click for activity`,onClick:()=>{Rr.value=!o},children:[i("span",{class:"external-indicator-avatars",children:e.slice(0,3).map((r)=>i(Bm,{presence:r},r.sessionId,!1,void 0,this))},void 0,!1,void 0,this),i("span",{class:"external-indicator-label",children:n},void 0,!1,void 0,this),i("span",{class:"external-indicator-ops hud-collapsible-text",children:[t," op",t===1?"":"s"]},void 0,!0,void 0,this),i("span",{class:"external-indicator-dot","aria-hidden":"true"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ZN(e){if(e==="node.add"||e==="jsonrender.add"||e==="graph.add"||e==="group.create")return{glyph:"+",tone:"ok"};if(e==="node.remove"||e==="edge.remove"||e==="canvas.clear")return{glyph:"×",tone:"danger"};if(e==="edge.add")return{glyph:"⟶",tone:"accent"};if(e.startsWith("ax."))return{glyph:"◆",tone:"purple"};return{glyph:"✎",tone:"accent"}}function WN(e){return e.reduce((t,n)=>n.lastSeenAt>t?n.lastSeenAt:t,"")}function qN(){return[...lt.value.values()].filter((e)=>!e.auto&&e.phase==="forming")}function gk(){let e=Rr.value,t=ym.value,n=xo(e?1e4:0);if(H(()=>{if(!e)return;let c=(l)=>{if(l.key!=="Escape")return;if(Oi.value)Oi.value=!1;else Rr.value=!1};return window.addEventListener("keydown",c),()=>window.removeEventListener("keydown",c)},[e]),!e||_t.value||t.length===0)return null;let o=vm.value,r=qN().filter((c)=>!o||(c.source??"")===o),s=Yo.value.filter((c)=>!o||c.sessionId===o),a=(c,l)=>i("button",{type:"button",class:`activity-filter${o===c?" is-active":""}`,style:c?{"--writer":An(c)}:void 0,"aria-pressed":o===c,onClick:()=>{vm.value=c},children:l},void 0,!1,void 0,this);return i("div",{class:"activity-feed","data-testid":"activity-feed",role:"dialog","aria-label":"External activity",children:[i("div",{class:"activity-feed-head",children:[i("span",{class:"external-indicator-dot","aria-hidden":"true"},void 0,!1,void 0,this),i("div",{class:"activity-feed-titles",children:[i("div",{class:"activity-feed-title",children:["External activity — ",t.length," writer",t.length===1?"":"s"]},void 0,!0,void 0,this),i("div",{class:"activity-feed-sub",children:[t.reduce((c,l)=>c+l.opCount,0)," writes · last"," ",Ol(WN(t),n)," · no session attached"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),i("button",{type:"button",class:"activity-feed-close","aria-label":"Close activity feed",onClick:()=>{Rr.value=!1},children:i(Ve,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"activity-filters",children:[a(null,"All"),t.map((c)=>a(c.sessionId,c.label))]},void 0,!0,void 0,this),i("div",{class:"activity-rows",children:[r.map((c)=>i("div",{class:"activity-row is-pending","data-testid":"activity-proposal",children:[i("span",{class:"activity-glyph tone-purple","aria-hidden":"true",children:"▢"},void 0,!1,void 0,this),i("div",{class:"activity-main",children:[i("div",{class:"activity-text",children:["Proposing: ",i("b",{children:c.label?.trim()||`${c.kind} intent`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"activity-meta",children:[c.reason?.trim()||"Intent signalled — a real veto window before the mutation",c.source?` · ${c.source}`:""]},void 0,!0,void 0,this),i("div",{class:"activity-actions",children:[i("button",{type:"button",class:"activity-veto",onClick:()=>{br(c).then((l)=>{if(l)Er(c.id)})},children:"Veto"},void 0,!1,void 0,this),i("span",{class:"activity-hint",children:"or hover ghost + Esc"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),i("span",{class:"activity-age",children:"now"},void 0,!1,void 0,this)]},c.id,!0,void 0,this)),s.length===0&&r.length===0&&i("div",{class:"activity-empty",children:"No writes yet."},void 0,!1,void 0,this),s.map((c)=>{let{glyph:l,tone:u}=ZN(c.op);return i("div",{class:"activity-row","data-testid":"activity-row","data-op":c.op,children:[i("span",{class:`activity-glyph tone-${u}`,"aria-hidden":"true",children:l},void 0,!1,void 0,this),i("div",{class:"activity-main",children:[i("div",{class:"activity-text",children:c.summary},void 0,!1,void 0,this),i("div",{class:"activity-writer",style:{color:An(c.sessionId)},children:c.label},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("span",{class:"activity-age",children:Ol(c.at,n)},void 0,!1,void 0,this)]},c.id,!0,void 0,this)})]},void 0,!0,void 0,this),i("div",{class:"activity-feed-foot",children:[i("span",{class:"activity-feed-note",children:"All writes ghost first · Esc vetoes"},void 0,!1,void 0,this),i("button",{type:"button",class:"activity-feed-link",onClick:()=>{Oi.value=!0},children:"Writers"},void 0,!1,void 0,this),i("button",{type:"button",class:"activity-feed-link is-accent",onClick:()=>{Rr.value=!1,tr()},children:["Start session ",i(jo,{size:14},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 GN(){let e=[];if(Qo.value)e.push("scoped");if(Mr.value.length>0)e.push("gated");return e.length>0?e.join(" + "):"open"}function vk(){let e=Oi.value,t=xo(e?1e4:0),n=L(null);if(an(n,e),!e)return null;let o=It.value.filter((a)=>a.attached),r=It.value.filter((a)=>!a.attached),s=()=>{Oi.value=!1};return i(_e,{children:[i("div",{class:"writers-scrim",onClick:s,"aria-hidden":"true"},void 0,!1,void 0,this),i("div",{ref:n,class:"writers-sheet","data-testid":"writers-sheet",role:"dialog","aria-modal":"true","aria-label":"Connected writers",children:[i("div",{class:"writers-head",children:[i("span",{class:"writers-title",children:"Connected writers"},void 0,!1,void 0,this),i("span",{class:"writers-board",children:lo.value.slice(0,12)},void 0,!1,void 0,this),i("button",{type:"button",class:"activity-feed-close","aria-label":"Close writers",onClick:s,children:i(Ve,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"writers-body",children:[i("div",{class:"writers-section",children:"Agent sessions"},void 0,!1,void 0,this),o.length===0&&i("div",{class:"writers-empty",children:"None attached — start one from the top bar."},void 0,!1,void 0,this),o.map((a)=>i("div",{class:"writers-row",children:[i(Bm,{presence:a,size:20},void 0,!1,void 0,this),i("span",{class:"writers-name",children:a.label},void 0,!1,void 0,this),i("span",{class:"writers-config",children:GN()},void 0,!1,void 0,this)]},a.sessionId,!0,void 0,this)),i("div",{class:"writers-section",children:"External writers · MCP"},void 0,!1,void 0,this),r.length===0&&i("div",{class:"writers-empty",children:"No external writers right now."},void 0,!1,void 0,this),r.map((a)=>i("div",{class:"writers-row",children:[i(Bm,{presence:a,size:20},void 0,!1,void 0,this),i("span",{class:"writers-name is-mono",children:a.label},void 0,!1,void 0,this),i("span",{class:"writers-meta",children:[a.source!==a.label?`${a.source} · `:"","wrote"," ",Ol(a.lastSeenAt,t)," ago"]},void 0,!0,void 0,this)]},a.sessionId,!0,void 0,this))]},void 0,!0,void 0,this),i("div",{class:"writers-foot",children:[i("span",{class:"writers-note",children:"Local-first: any process on this machine can connect and write. Every write ghosts first — veto is the control, not permissions."},void 0,!1,void 0,this),i("button",{type:"button",class:"writers-done",onClick:s,children:"Done"},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 yk(e,t){switch(e.type){case"markdown":return i(Vc,{node:e,expanded:t},void 0,!1,void 0,this);case"mcp-app":return i(Ko,{node:e,expanded:t},void 0,!1,void 0,this);case"webpage":return i(Nl,{node:e,expanded:t},void 0,!1,void 0,this);case"json-render":return i(Ko,{node:e,expanded:t},void 0,!1,void 0,this);case"graph":return i(Ko,{node:e,expanded:t},void 0,!1,void 0,this);case"board":return i(Gl,{node:e},void 0,!1,void 0,this);case"prompt":return i(zl,{node:e},void 0,!1,void 0,this);case"response":return i(Rl,{node:e,expanded:t},void 0,!1,void 0,this);case"status":return i(Il,{node:e},void 0,!1,void 0,this);case"context":return i(Lc,{node:e,expanded:t},void 0,!1,void 0,this);case"ledger":return i(Hc,{node:e},void 0,!1,void 0,this);case"trace":return i(Ml,{node:e},void 0,!1,void 0,this);case"file":return i(Bc,{node:e,expanded:t},void 0,!1,void 0,this);case"diff":return i(Dc,{node:e},void 0,!1,void 0,this);case"mermaid":return i(ll,{node:e,expanded:t},void 0,!1,void 0,this);case"image":return i(Pl,{node:e,expanded:t},void 0,!1,void 0,this);case"html":return i(Ks,{node:e,expanded:t},void 0,!1,void 0,this);default:return i("div",{children:"Unknown node type"},void 0,!1,void 0,this)}}function bk(e){switch(e.type){case"markdown":return e.data.content||"";case"diff":return e.data.content||"";case"mermaid":return e.data.content||"";case"file":return e.data.fileContent||"";case"webpage":return e.data.content||"";case"html":return e.data.html||e.data.content||"";case"json-render":case"graph":return JSON.stringify(e.data.spec??e.data.graphConfig??{},null,2);default:return""}}function VN(e){if(!e)return 0;return e.split(/\s+/).filter(Boolean).length}function XN(e,t){return e!==null&&typeof e==="object"&&e.source===Tn&&e.type==="presentation-exit"&&e.token===t}function KN(e){return e==="ArrowRight"||e==="PageDown"||e===" "||e==="ArrowLeft"||e==="PageUp"||e==="Home"||e==="End"}function xk(e){return e instanceof HTMLElement&&Boolean(e.closest(".html-presentation-exit"))}function wk(){let e=ot.value,t=e?F.value.get(e):void 0,[n,o]=A(!1),[r,s]=A(!1),[a,c]=A(""),l=L(null),u=L(null),p=j(()=>{s(!1),ho()},[]),d=j(()=>{c(`presentation-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`),s(!0)},[]),m=j((S)=>{document.querySelector(".html-presentation-overlay iframe.html-node-frame-presentation")?.contentWindow?.postMessage({source:Tn,token:a,...S},"*")},[a]),f=j(()=>{s(!1)},[]),h=j((S)=>{if(S.key==="Escape"){S.preventDefault(),S.stopPropagation(),s(!1);return}if(S.key==="Tab"&&!xk(S.target)){S.preventDefault(),S.stopPropagation(),u.current?.focus();return}if((S.key===" "||S.key==="Enter")&&xk(S.target))return;if(!KN(S.key))return;S.preventDefault(),S.stopPropagation(),m({type:"presentation-key",key:S.key})},[m]),v=j((S)=>{if(S.target.classList.contains("expanded-overlay-backdrop"))ho()},[]),x=j(()=>{if(!t)return;let S=bk(t);if(!S)return;navigator.clipboard.writeText(S).then(()=>{o(!0),setTimeout(()=>o(!1),1500)})},[t]),g=j(()=>{if(!e)return;Jn(e)},[e]);H(()=>{s(!1)},[e]),_n(()=>{if(!r)return;let S=()=>{let ye=l.current;if(!ye||ye.contains(document.activeElement))return;ye.focus()},q=[0,50,150].map((ye)=>window.setTimeout(S,ye)),ie=(ye)=>{if(!XN(ye.data,a))return;s(!1)};return document.addEventListener("keydown",h,!0),window.addEventListener("message",ie),()=>{q.forEach((ye)=>{window.clearTimeout(ye)}),document.removeEventListener("keydown",h,!0),window.removeEventListener("message",ie)}},[h,a,r]);let b=L(null),I=j(()=>e?document.querySelector(`.canvas-node[data-node-id="${CSS.escape(e)}"]`):null,[e]);if(an(b,t!==void 0,{restoreTo:I}),!t)return null;let R=t.data.title||t.data.path?.split("/").pop()||Nt[t.type],M=bk(t),_=VN(M),N=e?Le.value.has(e):!1,w=M.length>0,k=Ln.value===e,z=t.type==="mcp-app"||t.type==="webpage"||t.type==="json-render"||t.type==="graph",X=F_(t),W=Bn(t.type),J=t.data.provenance&&typeof t.data.provenance==="object"?t.data.provenance:null,G=J?[J.sourceKind,J.sourceUri,J.syncedAt?`synced ${J.syncedAt.slice(11,16)}`:null].filter((S)=>typeof S==="string"&&S.length>0).join(" · "):null;return i("div",{class:"expanded-overlay-backdrop",onPointerDown:v,style:{pointerEvents:k?"none":"auto"},children:i("div",{ref:b,class:`expanded-overlay-panel${N?" is-pinned":""}`,role:"dialog","aria-modal":"true","aria-label":R,"data-testid":"expanded-node",children:[i("div",{class:"expanded-header",children:[i("span",{class:"expanded-kind-icon","aria-hidden":"true",children:i(W,{size:15},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("span",{class:"expanded-title",children:R},void 0,!1,void 0,this),i("span",{class:"expanded-kind-pill",children:Nt[t.type]},void 0,!1,void 0,this),i("button",{type:"button",class:`expanded-pin${N?" is-on":""}`,onClick:g,title:N?"In agent context — click to unpin":"Pin as agent context","aria-pressed":N,children:"✦"},void 0,!1,void 0,this),i("span",{class:"expanded-spacer"},void 0,!1,void 0,this),i("div",{class:"expanded-actions",children:[w&&i("button",{type:"button",class:"expanded-action-btn",onClick:x,title:"Copy content to clipboard",children:n?"Copied!":"Copy"},void 0,!1,void 0,this),Yc(t)&&i("button",{type:"button",class:"expanded-action-btn",onClick:()=>void Qc(t),title:"Open as a full-page site in the system browser",children:["Open in tab ",i(jo,{size:14},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X&&i("button",{type:"button",class:"expanded-action-btn expanded-action-primary",onClick:d,title:"Present this HTML node fullscreen",children:"Present"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("button",{type:"button",class:"expanded-close",onClick:p,title:"Close (Esc)","aria-label":"Close",children:i(Ve,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:`expanded-body${z?" is-embedded":""}`,children:z?i("div",{style:{flex:1,minHeight:0,display:"flex"},children:yk(t,!0)},void 0,!1,void 0,this):yk(t,!0)},void 0,!1,void 0,this),i("div",{style:{"--ax-dock-bleed":"0px","--ax-dock-pad":"16px"},children:i(ql,{node:t},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("div",{class:"expanded-footer",children:[i("span",{class:"expanded-footer-meta",children:[G,_>0?`${_.toLocaleString()} word${_!==1?"s":""}`:null].filter(Boolean).join(" · ")||Nt[t.type].toLowerCase()},void 0,!1,void 0,this),i("span",{class:"expanded-spacer"},void 0,!1,void 0,this),i("span",{class:`expanded-footer-hint${k?" is-saving":""}`,children:k?"Saving edits…":"esc or click outside to close"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X&&r&&i("div",{ref:l,class:"html-presentation-overlay",role:"dialog","aria-modal":"true","aria-label":`Present ${R}`,tabIndex:-1,onKeyDownCapture:h,children:[i("button",{ref:u,type:"button",class:"html-presentation-exit",onClick:f,title:"Exit presentation (Esc)","aria-label":"Exit presentation",children:"Exit presentation"},void 0,!1,void 0,this),i("div",{class:"html-presentation-stage",children:i(Ks,{node:t,expanded:!0,presentation:!0,presentationExitToken:a},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 Sk=168,kk=112,eu=20;function _k(e,t,n,o){let r=Array.from(e.values()),s=0,a=0,c=1000,l=800;if(r.length>0){s=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,l=Number.NEGATIVE_INFINITY;for(let x of r)s=Math.min(s,x.position.x),a=Math.min(a,x.position.y),c=Math.max(c,x.position.x+x.size.width),l=Math.max(l,x.position.y+x.size.height)}let u=-t.x/t.scale,p=-t.y/t.scale,d=u+n/t.scale,m=p+o/t.scale,f={minX:Math.min(s,u)-eu,minY:Math.min(a,p)-eu,maxX:Math.max(c,d)+eu,maxY:Math.max(l,m)+eu},h=f.maxX-f.minX||1,v=f.maxY-f.minY||1;return{bounds:f,scale:Math.min(Sk/h,kk/v)}}function Tk({viewport:e,nodes:t,onNavigate:n,containerWidth:o,containerHeight:r}){let s=L(null),a=L(!1),c=t.value,l=e.value,u=_k(c,l,o,r),{bounds:p,scale:d}=u,m=(w)=>(w-p.minX)*d,f=(w)=>(w-p.minY)*d,h=j((w)=>{let k=s.current;if(!k)return;let z=k.getBoundingClientRect(),X=(w.clientX-z.left)/z.width*Sk,W=(w.clientY-z.top)/z.height*kk,J=_k(t.value,e.value,o,r),G=e.value,S=o/G.scale,q=r/G.scale,ie=X/J.scale+J.bounds.minX,ye=W/J.scale+J.bounds.minY;n(-(ie-S/2)*G.scale,-(ye-q/2)*G.scale)},[t,e,o,r,n]),v=j((w)=>{w.stopPropagation(),w.preventDefault(),a.current=!0,h(w);let k=(X)=>{if(a.current)h(X)},z=()=>{a.current=!1,document.removeEventListener("pointermove",k),document.removeEventListener("pointerup",z)};document.addEventListener("pointermove",k),document.addEventListener("pointerup",z)},[h]),x=Ne.value,g=Le.value,b=_t.value?Ll.value:new Set,I=Qo.value,R=I?Fl(I.nodeIds.map((w)=>c.get(w)).filter((w)=>w!==void 0),I.padding):null,M=It.value.map((w)=>({id:w.sessionId,phase:w.phase,worker:w.parentAgentId!=null,external:!w.attached,at:Dl(w,(k)=>c.get(k))})).filter((w)=>w.at!==null),_=-l.x/l.scale,N=-l.y/l.scale;return i("div",{ref:s,class:"minimap","data-testid":"minimap",title:"Click to jump · drag the frame to pan",onPointerDown:v,children:[Array.from(c.values()).map((w)=>{let k=w.type==="group";return i("span",{class:`minimap-node${k?" is-group":""}${x.has(w.id)?" is-selected":""}${g.has(w.id)?" is-pinned":""}${b.has(w.id)?" is-agent":""}`,"data-kind":w.type,style:{left:`${m(w.position.x)}px`,top:`${f(w.position.y)}px`,width:`${Math.max(k?6:4,w.size.width*d)}px`,height:`${Math.max(k?5:3,w.size.height*d)}px`}},w.id,!1,void 0,this)}),R&&i("span",{class:"minimap-fence",style:{left:`${m(R.x)}px`,top:`${f(R.y)}px`,width:`${R.width*d}px`,height:`${R.height*d}px`}},void 0,!1,void 0,this),M.map((w)=>i("span",{class:`minimap-presence phase-${w.phase}${w.worker?" is-worker":""}${w.external?" is-external":""}`,style:{left:`${m(w.at.x)-4}px`,top:`${f(w.at.y)-4}px`,"--identity-color":An(w.id)}},w.id,!1,void 0,this)),i("span",{class:"minimap-frame",style:{left:`${m(_)}px`,top:`${f(N)}px`,width:`${o/l.scale*d}px`,height:`${r/l.scale*d}px`}},void 0,!1,void 0,this),i("span",{class:"minimap-zoom",children:[Math.round(l.scale*100),"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Ck(){let e=Ne.value.size,t=j(()=>{let c=Array.from(Ne.value);if(c.length===0)return;Sc(c),Ut()},[]),n=j(()=>{let c=Array.from(Ne.value);if(c.length===0)return;ii({title:"Group",childIds:c}),Ut()},[]),o=j(()=>{let c=Array.from(Ne.value);for(let l=0;l<c.length;l++)for(let u=l+1;u<c.length;u++)xr(c[l],c[u],"relation");Ut()},[]),r=j(()=>{let c=Array.from(Ne.value);for(let l of c)Oo(l);Ut()},[]);if(e===0)return null;let s=e>=2,a=!_t.value&&Le.value.size>0&&!Gn.value;return i("div",{class:`selection-bar${a?" is-above-pin-bar":""}`,role:"toolbar","aria-label":"Selection",children:[i("span",{class:"selection-bar-count",children:[e," node",e!==1?"s":""," selected"]},void 0,!0,void 0,this),s&&i(_e,{children:[i("span",{class:"selection-bar-sep"},void 0,!1,void 0,this),i(Qe,{label:"Align left",side:"up",children:i("button",{type:"button",class:"selection-bar-icon","aria-label":"Align left",onClick:()=>Bd("left"),children:i("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","aria-hidden":"true",children:[i("line",{x1:"2.5",y1:"2",x2:"2.5",y2:"14"},void 0,!1,void 0,this),i("rect",{x:"5",y:"3.5",width:"8",height:"3.5",rx:"1"},void 0,!1,void 0,this),i("rect",{x:"5",y:"9",width:"5",height:"3.5",rx:"1"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(Qe,{label:"Align top",side:"up",children:i("button",{type:"button",class:"selection-bar-icon","aria-label":"Align top",onClick:()=>Bd("top"),children:i("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","aria-hidden":"true",children:[i("line",{x1:"2",y1:"2.5",x2:"14",y2:"2.5"},void 0,!1,void 0,this),i("rect",{x:"3.5",y:"5",width:"3.5",height:"8",rx:"1"},void 0,!1,void 0,this),i("rect",{x:"9",y:"5",width:"3.5",height:"5",rx:"1"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(Qe,{label:"Distribute horizontally",body:"Evens the gaps. A selection that cannot fit flows into a clean row instead of overlapping.",side:"up",children:i("button",{type:"button",class:"selection-bar-icon","aria-label":"Distribute",disabled:e<3,onClick:()=>Fb(),children:i("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","aria-hidden":"true",children:[i("rect",{x:"1.5",y:"5",width:"3.5",height:"6",rx:"1"},void 0,!1,void 0,this),i("rect",{x:"6.25",y:"5",width:"3.5",height:"6",rx:"1"},void 0,!1,void 0,this),i("rect",{x:"11",y:"5",width:"3.5",height:"6",rx:"1"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(Qe,{label:"Auto-arrange selection",side:"up",children:i("button",{type:"button",class:"selection-bar-icon","aria-label":"Auto-arrange",onClick:()=>Bb(),children:i(go,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("span",{class:"selection-bar-sep"},void 0,!1,void 0,this),i(Qe,{label:"Group the selection",shortcut:"G",side:"up",children:i("button",{type:"button",class:"selection-bar-action",onClick:n,children:[i("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-dasharray":"3 2.5","aria-hidden":"true",children:i("rect",{x:"1.5",y:"1.5",width:"13",height:"13",rx:"2"},void 0,!1,void 0,this)},void 0,!1,void 0,this),"Group"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),i(Qe,{label:"Connect every pair",side:"up",children:i("button",{type:"button",class:"selection-bar-action",onClick:o,children:"Connect"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i(Qe,{label:"Pin to agent context",side:"up",children:i("button",{type:"button",class:"selection-bar-action is-pin",onClick:t,children:[i("span",{"aria-hidden":"true",children:"✦"},void 0,!1,void 0,this),"Pin as context"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),i("span",{class:"selection-bar-sep"},void 0,!1,void 0,this),i(Qe,{label:"Delete selection",side:"up",children:i("button",{type:"button",class:"selection-bar-icon is-danger","aria-label":"Delete selection",onClick:r,children:i("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","aria-hidden":"true",children:[i("path",{d:"M2.5 4 H13.5"},void 0,!1,void 0,this),i("path",{d:"M5.5 4 V2.5 H10.5 V4"},void 0,!1,void 0,this),i("path",{d:"M4 4 L4.8 13.5 H11.2 L12 4"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(Qe,{label:"Clear selection",shortcut:"Esc",side:"up",children:i("button",{type:"button",class:"selection-bar-icon",onClick:Ut,"aria-label":"Clear selection",children:i(Ve,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function tu(e,t=Date.now()){if(!e.expiresAt)return null;let n=Date.parse(e.expiresAt);if(!Number.isFinite(n))return null;return Math.max(0,n-t)}function nu(e){let t=Math.max(0,Math.ceil(e/1000)),n=Math.floor(t/60),o=t%60;return`${n}:${String(o).padStart(2,"0")}`}var JN={todo:"queued","in-progress":"running",blocked:"awaiting",done:"done",cancelled:"vetoed"},YN={todo:"queued","in-progress":"running",blocked:"awaiting",done:"done",cancelled:"cancelled"},Ek=[{id:"all",label:"All",hint:"Everything below in one feed, newest first"},{id:"update",label:"Updates",hint:"Board edits agents made — nodes, edges, pins, work items"},{id:"steer",label:"Steer",hint:"Instructions sent to agents — by you from the composer, or agent-to-agent"},{id:"assistant",label:"Assistant",hint:"Messages agents posted for you to read"},{id:"event",label:"Events",hint:"Run telemetry — tool runs, approvals, failures, policy notes"},{id:"evidence",label:"Evidence",hint:"Proof agents recorded — test results, artifacts, links"}],Ak=Object.fromEntries(Ek.map((e)=>[e.id,e.hint])),QN={policy:"warn",prompt:"accent","assistant-message":"muted","tool-start":"accent","tool-result":"ok",failure:"danger",approval:"warn",steering:"purple",command:"accent",note:"muted",evidence:"ok",steer:"purple",update:"purple",yield:"warn"};function Hm(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return"";return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}function ez({item:e}){let t=JN[e.status]??"queued",n=e.nodeIds[0];return i("li",{class:`session-item status-${t}`,"data-work-item-id":e.id,children:[i("span",{class:"session-glyph","aria-hidden":"true"},void 0,!1,void 0,this),i("div",{class:"session-item-main",children:[i("button",{type:"button",class:"session-item-title",title:n?"Focus the linked node":void 0,disabled:!n,onClick:()=>n&&pt(n),children:e.title},void 0,!1,void 0,this),e.detail&&i("div",{class:"session-item-detail",children:e.detail},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("span",{class:"session-item-status",children:YN[e.status]??t},void 0,!1,void 0,this),i("span",{class:"session-item-time",children:Hm(e.updatedAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function tz({gate:e,now:t}){let[n,o]=A(null),r=async(c)=>{o(c),await pS(e,c),o(null)},s=e.nodeIds[0],a=tu(e,t);return i("li",{class:"session-item status-awaiting session-gate","data-gate-id":e.id,children:[i("span",{class:"session-glyph","aria-hidden":"true"},void 0,!1,void 0,this),i("div",{class:"session-item-main",children:[i("button",{type:"button",class:"session-item-title",title:s?"Focus the linked node":void 0,disabled:!s,onClick:()=>s&&pt(s),children:e.title},void 0,!1,void 0,this),e.detail&&i("div",{class:"session-item-detail",children:e.detail},void 0,!1,void 0,this),a!==null&&i("div",{class:"session-gate-ttl","data-testid":"gate-countdown",children:["auto-holds in ",nu(a)," if unanswered"]},void 0,!0,void 0,this),i("div",{class:"session-gate-actions",children:[i("button",{type:"button",class:"session-gate-approve",disabled:n!==null,onClick:()=>void r("approved"),children:n==="approved"?"Approving…":"Approve"},void 0,!1,void 0,this),i("button",{type:"button",class:"session-gate-reject",disabled:n!==null,onClick:()=>void r("rejected"),children:n==="rejected"?"Rejecting…":"Reject"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),i("span",{class:"session-item-time",children:Hm(e.createdAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function nz({gate:e}){let[t,n]=A(!1);return i("li",{class:"session-item status-vetoed session-gate-held","data-gate-id":e.id,children:[i("span",{class:"session-glyph","aria-hidden":"true"},void 0,!1,void 0,this),i("div",{class:"session-item-main",children:[i("span",{class:"session-item-title",children:e.title},void 0,!1,void 0,this),i("div",{class:"session-item-detail",children:"Auto-held — no answer in time, the action did not proceed."},void 0,!1,void 0,this),i("div",{class:"session-gate-actions",children:i("button",{type:"button",class:"session-gate-reject",disabled:t,onClick:()=>{n(!0),mS(e).finally(()=>n(!1))},children:t?"Reopening…":"Reopen"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("span",{class:"session-item-status",children:"held"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function oz(e){let t=e.resolvedBy;if(!t)return e.status;let n=e.status==="approved"?"Approved":"Rejected";if(t.actor==="human")return`${n} by you`;if(t.actor==="system")return`${n} by system`;let o=t.agentId||t.source||"agent";return`${e.selfAnswer?"Self-":""}${n.toLowerCase()} by ${o}`}function rz({gate:e}){return i("li",{class:`session-item status-${e.status}`,"data-gate-id":e.id,children:[i("span",{class:"session-glyph","aria-hidden":"true"},void 0,!1,void 0,this),i("div",{class:"session-item-main",children:[i("span",{class:"session-item-title",children:e.title},void 0,!1,void 0,this),i("div",{class:"session-item-detail",children:oz(e)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function iz(){let e=Qo.value,t=Ne.value.size,[n,o]=A(!1),r=(s)=>{o(!0),sS(s).finally(()=>o(!1))};return i("div",{class:`session-scope${e?" is-fenced":""}`,"data-testid":"session-scope",children:[i("span",{class:"session-scope-dot","aria-hidden":"true"},void 0,!1,void 0,this),e?i(_e,{children:[i("span",{class:"session-scope-text",children:["Scoped to ",i("strong",{children:e.nodeIds.length},void 0,!1,void 0,this)," node",e.nodeIds.length===1?"":"s"," · writes outside are blocked"]},void 0,!0,void 0,this),i("button",{type:"button",class:"session-scope-action",disabled:n,onClick:()=>r(null),children:"Clear"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):i(_e,{children:[i("span",{class:"session-scope-text",children:"Unscoped — the agent may write anywhere"},void 0,!1,void 0,this),i("button",{type:"button",class:"session-scope-action",disabled:n||t===0,title:t===0?"Select nodes on the canvas first":"Fence the agent to the selected nodes",onClick:()=>r([...Ne.value]),children:["Fence to selection",t>0?` (${t})`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function sz(e){if(e==="browser")return"you";return It.value.find((n)=>n.sessionId===e||n.source===e)?.label??e}function az({entry:e}){let t=ea.value.has(e.id);return i("li",{class:`session-timeline-row tone-${QN[e.kind]??"muted"}`,children:[i("span",{class:"session-timeline-dot","aria-hidden":"true"},void 0,!1,void 0,this),i("div",{class:"session-timeline-main",children:[i("div",{class:"session-timeline-head",children:[i("span",{class:"session-timeline-label",title:Ak[Sm(e.kind)],children:e.label},void 0,!1,void 0,this),e.who&&i("span",{class:"session-timeline-who",style:{"--identity-color":An(e.who)},children:sz(e.who)},void 0,!1,void 0,this),i("span",{class:"session-item-time",children:Hm(e.createdAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"session-timeline-body",children:e.body},void 0,!1,void 0,this),e.undoable&&!t&&i("button",{type:"button",class:"session-timeline-undo","data-testid":"timeline-undo",onClick:()=>void km(e),children:[i(Gd,{size:14},void 0,!1,void 0,this)," undo this edit"]},void 0,!0,void 0,this),t&&i("div",{class:"session-timeline-undone",children:"undone · steering sent"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Ik(){let[e,t]=A(!1),n=Li.value,o=iS.value,r=Mr.value,s=aS.value,a=cS.value,c=dS.value,[l,u]=A(!1),[p,d]=A(null),m=xo();if(H(()=>{er()},[]),!(e||r.length>0))return i("aside",{class:"session-panel is-collapsed","aria-label":"Session (collapsed)",children:[i("button",{type:"button",class:"session-collapse",onClick:()=>t(!0),title:"Expand session panel",children:"‹"},void 0,!1,void 0,this),n&&i("span",{class:`session-collapsed-live phase-${n.phase}`,title:Jo(n),"aria-label":`Session live: ${Jo(n)}`,children:[i("span",{class:"session-live-dot","aria-hidden":"true"},void 0,!1,void 0,this),"live"]},void 0,!0,void 0,this),i("span",{class:"session-collapsed-label",children:"Session"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return i("aside",{class:"session-panel","aria-label":"Session",children:[i("header",{class:"session-panel-header",children:[i("span",{class:"session-panel-title",children:"Session"},void 0,!1,void 0,this),n&&i("span",{class:`session-live phase-${n.phase}`,title:Jo(n),children:[i("span",{class:"session-live-dot","aria-hidden":"true"},void 0,!1,void 0,this),"live"]},void 0,!0,void 0,this),i("span",{class:"top-bar-spacer"},void 0,!1,void 0,this),n&&i("button",{type:"button",class:"session-end",title:"End this session — a receipt and a snapshot of the board follow",onClick:()=>void Bl(n),children:"End"},void 0,!1,void 0,this),i("button",{type:"button",class:"session-collapse",onClick:()=>t(!1),title:"Collapse session panel","aria-label":"Collapse session panel",children:i(ks,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i(iz,{},void 0,!1,void 0,this),(()=>{let h=c.find((v)=>v.undoable&&!ea.value.has(v.id));if(!h)return null;return i("div",{class:"session-undo-row","data-testid":"session-undo-row",children:[i("span",{class:"session-undo-text",title:h.body,children:["Agent edit on top: ",h.body]},void 0,!0,void 0,this),i("button",{type:"button",class:"session-undo-btn",onClick:()=>void km(h),children:[i(Gd,{size:14},void 0,!1,void 0,this)," Undo"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)})(),i("div",{class:"session-panel-body",children:[i("section",{class:"session-section",children:(()=>{let h=o.filter((M)=>M.status==="in-progress"||M.status==="todo").length,v=o.filter((M)=>M.status!=="cancelled"),x=v.filter((M)=>M.status==="done").length,g=o.length-v.length,b=r.length>0,I=l||b,R=h>0?`${h} running`:v.length>0?`${x}/${v.length} done${g>0?` · ${g} cancelled`:""}`:o.length>0?`${o.length} cancelled`:"none yet";return i(_e,{children:[i("button",{type:"button",class:"session-section-toggle","aria-expanded":I,"data-testid":"work-items-toggle",onClick:()=>u((M)=>!M),children:[i("span",{class:"session-section-title",children:"Work items"},void 0,!1,void 0,this),i("span",{class:"session-work-summary",children:[h>0&&i("span",{class:"session-work-dot","aria-hidden":"true"},void 0,!1,void 0,this),R]},void 0,!0,void 0,this),i("span",{class:`session-section-chevron${I?" is-open":""}`,"aria-hidden":"true",children:i(ks,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),I&&(r.length===0&&s.length===0&&a.length===0&&o.length===0?i("div",{class:"session-empty",children:"No work items yet — the agent's tasks and gates appear here."},void 0,!1,void 0,this):i("ul",{class:"session-list","aria-live":"polite","aria-label":"Work items and gates",children:[r.map((M)=>i(tz,{gate:M,now:m},M.id,!1,void 0,this)),s.map((M)=>i(nz,{gate:M},M.id,!1,void 0,this)),a.map((M)=>i(rz,{gate:M},M.id,!1,void 0,this)),o.map((M)=>i(ez,{item:M},M.id,!1,void 0,this))]},void 0,!0,void 0,this))]},void 0,!0,void 0,this)})()},void 0,!1,void 0,this),i("section",{class:"session-section",children:[i("h3",{class:"session-section-title",children:"Timeline"},void 0,!1,void 0,this),i("div",{class:"session-timeline-filters",role:"group","aria-label":"Filter timeline",children:Ek.map((h)=>i("button",{type:"button",class:`activity-filter${$r.value===h.id?" is-active":""}`,"aria-pressed":$r.value===h.id,title:h.hint,onMouseEnter:()=>d(h.id),onMouseLeave:()=>d((v)=>v===h.id?null:v),onFocus:()=>d(h.id),onBlur:()=>d((v)=>v===h.id?null:v),onClick:()=>{$r.value=h.id},children:h.label},h.id,!1,void 0,this))},void 0,!1,void 0,this),i("div",{class:"session-timeline-hint","data-testid":"timeline-filter-hint",children:Ak[p??$r.value]},void 0,!1,void 0,this),c.length===0?i("div",{class:"session-empty",children:$r.value==="all"?"Nothing recorded yet.":"Nothing of this kind yet."},void 0,!1,void 0,this):i("ul",{class:"session-list session-timeline","aria-live":"polite","aria-label":"Timeline",children:c.map((h)=>i(az,{entry:h},h.id,!1,void 0,this))},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 jm(e){if(!e||typeof e!=="object")return null;let t=e,n=(o)=>Array.isArray(o)?o.length:0;return{added:n(t.addedNodes)+n(t.addedEdges),removed:n(t.removedNodes)+n(t.removedEdges),modified:n(t.modifiedNodes)}}var Pk=(e)=>e.map((t)=>t.title).join(", ");function cz({context:e,label:t}){let o=[{key:"read",name:"Read",glyph:"eye"},{key:"pinned",name:"Pinned",glyph:"pin"},{key:"created",name:"Created",glyph:"spark"},{key:"edited",name:"Edited",glyph:"pen"}].filter((s)=>e[s.key].length>0);if(o.length===0&&e.changedSinceRead.length===0)return null;let r=nr.value!==null;return i("div",{class:"session-receipt-context","data-testid":"session-receipt-context",children:[e.changedSinceRead.length>0&&i("div",{class:"session-receipt-warn",children:[i("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:i("path",{d:Zl.warn},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("span",{children:[Pk(e.changedSinceRead)," changed after ",t," read"," ",e.changedSinceRead.length===1?"it":"them","."]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),o.map((s)=>i("div",{class:"session-receipt-context-row","data-row":s.key,children:[i("div",{class:"session-receipt-context-head",children:[s.glyph==="pin"?i($c,{},void 0,!1,void 0,this):i("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:i("path",{d:Zl[s.glyph]},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("span",{class:"session-receipt-context-name",children:s.name},void 0,!1,void 0,this),i("span",{class:"session-receipt-context-count",children:e[s.key].length},void 0,!1,void 0,this),s.key==="pinned"&&i("button",{type:"button",class:"session-receipt-mini",onClick:()=>{for(let a of e.pinned)Jn(a.id)},children:"Unpin"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"session-receipt-context-items",children:s.key==="pinned"?e.pinned.map((a)=>a.reason?`${a.title} — “${a.reason}”`:a.title).join("; "):Pk(e[s.key])},void 0,!1,void 0,this)]},s.key,!0,void 0,this)),i("button",{type:"button",role:"switch","aria-checked":r,class:`session-receipt-lens${r?" is-on":""}`,onClick:()=>Cm(!r),children:[i("span",{class:"session-receipt-lens-track","aria-hidden":"true",children:i("span",{class:"session-receipt-lens-knob"},void 0,!1,void 0,this)},void 0,!1,void 0,this),"Dim untouched nodes"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Nk({onOpenSnapshots:e}){let t=Di.value,[n,o]=A(null),[r,s]=A(!1);if(H(()=>o(null),[t]),!t)return null;let a=async()=>{if(!t.snapshot)return;s(!0);try{let u=await ct(`/api/canvas/snapshots/${encodeURIComponent(t.snapshot.id)}/diff`,{headers:{"x-pmx-workbench":"1"}});if(u.ok){let p=await u.json();o(jm(p.diff)??{added:0,removed:0,modified:0})}}finally{s(!1)}},c=new Date(t.endedAt),l=Number.isNaN(c.getTime())?"":`${String(c.getHours()).padStart(2,"0")}:${String(c.getMinutes()).padStart(2,"0")}`;return i("div",{class:"session-receipt","data-testid":"session-receipt",role:"status",children:[i("div",{class:"session-receipt-head",children:[i("span",{class:"session-receipt-dot","aria-hidden":"true"},void 0,!1,void 0,this),i("span",{class:"session-receipt-title",children:[t.sessions>1?`${t.sessions} sessions ended`:t.endedBy==="human"?"Session ended by you":t.endedBy==="idle-timeout"?"Session ended — idle timeout":t.endedBy==="agent"?"Session ended by the agent":"Session ended",l?` · ${l}`:""]},void 0,!0,void 0,this),i("button",{type:"button",class:"session-receipt-close",onClick:Hl,"aria-label":"Dismiss receipt",children:i(Ve,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t.sessions>1&&i("div",{class:"session-receipt-who",children:t.labels.join(", ")},void 0,!1,void 0,this),i("div",{class:"session-receipt-tiles",children:[i("div",{class:"session-receipt-tile",children:[i("span",{class:"session-receipt-tile-label",children:"Items"},void 0,!1,void 0,this),i("span",{class:"session-receipt-tile-value",children:t.counts.items},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"session-receipt-tile",children:[i("span",{class:"session-receipt-tile-label",children:"Done"},void 0,!1,void 0,this),i("span",{class:"session-receipt-tile-value tone-ok",children:t.counts.done},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t.counts.cancelled>0&&i("div",{class:"session-receipt-tile",children:[i("span",{class:"session-receipt-tile-label",children:"Cancelled"},void 0,!1,void 0,this),i("span",{class:"session-receipt-tile-value tone-muted",children:t.counts.cancelled},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t.counts.rejected>0&&i("div",{class:"session-receipt-tile",children:[i("span",{class:"session-receipt-tile-label",children:"Rejected"},void 0,!1,void 0,this),i("span",{class:"session-receipt-tile-value tone-danger",children:t.counts.rejected},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t.counts.held>0&&i("div",{class:"session-receipt-tile",children:[i("span",{class:"session-receipt-tile-label",children:"Held"},void 0,!1,void 0,this),i("span",{class:"session-receipt-tile-value tone-warn",children:t.counts.held},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),i(cz,{context:t.context,label:t.labels.join(", ")},void 0,!1,void 0,this),i("div",{class:"session-receipt-note",children:t.sessions>1?"History has each session’s diff and the snapshot from before it.":t.snapshot?"A snapshot of the board from before this session is saved — restore it to undo the session.":t.context.created.length===0&&t.context.edited.length===0?"The board itself did not change — nothing to restore.":"The board was empty when the session started — nothing to restore."},void 0,!1,void 0,this),n&&i("div",{class:"session-receipt-diff","data-testid":"session-receipt-diff",children:["This session: ",n.added," added · ",n.removed," removed · ",n.modified," modified"]},void 0,!0,void 0,this),i("div",{class:"session-receipt-actions",children:[t.snapshot&&i("button",{type:"button",class:"session-receipt-primary",disabled:r,onClick:()=>void a(),children:r?"Comparing…":"View diff"},void 0,!1,void 0,this),i("button",{type:"button",class:"session-receipt-secondary",title:"Open the History drawer — saved boards and past sessions",onClick:e,children:"History"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var lz=[{title:"Tools",shortcuts:[{keys:"V",desc:"Select tool — drag empty space to lasso"},{keys:"Space (hold)",desc:"Pan — drag anywhere moves the board"},{keys:"A",desc:"Annotate — draw on the canvas"}]},{title:"Navigation",shortcuts:[{keys:rt("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:"F",desc:"Fit all nodes on screen"},{keys:rt("0"),desc:"Reset viewport to origin"},{keys:`${rt("+")} / ${rt("−")}`,desc:"Zoom in / out"}]},{title:"Creation",shortcuts:[{keys:"M",desc:"New markdown note"},{keys:"I / W / H",desc:"New image / webpage / HTML surface"},{keys:"Shift+F",desc:"New file node (workspace path)"},{keys:"G / Shift+G",desc:"Group the selection (new frame when empty) / ungroup"},{keys:"Double-click",desc:"Open actions on a node or create menu 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:"Drag empty space",desc:"Lasso select multiple nodes"},{keys:Es?"Delete / ⌫":"Delete / Backspace",desc:"Delete the selection (or the focused node)"},{keys:Es?"⌘Z / ⇧⌘Z":"Ctrl+Z / Ctrl+Y",desc:"Undo / redo — agent edits included"},{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 the rail)"},{keys:"Right-drag",desc:"Pan the board from anywhere"}]}];function zk({onClose:e}){return i("div",{class:"shortcut-overlay-backdrop",onMouseDown:e,children:i("div",{class:"shortcut-overlay",onMouseDown:(t)=>t.stopPropagation(),children:[i("div",{class:"shortcut-overlay-header",children:[i("span",{class:"shortcut-overlay-title",children:"Keyboard Shortcuts"},void 0,!1,void 0,this),i("span",{class:"shortcut-overlay-hint",children:["Press ",i("kbd",{children:"?"},void 0,!1,void 0,this)," or ",i("kbd",{children:"Esc"},void 0,!1,void 0,this)," to close"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"shortcut-overlay-body",children:lz.map((t)=>i("div",{class:"shortcut-group",children:[i("div",{class:"shortcut-group-title",children:t.title},void 0,!1,void 0,this),t.shortcuts.map((n)=>i("div",{class:"shortcut-row",children:[i("kbd",{class:"shortcut-keys",children:n.keys},void 0,!1,void 0,this),i("span",{class:"shortcut-desc",children:Se()&&n.desc.startsWith("Undo / redo")?"Undo / redo — available in the local workbench only":n.desc},void 0,!1,void 0,this)]},n.keys,!0,void 0,this))]},t.title,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var Rk="Before session · ";function Mk(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return"";return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}function uz(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/60000);if(n<1)return"just now";if(n<60)return`${n}m ago`;let o=Math.floor(n/60);if(o<24)return`${o}h ago`;return`${Math.floor(o/24)}d ago`}function ou(e){if(!e.startsWith(Rk))return null;let t=e.slice(Rk.length),n=t.lastIndexOf(" · ");return n>0?t.slice(0,n):t}function $k({open:e,onClose:t,anchorRef:n}){let[o,r]=A([]),[s,a]=A(!1),[c,l]=A(!1),[u,p]=A(null),[d,m]=A(""),[f,h]=A(null),[v,x]=A({}),g=L(null),b=L(null);H(()=>{if(!e)return;a(!0),_b().then((w)=>{r(w),a(!1)})},[e]),H(()=>{if(e)setTimeout(()=>b.current?.focus(),50)},[e]),H(()=>{if(!e)return;let w=(k)=>{let z=g.current,X=n.current;if(z&&!z.contains(k.target)&&X&&!X.contains(k.target))t()};return document.addEventListener("mousedown",w),()=>document.removeEventListener("mousedown",w)},[e,t]),H(()=>{if(!e)return;let w=(k)=>{if(k.key==="Escape")t()};return document.addEventListener("keydown",w),()=>document.removeEventListener("keydown",w)},[e,t]);let I=j(async()=>{let w=d.trim();if(!w)return;l(!0);let k=await Sb(w);if(l(!1),k.ok&&k.snapshot)r((z)=>[k.snapshot,...z]),m("")},[d]),R=j(async(w)=>{h(null),p(w);let k=await kb(w);if(p(null),k.ok)t()},[t]),M=j(async(w)=>{if((await Tb(w)).ok)r((z)=>z.filter((X)=>X.id!==w));h(null)},[]),_=j(async(w)=>{x((z)=>({...z,[w]:"loading"}));let k=await ne("snapshotDiff",`/api/canvas/snapshots/${encodeURIComponent(w)}/diff`,{});x((z)=>({...z,[w]:jm(k.diff)??{added:0,removed:0,modified:0}}))},[]);if(!e)return null;let N=(w,k)=>f?.id===w.id?i(_e,{children:[i("button",{type:"button",class:`snapshot-action-btn ${f.action==="delete"?"snapshot-action-confirm":"snapshot-action-restore"}`,onClick:()=>f.action==="delete"?M(w.id):R(w.id),title:f.action==="delete"?"Confirm delete":"Confirm restore",disabled:u!==null,children:f.action==="delete"?"Delete":u===w.id?"Restoring…":"Confirm"},void 0,!1,void 0,this),i("button",{type:"button",class:"snapshot-action-btn",onClick:()=>h(null),title:"Cancel",disabled:u!==null,children:"Cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):i(_e,{children:[i("button",{type:"button",class:"snapshot-action-btn snapshot-action-restore",onClick:()=>h({id:w.id,action:"restore"}),title:Se()?"Restore this snapshot — replaces the current canvas":"Restore this snapshot — replaces the current canvas (undoable)",disabled:u!==null,children:u===w.id?"Restoring…":k},void 0,!1,void 0,this),i("button",{type:"button",class:"snapshot-action-btn snapshot-action-delete",onClick:()=>h({id:w.id,action:"delete"}),title:"Delete this snapshot","aria-label":"Delete snapshot",disabled:u!==null,children:i(Ve,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return i("div",{ref:g,class:"snapshot-panel","data-testid":"history-drawer",role:"dialog","aria-label":"History",children:[i("div",{class:"snapshot-panel-header",children:[i("span",{class:"snapshot-panel-title",children:"History"},void 0,!1,void 0,this),i("span",{class:"snapshot-panel-sub",children:"snapshots + sessions"},void 0,!1,void 0,this),i("span",{class:"snapshot-panel-spacer"},void 0,!1,void 0,this),i("button",{type:"button",class:"snapshot-panel-close",onClick:t,title:"Close","aria-label":"Close history",children:i(Ve,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"snapshot-save-form",children:[i("input",{ref:b,type:"text",class:"snapshot-name-input",value:d,onInput:(w)=>m(w.target.value),onKeyDown:(w)=>{if(w.key==="Enter")I()},placeholder:"Save a snapshot as…","aria-label":"Snapshot name",maxLength:80,disabled:c},void 0,!1,void 0,this),i("button",{type:"button",class:"snapshot-save-btn",onClick:I,disabled:!d.trim()||c,children:c?"…":"Save"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"snapshot-restore-note",children:Se()?"Restoring replaces the current canvas. Save a snapshot first to keep your current state.":"Restoring replaces the current canvas. You can undo it if needed."},void 0,!1,void 0,this),i("div",{class:"snapshot-list",children:[s&&i("div",{class:"snapshot-empty",children:"Loading…"},void 0,!1,void 0,this),!s&&o.length===0&&i("div",{class:"snapshot-empty",children:"No history yet. Save a snapshot, or start an agent session — it snapshots for you."},void 0,!1,void 0,this),!s&&[...o.filter((w)=>ou(w.name)===null),...o.some((w)=>ou(w.name)!==null)?[{id:"__sessions-header__"}]:[],...o.filter((w)=>ou(w.name)!==null)].map((w)=>{if(w.id==="__sessions-header__")return i("div",{class:"snapshot-section-header","data-testid":"history-sessions-header",children:"Sessions"},w.id,!1,void 0,this);let k=ou(w.name),z=v[w.id];if(k!==null)return i("div",{class:"snapshot-item is-session","data-testid":"history-session",children:[i("div",{class:"snapshot-item-head",children:[i("span",{class:"snapshot-session-dot","aria-hidden":"true"},void 0,!1,void 0,this),i("span",{class:"snapshot-item-name",children:["Agent session — ",k]},void 0,!0,void 0,this),i("span",{class:"snapshot-item-time",children:Mk(w.createdAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"snapshot-item-meta",children:["snapshot at session start · ",w.nodeCount," node",w.nodeCount!==1?"s":"",z&&z!=="loading"&&i("span",{class:"snapshot-item-diff",children:[" ","· since: ",z.added," added · ",z.removed," removed · ",z.modified," modified"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"snapshot-item-actions is-session",children:[i("button",{type:"button",class:"snapshot-action-btn snapshot-action-diff",disabled:z==="loading",onClick:()=>void _(w.id),children:z==="loading"?"Comparing…":"View diff"},void 0,!1,void 0,this),N(w,"Restore pre-state")]},void 0,!0,void 0,this)]},w.id,!0,void 0,this);return i("div",{class:"snapshot-item","data-testid":"history-snapshot",children:[i("div",{class:"snapshot-item-head",children:[i("span",{class:"snapshot-item-glyph","aria-hidden":"true",children:"◫"},void 0,!1,void 0,this),i("span",{class:"snapshot-item-name",children:w.name},void 0,!1,void 0,this),i("span",{class:"snapshot-item-time",children:Mk(w.createdAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("div",{class:"snapshot-item-meta",children:[w.nodeCount," node",w.nodeCount!==1?"s":"",w.edgeCount>0?` · ${w.edgeCount} edge${w.edgeCount!==1?"s":""}`:""," · ",uz(w.createdAt)]},void 0,!0,void 0,this),i("div",{class:"snapshot-item-actions",children:N(w,"Restore")},void 0,!1,void 0,this)]},w.id,!0,void 0,this)})]},void 0,!0,void 0,this),i("div",{class:"snapshot-panel-foot",children:"Every agent session start writes a snapshot automatically."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var dz=8;function pz({children:e}){let t=Be(()=>document.createElement("div"),[]);return _n(()=>(document.body.appendChild(t),()=>{Qi(null,t),t.remove()}),[t]),_n(()=>Qi(e,t),[e,t]),null}function Ok({fallbackName:e}){let[t,n]=A(!1),o=L(null),r=L(null),s=L(null);_n(()=>{if(!t)return;let d=(f)=>{if(f.target instanceof Node&&!o.current?.contains(f.target)&&!s.current?.contains(f.target))n(!1)},m=(f)=>{if(f.key==="Escape")f.stopPropagation(),n(!1),r.current?.focus()};return document.addEventListener("pointerdown",d,!0),document.addEventListener("keydown",m,!0),()=>{document.removeEventListener("pointerdown",d,!0),document.removeEventListener("keydown",m,!0)}},[t]);let a=dc(),c=!$o.value?e:a?a.name:"Home",l=rn.value.filter((d)=>d.id!==Oe.value).slice(0,dz),u=r.current?.getBoundingClientRect(),p=(d)=>{n(!1),sn(d)};return i("span",{class:"board-switcher",ref:o,children:[i("button",{ref:r,type:"button",class:"top-bar-title board-switcher-button","aria-haspopup":"menu","aria-expanded":t,"aria-label":`Board: ${c}. Switch board`,onClick:()=>n((d)=>!d),children:[i("span",{class:"board-switcher-name",children:c},void 0,!1,void 0,this),i("span",{class:"board-switcher-caret","aria-hidden":"true",children:i(Nc,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t&&u&&i(pz,{children:i("div",{ref:s,class:"toolbar-menu board-switcher-menu",role:"menu","aria-label":"Boards",style:{position:"fixed",left:`min(${u.left}px, max(12px, calc(100vw - 352px)))`,top:`${u.bottom+8}px`,right:"auto",maxHeight:`min(70vh, calc(100dvh - ${u.bottom+20}px))`},children:[l.length>0&&i("div",{class:"board-switcher-heading",children:"Recent boards"},void 0,!1,void 0,this),i("div",{class:"board-switcher-recents",children:l.map((d)=>i("button",{type:"button",role:"menuitem",class:"toolbar-menu-item",onClick:()=>p(d.id),children:[i("span",{class:"board-switcher-icon","aria-hidden":"true",children:i(Oc,{size:18},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("span",{class:"board-switcher-item-copy",children:[i("span",{class:"board-switcher-item-name",children:d.name},void 0,!1,void 0,this),i("span",{class:"board-switcher-item-folder",children:d.category?.split("/").join(" / ")||"Unfiled"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i("span",{class:"board-switcher-item-meta",children:[d.nodeCount," ",d.nodeCount===1?"node":"nodes"]},void 0,!0,void 0,this)]},d.id,!0,void 0,this))},void 0,!1,void 0,this),i("div",{class:"board-switcher-actions",children:[i("button",{type:"button",role:"menuitem",class:"toolbar-menu-item",onClick:()=>{n(!1),Fm()},children:[i("span",{class:"board-switcher-icon","aria-hidden":"true",children:i(ox,{size:18},void 0,!1,void 0,this)},void 0,!1,void 0,this),"New board…"]},void 0,!0,void 0,this),i("button",{type:"button",role:"menuitem",class:"toolbar-menu-item",onClick:()=>p(null),children:[i("span",{class:"board-switcher-icon","aria-hidden":"true",children:i(go,{size:18},void 0,!1,void 0,this)},void 0,!1,void 0,this),"All boards (Home)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Lk=3,Dk={"waiting-approval":0,thinking:1,tooling:2,idle:3};function mz(){let e=nS.value;if(e.length===0)return null;let t=e.filter((c)=>!c.parentAgentId||!e.some((l)=>l.sessionId!==c.sessionId&&!l.parentAgentId&&(l.sessionId===c.parentAgentId||l.source===c.parentAgentId))),n=[...t].sort((c,l)=>(Dk[c.phase]??4)-(Dk[l.phase]??4)),o=n.slice(0,Lk),r=n.slice(Lk),s=t.reduce((c,l)=>(c[l.phase]=(c[l.phase]??0)+1,c),{}),a=[s["waiting-approval"]&&`${s["waiting-approval"]} waiting on approval`,s.thinking&&`${s.thinking} thinking`,s.tooling&&`${s.tooling} running tools`,s.idle&&`${s.idle} idle`].filter(Boolean).join(", ");return i(_e,{children:[i("span",{class:"agent-chips",children:o.map((c)=>{let l=c.parentAgentId?0:It.value.filter((u)=>u.parentAgentId!=null&&(u.parentAgentId===c.sessionId||u.parentAgentId===c.source)).length;return i(Qe,{label:`Agent session — ${c.label}`,tapToOpen:!0,body:"What this attached agent is doing right now: idle, thinking, running a tool, or waiting on your approval. Steer it from the composer below.",children:i("span",{class:`agent-chip phase-${c.phase}`,"data-phase":c.phase,style:{"--identity-color":An(c.sessionId)},children:[i("span",{class:"agent-chip-dot","aria-hidden":"true"},void 0,!1,void 0,this),i("span",{class:"agent-chip-label",children:Jo(c)},void 0,!1,void 0,this),i("span",{class:"agent-chip-who hud-collapsible-text",children:c.label},void 0,!1,void 0,this),l>0&&i("span",{class:"agent-chip-workers",children:["+",l," worker",l===1?"":"s"]},void 0,!0,void 0,this),i("button",{type:"button",class:"agent-chip-end","aria-label":`End ${c.label} session`,title:`End ${c.label}'s session`,onClick:(u)=>{u.stopPropagation(),Bl({source:c.source,agentId:c.agentId})},children:i(Ve,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},c.sessionId,!1,void 0,this)})},void 0,!1,void 0,this),r.length>0&&i(Qe,{label:`${t.length} agent sessions attached`,tapToOpen:!0,body:`${t.length} agents on this board — ${a}. The most active wear their own chips; the rest are here, and idle agents' cursors leave the board until they work again.`,children:i("span",{class:"agent-chip agent-chip-more","data-testid":"agent-chip-more",children:["+",r.length," · ",t.length," agents"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function fz(){let e=Mr.value.length,t=Li.value!==null&&e>0,n=xo(t?1000:0);if(!t)return null;let o=Mr.value.map((r)=>tu(r,n)).filter((r)=>r!==null).sort((r,s)=>r-s)[0];return i(Qe,{label:"Approval gates waiting on you",tapToOpen:!0,body:"The agent is blocked until you approve or reject in the session panel; unanswered gates auto-hold when the countdown runs out.",children:i("span",{class:"gate-badge",children:[e," gate",e===1?"":"s",o!==void 0&&` · ${nu(o)}`]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function hz(e){if(e>0.9)return"danger";if(e>=0.7)return"warn";return"ok"}function ra(e){return e>=1000?`${(e/1000).toFixed(e>=1e4?0:1)}k`:String(e)}function gz(){let e=Li.value;if(!e)return null;let t=gm.value,n=e.contextUsage,o=n?n.used:t.used,r=n?n.total:t.total,s=r>0?Math.min(1,o/r):0,a=Math.round(s*100),c=n?{label:`Context window — reported by ${e.label}`,body:`${ra(n.used)} of ${ra(n.total)} tokens of the agent's actual context window are used. Your ✦-pinned nodes account for ≈ ${ra(t.used)} tokens of it.`}:{label:"Pins — pinned-context size (estimate)",body:`The nodes you pinned (✦) are what the agent is asked to carry as context: ≈ ${ra(t.used)} of a ${ra(t.total)}-token budget. When the agent's host reports its real context window, this meter switches to showing that instead.`};return i(Qe,{label:c.label,body:c.body,tapToOpen:!0,children:i("span",{class:`context-budget tone-${hz(s)}`,"data-mode":n?"window":"pins",children:[i("span",{class:"context-budget-caption hud-collapsible-text",children:n?"Context":"Pins"},void 0,!1,void 0,this),i("span",{class:"context-budget-track","aria-hidden":"true",children:i("span",{class:"context-budget-fill",style:{width:`${a}%`}},void 0,!1,void 0,this)},void 0,!1,void 0,this),i("span",{class:"context-budget-label","data-testid":"budget-label",children:[o>0&&a===0?"<1":a,"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function vz(){let[e,t]=A(!1);if(Li.value)return null;return i(Qe,{label:"Start an agent session",body:"Attaches a session to this board: the next agent that writes here is adopted into it, and you get the panel, composer, and receipt.",children:i("button",{type:"button",class:"start-session-btn",disabled:e,onClick:()=>{t(!0),tr().finally(()=>t(!1))},children:[i("span",{class:"start-session-dot","aria-hidden":"true"},void 0,!1,void 0,this),"Start agent session",i("span",{class:"beta-tag",children:"beta"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function Fk(){let e=fn.value,t=Yt.value,n=oe.value,o=F.value.size,r=Je.value.size,s=li.value,a=Array.from(F.value.values()).filter((f)=>f.type==="trace").length,[c,l]=A("");H(()=>{let f=!1;return ct("/health").then((h)=>h.ok?h.json():null).then((h)=>{if(f||typeof h?.workspace!=="string"||!h.workspace)return;let v=h.workspace.replace(/[\\/]+$/,"").split(/[\\/]/).pop();if(v)l(v)}).catch(()=>{}),()=>{f=!0}},[]);let u=zm.value,p=u??(e==="connected"&&!t?"syncing":e),d=t?[`${o} node${o!==1?"s":""}`,...r>0?[`${r} edge${r!==1?"s":""}`]:[],...a>0?[`${a} trace${a!==1?"s":""}`]:s?["trace armed"]:[]].join(" · "):"Syncing canvas…",m=()=>{let f=bt();pi(f.width,f.height)};return i("div",{class:"top-bar",children:[i(Qe,{label:`Canvas status: ${p}`,tapToOpen:!0,body:"Live updates stream in over SSE; amber means reconnecting.",align:"start",children:i("span",{class:`connection-dot ${u??e}`,"aria-label":`Canvas status: ${p}`},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(Ok,{fallbackName:c||"PMX Canvas"},void 0,!1,void 0,this),i("span",{class:"top-bar-meta hud-collapsible-text",children:lo.value?lo.value.slice(0,12):"…"},void 0,!1,void 0,this),i("span",{class:"top-bar-meta hud-collapsible-text",children:d},void 0,!1,void 0,this),i("span",{class:"top-bar-spacer"},void 0,!1,void 0,this),i(mz,{},void 0,!1,void 0,this),i(fz,{},void 0,!1,void 0,this),i(gz,{},void 0,!1,void 0,this),i(hk,{},void 0,!1,void 0,this),!Se()&&i(vz,{},void 0,!1,void 0,this),i("div",{class:"top-bar-sep"},void 0,!1,void 0,this),Oe.value&&i(Qe,{label:"Export board",body:"One HTML file of this board that anyone can open, no install needed.",children:i("button",{type:"button",class:"present-button",onClick:()=>{Ui.value=!0},children:"Export"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Oe.value&&i(Qe,{label:"Present board",body:"Arrow keys or Space step through stops; Esc exits. Without a saved tour, groups are read top-to-bottom, left-to-right.",children:i("button",{type:"button",class:"present-button",onClick:()=>{Fn.value=!0},children:"Present"},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(Qe,{label:"Zoom out",shortcut:rt("−"),children:i("button",{type:"button",class:"top-bar-btn",onClick:()=>di(0.8),"aria-label":"Zoom out",children:i(lx,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(Qe,{label:"Reset zoom",shortcut:rt("0"),children:i("button",{type:"button",class:"top-bar-zoom-label",onClick:()=>Fo({x:0,y:0,scale:1},250),"aria-label":"Reset view",children:[Math.round(n.scale*100),"%"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),i(Qe,{label:"Zoom in",shortcut:rt("+"),children:i("button",{type:"button",class:"top-bar-btn",onClick:()=>di(1.25),"aria-label":"Zoom in",children:i(cx,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),i(Qe,{label:"Fit all",shortcut:"F",align:"end",children:i("button",{type:"button",class:"top-bar-btn",onClick:m,"aria-label":"Fit canvas",children:i(zc,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var or={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},board:{x:380,y:80,w:360,h:160},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},diff:{x:380,y:80,w:640,h:420},mermaid:{x:380,y:80,w:640,h:460},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 ia(e,t,n,o={}){let r=or[t];return{id:e,type:t,position:o.position??{x:r.x,y:r.y},size:o.size??{width:r.w,height:r.h},zIndex:t==="status"?0:1,collapsed:!1,pinned:!1,data:n}}var Fr=null,ca=null,ru=0,rr=null,yz=3000,bz=2000,Bk=5000,sa=!1,wo=null,Zi=null,sr=0,ir=null;function xz(){if(Se())return"poll";if(typeof location>"u"||typeof window>"u")return null;let e=new URLSearchParams(location.search).get("transport");if(e==="poll"||e==="sse")return e;if(window.__PMX_AMP_ORB===!0)return"poll";return null}var Wi=new Map;function la(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)|0;return Math.abs(t).toString(36)}function su(e){if(!ca)return e;let t=ca.get(e.id);if(!t)return e;return{...e,position:t.position??e.position,size:t.size??e.size,collapsed:t.collapsed??e.collapsed,pinned:t.pinned??e.pinned}}function ua(e,t,n){return su(ia(e,t,n))}function wz(){return cl([...F.value.values()],or.markdown.w,or.markdown.h)}function qi(){if(!F.value.has("status-main"))po(ua("status-main","status",{phase:"idle",message:"",elapsed:0}))}function _z(e,t){let n=`md-${la(e)}`;if(F.value.get(n))fe(n,{path:e,title:t}),je.value=n;else{let r=wz(),s=ua(n,"markdown",{path:e,title:t,content:"",rendered:""});s.position=r,po(s),pt(n)}}function Sz(e){if(F.value.get("context-main"))fe("context-main",{cards:e});else if(e.length>0){let o=ua("context-main","context",{cards:e});po(o)}}function kz(e){let t=e.url,n=`mcp-${la(t)}`;if(F.value.get(n))fe(n,e);else po(ua(n,"mcp-app",e)),pt(n)}function Tz(e){let t=e.toolCallId,o=(typeof e.nodeId==="string"&&e.nodeId.length>0?e.nodeId:null)??(t.startsWith("ext-app-")?t:`ext-app-${t}`);if(F.value.get(o)){fe(o,e);return}let{serverName:s,toolName:a}=e;if(s&&a){for(let[x,g]of F.value.entries())if(g.type==="mcp-app"&&g.data.mode==="ext-app"&&g.data.serverName===s&&g.data.toolName===a&&!g.data.toolResult){fe(x,{...e});return}}let{_x:c,_y:l,_width:u,_height:p}=e,d=or["mcp-app"],m=u??d.w,f=p??d.h,h=c===void 0||l===void 0?cl([...F.value.values()],m,f):null,v=su(ia(o,"mcp-app",{mode:"ext-app",...e},{position:{x:c??h?.x??d.x,y:l??h?.y??d.y},size:{width:m,height:f}}));po(v),pt(o,{recordHistory:!1})}function Cz(e){let t=e.startsWith("ext-app-")?e:`ext-app-${e}`;if(F.value.has(t))return t;let n=`ext-app-${e}`;if(n!==t&&F.value.has(n))return n;for(let[o,r]of F.value.entries())if(r.type==="mcp-app"&&r.data.mode==="ext-app"&&r.data.toolCallId===e)return o;return null}function qk(e){let t=typeof e.nodeId==="string"&&e.nodeId.length>0?e.nodeId:null;if(t&&F.value.has(t))return t;if(typeof e.toolCallId!=="string"||!e.toolCallId)return null;return Cz(e.toolCallId)}function Gk(e,t){if(typeof e!=="string"||!e)return null;if(typeof t!=="string"||!t)return null;let n=null;for(let[o,r]of F.value.entries())if(r.type==="mcp-app"&&r.data.mode==="ext-app"&&r.data.serverName===e&&r.data.toolName===t&&!r.data.toolResult){if(n)return null;n=o}return n}function Vk(e){if(F.value.get("ledger-main"))fe("ledger-main",e);else{let o=ua("ledger-main","ledger",e);o.collapsed=!0,po(o)}}function qm(e){if(!Ls(e))return;if(document.documentElement.setAttribute("data-theme",e),Ri(),gt.value!==e)gt.value=e}function Ez(e){return e==="markdown"||e==="mcp-app"||e==="webpage"||e==="json-render"||e==="graph"||e==="board"||e==="prompt"||e==="response"||e==="status"||e==="context"||e==="ledger"||e==="trace"||e==="file"||e==="diff"||e==="mermaid"||e==="image"||e==="html"||e==="group"}function Az(e){return e==="relation"||e==="depends-on"||e==="flow"||e==="references"}function Gm(e){if(!e||typeof e!=="object")return null;let t=e;if(typeof t.x!=="number"||typeof t.y!=="number")return null;return{x:t.x,y:t.y}}function Xk(e){if(!e||typeof e!=="object")return null;let t=e;if(typeof t.width!=="number"||typeof t.height!=="number")return null;return{width:t.width,height:t.height}}function Iz(e){let t=Gm(e),n=Xk(e);return t&&n?{...t,...n}:null}function Pz(e){if(typeof e.id!=="string"||!e.id)return null;if(!Ez(e.type))return null;let t=Gm(e.position),n=Xk(e.size);if(!t||!n)return null;let o=e.data&&typeof e.data==="object"?Object.fromEntries(Object.entries(e.data)):{};return{id:e.id,type:e.type,position:t,size:n,zIndex:typeof e.zIndex==="number"?e.zIndex:1,collapsed:e.collapsed===!0,pinned:e.pinned===!0,contentRevision:typeof e.contentRevision==="number"?e.contentRevision:0,...Hk(e.createdBy)?{createdBy:e.createdBy}:{},...Hk(e.lastEditedBy)?{lastEditedBy:e.lastEditedBy}:{},data:o}}function Hk(e){if(!e||typeof e!=="object")return!1;let t=e;return typeof t.actor==="string"&&typeof t.source==="string"}function Nz(e){if(typeof e.id!=="string"||!e.id)return null;if(typeof e.from!=="string"||!e.from)return null;if(typeof e.to!=="string"||!e.to)return null;if(!Az(e.type))return null;return{id:e.id,from:e.from,to:e.to,type:e.type,...typeof e.label==="string"?{label:e.label}:{},...e.style==="solid"||e.style==="dashed"||e.style==="dotted"?{style:e.style}:{},...e.animated===!0?{animated:!0}:{}}}function zz(e){if(typeof e.id!=="string"||!e.id)return null;if(e.type!=="freehand"&&e.type!=="text")return null;if(!Array.isArray(e.points))return null;let t=e.points.map((o)=>Gm(o)).filter((o)=>o!==null),n=Iz(e.bounds);if(t.length<(e.type==="text"?1:2)||!n)return null;return{id:e.id,type:e.type,points:t,bounds:n,color:typeof e.color==="string"?e.color:"#f97316",width:typeof e.width==="number"?e.width:4,...typeof e.text==="string"?{text:e.text}:{},...typeof e.label==="string"?{label:e.label}:{},createdAt:typeof e.createdAt==="string"?e.createdAt:""}}var jk="pmx-canvas-version-reload";function Rz(e,t){if(typeof window>"u")return;let n=window,o=(s,a)=>typeof s==="string"&&s!==""&&s!=="unknown"&&typeof a==="string"&&a!==""&&a!=="unknown"&&s!==a;if(!o(e,n.__PMX_BOOT_SERVER_VERSION)&&!o(t,n.__PMX_BOOT_BUNDLE_STAMP))return;let r=`${String(e)}::${String(t)}`;try{if(window.sessionStorage.getItem(jk)===r)return;window.sessionStorage.setItem(jk,r)}catch{return}window.location.reload()}function Mz(e){let t=Yo.value[0]?.id;if(bm(e),_t.value&&Yo.value[0]?.id!==t)er()}function $z(e){hS(e)}var Uk=null,aa=0,Um=0,Zm=0;function Oz(e){Ep(e)}function Lz(){let e=++aa;ca=null,Yt.value=!1,tl(),Mb(),ac(),Hl(),Em({}),Dn.value=null,Vm();let t=Um,n=Zm;fb().then((o)=>{if(e===aa&&t===Um)Kk({layout:o})}),ne("fetchPinnedContext","/api/canvas/pinned-context",{}).then((o)=>{if(e===aa&&n===Zm)Jk({nodeIds:o.nodeIds})})}sb(Lz);function Dz(e){if(lo.value=e.sessionId||"",fn.value="connected",Pd().then(bs),_r.value+=1,Rz(e.version,e.bundleStamp),yb().then(bm),jl(),Uk?.(),!pc&&!Se())Uk=qw();if(ne("fetchHumanPresence","/api/canvas/human-presence",null).then(Ep),Vm().then(()=>{if(_t.value)er()}),typeof e.theme==="string"&&!Rm())qm(e.theme);if(e.ledgerSummary)Vk(e.ledgerSummary)}function Fz(e){if(typeof e.path!=="string"||!e.path)return;let t=e.path,n=(typeof e.title==="string"?e.title:"")||t.split("/").pop()||"Untitled";if(_z(t,n),e.ledgerSummary)Vk(e.ledgerSummary)}function Bz(e){qi(),fe("status-main",{message:typeof e.message==="string"?e.message:String(e.message??""),level:e.level??"ok",source:e.source})}function Hz(e){qi(),fe("status-main",{phase:e.phase,detail:e.detail})}function jz(e){let t=e.cards??[];Sz(t)}function Uz(e){if(typeof e.url==="string"&&e.url)kz({url:e.url,sourceServer:e.sourceServer,sourceTool:e.sourceTool,inferredType:e.inferredType,trustedDomain:e.trustedDomain,hostMode:e.hostMode??"hosted"})}function Zz(e){let t=e.sessions??[];for(let n of t){let o=n.url;if(!o)continue;let r=`mcp-${la(o)}`;if(F.value.has(r))fe(r,{sessionState:n.state,lastSeenAt:n.lastSeenAt})}}function Wz(e){if(typeof e.url==="string"&&e.url){let t=`mcp-${la(e.url)}`;if(F.value.has(t))fe(t,{hostMode:"fallback",fallbackReason:e.reasonCode})}}function qz(e){let n=F.value.get("context-main");if(!n)return;let o=(n.data.auxTabs??[]).concat(e);fe("context-main",{auxTabs:o})}function Gz(e){if(F.value.has("context-main"))if(e.mode==="all")fe("context-main",{auxTabs:[]});else{let o=F.value.get("context-main");if(!o)return;let r=(o.data.auxTabs??[]).filter((s)=>s.id!==e.id);fe("context-main",{auxTabs:r})}}function Vz(e){qi(),fe("status-main",{phase:"idle",lastCompletion:{tokenCount:e.tokenCount,artifactCount:e.artifactCount}})}function Xz(e){qi(),fe("status-main",{phase:"tooling",detail:`${e.name}`,activeTool:e.name})}function Kz(e){qi(),fe("status-main",{activeTool:null})}function Jz(e){if(e.state==="active"&&e.path){let n=`md-${la(e.path)}`;if(F.value.has(n))fe(n,{reviewActive:!0})}}function Yz(e){if(typeof e.toolCallId!=="string"||!e.toolCallId)return;Tz({toolCallId:e.toolCallId,...typeof e.nodeId==="string"&&e.nodeId.length>0?{nodeId:e.nodeId}:{},title:e.title,html:e.html,toolInput:e.toolInput,serverName:e.serverName,toolName:e.toolName,appSessionId:e.appSessionId,resourceUri:e.resourceUri,toolDefinition:e.toolDefinition,resourceMeta:e.resourceMeta,hostMode:"hosted",trustedDomain:!0,...e.chartConfig?{chartConfig:e.chartConfig}:{},...typeof e.x==="number"&&{_x:e.x},...typeof e.y==="number"&&{_y:e.y},...typeof e.width==="number"&&{_width:e.width},...typeof e.height==="number"&&{_height:e.height}})}function Qz(e){if(typeof e.toolCallId!=="string"||!e.toolCallId)return;let t=qk(e)??Gk(e.serverName,e.toolName);if(!t)return;if(F.value.has(t))fe(t,{html:e.html})}function eR(e){if(typeof e.toolCallId!=="string"||!e.toolCallId)return;let t=qk(e)??Gk(e.serverName,e.toolName);if(!t)return;if(F.value.has(t)){if(e.success===!1){Do(t);return}fe(t,{toolResult:cm({result:e.result,success:typeof e.success==="boolean"?e.success:void 0,error:typeof e.error==="string"?e.error:void 0,content:typeof e.content==="string"?e.content:void 0,detailedContent:typeof e.detailedContent==="string"?e.detailedContent:void 0})})}}function tR(e){qi(),fe("status-main",{subagent:{state:e.state,name:e.agentDisplayName??e.agentName}})}function nR(e){let t=e.nodeId;if(!t)return;let n=e.text||"",{position:o,parentNodeId:r,contextNodeIds:s}=e;if(e.threadNodeId&&F.value.has(e.threadNodeId)){let a=e.threadNodeId,c=F.value.get(a);if(!c)return;let l=Array.isArray(c.data.turns)?[...c.data.turns]:[],u=l[l.length-1];if(!u||u.role!=="user"||u.text!==n)l.push({role:"user",text:n,status:"pending"});fe(a,{turns:l,threadStatus:"pending"});return}if(!F.value.has(t)){let a=o??or.prompt;po(su(ia(t,"prompt",{text:n,turns:n?[{role:"user",text:n,status:"pending"}]:[],threadStatus:n?"pending":"draft",status:n?"pending":"draft",parentNodeId:r,contextNodeIds:s},{position:{x:a.x,y:a.y}}))),pt(t)}if(r&&F.value.has(r))ai({id:`edge-${r}-${t}`,from:r,to:t,type:"flow",style:"dashed"})}function oR(e){let{nodeId:t,status:n}=e;if(t&&F.value.has(t))fe(t,{status:n})}function rR(e){let{responseNodeId:t,promptNodeId:n}=e;if(!t)return;let o=n?F.value.get(n):void 0;if(o&&Array.isArray(o.data.turns)){Wi.set(t,n);let s=[...o.data.turns];s.push({role:"assistant",text:"",status:"streaming"}),fe(n,{turns:s,threadStatus:"streaming",_activeResponseId:t}),pt(n);return}let r=o?{x:o.position.x,y:o.position.y+o.size.height+24}:{x:or.response.x,y:or.response.y};if(!F.value.has(t))po(su(ia(t,"response",{content:"",status:"streaming",promptNodeId:n},{position:r})));if(n)ai({id:`edge-${n}-${t}`,from:n,to:t,type:"flow",animated:!0});pt(t)}function iR(e){let t=e.responseNodeId;if(!t)return;let n=Wi.get(t);if(n){let o=F.value.get(n);if(o&&Array.isArray(o.data.turns)){let r=[...o.data.turns],s=r[r.length-1];if(s&&s.role==="assistant")s.text=e.content,s.status="streaming";fe(n,{turns:r,threadStatus:"streaming"})}return}if(!F.value.has(t))return;fe(t,{content:e.content,status:"streaming"})}function sR(e){let t=e.responseNodeId;if(!t)return;let n=Wi.get(t);if(n){let s=F.value.get(n);if(s&&Array.isArray(s.data.turns)){let a=[...s.data.turns],c=a[a.length-1];if(c&&c.role==="assistant")c.text=e.content,c.status="complete";fe(n,{turns:a,threadStatus:"answered",_activeResponseId:void 0})}Wi.delete(t);return}if(!F.value.has(t))return;fe(t,{content:e.content,status:"complete"});let r=F.value.get(t)?.data.promptNodeId;if(r){let s=`edge-${r}-${t}`,a=Je.value.get(s);if(a)Ub(s),ai({...a,animated:!1})}}function Kk(e){let t=e.layout;if(!t?.nodes)return;Um+=1;let n=!Yt.value;Yt.value=!0;let o=t.nodes.map(Pz).filter((c)=>c!==null),r=Array.isArray(t.edges)?t.edges.map(Nz).filter((c)=>c!==null):Array.from(Je.value.values()),s=Array.isArray(t.annotations)?t.annotations.map(zz).filter((c)=>c!==null):void 0,a=t.viewport?{x:typeof t.viewport.x==="number"?t.viewport.x:0,y:typeof t.viewport.y==="number"?t.viewport.y:0,scale:typeof t.viewport.scale==="number"?t.viewport.scale:1}:void 0;if(n)fo();Xb({...a?{viewport:a}:{},nodes:o,edges:r,...s?{annotations:s}:{}},{applyViewport:n}),Ad({event:"canvas-layout-update",data:e})}function aR(e){if(e<=1)return 500;if(e===2)return 1000;return Math.min(2500,1500+(e-3)*500)}function cR(e){if(Zd())return;let t=e.nodeId;if(t&&F.value.has(t)){if(e.noPan===!0){mo(t);return}pt(t)}}function lR(e){if(Zd())return;let t=e.viewport;if(!t)return;let n=typeof t.x==="number"?t.x:0,o=typeof t.y==="number"?t.y:0,r=typeof t.scale==="number"?t.scale:1;fo(),qb({x:n,y:o,scale:r})}function uR(e){if(F.value.get("context-main"))fe("context-main",{currentTokens:e.currentTokens,tokenLimit:e.tokenLimit,messagesLength:e.messagesLength,utilization:e.utilization,nearLimit:e.nearLimit})}function dR(e){li.value=e.enabled===!0}function pR(e){if(typeof e.theme==="string"&&!Rm())qm(e.theme)}function Jk(e){Zm+=1;let t=Array.isArray(e.nodeIds)?e.nodeIds.filter((n)=>typeof n==="string"):[];jb(t),Ad({event:"context-pins-changed",data:e}),jl()}function mR(){jl()}var iu=null,Wm=0;async function Vm(){let e=++Wm,t=aa,n=await vb();if(e===Wm&&t===aa)Dn.value=n}function Zk(){if(iu)clearTimeout(iu);Wm+=1,iu=setTimeout(()=>{if(iu=null,Vm(),_t.value)er()},150)}function fR(e){let t=e.intent;if(!t||typeof t.id!=="string"||typeof t.kind!=="string"||typeof t.expiresAt!=="number")return;Dw(t)}function hR(e){let t=typeof e.id==="string"?e.id:"";if(!t)return;if(e.settled===!0)Bw(t,typeof e.nodeId==="string"?e.nodeId:void 0);else Cp(t)}var Yk={connected:Dz,"workbench-open":Fz,"canvas-status":Bz,"execution-phase":Hz,"context-cards":jz,"mcp-app-candidate":Uz,"mcp-app-host-snapshot":Zz,"mcp-app-host-fallback":Wz,"aux-open":qz,"aux-close":Gz,"assistant-complete":Vz,"tool-start":Xz,"tool-complete":Kz,"review-state":Jz,"subagent-status":tR,"ext-app-open":Yz,"ext-app-update":Qz,"ext-app-result":eR,"context-pins-changed":Jk,"context-status-changed":mR,"boards-changed":vr,"canvas-layout-update":Kk,"canvas-focus-node":cR,"canvas-viewport-update":lR,"context-usage":uR,"trace-state":dR,"theme-changed":pR,"canvas-prompt-created":nR,"canvas-prompt-status":oR,"canvas-response-start":rR,"canvas-response-delta":iR,"canvas-response-complete":sR,"ax-state-changed":Zk,"ax-event-created":Zk,"ax-intent":fR,"ax-intent-clear":hR,"agent-presence":Mz,"human-presence":Oz,"agent-session-ended":$z};function Qk(e,t){let n=Yk[e];if(!n)return;let o=n;try{o(t)}catch(r){console.warn(`[sse-bridge] Handler for "${e}" failed:`,r)}}function Wk(){sa=!0,sr+=1;let e=sr;fn.value="connecting";let t=null,n=!1,o=async()=>{if(e!==sr)return;try{let r=new URLSearchParams;if(Zi!==null)r.set("since",String(Zi));let s=lo.value;if(s)r.set("session",s);let a=r.toString(),c=await ct(`/api/workbench/poll${a?`?${a}`:""}`);if(e!==sr)return;if(!c.ok)throw Error(`poll failed with HTTP ${c.status}`);let l=await c.json();if(e!==sr)return;if(!l.ok)throw Error("poll returned ok: false");let u=t;if(t=l.sessionId??null,u!==null&&l.sessionId&&u!==l.sessionId&&!l.snapshot){Zi=null,wo=setTimeout(()=>void o(),0);return}if(l.snapshot&&n)ca=Ud(),Yt.value=!1,ac(),tl(),Wi.clear();for(let p of l.events)Qk(p.event,p.payload);n=!0,Zi=l.seq,Sr.value=0,kr.value=0,fn.value="connected",wo=setTimeout(()=>void o(),bz)}catch(r){if(e!==sr)return;console.warn("[sse-bridge] poll transport error:",r),fn.value="disconnected",Sr.value+=1,kr.value=Bk,wo=setTimeout(()=>void o(),Bk)}};return o(),()=>{if(sr+=1,sa=!1,Zi=null,wo)clearTimeout(wo),wo=null}}function Xm(){if(JS(qm),ca=Ud(),Yt.value=!1,ac(),tl(),Wi.clear(),rr)clearTimeout(rr),rr=null;let e=xz();if(e==="poll"||sa)return Wk();let t=lo.value,n=t?`/api/workbench/events?session=${t}`:"/api/workbench/events";fn.value="connecting";let o=new EventSource(n);Fr=o;let r=!1;if(ir)clearTimeout(ir);if(ir=null,e!=="sse")ir=setTimeout(()=>{if(ir=null,r||Fr!==o)return;console.warn("[sse-bridge] No SSE event within watchdog window — switching to polling transport."),window.dispatchEvent(new Event("pmx-canvas-boot-extend")),o.close(),Fr=null,Wk()},yz);for(let[s]of Object.entries(Yk))o.addEventListener(s,(a)=>{r=!0;try{Qk(s,JSON.parse(a.data))}catch(c){console.warn(`[sse-bridge] Failed to parse "${s}" event:`,c)}});return o.onopen=()=>{if(Fr!==o)return;ru=0,Sr.value=0,kr.value=0,fn.value="connected"},o.onerror=()=>{if(Fr!==o)return;fn.value="disconnected",o.close(),Fr=null,ru+=1;let s=aR(ru);Sr.value=ru,kr.value=s,rr=setTimeout(()=>{rr=null,Xm()},s)},()=>{if(rr)clearTimeout(rr),rr=null;if(ir)clearTimeout(ir),ir=null;if(sa){if(sr+=1,sa=!1,Zi=null,wo)clearTimeout(wo),wo=null}o.close(),Fr=null}}function Br(e,t){console.error(`[app] ${e} failed`,t)}function e0(){let[e,t]=A(!0),[n,o]=A(!1),[r,s]=A(!1),[a,c]=A(!1),[l,u]=A(!1),[p,d]=A(null),m=L(null),{menu:f,openNodeMenu:h,openCanvasMenu:v,openEdgeMenu:x,closeMenu:g}=ek(),b=Yt.value,I=$o.value&&Oe.value===null,R=_t.value,M=j(()=>t((W)=>!W),[]),_=j(()=>o((W)=>!W),[]),N=j(()=>o(!1),[]),w=j((W)=>d(W),[]),k=j((W,J)=>{Fo({x:W,y:J,scale:oe.value.scale},200)},[]);H(()=>Xm(),[]),H(()=>{let W=()=>c(!0);return window.addEventListener("pmx-open-board-link",W),()=>window.removeEventListener("pmx-open-board-link",W)},[]),H(()=>{let W=null,J=()=>{if(W!==null)window.clearTimeout(W);W=window.setTimeout(()=>{W=null,bs()},400)};return window.addEventListener("resize",J),()=>{if(W!==null)window.clearTimeout(W);window.removeEventListener("resize",J)}},[]),H(()=>{let W=(S)=>{let q=(S.metaKey||S.ctrlKey)&&!S.altKey;if(q&&S.key==="k"){S.preventDefault(),s((ue)=>!ue);return}if(S.key==="Escape"&&p){S.preventDefault(),d(null);return}if(S.key==="Escape"&&ot.value&&!Ln.value){S.preventDefault(),ho();return}if(S.key==="Escape"&&r){S.preventDefault(),s(!1);return}if(S.key==="Escape"&&l){S.preventDefault(),u(!1);return}let ie=S.target,ye=ie?.tagName;if(ye==="INPUT"||ye==="TEXTAREA"||ie?.isContentEditable)return;if(S.key===" "&&!S.repeat&&!q){S.preventDefault(),_s.value=!0;return}if(S.key==="?"||S.key==="/"&&S.shiftKey){S.preventDefault(),u((ue)=>!ue);return}if(q&&(S.key==="z"||S.key==="Z"))S.preventDefault(),Tm(S.shiftKey);else if(q&&(S.key==="y"||S.key==="Y"))S.preventDefault(),Tm(!0);else if(q&&S.key==="0")S.preventDefault(),Fo({x:0,y:0,scale:1},250);else if(q&&(S.key==="="||S.key==="+"))S.preventDefault(),di(1.25);else if(q&&S.key==="-")S.preventDefault(),di(0.8);else if(S.key==="Escape"){if(Ne.value.size>0||Kn.value!==null){Ut();return}je.value=null,g()}else if(S.key==="Tab")S.preventDefault(),Jb(S.shiftKey?-1:1);else if(S.key==="Delete"||S.key==="Backspace"){if(Kn.value!==null){let Pe=Kn.value;S.preventDefault(),Kn.value=null,xc(Pe).catch((ke)=>Br("delete-edge",ke));return}let ue=Ne.value.size>0?[...Ne.value]:je.value?[je.value]:[];if(ue.length===0)return;S.preventDefault();for(let Pe of ue)Oo(Pe).catch((ke)=>Br("delete",ke));Ut(),je.value=null}else if(je.value&&["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(S.key)){S.preventDefault();let ue=S.key.replace("Arrow","").toLowerCase();Yb(ue)}else if(!q&&!S.altKey){let ue=S.key.toLowerCase();if(ue==="v"&&!S.shiftKey)Qt.value="select";else if(ue==="c"&&!S.shiftKey&&!q)S.preventDefault(),Qt.value=Qt.value==="connect"?"select":"connect";else if(ue==="m"&&!S.shiftKey)S.preventDefault(),In({type:"markdown",title:"New note",width:520,height:360}).catch((Pe)=>Br("create markdown",Pe));else if(ue==="a"&&!S.shiftKey)S.preventDefault(),d((Pe)=>Pe==="pen"?null:"pen");else if(ue==="g"&&!S.shiftKey){S.preventDefault();let Pe=Array.from(Ne.value);if(Pe.length>=2)ii({title:"Group",childIds:Pe}).catch((ke)=>Br("group selection",ke)),Ut();else In({type:"group",title:"Group"}).catch((ke)=>Br("create group",ke))}else if(ue==="g"&&S.shiftKey){S.preventDefault();for(let Pe of Db())Do(Pe),si(Pe).catch((ke)=>Br("ungroup",ke));Ut()}else if(ue==="i"&&!S.shiftKey)S.preventDefault(),Dr("image");else if(ue==="w"&&!S.shiftKey)S.preventDefault(),Dr("webpage");else if(ue==="h"&&!S.shiftKey)S.preventDefault(),In({type:"html",title:"HTML surface"}).catch((Pe)=>Br("create html",Pe));else if(ue==="f"&&S.shiftKey)S.preventDefault(),Dr("file");else if(ue==="f"&&!S.shiftKey){S.preventDefault();let Pe=bt();pi(Pe.width,Pe.height)}}},J=(S)=>{if(S.key===" ")_s.value=!1},G=()=>{_s.value=!1};return document.addEventListener("keydown",W),document.addEventListener("keyup",J),window.addEventListener("blur",G),()=>{document.removeEventListener("keydown",W),document.removeEventListener("keyup",J),window.removeEventListener("blur",G)}},[p,g,r,l]),H(()=>{let W=window.setTimeout(()=>void bs(),250);return()=>window.clearTimeout(W)},[R]),H(()=>{if(!b)return;let W=window.__pmxCanvasBootstrapReady;if(typeof W==="function")W()},[b]);let z=Array.from(F.value.values()),X=bt();return i("div",{class:`app-shell${Fn.value?" is-presenting":""}`,"data-session-active":R?"true":"false",children:[i(tx,{},void 0,!1,void 0,this),i(ik,{minimapVisible:e,onToggleMinimap:M,snapshotOpen:n,onToggleSnapshot:_,snapshotBtnRef:m,onOpenPalette:()=>s(!0),onOpenShortcuts:()=>u((W)=>!W),annotationTool:p,onSetAnnotationTool:w},void 0,!1,void 0,this),i("div",{class:"app-main",children:[i(Fk,{},void 0,!1,void 0,this),i(VS,{},void 0,!1,void 0,this),i("div",{class:"canvas-region",ref:(W)=>Py(W),children:[i(qS,{onNodeContextMenu:h,onCanvasContextMenu:v,onEdgeContextMenu:x,annotationMode:p!==null,annotationTool:p},void 0,!1,void 0,this),i(_x,{},void 0,!1,void 0,this),i(wx,{},void 0,!1,void 0,this),i(gk,{},void 0,!1,void 0,this),i(vk,{},void 0,!1,void 0,this),I?i(mk,{},void 0,!1,void 0,this):b&&z.length===0&<.value.size===0&&i(sk,{onOpenPalette:()=>s(!0)},void 0,!1,void 0,this),Ne.value.size>0&&i(Ck,{},void 0,!1,void 0,this),R&&!Se()?i(GS,{},void 0,!1,void 0,this):Le.value.size>0&&i(ok,{},void 0,!1,void 0,this),i(Nk,{onOpenSnapshots:()=>o(!0)},void 0,!1,void 0,this),i(kx,{},void 0,!1,void 0,this),i(fk,{},void 0,!1,void 0,this),ot.value&&i(wk,{},void 0,!1,void 0,this),i($k,{open:n,onClose:N,anchorRef:m},void 0,!1,void 0,this),e&&!I&&i(Tk,{viewport:oe,nodes:F,edges:Je,onNavigate:k,containerWidth:X.width,containerHeight:X.height},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R&&i(Ik,{},void 0,!1,void 0,this),f&&i(tk,{menu:f,onClose:g},void 0,!1,void 0,this),r&&i(YS,{onClose:()=>s(!1),onToggleMinimap:M},void 0,!1,void 0,this),a&&i(QS,{onClose:()=>c(!1)},void 0,!1,void 0,this),l&&i(zk,{onClose:()=>u(!1)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}Nx();var t0=document.getElementById("app");if(t0)Qi(i(e0,{},void 0,!1,void 0,this),t0);
|
|
385
|
+
</script>`}function M_(){return"<style data-pmx-canvas-ext-app-base>html, body { background: transparent !important; }</style>"}function z_(e,t){if(!t)return e;let n=/<head\b[^>]*>/i.exec(e);if(n?.index!==void 0){let i=n.index+n[0].length;return`${e.slice(0,i)}${t}${e.slice(i)}`}let o=/<body\b[^>]*>/i.exec(e);if(o?.index!==void 0){let i=o.index+o[0].length;return`${e.slice(0,i)}${t}${e.slice(i)}`}return`${t}${e}`}function ia(e,t){if(Number.isFinite(e)&&e>0)return Math.round(e);if(Number.isFinite(t)&&t>0)return Math.round(t);return 1}function Dh(e,t){let n=e?.getBoundingClientRect();return{width:ia(e?.clientWidth??0,ia(n?.width??0,t.width)),height:ia(e?.clientHeight??0,ia(n?.height??0,t.height))}}function Kz(e,t){return typeof e==="number"&&Number.isFinite(e)&&e>0&&!t}function Vz(e,t){return Math.max(ia(e,1),ia(t,1))}function L_({node:e,expanded:t=!1}){let n=D(null),o=D(null),i=D(null),s=D(null),a=D({}),l=D(void 0),c=D(!1),u=D(void 0),d=D(null),p=D(!1),f=D(null),m=D(0),h=D([]),g=D(""),y=D(!1),b=D(!1),x=D([]),C=D(!1),v=D(!1),k=D(!1),_=D(!1),[I,w]=E("loading"),[P,L]=E(null),[N,Y]=E(0),[B,J]=E(!1),[X,V]=E(!1),[ee,he]=E(()=>t||typeof navigator>"u"||typeof window>"u"||!Qi(navigator.userAgent)),A=e.data.html,te=e.data.serverName,M=e.data.appSessionId,O=e.data.toolInput??{},Pe=e.data.toolResult,Fe=e.data.toolName??"ext-app",De=e.data.toolDefinition,Ae=e.data.toolCallId,ve=typeof Ae==="string"||typeof Ae==="number"?Ae:void 0,z=e.data.resourceMeta,re=e.data.sessionStatus,Ne=e.data.sessionError,ke=e.size.height,le=e.id,Se=jz(e,N),pe=Wz(null),xe=e.data.axCapabilities?.enabled===!0&&typeof A==="string"&&A.length>0,qe=Ke(()=>`ax-${crypto.randomUUID()}`,[]),W=xe?qz(qe,le):"",ye=typeof A==="string"&&A.length>0?Gz(qe,le):"",He=I_(z_(A??"",M_()+ye+W),pe);q(()=>{function se(we){if(we.source!==n.current?.contentWindow)return;let ge=we.data;if(!ge||ge.source!==Ju||ge.token!==qe||ge.nodeId!==le)return;if(b.current=!0,ge.kind==="paint-tick"){let Le=ge,Rt={content:Le.content===!0,detail:typeof Le.detail==="string"?Le.detail:""};for(let pt of h.current.splice(0))pt(Rt)}}return window.addEventListener("message",se),()=>window.removeEventListener("message",se)},[qe,le]),q(()=>{if(ee)return;P_({remount:()=>{if(_.current)return!1;return vn(le,"mount-slot"),he(!0),!0},awaitBoot:()=>new Promise((se)=>{let we=window.setTimeout(ge,E_);function ge(){window.clearTimeout(we),se()}x.current.push(ge)})})},[]),ra({enabled:xe,token:qe,nodeId:le,sourceSurface:"mcp-app",iframeRef:n});let R=3,ne=(se)=>{if(m.current>=R)return vn(le,`remount-cap-hit (${se})`),!1;if(C.current)return!0;return m.current+=1,C.current=!0,vn(le,`remount-queued #${m.current} (${se})`),P_({remount:()=>{if(C.current=!1,_.current||!t&&Dt.value===le)return vn(le,"remount-skipped"),J(!1),!1;return v.current=typeof document<"u"&&document.visibilityState==="hidden",vn(le,`remount-run #${m.current}`),w("loading"),Y((we)=>we+1),!0},awaitBoot:()=>new Promise((we)=>{let ge=window.setTimeout(Le,E_);function Le(){window.clearTimeout(ge),we()}x.current.push(Le)})}),!0},Ce=1500,Ie=()=>new Promise((se)=>{let we=n.current?.contentWindow;if(!we||_.current){se("timeout");return}let ge=!1,Le=window.setTimeout(()=>{if(ge)return;ge=!0,se("timeout")},Ce);h.current.push((Rt)=>{if(ge)return;ge=!0,window.clearTimeout(Le),g.current=Rt.detail,se(Rt.content?"content-verified":"tick-no-content")}),we.postMessage({source:th,token:qe},"*")}),fe=async(se)=>{let we=Date.now()+se;while(Date.now()<we&&!_.current){if(await Ie()==="content-verified")return!0;await new Promise((ge)=>window.setTimeout(ge,400))}return!1},it=()=>new Promise((se)=>{let we=n.current;if(!we){se();return}let ge=we.style.width,Le=we.style.height;we.style.width="140%",we.style.height="140%",requestAnimationFrame(()=>{requestAnimationFrame(()=>{we.style.width=ge,we.style.height=Le,vn(le,"soft-expand-cycle"),se()})})}),Ft=600,Ye=()=>{if(typeof document>"u"||typeof navigator>"u"||typeof window>"u")return;let se=n.current;if(!se||_.current)return;if(!Hz({userAgent:navigator.userAgent,visibilityState:document.visibilityState,rect:se.getBoundingClientRect(),viewport:{width:window.innerWidth,height:window.innerHeight},alreadyRearmed:k.current}))return;k.current=!0,window.setTimeout(()=>{if(_.current||document.visibilityState==="visible")return;m.current=0,V(!1),v.current=!1,vn(le,"assume-visible-rearm"),ne("assume-visible")},Ft)},Lt=(se="")=>{let we=g.current?` [${g.current}]`:"";return typeof document<"u"&&document.visibilityState==="hidden"?`paint-ok (content-verified)${we}${se} (host hidden)`:`paint-ok (content-verified)${we}${se}`},F=async()=>{if(typeof navigator>"u"||typeof window>"u")return;if(!Qi(navigator.userAgent))return;J(!0);let se=await Ie();if(se==="content-verified"){vn(le,Lt()),J(!1),Ye();return}if(vn(le,se==="tick-no-content"?`paint-fail (tick without content: ${g.current||"unknown"})`:"paint-fail (no tick)"),await it(),se=await Ie(),se==="content-verified"){vn(le,Lt(" (after soft-expand)")),J(!1),Ye();return}if(_.current)return;if(se==="tick-no-content"&&await fe(3000)){vn(le,Lt(" (after content wait)")),J(!1),Ye();return}if(_.current)return;if(!ne("paint-fail"))vn(le,"recovery-exhausted"),J(!1),V(!0),Ye()};q(()=>{if(t)return;if(typeof document>"u"||typeof navigator>"u"||typeof window>"u")return;if(!Qi(navigator.userAgent))return;function se(){if(document.visibilityState!=="visible")return;if(!v.current||_.current)return;v.current=!1,m.current=0,V(!1),vn(le,"visible-again-rearm"),ne("visible-after-hidden-boot")}return document.addEventListener("visibilitychange",se),()=>document.removeEventListener("visibilitychange",se)},[t,le]);let Ee=6000;q(()=>{if(typeof navigator>"u"||typeof window>"u")return;if(!Qi(navigator.userAgent))return;if(!He.ready||!ee)return;let se=window.setTimeout(()=>{if(y.current||b.current||_.current)return;ne("boot-watchdog")},Ee);return()=>window.clearTimeout(se)},[Se,He.ready,t,ee]),q(()=>()=>{_.current=!0;for(let se of x.current.splice(0))se();for(let se of h.current.splice(0))se({content:!1,detail:"unmounted"})},[]);let S=(se)=>Qs(se),K=t||Dt.value===le;a.current=O,l.current=Pe;let ue=re==="error"&&typeof A==="string"&&A.length>0,$e=re==="error"?ue?`Live session unavailable — showing saved content. Reopen the app to restore interactivity.${Ne?` (${Ne})`:""}`:Ne??"Saved app session is unavailable. Reopen the app to restore interactivity.":"Reconnecting saved app session...",je=(se)=>{let we=l.current;if(!se||!p.current||!we)return null;if(u.current===we)return null;if(u.current&&C_(u.current,we))return u.current=we,null;if(d.current)return d.current;let ge=se.sendToolResult(we).then(()=>{u.current=we,c.current=!0,w("done")}).catch((Le)=>{let Rt=Le instanceof Error?Le.message:String(Le);throw L(`Tool result delivery failed: ${Rt}`),Le}).finally(()=>{d.current=null});return d.current=ge,ge};if(q(()=>{if(!A||!He.ready||!ee)return;let se=n.current;if(!se)return;let we=!1,ge=null,Le=null,Rt=null,pt=null,dn=null;c.current=!1,u.current=void 0,d.current=null,p.current=!1,y.current=!1,b.current=!1;let on=()=>{if(!ge)return;clearTimeout(ge),ge=null};return(async()=>{if(!A)return;let Rn=se.contentWindow;if(!Rn)throw Error("Ext-app iframe window is unavailable");let xn=(ot=Dt.value===le?"fullscreen":"inline")=>({theme:S(Qt.value),platform:"web",containerDimensions:Dh(se,{width:e.size.width,height:ke}),displayMode:ot,locale:navigator.language,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,...De?{toolInfo:{id:ve,tool:De}}:{}}),pn=()=>{if(pt!==null)return;pt=requestAnimationFrame(()=>{if(pt=null,we||!p.current)return;ft.setHostContext?.(xn())})},cr=()=>{if(dn!==null)return;dn=requestAnimationFrame(()=>{dn=requestAnimationFrame(()=>{if(dn=null,we||!p.current)return;ft.sendHostContextChange?.(xn())})})},fs=()=>{if(!Qi(navigator.userAgent))return;if(Le)clearTimeout(Le);Le=setTimeout(()=>{if(Le=null,we)return;F()},$_+200)},ft=new zh(null,{name:"PMX Canvas",version:"1.0.0"},{openLinks:{},serverTools:{listChanged:!1},serverResources:{listChanged:!1},logging:{},updateModelContext:{text:{},structuredContent:{}}},{hostContext:xn(K?"fullscreen":"inline")});ft.onsizechange=async({height:ot})=>{if(Kz(ot,Dt.value===le)){let Gt=Dh(se.parentElement??se,{width:e.size.width,height:ke}),Pn=Vz(ot,Gt.height);se.style.height=`${Pn}px`;let ur=H.value.get(le)?.size??e.size,Lr=Math.max(ur.height,Pn+Vs);if(Math.abs(Lr-ur.height)>8){if(wu(le,{width:ur.width,height:Lr}),s.current!==null)window.clearTimeout(s.current);s.current=window.setTimeout(()=>{un({recordHistory:!1}),s.current=null},0)}}return{}},ft.onopenlink=async({url:ot})=>(window.open(ot,"_blank","noopener"),{}),ft.onsandboxready=async()=>{await ft.sendSandboxResourceReady({html:z_(A,M_()),sandbox:nh,...z?.csp?{csp:z.csp}:{},...z?.permissions?{permissions:z.permissions}:{}})},ft.onrequestdisplaymode=async({mode:ot})=>{let{nextMode:Gt,shouldExpand:Pn,shouldCollapse:ur}=Zz(ot,K);if(Pn)xo(le);else if(ur)Cr();return{mode:Gt}},ft.oncalltool=async(ot)=>{if(!M)throw Error($e);try{let Gt=await Yi("/api/ext-app/call-tool",{sessionId:M,nodeId:le,serverName:te,toolName:ot.name,arguments:ot.arguments??{}});return L(null),Gt}catch(Gt){let Pn=Gt instanceof Error?Gt.message:String(Gt);throw L(`Tool call failed: ${Pn}`),Gt}},ft.setRequestHandler(yd,async()=>{if(!M)return{tools:[]};return Yi("/api/ext-app/list-tools",{sessionId:M})}),ft.onlistresources=async()=>M?Yi("/api/ext-app/list-resources",{sessionId:M}):{resources:[]},ft.onlistresourcetemplates=async()=>M?Yi("/api/ext-app/list-resource-templates",{sessionId:M}):{resourceTemplates:[]},ft.onreadresource=async(ot)=>{if(!M)throw Error($e);return Yi("/api/ext-app/read-resource",{sessionId:M,uri:ot.uri})},ft.onlistprompts=async()=>M?Yi("/api/ext-app/list-prompts",{sessionId:M}):{prompts:[]},ft.onupdatemodelcontext=async(ot)=>{if(!M)return{};return await Yi("/api/ext-app/model-context",{nodeId:le,...Array.isArray(ot.content)?{content:ot.content}:{},...ot.structuredContent&&typeof ot.structuredContent==="object"?{structuredContent:ot.structuredContent}:{}}),{}};let _a=new Mh(Rn,Rn);if(ft.oninitialized=()=>{if(we)return;on(),p.current=!0,y.current=!0,vn(le,"initialized"),w("ready"),L(null),Promise.resolve(ft.sendHostContextChange(xn(K?"fullscreen":"inline"))).then(()=>N_(ft,a.current,void 0)).then(()=>je(ft)).then(()=>{let ot=()=>{for(let Gt of x.current.splice(0))Gt()};if(typeof navigator<"u"&&Qi(navigator.userAgent))fe(4000).then((Gt)=>{vn(le,Gt?"settled (content-verified)":`settled (content-timeout${g.current?`: ${g.current}`:""})`),ot()});else vn(le,"settled"),ot();cr(),fs()}).catch((ot)=>{let Gt=ot instanceof Error?ot.message:String(ot);L(`Bridge bootstrap failed: ${Gt}`)})},ge=setTimeout(()=>{if(we||p.current)return;let ot=l.current,Gt=xn(K?"fullscreen":"inline");p.current=!0,ft.setHostContext?.(Gt),Promise.resolve(ft.sendHostContextChange(Gt)).then(()=>N_(ft,a.current,ot)).then(()=>{if(c.current=Boolean(ot),ot)u.current=ot;if(w(ot?"done":"ready"),L(null),cr(),fs(),b.current){vn(le,"settled (fallback)");for(let Pn of x.current.splice(0))Pn()}}).catch((Pn)=>{let ur=Pn instanceof Error?Pn.message:String(Pn);L(`Bridge bootstrap fallback failed: ${ur}`)})},1200),await ft.connect(_a),we){on(),await _a.close();return}if(o.current=ft,i.current=_a,Rt=new ResizeObserver(pn),Rt.observe(se),se.parentElement)Rt.observe(se.parentElement);let Ca=!0;f.current=Qt.subscribe((ot)=>{if(Ca){Ca=!1;return}if(we)return;ft.setHostContext?.({...xn(),theme:S(ot)}),ft.sendHostContextChange?.(xn())}),je(ft)})().catch((Rn)=>{on(),console.error("[ext-app] Bridge init failed:",Rn),L(Rn?.message??"Bridge initialization failed")}),()=>{if(we=!0,on(),Le)clearTimeout(Le),Le=null;if(Rt?.disconnect(),Rt=null,pt!==null)cancelAnimationFrame(pt),pt=null;if(dn!==null)cancelAnimationFrame(dn),dn=null;if(p.current=!1,d.current=null,f.current?.(),f.current=null,s.current!==null)window.clearTimeout(s.current),s.current=null;if(o.current=null,i.current)i.current.close().catch((Rn)=>{console.error("[ext-app] transport close failed:",Rn)}),i.current=null}},[Se,He.key,ee]),q(()=>{if(Pe&&o.current&&(I==="ready"||I==="done"))je(o.current)},[Pe,I]),q(()=>{let se=o.current;if(n.current)n.current.style.height="100%";if(!se||!p.current)return;let we=null,ge=null;return we=requestAnimationFrame(()=>{we=null,ge=requestAnimationFrame(()=>{if(ge=null,!p.current)return;let Le={theme:S(Qt.value),platform:"web",containerDimensions:Dh(n.current,{width:e.size.width,height:ke}),displayMode:K?"fullscreen":"inline",locale:navigator.language,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone};se.setHostContext?.(Le),se.sendHostContextChange?.(Le)})}),()=>{if(we!==null)cancelAnimationFrame(we);if(ge!==null)cancelAnimationFrame(ge)}},[K,ke]),!A)return r("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--c-muted)",fontSize:"13px",flexDirection:"column",gap:"8px"},children:[r("div",{style:{opacity:0.6},children:["Loading ",Fe," viewer..."]},void 0,!0,void 0,this),r("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),r("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return r("div",{style:{flex:1,width:"100%",height:"100%",minWidth:0,minHeight:0,display:"flex",flexDirection:"column"},children:[re&&re!=="ready"&&r("div",{style:{padding:"6px 10px",fontSize:"11px",background:re==="error"&&!ue?"color-mix(in srgb, var(--c-danger) 12%, transparent)":"color-mix(in srgb, var(--c-warn) 10%, transparent)",color:re==="error"&&!ue?"var(--c-danger)":"var(--c-warn)",borderBottom:`1px solid ${re==="error"&&!ue?"color-mix(in srgb, var(--c-danger) 12%, transparent)":"color-mix(in srgb, var(--c-warn) 15%, transparent)"}`},children:$e},void 0,!1,void 0,this),P&&r("div",{style:{padding:"6px 10px",fontSize:"11px",background:"color-mix(in srgb, var(--c-danger) 12%, transparent)",color:"var(--c-danger)",borderBottom:"1px solid color-mix(in srgb, var(--c-danger) 12%, transparent)",display:"flex",alignItems:"center",gap:"6px"},children:[r("span",{children:"⚠"},void 0,!1,void 0,this),r("span",{style:{flex:1},children:P},void 0,!1,void 0,this),r("button",{type:"button",onClick:()=>{L(null),w("loading"),Y((se)=>se+1)},style:{background:"var(--c-surface-hover)",border:"1px solid color-mix(in srgb, var(--c-danger) 12%, transparent)",borderRadius:"3px",color:"var(--c-danger)",cursor:"pointer",fontSize:"10px",padding:"1px 6px"},children:"Retry"},void 0,!1,void 0,this),r("button",{type:"button",onClick:()=>L(null),"aria-label":"Dismiss error",style:{background:"none",border:"none",color:"var(--c-danger)",cursor:"pointer",fontSize:"13px",padding:"0 2px"},children:r(Tt,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{style:{flex:1,position:"relative",display:"flex",minHeight:0,height:"100%"},children:[ee&&r("iframe",{ref:n,...He.attributes,sandbox:pe,allow:__(z?.permissions),style:{flex:1,width:"100%",height:"100%",minHeight:0,border:"none",background:"var(--c-panel)",pointerEvents:K?"auto":"none"},title:`Ext App: ${Fe}`},Se,!1,void 0,this),X&&!P&&r("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"10px",background:"var(--c-panel)",color:"var(--c-warn)",fontSize:"12px"},children:[r("div",{children:"App surface failed to paint."},void 0,!1,void 0,this),r("button",{type:"button",onClick:(se)=>{se.stopPropagation(),vn(le,"manual-retry"),m.current=0,V(!1),w("loading"),Y((we)=>we+1)},style:{background:"var(--c-surface-hover)",border:"1px solid color-mix(in srgb, var(--c-warn) 15%, transparent)",borderRadius:"4px",color:"var(--c-warn)",cursor:"pointer",fontSize:"11px",padding:"3px 10px"},children:"Retry"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(I==="loading"||B)&&!P&&!X&&r("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"10px",background:"var(--c-panel)",color:"var(--c-muted)",fontSize:"12px",pointerEvents:"none"},children:[r("div",{style:{width:"22px",height:"22px",border:"2px solid var(--c-line)",borderTopColor:"var(--c-muted)",borderRadius:"50%",animation:"spin 1s linear infinite"}},void 0,!1,void 0,this),r("div",{children:I==="loading"?`Connecting to ${Fe}...`:"Finishing paint..."},void 0,!1,void 0,this),r("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!K&&!(X&&!P)&&r("button",{type:"button",onClick:(se)=>{se.stopPropagation(),xo(le)},class:"ext-app-preview-catcher",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)}var Dl=new Map,O_=!1;function D_(e,t,n,o){if(!O_)O_=!0,sn(()=>{let l=H.value,c=Po.value;for(let[u,d]of Dl){let p=l.get(u);if(!p||d.epoch!==c||d.version!==p.data.specVersion||d.documentUrl!==p.data.url){for(let f of d.owners)f.cancel();Dl.delete(u)}}}),window.addEventListener("message",(l)=>{let c=l.data;if(!c||c.source!==eh||typeof c.nodeId!=="string")return;let u=Dl.get(c.nodeId),d=u?.owners.findIndex((h)=>h.token===c.token&&h.source===l.source)??-1;if(!u||d<0)return;if(c.type==="mounted"){u.owners[d].mounted();return}if(c.type==="ready"){u.owners[d].ready();return}if(c.type!=="snapshot")return;if(!c.state||typeof c.state!=="object"||Array.isArray(c.state))return;let{ax:p,...f}=c.state;u.state=f;let m=u.owners.slice(0,d);u.owners=u.owners.slice(d);for(let h of m)h.cancel()});let i=H.value.get(e);if(!i||o?.aborted)return Promise.resolve("cancelled");let s=Dl.get(e)??{epoch:Po.value,version:i.data.specVersion,documentUrl:i.data.url,state:null,owners:[]};Dl.set(e,s);let a=new Promise((l)=>{let c=(p)=>{if(clearTimeout(d),o?.removeEventListener("abort",u.cancel),p!==!0)s.owners=s.owners.filter((f)=>f!==u);l(p)},u={token:t,source:n,mounted:()=>clearTimeout(d),ready:()=>c(!0),cancel:()=>c("cancelled")},d=setTimeout(()=>c(!1),1e4);for(let p of s.owners.filter((f)=>f.source===n))p.cancel();while(s.owners.length>1)s.owners[0].cancel();s.owners.push(u),o?.addEventListener("abort",u.cancel,{once:!0})});return n.postMessage({source:eh,type:"restore",token:t,state:s.state},"*"),a}function Xz(e,t,n,o,i,s,a,l){if(!e)return e;try{let c=tt()&&e.startsWith("/"),u=new URL(e,c?"https://pmx.invalid":window.location.origin);if(u.searchParams.set("theme",Qs(Qt.value)),t)u.searchParams.set("display","expanded");if(typeof n==="number")u.searchParams.set("v",String(n));if(o)u.searchParams.set("axToken",o);if(i)u.searchParams.set("axNodeId",i);if(s)u.searchParams.set("frameToken",s);if(a)u.searchParams.set("fit","content");if(l)u.searchParams.set("stateToken",l);return c?`${u.pathname}${u.search}`:u.toString()}catch{return e}}function Jz(e,t=window.location.origin){if(!e)return!1;try{let n=new URL(t).origin,o=new URL(e,n);return o.origin===n&&o.pathname.startsWith("/api/canvas/frame-documents/")}catch{return!1}}function Bh({source:e,iframeRef:t,onLoad:n,onDocumentLoad:o,title:i,className:s="mcp-app-frame",sandbox:a="allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox",allow:l="clipboard-read; clipboard-write",tabIndex:c}){let u=e.src??e.srcdoc??"",[d,p]=E({key:u,source:e,attempt:0}),[f,m]=E(null),h=D(0),g=D(new Set);Me(()=>{h.current+=1;for(let b of g.current)b.abort();if(g.current.clear(),!u||u===d.key){m(null);return}if(!d.key){p({key:u,source:e,attempt:0});return}m({key:u,source:e,attempt:0})},[u,d.key]),q(()=>()=>{h.current+=1;for(let b of g.current)b.abort();g.current.clear()},[]);let y=(b,x)=>r("iframe",{ref:x?void 0:t,...b.source,class:s,sandbox:a,allow:l,tabIndex:c,inert:x,"aria-hidden":x?!0:void 0,loading:Sn.value==="srcdoc"?void 0:"lazy",onLoad:async(C)=>{let v=x?++h.current:h.current,k=C.currentTarget,_=new AbortController;g.current.add(_);let I=o?.(k,_.signal),w=I?await I:void 0;if(g.current.delete(_),h.current!==v||w==="cancelled")return;if(w===!1){if(b.attempt===0){let P={...b,attempt:1};if(x)m(P);else p(P)}else{if(x)m(null);mn("remove","Viewer could not load",`${x?"Keeping the last view. ":""}Reload to retry.`)}return}if(!x){n();return}requestAnimationFrame(()=>requestAnimationFrame(()=>{if(h.current!==v)return;t.current=k,p(b),m(null),n()}))},style:{position:"absolute",inset:0,width:"100%",height:"100%",visibility:"visible",zIndex:x?0:1,background:"var(--c-panel-soft)"},title:i},`${b.key}:${b.attempt}`,!1,void 0,this);return r("div",{class:"mcp-app-frame-stack",children:[y(d,!1),f&&y(f,!0)]},void 0,!0,void 0,this)}function ui({node:e,expanded:t=!1}){if(e.data.mode==="ext-app")return r(L_,{node:e,expanded:t},void 0,!1,void 0,this);return r(Yz,{node:e,expanded:t},void 0,!1,void 0,this)}function Yz({node:e,expanded:t}){let n=D(null),o=e.type==="mcp-app"&&e.data.viewerType==="web-artifact",i=e.type==="json-render"||e.type==="graph",s=e.data.axCapabilities?.enabled,l=(i||o)&&(o?s===!0:s!==!1),c=o?"mcp-app":"json-render",u=Ke(()=>l?`ax-${crypto.randomUUID()}`:"",[l]),d=rh(e)&&!t,p=Ke(()=>d?`frame-${crypto.randomUUID()}`:"",[d]);Xs(e,n,p),ra({enabled:l&&Boolean(u),token:u,nodeId:e.id,sourceSurface:c,iframeRef:n});let f=Lo.value,m=()=>{if(!l||!u||f==null)return;n.current?.contentWindow?.postMessage({source:Qn,type:"ax-update",token:u,state:f},"*")};q(m,[l,u,f]);let h=typeof e.data.specVersion==="number"?e.data.specVersion:void 0,g=Ke(()=>i?`ui-${crypto.randomUUID()}`:"",[i,h,e.data.url]),y=Xz(e.data.url||"",t,h,u||void 0,l?e.id:void 0,p||void 0,d,g||void 0),b=Js(y),x=e.data.sourceServer||"",C=e.data.hostMode||"hosted",v=e.data.fallbackReason,k=e.data.trustedDomain===!0||Jz(y);if(C==="fallback")return r("div",{style:{display:"flex",flexDirection:"column",gap:"8px",fontSize:"12px"},children:[r("div",{style:{color:"var(--c-warn)",display:"flex",alignItems:"center",gap:"6px"},children:[r("span",{children:"⚠"},void 0,!1,void 0,this),r("span",{children:"Cannot embed — opened externally"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),v&&r("div",{style:{color:"var(--c-muted)",fontSize:"11px"},children:["Reason: ",v]},void 0,!0,void 0,this),r("a",{href:y,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--c-accent)",fontSize:"12px",wordBreak:"break-all"},children:y},void 0,!1,void 0,this),x&&r("div",{style:{color:"var(--c-dim)",fontSize:"10px"},children:["Source: ",x]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);return r("div",{style:{height:"100%",display:"flex",flexDirection:"column",...t?{flex:1,minHeight:0,width:"100%"}:{}},children:[!k&&r("div",{style:{padding:"4px 8px",fontSize:"10px",background:"color-mix(in srgb, var(--c-warn) 10%, transparent)",color:"var(--c-warn)",borderBottom:"1px solid color-mix(in srgb, var(--c-warn) 15%, transparent)"},children:"Unverified domain"},void 0,!1,void 0,this),r(Bh,{source:b,iframeRef:n,onDocumentLoad:(_,I)=>{if(g&&_.contentWindow)return D_(e.id,g,_.contentWindow,I)},onLoad:m,title:`MCP App: ${x}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Qz=null;function sa(){Qz=null}var B_={idle:"var(--c-muted)",running:"var(--c-accent)",planning:"var(--c-agent)",thinking:"var(--c-agent)",drafting:"var(--c-accent)",tooling:"var(--c-accent)",review:"var(--c-ok)","waiting-approval":"var(--c-warn)",waiting:"var(--c-warn)"};function e$(e){let t=typeof e.data.phase==="string"&&e.data.phase.trim().length>0?e.data.phase.trim():"";if(t)return t;let n=typeof e.data.content==="string"&&e.data.content.trim().length>0?e.data.content.trim():"";if(n)return n;return(typeof e.data.status==="string"&&e.data.status.trim().length>0?e.data.status.trim():"")||"idle"}function kd({node:e}){let t=e$(e),n=e.data.detail||"",o=e.data.message||"",i=e.data.level||"ok",s=e.data.activeTool,a=e.data.subagent,l=B_[t]??"var(--c-muted)",c=t!=="idle";return r("div",{style:{display:"flex",flexDirection:"column",gap:"8px",fontSize:"12px"},children:[r("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[r("div",{style:{width:"8px",height:"8px",borderRadius:"50%",background:l,boxShadow:c?`0 0 8px ${l}`:"none",animation:c?"pulse 1.5s infinite":"none",flexShrink:0}},void 0,!1,void 0,this),r("span",{style:{fontWeight:600,color:l,textTransform:"uppercase",letterSpacing:"0.05em"},children:t},void 0,!1,void 0,this),n&&r("span",{style:{color:"var(--c-muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s&&r("div",{style:{display:"flex",alignItems:"center",gap:"6px",color:"var(--c-agent)"},children:[r("span",{style:{fontSize:"10px"},children:"⚙"},void 0,!1,void 0,this),r("span",{style:{fontFamily:"var(--font-code)",fontSize:"11px"},children:s},void 0,!1,void 0,this)]},void 0,!0,void 0,this),a&&a.state!=="completed"&&r("div",{style:{display:"flex",alignItems:"center",gap:"6px",color:"var(--c-subagent)"},children:[r("span",{style:{fontSize:"10px"},children:"⠉"},void 0,!1,void 0,this),r("span",{children:a.name},void 0,!1,void 0,this),r("span",{style:{color:"var(--c-muted)",fontSize:"10px"},children:["(",a.state,")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),o&&r("div",{style:{color:i==="warn"?"var(--c-warn)":i==="error"?"var(--c-danger)":"var(--c-muted)",lineHeight:1.4},children:o},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function aa(e){return typeof e==="string"&&e.trim().length>0?e.trim():null}function F_(e){if(typeof e==="string"){let i=aa(e);return i?{title:"Evidence warning",detail:i}:null}if(!e||typeof e!=="object")return null;let t=e,n=aa(t.title)??"Evidence warning",o=aa(t.detail);return o?{title:n,detail:o}:null}function t$(e){let t=[],n=F_(e.data.warning);if(n)t.push(n);let o=e.data.warnings;if(Array.isArray(o))for(let s of o){let a=F_(s);if(a)t.push(a)}let i=aa(e.data.validationStatus)?.toLowerCase();if(i==="failed"||i==="invalid")t.push({title:"Image failed validation",detail:aa(e.data.validationMessage)??"Review this image before using it as evidence."});return t}function n$(e){let t=[e.data.title,e.data.caption,e.data.alt,e.data.src,e.data.path].map((n)=>aa(n)?.toLowerCase()??"").join(" ");if(t.length===0)return!1;return["login","log in","sign in","signin","password","2fa","mfa","authenticate","authentication","sso"].some((n)=>t.includes(n))}function H_(e){let t=t$(e);if(t.length>0)return t;if(n$(e))return[{title:"Captured login page",detail:"This image looks like an auth screen. Treat it as environment context, not product evidence."}];return[]}function Sd({node:e,expanded:t=!1}){let n=e.data.src||"",o=e.data.alt||e.data.title||"Image",i=e.data.caption||"",s=H_(e),a=Zs(n.startsWith("data:")||n.startsWith("http://")||n.startsWith("https://")?n:`/api/canvas/image/${e.id}`),[l,c]=E(!1),[u,d]=E(!1),[p,f]=E(1),[m,h]=E({x:0,y:0}),[g,y]=E({w:0,h:0}),b=D(null),x=D(!1),C=D({x:0,y:0}),v=oe((B)=>{let J=B.target;y({w:J.naturalWidth,h:J.naturalHeight}),c(!0),d(!1)},[]),k=oe(()=>{d(!0),c(!1)},[]);q(()=>{f(1),h({x:0,y:0})},[n]);let _=oe((B)=>{B.preventDefault(),B.stopPropagation();let J=B.deltaY>0?0.9:1.1;f((X)=>Math.max(0.25,Math.min(10,X*J)))},[]),I=oe((B)=>{if(p<=1)return;B.stopPropagation(),x.current=!0,C.current={x:B.clientX,y:B.clientY},B.target.setPointerCapture(B.pointerId)},[p]),w=oe((B)=>{if(!x.current)return;let J=B.clientX-C.current.x,X=B.clientY-C.current.y;C.current={x:B.clientX,y:B.clientY},h((V)=>({x:V.x+J,y:V.y+X}))},[]),P=oe(()=>{x.current=!1},[]),L=oe(()=>{f(1),h({x:0,y:0})},[]);if(!n)return r("div",{class:"image-node-empty",children:[r("div",{class:"image-node-empty-icon",children:"\uD83D\uDDBC"},void 0,!1,void 0,this),r("div",{class:"image-node-empty-text",children:"No image source"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let N=g.w>0?`${g.w}×${g.h}`:"",Y=Math.round(p*100);return r("div",{class:`image-node ${t?"image-node-expanded":""}`,ref:b,children:[s.length>0&&r("div",{class:"image-node-warning-stack",children:s.map((B)=>r("div",{class:"image-node-warning",children:[r("span",{class:"image-node-warning-title",children:B.title},void 0,!1,void 0,this),r("span",{class:"image-node-warning-detail",children:B.detail},void 0,!1,void 0,this)]},`${B.title}-${B.detail}`,!0,void 0,this))},void 0,!1,void 0,this),r("div",{class:"image-node-viewport",onWheel:_,onPointerDown:I,onPointerMove:w,onPointerUp:P,style:{cursor:p>1?"grab":"default"},children:[!l&&!u&&r("div",{class:"image-node-loading",children:"Loading…"},void 0,!1,void 0,this),u&&r("div",{class:"image-node-error",children:[r("div",{class:"image-node-error-icon",children:"⚠"},void 0,!1,void 0,this),r("div",{children:"Failed to load image"},void 0,!1,void 0,this),r("div",{class:"image-node-error-path",children:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("img",{src:a,alt:o,onLoad:v,onError:k,draggable:!1,style:{transform:`translate(${m.x}px, ${m.y}px) scale(${p})`,opacity:l?1:0,display:u?"none":"block"}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(i||N||p!==1)&&r("div",{class:"image-node-footer",children:[i&&r("span",{class:"image-node-caption",children:i},void 0,!1,void 0,this),r("span",{class:"image-node-meta",children:[N&&r("span",{children:N},void 0,!1,void 0,this),p!==1&&r("button",{type:"button",class:"image-node-zoom-reset",onClick:L,"aria-label":"Reset zoom",children:[Y,"% ",r(Tu,{size:14},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 U_({node:e}){if((e.data.children??[]).filter((o)=>H.value.has(o)).length>0)return null;return r("div",{class:"group-empty-hint",children:"Drop nodes here — release while the frame lights up to add them"},void 0,!1,void 0,this)}function o$(e){try{return new URL(e).host}catch{return e}}function r$(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toLocaleString()}function _d({node:e,expanded:t=!1}){let n=typeof e.data.url==="string"?e.data.url:"",o=typeof e.data.pageTitle==="string"?e.data.pageTitle:"",i=typeof e.data.description==="string"?e.data.description:"",s=typeof e.data.excerpt==="string"?e.data.excerpt:typeof e.data.content==="string"?e.data.content:"",a=typeof e.data.status==="string"?e.data.status:"idle",l=typeof e.data.error==="string"?e.data.error:"",c=r$(typeof e.data.fetchedAt==="string"?e.data.fetchedAt:void 0),u=typeof e.data.statusCode==="number"?e.data.statusCode:null,d=typeof e.data.imageUrl==="string"?e.data.imageUrl:"",p=e.data.frameBlocked===!0,f=typeof e.data.frameBlockedReason==="string"?e.data.frameBlockedReason:"",[m,h]=E(!1),[g,y]=E(t);q(()=>{if(t)y(!0)},[t]);let b=oe(async()=>{if(!n||m)return;h(!0);try{await fu(e.id)}finally{h(!1)}},[e.id,m,n]);if(!n)return r("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"12px"},children:"No webpage URL set"},void 0,!1,void 0,this);let x=a==="ready"?"var(--c-ok)":a==="error"?"var(--c-danger)":"var(--c-muted)";return r("div",{style:{display:"flex",flexDirection:"column",gap:"12px",height:"100%"},children:[r("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"12px"},children:[r("div",{style:{minWidth:0,flex:1},children:[r("div",{style:{fontSize:"12px",color:"var(--c-muted)"},children:o$(n)},void 0,!1,void 0,this),r("div",{style:{fontSize:t?"18px":"15px",fontWeight:700,color:"var(--c-text)"},children:o||e.data.title||n},void 0,!1,void 0,this),r("a",{href:n,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--c-accent)",fontSize:"12px",wordBreak:"break-all",textDecoration:"none"},children:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{style:{display:"inline-flex",alignItems:"center",gap:"6px",padding:"4px 8px",borderRadius:"999px",background:"rgba(255,255,255,0.04)",color:x,fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.04em",flexShrink:0},children:[r("span",{style:{width:"7px",height:"7px",borderRadius:"999px",background:x}},void 0,!1,void 0,this),a]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),(i||d)&&r("div",{style:{display:"grid",gridTemplateColumns:d&&t?"160px 1fr":"1fr",gap:"12px",alignItems:"start"},children:[d&&t&&r("img",{src:d,alt:o||"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),i&&r("p",{style:{margin:0,color:"var(--c-text-soft)",lineHeight:1.5,fontSize:t?"14px":"12px"},children:i},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"},children:[r("button",{type:"button",onClick:b,disabled:m,style:{border:"1px solid var(--c-line)",background:"var(--c-panel-soft)",color:"var(--c-text)",borderRadius:"8px",padding:"6px 10px",cursor:m?"progress":"pointer",fontSize:"12px"},children:m||a==="fetching"?"Refreshing…":"Refresh"},void 0,!1,void 0,this),t&&!p&&r("button",{type:"button",onClick:()=>y((C)=>!C),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:g?"Hide live preview":"Show live preview"},void 0,!1,void 0,this),r("button",{type:"button",onClick:()=>window.open(n,"_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),t&&p&&r("div",{style:{border:"1px solid var(--c-line)",borderRadius:"12px",overflow:"hidden",background:"var(--c-panel-soft)"},children:[r("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),r("div",{style:{padding:"20px",color:"var(--c-text-soft)",lineHeight:1.6,fontSize:"13px"},children:f||"The remote site blocks iframe embedding."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t&&g&&!p&&r("div",{style:{border:"1px solid var(--c-line)",borderRadius:"12px",overflow:"hidden",background:"var(--c-panel-soft)"},children:[r("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),r("iframe",{class:"webpage-node-iframe",title:o||e.data.title||n,src:n,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:t?"320px":"180px",border:"none",background:"#fff"}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(c||u!==null)&&r("div",{style:{display:"flex",gap:"12px",flexWrap:"wrap",color:"var(--c-muted)",fontSize:"11px"},children:[c&&r("span",{children:["Fetched ",c]},void 0,!0,void 0,this),u!==null&&r("span",{children:["HTTP ",u]},void 0,!0,void 0,this),p&&r("span",{children:"Preview blocked by site"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),l&&r("div",{style:{color:"var(--c-danger)",fontSize:"12px",lineHeight:1.5},children:l},void 0,!1,void 0,this),r("div",{style:{flex:1,minHeight:0,overflow:"auto",border:"1px solid var(--c-line)",borderRadius:"10px",background:"var(--c-panel-soft)",padding:t?"14px":"10px"},children:s?r("div",{style:{whiteSpace:"pre-wrap",lineHeight:1.55,color:"var(--c-text)",fontSize:t?"14px":"12px"},children:s},void 0,!1,void 0,this):r("div",{style:{color:"var(--c-dim)",fontStyle:"italic"},children:a==="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 j_(e){return e.type==="html"&&e.data.presentation===!0}function i$(e){let t=e;if(t?.enabled!==!0)return"disabled";if(!Array.isArray(t.allowed))return"enabled:default";let n=[...new Set(t.allowed.filter((o)=>typeof o==="string"))].sort();return n.length>0?`enabled:${n.join(",")}`:"disabled"}function Bl({node:e,expanded:t=!1,presentation:n=!1,presentationExitToken:o,autoFocus:i=!1}){let s=D(null),a=Qt.value,l=i$(e.data.axCapabilities),c=Ke(()=>`theme-${crypto.randomUUID()}`,[]),u=Ke(()=>`ax-${crypto.randomUUID()}`,[l]),d=Ke(()=>`frame-${crypto.randomUUID()}`,[]),p=typeof e.data.html==="string"?e.data.html:typeof e.data.content==="string"?e.data.content:"",f=Ke(()=>Ks(p),[p]),m=Ke(()=>p?Cl(e.id,{theme:a,themeToken:c,present:n,presentToken:o,v:f,axToken:u,frameToken:d}):"",[p,n,o,c,f,e.id,u,d]),h=Js(m);Xs(e,s,t?"":d),ra({enabled:!0,token:u,nodeId:e.id,sourceSurface:"html-node",iframeRef:s}),q(()=>{if(s.current?.contentWindow?.postMessage({source:Qn,type:"theme-update",token:c,theme:a},"*"),i)s.current?.focus()},[a,c]);let g=e.data.axCapabilities,y=g?.enabled===!0&&(!Array.isArray(g.allowed)||g.allowed.length>0),b=Lo.value;q(()=>{if(!y||b==null)return;s.current?.contentWindow?.postMessage({source:Qn,type:"ax-update",token:u,state:b},"*")},[y,b,u]),q(()=>{if(!i)return;let v=window.setTimeout(()=>s.current?.focus(),0);return()=>window.clearTimeout(v)},[i,m]);let x=(v,k)=>{if(k.aborted)return Promise.resolve(!1);return new Promise((_)=>{let I=(N)=>{clearTimeout(L),window.removeEventListener("message",P),k.removeEventListener("abort",w),_(N)},w=()=>I(!1),P=(N)=>{if(N.source!==v.contentWindow||N.data?.source!==Qn||N.data?.token!==c)return;if(N.data.type==="mounted")clearTimeout(L);if(N.data.type==="ready")I(!0)},L=setTimeout(w,1e4);window.addEventListener("message",P),k.addEventListener("abort",w,{once:!0}),v.contentWindow?.postMessage({source:Qn,type:"check-ready",token:c},"*")})},C=()=>{if(s.current?.contentWindow?.postMessage({source:Qn,type:"theme-update",token:c,theme:a},"*"),y&&Lo.value!=null)s.current?.contentWindow?.postMessage({source:Qn,type:"ax-update",token:u,state:Lo.value},"*");if(i)s.current?.focus()};if(!p)return r("div",{style:{color:"var(--c-dim)",fontStyle:"italic",padding:"12px"},children:"No HTML content set"},void 0,!1,void 0,this);return r(Bh,{source:h,iframeRef:s,className:n?"html-node-frame html-node-frame-presentation":t?"html-node-frame html-node-frame-expanded":"html-node-frame",title:typeof e.data.title==="string"?e.data.title:"HTML node",sandbox:"allow-scripts",allow:"",tabIndex:i?0:void 0,onLoad:C,onDocumentLoad:x},void 0,!1,void 0,this)}var Fh=null;async function Z_(){if(!Fh)Fh=await ck();return Fh}function W_(e,t){if(!e)return null;let n=e.toLowerCase(),o=t.find((s)=>s.name.toLowerCase()===n);if(o)return o.name;let i=t.filter((s)=>s.name.toLowerCase().startsWith(n));return i.length===1?i[0].name:null}function s$({html:e}){let t=D(null);return q(()=>{let n=t.current;if(!n)return;if(n.replaceChildren(),!e)return;let o=document.createElement("template");o.innerHTML=er(e),n.append(o.content.cloneNode(!0))},[e]),r("div",{ref:t},void 0,!1,void 0,this)}function a$(e,t){return`${e.role}:${e.status??"none"}:${t}:${e.text}`}function q_({count:e}){if(e===0)return null;return r("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:["✦"," ",e," context node",e!==1?"s":""," attached"]},void 0,!0,void 0,this)}function G_({message:e,onDismiss:t}){if(!e)return null;return r("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:[r("span",{style:{flex:1},children:e},void 0,!1,void 0,this),r("button",{type:"button",onClick:t,"aria-label":"Dismiss error",style:{background:"none",border:"none",color:"var(--c-danger)",cursor:"pointer",fontSize:"13px",padding:"0 2px"},children:r(Tt,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Cd({node:e,expanded:t=!1}){let n=Array.isArray(e.data.turns)?e.data.turns:[],o=n.length===0,i=e.data.text||"",s=e.data.status||"draft",a=o?s:e.data.threadStatus||"draft",l=a==="draft",c=a==="pending"||a==="sending",u=a==="streaming",d=a==="answered",[p,f]=E(""),[m,h]=E(""),[g,y]=E(null),[b,x]=E(new Map),C=D(null),v=D(null),k=n[n.length-1],_=`${n.length}:${k?.role??""}:${k?.status??""}:${Math.floor((k?.text?.length??0)/200)}`;q(()=>{if(t&&l&&C.current)C.current.focus()},[t,l]),q(()=>{if(!_)return;if(v.current)v.current.scrollTo({top:v.current.scrollHeight,behavior:"smooth"})},[_]);let I=D(null),w=D(n);w.current=n,q(()=>{let J=n.some((V)=>V.role==="assistant"&&V.status==="streaming"),X=()=>{let V=!1,he=w.current.map((A,te)=>({turn:A,index:te})).filter(({turn:A})=>A.role==="assistant"&&A.text);if(he.length===0)return;return Promise.all(he.map(async({turn:A,index:te})=>{let M=await Ko(A.text);return{index:te,html:er(M??"")}})).then((A)=>{if(V)return;let te=new Map;for(let M of A)te.set(M.index,M.html);x(te)}),()=>{V=!0}};if(!J){if(I.current)clearTimeout(I.current),I.current=null;return X()}if(I.current)clearTimeout(I.current);return I.current=setTimeout(()=>{I.current=null,X()},400),()=>{if(I.current)clearTimeout(I.current),I.current=null}},[n]);let P=oe(async()=>{let J=p.trim();if(!J)return;let X=p;y(null),Xe(e.id,{turns:[{role:"user",text:J,status:"pending"}],threadStatus:"pending",text:J}),f("");let V=Array.isArray(e.data.contextNodeIds)?e.data.contextNodeIds:void 0;if(!(await tl(J,e.position,e.id,V,e.id)).ok)Xe(e.id,{turns:[],threadStatus:"draft",text:"",status:"draft"}),f(X),y("Failed to send prompt. Your draft has been restored.")},[p,e.id,e.position,e.data.contextNodeIds]),L=oe(async()=>{let J=m.trim();if(!J)return;let X=m;y(null);let V=Array.isArray(e.data.turns)?[...e.data.turns]:[];if(V.push({role:"user",text:J,status:"pending"}),Xe(e.id,{turns:V,threadStatus:"pending"}),h(""),!(await uk(e.id,J)).ok)V.pop(),Xe(e.id,{turns:V,threadStatus:"answered"}),h(X),y("Failed to send reply. Your draft has been restored.")},[m,e.id,e.data.turns]),N=oe((J)=>{if(J.key==="Enter"&&(J.metaKey||J.ctrlKey)){J.preventDefault(),P();return}if(J.key==="Tab"&&p.startsWith("/")){J.preventDefault();let X=p.slice(1).split(/\s/)[0];if(X)Z_().then((V)=>{let ee=W_(X,V);if(ee)f(`/${ee}`)})}},[P,p]),Y=oe((J)=>{if(J.key==="Enter"&&(J.metaKey||J.ctrlKey)){J.preventDefault(),L();return}if(J.key==="Tab"&&m.startsWith("/")){J.preventDefault();let X=m.slice(1).split(/\s/)[0];if(X)Z_().then((V)=>{let ee=W_(X,V);if(ee)h(`/${ee}`)})}},[L,m]),B=Array.isArray(e.data.contextNodeIds)?e.data.contextNodeIds.length:0;if(l&&n.length===0)return r("div",{class:"prompt-node-inner",style:{display:"flex",flexDirection:"column",height:"100%",gap:"8px"},children:[r(q_,{count:B},void 0,!1,void 0,this),r(G_,{message:g,onDismiss:()=>y(null)},void 0,!1,void 0,this),r("textarea",{ref:C,value:p,onInput:(J)=>f(J.target.value),onKeyDown:N,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-ui)",fontSize:"13px",lineHeight:"1.5",padding:"8px 10px",outline:"none"}},void 0,!1,void 0,this),r("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[r("span",{style:{fontSize:"10px",color:"var(--c-muted)"},children:["⌘","+Enter to send"]},void 0,!0,void 0,this),r("button",{type:"button",onClick:P,disabled:!p.trim(),style:{padding:"5px 14px",fontSize:"12px",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:"Send"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(o)return r("div",{class:"prompt-node-inner",style:{display:"flex",flexDirection:"column",height:"100%"},children:[r("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:i},void 0,!1,void 0,this),r("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",paddingTop:"6px",borderTop:"1px solid var(--c-line)",marginTop:"4px"},children:r("span",{style:{fontSize:"10px",textTransform:"uppercase",fontWeight:600,color:c?"var(--c-warn)":d?"var(--c-ok)":"var(--c-muted)"},children:c?"Sending…":d?"Answered":s},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return r("div",{class:"prompt-node-inner",style:{display:"flex",flexDirection:"column",height:"100%"},children:[r(q_,{count:B},void 0,!1,void 0,this),r(G_,{message:g,onDismiss:()=>y(null)},void 0,!1,void 0,this),r("div",{ref:v,style:{flex:1,overflow:"auto",minHeight:0},children:n.map((J,X)=>r("div",{children:[X>0&&r("div",{class:"thread-turn-divider"},void 0,!1,void 0,this),J.role==="user"?r("div",{class:"thread-turn-user",children:[r("div",{class:"thread-turn-role",children:[r("span",{class:"status-dot"},void 0,!1,void 0,this),"You"]},void 0,!0,void 0,this),r("div",{style:{fontSize:t?"15px":"13px",lineHeight:t?"1.7":"1.55",color:"var(--c-text)",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:J.text},void 0,!1,void 0,this)]},void 0,!0,void 0,this):r("div",{class:"thread-turn-assistant",children:[r("div",{class:"thread-turn-role",children:[r("span",{class:`status-dot${J.status==="streaming"?" pulsing":""}`},void 0,!1,void 0,this),"PMX"]},void 0,!0,void 0,this),J.status==="streaming"&&!J.text&&r("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),r("div",{class:t?"md-reader-content":void 0,style:{fontSize:t?void 0:"13px",lineHeight:t?void 0:"1.55",opacity:J.text?1:0.4},children:b.get(X)?r(be,{children:[r(s$,{html:b.get(X)??""},void 0,!1,void 0,this),J.status==="streaming"&&r("span",{class:"streaming-cursor"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):r("div",{style:{color:"var(--c-muted)",fontStyle:"italic"},children:J.status==="streaming"?"Waiting for response…":J.text||"Empty response"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},a$(J,X),!0,void 0,this))},void 0,!1,void 0,this),r("div",{style:{flexShrink:0,borderTop:"1px solid var(--c-line)",marginTop:"4px",paddingTop:"6px"},children:[r("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:d?"6px":0},children:[r("span",{style:{fontSize:"10px",textTransform:"uppercase",fontWeight:600,color:u?"var(--c-accent)":c?"var(--c-warn)":d?"var(--c-ok)":"var(--c-muted)"},children:u?"Streaming…":c?"Sending…":d?"Answered":a},void 0,!1,void 0,this),r("span",{style:{fontSize:"10px",color:"var(--c-muted)"},children:[n.length," turn",n.length!==1?"s":""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),d&&r("div",{class:"thread-reply-area",children:[r("textarea",{value:m,onInput:(J)=>h(J.target.value),onKeyDown:Y,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-ui)",fontSize:"12px",lineHeight:"1.5",padding:"6px 8px",outline:"none"}},void 0,!1,void 0,this),r("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:"4px"},children:[r("span",{style:{fontSize:"10px",color:"var(--c-muted)"},children:["⌘","+Enter"]},void 0,!0,void 0,this),r("button",{type:"button",onClick:L,disabled:!m.trim(),style:{padding:"3px 10px",fontSize:"11px",fontWeight:600,background:m.trim()?"var(--c-accent)":"var(--c-line)",color:m.trim()?"var(--c-contrast-fg)":"var(--c-muted)",border:"none",borderRadius:"var(--radius-sm)",cursor:m.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 l$({html:e}){let t=D(null);return q(()=>{let n=t.current;if(!n)return;if(n.replaceChildren(),!e)return;let o=document.createElement("template");o.innerHTML=er(e),n.append(o.content.cloneNode(!0))},[e]),r("div",{ref:t},void 0,!1,void 0,this)}function Td({node:e,expanded:t=!1}){let n=e.data.content||"",o=e.data.status||"streaming",[i,s]=E(""),a=o==="streaming",l=o==="complete";q(()=>{if(!n){s("");return}let u=!1;return Ko(n).then((d)=>{if(!u)s(er(d??""))}),()=>{u=!0}},[n]);let c=oe(()=>{tl("",{x:e.position.x,y:e.position.y+e.size.height+24},e.id)},[e]);return r("div",{class:"response-node-inner",style:{display:"flex",flexDirection:"column",height:"100%"},children:[a&&r("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),r("div",{class:t?"md-reader":void 0,style:{flex:1,overflow:"auto",minHeight:0,opacity:n?1:0.4,transition:"opacity 0.2s ease"},children:i?r("div",{class:t?"md-reader-content":void 0,children:r(l$,{html:i},void 0,!1,void 0,this)},void 0,!1,void 0,this):r("div",{style:{color:"var(--c-muted)",fontStyle:"italic",fontSize:"13px"},children:a?"Waiting for response…":"Empty response"},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",paddingTop:"6px",borderTop:"1px solid var(--c-line)",marginTop:"4px",flexShrink:0},children:[r("span",{style:{fontSize:"10px",textTransform:"uppercase",fontWeight:600,color:a?"var(--c-accent)":l?"var(--c-ok)":"var(--c-muted)"},children:a?"Streaming…":l?"Complete":o},void 0,!1,void 0,this),l&&r("button",{type:"button",onClick:c,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 K_(e){return{toolName:e.toolName||e.title||"unknown",category:e.category||"other",status:e.status||"running",duration:e.duration||"",resultSummary:e.resultSummary||e.content||"",error:e.error||""}}var V_={mcp:"var(--c-muted)",file:"var(--c-muted)",subagent:"var(--c-subagent)",other:"var(--c-muted)"},c$={running:"⠋",success:"✓",failed:"✕"},u$={running:"var(--c-accent)",success:"var(--c-ok)",failed:"var(--c-danger)"};function Id({node:e}){let{toolName:t,category:n,status:o,duration:i,resultSummary:s,error:a}=K_(e.data),l=V_[n]??V_.other,c=c$[o]??"◌",u=u$[o]??"var(--c-muted)",d=o==="running",p=a?a.slice(0,30):s.length>30?`${s.slice(0,28)}…`:s;return r("div",{style:{display:"flex",alignItems:"center",gap:"8px",padding:"0 12px",height:"100%",overflow:"hidden"},children:[r("span",{style:{fontSize:"14px",color:u,flexShrink:0,animation:d?"pulse 1.5s infinite":"none"},children:c},void 0,!1,void 0,this),r("div",{style:{flex:1,minWidth:0,overflow:"hidden"},children:[r("div",{style:{fontFamily:"var(--font-code)",fontSize:"11px",fontWeight:600,color:l,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:t},void 0,!1,void 0,this),p&&r("div",{style:{fontSize:"10px",color:a?"var(--c-danger)":"var(--c-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",lineHeight:1.3},children:p},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i&&r("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:i},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var d$=new Set(["png","jpg","jpeg","gif","svg","webp","bmp","ico","avif"]),p$=new Set(["md","mdx","markdown"]);function f$(e){let t=e.split(".").pop()?.toLowerCase()??"";if(d$.has(t))return"image";if(p$.has(t))return"markdown";return"file"}async function la(e,t,n){let o=ae.value,i=400,s=300,a=20,l=Math.ceil(Math.sqrt(e.length));for(let c=0;c<e.length;c++){let u=e[c],d=c%l,p=Math.floor(c/l),f=t-l*420/2+d*420,m=n-150+p*320,h=f$(u.name),g=u.name;if(/\.(pdf|pptx?|xlsx?|docx?|od[pts])$/i.test(g)){if(!o||u.size===0||u.size>20971520){mn("remove","File not attached","Open a board and choose a nonempty file under 20 MiB.");continue}let y=new URLSearchParams({boardId:o,name:g,mime:u.type,x:String(f),y:String(m)});mn("context","Attaching document",g),await de("attachDocument",`/api/canvas/attachments?${y}`,null,{method:"POST",body:u});continue}if(ae.value!==o)return;if(h==="image"){let y=new FileReader,b=await new Promise((x)=>{y.onload=()=>x(y.result),y.readAsDataURL(u)});if(ae.value!==o)return;await No({type:"image",title:g,content:b,x:f,y:m,width:400,height:300,...o?{boardId:o}:{}})}else{let y=await u.text();if(ae.value!==o)return;let b=h==="markdown"||h==="file";await No({type:h,title:g,content:y,x:f,y:m,width:b?720:400,height:b?500:300,...o?{boardId:o}:{}})}}}var X_={width:260,height:150},m$={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 Uh(e){return!!e&&e in an}function Pr(e){if(!e)return null;let t=H.value.get(e);if(!t)return null;return{left:t.position.x,top:t.position.y,width:t.size.width,height:t.size.height}}function Hh(e){return{x:e.left+e.width/2,y:e.top+e.height/2}}function Fl(e){let t=typeof e.confidence!=="number"?0.82:0.4+Math.max(0,Math.min(1,e.confidence))*0.55;return e.auto?t*0.62:t}function J_(e,t){let n=Math.max(40,Math.abs(t.x-e.x)/2);return`M ${e.x} ${e.y} C ${e.x+n} ${e.y}, ${t.x-n} ${t.y}, ${t.x} ${t.y}`}function jh({intent:e}){let t=Uh(e.nodeType)?Do(e.nodeType):null,n=e.label||e.kind,o=typeof e.confidence==="number"?`${Math.round(e.confidence*100)}%`:null;return r("div",{class:"intent-info",onMouseEnter:()=>Cs.value=e.id,onMouseLeave:()=>{if(Cs.value===e.id)Cs.value=null},children:[r("div",{class:"intent-chip",children:[typeof e.seq==="number"&&r("span",{class:"intent-seq",children:e.seq},void 0,!1,void 0,this),t&&r("span",{class:"intent-chip-icon","aria-hidden":"true",children:r(t,{size:12},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("span",{class:"intent-chip-label",children:n},void 0,!1,void 0,this),o&&r("span",{class:"intent-confidence",children:o},void 0,!1,void 0,this),e.phase==="forming"&&!e.auto&&r(_e,{label:"Veto this move",shortcut:"Esc",children:r("button",{type:"button",class:"intent-veto","aria-label":"Veto this move",onClick:(i)=>{i.stopPropagation(),$i(e)},children:r(Tt,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),e.reason&&r("div",{class:"intent-reason",children:e.reason},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Y_({intent:e,rect:t}){let n=Uh(e.nodeType)?Do(e.nodeType):null,o=Uh(e.nodeType)?an[e.nodeType]:"Node";return r("div",{class:`intent-ghost intent-ghost-box is-${e.phase}${e.auto?" is-auto":""}`,"data-intent-id":e.id,style:{left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`,opacity:Fl(e)},children:[r("div",{class:"intent-ghost-titlebar",children:[r("span",{class:"intent-ghost-icon","aria-hidden":"true",children:n?r(n,{size:13},void 0,!1,void 0,this):"◇"},void 0,!1,void 0,this),r("span",{class:"intent-ghost-badge",children:o},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r(jh,{intent:e},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Q_({intent:e,rect:t,variant:n}){return r("div",{class:`intent-ghost intent-ghost-${n} is-${e.phase}${e.auto?" is-auto":""}`,"data-intent-id":e.id,style:{left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`,opacity:Fl(e)},children:[n==="edit"&&r("div",{class:"intent-edit-bar"},void 0,!1,void 0,this),r(jh,{intent:e},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function h$(e){let t=e.phase==="settling"?Pr(e.settledNodeId):null;switch(e.kind){case"create":{if(!e.position)return null;let n=e.nodeType&&m$[e.nodeType]||X_,o=t??{left:e.position.x,top:e.position.y,...n};return r(Y_,{intent:e,rect:o},e.id,!1,void 0,this)}case"move":{if(!e.position)return null;let o=Pr(e.nodeId)??X_,i=t??{left:e.position.x,top:e.position.y,width:o.width,height:o.height};return r(Y_,{intent:e,rect:i},e.id,!1,void 0,this)}case"remove":{let n=t??Pr(e.nodeId);if(!n)return null;return r(Q_,{intent:e,rect:n,variant:"remove"},e.id,!1,void 0,this)}case"edit":{let n=t??Pr(e.nodeId);if(!n)return null;return r(Q_,{intent:e,rect:n,variant:"edit"},e.id,!1,void 0,this)}case"connect":{if(!e.edge)return null;if("toBoardId"in e.edge&&e.edge.toBoardId&&e.edge.toBoardId!==ae.value)return null;let n=Pr(e.edge.from),o=Pr(e.edge.to);if(!n||!o)return null;let i={x:(n.left+n.width/2+o.left+o.width/2)/2,y:(n.top+n.height/2+o.top+o.height/2)/2},s={left:i.x-110,top:i.y-18,width:220,height:36};return r("div",{class:`intent-ghost intent-ghost-connect is-${e.phase}${e.auto?" is-auto":""}`,"data-intent-id":e.id,style:{left:`${s.left}px`,top:`${s.top}px`,width:`${s.width}px`,opacity:Fl(e)},children:r(jh,{intent:e},void 0,!1,void 0,this)},e.id,!1,void 0,this)}default:return null}}function eC(){let e=Array.from(Wt.value.values());if(q(()=>{function t(n){if(n.key!=="Escape")return;let o=Cs.value;if(!o)return;let i=Wt.value.get(o);if(!i||i.phase!=="forming")return;n.stopImmediatePropagation(),n.preventDefault(),$i(i)}return window.addEventListener("keydown",t,!0),()=>window.removeEventListener("keydown",t,!0)},[]),e.length===0)return null;return r("div",{class:"intent-layer",onAnimationEnd:(t)=>{if(t.animationName!=="intent-settle"&&t.animationName!=="intent-dissolve")return;let n=t.target.dataset.intentId;if(n&&Wt.value.get(n)?.phase!=="forming")Mi(n)},children:[r("svg",{class:"intent-line-layer",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"visible",pointerEvents:"none"},children:[r("defs",{children:r("marker",{id:"intent-arrow",markerWidth:"8",markerHeight:"8",refX:"6",refY:"3",orient:"auto",children:r("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),e.map((t)=>{if(t.kind==="connect"&&t.edge){if("toBoardId"in t.edge&&t.edge.toBoardId&&t.edge.toBoardId!==ae.value)return null;let n=Pr(t.edge.from),o=Pr(t.edge.to);if(!n||!o)return null;return r("path",{d:J_(Hh(n),Hh(o)),class:`intent-edge type-${t.edge.type}`,style:{opacity:Fl(t)}},`line-${t.id}`,!1,void 0,this)}if(t.kind==="move"&&t.position){let n=Pr(t.nodeId);if(!n)return null;let o=n,i={x:t.position.x+o.width/2,y:t.position.y+o.height/2};return r("path",{d:J_(Hh(n),i),class:"intent-trail",markerEnd:"url(#intent-arrow)",style:{opacity:Fl(t)}},`line-${t.id}`,!1,void 0,this)}return null})]},void 0,!0,void 0,this),e.map(h$)]},void 0,!0,void 0,this)}var ca="Agent session";function tC(e){return e.some((t)=>t.attached)}function nC(e){return e.filter((t)=>!t.attached)}function di(e){switch(e.phase){case"thinking":return"Thinking";case"tooling":return e.detail?`Running ${e.detail}`:"Working";case"waiting-approval":return"Waiting on you";default:return"Idle"}}var en=ie([]),pi=ie([]),es=ie(!1),ua=ie(!1),Zh=ie(null);function So(e){return en.value.find((n)=>n.sessionId===e)?.parentAgentId?"var(--c-subagent)":"var(--c-agent)"}function Ed(e){return(e.trim().replace(/^[^a-z0-9]+/i,"").charAt(0)||e.trim().charAt(0)||"?").toUpperCase()}function Ad(e,t=Date.now()){let n=t-Date.parse(e);if(!Number.isFinite(n)||n<5000)return"now";if(n<60000)return`${Math.floor(n/1000)}s`;if(n<3600000)return`${Math.floor(n/60000)}m`;return`${Math.floor(n/3600000)}h`}var _o=Ve(()=>tC(en.value)),tr=Ve(()=>xt.value&&_o.value),Rd=Ve(()=>xt.value?nC(en.value):en.value),oC=Ve(()=>{let e=new Set;return[...en.value].filter((t)=>t.label!==ca).sort((t,n)=>Number(n.attached)-Number(t.attached)).map((t)=>({value:t.sessionId==="browser"?t.label:t.sessionId,label:t.label,attached:t.attached,steerable:t.attached||t.steerable===!0,pendingSteers:t.pendingSteers??0,polling:t.lastClaimAt!==void 0&&Date.now()-Date.parse(t.lastClaimAt)<300000})).filter((t)=>e.has(t.value)?!1:(e.add(t.value),!0))}),da=Ve(()=>en.value.filter((e)=>e.attached)),fi=Ve(()=>en.value.find((e)=>e.attached)??null);function g$(e){let t=new Set;for(let n of e)if(n.nodeId&&n.kind!=="create")t.add(n.nodeId);return t}var Pd=Ve(()=>g$(Wt.value.values()));function Nd(e,t){if(e.cursor)return{x:e.cursor.x,y:e.cursor.y};if(!e.focusNodeId)return null;let n=t(e.focusNodeId);if(!n)return null;return{x:n.position.x+Math.max(24,n.size.width-28),y:n.position.y+16}}function Wh(e){if(!e)return;if(Array.isArray(e.presences))en.value=e.presences;if(Array.isArray(e.activity))pi.value=e.activity}function rC(){let e=D(new Map),t=Te.value.scale,n=H.value,o=1/Math.max(0.05,t),i=en.value.map((s)=>{let a=Nd(s,(c)=>n.get(c));if(a)e.current.set(s.sessionId,a);let l=a??e.current.get(s.sessionId)??null;return l?{presence:s,position:l}:null}).filter((s)=>s!==null);if(i.length===0)return null;return r("div",{class:"agent-presence-layer","aria-hidden":"true",children:i.map(({presence:s,position:a})=>r("div",{class:`agent-cursor phase-${s.phase}${s.cursor?" has-explicit-cursor":""}${s.attached?"":" is-external"}${s.parentAgentId?" is-worker":""}`,"data-session-id":s.sessionId,style:{transform:`translate(${a.x}px, ${a.y}px)`,"--identity-color":So(s.sessionId)},children:r("div",{class:"agent-cursor-inner",style:{transform:`scale(${o})`},children:[r("svg",{class:"agent-cursor-glyph",width:"16",height:"18",viewBox:"0 0 16 18","aria-hidden":"true",children:r("path",{d:"M1.5 1.5L14.5 9.2 8.3 10.6 5.2 16.5z",fill:"currentColor",stroke:"var(--c-bg)","stroke-width":"1.2"},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("span",{class:"agent-cursor-chip",children:[r("span",{class:"agent-cursor-dot"},void 0,!1,void 0,this),r("span",{class:"agent-cursor-label",children:di(s)},void 0,!1,void 0,this),r("span",{class:"agent-cursor-who",children:s.label},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},s.sessionId,!1,void 0,this))},void 0,!1,void 0,this)}function nr(e=1000){let[t,n]=E(()=>Date.now());return q(()=>{if(e<=0)return;n(Date.now());let o=window.setInterval(()=>n(Date.now()),e);return()=>window.clearInterval(o)},[e]),t}function iC(){let e=nr(Xa.value.length>0?5000:0),t=Xa.value.filter((o)=>o.cursor!==null&&(!o.lastSeenAt||e-Date.parse(o.lastSeenAt)<$w+5000));if(t.length===0)return null;let n=1/Math.max(0.05,Te.value.scale);return r("div",{class:"human-presence-layer","aria-hidden":"true",children:t.map((o)=>r("div",{class:`human-cursor${o.grabbingNodeId?" is-grabbing":""}`,"data-client-id":o.clientId,style:{transform:`translate(${o.cursor.x}px, ${o.cursor.y}px)`},children:r("div",{class:"human-cursor-inner",style:{transform:`scale(${n})`},children:[r("svg",{class:"human-cursor-glyph",width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:r("path",{d:"M3 2 L13 8 L8.5 9.5 L6.5 14 Z",fill:"currentColor",stroke:"var(--c-bg)","stroke-width":"1"},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("span",{class:"human-cursor-tag",children:o.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},o.clientId,!1,void 0,this))},void 0,!1,void 0,this)}var sC=ie(new Map),mi=ie({}),qh=ie({});function Gh(e){sC.value=new Map((e.nodes??[]).map((t)=>[t.nodeId,t])),qh.value=e.links??{},mi.value=e.pins??{}}async function Hl(){let e=await de("fetchContextStatus","/api/canvas/ax/context-status",{});if(e.ok&&e.boardId===ae.value)Gh(e)}function Md(e,t){let n=sC.value.get(e),o=mi.value[e]?.pinnedAt;if(!n||o&&n.lastReadAt<o)return{kind:"not-read"};if(t>n.readRevision)return{kind:"changed",by:n.lastReadBy,at:n.lastReadAt};return{kind:"read",by:n.lastReadBy,at:n.lastReadAt,count:n.readCount}}function aC(e){if(e.changedBy?.actor==="agent")return{agent:Nr(e.changedBy),notSeen:!1};let t=qh.value;return{agent:null,notSeen:!!e.revision&&Object.keys(t).length>0&&e.revision>Math.max(t[e.from]??-1,e.toBoardId===void 0?t[e.to]??-1:-1)}}function zd(e,t){let n=qh.value[e];if(n===void 0||t<=n)return!1;let o=[...et.value.values()].filter((i)=>(i.from===e||i.toBoardId===void 0&&i.to===e)&&(i.revision??0)>n);if(o.some((i)=>i.changedBy?.actor!=="agent"))return!0;return!o.some((i)=>i.revision===t)}function Nr(e){return e.agentId?.trim()||e.source}var hi={eye:"M2 12s3.5-6 10-6 10 6 10 6-3.5 6-10 6S2 12 2 12zM12 9.5a2.5 2.5 0 1 0 0 5a2.5 2.5 0 1 0 0-5",eyeOff:"M3 3l18 18M10.6 6.1A10 10 0 0 1 12 6c6.5 0 10 6 10 6a17 17 0 0 1-3 3.6M6.6 6.6C3.8 8.3 2 12 2 12s3.5 6 10 6a9.6 9.6 0 0 0 4.4-1",spark:"M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z",pen:"M4 20l4.2-1L19 8.2 15.8 5 5 15.8z",warn:"M12 4l9 16H3zM12 10v4M12 17v.5"};function lC(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function cC(e,t){if(!t)return null;let n=mi.value[e.id],o=n?.pinnedBy.actor==="agent"?` Pinned by ${Nr(n.pinnedBy)}${n.reason?`: ${n.reason}`:""}.`:"",i=Md(e.id,e.contentRevision??0);if(i.kind==="not-read")return{tone:"muted",glyph:"eyeOff",word:"not read",label:"Not read yet",body:`In context, but no agent has loaded it since it was pinned.${o}`};if(i.kind==="changed")return{tone:"warn",glyph:"warn",word:"changed",label:"The agent's copy is out of date",body:`Text changed after ${i.by} read it at ${lC(i.at)}${zd(e.id,e.linksRevision??0)?" · links changed too":""}.${o}`};return{tone:"agent",glyph:"eye",word:"read",label:"Read by the agent",body:`${i.count>1?`Read ${i.count} times · last`:"Read"} ${lC(i.at)} by ${i.by}.${o}`}}function y$(e){if(e.lastEditedBy?.actor==="human")return null;if(e.createdBy?.actor==="agent")return`Written by ${Nr(e.createdBy)}`;if(e.lastEditedBy?.actor==="agent")return`Edited by ${Nr(e.lastEditedBy)}`;return null}function Kh(e,t){let n=cC(e,t);if(n)return{amber:n.tone==="warn",folded:n.label};let o=t?void 0:ro.value.get(e.id);if(o&&o.length>0)return{amber:!1,folded:o.length>1?`near ${o.length} pins`:"near a pin"};return null}function uC({node:e,pinned:t,fold:n="word"}){let o=cC(e,t),i=o?.tone==="warn"?"word":n;if(!o||i==="hidden")return null;return r(_e,{label:o.label,body:o.body,align:"end",fitWithin:".node-content",tapToOpen:!0,children:r("span",{class:`node-context-mark is-${o.tone}${i==="glyph"?" is-glyph":""}`,"data-mark":o.word,"aria-label":i==="glyph"?o.word:void 0,children:[r("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:r("path",{d:hi[o.glyph]},void 0,!1,void 0,this)},void 0,!1,void 0,this),i==="word"&&o.word]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function dC({node:e,pinned:t,title:n,fold:o,children:i}){let s=y$(e),a=o==="hidden"?Kh(e,t):null,l=[s,a&&!a.amber?a.folded:"",an[e.type]].filter(Boolean).join(" · ");return r(_e,{label:n,body:l,align:"start",fitWithin:".node-content",tapToOpen:!0,children:r("span",{class:"node-type-icon","data-byline":s??void 0,children:i},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function pC(e){return mi.value[e]?.pinnedBy.actor==="agent"}function fC({node:e,pinned:t,fold:n="word"}){let o=t?void 0:ro.value.get(e.id),i=Di.value?.nodeId===e.id?Di.value:null,s=!o&&!t&&i?.kind==="out",a=o??(s?i.pins:void 0);if(!a||a.length===0||n==="hidden")return null;let l=a.length>1?`near ${a.length}`:"near",c=s?" is-fading":i?.kind==="in"?" is-pulse":Zo.value===e.id?" is-preview":"",u=(d)=>{if(!s)tk(e.id,d.currentTarget,Vh())};return r("button",{type:"button",class:`node-near-mark${n==="glyph"?" is-glyph":""}${c}`,"aria-label":n==="glyph"?l:void 0,"aria-expanded":Kr.value?.nodeId===e.id,"data-near":a.map((d)=>d.pinNodeId).join(" "),onPointerDown:(d)=>d.stopPropagation(),onPointerEnter:u,onPointerLeave:Es,onFocus:u,onBlur:Es,onClick:u,onKeyDown:(d)=>{if(d.key!=="Enter"&&d.key!=="ArrowDown")return;d.preventDefault(),u(d),requestAnimationFrame(()=>document.querySelector(".near-hint button")?.focus())},onAnimationEnd:()=>Hf(e.id),children:[r("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:[r("circle",{cx:"12",cy:"12",r:"8",class:"node-near-ring"},void 0,!1,void 0,this),r("circle",{cx:"12",cy:"12",r:"2.2",class:"node-near-dot"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),n==="word"&&l]},void 0,!0,void 0,this)}function Vh(){let e=Te.value;return`${e.x},${e.y},${e.scale}`}var mC=600;function hC(e,t){let n={x:t.left+t.width/2,y:t.top+t.height/2},o=e.x-n.x,i=e.y-n.y,s=Math.min(o===0?Number.POSITIVE_INFINITY:t.width/2/Math.abs(o),i===0?Number.POSITIVE_INFINITY:t.height/2/Math.abs(i));return s>=1?n:{x:n.x+o*s,y:n.y+i*s}}function gC(){let e=Yw.value;if(e.pinIds.length===0)return null;let t=Te.value,n=H.value,o=Jw.value,i=(s,a)=>({x:s*t.scale+t.x,y:a*t.scale+t.y});return r("svg",{class:"near-pin-layer","aria-hidden":"true",children:e.pinIds.map((s)=>{let a=n.get(s);if(!a)return null;if(![...n.values()].some((f)=>f.id!==s&&hr(f,a)<=mC))return null;let l=i(a.position.x,a.position.y),c={left:l.x,top:l.y,width:a.size.width*t.scale,height:a.size.height*t.scale},u={x:c.left+c.width/2,y:c.top+c.height/2},d=mC*t.scale,p=e.ringOnly?[]:(o.get(s)??[]).map((f)=>n.get(f)).filter((f)=>f!==void 0).sort((f,m)=>hr(f,a)-hr(m,a));return r("g",{"data-pin-id":s,children:[r("rect",{class:"near-pin-radius",x:c.left-d,y:c.top-d,width:c.width+2*d,height:c.height+2*d,rx:d},void 0,!1,void 0,this),p.map((f,m)=>{let h=i(f.position.x,f.position.y),g={left:h.x,top:h.y,width:f.size.width*t.scale,height:f.size.height*t.scale},y=hC(u,g),b=hC({x:g.left+g.width/2,y:g.top+g.height/2},c);return r("g",{class:"near-pin-tether","data-near-node":f.id,children:[r("path",{d:`M ${b.x} ${b.y} L ${y.x} ${y.y}`},void 0,!1,void 0,this),r("circle",{class:"near-pin-number",cx:y.x,cy:y.y,r:10},void 0,!1,void 0,this),r("text",{class:"near-pin-number-label",x:y.x,y:y.y,children:m+1},void 0,!1,void 0,this)]},f.id,!0,void 0,this)})]},s,!0,void 0,this)})},void 0,!1,void 0,this)}function yC(){let e=Kr.value;if(!e||e.view!==Vh())return null;let t=H.value.get(e.nodeId),n=ro.value.get(e.nodeId);if(!t||!n)return null;let o=au.value===t.id,i=Math.max(8,Math.min(e.at.right-240,window.innerWidth-248)),s=e.at.bottom<window.innerHeight/2,a=s?window.innerHeight-e.at.bottom-16:e.at.top-16;return r("div",{class:"near-hint",role:"dialog","aria-label":n.length>1?`Near ${n.length} pins`:"Near a pin",style:{left:`${i}px`,maxHeight:`${Math.max(120,a)}px`,...s?{top:`${e.at.bottom+8}px`}:{bottom:`${window.innerHeight-e.at.top+8}px`}},onPointerEnter:Uf,onPointerLeave:Es,onFocusIn:Uf,onFocusOut:Es,onPointerDown:(l)=>l.stopPropagation(),onKeyDown:(l)=>{if(l.key!=="Escape")return;l.stopPropagation(),Kr.value=null,document.querySelector(`[data-node-id="${CSS.escape(t.id)}"] .node-near-mark`)?.focus()},children:[r("span",{class:"near-hint-label",children:n.length>1?`Near ${n.length} pins`:"Near a pin"},void 0,!1,void 0,this),n.map((l)=>{let c=H.value.get(l.pinNodeId);return r("span",{class:"near-hint-row",children:[r("span",{class:"near-hint-title",children:l.pinTitle},void 0,!1,void 0,this),c&&r("span",{class:"near-hint-distance",children:[Math.round(hr(t,c))," px"]},void 0,!0,void 0,this)]},l.pinNodeId,!0,void 0,this)}),r("span",{class:"near-hint-body",children:"Distance is measured between card edges. The agent gets its title and a short summary because a pin is nearby. Pin it to put it first."},void 0,!1,void 0,this),r("span",{class:"near-hint-actions",children:[r("button",{type:"button",class:"near-hint-pin",onClick:()=>{Kr.value=null,lo(t.id)},children:"Pin to put it first"},void 0,!1,void 0,this),r("button",{type:"button",class:"near-hint-show","aria-pressed":o,onClick:()=>{au.value=o?null:t.id},children:o?"Hide pins":"Show pins"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function $d(e,t){let{POSITIVE_INFINITY:n,POSITIVE_INFINITY:o,NEGATIVE_INFINITY:i,NEGATIVE_INFINITY:s}=Number,a=0;for(let l of e)a+=1,n=Math.min(n,l.position.x),o=Math.min(o,l.position.y),i=Math.max(i,l.position.x+l.size.width),s=Math.max(s,l.position.y+l.size.height);if(a===0)return null;return{x:n-t,y:o-t,width:i-n+t*2,height:s-o+t*2}}var eo=ie(!1);function Jh(){let e=Lo.value;return e&&typeof e==="object"?e:{}}var bC=Ve(()=>Jh().workItems??[]),Yh=Ve(()=>Jh().approvalGates??[]),Co=Ve(()=>Yh.value.filter((e)=>e.status==="pending")),To=Ve(()=>{let e=Jh().policy?.scope;return e&&Array.isArray(e.nodeIds)&&e.nodeIds.length>0?{nodeIds:e.nodeIds,padding:typeof e.padding==="number"?e.padding:40}:null});async function xC(e){return(await so("setScopeFence","/api/canvas/ax/policy",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({scope:e&&e.length>0?{nodeIds:e}:null,source:"browser"})})).ok}var ns=Ve(()=>Yh.value.filter((e)=>e.status==="held")),Qh=Ve(()=>Yh.value.filter((e)=>e.status==="approved"||e.status==="rejected")),wC=ie({events:[],evidence:[],steering:[]}),os=ie("all");function v$(e){if(e==="update")return"update";if(e==="steer"||e==="steering"||e==="yield")return"steer";if(e==="assistant-message")return"assistant";if(e==="evidence")return"evidence";return"event"}var b$=new Set(["api","mcp","sdk","cli"]);function Xh(e,t){if(e?.trim())return e.trim();let n=t?.trim();if(n&&!b$.has(n))return n;return null}var x$=/^(node|edge|group|annotation|jsonrender|graph|render)\.|^arrange$|^canvas\.clear$|^snapshot\.restore$/,kC=ie(null),jl=ie(new Set),w$={prompt:"Prompt","assistant-message":"Assistant","tool-start":"Tool run","tool-result":"Tool result",failure:"Failure",approval:"Approval",steering:"Steering",command:"Command",note:"Note",policy:"Policy",yield:"Yield"};function k$(e,t=40,n=[],o=null,i="all"){let s=n.find((c)=>x$.test(c.op)),a=[...n.map((c)=>({id:`update-${c.id}`,kind:"update",label:"Update",body:c.summary,createdAt:c.at,who:c.sessionId??null,...!tt()&&o?.actor==="agent"&&s?.id===c.id?{undoable:!0}:{}})),...e.events.map((c)=>({id:`event-${c.id}`,kind:c.kind,label:w$[c.kind]??c.kind,body:c.detail?`${c.summary} — ${c.detail}`:c.summary,createdAt:c.createdAt,who:Xh(c.agentId,c.source)})),...e.evidence.map((c)=>({id:`evidence-${c.id}`,kind:"evidence",label:"Evidence",body:c.body?`${c.title} — ${c.body}`:c.title,createdAt:c.createdAt,who:Xh(c.agentId,c.source)})),...e.steering.map((c)=>{let u=c.agentId??(c.source&&c.source!=="browser"?c.source:null),d=c.target?`→ ${c.target} · `:u?"→ all · ":"",p=c.target&&c.delivered===!1?` — waiting for ${c.target} to pick it up`:"";return{id:`steer-${c.id}`,kind:"steer",label:"Steer",body:`${u?`${u} `:""}${d}${c.message}${p}`,createdAt:c.createdAt,who:Xh(c.agentId,c.source)}})],l=i==="all"?a:a.filter((c)=>v$(c.kind)===i);return l.sort((c,u)=>c.createdAt<u.createdAt?1:c.createdAt>u.createdAt?-1:0),l.slice(0,t)}var SC=Ve(()=>k$(wC.value,40,pi.value,kC.value,os.value));async function gi(){let[e,t]=await Promise.all([de("refreshTimeline","/api/canvas/ax/timeline?limit=40",null),de("refreshHistoryTop","/api/canvas/history",null)]);if(t)kC.value=t.top??null;if(!e)return;wC.value={events:Array.isArray(e.events)?e.events:[],evidence:Array.isArray(e.evidence)?e.evidence:[],steering:Array.isArray(e.steering)?e.steering:[]}}async function eg(e){if(!(await so("undoAgentEdit","/api/canvas/undo",{method:"POST"})).ok)return!1;return jl.value=new Set([...jl.value,e.id]),await oo("undoAgentEditSteering","/api/canvas/ax/steer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:`Undid your edit: ${e.body} — it was reverted on the board.`,source:"browser"})}),gi(),!0}async function tg(e=!1){if(tt())return mn("remove","Undo / redo unavailable","Open the local PMX workbench to use shared history."),!1;let t=await so(e?"redo":"undo",e?"/api/canvas/redo":"/api/canvas/undo",{method:"POST"});if(t.ok)gi();return t.ok}async function _C(e,t){if(!(await so("resolveGate",`/api/canvas/ax/approval/${encodeURIComponent(e.id)}/resolve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({decision:t,source:"browser"})})).ok)return!1;if(t==="rejected")await oo("rejectGateSteering","/api/canvas/ax/steer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:`Rejected gate "${e.title}" — do not proceed with it.`,source:"browser"})});return!0}async function CC(e){return(await so("reopenGate",`/api/canvas/ax/approval/${encodeURIComponent(e.id)}/reopen`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source:"browser"})})).ok}async function pa(e,t){return(await so("sendSteering","/api/canvas/ax/steer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:e,source:"browser",...t?{target:t}:{}})})).ok}async function yi(){if(!xt.value)return!1;return(await so("startSession","/api/canvas/ax/presence",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source:"browser",label:ca,attached:!0,phase:"idle"})})).ok}async function Zl(e){return(await so("endSession","/api/canvas/ax/presence",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source:e.source,agentId:e.agentId,attached:!1,endedBy:"human"})})).ok}var or=(e)=>JSON.stringify([e.boardId,e.id]);function Ul(e){if(!Array.isArray(e))return[];return e.flatMap((t)=>{if(!t||typeof t!=="object")return[];let n=t;if(typeof n.id!=="string"||typeof n.title!=="string")return[];return[{id:n.id,title:n.title,...typeof n.boardId==="string"?{boardId:n.boardId}:{},...typeof n.reason==="string"?{reason:n.reason}:{},...typeof n.change==="string"?{change:n.change}:{},...typeof n.before==="string"?{before:n.before}:{},...typeof n.after==="string"?{after:n.after}:{}}]})}var Hn=ie(null),vC=(e)=>new Set(e.flat().map((t)=>typeof t==="string"?t:t.id)),ng=Ve(()=>{if(!xt.value)return null;let e=Hn.value;if(e?.kind==="live"){let n=en.value.find((o)=>o.attached&&o.sessionId===e.sessionId)?.session;return n?vC([n.read,n.pinned,n.created,n.edited]):null}let t=e?.kind==="receipt"?ts.value?.context:void 0;return t?vC([t.read,t.pinned,t.created,t.edited].map((n)=>n.filter((o)=>!o.boardId||o.boardId===ae.value))):null}),TC=Ve(()=>new Set([...en.value.flatMap((e)=>e.attached?e.session?.edited??[]:[]),...ts.value?.context.edited.filter((e)=>!e.boardId||e.boardId===ae.value).map((e)=>e.id)??[]]));function Wl(e,t){Hn.value=e?t?{kind:"live",...t}:{kind:"receipt"}:null}var ts=ie(null);function S$(e,t){let n=new Map(t.map((i)=>[or(i),i]));return[...e.map((i)=>{let s=n.get(or(i));if(!s)return i;return n.delete(or(i)),{...s,change:[i.change,s.change].filter(Boolean).join("; then "),before:i.before??s.before}}),...n.values()]}function Ld(e,t){let n=new Set(e.map(or));return[...e,...t.filter((o)=>!n.has(or(o)))]}function _$(e,t){return{labels:[...new Set([...e.labels,...t.labels])],sessions:e.sessions+1,startedAt:e.startedAt&&t.startedAt&&t.startedAt<e.startedAt?t.startedAt:e.startedAt,endedAt:t.endedAt,endedBy:e.endedBy===t.endedBy?t.endedBy:void 0,counts:t.counts,snapshot:null,context:{read:Ld(e.context.read,t.context.read),pinned:Ld(e.context.pinned,t.context.pinned),created:Ld(e.context.created,t.context.created),edited:S$(e.context.edited,t.context.edited),changedSinceRead:Ld(e.context.changedSinceRead,t.context.changedSinceRead)}}}function IC(e){let{counts:t,snapshot:n,context:o}=e;if(typeof e.label!=="string"||typeof e.endedAt!=="string")return;let i=Hn.value,s=i?.kind==="live"&&i.sessionId===e.writer;if(e.unchanged===!0||typeof e.parentAgentId==="string"){if(s)Hn.value=null;return}let a={labels:[e.label],sessions:1,startedAt:typeof e.startedAt==="string"?e.startedAt:null,endedAt:e.endedAt,endedBy:e.endedBy==="human"||e.endedBy==="agent"||e.endedBy==="idle-timeout"?e.endedBy:void 0,counts:{items:Number(t?.items??0)||0,done:Number(t?.done??0)||0,cancelled:Number(t?.cancelled??0)||0,rejected:Number(t?.rejected??0)||0,held:Number(t?.held??0)||0},snapshot:n&&typeof n.id==="string"?{id:n.id,name:String(n.name??""),boardId:typeof n.boardId==="string"?n.boardId:null}:null,context:{read:Ul(o?.read),pinned:Ul(o?.pinned),created:Ul(o?.created),edited:Ul(o?.edited),changedSinceRead:Ul(o?.changedSinceRead)}},l=ts.value;if(ts.value=l?_$(l,a):a,s)Hn.value={kind:"receipt"}}async function EC(e,t){let n=!0,o=[];for(let i of t){if(i.boardId&&i.boardId!==ae.value)continue;let s=i.id,a=H.value.get(s);if(!a||a.lastEditedBy?.actor==="human")continue;let l=await de("undoSessionEdit",`/api/canvas/snapshots/${encodeURIComponent(e)}/restore-node`,{ok:!1,restored:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({nodeId:s,preserveHumanEdits:!0})});if(n=n&&l.ok,l.ok&&l.restored)o.push(s)}return{ok:n,restored:o}}function Od(){if(ts.value=null,Hn.value?.kind==="receipt")Hn.value=null}function AC(){if(!_o.value)return null;let e=To.value;if(!e)return null;let t=H.value,n=e.nodeIds.map((s)=>t.get(s)).filter((s)=>s!==void 0),o=$d(n,e.padding);if(!o)return null;let i=1/Math.max(0.05,Te.value.scale);return r("div",{class:"scope-fence","data-fenced-count":n.length,style:{transform:`translate(${o.x}px, ${o.y}px)`,width:`${o.width}px`,height:`${o.height}px`},"aria-hidden":"true",children:[r("span",{class:"scope-fence-pill scope-fence-pill-top",style:{transform:`scale(${i})`},children:["Agent scope · ",n.length," node",n.length===1?"":"s"]},void 0,!0,void 0,this),r("span",{class:"scope-fence-pill scope-fence-pill-bottom",style:{transform:`scale(${i})`},children:"writes outside are blocked · reads allowed"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var C$=U().trim().min(1).max(80),_G=U().trim().max(4000),T$=Ri({kind:C$,ink:fn(["supports","contradicts","cites","derived","informs","related"]),directed:ht()}),I$=We(T$).max(64).refine((e)=>new Set(e.map((t)=>t.kind)).size===e.length,"Relation kinds must be unique."),CG=Ri({id:U().trim().min(1),name:U().trim().min(1).max(80),vocabulary:I$}),ql=[{kind:"supports",ink:"supports",directed:!0},{kind:"contradicts",ink:"contradicts",directed:!0},{kind:"cites",ink:"cites",directed:!0},{kind:"derived-from",ink:"derived",directed:!0},{kind:"answers",ink:"informs",directed:!0},{kind:"depends-on",ink:"informs",directed:!0},{kind:"supersedes",ink:"informs",directed:!0},{kind:"flow",ink:"derived",directed:!0},{kind:"related",ink:"related",directed:!1}],E$={Research:ql.filter((e)=>["supports","contradicts","cites","derived-from","related"].includes(e.kind)),Dependencies:ql.filter((e)=>["depends-on","related"].includes(e.kind)),Decision:[{kind:"option",ink:"derived",directed:!0},{kind:"if",ink:"cites",directed:!0},{kind:"rejected",ink:"related",directed:!0},{kind:"supersedes",ink:"informs",directed:!0}],Flow:[{kind:"next",ink:"derived",directed:!0},{kind:"if-fails",ink:"contradicts",directed:!0},{kind:"loop",ink:"related",directed:!0}]};function RC(e=[]){return Object.entries(E$).find(([,t])=>t.length===e.length&&t.every((n)=>e.some((o)=>o.kind===n.kind&&o.ink===n.ink&&o.directed===n.directed)))?.[0]??null}function Gn(e){return e.kind??(e.type==="relation"?"related":e.type==="references"?"cites":e.type??"related")}function Dd(e){let t=Gn(e);if(t==="depends-on")return"to";if(["derived-from","contradicts","supersedes"].includes(t))return"from";return null}function mo(e,t=[]){let n=Gn(e);return t.find((o)=>o.kind===n)??ql.find((o)=>o.kind===n)??{kind:n,ink:"related",directed:!0}}function fa(e){return`${e.kind??e.type??"related"}${e.label?` "${e.label}"`:""}${e.reason?` (why: ${e.reason})`:""}`}var Io=ie(null);sn(()=>{let e=Io.value;if(e?.boardId===ae.value&&![...et.value.values()].some((t)=>Gn(t)===e.kind))Io.value=null});var og=Ve(()=>gt.value),Gl=Ve(()=>{let e=RC(Yn()?.relationVocabulary),t=og.value,n=Io.value?.boardId===ae.value?Io.value.kind:null,o=[...et.value.values()].filter((c)=>!c.toBoardId||c.toBoardId===ae.value),i=new Set(st.value);if(t)i.add(t);if(i.size===0&&!n)return null;for(let c of i){let u=H.value.get(c);if(u?.type==="group"&&Array.isArray(u.data.children)){for(let d of u.data.children)if(typeof d==="string")i.add(d)}}let s=new Set(i),a=new Set,l=(c)=>{a.add(c.id),s.add(c.from),s.add(c.to)};if(!n){for(let c of o)if(i.has(c.from)&&i.has(c.to))l(c)}if(n){for(let c of o)if(Gn(c)===n)l(c)}else if(e==="Dependencies"||e==="Decision"){let c=!0;while(c){c=!1;for(let u of o){if(a.has(u.id))continue;let d=Dd(u);if(e==="Dependencies"?d&&s.has(d==="from"?u.from:u.to):["option","if","chosen"].includes(Gn(u))&&s.has(u.to))l(u),c=!0}}}else if(e==="Flow"){let c=new Set;for(let u of H.value.values())if(["done","in-progress","blocked"].includes(String(u.data.axWorkStatus)))c.add(u.id),s.add(u.id);for(let u of o)if(["flow","next","if-fails","loop"].includes(Gn(u))&&c.has(u.from))l(u)}else for(let c of o)if((i.has(c.from)||i.has(c.to))&&(e!=="Research"||["supports","contradicts","cites","derived-from"].includes(Gn(c))))l(c);return{cards:s,links:a}});function PC(){let e=ae.value,t=Ge.value,n=H.value,o=et.value,i=Oe.value;return q(()=>{let s=setTimeout(()=>void Kt(),100);return()=>clearTimeout(s)},[e,t,n,o,i]),q(()=>{let s=setInterval(()=>void Kt(),60000);return()=>clearInterval(s)},[]),null}function NC(){if(!Oe.value)return null;let e=[...H.value.keys()].map(Jn);return r(be,{children:[r("div",{class:"lifecycle-filters",role:"group","aria-label":"Lifecycle filter",children:[["All","To review","Retired"].map((t)=>r("button",{type:"button","aria-pressed":Ro.value===t,onClick:()=>{if(!Oe.value)return;Ro.value=t},children:[t,t==="All"?"":` · ${e.filter((n)=>t==="Retired"?n?.retired:!n?.retired&&(n?.due||n?.sources.length)).length}`]},t,!0,void 0,this)),Li.value&&r("span",{role:"status",children:"Qualification unavailable"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r(A$,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function A$(){let e=Ts.value,[t,n]=E(!1);if(!Oe.value||!e||e.boardId!==ae.value||e.incarnation!==wt||Ct.value||!Jn(e.nodeId)?.retired)return null;return r("div",{class:"retirement-toast",role:"status",children:[r("span",{children:"Retired from active context. History kept."},void 0,!1,void 0,this),r("button",{type:"button",disabled:t,onClick:async()=>{if(t||!Oe.value)return;if(n(!0),(await de("restore",`/api/canvas/node/${encodeURIComponent(e.nodeId)}/lifecycle/restore`,null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({expectedBoardId:e.boardId,evidence:"Human undid retirement."})}))?.ok)Ts.value=null,await Kt();n(!1)},children:"Undo retirement"},void 0,!1,void 0,this),r("button",{type:"button","aria-label":"Dismiss retirement notice",onClick:()=>{Ts.value=null},children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Bd({nodeId:e}){if(!Oe.value)return null;let t=Jn(e);if(!t||t.retired||!t.due&&t.sources.length===0)return null;let n=t.sources[0];return r("button",{type:"button",class:"node-lifecycle-warning",onClick:(o)=>{o.stopPropagation(),Is(e)},children:[r("span",{children:t.due?"⧗ review due":"⧗ source needs review"},void 0,!1,void 0,this),r("span",{children:t.due?t.reasons[0]:`${n.title} · ${n.reasons[0]}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Fd({node:e}){let t=[...et.value.values()].filter((i)=>i.toBoardId&&i.from===e.id),n=ae.value,o=Ge.value.find((i)=>i.id===n);if(!t.length)return null;return r("div",{class:"node-memory-links",role:"region","aria-label":"Cross-board references",tabIndex:0,onWheel:(i)=>{if(!i.ctrlKey&&!i.metaKey)i.stopPropagation()},onKeyDown:(i)=>{if(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","PageUp","PageDown"," "].includes(i.key))i.stopPropagation()},children:t.map((i)=>{let s=Ge.value.find((l)=>l.id===i.toBoardId),a=o?.links?.find((l)=>l.kind==="card"&&l.nodeId===e.id&&l.boardId===i.toBoardId&&l.cardId===i.to);return r("div",{class:"node-memory-link",children:r("button",{type:"button",disabled:!s||a?.missing===!0,onClick:async(l)=>{l.stopPropagation();let c=document.activeElement;if(c instanceof HTMLElement&&c.isContentEditable)c.blur();if(e.type==="markdown"&&!await Qm(n,e.id))return;await zt({boardId:i.toBoardId,cardId:i.to})},children:["↗ ",i.label||i.type,": ",s?.name??"Missing board"," /"," ",a?.cardTitle??(a?.missing?"Missing card":"Loading card…")]},void 0,!0,void 0,this)},i.id,!1,void 0,this)})},void 0,!1,void 0,this)}function ho({board:e,inNodeHeader:t=!1}){let n=!!e.pin;return r("button",{type:"button",class:`ctx-pin-btn${t?"":" board-pin-btn"}${n?" ctx-pin-active":""}`,onClick:(i)=>{i.stopPropagation(),zs(e.id,!n)},"aria-label":n?"Unpin board from the agent's context":"Pin board to the agent's context","aria-pressed":n,"data-testid":"board-pin",children:r("span",{class:"ctx-pin-mark",children:[r(uo,{},void 0,!1,void 0,this),n&&e.pin?.pinnedBy.actor==="agent"&&r("span",{class:"ctx-pin-agent-dot","aria-hidden":"true"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function R$(e){let t=typeof e==="number"&&Number.isFinite(e)?Math.floor(e):1;return Math.max(1,Math.min(20,t))}function Hd(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Kl(e){return typeof e==="string"&&e.length>0}function MC(e){let t=e.axStep;if(!Hd(t))return null;if(!Kl(t.flowId)||!Kl(t.workItemId))return null;if(typeof t.index!=="number"||typeof t.total!=="number")return null;return{flowId:t.flowId,index:t.index,total:t.total,workItemId:t.workItemId}}function zC(e){let t=e.axFlow;if(!Hd(t)||!Kl(t.flowId)||!Array.isArray(t.steps))return null;let n=[];for(let i of t.steps){if(!Hd(i)||!Kl(i.nodeId)||!Kl(i.workItemId))return null;if(typeof i.index!=="number")return null;n.push({index:i.index,nodeId:i.nodeId,workItemId:i.workItemId,title:typeof i.title==="string"?i.title:""})}if(n.length===0)return null;let o=Hd(t.loop)?t.loop:{};return{flowId:t.flowId,title:typeof t.title==="string"?t.title:"Flow",steps:n,loop:{running:o.running===!0,run:typeof o.run==="number"&&Number.isFinite(o.run)?Math.max(0,Math.floor(o.run)):0,maxRuns:R$(o.maxRuns)}}}var P$={position:"sticky",bottom:"calc(-1 * var(--ax-dock-bleed, 12px))",marginTop:"12px",marginLeft:"calc(-1 * var(--ax-dock-bleed, 12px))",marginRight:"calc(-1 * var(--ax-dock-bleed, 12px))",marginBottom:"calc(-1 * var(--ax-dock-bleed, 12px))",padding:"9px var(--ax-dock-pad, 12px) 10px",background:"var(--c-panel-overlay)",borderTop:"1px solid var(--c-line)",backdropFilter:"blur(6px)"},LC={display:"flex",alignItems:"center",gap:"6px",flexWrap:"wrap"},OC={fontSize:"10px",color:"var(--c-muted)",textTransform:"uppercase",letterSpacing:"0.04em",marginRight:"auto"},DC={...qi,background:"color-mix(in srgb, var(--c-accent) 25%, transparent)",color:"var(--c-text)"},N$=[{status:"in-progress",label:"Start",toast:"Step started"},{status:"done",label:"Done",toast:"Step done"},{status:"blocked",label:"Blocked",toast:"Step blocked"}];async function $C(e,t,n){let o={...t,loop:n};Xe(e.id,{axFlow:o}),await ln(e.id,{data:{axFlow:o}})}function BC(e){return typeof e?.axWorkStatus==="string"?e.axWorkStatus:"todo"}function M$({node:e,flow:t}){let[n,o]=E(""),{running:i,run:s,maxRuns:a}=t.loop,l=async()=>{await $C(e,t,{running:!0,run:s>=a?0:s,maxRuns:a});let u=t.steps.find((p)=>BC(H.value.get(p.nodeId)?.data)!=="done"),d=u??t.steps[t.steps.length-1];await ri(e,"ax.work.update",{id:d.workItemId,status:u?"in-progress":"done"},"Loop running")},c=async()=>{let u=n.trim();if(!u)return;await ri(e,"ax.steer",{message:u},"Steering sent"),o("")};return r("div",{class:"ax-flow-controls",style:{...LC,marginTop:"6px",rowGap:"4px"},children:[r("span",{class:"ax-flow-runs",style:OC,children:i?`Loop running · run ${s+1}/${a}`:`Loop idle · ${s}/${a} runs`},void 0,!1,void 0,this),i?r(_e,{label:"Stop the loop now",body:"The stop is persisted on this node, so it survives a refresh and no further step is opened.",side:"up",fitWithin:".node-content, .expanded-overlay-panel",children:r("button",{type:"button",class:"ax-node-action",style:DC,onClick:(u)=>{u.stopPropagation(),$C(e,t,{...t.loop,running:!1})},children:"Stop"},void 0,!1,void 0,this)},void 0,!1,void 0,this):r(_e,{label:"Run this flow as a loop",body:"Each completed step opens the next one, and the last step starts the next run — until the run cap is reached or you press Stop.",side:"up",fitWithin:".node-content, .expanded-overlay-panel",children:r("button",{type:"button",class:"ax-node-action",style:qi,onClick:(u)=>{u.stopPropagation(),l()},children:"Run loop"},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("input",{class:"ax-flow-steer-input",value:n,placeholder:"Steer the agent…","aria-label":"Steer the agent",onInput:(u)=>o(u.target.value),onClick:(u)=>u.stopPropagation(),onKeyDown:(u)=>{if(u.key!=="Enter")return;u.stopPropagation(),c()},style:{flex:"1 1 120px",minWidth:"90px",fontSize:"10px",padding:"3px 6px",borderRadius:"4px",border:"1px solid var(--c-line)",background:"var(--c-panel-overlay)",color:"var(--c-text)"}},void 0,!1,void 0,this),r(_e,{label:"Send a steering message to the agent working this flow",side:"up",align:"end",fitWithin:".node-content, .expanded-overlay-panel",children:r("button",{type:"button",class:"ax-node-action",style:qi,onClick:(u)=>{u.stopPropagation(),c()},children:"Steer"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Ud({node:e}){let t=MC(e.data);if(!t)return null;let n=zC(e.data),o=BC(e.data);return r("div",{class:"ax-step-dock",style:P$,children:[r("div",{class:"ax-step-controls",style:LC,children:[r("span",{class:"ax-step-position",style:OC,children:["Step ",t.index,"/",t.total]},void 0,!0,void 0,this),N$.map((i)=>r(_e,{label:`Set this step's work item to "${i.status}"`,side:"up",fitWithin:".node-content, .expanded-overlay-panel",children:r("button",{type:"button",class:"ax-node-action","aria-pressed":o===i.status,style:o===i.status?DC:qi,onClick:(s)=>{s.stopPropagation(),ri(e,"ax.work.update",{id:t.workItemId,status:i.status},i.toast)},children:i.label},void 0,!1,void 0,this)},i.status,!1,void 0,this))]},void 0,!0,void 0,this),n&&r(M$,{node:e,flow:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var ma=8,rs=ie(null),ha=[],ga=[],UC=null;function FC(e){let t=e?.data.parentGroup;return typeof t==="string"&&t.length>0?t:null}function HC(e){if(!e||!Array.isArray(e.data.children))return[];return e.data.children.filter((t)=>typeof t==="string")}function z$(e,t){let n=new Map(t.map((l)=>[l.id,l])),o=new Set([e]),i=n.get(e);if(!i)return o;let s=FC(i);while(s&&!o.has(s))o.add(s),s=FC(n.get(s));if(i.type!=="group")return o;let a=[...HC(i)];while(a.length>0){let l=a.pop();if(!l||o.has(l))continue;o.add(l);let c=n.get(l);if(c?.type==="group")a.push(...HC(c))}return o}function jC(e,t){ha=[],ga=[],UC=e;let n=Array.from(t),o=z$(e,n);for(let i of n){if(o.has(i.id))continue;let s=i.position.x,a=i.position.x+i.size.width,l=i.position.x+i.size.width/2,c=i.position.y,u=i.position.y+i.size.height,d=i.position.y+i.size.height/2;ha.push({val:s,minY:c,maxY:u}),ha.push({val:a,minY:c,maxY:u}),ha.push({val:l,minY:c,maxY:u}),ga.push({val:c,minX:s,maxX:a}),ga.push({val:u,minX:s,maxX:a}),ga.push({val:d,minX:s,maxX:a})}}function ZC(){ha=[],ga=[],UC=null}function WC(e,t,n,o){let i=[e,e+n/2,e+n],s=[t,t+o/2,t+o],a=[0,n/2,n],l=[0,o/2,o],c=null,u=ma+1,d=null;for(let g=0;g<3;g++){let y=i[g];for(let b of ha){let x=Math.abs(y-b.val);if(x<u)u=x,c=b.val-a[g],d={axis:"x",pos:b.val,from:Math.min(b.minY,t),to:Math.max(b.maxY,t+o)}}}let p=null,f=ma+1,m=null;for(let g=0;g<3;g++){let y=s[g];for(let b of ga){let x=Math.abs(y-b.val);if(x<f)f=x,p=b.val-l[g],m={axis:"y",pos:b.val,from:Math.min(b.minX,e),to:Math.max(b.maxX,e+n)}}}let h=[];if(d&&u<=ma)h.push(d);if(m&&f<=ma)h.push(m);return{x:c!==null&&u<=ma?c:e,y:p!==null&&f<=ma?p:t,guides:h}}function qC({nodeId:e,viewport:t,onMove:n,onDragEnd:o,onClick:i}){let s=D(!1),a=D({x:0,y:0}),l=D({x:0,y:0});return oe((u,d,p)=>{u.stopPropagation(),u.preventDefault(),s.current=!0,document.documentElement.classList.add("is-node-dragging"),window.getSelection()?.removeAllRanges(),a.current={x:u.clientX,y:u.clientY},l.current={x:d,y:p};let f=null,m=null,h=!1,g=()=>{if(m=null,!s.current||!f)return;let x=f;f=null;let C=t.value.scale,v=(x.x-a.current.x)/C,k=(x.y-a.current.y)/C;n(e,l.current.x+v,l.current.y+k)},y=(x)=>{if(!s.current)return;if(!h&&Math.hypot(x.clientX-u.clientX,x.clientY-u.clientY)<4)return;if(!h)document.documentElement.classList.add("is-node-moving");if(h=!0,f={x:x.clientX,y:x.clientY},m!==null)return;m=window.requestAnimationFrame(g)},b=(x)=>{if(m!==null)window.cancelAnimationFrame(m),g();if(s.current=!1,document.documentElement.classList.remove("is-node-dragging","is-node-moving"),document.removeEventListener("pointermove",y),document.removeEventListener("pointerup",b),document.removeEventListener("pointercancel",b),o(),!h&&x.type==="pointerup")i?.()};document.addEventListener("pointermove",y),document.addEventListener("pointerup",b),document.addEventListener("pointercancel",b)},[e,t,n,o,i])}var $$=200,L$=100;function GC({nodeId:e,viewport:t,onResize:n,onResizeEnd:o}){let i=D(!1),s=D({x:0,y:0}),a=D({w:0,h:0});return oe((c,u,d)=>{c.stopPropagation(),c.preventDefault(),i.current=!0,s.current={x:c.clientX,y:c.clientY},a.current={w:u,h:d},document.documentElement.classList.add("is-node-resizing");let p=null,f=null,m=()=>{if(f=null,!i.current||!p)return;let y=p;p=null;let b=t.value.scale,x=(y.x-s.current.x)/b,C=(y.y-s.current.y)/b;n(e,Math.max($$,a.current.w+x),Math.max(L$,a.current.h+C))},h=(y)=>{if(!i.current)return;if(p={x:y.clientX,y:y.clientY},f!==null)return;f=window.requestAnimationFrame(m)},g=()=>{if(f!==null)window.cancelAnimationFrame(f),m();i.current=!1,document.documentElement.classList.remove("is-node-resizing"),document.removeEventListener("pointermove",h),document.removeEventListener("pointerup",g),document.removeEventListener("pointercancel",g),o()};document.addEventListener("pointermove",h),document.addEventListener("pointerup",g),document.addEventListener("pointercancel",g)},[e,t,n,o])}var O$={ArrowLeft:{dx:-1,dy:0},ArrowRight:{dx:1,dy:0},ArrowUp:{dx:0,dy:-1},ArrowDown:{dx:0,dy:1}};function D$(e,t,n){let o=e.position.x+e.size.width/2,i=e.position.y+e.size.height/2,s=null,a=Number.POSITIVE_INFINITY;for(let l of n){if(l.id===e.id)continue;let c=l.position.x+l.size.width/2-o,u=l.position.y+l.size.height/2-i,d=c*t.dx+u*t.dy;if(d<=0)continue;let p=Math.abs(c*t.dy)+Math.abs(u*t.dx);if(p>d)continue;let f=d+p*2;if(f<a)a=f,s=l}return s}var B$=0.4,F$=0.55,H$=175;function U$(e,t,n=0){if(!Number.isFinite(e)||e>=1)return 1;let i=Math.min(2.2,1/Math.max(e,0.01));if(Number.isFinite(t)&&t>0)i=Math.min(i,t*B$/Vs);if(Number.isFinite(n)&&n>0)i=Math.min(i,n*F$/H$);return Math.max(1,i)}var j$=140;function Z$(e,t,n,o,i){let[s,a]=E("word"),l=`${n}\x00${t?t.amber?"amber":t.folded:""}\x00${o}\x00${i.toFixed(3)}`,c=D(l);return Me(()=>{if(c.current!==l){if(c.current=l,s!=="word"){a("word");return}}let u=e.current;if(!u||!t||t.amber||s==="hidden")return;let d=Math.min(u.scrollWidth,j$*i);if(u.clientWidth+0.5<d)a(s==="word"?"glyph":"hidden")},[l,s]),t?s:"word"}function KC({node:e,children:t,onContextMenu:n}){let o=gt.value===e.id,i=st.value.has(e.id),s=kt.value.has(e.id),a=D(null),l=D(null),c=e.type==="board"&&typeof e.data.boardId==="string"?Ge.value.find((W)=>W.id===e.data.boardId)??null:null,u=Jc.value.has(e.id),d=!o&&$k.value.has(e.id),p=wr.value,f=p!==null&&p.has(e.id),m=p!==null&&!p.has(e.id),[h,g]=E(!1),y=D(null),b=oe((W,ye,He)=>{let R=WC(ye,He,e.size.width,e.size.height),ne=H.value.get(W);if(ne?.position.x===R.x&&ne.position.y===R.y){rs.value=R.guides.length>0?R.guides:null;return}cn(W,{position:{x:R.x,y:R.y}}),rs.value=R.guides.length>0?R.guides:null,Fk(W)},[e.size.width,e.size.height]),x=D(null),C=oe(()=>{if(ZC(),rs.value=null,Df(null),ek(e.id),x.current)document.removeEventListener("keydown",x.current),x.current=null;un();let W=Xo.value;if(Bk(),!W||W.nodeId!==e.id)return;if(W.mode==="add")Xf(W.groupId,[e.id]);else{let ye=H.value.get(W.groupId),He=Array.isArray(ye?.data.children)?ye.data.children.filter((R)=>typeof R==="string"&&R!==e.id):[];hu(W.groupId,He)}},[e.id]),v=qC({nodeId:e.id,viewport:Te,onMove:b,onDragEnd:C,onClick:()=>{st.value=new Set([e.id])}}),k=oe((W,ye,He)=>{let R=H.value.get(W);if(R?.size.width===ye&&R.size.height===He)return;cn(W,{size:{width:ye,height:He}})},[]),_=oe(()=>{Xe(e.id,{userResized:!0}),ln(e.id,{data:{userResized:!0}}),un()},[e.id]),I=GC({nodeId:e.id,viewport:Te,onResize:k,onResizeEnd:_}),w=oe((W)=>{W.stopPropagation(),W.preventDefault(),At.value={fromId:e.id,fromX:e.position.x+e.size.width/2,fromY:e.position.y+e.size.height/2,cursorX:e.position.x+e.size.width/2,cursorY:e.position.y+e.size.height/2,targetId:null}},[e.id,e.position.x,e.position.y,e.size.width,e.size.height]),P=oe((W)=>{if(W.button!==0)return;if(h)return;if(W.target instanceof Element&&W.target.closest("button, input")){W.stopPropagation();return}if(Wn.value==="connect"){w(W);return}if(W.shiftKey){W.stopPropagation(),tm(e.id);return}if(Sr(e.id),Df(e.id),Qw(e.id),qw(e.id,typeof e.data.title==="string"&&e.data.title?e.data.title:e.type),jC(e.id,H.value.values()),e.type!=="group"){let ye=(He)=>{if(He.key==="Escape")Dk()};x.current=ye,document.addEventListener("keydown",ye)}v(W,e.position.x,e.position.y)},[e.id,e.type,e.data.title,e.position.x,e.position.y,v,h,w]),L=oe((W)=>{if(W.button!==0)return;if(W.stopPropagation(),Wn.value==="connect"){w(W);return}if(W.shiftKey){tm(e.id);return}Sr(e.id)},[e.id,w]),N=oe((W)=>{if((W.target instanceof Element?W.target:null)?.closest('button, input, textarea, select, a, [contenteditable="true"]'))return;if(n)n(W,e.id)},[n,e.id]),Y=oe((W)=>{let ye=W.target;if(ye&&ye!==W.currentTarget&&ye.closest('input, textarea, [contenteditable="true"]'))return;let He=O$[W.key];if(He){W.preventDefault();let R=D$(e,He,H.value.values());if(!R)return;Sr(R.id),requestAnimationFrame(()=>{document.querySelector(`.canvas-node[data-node-id="${CSS.escape(R.id)}"]`)?.focus()})}else if(W.key==="Enter"&&W.target===W.currentTarget&&Wa.has(e.type))W.preventDefault(),xo(e.id)},[e]),B=e.data.title||(e.type==="file"?(e.data.path||e.data.content||"").split(/[\\/]/).pop()??"":"")||an[e.type],J=oe((W)=>{let ye=W.trim();if(ye&&ye!==B)Xe(e.id,{title:ye}),ln(e.id,{title:ye});g(!1)},[e.id,B]),X=D(null),V=D(!1),ee=D(null);q(()=>{if(V.current||!oh(e))return;let W=X.current;if(!W)return;let ye=new ResizeObserver(()=>{if(V.current){ye.disconnect();return}let He=W.scrollHeight,R=e_(e,He);if(R===null)return;if(Math.abs(R-e.size.height)>8){if(wu(e.id,{width:e.size.width,height:R}),ee.current!==null)window.clearTimeout(ee.current);ee.current=window.setTimeout(()=>{un({recordHistory:!1}),ee.current=null},0)}V.current=!0,ye.disconnect()});return ye.observe(W),()=>{if(ye.disconnect(),ee.current!==null)window.clearTimeout(ee.current),ee.current=null}},[e.id,e.type,e.data.mode,e.data.strictSize,e.collapsed,e.size.width,e.size.height]);let he=e.pinned,A=e.type==="trace",te=A&&e.data.status==="running",M=e.type==="group",O=e.data.strictSize===!0,Pe=Math.max(Te.value.scale,0.01),Fe=U$(Pe,e.collapsed?0:e.size.height,e.size.width),De=Z$(a,Kh(e,s),B,e.size.width,Fe),Ae=M&&e.data.color?e.data.color:void 0,ve={left:`${e.position.x}px`,top:`${e.position.y}px`,width:`${e.size.width}px`,height:e.collapsed?"auto":`${e.size.height}px`,zIndex:e.zIndex,"--node-chrome-scale":Fe.toFixed(3),"--node-port-scale":(1/Pe).toFixed(3),...Ae?{"--group-color":Ae}:{}},z=tr.value&&Pd.value.has(e.id),re=["canvas-node",o?"active":"",d?"neighbor":"",f?"search-match":"",m?"search-dimmed":"",i?"selected":"",s?"context-pinned":"",u?"attention-pulse":"",he?"pinned":"",A?"trace-node":"",te?"trace-running":"",M?"group-node":"",O?"strict-size":"",z?"agent-mutating":"",tr.value&&TC.value.has(e.id)?"session-edited":"",ng.value&&!ng.value.has(e.id)?"lens-dimmed":"",Gl.value&&!Gl.value.cards.has(e.id)?"relation-dimmed":"",Oe.value&&Jn(e.id)?.retired?"lifecycle-retired":"",Bf.value==="To review"&&!Jn(e.id)?.due&&!Jn(e.id)?.sources.length?"lifecycle-filter-dimmed":"",Bf.value==="Retired"&&!Jn(e.id)?.retired?"lifecycle-filter-dimmed":""].filter(Boolean).join(" "),Ne=M?(Array.isArray(e.data.children)?e.data.children:[]).filter((W)=>typeof W==="string"&&H.value.has(W)):[],[ke,le]=E(!1),Se=Xo.value,pe=M&&Se?.groupId===e.id&&Se.mode==="add",Ue=M&&Se?.groupId===e.id&&Se.mode==="remove",xe=At.value?.targetId===e.id,qe=M?[...new Set(Ne.map((W)=>H.value.get(W)?.type).filter((W)=>!!W))].slice(0,4):[];if(M&&e.collapsed)return r("div",{class:`${re} group-chip`,"data-node-type":e.type,style:{...ve,width:"auto",height:"auto"},onPointerDown:L,onDblClick:N,"data-testid":"group-chip",children:[r("div",{class:"node-titlebar group-chip-inner",onPointerDown:P,children:[r("button",{type:"button",class:"group-chip-expand","aria-label":`Expand group ${B}`,onClick:(W)=>{W.stopPropagation(),Fi(e.id)},children:r(ni,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("div",{class:"group-chip-text",children:[r("div",{class:"group-chip-name",children:B},void 0,!1,void 0,this),r("div",{class:"group-chip-meta",children:[qe.map((W)=>r("span",{class:"group-kind-dot","aria-hidden":"true"},W,!1,void 0,this)),r("span",{class:"group-chip-count",children:[Ne.length," node",Ne.length===1?"":"s"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r(Bd,{nodeId:e.id},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return r("div",{class:"canvas-node-owner",style:{...ve,zIndex:"auto"},onPointerEnter:()=>{Ja.value=e.id},onPointerLeave:()=>{if(Ja.value===e.id)Ja.value=null},children:[M&&r("div",{class:"group-frame-hit","aria-hidden":"true",style:{zIndex:`calc(${e.zIndex} - var(--node-hit-offset, 3))`},onPointerDown:(W)=>{if(L(W),W.button===0&&!W.shiftKey)l.current?.focus({preventScroll:!0})},onMouseDown:(W)=>{if(W.button===0||W.shiftKey)W.preventDefault()},onDblClick:N},void 0,!1,void 0,this),r("div",{ref:l,class:`${re}${pe?" is-drop-target":""}${Ue?" is-drop-source":""}${xe?" is-edge-target":""}${M&&ke?" group-menu-open":""}`,"data-node-type":e.type,"data-node-id":e.id,style:{position:"relative",left:0,top:0,width:"100%",height:e.collapsed?"auto":"100%",zIndex:e.zIndex},tabIndex:o?0:-1,onKeyDown:Y,onPointerDown:L,onMouseDown:(W)=>{if(W.shiftKey)W.preventDefault()},onDblClick:N,children:[r("div",{class:"node-content",children:[M&&r("div",{class:"node-titlebar group-edge-row",onPointerDown:P,children:[r("span",{class:"group-name-pill",children:[h?r("input",{ref:y,class:"node-title-input group-title-input",value:B,onBlur:(W)=>J(W.target.value),onKeyDown:(W)=>{if(W.key==="Enter")J(W.target.value);if(W.key==="Escape")g(!1)},onClick:(W)=>W.stopPropagation()},void 0,!1,void 0,this):r("span",{class:"group-name",children:B},void 0,!1,void 0,this),r("span",{class:"group-count",children:Ne.length},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("span",{class:"group-edge-spacer"},void 0,!1,void 0,this),r("span",{class:"group-actions",role:"toolbar","aria-label":`${B} actions`,children:[r(_e,{label:"Auto-arrange children",align:"end",children:r("button",{type:"button",class:"group-action","aria-label":"Auto-arrange children",disabled:Ne.length===0,onClick:(W)=>{W.stopPropagation(),Xf(e.id,Ne,"grid")},children:r("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","aria-hidden":"true",children:[r("rect",{x:"1.5",y:"1.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),r("rect",{x:"9.5",y:"1.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),r("rect",{x:"1.5",y:"9.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this),r("rect",{x:"9.5",y:"9.5",width:"5",height:"5",rx:"1"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(_e,{label:"Collapse group",align:"end",children:r("button",{type:"button",class:"group-action","aria-label":"Collapse group",onClick:(W)=>{W.stopPropagation(),Fi(e.id)},children:r("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:r("path",{d:"M3 10 L8 5 L13 10"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("button",{type:"button",class:"group-action","aria-label":"Group menu","aria-expanded":ke,onClick:(W)=>{W.stopPropagation(),le((ye)=>!ye)},children:r(pl,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this),ke&&r("div",{class:"group-menu",role:"menu",onPointerDown:(W)=>W.stopPropagation(),children:[r("button",{type:"button",role:"menuitem",onClick:(W)=>{W.stopPropagation(),le(!1),g(!0),requestAnimationFrame(()=>y.current?.focus())},children:"Rename"},void 0,!1,void 0,this),r("button",{type:"button",role:"menuitem",onClick:(W)=>{W.stopPropagation(),le(!1),Qr(e.id),Ns(e.id)},children:"Ungroup"},void 0,!1,void 0,this),r("button",{type:"button",role:"menuitem",disabled:Ne.length===0,onClick:(W)=>{W.stopPropagation(),le(!1),bu(Ne)},children:"Pin all to context"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!M&&r("div",{class:"node-titlebar",onPointerDown:P,children:[r(dC,{node:e,pinned:s,title:B,fold:De,children:(()=>{let W=Do(e.type);return r(W,{size:Math.round(14*Fe)},void 0,!1,void 0,this)})()},void 0,!1,void 0,this),typeof e.data.axWorkStatus==="string"&&r("span",{class:`node-ax-status node-ax-status-${e.data.axWorkStatus}`,children:e.data.axWorkStatus},void 0,!1,void 0,this),h?r("input",{ref:y,class:"node-title-input",value:B,onBlur:(W)=>J(W.target.value),onKeyDown:(W)=>{if(W.key==="Enter")J(W.target.value);if(W.key==="Escape")g(!1)},onClick:(W)=>W.stopPropagation()},void 0,!1,void 0,this):r("span",{ref:a,class:"node-title",children:B},void 0,!1,void 0,this),r(fC,{node:e,pinned:s,fold:De},void 0,!1,void 0,this),r(uC,{node:e,pinned:s,fold:De},void 0,!1,void 0,this),r("div",{class:"node-controls",children:[he&&r(_e,{label:"Pinned in place",align:"end",fitWithin:".node-content",tapToOpen:!0,children:r("span",{class:"pin-indicator",children:"⊙"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Wa.has(e.type)&&r(_e,{label:"Expand (focus mode)",align:"end",fitWithin:".node-content",children:r("button",{type:"button",onClick:(W)=>{W.stopPropagation(),xo(e.id)},"aria-label":"Expand (focus mode)",children:r(sS,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),e.type==="board"?c&&r(ho,{board:c,inNodeHeader:!0},void 0,!1,void 0,this):r(_e,{label:s?"Remove from context":"Add to context",align:"end",fitWithin:".node-content",children:r("button",{type:"button",class:`ctx-pin-btn${s?" ctx-pin-active":""}`,onClick:(W)=>{W.stopPropagation(),lo(e.id)},"aria-label":s?"Remove from context":"Add to context","aria-pressed":s,children:r("span",{class:"ctx-pin-mark",children:[r(uo,{},void 0,!1,void 0,this),s&&pC(e.id)&&r("span",{class:"ctx-pin-agent-dot","aria-hidden":"true"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("button",{type:"button",class:"node-hover-control",onClick:(W)=>{W.stopPropagation(),n?.(W,e.id)},"aria-label":"More actions",children:r(pl,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("button",{type:"button",class:"node-hover-control",onClick:(W)=>{W.stopPropagation(),Vr(e.id)},"aria-label":"Close",children:r(Tt,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!e.collapsed&&r("div",{ref:X,class:"node-body",children:[t,r(Ud,{node:e},void 0,!1,void 0,this),!M&&r(Bd,{nodeId:e.id},void 0,!1,void 0,this),r(Fd,{node:e},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(e.collapsed||M)&&r(Bd,{nodeId:e.id},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!e.collapsed&&r("div",{class:"node-resize-handle",onPointerDown:(W)=>I(W,e.size.width,e.size.height)},void 0,!1,void 0,this),i&&["tl","tr","bl","br"].map((W)=>r("span",{class:`node-selection-handle is-${W}`,"aria-hidden":"true"},W,!1,void 0,this)),zi.value.has(e.id)&&r("span",{class:"node-yield-pill","data-testid":"yield-pill",children:[r("span",{class:"node-yield-dot","aria-hidden":"true"},void 0,!1,void 0,this),zi.value.get(e.id)," took over — agent yielded"]},void 0,!0,void 0,this),!M&&["top","right","bottom","left"].map((W)=>r("span",{class:`node-port-dot node-port-dot-${W}`,"aria-hidden":"true"},W,!1,void 0,this))]},void 0,!0,void 0,this),!M&&["top","right","bottom","left"].map((W)=>r("div",{class:`node-port node-port-${W}`,onPointerDown:(ye)=>{if(ye.button!==0)return;ye.stopPropagation(),ye.preventDefault(),ye.currentTarget.setPointerCapture(ye.pointerId);let He=e.position.x+e.size.width/2,R=e.position.y+e.size.height/2,ne=e.size.width/2,Ce=e.size.height/2,Ie,fe;switch(W){case"top":Ie=He,fe=R-Ce;break;case"bottom":Ie=He,fe=R+Ce;break;case"left":Ie=He-ne,fe=R;break;case"right":Ie=He+ne,fe=R;break}At.value={fromId:e.id,fromX:Ie,fromY:fe,cursorX:Ie,cursorY:fe}}},W,!1,void 0,this))]},void 0,!0,void 0,this)}function jd({node:e}){let t=typeof e.data.boardId==="string"?e.data.boardId:"",n=Ge.value.find((o)=>o.id===t);return r("div",{class:"board-node",children:[r("div",{class:"board-node-content",children:[r("div",{class:"board-node-label",children:"Linked board"},void 0,!1,void 0,this),r("strong",{class:"board-node-title",children:n?.name??"Missing board"},void 0,!1,void 0,this),r("div",{class:"board-node-meta",children:n?`${n.nodeCount} nodes${n.pin?" · pinned, so it travels with you":""}`:t||"No target id"},void 0,!1,void 0,this),n?.summary&&r("p",{class:"board-node-summary",children:n.summary},void 0,!1,void 0,this),!!n?.pinnedTitles?.length&&r("p",{class:"board-node-meta",children:["Pinned: ",n.pinnedTitles.map((o)=>o.title).join(", ")]},void 0,!0,void 0,this),!!n?.backlinks?.length&&r("p",{class:"board-node-meta",children:["Linked from: ",[...new Set(n.backlinks.map((o)=>o.title))].join(", ")]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("button",{class:"board-node-open",type:"button",disabled:!n,onClick:()=>n&&void zn(n.id),children:[n?"Open board":"Target unavailable",n&&r(oi,{size:14},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function VC(){let e=Yn(),t=[...et.value.values()],n=D(null);if(q(()=>{let s=n.current;if(!s)return;let a=new ResizeObserver(()=>void Xr());return a.observe(s),()=>a.disconnect()},[e?.id,t.length>0]),!e||t.length===0)return null;let o=[...new Set(t.map(Gn))],i=Io.value?.boardId===e.id?Io.value.kind:null;return r("div",{ref:n,class:"relation-legend","aria-label":"Relation legend",onPointerDown:(s)=>s.stopPropagation(),children:[r("select",{"aria-label":"Filter board relations",value:i??"",onChange:(s)=>{let a=s.currentTarget.value;Io.value=a?{boardId:e.id,kind:a}:null},children:[r("option",{value:"",children:"All relations"},void 0,!1,void 0,this),o.map((s)=>r("option",{value:s,children:[s," · ",t.filter((a)=>Gn(a)===s).length]},s,!0,void 0,this))]},void 0,!0,void 0,this),o.map((s)=>{let a=mo({kind:s},e.relationVocabulary);return r("button",{type:"button","aria-pressed":i===s,style:{"--relation-ink":`var(--c-rel-${a.ink})`},onClick:()=>{Io.value=i===s?null:{boardId:e.id,kind:s}},children:[r("span",{class:"relation-swatch","aria-hidden":"true"},void 0,!1,void 0,this),s," ",r("span",{class:"relation-count",children:t.filter((l)=>Gn(l)===s).length},void 0,!1,void 0,this)]},s,!0,void 0,this)})]},void 0,!0,void 0,this)}function XC(){let e=fi.value?.label;return e&&e!==ca?e:"the agent"}var sg=ie(null);function rg(e){if(!e)return"";let t=new Date(e);return Number.isNaN(t.getTime())?"":` · ${t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}`}function ig(e){return e.actor==="agent"?Nr(e):"you"}function W$(e,t){if(e.changedBy?.actor!=="agent"&&e.changedBy?.actor!=="human")return null;let n=ig(e.changedBy),i=!!e.createdBy&&ig(e.createdBy)!==n?`${n==="you"?"You":n} relabelled it${rg(e.changedAt)} (drawn by ${e.createdBy?ig(e.createdBy):""}${rg(e.createdAt)})`:`${n==="you"?"You drew it":`Drawn by ${n}`}${rg(e.createdAt??e.changedAt)}`;return t?`${i} · not seen by ${XC()} yet`:i}function JC(){let e=sg.value;if(!e||e.view!==Te.value||!et.value.has(e.edgeId))return null;return r("span",{class:"toolbar-tooltip edge-hint",role:"tooltip","data-testid":"edge-hint",style:{left:`${e.x}px`,top:`${e.y}px`},children:r("span",{class:"toolbar-tooltip-label",children:e.text},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var q$="M3 3l18 18M10.6 6.1A10 10 0 0 1 12 6c6.5 0 10 6 10 6a17 17 0 0 1-3 3.6M6.6 6.6C3.8 8.3 2 12 2 12s3.5 6 10 6a9.6 9.6 0 0 0 4.4-1";function G$(e){if(!Number.isFinite(e)||e<=0)return 1;return e<1?1/e:1}function K$(e,t){let n=`${8*t} ${4*t}`;if(e.style==="dashed")return n;if(e.style==="dotted")return`${3*t} ${3*t}`;if(!e.style&&mo(e,Yn()?.relationVocabulary).kind==="related")return`${2*t} ${5*t}`;if(e.type==="references"&&!e.style)return n;return}function Zd(e,t){let n=e.position.x+e.size.width/2,o=e.position.y+e.size.height/2,i=t.position.x+t.size.width/2,s=t.position.y+t.size.height/2,a=i-n,l=s-o,c=e.size.width/2,u=e.size.height/2,d=Math.abs(l/(a||0.001)),p=u/(c||0.001);if(d>p){let m=l>0?1:-1;return{x:n+u/d*(a>0?1:-1),y:o+u*m,side:m>0?"bottom":"top"}}let f=a>0?1:-1;return{x:n+c*f,y:o+d*c*(l>0?1:-1),side:f>0?"right":"left"}}function Wd(e,t){switch(e.side){case"top":return{x:e.x,y:e.y-t};case"bottom":return{x:e.x,y:e.y+t};case"left":return{x:e.x-t,y:e.y};case"right":return{x:e.x+t,y:e.y}}}function V$(e,t,n,o,i,s,a,l){return{x:0.125*e+0.375*n+0.375*i+0.125*a,y:0.125*t+0.375*o+0.375*s+0.125*l}}function X$({edge:e,fromNode:t,toNode:n,start:o,end:i,focused:s,dimmed:a,selected:l,scale:c,part:u}){let d=i.x-o.x,p=i.y-o.y,f=Math.sqrt(d*d+p*p),m=Math.min(Math.max(f*0.35,32),160),h=Wd(o,m),g=Wd(i,m),y=`M ${o.x} ${o.y} C ${h.x} ${h.y}, ${g.x} ${g.y}, ${i.x} ${i.y}`,b=mo(e,Yn()?.relationVocabulary),x=`var(--c-rel-${b.ink})`,C=b.directed,v=K$(e,c),k=Math.min(c,2.2),_=Te.value.scale,I=aC(e),w=e.label??e.kind,P=!!w&&_>=0.35,L=P?9:5,N=P?(w?.length??0)*7:0,Y=`not seen by ${XC()}`,B=12+Y.length*6.2+4,J=L*2+N+(I.notSeen?(N?12:0)+B:0),X=I.notSeen&&_>=0.6&&f>=(J+60)*k,V=I.notSeen?(N?12:0)+(X?B:12):0,ee=L*2+N+V,he=-ee/2+L,A=he+N+(N?12:0),M=P||I.notSeen?V$(o.x,o.y,h.x,h.y,g.x,g.y,i.x,i.y):null,O=`edge-path-${e.id}`,Pe=(Ae)=>{Ae.stopPropagation(),br.value=e.id},Fe=(Ae,ve)=>{let z=[`${String(t.data.title??t.id)} → ${String(n.data.title??n.id)}`,fa(e),W$(e,I.notSeen)].filter(Boolean).join(`
|
|
386
|
+
`),re=Ae.getBoundingClientRect();sg.value={x:ve?.x??re.left+re.width/2,y:(ve?.y??re.bottom)+8,text:z,edgeId:e.id,view:Te.value}},De=()=>{sg.value=null};if(u==="pill-hits"){if(!M)return null;return r("rect",{class:"edge-pill-hit","data-testid":"edge-pill-hit","data-edge-id":e.id,x:M.x-ee/2*k,y:M.y-10*k,width:ee*k,height:20*k,rx:10*k,fill:"transparent",onClick:Pe,onPointerEnter:(Ae)=>Fe(Ae.currentTarget),onPointerLeave:De},void 0,!1,void 0,this)}if(u==="pills"){if(!M)return null;return r("g",{transform:`translate(${M.x}, ${M.y})`,class:"edge-pill","data-testid":"edge-pill",opacity:a&&!l?0.35:1,children:[r("rect",{class:"edge-label-bg",x:-ee/2*k,y:-10*k,width:ee*k,height:20*k,rx:10*k},void 0,!1,void 0,this),P&&r("text",{class:"edge-label",x:(he+N/2)*k,"text-anchor":"middle","dominant-baseline":"central",fill:x,children:w},void 0,!1,void 0,this),I.notSeen&&r("g",{class:"edge-link-mark is-not-seen","data-testid":"edge-link-mark",children:[N>0&&r("line",{x1:(A-6)*k,x2:(A-6)*k,y1:-6*k,y2:6*k,stroke:"var(--c-line)","stroke-width":k},void 0,!1,void 0,this),r("path",{transform:`translate(${A*k}, ${-5*k}) scale(${0.4166666666666667*k})`,d:q$,fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},void 0,!1,void 0,this),X&&r("text",{class:"edge-label",x:(A+14)*k,"text-anchor":"start","dominant-baseline":"central",fill:"currentColor",children:Y},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}return r("g",{children:[r("path",{"data-edge-id":e.id,d:y,fill:"none",stroke:"transparent","stroke-width":12*c,style:{cursor:"pointer",pointerEvents:"stroke"},onClick:Pe,onPointerEnter:(Ae)=>Fe(Ae.currentTarget,{x:Ae.clientX,y:Ae.clientY}),onPointerLeave:De},void 0,!1,void 0,this),r("path",{id:O,d:y,class:l?"edge-line edge-selected":"edge-line",fill:"none",stroke:x,"stroke-width":(l?3:s?2.5:1.5)*c,"stroke-dasharray":v,"marker-end":C?"url(#edge-arrow)":void 0,opacity:l?1:a?0.2:s?1:0.85,style:{color:x}},void 0,!1,void 0,this),e.animated&&r("circle",{r:3*c,fill:x,opacity:"0.9",children:r("animateMotion",{dur:"2s",repeatCount:"indefinite",children:r("mpath",{href:`#${O}`},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function qd({nodes:e,edges:t,part:n}){let o=e.value,i=Array.from(t.value.values()),s=og.value,a=s!==null,l=wr.value,c=l!==null,u=G$(Te.value.scale),d=new Map,p=new Map;for(let v of i){if(v.toBoardId)continue;let k=Ds(v.from),_=Ds(v.to);if(!k||!_||k.id===_.id)continue;let I=Zd(k,_),w=Zd(_,k);d.set(v.id,{start:I,end:w});for(let[P,L,N]of[[I,k,_],[w,_,k]]){let Y=`${L.id}:${P.side}`,B=P.side==="left"||P.side==="right",J=p.get(Y)??[];J.push({anchor:P,node:L,order:B?N.position.y:N.position.x,id:v.id}),p.set(Y,J)}}for(let v of p.values()){if(v.length<2)continue;v.sort((k,_)=>k.order-_.order||k.id.localeCompare(_.id)),v.forEach(({anchor:k,node:_},I)=>{let w=(I+1)/(v.length+1);if(k.side==="left"||k.side==="right")k.y=_.position.y+_.size.height*w;else k.x=_.position.x+_.size.width*w})}if(i.length===0&&(n!=="lines"||!At.value))return null;let f=96,m=Array.from(o.values());if(m.length===0)return null;let h=Math.min(...m.map((v)=>v.position.x))-f,g=Math.min(...m.map((v)=>v.position.y))-f,y=Math.max(...m.map((v)=>v.position.x+v.size.width))+f,b=Math.max(...m.map((v)=>v.position.y+v.size.height))+f,x=Math.max(1,y-h),C=Math.max(1,b-g);return r("svg",{"aria-label":n==="lines"?"Canvas connections":void 0,"aria-hidden":n!=="lines"?"true":void 0,role:n==="lines"?"img":void 0,viewBox:`${h} ${g} ${x} ${C}`,width:x,height:C,style:{position:"absolute",top:`${g}px`,left:`${h}px`,zIndex:n==="pills"?1:n==="pill-hits"?"calc(var(--node-port-z, -1) - 1)":"var(--edge-line-z, -5)",pointerEvents:"none",overflow:"visible","--edge-chrome-scale":u.toFixed(3),"--edge-label-scale":Math.min(u,2.2).toFixed(3)},children:[n==="lines"&&r("title",{children:"Canvas connections"},void 0,!1,void 0,this),r("defs",{children:r("marker",{id:"edge-arrow",viewBox:"0 0 10 10",refX:"9",refY:"5",markerUnits:"userSpaceOnUse",markerWidth:8*Math.min(u,2.2),markerHeight:8*Math.min(u,2.2),orient:"auto-start-reverse",children:r("path",{d:"M 0 1 L 10 5 L 0 9 z",fill:"context-stroke",opacity:"0.75"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),i.map((v)=>{if(v.toBoardId)return null;let k=Ds(v.from),_=Ds(v.to),I=d.get(v.id);if(!k||!_||!I)return null;let w=a&&(v.from===s||v.to===s),P=c&&!(l.has(v.from)||l.has(v.to)),L=Gl.value;return r(X$,{edge:v,fromNode:k,toNode:_,start:I.start,end:I.end,focused:w,dimmed:L!==null&&!L.links.has(v.id)||P,selected:br.value===v.id,scale:u,part:n},v.id,!1,void 0,this)}),n==="lines"&&At.value&&(()=>{let v=At.value,k=Ds(v.fromId),_={position:{x:v.cursorX,y:v.cursorY},size:{width:1,height:1}},I;if(k){let w=Zd(k,_),P=Zd(_,k),L=P.x-w.x,N=P.y-w.y,Y=Math.sqrt(L*L+N*N),B=Math.min(Math.max(Y*0.35,32),160),J=Wd(w,B),X=Wd(P,B);I=`M ${w.x} ${w.y} C ${J.x} ${J.y}, ${X.x} ${X.y}, ${P.x} ${P.y}`}else{let w=v.cursorX-v.fromX,P=v.cursorY-v.fromY,L=Math.sqrt(w*w+P*P),N=Math.min(L*0.25,80),Y=w/(L||1),B=P/(L||1);I=`M ${v.fromX} ${v.fromY} C ${v.fromX+Y*N} ${v.fromY+B*N}, ${v.cursorX-Y*N} ${v.cursorY-B*N}, ${v.cursorX} ${v.cursorY}`}return r("g",{children:[r("path",{d:I,fill:"none",stroke:"var(--c-accent)","stroke-width":6*u,opacity:"0.1",style:{filter:"blur(3px)"}},void 0,!1,void 0,this),r("path",{d:I,fill:"none",stroke:"var(--c-accent)","stroke-width":2*u,"stroke-dasharray":`${6*u} ${4*u}`,opacity:"0.8"},void 0,!1,void 0,this),r("circle",{cx:v.cursorX,cy:v.cursorY,r:5*u,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 J$(e){let[t,...n]=e;if(!t)return"";return n.reduce((o,i)=>`${o} L ${i.x} ${i.y}`,`M ${t.x} ${t.y}`)}function ag({annotations:e}){if(e.length===0)return null;return r("svg",{class:"annotation-layer","aria-hidden":"true",children:e.map((t)=>{let n=t.color==="currentColor"?"var(--c-annotation)":t.color;if(t.type==="text"){let o=t.points[0];if(!o||!t.text)return null;return r("text",{x:o.x,y:o.y,fill:n,"font-size":t.width,"font-family":"var(--font-ui)","font-weight":"700",opacity:"0.95",children:t.text},t.id,!1,void 0,this)}return r("path",{d:J$(t.points),fill:"none",stroke:n,"stroke-width":t.width,"stroke-linecap":"round","stroke-linejoin":"round",opacity:"0.9"},t.id,!1,void 0,this)})},void 0,!1,void 0,this)}function Y$(e){switch(e.type){case"markdown":return r(Ku,{node:e},void 0,!1,void 0,this);case"mcp-app":return r(ui,{node:e},void 0,!1,void 0,this);case"webpage":return r(_d,{node:e},void 0,!1,void 0,this);case"json-render":return r(ui,{node:e},void 0,!1,void 0,this);case"graph":return r(ui,{node:e},void 0,!1,void 0,this);case"board":return r(jd,{node:e},void 0,!1,void 0,this);case"prompt":return r(Cd,{node:e},void 0,!1,void 0,this);case"response":return r(Td,{node:e},void 0,!1,void 0,this);case"status":return r(kd,{node:e},void 0,!1,void 0,this);case"context":return r(Ru,{node:e},void 0,!1,void 0,this);case"ledger":return r(zu,{node:e},void 0,!1,void 0,this);case"trace":return r(Id,{node:e},void 0,!1,void 0,this);case"file":return r(Mu,{node:e},void 0,!1,void 0,this);case"diff":return r(Pu,{node:e},void 0,!1,void 0,this);case"mermaid":return r(nd,{node:e},void 0,!1,void 0,this);case"image":return r(Sd,{node:e},void 0,!1,void 0,this);case"html":return r(Bl,{node:e},void 0,!1,void 0,this);case"group":return r(U_,{node:e},void 0,!1,void 0,this);default:return r("div",{children:"Unknown node type"},void 0,!1,void 0,this)}}class tT extends Br{shouldComponentUpdate(e){return e.node!==this.props.node||e.onContextMenu!==this.props.onContextMenu}render(){let{node:e,onContextMenu:t}=this.props;return r(KC,{node:e,onContextMenu:t,children:Y$(e)},void 0,!1,void 0,this)}}function Q$(e,t,n){let o=n.x-t.x,i=n.y-t.y,s=o*o+i*i;if(s===0)return Math.hypot(e.x-t.x,e.y-t.y);let a=Math.max(0,Math.min(1,((e.x-t.x)*o+(e.y-t.y)*i)/s));return Math.hypot(e.x-(t.x+a*o),e.y-(t.y+a*i))}function eL(e,t,n){for(let o=e.length-1;o>=0;o--){let i=e[o];if(!i)continue;let s=n+i.width;if(t.x<i.bounds.x-s||t.x>i.bounds.x+i.bounds.width+s||t.y<i.bounds.y-s||t.y>i.bounds.y+i.bounds.height+s)continue;if(i.type==="text")return i;for(let a=1;a<i.points.length;a++){let l=i.points[a-1],c=i.points[a];if(l&&c&&Q$(t,l,c)<=n+i.width/2)return i}}return null}var lg="currentColor",YC=4,QC=24,tL=14,eT={width:520,height:420};function nL(e){let t=e.trim();if(!t||/\s/.test(t))return null;let n=/^[a-z][a-z0-9+.-]*:/i.test(t)?t:`https://${t}`;try{let o=new URL(n);if(o.protocol!=="http:"&&o.protocol!=="https:")return null;return o.toString()}catch{return null}}function ug(e){let t=e.trim();if(!t)return[];let n=t.includes(`
|
|
387
|
+
`)?t.split(/\r?\n/):t.split(/\s+/),o=new Set,i=[];for(let s of n){let a=s.trim();if(!a||a.startsWith("#"))continue;let l=nL(a);if(!l||o.has(l))continue;o.add(l),i.push(l)}return i}function oL(e){let t=ug(e.getData("text/uri-list"));if(t.length>0)return t;return ug(e.getData("text/plain"))}function rL(e){if(!e)return!1;return e.types.includes("text/uri-list")||e.types.includes("text/plain")}function cg(e){if(!(e instanceof HTMLElement))return!1;return Boolean(e.closest('input, textarea, select, [contenteditable="true"], [contenteditable=""]'))}function iL(e,t,n=new Set){let o=[],i=0;for(let s of e){if(n.has(s.id))continue;if(t&&s.id===t)continue;if(s.type==="group")o.splice(i++,0,s);else o.push(s)}return o}function nT({onNodeContextMenu:e,onEdgeContextMenu:t,onCanvasContextMenu:n,annotationMode:o=!1,annotationTool:i=null}){let s=Te.value,a=D(!1),l=D(null),c=D(!1),u=D([]),[d,p]=E(null),[f,m]=E(null),[h,g]=E(null),y=D(null),[b,x]=E(!1),C=D(0),v=D(null),k=D(null);q(()=>{let z=null,re=sn(()=>{Te.value;let Ne=k.current;if(!Ne)return;if(Ne.style.willChange="transform",z)clearTimeout(z);z=setTimeout(()=>{Ne.style.willChange="auto"},180)});return()=>{if(z)clearTimeout(z);re()}},[]);let _=Cu({viewport:Te,disabled:o,onBackgroundContextMenu:n,onEdgeContextMenu:t,onViewportChange:(z)=>{if(a.current||o)return;co(),Gk(z)},onViewportCommit:(z)=>{if(a.current||o)return;co(),ul(z)}}),I=oe((z)=>{y.current=z,g(z)},[]),w=oe(async(z,re,Ne)=>{if(z.length===0)return;let{width:ke,height:le}=eT,Se=24,pe=Math.ceil(Math.sqrt(z.length)),Ue=Math.ceil(z.length/pe),xe=pe*ke+Math.max(0,pe-1)*Se,qe=Ue*le+Math.max(0,Ue-1)*Se;for(let W=0;W<z.length;W++){let ye=W%pe,He=Math.floor(W/pe),R=re-xe/2+ye*(ke+Se),ne=Ne-qe/2+He*(le+Se);await No({type:"webpage",content:z[W],x:R,y:ne,width:ke,height:le})}},[]),P=oe((z)=>{let re=_.current;if(!re)return;if(i==="eraser"){if((z.target instanceof Element?z.target:null)?.closest(".tool-rail, .top-bar, .snapshot-panel, .context-menu, .command-palette"))return;z.preventDefault(),z.stopPropagation();let Ue=re.getBoundingClientRect(),xe=Te.value,qe={x:(z.clientX-Ue.left-xe.x)/xe.scale,y:(z.clientY-Ue.top-xe.y)/xe.scale},W=eL(Array.from($s.value.values()),qe,tL/xe.scale);if(W)qk(W.id);return}if(i==="text"){if((z.target instanceof Element?z.target:null)?.closest(".tool-rail, .top-bar, .snapshot-panel, .context-menu, .command-palette"))return;z.preventDefault(),z.stopPropagation(),gt.value=null,Ln();let Ue=re.getBoundingClientRect(),xe=Te.value;I({x:(z.clientX-Ue.left-xe.x)/xe.scale,y:(z.clientY-Ue.top-xe.y)/xe.scale,value:""});return}if(i==="pen"){if((z.target instanceof Element?z.target:null)?.closest(".tool-rail, .top-bar, .snapshot-panel, .context-menu, .command-palette"))return;z.preventDefault(),z.stopPropagation(),gt.value=null,Ln(),c.current=!0;let Ue=re.getBoundingClientRect(),xe=Te.value,qe={x:(z.clientX-Ue.left-xe.x)/xe.scale,y:(z.clientY-Ue.top-xe.y)/xe.scale};u.current=[qe],m({id:"draft-annotation",type:"freehand",points:[qe],bounds:{x:0,y:0,width:0,height:0},color:lg,width:YC,createdAt:""}),re.setPointerCapture(z.pointerId);return}if(z.target!==re)return;if(Os()||z.button===1||z.button===2){if(!z.shiftKey&&!v.current)gt.value=null,Ln();return}z.preventDefault(),z.stopPropagation(),a.current=!0;let Ne=re.getBoundingClientRect(),ke=z.clientX-Ne.left,le=z.clientY-Ne.top,Se={startX:ke,startY:le,currentX:ke,currentY:le};v.current=Se,p(Se),re.setPointerCapture(z.pointerId)},[i,_]);q(()=>sn(()=>{let z=Te.value,re=l.current,Ne=_.current;if(!re||!Ne)return;let ke=Ne.getBoundingClientRect();su({x:(re.x-ke.left-z.x)/z.scale,y:(re.y-ke.top-z.y)/z.scale})}),[]);let L=oe((z)=>{{let ke=_.current;if(ke){l.current={x:z.clientX,y:z.clientY};let le=ke.getBoundingClientRect(),Se=Te.value;su({x:(z.clientX-le.left-Se.x)/Se.scale,y:(z.clientY-le.top-Se.y)/Se.scale})}}if(c.current){let ke=_.current;if(!ke)return;let le=ke.getBoundingClientRect(),Se=Te.value,pe={x:(z.clientX-le.left-Se.x)/Se.scale,y:(z.clientY-le.top-Se.y)/Se.scale},Ue=u.current.at(-1);if(Ue&&Math.hypot(pe.x-Ue.x,pe.y-Ue.y)<2)return;u.current=[...u.current,pe],m((xe)=>xe?{...xe,points:u.current}:null);return}if(!a.current||!v.current)return;let re=_.current?.getBoundingClientRect();if(!re)return;let Ne={...v.current,currentX:z.clientX-re.left,currentY:z.clientY-re.top};v.current=Ne,p(Ne)},[_]),N=oe((z)=>{if(c.current){c.current=!1;let pe=u.current;if(u.current=[],m(null),pe.length>=2)am({points:pe,color:lg,width:YC});let Ue=_.current;if(Ue?.hasPointerCapture(z.pointerId))Ue.releasePointerCapture(z.pointerId);return}let re=v.current;if(!a.current||!re)return;a.current=!1,v.current=null;let Ne=Math.min(re.startX,re.currentX),ke=Math.max(re.startX,re.currentX),le=Math.min(re.startY,re.currentY),Se=Math.max(re.startY,re.currentY);if(ke-Ne<=5&&Se-le<=5)gt.value=null,Ln();if(ke-Ne>5||Se-le>5){let pe=Te.value,Ue=(Ne-pe.x)/pe.scale,xe=(ke-pe.x)/pe.scale,qe=(le-pe.y)/pe.scale,W=(Se-pe.y)/pe.scale,ye=[];for(let He of H.value.values()){let R=He.position.x,ne=He.position.y;if(R+He.size.width>Ue&&R<xe&&ne+He.size.height>qe&&ne<W)ye.push(He.id)}if(ye.length>0)Lk(ye)}p(null)},[]);q(()=>{if(o)return;if(!c.current&&!f&&!h)return;c.current=!1,u.current=[],m(null),I(null)},[o,f,I,h]);let Y=oe(()=>{let z=y.current;if(!z)return;let re=z.value.trim();if(I(null),!re)return;let Ne={x:z.x,y:z.y};am({type:"text",points:[Ne],color:lg,width:QC,text:re})},[I]);q(()=>{if(i!=="text"&&h)I(null)},[i,I,h]),q(()=>{let z=(Se,pe,Ue)=>{let xe=null;for(let qe of H.value.values()){if(qe.id===Ue||qe.type==="group")continue;if(Se>=qe.position.x&&Se<=qe.position.x+qe.size.width&&pe>=qe.position.y&&pe<=qe.position.y+qe.size.height)xe=qe.id}return xe};function re(Se){if(!At.value)return;let pe=_.current;if(!pe)return;let Ue=pe.getBoundingClientRect(),xe=Te.value,qe=(Se.clientX-Ue.left-xe.x)/xe.scale,W=(Se.clientY-Ue.top-xe.y)/xe.scale;At.value={...At.value,cursorX:qe,cursorY:W,targetId:z(qe,W,At.value.fromId)}}function Ne(){let Se=At.value;if(!Se)return;At.value=null;let pe=Se.targetId;if(!pe)return;if(Se.withLabel){Dn("Edge label","label text").then((Ue)=>{yr(Se.fromId,pe,"relation",Ue??void 0)});return}yr(Se.fromId,pe,"relation",void 0)}function ke(Se){let pe=At.value;if(!pe)return;if(Se.key==="Escape")Se.preventDefault(),At.value=null;else if(Se.key==="l"||Se.key==="L")Se.preventDefault(),At.value={...pe,withLabel:!pe.withLabel}}function le(){At.value=null}return document.addEventListener("pointermove",re),document.addEventListener("pointerup",Ne),document.addEventListener("pointercancel",le),document.addEventListener("keydown",ke),()=>{document.removeEventListener("pointermove",re),document.removeEventListener("pointerup",Ne),document.removeEventListener("pointercancel",le),document.removeEventListener("keydown",ke)}},[_]);let B=oe((z)=>{if(o)return;let re=_.current;if(!re||z.target!==re||!n)return;let Ne=re.getBoundingClientRect(),ke=Te.value,le=(z.clientX-Ne.left-ke.x)/ke.scale,Se=(z.clientY-Ne.top-ke.y)/ke.scale;n(z,le,Se)},[o,_,n]),J=oe((z)=>{z.preventDefault()},[]),X=oe((z)=>{if(cg(z.target instanceof Element?z.target:null))return;z.preventDefault()},[]),V=oe((z)=>{if(z.preventDefault(),C.current++,z.dataTransfer?.types.includes("Files")||rL(z.dataTransfer))x(!0)},[]),ee=oe((z)=>{if(z.preventDefault(),z.dataTransfer)z.dataTransfer.dropEffect="copy"},[]),he=oe((z)=>{if(z.preventDefault(),C.current--,C.current<=0)C.current=0,x(!1)},[]),A=oe(async(z)=>{z.preventDefault(),x(!1),C.current=0;let re=_.current;if(!re||!z.dataTransfer)return;let Ne=re.getBoundingClientRect(),ke=Te.value,le=(z.clientX-Ne.left-ke.x)/ke.scale,Se=(z.clientY-Ne.top-ke.y)/ke.scale,pe=Array.from(z.dataTransfer.files);if(pe.length===0){let Ue=oL(z.dataTransfer);await w(Ue,le,Se);return}await la(pe,le,Se)},[_,w]);q(()=>{let z=async(re)=>{if(re.defaultPrevented)return;if(cg(re.target instanceof Element?re.target:null))return;if(cg(document.activeElement))return;let Ne=re.clipboardData?.getData("text/plain")??"",ke=ug(Ne);if(ke.length===0)return;let le=_.current;if(!le)return;re.preventDefault();let Se=le.getBoundingClientRect(),pe=Te.value,Ue=(Se.width/2-pe.x)/pe.scale,xe=(Se.height/2-pe.y)/pe.scale;await w(ke,Ue,xe)};return document.addEventListener("paste",z),()=>{document.removeEventListener("paste",z)}},[_,w]);let te=iL(H.value.values(),Dt.value,new Set(il.value.keys())),M=te.reduce((z,re)=>Math.min(z,Math.floor(re.zIndex)),0),Pe=te.reduce((z,re)=>Math.max(z,Math.ceil(re.zIndex)),0)-M+3,Fe=Xo.value,De=Fe?H.value.get(Fe.groupId):void 0,Ae=Fe?H.value.get(Fe.nodeId):void 0,ve=null;if(d){let z=Math.min(d.startX,d.currentX),re=Math.min(d.startY,d.currentY),Ne=Math.abs(d.currentX-d.startX),ke=Math.abs(d.currentY-d.startY);ve={position:"absolute",left:`${z}px`,top:`${re}px`,width:`${Ne}px`,height:`${ke}px`,pointerEvents:"none"}}return r("div",{class:`canvas-viewport${Os()?" pan-mode":""}`,ref:_,tabIndex:0,onPointerDown:P,onPointerMove:L,onPointerLeave:()=>{l.current=null,su(null)},onPointerUp:N,onContextMenu:J,onDblClick:B,onDragStart:X,onDragEnter:V,onDragOver:ee,onDragLeave:he,onDrop:A,style:{width:"100%",height:"100%",position:"relative",overflow:"clip",cursor:i==="eraser"?"cell":i==="text"?"text":o||At.value||a.current||Wn.value==="connect"?"crosshair":Os()?"grab":"default"},children:[r("div",{ref:k,class:"canvas-world",style:{transform:`matrix(${s.scale}, 0, 0, ${s.scale}, ${s.x}, ${s.y})`,transformOrigin:"0 0","--node-port-z":M-1,"--node-hit-offset":Pe,"--edge-line-z":M-Pe-1,position:"absolute",top:0,left:0},children:[r(AC,{},void 0,!1,void 0,this),r(eC,{},void 0,!1,void 0,this),r(rC,{},void 0,!1,void 0,this),r(iC,{},void 0,!1,void 0,this),r(qd,{nodes:H,edges:et,part:"lines"},void 0,!1,void 0,this),r(qd,{nodes:H,edges:et,part:"pills"},void 0,!1,void 0,this),r(qd,{nodes:H,edges:et,part:"pill-hits"},void 0,!1,void 0,this),At.value&&r("div",{class:"edge-hint-pill","data-testid":"edge-hint",style:{left:`${At.value.cursorX+14}px`,top:`${At.value.cursorY+14}px`},children:[r("span",{class:"edge-hint-main",children:At.value.targetId?"release to connect":"drag onto a node"},void 0,!1,void 0,this),r("span",{class:"edge-hint-keys",children:["esc cancels · L labels",At.value.withLabel?" · label on":""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Fe&&De&&Ae&&r("div",{class:"drop-pill","data-testid":"drop-pill",style:{left:`${Ae.position.x}px`,top:`${Ae.position.y+Ae.size.height+10}px`},children:[r("span",{class:"drop-pill-text",children:Fe.mode==="add"?`release to add to ${String(De.data.title??"group")}`:`release to remove from ${String(De.data.title??"group")}`},void 0,!1,void 0,this),r("span",{class:"drop-pill-hint",children:Fe.mode==="add"?"esc keeps it out":"esc keeps it in"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r(ag,{annotations:Array.from($s.value.values())},void 0,!1,void 0,this),f&&f.points.length>=2&&r(ag,{annotations:[f]},void 0,!1,void 0,this),te.map((z)=>r(tT,{node:z,onContextMenu:e},z.id,!1,void 0,this)),rs.value&&r("svg",{class:"snap-guides-svg",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",pointerEvents:"none",overflow:"visible"},children:rs.value.map((z,re)=>z.axis==="x"?r("line",{x1:z.pos,y1:z.from-20,x2:z.pos,y2:z.to+20,class:"snap-guide-line"},re,!1,void 0,this):r("line",{x1:z.from-20,y1:z.pos,x2:z.to+20,y2:z.pos,class:"snap-guide-line"},re,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),o&&r("div",{class:`annotation-capture-layer${i==="eraser"?" erasing":""}${i==="text"?" text":""}`,"aria-hidden":"true"},void 0,!1,void 0,this),h&&r("input",{class:"annotation-text-input",value:h.value,autoFocus:!0,style:{left:`${h.x*s.scale+s.x}px`,top:`${h.y*s.scale+s.y}px`,fontSize:`${QC*s.scale}px`},onInput:(z)=>I({...h,value:z.target.value}),onBlur:Y,onPointerDown:(z)=>z.stopPropagation(),onKeyDown:(z)=>{if(z.key==="Enter")z.preventDefault(),Y();if(z.key==="Escape")z.preventDefault(),I(null)}},void 0,!1,void 0,this),r(gC,{},void 0,!1,void 0,this),r(yC,{},void 0,!1,void 0,this),ve&&r("div",{class:"lasso-rect",style:ve},void 0,!1,void 0,this),b&&r("div",{class:"drop-zone-overlay",children:r("div",{class:"drop-zone-indicator",children:[r("div",{class:"drop-zone-icon",children:"+"},void 0,!1,void 0,this),r("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 Mr({label:e,value:t,options:n,onChange:o,className:i="",above:s=!1}){let[a,l]=E(!1),c=D(null),u=D(null),d=D(null),p=()=>{l(!1),u.current?.focus()};return Me(()=>{if(!a)return;(d.current?.querySelector('[aria-checked="true"]:not(:disabled)')??d.current?.querySelector("button:not(:disabled)"))?.focus();let m=(h)=>{if(h.target instanceof Node&&!c.current?.contains(h.target))l(!1)};return document.addEventListener("pointerdown",m),()=>document.removeEventListener("pointerdown",m)},[a]),r("div",{ref:c,class:`choice-menu ${i}`,onBlur:(f)=>{if(f.relatedTarget instanceof Node&&!c.current?.contains(f.relatedTarget))l(!1)},onKeyDown:(f)=>{if(f.key!=="Tab"&&(f.key!=="Escape"||a))f.stopPropagation();if(f.key==="Escape"&&a)f.preventDefault(),f.stopPropagation(),p();if(["ArrowDown","ArrowUp","Home","End"].includes(f.key)){if(f.preventDefault(),f.stopPropagation(),!a){l(!0);return}let m=[...d.current?.querySelectorAll("button:not(:disabled)")??[]];if(!m.length)return;let h=m.findIndex((y)=>y===document.activeElement),g=f.key==="Home"?0:f.key==="End"?m.length-1:(h+(f.key==="ArrowUp"?-1:1)+m.length)%m.length;m[g]?.focus()}},children:[r("button",{ref:u,type:"button",class:"choice-menu-trigger","aria-label":e,"aria-haspopup":"menu","aria-expanded":a,onClick:()=>l(!a),children:[r("span",{children:n.find((f)=>f.value===t)?.label??e},void 0,!1,void 0,this),r(Hs,{size:14},void 0,!1,void 0,this)]},void 0,!0,void 0,this),a&&r("div",{ref:d,role:"menu","aria-label":e,class:`toolbar-menu choice-menu-options${s?" opens-above":""}`,children:n.map((f)=>r("button",{type:"button",role:"menuitemradio",class:`toolbar-menu-item${f.value===t?" active":""}`,"aria-checked":f.value===t,disabled:f.disabled,tabIndex:-1,"data-value":f.value,onClick:()=>{o(f.value),p()},children:[r("span",{children:f.label},void 0,!1,void 0,this),f.value===t&&r("span",{class:"toolbar-menu-check","aria-hidden":"true",children:"✓"},void 0,!1,void 0,this)]},f.value,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Gd(e){let t=D(null);return Me(()=>{let n=t.current,o=n?.parentElement;if(!n||!o)return;let i=()=>o.style.setProperty(e,`${n.getBoundingClientRect().height}px`);i();let s=new ResizeObserver(i);return s.observe(n),()=>{s.disconnect(),o.style.removeProperty(e)}},[e]),t}function oT(){let e=Gd("--command-bar-height"),t=[...Oi.value],n=H.value,[o,i]=E(""),[s,a]=E(!1),l=oC.value,[c,u]=E(null),d=l.length>=2,p=!d&&l.length===1&&l[0].steerable?l[0]:null,f=d?c?l.find((g)=>g.value===c&&g.steerable)??null:null:p,m=f?.value??null,h=async()=>{let g=o.trim();if(!xt.value||!g||s)return;a(!0);let y=await pa(g,m);if(a(!1),y)i("")};return r("div",{ref:e,class:"command-bar","data-testid":"command-bar",hidden:!xt.value,style:!xt.value?{display:"none"}:void 0,children:[t.length>0&&r("div",{class:"command-bar-chips","aria-label":"Pinned context",children:[t.map((g)=>{let y=n.get(g),b=typeof y?.data.title==="string"&&y.data.title.trim()?y.data.title:y?.type??g;return r("span",{class:"command-bar-chip","data-node-id":g,children:[r("span",{class:"command-bar-chip-label",children:b},void 0,!1,void 0,this),r(_e,{label:"Remove from context",side:"up",children:r("button",{type:"button",class:"command-bar-chip-unpin","aria-label":`Unpin ${b}`,onClick:()=>lo(g),children:r(Tt,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},g,!0,void 0,this)}),r("span",{class:"command-bar-chips-note",children:"in agent context"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"command-bar-composer",children:[r(Us,{size:15,class:"command-bar-icon"},void 0,!1,void 0,this),d&&r(Mr,{className:"command-bar-target",label:"Steer which agent",value:m??"",above:!0,onChange:(g)=>u(g||null),options:[{value:"",label:"All agents"},...l.map((g)=>{let y=g.pendingSteers&&g.pendingSteers>0?` · ${g.pendingSteers} queued`:"",b=g.polling?" · polling":"";return{value:g.value,disabled:!g.steerable,label:g.attached?`${g.label}${b}${y}`:g.steerable?`${g.label} · writer${b}${y}`:`${g.label} · no inbox`}})]},void 0,!1,void 0,this),r("input",{class:"command-bar-input",type:"text",value:o,placeholder:`Steer ${f?.label??"the agent"}, or ${Bt("K")} to search the board…`,"aria-label":"Steer the agent",disabled:s,onInput:(g)=>i(g.target.value),onKeyDown:(g)=>{if(g.key==="Enter")g.preventDefault(),h()}},void 0,!1,void 0,this),r("button",{type:"button",class:"command-bar-send",disabled:s||!o.trim(),onClick:()=>void h(),children:s?"Sending…":"Send"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function dg(e){let t=Math.max(0,Math.floor((Date.now()-new Date(e).getTime())/60000));if(t<1)return"just now";if(t<60)return`${t}m`;let n=Math.floor(t/60);return n<24?`${n}h`:`${Math.floor(n/24)}d`}function Kd(e){let t=dg(e);return t==="just now"?t:`${t} ago`}var pg=ie(null),Xd=ie(new Map);function fg(e){return e>=1000?`${(e/1000).toFixed(1)}k`:`${Math.round(e)}`}function Vl(e){return fg(e/4)}var Vd=null,rT=0;function zr(e=250){if(Vd)clearTimeout(Vd);Vd=setTimeout(()=>{Vd=null,sL()},e)}async function sL(){let e=++rT,t=ae.value,n=()=>e===rT&&t===ae.value,o=await de("fetchBriefSize","/api/canvas/context",null,{headers:{"x-pmx-proxied-read":"1"}});if(!n())return;if(o?.entries)pg.value={chars:JSON.stringify(o).length};let i=Ge.value.filter((a)=>a.pin);if(i.length===0){if(n())Xd.value=new Map;return}let s=await de("fetchBoardReadStatus",`/api/canvas/ax/context-status?boards=${i.map((a)=>encodeURIComponent(a.id)).join(",")}`,null);if(n())Xd.value=new Map(i.map((a)=>[a.id,s?.boards?.[a.id]??null]))}function sT(){let e=Oi.value.size;if(e===0||qr.value)return null;return r("div",{class:"context-pin-bar",role:"region","aria-label":"Pinned context",children:[r(uo,{size:14},void 0,!1,void 0,this),r("span",{children:[hg(e,"node")," in context"]},void 0,!0,void 0,this),r(_e,{label:"Clear all context pins",side:"up",align:"end",children:r("button",{type:"button","aria-label":"Clear all context pins",onClick:rm,children:r(Tt,{size:12},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function hg(e,t){return`${e} ${t}${e===1?"":"s"}`}function mg(e){let t=H.value.get(e);return typeof t?.data.title==="string"&&t.data.title?t.data.title:e}function aT(){let[e,t]=E(!1),n=D(null),o=D(null),i=ae.value;q(()=>{if(!e)return;zr();let y=(x)=>{if(x.key!=="Escape")return;t(!1),o.current?.focus()},b=(x)=>{if(n.current&&!n.current.contains(x.target))t(!1)};return window.addEventListener("keydown",y),window.addEventListener("pointerdown",b),()=>{window.removeEventListener("keydown",y),window.removeEventListener("pointerdown",b)}},[e]);let s=ut.value;if(!i&&!s)return null;let a=s?[]:[...Oi.value],l=s?[]:[...ro.value.entries()],c=Ge.value.filter((y)=>y.pin&&(s||y.id!==i)),u=a.length===0&&c.length===0,d=[...a.map((y)=>mi.value[y]?.pinnedBy),...c.map((y)=>y.pin?.pinnedBy)],p=!u&&d.every((y)=>y?.actor==="agent"),f=pg.value,m=f?`≈ ${Vl(f.chars)} tokens`:"",h=fi.value,g=[];if(a.length)g.push({text:hg(a.length,"card")});if(l.length)g.push({text:`${l.length} near`,kind:"near"});if(c.length)g.push({text:hg(c.length,"board")});if(p){let y=d.find((b)=>b?.actor==="agent");g.push({text:`by ${y?Nr(y):"agent"}`,kind:"agent"})}return r("div",{class:"context-chip-wrap",ref:n,children:[r("button",{ref:o,type:"button",class:`context-chip${u?" is-empty":""}${e?" is-open":""}`,"aria-expanded":e,"aria-haspopup":"dialog","data-testid":"context-chip",onClick:()=>t(!e),children:[r("span",{class:"context-chip-pin",children:[r(uo,{size:13},void 0,!1,void 0,this),p&&r("span",{class:"context-chip-agent-dot","aria-hidden":"true"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),u?r("span",{children:"Nothing in context"},void 0,!1,void 0,this):r(be,{children:[r("span",{class:"context-chip-wide",children:g.map((y,b)=>r("span",{class:y.kind?`is-${y.kind}`:void 0,children:[b>0?" · ":"",y.text]},y.text,!0,void 0,this))},void 0,!1,void 0,this),r("span",{class:"context-chip-narrow",children:[a.length+c.length," in context"]},void 0,!0,void 0,this),m&&r("span",{class:"context-chip-cost","data-testid":"token-cost",children:m},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),e&&r("div",{class:"context-panel",role:"dialog","aria-label":"In the agent's context",children:[r("div",{class:"context-panel-head",children:[r("span",{class:"context-panel-title",children:"In the agent’s context"},void 0,!1,void 0,this),m&&r("span",{class:"context-panel-mono",children:m},void 0,!1,void 0,this)]},void 0,!0,void 0,this),u?r("p",{class:"context-panel-cap",children:"Nothing is pinned. Pin a card or a board and the agent gets it first; it can still find and pull anything else on the board."},void 0,!1,void 0,this):r(be,{children:[r("p",{class:"context-panel-cap",children:["What the canvas sends the agent costs ",m||"a few tokens",".",h?.contextUsage?` ${h.label}’s whole context holds ${fg(h.contextUsage.used)} tokens.`:""]},void 0,!0,void 0,this),r("div",{class:"context-panel-section",children:[r("span",{children:["Cards on this board · ",a.length]},void 0,!0,void 0,this),a.length>0&&r("button",{type:"button",class:"context-panel-link",onClick:()=>rm(),children:"Clear all"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("ul",{class:"context-panel-list",children:a.map((y)=>{let b=H.value.get(y),x=Md(y,b?.contentRevision??0),C=x.kind==="read"&&zd(y,b?.linksRevision??0),v=mi.value[y]?.pinnedBy.actor==="agent";return r("li",{class:"context-panel-row",children:[r("span",{class:"context-panel-pin",children:[r(uo,{size:9},void 0,!1,void 0,this),v&&r("span",{class:"context-chip-agent-dot","aria-hidden":"true"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("span",{class:"context-panel-name",children:mg(y)},void 0,!1,void 0,this),C?r("span",{class:"context-tag is-links",children:[r("svg",{viewBox:"0 0 24 24",width:"10",height:"10","aria-hidden":"true",children:r("path",{d:"M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1"},void 0,!1,void 0,this)},void 0,!1,void 0,this),"links changed"]},void 0,!0,void 0,this):r(iT,{state:x.kind,at:x.kind==="not-read"?null:x.at},void 0,!1,void 0,this),r("button",{type:"button",class:"context-panel-x","aria-label":`Unpin ${mg(y)}`,onClick:()=>lo(y),children:"×"},void 0,!1,void 0,this)]},y,!0,void 0,this)})},void 0,!1,void 0,this),l.length>0&&r(be,{children:[r("div",{class:"context-panel-section",children:[r("span",{children:["Near · ",l.length]},void 0,!0,void 0,this),r("span",{class:"context-panel-cap-inline",children:["derived · ",r("span",{class:"context-panel-wide",children:"sent as "},void 0,!1,void 0,this),"title + summary"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("ul",{class:"context-panel-list",children:l.map(([y,b])=>r("li",{class:"context-panel-row is-near",children:[r("span",{class:"context-panel-near-ring","aria-hidden":"true"},void 0,!1,void 0,this),r("span",{class:"context-panel-name is-soft",children:mg(y)},void 0,!1,void 0,this),r("span",{class:"context-panel-cap-inline",children:["near ",b[0]?.pinTitle]},void 0,!0,void 0,this),r("button",{type:"button",class:"context-panel-promote",onClick:()=>lo(y),children:"Pin"},void 0,!1,void 0,this)]},y,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),c.length>0&&r(be,{children:[r("div",{class:"context-panel-section",children:[r("span",{children:["Boards · ",c.length]},void 0,!0,void 0,this),r("span",{class:"context-panel-cap-inline",children:"sent as a map"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("ul",{class:"context-panel-list",children:c.map((y)=>{let b=Xd.value.get(y.id);return r("li",{class:"context-panel-row",children:[r("svg",{class:"context-panel-board",viewBox:"0 0 24 24",width:"14",height:"14","aria-hidden":"true",children:r("path",{d:"M4 4h16v16H4zM9 9h6v6H9z"},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("span",{class:"context-panel-name",children:y.name},void 0,!1,void 0,this),r(iT,{state:b?"read":"not-read",at:b?.lastReadAt??null},void 0,!1,void 0,this),r("span",{class:"context-panel-cap-inline",children:"map"},void 0,!1,void 0,this),r("button",{type:"button",class:"context-panel-x","aria-label":`Unpin ${y.name}`,onClick:()=>void zs(y.id,!1),children:"×"},void 0,!1,void 0,this)]},y.id,!0,void 0,this)})},void 0,!1,void 0,this),r("p",{class:"context-panel-cap",children:"A pinned board travels as a map: its folder, README summary, each pinned card’s title and summary, and its links and backlinks. The agent pulls a card or the whole board in full when it decides it needs to."},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 iT({state:e,at:t}){let[n,o,i]=e==="changed"?["is-changed",hi.warn,"changed"]:e==="read"&&t?["is-read",hi.eye,`read ${dg(t)}`]:["is-not-read",hi.eyeOff,"not read yet"];return r("span",{class:`context-tag ${n}`,children:[r("svg",{viewBox:"0 0 24 24",width:"11",height:"11","aria-hidden":"true",children:r("path",{d:o},void 0,!1,void 0,this)},void 0,!1,void 0,this),i]},void 0,!0,void 0,this)}var gg=Ve(()=>{if(ao.value==="disconnected")return"reconnecting";if(ao.value==="connected"&&!hn.value&&ji.value>1)return"resyncing";return null});function lT(){let e=gg.value;if(!e)return null;if(e==="reconnecting"){let t=Zi.value,n=Wi.value;return r("div",{class:"connection-banner is-reconnecting",role:"status","data-testid":"connection-banner",children:[r("span",{class:"connection-banner-glyph","aria-hidden":"true",children:"↻"},void 0,!1,void 0,this),r("span",{class:"connection-banner-text",children:[r("b",{children:"Reconnecting…"},void 0,!1,void 0,this)," live updates are paused; retry refused saves after reconnect. The board may be stale."]},void 0,!0,void 0,this),r("span",{class:"connection-banner-meta",children:[t>0?`retry ${t}`:"retrying",n>0?` · ${Math.max(1,Math.round(n/1000))}s`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}return r("div",{class:"connection-banner is-resyncing",role:"status","data-testid":"connection-banner",children:[r("span",{class:"connection-banner-glyph","aria-hidden":"true",children:"⟳"},void 0,!1,void 0,this),r("span",{class:"connection-banner-text",children:[r("b",{children:"Resyncing from snapshot"},void 0,!1,void 0,this)," — the event cursor went stale; the board reloads without losing local edits."]},void 0,!0,void 0,this),r("span",{class:"connection-banner-progress","aria-hidden":"true",children:r("span",{class:"connection-banner-progress-fill"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var aL={markdown:{width:520,height:360},group:{width:600,height:400},html:{width:720,height:640},image:{width:720,height:520},file:{width:720,height:600},webpage:{width:520,height:420}};async function Eo(e){if(e.x!==void 0&&e.y!==void 0)return No(e);let t=aL[e.type]??{width:360,height:200},n=e.width??t.width,o=e.height??t.height,i=Zr(),s=Te.value,a=await No({...e,width:n,height:o,x:Math.round((i.x-s.x)/s.scale-n/2),y:Math.round((i.y-s.y)/s.scale-o/2)});if(a.ok&&a.id)$t(a.id);return a}var Jd=!1,cT=!1,is=null,ya=null;function yg(){return Jd}function Yd(){Jd=!1,cT=!0,uT()}function uT(){if(is&&ya)is.removeEventListener("change",ya);is=null,ya=null}function lL(){if(typeof window>"u"||!window.location)return null;let e=new URLSearchParams(window.location.search).get("theme");if(e==="auto")return"auto";return Tl(e)?e:null}function dT(e){if(cT)return;let t=lL();if(!t)return;if(uT(),Jd=!0,t!=="auto"){e(t);return}is=window.matchMedia("(prefers-color-scheme: light)"),ya=()=>{if(Jd&&is)e(is.matches?"daylight":"harbor")},ya(),is.addEventListener("change",ya)}var cL='a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), summary, [tabindex]:not([tabindex="-1"])';function bn(e,t,n={}){let o=D(n.onEscape);o.current=n.onEscape,Me(()=>{if(!t)return;let i=e.current;if(!i)return;let s=document.activeElement,a=n.restoreTo,l=()=>Array.from(i.querySelectorAll(cL)).filter((p)=>{if(p.closest("[hidden], [inert]"))return!1;for(let f=p;f&&f!==i;f=f.parentElement){if(getComputedStyle(f).display==="none"||getComputedStyle(f).visibility==="hidden")return!1;if(f.matches("details:not([open])")&&!f.querySelector(":scope > summary")?.contains(p))return!1}return!0}),c=n.initial?.current??l()[0];if(c&&!i.contains(document.activeElement))c.focus();let u=(p)=>{if(p.key!=="Tab")return;let f=l();if(f.length===0)return;let m=f[0],h=f[f.length-1],g=document.activeElement;if(p.shiftKey&&(g===m||!i.contains(g)))p.preventDefault(),h.focus();else if(!p.shiftKey&&g===h)p.preventDefault(),m.focus()},d=(p)=>{if(p.key!=="Escape"||!o.current||i.contains(p.target))return;p.preventDefault(),p.stopPropagation(),o.current()};return i.addEventListener("keydown",u),window.addEventListener("keydown",d,!0),()=>{if(i.removeEventListener("keydown",u),window.removeEventListener("keydown",d,!0),a)requestAnimationFrame(()=>a()?.focus());else if(s&&document.contains(s)&&s!==document.body)s.focus()}},[e,t,n.initial,n.restoreTo])}function uL(e,t){let n=e.toLowerCase(),o=t.toLowerCase(),i=[],s=0,a=0,l=-1;for(let c=0;c<o.length&&s<n.length;c++)if(o[c]===n[s]){if(i.push(c),a+=l===c-1?10:1,c===0||o[c-1]===" "||o[c-1]==="-"||o[c-1]==="_")a+=5;l=c,s++}return{match:s===n.length,score:a,indices:i}}function dL(e,t){if(t.length===0)return e;let n=[],o=0;for(let i of t){if(i>o)n.push(e.slice(o,i));n.push(r("mark",{children:e[i]},i,!1,void 0,this)),o=i+1}if(o<e.length)n.push(e.slice(o));return n}var vg={md:"markdown",app:"mcp-app",web:"webpage",ui:"json-render",chart:"graph",ctx:"context",log:"ledger"};function pL(e){let t=e.toLowerCase().trim();if(t.startsWith("type:")){let n=t.slice(5).trim(),i=Object.keys(an).find((a)=>a.startsWith(n));if(i)return{typeFilter:i,remaining:""};let s=vg[n];if(s)return{typeFilter:s,remaining:""}}if(vg[t])return{typeFilter:vg[t],remaining:""};return{typeFilter:null,remaining:e}}function pT({onClose:e,onToggleMinimap:t}){let[n,o]=E(""),[i,s]=E(0),[a,l]=E([]),[c,u]=E("idle"),d=D(null),p=D(null),f=D(null);bn(f,!0,{initial:d}),q(()=>{setTimeout(()=>d.current?.focus(),30)},[]),q(()=>{let _=n.trim();if(_.length<2){l([]),u("idle");return}let I=!0;u("loading");let w=window.setTimeout(()=>void de("paletteLibrarySearch",`/api/canvas/search?q=${encodeURIComponent(_)}&scope=library&limit=12`,null).then((P)=>{if(!I)return;if(!P){l([]),u("error");return}l(P.results??[]),u("idle")}),150);return()=>{I=!1,window.clearTimeout(w)}},[n]);let m=oe(()=>{let _=[];for(let w of H.value.values()){let P=w.data.title||an[w.type],L=w.data.content||w.data.path||"",N=w.type==="group"&&Array.isArray(w.data.children)?w.data.children.length:0;_.push({id:`node:${w.id}`,kind:"node",label:P,description:w.type==="group"?`group · ${N} node${N===1?"":"s"}`:L.length>60?`${an[w.type].toLowerCase()} · ${L.slice(0,60)}…`:L?`${an[w.type].toLowerCase()} · ${L}`:an[w.type].toLowerCase(),icon:Do(w.type),nodeType:w.type,action:()=>{$t(w.id),e()}})}let I=[{label:"New markdown note",shortcut:"M",icon:ti,iconTone:"accent",action:()=>{Eo({type:"markdown",title:"New note",width:520,height:360}),e()}},{label:"Link to board…",icon:Do("board"),iconTone:"accent",action:()=>{window.dispatchEvent(new CustomEvent("pmx-open-board-link")),e()}},...!xt.value||_o.value?[]:[{label:"Start agent session",icon:Us,iconTone:"purple",action:()=>{yi(),e()}}],{label:"Fit view",shortcut:"F",icon:Iu,iconTone:"muted",action:()=>{Bs(Jt().width,Jt().height),e()}},{label:"Auto-arrange (grid)",icon:Tr,iconTone:"muted",action:()=>{ku(),e()}},{label:"Auto-arrange (graph-aware)",icon:Tr,iconTone:"muted",action:()=>{Su(),e()}},{label:"Toggle minimap",icon:dS,iconTone:"muted",action:()=>{t(),e()}},{label:"Toggle theme (Harbor/Daylight)",icon:pS,iconTone:"muted",action:()=>{let w=Qs(Qt.value)==="dark"?"daylight":"harbor";Yd(),document.documentElement.setAttribute("data-theme",w),sa(),Qt.value=w,du(w),e()}}];for(let w of I)_.push({id:`action:${w.label}`,kind:"action",label:w.label,...w.shortcut?{shortcut:w.shortcut}:{},icon:w.icon,...w.iconTone?{iconTone:w.iconTone}:{},action:w.action});return _},[e,t]),{typeFilter:h,remaining:g}=pL(n),y=m(),b;if(!n.trim())b=y.map((_)=>({..._,score:0,indices:[]}));else{b=[];for(let _ of y){if(h){if(_.kind!=="node"||_.nodeType!==h)continue;if(!g){b.push({..._,score:0,indices:[]});continue}}let I=uL(g||n,_.label);if(I.match)b.push({..._,score:I.score,indices:I.indices})}b.sort((_,I)=>I.score-_.score)}for(let _ of a)b.push({id:`library:${_.boardId}:${_.cardId}`,kind:"library",label:_.title||_.boardTitle,description:`${_.boardTitle} · ${_.snippet}`,icon:Do("board"),score:0,indices:[],action:()=>{(async()=>{await zt(_),e()})()}});b=[...b.filter((_)=>_.kind==="action"),...b.filter((_)=>_.kind==="node"),...b.filter((_)=>_.kind==="library")];let x=b.findIndex((_)=>_.kind==="node"),C=b.findIndex((_)=>_.kind==="library");q(()=>{if(!n.trim()){wr.value=null;return}let _=new Set;for(let I of b)if(I.kind==="node")_.add(I.id.slice(5));wr.value=_.size>0?_:null},[n,b]),q(()=>()=>{wr.value=null},[]);let v=Math.min(i,Math.max(0,b.length-1)),k=oe((_)=>{if(_.key==="ArrowDown")_.preventDefault(),s((I)=>Math.min(I+1,b.length-1));else if(_.key==="ArrowUp")_.preventDefault(),s((I)=>Math.max(I-1,0));else if(_.key==="Enter"){if(_.preventDefault(),b[v])b[v].action()}else if(_.key==="Escape")_.preventDefault(),_.stopPropagation(),e()},[b,v,e]);return q(()=>{let _=p.current;if(!_)return;_.children[v]?.scrollIntoView({block:"nearest"})},[v]),q(()=>{s(0)},[n]),r("div",{class:"command-palette-backdrop",onMouseDown:e,children:r("div",{ref:f,class:"command-palette",role:"dialog","aria-modal":"true","aria-label":"Search and commands",onMouseDown:(_)=>_.stopPropagation(),children:[r("div",{class:"command-palette-search",children:[r("svg",{width:"15",height:"15",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","aria-hidden":"true",children:[r("circle",{cx:"7",cy:"7",r:"4.5"},void 0,!1,void 0,this),r("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),r("input",{ref:d,type:"text",class:"command-palette-input",value:n,onInput:(_)=>o(_.target.value),onKeyDown:k,placeholder:"Search nodes, run actions, jump to…","aria-label":"Search nodes, run actions, jump to"},void 0,!1,void 0,this),r("kbd",{class:"command-palette-esc",children:"esc"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"command-palette-results",ref:p,children:[c==="loading"&&r("div",{class:"command-palette-empty",role:"status",children:"Searching all boards…"},void 0,!1,void 0,this),c==="error"&&r("div",{class:"command-palette-empty",role:"alert",children:"Library search is unavailable."},void 0,!1,void 0,this),b.length===0&&c!=="loading"&&r("div",{class:"command-palette-empty",children:"No matching nodes, boards, or actions"},void 0,!1,void 0,this),b.map((_,I)=>{let w=_.icon,P=I===0&&_.kind==="action"?"Actions":I===x?"Jump to":I===C?"Across boards":null;return r("div",{class:"command-palette-row",children:[P&&r("div",{class:"command-palette-group",children:P},void 0,!1,void 0,this),r("button",{type:"button",class:`command-palette-item${I===v?" selected":""}`,onMouseEnter:()=>s(I),onClick:()=>_.action(),children:[r("span",{class:`command-palette-icon tone-${_.iconTone??"kind"}`,"aria-hidden":"true",children:r(w,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("span",{class:"command-palette-label",children:[_.indices.length>0?dL(_.label,_.indices):_.label,_.description&&r("span",{class:"command-palette-desc",children:[" — ",_.description]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),_.shortcut&&r("kbd",{class:"command-palette-kbd",children:_.shortcut},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},_.id,!0,void 0,this)})]},void 0,!0,void 0,this),r("div",{class:"command-palette-hint",children:[r("span",{children:"↑↓ navigate"},void 0,!1,void 0,this),r("span",{children:"↵ open"},void 0,!1,void 0,this),r("span",{children:"esc close"},void 0,!1,void 0,this),r("span",{children:"type: filter"},void 0,!1,void 0,this),r("span",{class:"command-palette-hint-spacer"},void 0,!1,void 0,this),r("span",{children:Bt("K")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function fT({onClose:e,sourceNodeId:t,wikiRef:n}){let o=D(null),i=D(null),s=D(ae.value).current,a=D(t?H.value.get(t):void 0).current,[l,c]=E(null),[u,d]=E(""),[p,f]=E(""),[m,h]=E(!1);bn(o,!0,{initial:i}),q(()=>{let v=!1;if(t&&!n)de("linkCardChoices","/api/canvas/memory-graph",null).then((k)=>{if(!v){if(c(k),!k)f("Could not load cards. Close and retry.")}});return()=>{v=!0}},[t,n]);let g=Ge.value.filter((v)=>v.id!==s&&v.name.toLowerCase().includes(u.trim().toLowerCase())),y=(l?.nodes??[]).filter((v)=>v.kind==="card"&&v.boardId!==s&&`${v.title} ${Ge.value.find((k)=>k.id===v.boardId)?.name??""}`.toLowerCase().includes(u.trim().toLowerCase())),b=async()=>{if(!n||!a||ae.value!==s)return f("The source board changed. Reopen it before creating the link.");h(!0);let v=await de("createWikiBoard","/api/canvas/boards",null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:n,expectedBoardId:s})});if(!v?.board)return h(!1),f("Could not create the board.");let k=await ln(a.id,{content:typeof a.data.content==="string"?a.data.content:"",expectedBoardId:s,expectedContentRevision:a.contentRevision??0});if(await ol(),h(!1),!k.ok)return f("Board created, but the source changed. Save its Markdown again to resolve the link.");e(),await zt({boardId:v.board.id})},x=async(v,k)=>{if(!t)return;h(!0);let _=await yr(t,k,"references",void 0,{toBoardId:v,expectedBoardId:s});if(h(!1),!_.ok)return f("Could not add the connection. Check the source board and target card, then retry.");e()},C=async(v)=>{let k=Ge.value.find((P)=>P.id===v);if(!k)return f("That board is no longer available.");let _=Zr(),I=Te.value;if(!(await de("createBoardLink","/api/canvas/node",{},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({expectedBoardId:s,type:"board",title:k.name,x:Math.round((_.x-I.x)/I.scale-180),y:Math.round((_.y-I.y)/I.scale-100),width:360,height:200,data:{boardId:v}})})).ok)return f("Could not create the board link.");e()};return r("div",{class:"text-prompt-backdrop",onMouseDown:e,children:r("div",{ref:o,class:"text-prompt board-link-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"board-link-title",onMouseDown:(v)=>v.stopPropagation(),children:[r("h2",{id:"board-link-title",children:n?"Create unresolved board":t?"Connect to a card on another board":"Link to a board"},void 0,!1,void 0,this),n?r("p",{children:["Create “",n,"” and save this link to its board ID?"]},void 0,!0,void 0,this):r("input",{ref:i,type:"search",class:"text-prompt-input","aria-label":t?"Find a card to connect":"Find a board to link",placeholder:t?"Find a board or card…":"Find a board…",value:u,onInput:(v)=>d(v.currentTarget.value)},void 0,!1,void 0,this),p&&r("div",{role:"alert",class:"board-copy-error",children:p},void 0,!1,void 0,this),!n&&r("ul",{class:"board-link-results",children:[t?y.map((v)=>r("li",{children:r("button",{type:"button",disabled:m,onClick:()=>void x(v.boardId,v.cardId),children:[r("span",{children:v.title},void 0,!1,void 0,this),r("small",{children:Ge.value.find((k)=>k.id===v.boardId)?.name??v.boardId},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},v.key,!1,void 0,this)):g.map((v)=>r("li",{children:r("button",{type:"button",onClick:()=>void C(v.id),children:[r("span",{children:v.name},void 0,!1,void 0,this),r("small",{children:[v.nodeCount," nodes"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},v.id,!1,void 0,this)),(t?y.length:g.length)===0&&r("li",{class:"board-copy-status",children:Ge.value.length<=1?"Create another board first, then link it here.":t&&!l?"Loading cards…":"No matches. Try another search."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"text-prompt-actions",children:[n&&r("button",{type:"button",disabled:m,onClick:()=>void b(),children:m?"Creating…":"Create board"},void 0,!1,void 0,this),r("button",{type:"button",onClick:e,children:"Cancel"},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 va={decayType:"reality",rate:"medium",cadenceDays:90,triggers:[],revalidationMethod:""};function Xl({value:e,onChange:t}){return r("div",{class:"lifecycle-fields",children:[r("div",{class:"knowledge-field",children:[r("span",{children:"Why review?"},void 0,!1,void 0,this),r(Mr,{label:"Why review?",value:e.decayType,onChange:(n)=>t({...e,decayType:n}),options:[{value:"reality",label:"Reality · facts change"},{value:"decision",label:"Decision · superseded"},{value:"dependency",label:"Dependency · prerequisites change"},{value:"relevance",label:"Relevance · task changes"}]},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"knowledge-field",children:[r("span",{children:"Review frequency"},void 0,!1,void 0,this),r(Mr,{label:"Review frequency",value:e.rate,onChange:(n)=>t({...e,rate:n}),options:[{value:"fast",label:"Fast · at use"},{value:"medium",label:"Medium · on a cadence"},{value:"slow",label:"Slow · on resume"},{value:"durable",label:"Durable · no passive expiry"}]},void 0,!1,void 0,this)]},void 0,!0,void 0,this),e.rate==="medium"&&r("label",{children:["Cadence in days",r("input",{type:"number",min:"1",max:"36500",required:!0,value:e.cadenceDays??"",onInput:(n)=>t({...e,cadenceDays:n.currentTarget.value?Number(n.currentTarget.value):void 0})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("details",{class:"lifecycle-triggers",children:[r("summary",{children:"Additional review triggers"},void 0,!1,void 0,this),r("label",{children:["Also review when · one trigger per line",r("textarea",{value:e.triggers.join(`
|
|
388
|
+
`),onInput:(n)=>t({...e,triggers:n.currentTarget.value.split(`
|
|
389
|
+
`)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("p",{children:"Source changes, contradictions and superseding decisions are observed through explicit relations. Other triggers describe what the reviewer should check."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("label",{children:["How to check",r("input",{required:!0,pattern:".*\\S.*",value:e.revalidationMethod,onInput:(n)=>t({...e,revalidationMethod:n.currentTarget.value})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var Jl=(e)=>({...e,triggers:e.triggers.map((t)=>t.trim()).filter(Boolean)});function mT(){let e=Ct.value;if(!e||ut.value||ae.value!==e.boardId||wt!==e.incarnation||!H.value.has(e.nodeId))return null;return r(fL,{target:e},`${e.boardId}:${e.nodeId}:${e.incarnation}`,!1,void 0,this)}function fL({target:e}){let t=Oe.value,n=D(null),o=D(0),[i,s]=E(null),[a,l]=E(!1),[c,u]=E(va),[d,p]=E("retain"),[f,m]=E(""),[h,g]=E(!1),[y,b]=E(!1),[x,C]=E(""),[v,k]=E(!1),[_,I]=E(!1),w=H.value.get(e.nodeId),P=Ym(e.boardId,e.nodeId),L=Jn(e.nodeId)??i?.qualification,N=`/api/canvas/node/${encodeURIComponent(e.nodeId)}`,Y=()=>ae.value===e.boardId&&wt===e.incarnation,B=()=>Oe.value&&Y()&&Ct.value===e,J=async()=>{if(!B())return;let A=tn,te=++o.current,M=await de("lifecycle",`${N}/lifecycle?board=${encodeURIComponent(e.boardId)}`,null);if(!B()||A!==tn||te!==o.current)return;if(M?.ok!==!0){C("Could not load lifecycle. Retry before reviewing.");return}s(M),I(!1),C(""),l(M.lifecycleSource==="card"),u(M.lifecycle??va),m(""),g(!1)};q(()=>{let A=document.activeElement,te=n.current;if(Oe.value)te?.querySelector("button")?.focus({preventScroll:!0}),$t(e.nodeId,{recordHistory:!1});return()=>{if(te?.contains(document.activeElement)&&Y()&&A instanceof HTMLElement&&A.isConnected)A.focus({preventScroll:!0})}},[]),Me(()=>{if(!t&&n.current?.contains(document.activeElement))document.querySelector('button[aria-label="Settings"]')?.focus({preventScroll:!0})},[t]),q(()=>{if(!t)return;if(Kt(),!i||_)J()},[t]);let X=async(A,te)=>{if(!B()||y||_)return!1;b(!0),C("");let M=await de("lifecycleWrite",`${N}${A}`,null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...te,expectedBoardId:e.boardId})});if(!Y()||Ct.value!==e)return b(!1),!1;if(!M?.ok)return b(!1),C("Not saved. The card or its sources may have changed. Reload and check the current evidence before retrying."),!1;return I(!0),await J(),await Kt(),b(!1),Y()&&Ct.value===e},V=async(A,te)=>{if(!i)return!1;if(te&&["retain","revise","externalize"].includes(A)&&(!f.trim()||Ym(e.boardId,e.nodeId)||w?.contentRevision!==i.contentRevision||x))return!1;let M=await X("/review",{outcome:A,evidence:f,applied:te,expectedContentRevision:i.contentRevision,expectedSources:i.qualification.observations});if(M){if(k(te&&A==="retire"),te&&A==="retire")Ts.value=e;m(""),g(!1)}return M},ee=w?.data.provenance,he=(A)=>A?new Date(A).toLocaleString():"Unknown";return r("div",{class:"lifecycle-dock",hidden:!t,style:t?void 0:{display:"none"},onKeyDown:(A)=>{if(!B())return;if(A.stopPropagation(),A.key==="Escape")A.preventDefault(),Ct.value=null},children:r("div",{ref:n,class:"knowledge-dialog lifecycle-dialog",role:"dialog","aria-label":"Review card",children:[r("header",{children:[r("h2",{children:["Review card · ",String(w?.data.title??"Card")]},void 0,!0,void 0,this),r("button",{type:"button","aria-label":"Close review",onClick:()=>{if(!B())return;Ct.value=null},children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x&&r("p",{role:"alert",children:x},void 0,!1,void 0,this),!i&&x&&r("button",{type:"button","aria-disabled":y,onClick:()=>{if(!y)J()},children:"Reload and recheck"},void 0,!1,void 0,this),Li.value&&r("p",{role:"status",children:"Live qualification unavailable. Last loaded evidence is shown."},void 0,!1,void 0,this),!i?r("p",{children:"Loading review…"},void 0,!1,void 0,this):r(be,{children:[i.retired?r("div",{class:"lifecycle-review",children:[r("p",{children:"This card is retired. Restoring it does not mark it checked."},void 0,!1,void 0,this),r("button",{type:"button","aria-disabled":y||_,onClick:()=>void X("/lifecycle/restore",{evidence:"Restored by the human reviewer."}),children:"Restore card"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):r(be,{children:[r("h3",{children:"Why review?"},void 0,!1,void 0,this),L?.due?r("p",{class:"lifecycle-warning",children:["⧗"," ",L.reasons.some((A)=>A.startsWith("Content changed"))?"This card changed since its last check.":"This card needs a fresh check."]},void 0,!0,void 0,this):r("p",{children:["Last checked: ",he(i.lastValidation?.when)]},void 0,!0,void 0,this),L?.reasons.length?r("p",{children:L.reasons.join(" ")},void 0,!1,void 0,this):null,(L?.sources??i.qualification.sources).map((A)=>r("div",{class:"lifecycle-warning",children:["⧗ Source needs a check: ",A.title,!A.unavailable&&r("button",{type:"button",onClick:()=>{if(!B())return;Ct.value=null,zt(A)},children:"Open source →"},void 0,!1,void 0,this)]},`${A.boardId}:${A.cardId}`,!0,void 0,this)),r("form",{class:"lifecycle-quick-review",noValidate:!0,onSubmit:(A)=>{A.preventDefault(),V("retain",!0).then((te)=>{if(te&&B())Ct.value=null})},children:[r("p",{children:"Check the card and its sources before confirming."},void 0,!1,void 0,this),P&&r("p",{role:"status",children:"Save the card's edits, then reload and recheck before validating."},void 0,!1,void 0,this),r("label",{children:["What did you check?",r("textarea",{required:!0,rows:2,placeholder:"A short note or source link",value:f,onInput:(A)=>m(A.currentTarget.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"lifecycle-review-actions",children:[r("button",{type:"submit","aria-disabled":y||_||!!x||P||!f.trim()||w?.contentRevision!==i.contentRevision,children:"Checked, still correct"},void 0,!1,void 0,this),r("button",{type:"button","aria-disabled":y,onClick:()=>{if(!B()||y)return;Ct.value=null},children:"Not now"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),(x||w?.contentRevision!==i.contentRevision)&&r("div",{role:"status",children:[r("p",{children:"Reload, check the current card and sources, then write a fresh note."},void 0,!1,void 0,this),r("button",{type:"button","aria-disabled":y,onClick:()=>{if(!y)J()},children:"Reload and recheck"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("details",{class:"lifecycle-advanced",children:[r("summary",{children:"Settings and history"},void 0,!1,void 0,this),r("button",{type:"button","aria-disabled":y,onClick:()=>{if(!y)J()},children:"Reload lifecycle and source revisions"},void 0,!1,void 0,this),r("p",{class:"lifecycle-category",children:[i.category?`${i.category.glyph} ${i.category.name} · from ${i.categorySourceFolder}`:"No inherited category"," ","· category belongs to the folder"]},void 0,!0,void 0,this),r("form",{onSubmit:(A)=>{A.preventDefault(),X("/lifecycle",{lifecycleOverride:a?Jl(c):null})},children:[r("label",{children:[r("input",{type:"checkbox",checked:a,onChange:(A)=>l(A.currentTarget.checked)},void 0,!1,void 0,this)," ","Set a card lifecycle override"]},void 0,!0,void 0,this),a?r(Xl,{value:c,onChange:u},void 0,!1,void 0,this):r("p",{children:["Inherit from ",i.lifecycleSourceFolder??"the folder"," · ",i.lifecycle?.rate??"unknown"]},void 0,!0,void 0,this),r("button",{type:"submit","aria-disabled":y||_,children:"Save lifecycle"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"lifecycle-clocks",children:[r("div",{class:"is-read",children:[r("span",{children:"Read by agent"},void 0,!1,void 0,this),r("strong",{children:he(i.qualification.lastReadAt)},void 0,!1,void 0,this),r("small",{children:"Delivery only, not validation"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{children:[r("span",{children:"Content changed"},void 0,!1,void 0,this),r("strong",{children:he(i.qualification.contentChangedAt)},void 0,!1,void 0,this),r("small",{children:["Revision ",i.contentRevision]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("div",{children:[r("span",{children:"Last validated"},void 0,!1,void 0,this),r("strong",{children:he(i.lastValidation?.when)},void 0,!1,void 0,this),r("small",{children:i.lastValidation?.evidence??"No evidence-backed validation"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{children:[r("span",{children:"Task relevance"},void 0,!1,void 0,this),r("strong",{children:i.qualification.relevance==="card-pinned"?"Card pinned":i.qualification.relevance==="board-pinned"?"Board pinned":"Not explicitly selected"},void 0,!1,void 0,this),r("small",{children:"Curation, not a truth claim"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("p",{children:"Reading, refreshing and regeneration never count as validating."},void 0,!1,void 0,this),L?.due&&r("p",{class:"lifecycle-warning",children:["⧗ review due · ",L.reasons.join(" ")]},void 0,!0,void 0,this),(L?.sources??i.qualification.sources).map((A)=>r("div",{class:"lifecycle-warning",children:["⧗ ",A.title," · ",A.reasons.join(" "),A.observedAt&&r("span",{children:[" · observed ",he(A.observedAt)]},void 0,!0,void 0,this),A.observedRevision!==void 0&&r("span",{children:[" · source revision ",A.observedRevision]},void 0,!0,void 0,this),!A.unavailable&&r("button",{type:"button",onClick:()=>{if(!B())return;Ct.value=null,zt(A)},children:"Open source →"},void 0,!1,void 0,this)]},`${A.boardId}:${A.cardId}`,!0,void 0,this)),w?.contentRevision!==i.contentRevision&&r("p",{role:"alert",children:"Content changed while this review was open. Reload and check it before applying."},void 0,!1,void 0,this),i.retired?r("div",{class:"lifecycle-review",children:[r("p",{role:"status",children:"Retired from active context. Content and history remain."},void 0,!1,void 0,this),r("label",{children:["Restoration note",r("input",{value:f,onInput:(A)=>m(A.currentTarget.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("button",{type:"button","aria-disabled":y||_,onClick:()=>void X("/lifecycle/restore",{evidence:f||"Restored by the human reviewer."}).then((A)=>{if(A)k(!1)}),children:v?"Undo retirement":"Restore to active context"},void 0,!1,void 0,this),r("p",{children:"Restore is recorded and does not validate."},void 0,!1,void 0,this)]},void 0,!0,void 0,this):r("form",{class:"lifecycle-review",onSubmit:(A)=>{A.preventDefault(),V(d,h)},children:[r("label",{children:["Outcome",r("select",{value:d,onChange:(A)=>p(A.currentTarget.value),children:[r("option",{value:"retain",children:"Retain"},void 0,!1,void 0,this),r("option",{value:"revise",children:"Revise"},void 0,!1,void 0,this),r("option",{value:"externalize",children:"Externalize"},void 0,!1,void 0,this),r("option",{value:"retire",children:"Retire from active context"},void 0,!1,void 0,this),r("option",{value:"unresolved",children:"Unresolved"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("p",{children:"Uses the check note above. Applied retain, revise and externalize require evidence."},void 0,!1,void 0,this),r("label",{children:[r("input",{type:"checkbox",checked:h,onChange:(A)=>g(A.currentTarget.checked)},void 0,!1,void 0,this)," ","I applied this outcome and checked the content and sources"]},void 0,!0,void 0,this),r("p",{children:"Revise and externalize record work already performed. They do not edit or execute anything."},void 0,!1,void 0,this),r("button",{type:"submit","aria-disabled":y||_||h&&["retain","revise","externalize"].includes(d)&&(!f.trim()||P||!!x||w?.contentRevision!==i.contentRevision),children:"Record review"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ee?.recipe&&r("section",{children:[r("h3",{children:"Recipe"},void 0,!1,void 0,this),r("p",{children:[ee.recipe.tool," · ",ee.recipe.prompt]},void 0,!0,void 0,this),r("button",{type:"button","aria-disabled":y,onClick:async()=>{if(!B()||y)return;b(!0);let A=await pa(`Refresh this board using the recorded recipe for ${e.boardId}/${e.nodeId}. Review the recipe before running it. Tool: ${ee.recipe.tool}
|
|
390
|
+
Input: ${JSON.stringify(ee.recipe.input??null)}
|
|
391
|
+
Prompt: ${ee.recipe.prompt}
|
|
392
|
+
Regeneration is not validation. Preserve source observations and report evidence separately.`);b(!1),C(A?"Recipe request sent. No tool was executed by Canvas.":"Could not send the request. No tool was executed.")},children:"Ask agent to refresh this board"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("section",{children:[r("h3",{children:"Review history"},void 0,!1,void 0,this),i.records.length===0&&r("p",{children:"No reviews recorded."},void 0,!1,void 0,this),[...i.records].reverse().map((A)=>r("div",{class:"lifecycle-history",children:[r("strong",{children:[A.outcome,!A.applied?" · not applied":""]},void 0,!0,void 0,this),r("span",{children:[he(A.when)," · ",A.who.actor," · ",A.who.source]},void 0,!0,void 0,this),r("p",{children:A.evidence||"No evidence"},void 0,!1,void 0,this)]},A.id,!0,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)},void 0,!1,void 0,this)}function hT(){let[e,t]=E(null),n=oe((a,l)=>{a.preventDefault(),a.stopPropagation(),t({kind:"node",x:a.clientX,y:a.clientY,nodeId:l})},[]),o=oe((a,l,c)=>{a.preventDefault(),a.stopPropagation(),t({kind:"canvas",x:a.clientX,y:a.clientY,canvasX:l,canvasY:c})},[]),i=oe((a,l)=>{a.preventDefault(),a.stopPropagation(),t({kind:"edge",x:a.clientX,y:a.clientY,edgeId:l})},[]),s=oe(()=>t(null),[]);return Me(()=>{if(!e)return;let a=()=>t(null),l=(c)=>{if(c.key==="Escape")t(null)};return document.addEventListener("click",a),document.addEventListener("keydown",l),()=>{document.removeEventListener("click",a),document.removeEventListener("keydown",l)}},[e]),{menu:e,openNodeMenu:n,openCanvasMenu:o,openEdgeMenu:i,closeMenu:s}}var mL="#4bbcFF",hL=[{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 gT({menu:e,onClose:t}){let n;if(e.kind==="node"){let l=H.value.get(e.nodeId);if(!l)return null;n=wL(l)}else if(e.kind==="edge"){let l=e.edgeId,c=et.value.get(l),u=wt;n=[{label:"Relation kind…",render:()=>r("label",{class:"relation-kind-control",children:["Kind"," ",r("select",{"aria-label":"Relation kind",value:c?Gn(c):"",onChange:(d)=>{let p=d.currentTarget.value;if(p==="__custom__")t(),Dn("Relation kind","An open kind, such as supports").then((f)=>{if(f?.trim()&&u===wt)Bi(l,{kind:f.trim()})});else Bi(l,{kind:p})},children:[[...new Set([...(Yn()?.relationVocabulary??ql).map((d)=>d.kind),...c?[Gn(c)]:[]])].map((d)=>r("option",{value:d,children:d},d,!1,void 0,this)),r("option",{value:"__custom__",children:"Custom kind…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},{label:c?.reason?"Edit why…":"Add why…",action:()=>{Dn("Why this relation exists","One sentence explaining the link",{initial:c?.reason??"",allowEmpty:!0,confirm:"Save"}).then((d)=>{if(d!==null&&u===wt)Bi(l,{reason:d})})}},{label:c?.label?`Edit label “${c.label.slice(0,18)}${c.label.length>18?"…":""}”`:"Add label…",action:()=>{Dn("Edge label (empty clears it)","label text",{initial:c?.label??"",allowEmpty:!0,confirm:"Save"}).then((d)=>{if(d===null||u!==wt)return;Bi(l,{label:d})})}},{separator:!0},...["flow","depends-on","relation","references"].map((d)=>({label:`${c?.type===d?"✓":" "} ${d}`,action:()=>void Bi(l,{type:d})})),{separator:!0},...["solid","dashed","dotted"].map((d)=>({label:`${(c?.style??"solid")===d?"✓":" "} ${d}`,action:()=>void Bi(l,{style:d})})),{separator:!0},{label:"Delete edge",danger:!0,action:()=>void gu(l)}]}else n=xL(e.canvasX,e.canvasY);let o=new Map,i=n.some((l)=>l.render)?n.length*32+168:n.length*32+8,s=Math.min(e.x,Math.max(12,window.innerWidth-240)),a=Math.min(e.y,Math.max(12,window.innerHeight-i));return r("div",{class:"context-menu",style:{position:"fixed",left:`${s}px`,top:`${a}px`,zIndex:1e4},onPointerDown:(l)=>l.stopPropagation(),onClick:(l)=>l.stopPropagation(),children:n.map((l)=>{let c=l.separator?"separator":l.render?"custom":`${l.label??"item"}:${l.shortcut??""}`,u=(o.get(c)??0)+1;o.set(c,u);let d=`${c}:${u}`;if(l.separator)return r("div",{class:"context-menu-separator"},d,!1,void 0,this);if(l.render)return r("div",{class:"context-menu-custom",children:l.render(t)},d,!1,void 0,this);return r("button",{type:"button",class:`context-menu-item${l.danger?" is-danger":""}`,onClick:()=>{l.action?.(),t()},children:[r("span",{class:"context-menu-label",children:l.label},void 0,!1,void 0,this),l.shortcut&&r("span",{class:"context-menu-shortcut",children:l.shortcut},void 0,!1,void 0,this)]},d,!0,void 0,this)})},void 0,!1,void 0,this)}function gL(e){return(typeof e.data.path==="string"?e.data.path.trim():"")||null}function Qd(e){let t=e.trim().toLowerCase(),n=t.match(/^#([0-9a-f]{3})$/);if(n){let[o,i,s]=n[1].split("");return`#${o}${o}${i}${i}${s}${s}`}return t}function yT(e){if(typeof e.data.color!=="string"||!e.data.color.trim())return null;return Qd(e.data.color)}function yL(e){let t=yT(e);return t&&/^#[0-9a-f]{6}$/.test(t)?t:Qd(mL)}function bg(e,t){let n=t?Qd(t):null;cn(e.id,{data:{...e.data,color:n}}),ln(e.id,{data:{color:n}})}function vL(e,t){let n=yT(e);return r("div",{class:"context-menu-section",children:[r("div",{class:"context-menu-section-header",children:[r("span",{class:"context-menu-section-label",children:"Group color"},void 0,!1,void 0,this),r("button",{type:"button",class:"context-menu-reset",onClick:()=>{bg(e,null),t()},children:"Theme default"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"context-menu-color-grid",children:hL.map((o)=>{let i=Qd(o.value);return r("button",{type:"button",class:`context-menu-color-swatch${n===i?" active":""}`,"aria-label":`Set group color to ${o.label}`,style:{"--swatch-color":o.value},onClick:()=>{bg(e,o.value),t()},children:[r("span",{class:"context-menu-color-dot",style:{"--swatch-color":o.value}},void 0,!1,void 0,this),r("span",{children:o.label},void 0,!1,void 0,this)]},o.value,!0,void 0,this)})},void 0,!1,void 0,this),r("label",{class:"context-menu-color-custom",children:[r("span",{children:"Custom"},void 0,!1,void 0,this),r("input",{type:"color",class:"context-menu-color-input","aria-label":"Custom group color",value:yL(e),onClick:(o)=>o.stopPropagation(),onInput:(o)=>{bg(e,o.currentTarget.value),t()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function wg(e,t,n,o){return{x:e-n/2,y:t-o/2}}function bL(e,t){return e.trim().replace(/[?#].*$/,"").split("/").filter(Boolean).at(-1)||t}async function xg(e){let t=await Dn(e.promptLabel,e.placeholder??"");if(!t)return;let n=t.trim();if(!n)return;let o=wg(e.canvasX,e.canvasY,e.width,e.height);if(!(await No({type:e.type,...e.type!=="webpage"?{title:bL(n,e.titleFallback)}:{},content:n,x:o.x,y:o.y,width:e.width,height:e.height})).ok)console.error(`[canvas-menu] ${e.errorMessage}`)}function xL(e,t){return[{label:"New note",action:()=>{let i=wg(e,t,520,360);No({type:"markdown",title:"New note",x:i.x,y:i.y,width:520,height:360})}},{label:"Open webpage...",action:()=>{xg({promptLabel:"Webpage URL:",type:"webpage",canvasX:e,canvasY:t,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:()=>{xg({promptLabel:"Workspace path or absolute file path:",type:"file",canvasX:e,canvasY:t,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:()=>{xg({promptLabel:"Image path, URL, or data URI:",type:"image",canvasX:e,canvasY:t,width:480,height:360,placeholder:"artifacts/architecture.png",titleFallback:"Image",errorMessage:"Could not create image node. Check the image source and try again."})}},{label:"Link to board…",action:()=>window.dispatchEvent(new CustomEvent("pmx-open-board-link"))},{separator:!0},{label:"New group",action:()=>{let i=wg(e,t,600,400);Ps({title:"Group",x:i.x,y:i.y,width:600,height:400})}}]}function wL(e){let t=[],n=gL(e);if(Oe.value)t.push({label:"Review",action:()=>Is(e.id)});if(t.push({label:"Focus",action:()=>$t(e.id)}),t.push({label:"Rename…",action:()=>{Dn("Rename node","Node title",{initial:typeof e.data.title==="string"?e.data.title:"",confirm:"Save"}).then((c)=>{if(!c?.trim())return;ln(e.id,{title:c.trim()})})}}),Wa.has(e.type))t.push({label:"Expand",shortcut:"⤢",action:()=>xo(e.id)});if(t.push({label:e.collapsed?"Expand":"Collapse",action:()=>Fi(e.id)}),Yu(e))t.push({label:"Open in new tab",action:()=>void Qu(e)});let o=kt.value.has(e.id);t.push({label:o?"Unpin from context":"Pin as context",action:()=>lo(e.id)}),t.push({label:e.pinned?"Unlock position":"Lock position (no auto-arrange)",action:()=>{let c=!e.pinned;cn(e.id,{pinned:c}),ln(e.id,{pinned:c}),un()}});let i=al.value;if(i&&i.from!==e.id){let c=H.value.get(i.from),u=c?(c.data.title||c.id).slice(0,20):i.from;t.push({label:`Connect from "${u}"`,action:()=>{yr(i.from,e.id,"relation"),al.value=null}})}t.push({label:i?"Connect from here (replace)":"Connect from here",action:()=>{al.value={from:e.id}}}),t.push({label:"Connect to a card on another board…",action:()=>window.dispatchEvent(new CustomEvent("pmx-open-board-link",{detail:{sourceNodeId:e.id}}))});let s=Array.from(et.value.values()).filter((c)=>c.from===e.id||!c.toBoardId&&c.to===e.id).length;if(s>0)t.push({label:`${s} edge${s!==1?"s":""} connected`});if(t.push({separator:!0}),(e.type==="markdown"||e.type==="file"||e.type==="image")&&n)t.push({label:"Open in browser",action:()=>{window.open(`/artifact?path=${encodeURIComponent(n)}`,"_blank","noopener")}}),t.push({label:"Copy path",action:()=>{navigator.clipboard.writeText(n)}});if(e.type==="mcp-app"||e.type==="json-render"||e.type==="graph")if(e.data.chartConfig){let c=e.data.chartConfig.title||"chart";t.push({label:"Copy chart data",action:()=>{navigator.clipboard.writeText(JSON.stringify(e.data.chartConfig,null,2))}})}else{let c=e.data.url;if(t.push({label:"Open in browser",action:()=>{if(c)window.open(c,"_blank")}}),t.push({label:"Focus in TUI",action:()=>ak("mcp-app-focus",{url:c})}),e.type==="json-render"||e.type==="graph")t.push({label:"Copy spec",action:()=>{navigator.clipboard.writeText(JSON.stringify(e.data.spec??e.data.graphConfig??{},null,2))}})}if(e.type==="webpage"){let c=typeof e.data.url==="string"?e.data.url:"";t.push({label:"Refresh webpage",action:()=>{fu(e.id)}}),t.push({label:"Open in browser",action:()=>{if(c)window.open(c,"_blank","noopener")}}),t.push({label:"Copy URL",action:()=>{if(c)navigator.clipboard.writeText(c)}})}if(e.type==="group"){let c=e.data.children??[];if(t.push({separator:!0}),t.push({render:(u)=>vL(e,u)}),c.length>0)t.push({label:`Ungroup (${c.length} node${c.length!==1?"s":""})`,action:()=>{Qr(e.id),Ns(e.id)}})}let a=typeof e.data.parentGroup==="string"?e.data.parentGroup:null,l=a?H.value.get(a):void 0;if(l&&l.type==="group"){let c=typeof l.data.title==="string"&&l.data.title?l.data.title:"frame",u=Array.isArray(l.data.children)?l.data.children.filter((d)=>d!==e.id):[];t.push({label:`Remove from “${c}”`,action:()=>{hu(l.id,u)}})}return t.push({separator:!0}),t.push({label:e.type==="group"?"Delete frame (children stay)":"Delete",danger:!0,action:()=>{Vr(e.id)}}),t}function vT({onClose:e}){let t=D(null),[n,o]=E("Bug report"),[i,s]=E(""),[a,l]=E("");return bn(t,!0),r("div",{class:"text-prompt-backdrop feedback-backdrop",onPointerDown:e,children:r("form",{ref:t,class:"text-prompt feedback-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"feedback-title","aria-describedby":"feedback-privacy",action:"https://github.com/pskoett/pmx-canvas/issues/new",method:"get",target:"_blank",rel:"noopener noreferrer",onPointerDown:(c)=>c.stopPropagation(),onKeyDown:(c)=>{if(c.stopPropagation(),c.key==="Escape")c.preventDefault(),e()},children:[r("div",{id:"feedback-title",class:"text-prompt-title",children:"Bug and feedback"},void 0,!1,void 0,this),r("p",{id:"feedback-privacy",class:"feedback-note",children:"Opens a draft issue in pskoett/pmx-canvas. Review and submit it on GitHub using your account. Issues are public. Only what you enter below is included; no board contents, workspace paths, screenshots, or logs are attached."},void 0,!1,void 0,this),r("div",{class:"feedback-field",children:[r("span",{children:"Feedback type"},void 0,!1,void 0,this),r(Mr,{label:"Feedback type",value:n,onChange:o,options:["Bug report","Feature request","General feedback"].map((c)=>({value:c,label:c}))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("label",{children:["Title",r("input",{class:"text-prompt-input",name:"title",required:!0,maxLength:120,value:i,onInput:(c)=>s(c.currentTarget.value),placeholder:"A short summary"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("label",{children:["Description",r("textarea",{class:"text-prompt-input",required:!0,maxLength:1200,rows:6,value:a,onInput:(c)=>l(c.currentTarget.value),placeholder:"What happened, what you expected, and steps to reproduce — or describe your idea."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("input",{type:"hidden",name:"body",value:`## ${n}
|
|
393
|
+
|
|
394
|
+
${a.trim()}`},void 0,!1,void 0,this),r("div",{class:"text-prompt-actions",children:[r("button",{type:"button",class:"text-prompt-cancel",onClick:e,children:"Cancel"},void 0,!1,void 0,this),r("button",{type:"submit",class:"text-prompt-confirm",disabled:!i.trim()||!a.trim(),children:["Continue on GitHub ",r(oi,{size:14},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,!1,void 0,this)}function Yl(e,t){console.error(`[tool-rail] ${e} failed`,t)}function ss(e){let t={image:{message:"Image URL (https://… or data:image/…)",placeholder:"https://example.com/diagram.png"},file:{message:"Workspace file path",placeholder:"src/server/server.ts"},webpage:{message:"Page URL",placeholder:"https://example.com"}};Dn(t[e].message,t[e].placeholder).then((n)=>{if(!n)return;Eo({type:e,content:n}).catch((o)=>Yl(`create ${e}`,o))})}function to({label:e,shortcut:t,detail:n,ariaLabel:o,active:i,menuOpen:s,onClick:a,btnRef:l,children:c}){let[u,d]=E(null),p=(h)=>{let g=h.currentTarget.getBoundingClientRect();d({left:g.right+10,top:g.top+g.height/2})},f=()=>d(null),m=o??(t?`${e} (${t})`:n?`${e} (${n})`:e);return r(be,{children:[r("button",{ref:l,type:"button",class:`rail-btn${i?" active":""}`,"aria-label":m,"aria-pressed":i===void 0?void 0:i,onClick:(h)=>{f(),a(h)},onPointerEnter:p,onPointerLeave:f,onFocus:p,onBlur:f,children:c},void 0,!1,void 0,this),u&&!s&&r("span",{class:"toolbar-tooltip rail-tooltip",role:"tooltip","data-testid":"rail-tooltip",style:{left:`${u.left}px`,top:`${u.top}px`},children:[r("span",{class:"toolbar-tooltip-label",children:e},void 0,!1,void 0,this),(t||n)&&r("span",{class:"toolbar-tooltip-meta",children:[t&&r("kbd",{class:"toolbar-tooltip-shortcut",children:t},void 0,!1,void 0,this),n&&r("span",{children:n},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 rr({label:e,description:t,hint:n,beta:o,toggle:i=o,checked:s,disabled:a,onClick:l}){let c=hy(),[u,d]=E(null),p=(m)=>d(m.currentTarget.getBoundingClientRect()),f=()=>d(null);return r(be,{children:[r("button",{type:"button",role:s===void 0?"menuitem":"menuitemcheckbox","aria-label":o?`${e} (Beta)`:e,"aria-checked":s,"aria-describedby":u?c:void 0,class:"toolbar-menu-item","aria-disabled":a||void 0,onPointerEnter:p,onPointerLeave:f,onFocus:p,onBlur:f,onClick:()=>{if(a)return;f(),l()},children:[r("span",{class:"settings-item-label",children:[e," ",o&&r("span",{class:"beta-tag",children:"Beta"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i?r("span",{class:`settings-switch${s?" is-on":""}`,"aria-hidden":"true"},void 0,!1,void 0,this):n?r("span",{class:"toolbar-menu-hint",children:n},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),u&&r(js,{children:r("span",{id:c,class:"toolbar-tooltip settings-tooltip",role:"tooltip",ref:(m)=>{if(!m)return;let h=window.innerWidth-u.right>=m.offsetWidth+20;m.style.left=`${h?u.right+10:Math.max(12,Math.min(u.left,window.innerWidth-m.offsetWidth-12))}px`,m.style.top=`${Math.max(12,Math.min(h?u.top:u.top-m.offsetHeight-8,window.innerHeight-m.offsetHeight-12))}px`},children:[r("span",{class:"toolbar-tooltip-label",children:[e,o?" (Beta)":""]},void 0,!0,void 0,this),r("span",{class:"toolbar-tooltip-body",children:t},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 bT({minimapVisible:e,onToggleMinimap:t,snapshotOpen:n,onToggleSnapshot:o,snapshotBtnRef:i,onOpenPalette:s,onOpenShortcuts:a,annotationTool:l,onSetAnnotationTool:c}){let u=Wn.value,d=Ls.value,p=Array.from(H.value.values()).filter((V)=>V.type==="trace").length,f=et.value.size,[m,h]=E(!1),[g,y]=E(!1),[b,x]=E(!1),C=async(V)=>{if(g||!Wr.value)return;y(!0),x(!1);try{let ee=await de("saveWorkspaceSettings","/api/canvas/settings",{ok:!1},{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({[V]:!Wr.value[V]})});x(ee.ok!==!0)}finally{y(!1)}},[v,k]=E(null),[_,I]=E(null),w=D(null),P=D(null),L=(V)=>{if(v){k(null);return}let ee=V.currentTarget.getBoundingClientRect();I({bottom:ee.bottom,right:ee.right}),k("settings")},N=(V)=>()=>{k(null),i.current?.focus(),V()},Y=_?{position:"fixed",left:`${_.right+8}px`,bottom:`${Math.max(10,window.innerHeight-_.bottom)}px`,top:"auto",right:"auto"}:void 0;Me(()=>{if(!v)return;let V=(he)=>{if(w.current&&he.target instanceof Node&&!w.current.contains(he.target))k(null)},ee=(he)=>{if(he.key==="Escape")he.preventDefault(),he.stopPropagation(),k(null),i.current?.focus({preventScroll:!0})};return document.addEventListener("pointerdown",V),document.addEventListener("keydown",ee,!0),()=>{document.removeEventListener("pointerdown",V),document.removeEventListener("keydown",ee,!0)}},[v]);let B=(V)=>{Yd(),document.documentElement.setAttribute("data-theme",V),sa(),Qt.value=V,du(V),k(null)},J=sh(Qt.value),X=(V,ee={})=>{qt(`/api/workbench/intent?_ts=${Date.now()}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:V,payload:ee})}).catch((he)=>Yl("sendIntent",he))};return r(be,{children:[r("div",{class:"tool-rail",ref:w,role:"toolbar","aria-label":"Canvas tools","aria-orientation":"vertical",children:[r(to,{label:"Home",ariaLabel:"PMX Canvas — Home",onClick:()=>{k(null),zn(null).catch((V)=>Yl("openHome",V))},children:r("span",{class:"rail-brand",children:r(Au,{size:22},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),!ut.value&&r(be,{children:[r("div",{class:"rail-divider"},void 0,!1,void 0,this),r(to,{label:"Select",shortcut:"V",active:u==="select",onClick:()=>Wn.value="select",children:r(gS,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(to,{label:"Pan",shortcut:"Space",active:u==="pan",onClick:()=>Wn.value="pan",children:r(yS,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(to,{label:"Connect",shortcut:"C",active:u==="connect",onClick:()=>Wn.value="connect",children:r("svg",{width:"15",height:"15",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","aria-hidden":"true",children:[r("circle",{cx:"4",cy:"4",r:"2"},void 0,!1,void 0,this),r("circle",{cx:"12",cy:"12",r:"2"},void 0,!1,void 0,this),r("path",{d:"M5.5 5.5 C 8 8, 8 8, 10.5 10.5"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),r("div",{class:"rail-divider"},void 0,!1,void 0,this),r(to,{label:"Markdown note",shortcut:"M",onClick:()=>void Eo({type:"markdown",title:"New note",width:520,height:360}).catch((V)=>Yl("create markdown",V)),children:r(ti,{size:15},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(to,{label:"Attach files",ariaLabel:"Attach files",detail:"Images (PNG, JPEG, SVG…), Markdown and text/code files. PDF, Word, Excel, PowerPoint and OpenDocument use agent import with review.",onClick:()=>P.current?.click(),children:r(lS,{size:15},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("input",{ref:P,type:"file",hidden:!0,multiple:!0,"aria-label":"Attach files",onChange:(V)=>{let ee=Jt(),he=Te.value;la(Array.from(V.currentTarget.files??[]),(ee.width/2-he.x)/he.scale,(ee.height/2-he.y)/he.scale),V.currentTarget.value=""}},void 0,!1,void 0,this),r(to,{label:"Webpage",shortcut:"W",onClick:()=>ss("webpage"),children:r(Fs,{size:15},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(to,{label:"Group",shortcut:"G",onClick:()=>void Eo({type:"group",title:"Group"}).catch((V)=>Yl("create group",V)),children:r(gm,{size:15},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(to,{label:"Draw",shortcut:"A",active:l==="pen",onClick:()=>c(l==="pen"?null:"pen"),children:r(fS,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(to,{label:"Text note",active:l==="text",onClick:()=>c(l==="text"?null:"text"),children:r(hS,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(to,{label:"Eraser",active:l==="eraser",onClick:()=>c(l==="eraser"?null:"eraser"),children:r(mS,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("div",{class:"rail-divider"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!ut.value&&r(to,{label:"Search & commands",shortcut:Bt("K"),onClick:s,children:r(Eu,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),!ut.value&&r(to,{label:"Arrange",detail:f>0?"graph-aware":"grid",onClick:()=>f>0?Su():ku(),children:r(Tr,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("div",{class:"rail-spacer"},void 0,!1,void 0,this),r("span",{class:"toolbar-menu-anchor",children:[r(to,{label:"Settings",detail:"Appearance, board tools, beta features, and feedback",ariaLabel:"Settings",menuOpen:v!==null,active:v!==null||n,onClick:L,btnRef:i,children:r("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:r("path",{d:"M4 7h9M17 7h3M4 17h3M11 17h9M13 7a2 2 0 1 0 4 0a2 2 0 1 0-4 0M7 17a2 2 0 1 0 4 0a2 2 0 1 0-4 0"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),v==="settings"&&r("div",{class:"toolbar-menu rail-settings-menu",style:Y,role:"menu","aria-label":"Settings",children:[r(rr,{label:"Theme",description:"Choose the canvas appearance. Your choice is saved with the board.",hint:`${Ys[J].label} ›`,onClick:()=>k("theme")},void 0,!1,void 0,this),!ut.value&&r(be,{children:[r(rr,{label:"Snapshots",description:"Save a board checkpoint, compare changes, or restore an earlier version.",onClick:N(o)},void 0,!1,void 0,this),r(rr,{label:"Minimap",description:"Show a small overview of the board. Drag its viewport to move around the canvas.",checked:e,hint:e?"On":"Off",onClick:N(t)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r(rr,{label:"Keyboard shortcuts",description:"See shortcuts for creating cards, selecting, navigating, and editing the canvas.",hint:"?",onClick:N(a)},void 0,!1,void 0,this),r("div",{class:"toolbar-menu-divider",role:"separator"},void 0,!1,void 0,this),r("span",{class:"settings-caption",children:"Beta features · workspace-wide · off by default"},void 0,!1,void 0,this),r(rr,{label:"Agent sessions",beta:!0,checked:xt.value,disabled:!Wr.value||g,description:"Show session chips, tasks, timeline, steering composer, and receipts. Turning off hides these without ending attached agents. Approvals and edit protections remain available. Saved for this workspace.",onClick:()=>void C("agentSessions")},void 0,!1,void 0,this),r(rr,{label:"Knowledge lifecycle",beta:!0,checked:Oe.value,disabled:!Wr.value||g,description:"This turns on context lifecycle, where boards and cards decay over time as their relevance fades. Includes Review, review policies, categories, and due or retired indicators. Turning off hides lifecycle tools without deleting their data or drafts. Saved for this workspace.",onClick:()=>void C("knowledgeLifecycle")},void 0,!1,void 0,this),b&&r("p",{class:"settings-error",role:"alert",children:"Could not save settings. Try again."},void 0,!1,void 0,this),!xt.value&&(da.value.length>0||Co.value.length>0||ns.value.length>0||To.value)&&r(rr,{label:"Agent controls",description:"Review pending approvals, inspect or clear the write scope, or end an existing attachment without enabling the session beta.",onClick:N(()=>eo.value=!0)},void 0,!1,void 0,this),r("div",{class:"toolbar-menu-divider",role:"separator"},void 0,!1,void 0,this),!tt()&&!ut.value&&r(be,{children:[r(rr,{label:"Trace",description:"Show execution traces sent by connected tools. Turning off keeps existing traces. This does not start an agent.",toggle:!0,checked:d,onClick:()=>X("trace-toggle",{enabled:!d})},void 0,!1,void 0,this),(d||p>0)&&r(rr,{label:"Clear trace",description:"Remove recorded execution traces from this board without changing whether trace capture is enabled.",onClick:N(()=>X("trace-clear"))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r(rr,{label:"Send feedback",description:"Report a problem or suggestion. Review the feedback before sending.",onClick:N(()=>h(!0))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),v==="theme"&&r("div",{class:"toolbar-menu",style:Y,role:"menu","aria-label":"Theme",children:[r("button",{type:"button",role:"menuitem",class:"toolbar-menu-item",onClick:()=>k("settings"),children:r("span",{children:"‹ Settings"},void 0,!1,void 0,this)},void 0,!1,void 0,this),ih.map((V)=>r("button",{type:"button",role:"menuitemradio","aria-checked":J===V,class:`toolbar-menu-item${J===V?" active":""}`,onClick:()=>B(V),children:[r("span",{class:"theme-swatch",style:{background:Ys[V].swatchBg},children:r("span",{class:"theme-swatch-dot",style:{background:Ys[V].swatchAccent}},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("span",{children:Ys[V].label},void 0,!1,void 0,this),J===V&&r("span",{class:"toolbar-menu-check","aria-hidden":"true",children:"✓"},void 0,!1,void 0,this)]},V,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),m&&r(vT,{onClose:()=>h(!1)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function xT({onOpenPalette:e}){let t=D(null),n=()=>{Eo({type:"markdown",title:"New note",width:520,height:360}).catch(()=>{})},o=async(i)=>{if(!i||i.length===0)return;let s=Zr(),a=Te.value;await la(Array.from(i),(s.x-a.x)/a.scale,(s.y-a.y)/a.scale)};return r("div",{class:"empty-state","data-testid":"empty-state",children:[r("svg",{class:"empty-state-mark",width:"52",height:"52",viewBox:"0 0 64 64",fill:"none","aria-hidden":"true",children:[r("rect",{x:"8",y:"8",width:"48",height:"48",rx:"7"},void 0,!1,void 0,this),r("rect",{x:"20",y:"20",width:"24",height:"24",rx:"4","stroke-dasharray":"4 4"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"empty-state-title",children:"What would you like to work on?"},void 0,!1,void 0,this),r("div",{class:"empty-state-grid",children:[r("button",{type:"button",class:"empty-state-action",onClick:()=>t.current?.click(),children:[r("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round",class:"tone-warn","aria-hidden":"true",children:[r("path",{d:"M8 10 V2 M8 2 L5 5 M8 2 L11 5"},void 0,!1,void 0,this),r("path",{d:"M2 10 V13 H14 V10"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("span",{class:"empty-state-action-label",children:["Drop files here",r("span",{class:"empty-state-action-description",children:"Bring in the material you want to work with."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("span",{class:"empty-state-action-hint",children:"or pick"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("button",{type:"button",class:"empty-state-action",onClick:()=>ss("webpage"),children:[r(Fs,{size:16,class:"tone-ok"},void 0,!1,void 0,this),r("span",{class:"empty-state-action-label",children:["Paste a link",r("span",{class:"empty-state-action-description",children:"Add a source, reference, or inspiration."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("kbd",{children:Bt("V")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("button",{type:"button",class:"empty-state-action",onClick:n,children:[r(ti,{size:16,class:"tone-accent"},void 0,!1,void 0,this),r("span",{class:"empty-state-action-label",children:["Start a note",r("span",{class:"empty-state-action-description",children:"Write down an idea, then ask your agent to help you develop it."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("kbd",{children:"M"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"empty-state-agent",children:[r("div",{class:"empty-state-agent-title",children:"Or start with your agent"},void 0,!1,void 0,this),r("div",{class:"empty-state-sub",children:"Give your agent a task and ask it to work on this board."},void 0,!1,void 0,this),xt.value&&r("button",{type:"button",class:"empty-state-action is-agent",onClick:()=>void yi(),children:[r(Us,{size:16,class:"tone-purple"},void 0,!1,void 0,this),r("span",{class:"empty-state-action-label",children:"Start agent session"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("button",{type:"button",class:"empty-state-hint",onClick:e,children:["? shortcuts · ",Bt("K")," palette"]},void 0,!0,void 0,this),r("input",{ref:t,type:"file",multiple:!0,hidden:!0,"aria-hidden":"true",tabIndex:-1,onChange:(i)=>{let s=i.currentTarget;o(s.files).finally(()=>{s.value=""})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ir(e){let t=e.target instanceof HTMLElement?e.target:null;return e.key==="Escape"&&!e.defaultPrevented&&!t?.closest('input, textarea, [contenteditable="true"]')&&!document.querySelector('[role="dialog"], [role="menu"], .context-menu, .shortcut-overlay-backdrop')}var wT="From old snapshots";function ep(e){if(!e?.trim())return null;let t=e.split("/").map((n)=>n.trim());if(t.length>8)throw Error("Folders can be nested up to 8 levels.");if(t.some((n)=>!n||n==="."||n===".."||n.length>60))throw Error('Each folder name must be 1–60 characters, and cannot be "." or "..".');return t.join("/")}function Ql(e){return e.split("/").map((t,n,o)=>o.slice(0,n+1).join("/"))}function kT({board:e,folders:t,onClose:n}){let o=D(null),[i,s]=E(e.folder??""),[a,l]=E(""),[c,u]=E(!1),[d,p]=E("");bn(o,!0),q(()=>{let h=(g)=>{if(g.key!=="Escape")return;if(g.preventDefault(),g.stopPropagation(),!c)n()};return window.addEventListener("keydown",h,!0),()=>window.removeEventListener("keydown",h,!0)},[c,n]);let f=a.trim()?[i,a.trim()].filter(Boolean).join("/"):i,m=async()=>{let h;try{if(a.includes("/"))throw Error("Use one folder name; choose its parent above.");h=ep(f)}catch(g){p(g instanceof Error?g.message:String(g));return}if(u(!0),p(""),await vr(e.id,{folder:h}),Ge.value.find((g)=>g.id===e.id)?.folder===h)n();else p("Could not move this board. Try again.");u(!1)};return r("div",{class:"text-prompt-backdrop",onPointerDown:()=>!c&&n(),children:r("div",{ref:o,class:"text-prompt home-folder-dialog",role:"dialog","aria-modal":"true","aria-label":`Move ${e.name}`,onPointerDown:(h)=>h.stopPropagation(),children:[r("div",{class:"text-prompt-title",children:["Move “",e.name,"”"]},void 0,!0,void 0,this),r("p",{class:"home-folder-hint",children:"Choose a folder, or create one inside it. The board keeps its content and links."},void 0,!1,void 0,this),r("fieldset",{class:"home-folder-options",disabled:c,children:[r("legend",{children:"Destination folder"},void 0,!1,void 0,this),["",...t].map((h)=>r("label",{class:"home-folder-option",style:{paddingLeft:`${8+Math.min(h.split("/").length-1,5)*14}px`},children:[r("input",{type:"radio",name:"folder-destination",value:h,checked:i===h,onChange:()=>{s(h),p("")}},void 0,!1,void 0,this),r("span",{children:h||"Home (no folder)"},void 0,!1,void 0,this)]},h,!0,void 0,this))]},void 0,!0,void 0,this),r("label",{class:"home-folder-new",children:["New folder inside ",i||"Home"," ",r("span",{class:"home-folder-hint",children:"(optional)"},void 0,!1,void 0,this),r("input",{class:"text-prompt-input","aria-label":"New folder name",placeholder:"e.g. Decisions",maxLength:60,value:a,disabled:c,onInput:(h)=>{l(h.currentTarget.value),p("")}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"home-folder-hint",children:["Move to: ",r("strong",{children:f||"Home"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),d&&r("p",{role:"alert",children:d},void 0,!1,void 0,this),r("div",{class:"text-prompt-actions",children:[r("button",{type:"button",class:"text-prompt-cancel",disabled:c,onClick:n,children:"Cancel"},void 0,!1,void 0,this),r("button",{type:"button",class:"text-prompt-confirm",disabled:c||f===(e.folder??""),onClick:()=>void m(),children:c?"Moving…":"Move board"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function ST({board:e,onClose:t}){let n=D(null),o=D(null),[i,s]=E(null),[a,l]=E(new Set),[c,u]=E(`${e.name} copy`),[d,p]=E(!0),[f,m]=E(!0),[h,g]=E(!1),[y,b]=E(""),[x,C]=E(!1);return bn(n,!0,{initial:o}),q(()=>{let k=!0;return Ck(e.id).then((_)=>{if(!k)return;if(!_||!Array.isArray(_.cards))return b("Could not load reusable cards. Try again.");s(_),l(new Set(_.cards.filter((I)=>I.reusable).map((I)=>I.id)))}),()=>{k=!1}},[e.id]),r("div",{class:"text-prompt-backdrop",onMouseDown:t,children:r("div",{ref:n,class:"text-prompt board-copy-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"board-copy-title",onMouseDown:(k)=>k.stopPropagation(),children:r("form",{onSubmit:async(k)=>{if(k.preventDefault(),!c.trim()||!i)return;C(!0),b("");let _=await Tk({sourceBoardId:e.id,name:c.trim(),...e.folder?{folder:e.folder}:{},nodeIds:[...a],includeReadme:d,includeStructure:f});if(C(!1),!_)return b("Could not create the board. Try a different name.");if(h)await zn(_.id);t()},children:[r("h2",{id:"board-copy-title",children:["Create from ",e.name]},void 0,!0,void 0,this),r("label",{class:"board-copy-field",children:["Board name",r("input",{ref:o,class:"text-prompt-input",value:c,onInput:(k)=>u(k.currentTarget.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!i&&!y&&r("div",{class:"board-copy-status",role:"status",children:"Loading reusable cards…"},void 0,!1,void 0,this),y&&r("div",{class:"board-copy-error",role:"alert",children:y},void 0,!1,void 0,this),i&&r("fieldset",{class:"board-copy-cards",children:[r("legend",{children:"Cards to copy"},void 0,!1,void 0,this),i.cards.filter((k)=>k.reusable).length===0?r("div",{class:"board-copy-status",children:"No reusable cards on this board."},void 0,!1,void 0,this):i.cards.filter((k)=>k.reusable).map((k)=>r("label",{class:"board-copy-card",children:[r("input",{type:"checkbox",checked:a.has(k.id),onChange:(_)=>{let I=new Set(a);_.currentTarget.checked?I.add(k.id):I.delete(k.id),l(I)}},void 0,!1,void 0,this),r("span",{children:[r("strong",{children:k.title||"Untitled card"},void 0,!1,void 0,this),r("small",{children:k.type},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},k.id,!0,void 0,this))]},void 0,!0,void 0,this),r("div",{class:"board-copy-options",children:[r("label",{children:[r("input",{type:"checkbox",checked:f,onChange:(k)=>m(k.currentTarget.checked)},void 0,!1,void 0,this)," ","Preserve groups and connections"]},void 0,!0,void 0,this),r("label",{children:[r("input",{type:"checkbox",checked:d,disabled:!i?.readmeNodeId,onChange:(k)=>p(k.currentTarget.checked)},void 0,!1,void 0,this)," ","Include README"]},void 0,!0,void 0,this),r("label",{children:[r("input",{type:"checkbox",checked:h,onChange:(k)=>g(k.currentTarget.checked)},void 0,!1,void 0,this)," Open the new board after creating"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("p",{class:"board-copy-note",children:"Only selected cards and structure are copied. Asks, history, and context pins start clear."},void 0,!1,void 0,this),r("div",{class:"text-prompt-actions",children:[r("button",{type:"button",onClick:t,children:"Cancel"},void 0,!1,void 0,this),r("button",{type:"submit",disabled:!i||!c.trim()||x,children:x?"Creating…":"Create board"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function tp({children:e,initiallyCollapsed:t=!1,reveal:n=0}){let o=D(null),[i,s]=E(280),[a,l]=E(400),[c,u]=E(t),d=D(null);return Me(()=>{if(n)u(!1)},[n]),Me(()=>{let p=o.current.closest(".home-memory"),f=p.querySelector(".home-memory-stage"),m=p.closest(".canvas-region"),h=p.querySelector(".home-memory-toolbar"),g=p.querySelector(".home-memory-legend"),y=()=>{m?.style.setProperty("--home-memory-content-top",`${f.getBoundingClientRect().top-(m?.getBoundingClientRect().top??0)}px`),l(Math.max(120,p.clientHeight-h.offsetHeight-g.offsetHeight-160))},b=new ResizeObserver(y);for(let x of[p,f,h,g])b.observe(x);return y(),()=>{b.disconnect(),m?.style.removeProperty("--home-memory-content-top")}},[]),r("div",{ref:o,class:`home-memory-inspector${c?" is-collapsed":""}`,style:c?void 0:{height:Math.min(i,a)},children:[!c&&r("div",{class:"home-memory-inspector-resize",role:"separator",tabIndex:0,"aria-label":"Resize relation details","aria-orientation":"horizontal","aria-controls":"home-memory-details","aria-valuemin":120,"aria-valuemax":a,"aria-valuenow":Math.min(i,a),onKeyDown:(p)=>{if(!["ArrowUp","ArrowDown","Home","End"].includes(p.key))return;p.preventDefault(),s(p.key==="Home"?120:p.key==="End"?a:Math.max(120,Math.min(a,Math.min(i,a)+(p.key==="ArrowUp"?32:-32))))},onPointerDown:(p)=>{if(p.button!==0)return;p.preventDefault(),d.current={id:p.pointerId,y:p.clientY,height:Math.min(i,a)},p.currentTarget.focus({preventScroll:!0}),p.currentTarget.setPointerCapture(p.pointerId)},onPointerMove:(p)=>{let f=d.current;if(f?.id===p.pointerId)s(Math.max(120,Math.min(a,f.height+f.y-p.clientY)))},onPointerUp:()=>{d.current=null},onPointerCancel:()=>{if(d.current)s(d.current.height);d.current=null}},void 0,!1,void 0,this),r("button",{type:"button",class:"home-button home-memory-inspector-toggle","aria-expanded":!c,"aria-controls":"home-memory-details",onClick:()=>u(!c),children:c?"Expand details":"Collapse details"},void 0,!1,void 0,this),r("div",{id:"home-memory-details",children:e},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var go={width:220,height:92};function _T(e,t){let n=e.filter((f)=>f.kind==="board"),o=new Map,i=[],s=new Set,a=new Set;for(let f of n){let m=(f.folder??"").split("/");m.forEach((h,g)=>{a.add(m.slice(0,g+1).join("/"))})}let l=(f,m)=>(f.folder??"")===m||!!m&&!!f.folder?.startsWith(`${m}/`),c=(f,m,h,g)=>{let y=n.filter((B)=>l(B,f)),b=t.has(f),x={path:f,x:m,y:h,width:280,height:72,count:y.length,depth:g,collapsed:b};if(i.push(x),b){for(let B of y)s.add(B.key);return x}let C=y.filter((B)=>(B.folder??"")===f).sort((B,J)=>B.title.localeCompare(J.title)),v=Math.min(3,Math.max(1,Math.ceil(Math.sqrt(C.length))));C.forEach((B,J)=>{let X=B.position??{x:m+24+J%v*(go.width+28),y:h+52+Math.floor(J/v)*(go.height+28)};o.set(B.key,{x:X.x+go.width/2,y:X.y+go.height/2})});let k=h+52+Math.ceil(C.length/v)*(go.height+28),_=C.length?v*(go.width+28)+20:280,I=[...a].filter((B)=>B&&B.slice(0,B.lastIndexOf("/"))===f&&B.includes("/")).sort(),w=20,P=0;for(let B of I){if(w>650)w=20,k+=P+24,P=0;let J=c(B,m+w,k,g+1);w+=J.width+24,P=Math.max(P,J.height),_=Math.max(_,w)}k+=P+(I.length?20:0),x.width=_,x.height=Math.max(100,k-h+4);let L=y.flatMap((B)=>{let J=o.get(B.key);return J?[J]:[]}),N=Math.max(m+x.width,...L.map((B)=>B.x+go.width/2+20)),Y=Math.max(h+x.height,...L.map((B)=>B.y+go.height/2+20));return x.x=Math.min(m,...L.map((B)=>B.x-go.width/2-20)),x.y=Math.min(h,...L.map((B)=>B.y-go.height/2-48)),x.width=N-x.x,x.height=Y-x.y,x},u=32,d=32,p=0;for(let f of[...a].filter((m)=>!m.includes("/")).sort()){if(u>1100)u=32,d+=p+36,p=0;let m=c(f,u,d,0);u+=m.width+36,p=Math.max(p,m.height)}return{positions:o,regions:i,hidden:s}}function np(e){let t=Ge.value,n=bo.value,[o,i]=E(null),[s,a]=E(!0),[l,c]=E(!1),u=D(()=>{});return q(()=>{let d=!1,p=!1,f=!1,m,h=()=>{if(f=!0,!p&&m===void 0)m=window.setTimeout(g,120)},g=async()=>{m=void 0,f=!1,p=!0,a(!0);let y=Mn,b=bo.peek(),x=Ge.peek(),C=await de("memoryGraph",`/api/canvas/memory-graph?projection=${e}`,null);if(d)return;if(p=!1,y!==Mn||b!==bo.peek()||x!==Ge.peek()){h();return}if(C&&Array.isArray(C.nodes)&&Array.isArray(C.edges))i(C),c(!1);else c(!0);if(a(!1),f)h()};return u.current=h,h(),()=>{d=!0,window.clearTimeout(m)}},[e]),q(()=>u.current(),[n,t]),{graph:o,loading:s,error:l,retry:()=>u.current()}}var CT={portal:"Portals",wiki:"Wiki links",card:"Card relations",previous:"Previous boards"};function TT(){let e=Ge.value,t=bo.value,{graph:n,loading:o,error:i,retry:s}=np("boards"),[a,l]=E(""),[c,u]=E(!0),[d,p]=E(!1),[f,m]=E(!0),[h,g]=E(new Set),[y,b]=E(new Set),[x,C]=E(new Set),[v,k]=E(null),[_,I]=E(null),[w,P]=E(null),[L,N]=E({x:0,y:0}),[Y,B]=E(1),[J,X]=E({}),[V,ee]=E(!1),he=D(null),A=D(!0),te=D(!1),M=D(null);Me(()=>{ut.value=!0},[]),Me(()=>{if(!v)return;let R=(ne)=>{if(ir(ne))ne.preventDefault(),k(null)};return window.addEventListener("keydown",R),()=>window.removeEventListener("keydown",R)},[v]),q(()=>{if(!v)return;let R=!1;P(null);let ne=Mn,Ce=bo.peek(),Ie=new URLSearchParams({focus:v,depth:"2"});return de("memoryGraph",`/api/canvas/memory-graph?${Ie}`,null).then((fe)=>{if(!R&&ne===Mn&&Ce===bo.peek())P({key:v,graph:fe&&Array.isArray(fe.nodes)&&Array.isArray(fe.edges)?fe:null})}),()=>{R=!0}},[v,n,t]);let O=Ke(()=>(n?.nodes??[]).filter((R)=>R.kind==="board").map((R)=>{let ne=e.find((Ce)=>Ce.id===R.boardId);return ne?{...R,title:ne.name,folder:ne.folder,inContext:!!ne.pin,nodeCount:ne.nodeCount,position:ne.mapPosition??void 0}:R}),[n,e]),Pe=Ke(()=>_T(O,x),[O,x]),Fe=new Map;for(let R of O){let ne=R.folder?.split("/")[0]??"";Fe.set(ne,(Fe.get(ne)??0)+1)}let De=O.filter((R)=>c&&(!d||R.inContext)&&(f||!!R.folder)&&!h.has(R.folder?.split("/")[0]??"")&&!Pe.hidden.has(R.key)&&`${R.title} ${R.summary} ${R.folder??""}`.toLocaleLowerCase().includes(a.trim().toLocaleLowerCase())),Ae=new Set(De.map((R)=>R.key)),ve=(R)=>J[R]??Pe.positions.get(R),z=O.find((R)=>R.key===v),re=O.find((R)=>R.key===(_??v)),Ne=new Map;for(let R of n?.edges??[]){if(R.kind==="member"||y.has(R.kind))continue;let ne=Mt({boardId:R.source.boardId}),Ce=Mt({boardId:R.target.boardId});if(!Ae.has(ne)||!R.missing&&(!Ae.has(Ce)||ne===Ce))continue;let Ie=JSON.stringify([ne,Ce,R.kind,R.relationKind,R.missing]),fe=Ne.get(Ie);if(fe)fe.edges.push(R);else Ne.set(Ie,{from:ne,to:Ce,edges:[R]})}let ke=new Set(re?[re.key]:[]);for(let{from:R,to:ne}of Ne.values())if(re&&(R===re.key||ne===re.key))ke.add(R),ke.add(ne);let le=(R)=>new Set((n?.edges??[]).filter((ne)=>ne.kind!=="member"&&(ne.source.boardId===R.boardId||ne.target.boardId===R.boardId)).map((ne)=>ne.source.boardId===R.boardId?ne.target.boardId:ne.source.boardId).filter((ne)=>ne!==R.boardId)).size,Se=()=>{let R=he.current;if(!R?.clientWidth||!R.clientHeight)return;let ne=De.flatMap((Ye)=>{let Lt=ve(Ye.key);return Lt?[{x:Lt.x-110,y:Lt.y-46},{x:Lt.x+110,y:Lt.y+46}]:[]});for(let Ye of Pe.regions){if(h.has(Ye.path.split("/")[0]??"")||!f&&!Ye.path)continue;ne.push({x:Ye.x,y:Ye.y},{x:Ye.x+Ye.width,y:Ye.y+Ye.height})}if(!ne.length)return;let Ce=Math.min(...ne.map((Ye)=>Ye.x)),Ie=Math.min(...ne.map((Ye)=>Ye.y)),fe=Math.max(...ne.map((Ye)=>Ye.x))-Ce,it=Math.max(...ne.map((Ye)=>Ye.y))-Ie,Ft=Math.min(1.25,Math.max(0.08,Math.min((R.clientWidth-64)/Math.max(1,fe),(R.clientHeight-100)/Math.max(1,it))));B(Ft),N({x:(R.clientWidth-fe*Ft)/2-Ce*Ft,y:(R.clientHeight-it*Ft)/2-Ie*Ft-12})};q(()=>{A.current=!0},[x]),q(()=>{if(A.current&&n&&(De.length||Pe.regions.length)&&!M.current)A.current=!1,Se()},[n,x]);let pe=(R,ne)=>{let Ce=he.current;if(!Ce)return;let Ie=ne??{x:Ce.clientWidth/2,y:Ce.clientHeight/2},fe=Math.min(3,Math.max(0.08,R));N({x:Ie.x-(Ie.x-L.x)*fe/Y,y:Ie.y-(Ie.y-L.y)*fe/Y}),B(fe)},Ue=(R,ne=!1)=>{k(R.key);let Ce=ve(R.key),Ie=he.current;if(ne&&Ce&&Ie)N({x:Ie.clientWidth/2-Ce.x*Y,y:Ie.clientHeight/2-Ce.y*Y})},xe=(R)=>{let ne=M.current;if(M.current=null,!ne)return;if(te.current=ne.moved,!ne.key)return;let Ce=ne.key,Ie=()=>X((fe)=>{let it={...fe};return delete it[Ce],it});if(ne.boardId&&ne.moved&&!R){let fe=ne.current??ne.origin;vr(ne.boardId,{mapPosition:{x:fe.x-go.width/2,y:fe.y-go.height/2}}).finally(Ie)}else Ie()},qe=w?.key===v?w.graph:null,W=(qe?.edges??[]).filter((R)=>z&&R.kind!=="member"&&(R.source.boardId===z.boardId||R.target.boardId===z.boardId)),ye=e.find((R)=>R.id===z?.boardId),He=(R,ne,Ce,Ie)=>r("label",{class:"home-memory-check",children:[r("input",{type:"checkbox","aria-label":R,checked:Ce,onChange:Ie},void 0,!1,void 0,this),r("span",{children:R},void 0,!1,void 0,this),r("small",{children:ne},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return r("main",{class:`home-memory is-map${V?" sidebar-open":""}`,"aria-label":"Library Map",children:[r("div",{class:"home-memory-toolbar",children:[r("span",{children:[O.length," boards · ",e.reduce((R,ne)=>R+ne.nodeCount,0)," cards ·"," ",n?.edges.filter((R)=>R.kind!=="member").length??0," links"]},void 0,!0,void 0,this),r("span",{class:`home-memory-live${i?" is-error":""}`,role:"status",children:i?"Update failed":o?"Updating…":"Live"},void 0,!1,void 0,this),r("button",{type:"button",class:"home-button home-memory-sidebar-toggle","aria-expanded":V,onClick:()=>ee(!V),children:"Filters"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"home-memory-body",children:[r("div",{class:"home-memory-stage",ref:he,"aria-label":"Pan the memory view",onWheel:(R)=>{R.preventDefault();let ne=R.currentTarget.getBoundingClientRect();pe(Y*Math.exp(-R.deltaY*0.0015),{x:R.clientX-ne.left,y:R.clientY-ne.top})},onPointerDown:(R)=>{if(R.button!==0||R.target.closest("button"))return;te.current=!1,M.current={id:R.pointerId,start:{x:R.clientX,y:R.clientY},origin:L,moved:!1},R.currentTarget.setPointerCapture(R.pointerId)},onPointerMove:(R)=>{let ne=M.current;if(!ne||ne.id!==R.pointerId)return;let Ce=R.clientX-ne.start.x,Ie=R.clientY-ne.start.y;if(Math.abs(Ce)+Math.abs(Ie)>4)ne.moved=!0;if(!ne.moved)return;let fe={x:ne.origin.x+Ce/(ne.key?Y:1),y:ne.origin.y+Ie/(ne.key?Y:1)};if(ne.current=fe,ne.key)X((it)=>({...it,[ne.key]:fe}));else N(fe)},onPointerUp:()=>xe(!1),onPointerCancel:()=>xe(!0),children:[r("div",{class:"home-memory-world",style:{transform:`translate(${L.x}px, ${L.y}px) scale(${Y})`,"--memory-zoom":Y},children:[Pe.regions.filter((R)=>!h.has(R.path.split("/")[0]??"")&&(f||R.path)).map((R)=>r("div",{class:`home-memory-region${R.depth?" is-nested":""}`,style:{left:R.x,top:R.y,width:R.width,height:R.height},children:r("button",{type:"button","aria-expanded":!R.collapsed,onClick:()=>C((ne)=>{let Ce=new Set(ne);if(Ce.has(R.path))Ce.delete(R.path);else Ce.add(R.path);return Ce}),children:[R.collapsed?"▸":"▾"," ",R.path.split("/").at(-1)||"Unfiled"," ",r("small",{children:[R.count," boards"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},R.path,!1,void 0,this)),r("svg",{class:"home-memory-links","aria-hidden":"true",children:[...Ne].map(([R,{from:ne,to:Ce,edges:Ie}])=>{let fe=Ie[0],it=ve(ne),Ft=ve(Ce);if(!it)return null;let Ye=Ft??{x:it.x+100,y:it.y-70},Lt=it.y+(Ye.y>it.y?46:-46),F=Ft?Ye.y+(Ye.y>it.y?-46:46):Ye.y,Ee=re&&(fe.source.boardId===re.boardId||fe.target.boardId===re.boardId),S=mo({kind:fe.relationKind,type:fe.type},e.find((ue)=>ue.id===fe.source.boardId)?.relationVocabulary),K=fe.missing?"var(--c-warn)":fe.kind==="card"?`var(--c-rel-${S.ink})`:void 0;return r("g",{"data-from":ne,"data-to":Ce,"data-count":Ie.length,style:K?{stroke:K}:void 0,class:`memory-edge edge-${fe.kind}${fe.missing?" is-missing":""}${Ee?" is-emphasized":re?" is-dimmed":""}`,children:[r("path",{d:`M ${it.x} ${Lt} C ${it.x} ${(Lt+F)/2}, ${Ye.x} ${(Lt+F)/2}, ${Ye.x} ${F}`},void 0,!1,void 0,this),Ie.length>1&&r("text",{x:(it.x+Ye.x)/2,y:(it.y+Ye.y)/2-6,children:[Ie.length," links"]},void 0,!0,void 0,this),fe.missing&&r("text",{x:Ye.x,y:Ye.y-5,children:["⚠ Missing ",fe.kind," link"]},void 0,!0,void 0,this)]},R,!0,void 0,this)})},void 0,!1,void 0,this),De.map((R,ne)=>{let Ce=ve(R.key);if(!Ce)return null;let Ie=e.find((fe)=>fe.id===R.boardId);return r("article",{"data-key":R.key,class:`home-memory-node is-board${R.inContext?" in-context":""}${v===R.key?" is-selected":""}${ke.has(R.key)?" is-emphasized":re?" is-dimmed":""}`,style:{left:Ce.x,top:Ce.y},onPointerEnter:()=>{if(!M.current)I(R.key)},onPointerLeave:()=>I(null),children:[r("button",{type:"button",class:"home-memory-select","aria-label":`board: ${R.title}`,"aria-pressed":v===R.key,onFocus:(fe)=>{if(!M.current&&fe.currentTarget.matches(":focus-visible"))Ue(R,!0)},onClick:()=>{if(!te.current)Ue(R);te.current=!1},onDblClick:()=>void zt(R),onPointerDown:(fe)=>{if(fe.button!==0)return;fe.stopPropagation(),te.current=!1,M.current={id:fe.pointerId,start:{x:fe.clientX,y:fe.clientY},origin:Ce,key:R.key,boardId:R.boardId,moved:!1},fe.currentTarget.setPointerCapture(fe.pointerId)},onKeyDown:(fe)=>{if(fe.key==="Enter")fe.preventDefault(),zt(R);if(fe.key.startsWith("Arrow")){fe.preventDefault();let it=(ne+(fe.key==="ArrowLeft"||fe.key==="ArrowUp"?-1:1)+De.length)%De.length,Ft=De[it];if(Ft)Ue(Ft,!0),he.current?.querySelectorAll(".home-memory-select")[it]?.focus({preventScroll:!0})}},children:[r("strong",{children:R.title},void 0,!1,void 0,this),r("span",{children:[R.nodeCount??0," cards · ",le(R)," connected boards"]},void 0,!0,void 0,this),r("span",{class:"home-memory-summary",children:R.summary||"No summary yet"},void 0,!1,void 0,this),R.inContext&&r("span",{class:"home-memory-context",children:"⌖ In context"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ie&&r(ho,{board:Ie},void 0,!1,void 0,this)]},R.key,!0,void 0,this)})]},void 0,!0,void 0,this),r("div",{class:"home-memory-zoom",children:[r("button",{type:"button",class:"home-button","aria-label":"Zoom out",onClick:()=>pe(Y/1.2),children:"−"},void 0,!1,void 0,this),r("span",{children:[Math.round(Y*100),"%"]},void 0,!0,void 0,this),r("button",{type:"button",class:"home-button","aria-label":"Zoom in",onClick:()=>pe(Y*1.2),children:"+"},void 0,!1,void 0,this),r("button",{type:"button",class:"home-button",onClick:Se,children:"Fit view"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(!n||!De.length||i)&&r("div",{class:"home-memory-status",role:"status",children:i?r(be,{children:["Memory update failed."," ",r("button",{type:"button",class:"home-button",onClick:s,children:"Retry"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):!n?"Loading memory…":Pe.hidden.size?"Folders collapsed. Expand a folder to see its boards.":"No matching nodes."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("aside",{class:"home-memory-sidebar","aria-label":"Map settings",children:[r("section",{children:[r("h2",{children:"Filters"},void 0,!1,void 0,this),r("label",{class:"home-memory-search",children:[r("span",{children:"Find boards and cards"},void 0,!1,void 0,this),r("input",{type:"search",value:a,placeholder:"Search boards and cards…",onInput:(R)=>l(R.currentTarget.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),He("Boards",O.length,c,()=>u(!c)),He("Only in context",O.filter((R)=>R.inContext).length,d,()=>p(!d)),He("Include unfiled",O.filter((R)=>!R.folder).length,f,()=>m(!f))]},void 0,!0,void 0,this),r("section",{children:[r("h2",{children:"Groups · by folder"},void 0,!1,void 0,this),[...Fe].sort(([R],[ne])=>R.localeCompare(ne)).map(([R,ne])=>r("div",{children:He(R||"Unfiled",ne,!h.has(R),()=>g((Ce)=>{let Ie=new Set(Ce);if(Ie.has(R))Ie.delete(R);else Ie.add(R);return Ie}))},R,!1,void 0,this))]},void 0,!0,void 0,this),r("section",{children:[r("h2",{children:"Links"},void 0,!1,void 0,this),Object.keys(CT).map((R)=>r("div",{class:`memory-legend-${R}`,children:He(CT[R],n?.edges.filter((ne)=>ne.kind===R).length??0,!y.has(R),()=>b((ne)=>{let Ce=new Set(ne);if(Ce.has(R))Ce.delete(R);else Ce.add(R);return Ce}))},R,!1,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"home-memory-legend","aria-label":"Legend",children:[r("span",{children:"▣ Board"},void 0,!1,void 0,this),r("span",{class:"memory-context-legend",children:"⌖ In context"},void 0,!1,void 0,this),r("span",{class:"memory-legend-portal",children:"━ Portal"},void 0,!1,void 0,this),r("span",{class:"memory-legend-wiki",children:"┄ Wiki"},void 0,!1,void 0,this),r("span",{class:"memory-legend-card",children:"━ Relation"},void 0,!1,void 0,this),r("span",{children:"Drag boards to save positions · drag background to pan · scroll to zoom"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r(tp,{children:z?r("section",{class:"home-memory-details",role:"complementary","aria-label":"Selection details",children:[r("button",{type:"button",class:"home-memory-clear","aria-label":"Close details",onClick:()=>k(null),children:"×"},void 0,!1,void 0,this),r("div",{class:"home-memory-detail-header",children:[r("div",{class:"home-memory-selection-title",children:[r("h3",{children:[z.title," · ",W.length," connections"]},void 0,!0,void 0,this),r("p",{children:[z.folder||"Unfiled"," · board"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"home-memory-actions",children:[r("button",{type:"button",class:"home-button is-primary",onClick:()=>void zt(z),children:"Open board"},void 0,!1,void 0,this),ye&&r(ho,{board:ye},void 0,!1,void 0,this),r("button",{type:"button",class:"home-button",onClick:()=>void vr(z.boardId,{mapPosition:null}),children:"Reset position"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"home-memory-detail-body",children:[r("p",{children:[z.nodeCount??0," cards · ",le(z)," connected boards"]},void 0,!0,void 0,this),r("p",{children:z.summary||"No summary yet."},void 0,!1,void 0,this),r("p",{class:z.inContext?"memory-context-legend":"",children:z.inContext?"⌖ In context":"Not in context"},void 0,!1,void 0,this),r("details",{class:"home-memory-connections",open:!0,children:[r("summary",{children:"Connections"},void 0,!1,void 0,this),!qe&&r("p",{role:"status",children:w?.key===v?"Connections could not be loaded.":"Loading connections…"},void 0,!1,void 0,this),r("ul",{children:[W.map((R)=>{let ne=R.source.boardId===z.boardId,Ce=ne?R.target:R.source,Ie=qe?.nodes.find((fe)=>fe.key===Mt(Ce));return r("li",{children:[r("span",{children:[ne?"→":"←"," ",R.kind==="card"?fa({...R,kind:R.relationKind}):`${R.kind}${R.label?` · ${R.label}`:""}`]},void 0,!0,void 0,this),R.missing?r("span",{class:"home-memory-missing",children:["⚠ Missing target: ",Ce.boardId,Ce.cardId?` / ${Ce.cardId}`:""]},void 0,!0,void 0,this):r("button",{type:"button",class:"home-button",onClick:()=>void zt(Ce),children:Ie?.title??Ce.boardId},void 0,!1,void 0,this)]},R.id,!0,void 0,this)}),(qe?.unresolvedLinks??[]).filter((R)=>R.source.boardId===z.boardId).map((R)=>r("li",{class:"home-memory-missing",children:["⚠ Unresolved wiki: [[",R.ref,"]]"]},`${Mt(R.source)}:${R.ref}`,!0,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):r("div",{class:"home-memory-empty-details",children:[r("h3",{children:"Relations"},void 0,!1,void 0,this),r("p",{class:"home-memory-help",children:"Overview groups links between boards. Select a board to inspect connections. Double-click to open."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Je={width:220,height:96,gap:64},ec=(e,t)=>Math.hypot(e.x-t.x,e.y-t.y),kL=(e,t)=>e.x>t.left&&e.x<t.right&&e.y>t.top&&e.y<t.bottom;function SL(e,t,n){let o=0,i=1;for(let[s,a,l,c]of[[e.x,t.x-e.x,n.left,n.right],[e.y,t.y-e.y,n.top,n.bottom]])if(!a){if(s<=l||s>=c)return!1}else{let u=(l-s)/a,d=(c-s)/a;o=Math.max(o,Math.min(u,d)),i=Math.min(i,Math.max(u,d))}return o<i&&i>0&&o<1}function IT(e,t){let o=[...e].map(([f,m])=>({key:f,left:m.x-Je.width/2-8,right:m.x+Je.width/2+8,top:m.y-Je.height/2-8,bottom:m.y+Je.height/2+8})),i=(f,m)=>!o.some((h)=>SL(f,m,h)),s=o.flatMap((f)=>[{x:f.left,y:f.top},{x:f.right,y:f.top},{x:f.right,y:f.bottom},{x:f.left,y:f.bottom}]).filter((f)=>!o.some((m)=>kL(f,m))),a=new Map,l=(f,m)=>[{x:f.x-Je.width/2,y:f.y+m*Je.height},{x:f.x+Je.width/2,y:f.y+m*Je.height},{x:f.x+m*Je.width,y:f.y-Je.height/2},{x:f.x+m*Je.width,y:f.y+Je.height/2}].map((h,g)=>({port:h,stub:{x:h.x+(g===0?-8:g===1?8:0),y:h.y+(g===2?-8:g===3?8:0)}})),c=new Map,u=[],d=new Map,p=new Map;for(let f of t){let m=JSON.stringify([f.from,f.to].sort());p.set(m,(p.get(m)??0)+1)}for(let f of t){let m=e.get(f.from),h=e.get(f.to),g=JSON.stringify([f.from,f.to].sort()),y=d.get(g)??0;d.set(g,y+1);let b=((y+1)/(p.get(g)+1)-0.5)*0.8,x=l(m,b),C=l(h,b),v,k=1/0;for(let P of x)for(let L of C){let N=ec(P.stub,L.stub);if(N&&N<k&&i(P.stub,L.stub))k=N,v=[P.port,P.stub,L.stub,L.port]}if(!v){let P=s.map(()=>1/0),L=s.map(()=>-1),N=s.map(()=>0),Y=new Set;for(let X=0;X<s.length;X++)for(let V=0;V<x.length;V++){let ee=ec(x[V].stub,s[X]);if(ee<P[X]&&i(x[V].stub,s[X]))P[X]=ee,N[X]=V}let B=-1,J=0;while(Y.size<s.length){let X=-1;for(let ee=0;ee<s.length;ee++)if(!Y.has(ee)&&(X<0||P[ee]<P[X]))X=ee;if(X<0||P[X]>=k||!Number.isFinite(P[X]))break;Y.add(X);for(let ee=0;ee<C.length;ee++){let he=P[X]+ec(s[X],C[ee].stub);if(he<k&&i(s[X],C[ee].stub))k=he,B=X,J=ee}let V=a.get(X);if(!V)V=s.flatMap((ee,he)=>he!==X&&i(s[X],ee)?[{index:he,length:ec(s[X],ee)}]:[]),a.set(X,V);for(let ee of V)if(P[X]+ee.length<P[ee.index])P[ee.index]=P[X]+ee.length,L[ee.index]=X,N[ee.index]=N[X]}if(B>=0){let X=[];for(let he=B;he>=0;he=L[he])X.unshift(s[he]);let V=x[N[B]],ee=C[J];v=[V.port,V.stub,...X,ee.stub,ee.port]}}if(!v)continue;let _=Math.max(24,f.label.length*3.6+6),I=v.slice(1).map((P,L)=>({first:v[L],point:P,length:ec(v[L],P)})).filter((P)=>P.length>0).sort((P,L)=>L.length-P.length),w;for(let P=16;f.label&&!w;P+=20)w=I.flatMap(({first:N,point:Y,length:B})=>[0.5,0.25,0.75].flatMap((J)=>[-P,P].map((X)=>{let V=N.x+(Y.x-N.x)*J-(Y.y-N.y)*X/B,ee=N.y+(Y.y-N.y)*J+(Y.x-N.x)*X/B;return{x:V,y:ee,left:V-_,right:V+_,top:ee-16,bottom:ee+8}}))).find((N)=>![...o,...u].some((Y)=>N.left<Y.right&&N.right>Y.left&&N.top<Y.bottom&&N.bottom>Y.top));if(w)u.push(w);c.set(f.id,{points:v,path:v.map((P,L)=>`${L?"L":"M"} ${P.x} ${P.y}`).join(" "),label:w})}return c}var as=(e)=>e.kind==="overview"?"overview":JSON.stringify(e),_L=(e,t)=>JSON.stringify([e,t].sort());function ET(e){let t=new Map,n=new Map,o=[],i=e.filter((s)=>s.kind!=="member");for(let s of i){if(s.missing){o.push(s);continue}if(s.source.boardId===s.target.boardId){n.set(s.source.boardId,(n.get(s.source.boardId)??0)+1);continue}let a=_L(s.source.boardId,s.target.boardId),l=t.get(a);if(l)l.edges.push(s);else t.set(a,{boardId:s.source.boardId,peerId:s.target.boardId,edges:[s]})}return{evidence:i,pairs:t,internal:n,missing:o}}function op(e){let t=2166136261;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619);return(t>>>0)/4294967296}function AT(e,t){let n=new Map(e.map((i)=>[i,new Map])),o=t.filter((i)=>i.from!==i.to&&n.has(i.from)&&n.has(i.to)).map((i)=>({ends:[i.from,i.to].sort(),weight:Math.max(0.1,i.weight??1)})).sort((i,s)=>i.ends[0].localeCompare(s.ends[0])||i.ends[1].localeCompare(s.ends[1])||i.weight-s.weight);for(let{ends:[i,s],weight:a}of o)n.get(i).set(s,(n.get(i).get(s)??0)+a),n.get(s).set(i,(n.get(s).get(i)??0)+a);return n}function RT(e,t,n,o){let i=t.get(e),s=[...o.values()].reduce((c,u)=>c+Math.sqrt(u),0),a=0,l=0;for(let c of n){if(c===e)continue;let u=t.get(c),d=i.x-u.x||(op(e)-0.5)*0.01,p=i.y-u.y||(op(`${e}:y`)-0.5)*0.01,f=Math.max(1,Math.hypot(d,p)),m=14000/(f*f),h=o.get(c)??0,g=h?(f-290)*0.006*Math.sqrt(h)/s:0;a+=d/f*(m-g),l+=p/f*(m-g);let y=Je.width+Je.gap,b=(Je.height+Je.gap)*Je.width/Je.height;if(Math.abs(d)<y&&Math.abs(p)<b)if(y-Math.abs(d)<b-Math.abs(p))a+=Math.sign(d)*(y-Math.abs(d))*0.2;else l+=Math.sign(p)*(b-Math.abs(p))*0.2}return{x:a,y:l}}function PT(e,t,n,o){let i=[...e.keys()].sort(),s=AT(i,t),a=Je.width/Je.height,l=new Map([...e].map(([u,d])=>[u,{x:d.x,y:d.y*a}])),c=0;for(let u of i){if(u===n)continue;let d=l.get(u),p=RT(u,l,i,s.get(u)),f=Math.min(1,24/Math.max(1,Math.hypot(p.x,p.y)))*o,m=p.x*f,h=p.y*f/a;e.set(u,{x:d.x+m,y:d.y/a+h}),c=Math.max(c,Math.hypot(m,h))}for(let[u,d]of i.entries())for(let p of i.slice(u+1)){let f=e.get(d),m=e.get(p),h=f.x-m.x,g=f.y-m.y,y=Je.width+Je.gap-Math.abs(h),b=Je.height+Je.gap-Math.abs(g);if(y<=0||b<=0)continue;let x=y<b?{x:(Math.sign(h)||-1)*y,y:0}:{x:0,y:(Math.sign(g)||-1)*b},C=p===n?1:0.5,v=d===n?1:0.5;if(d!==n)e.set(d,{x:f.x+x.x*C,y:f.y+x.y*C});if(p!==n)e.set(p,{x:m.x-x.x*v,y:m.y-x.y*v});c=Math.max(c,Math.hypot(x.x,x.y))}return c}function NT(e,t,n){let o=[...new Set(e.map((v)=>v.key))].sort();if(o.every((v)=>n.has(v)))return new Map(o.map((v)=>[v,n.get(v)]));let i=AT(o,t),s=[],a=new Set;for(let v of o){if(a.has(v))continue;let k=[v];a.add(v);for(let _ of k)for(let I of i.get(_).keys()){if(a.has(I))continue;a.add(I),k.push(I)}s.push(k.sort())}let l=new Map,c=Je.width/Je.height;for(let v of o){let k=n.get(v);if(k)l.set(v,{x:k.x,y:k.y*c})}for(let v of s){if(!v.some((k)=>l.has(k)))l.set(v[0],{x:0,y:0});while(v.some((k)=>!l.has(k)))for(let k of v){if(l.has(k))continue;let _=[...i.get(k).keys()].filter((I)=>l.has(I));if(!_.length)continue;l.set(k,{x:_.reduce((I,w)=>I+l.get(w).x,0)/_.length+(op(k)-0.5)*240,y:_.reduce((I,w)=>I+l.get(w).y,0)/_.length+(op(`${k}:y`)-0.5)*240})}for(let k=0;k<180;k++){let _=new Map;for(let I of v){if(n.has(I))continue;let w=l.get(I),{x:P,y:L}=RT(I,l,v,i.get(I)),N=Math.min(1,24/Math.max(1,Math.hypot(P,L)))*(1-k/200);_.set(I,{x:w.x+P*N,y:w.y+L*N})}for(let[I,w]of _)l.set(I,w)}}for(let[v,k]of l)l.set(v,n.get(v)??{x:k.x,y:k.y/c});let u=o.filter((v)=>n.has(v)).map((v)=>l.get(v)),d=Je.width+Je.gap,p=Je.height+Je.gap,f=(v,k)=>Math.abs(v.x-k.x)<d&&Math.abs(v.y-k.y)<p,m=0,h=0,g=0,y=0,b=Math.sqrt(o.length)*380,x=(v)=>v.some((k)=>n.has(k));s.sort((v,k)=>Number(x(k))-Number(x(v)));let C=!1;for(let v of s){let k=x(v);if(!k&&!C)m=u.length?Math.max(...u.map((w)=>w.x))+340:0,h=m,C=!0;let _=k?u:[],I=[];for(let w of v){if(n.has(w))continue;let P=l.get(w),L=P;if(_.some((N)=>f(L,N)))L=_.flatMap((Y)=>[{x:Y.x-d,y:P.y},{x:Y.x+d,y:P.y},{x:P.x,y:Y.y-p},{x:P.x,y:Y.y+p}]).filter((Y)=>!_.some((B)=>f(Y,B))).sort((Y,B)=>Math.hypot(Y.x-P.x,Y.y-P.y)-Math.hypot(B.x-P.x,B.y-P.y))[0];l.set(w,L),_.push(L),I.push(L)}if(!k&&I.length){let w=Math.min(...I.map((L)=>L.x)),P=Math.min(...I.map((L)=>L.y));for(let L of I)L.x+=h-w,L.y+=g-P;if(u.push(...I),h=Math.max(...I.map((L)=>L.x))+340,y=Math.max(y,Math.max(...I.map((L)=>L.y))-g+200),h-m>b)h=m,g+=y,y=0}}for(let[v,k]of l)if(!n.has(v))n.set(v,k);return l}var MT={portal:"Portals",wiki:"Wiki links",card:"Card relations",previous:"Previous boards"},kg=(e)=>({scene:e,camera:null,query:"",context:!1,folders:new Set,hiddenLinks:new Set,inspection:null,limit:80});function zT(){let e=Ge.value,{graph:t,loading:n,error:o,retry:i}=np("full"),[s,a]=E([kg({kind:"overview"})]),l=s.at(-1),c=l.scene,u=as(c),[d,p]=E(!1),[f,m]=E(0),[h,g]=E(0),[y,b]=E(null),[x,C]=E(""),[v,k]=E({width:0,height:0}),_=D(new Map),I=D(null),w=D(null),P=D(null),L=D(null),N=()=>{if(P.current!==null)cancelAnimationFrame(P.current);P.current=null,L.current=null},Y=D(!1),B=(S)=>a((K)=>[...K.slice(0,-1),{...K.at(-1),...S}]),J=()=>{a((S)=>S.length>1?S.slice(0,-1):S),p(!1),b(null),C("")},X=(S)=>{if(as(S)===u){m((K)=>K+1);return}a((K)=>[...K,kg(S)]),p(!1),b(null),C("")},V=(S)=>{let K=s.map((ue)=>as(ue.scene)).lastIndexOf(as(S));if(K>=0)a((ue)=>ue.slice(0,K+1));else X(S);p(!1)};Me(()=>{ut.value=!0},[]),Me(()=>{let S=I.current,K=()=>k({width:S.clientWidth,height:S.clientHeight}),ue=new ResizeObserver(K);return ue.observe(S),K(),()=>ue.disconnect()},[]),Me(()=>{let S=(K)=>{if(!ir(K))return;if(l.inspection||s.length>1)if(K.preventDefault(),l.inspection)B({inspection:null});else J()};return window.addEventListener("keydown",S),()=>window.removeEventListener("keydown",S)},[l.inspection,s.length]);let ee=Ke(()=>(t?.nodes??[]).map((S)=>{let K=e.find((ue)=>ue.id===S.boardId);return K?{...S,folder:K.folder,...S.kind==="board"?{title:K.name,nodeCount:K.nodeCount,inContext:!!K.pin}:{}}:S}),[t,e]),he=Ke(()=>new Map(ee.map((S)=>[S.key,S])),[ee]),A=Ke(()=>ET(t?.edges??[]),[t]),te=c.kind==="overview"?null:Mt(c),M=te?he.get(te):void 0,O=(S)=>e.find((K)=>K.id===S)?.name??S,Pe=(S)=>c.kind!=="overview"&&S.boardId===c.boardId,Fe=c.kind==="overview"?A.evidence:A.evidence.filter((S)=>c.kind==="board"?S.source.boardId===c.boardId||S.target.boardId===c.boardId:S.from===te||S.to===te),De=Ke(()=>{if(c.kind==="overview")return{nodes:ee.filter((ue)=>ue.kind==="board"),links:[...A.pairs].map(([ue,$e])=>({id:ue,from:Mt({boardId:$e.boardId}),to:Mt({boardId:$e.peerId}),edges:$e.edges,bundle:!0}))};let S=new Set;if(c.kind==="board"){for(let ue of ee)if(Pe(ue)&&ue.kind==="card")S.add(ue.key)}else if(te&&he.has(te))S.add(te);let K=new Map;for(let ue of Fe){if(ue.missing||!he.has(ue.from)||!he.has(ue.to))continue;let $e=c.kind==="board"&&ue.source.boardId!==c.boardId?Mt({boardId:ue.source.boardId}):ue.from,je=c.kind==="board"&&ue.target.boardId!==c.boardId?Mt({boardId:ue.target.boardId}):ue.to;S.add($e),S.add(je);let se=c.kind==="card"?ue.id:JSON.stringify([$e,je].sort()),we=K.get(se);if(we)we.edges.push(ue),we.bundle=!0;else K.set(se,{id:se,from:$e,to:je,edges:[ue],bundle:$e!==ue.from||je!==ue.to})}return{nodes:ee.filter((ue)=>S.has(ue.key)),links:[...K.values()]}},[ee,t,u]),Ae=new Map;for(let S of De.links)for(let K of[S.from,S.to])Ae.set(K,(Ae.get(K)??0)+S.edges.length);let ve=De.nodes.filter((S)=>Ae.has(S.key)||S.key===te),z=De.nodes.filter((S)=>!Ae.has(S.key)&&S.key!==te),re=(S)=>S.key===te||(!l.context||S.inContext)&&!l.folders.has(S.folder?.split("/")[0]??"")&&`${S.title} ${S.summary} ${O(S.boardId)} ${S.folder??""}`.toLocaleLowerCase().includes(l.query.trim().toLocaleLowerCase()),Ne=ve.filter(re).sort((S,K)=>Number(K.key===te)-Number(S.key===te)||(Ae.get(K.key)??0)-(Ae.get(S.key)??0)||S.key.localeCompare(K.key)),ke=Ne.slice(0,l.limit),le=new Set(ke.map((S)=>S.key)),Se=z.filter(re),pe=De.links.map((S)=>({...S,edges:S.edges.filter((K)=>!l.hiddenLinks.has(K.kind))})).filter((S)=>S.edges.length&&le.has(S.from)&&le.has(S.to));q(()=>()=>{N(),Y.current||=!!w.current?.moved,w.current=null},[De,l.limit,l.query,l.context,l.folders,l.hiddenLinks]);let Ue=(S)=>{if(P.current!==null)return;let K=180,ue=()=>{let $e=w.current?.key===S,je=_.current.get(u);if(L.current)je.set(S,L.current);L.current=null;let se=new Map(ke.map((ge)=>[ge.key,je.get(ge.key)])),we=PT(se,pe.map((ge)=>({...ge,weight:ge.edges.length})),S,$e?1:K/180);for(let[ge,Le]of se)je.set(ge,Le);if(g((ge)=>ge+1),$e||--K>0&&we>0.02)P.current=requestAnimationFrame(ue);else P.current=null};P.current=requestAnimationFrame(ue)},xe=Ke(()=>{let S=_.current.get(u);if(!S)S=new Map,_.current.set(u,S);if(c.kind!=="card")return NT(ve,De.links.map((ge)=>({...ge,weight:ge.edges.length})),S);if(!S.has(te))S.set(te,{x:0,y:0});let K=Fe.filter((ge)=>ge.kind!=="card"||mo({kind:ge.relationKind,type:ge.type},e.find((Le)=>Le.id===ge.source.boardId)?.relationVocabulary).directed),ue=new Set(K.filter((ge)=>ge.to===te).map((ge)=>ge.from)),$e=new Set(K.filter((ge)=>ge.from===te).map((ge)=>ge.to)),je=ve.filter((ge)=>ge.key!==te).sort((ge,Le)=>ge.key.localeCompare(Le.key)),se=Je.width+Je.gap,we=Je.height+Je.gap;for(let ge of["incoming","outgoing","mutual"]){let Le=je.filter((on)=>(ue.has(on.key)&&!$e.has(on.key)?"incoming":$e.has(on.key)&&!ue.has(on.key)?"outgoing":"mutual")===ge),Rt=Le.filter((on)=>S.has(on.key)).map((on)=>S.get(on.key)),pt=S.get(te).y+we,dn=0;for(let[on,ps]of Le.entries())if(!S.has(ps.key)){let Rn=Rt.length?Math.max(...Rt.map((pn)=>ge==="mutual"?pn.x:pn.y))+(dn+1)*(ge==="mutual"?se:we):(on-(Le.length-1)/2)*(ge==="mutual"?se:we),xn=ge==="mutual"?{x:Rn,y:pt}:{x:ge==="incoming"?-360:360,y:Rn};while([...S.values()].some((pn)=>Math.abs(pn.x-xn.x)<se&&Math.abs(pn.y-xn.y)<we))xn.y+=we;S.set(ps.key,xn),dn++}}return new Map(S)},[De,u,h]),qe=(S)=>S.bundle?`${S.edges.length} links`:S.edges[0].kind==="card"?mo({kind:S.edges[0].relationKind,type:S.edges[0].type},e.find((K)=>K.id===S.edges[0].source.boardId)?.relationVocabulary).kind:S.edges[0].kind,W=Ke(()=>IT(new Map(ke.map((S)=>[S.key,xe.get(S.key)])),pe.map((S)=>({...S,label:S.edges.length>1||c.kind==="card"?qe(S):""})).sort((S,K)=>S.id.localeCompare(K.id))),[xe,De,l.limit,l.query,l.context,l.folders,l.hiddenLinks]),ye=l.camera??{x:0,y:0,scale:1},He=ke.filter((S)=>{let K=xe.get(S.key);return(K.x-Je.width/2)*ye.scale+ye.x<8||(K.x+Je.width/2)*ye.scale+ye.x>v.width-8||(K.y-Je.height/2)*ye.scale+ye.y<(c.kind==="card"?40:8)||(K.y+Je.height/2)*ye.scale+ye.y>v.height-64}).length,R=(S=!1)=>{let K=I.current;if(!K||!ke.length)return;let ue=c.kind==="card"?40:16,$e=K.clientHeight-ue-64-8,je=ke.flatMap((pt)=>{let dn=xe.get(pt.key);return[{x:dn.x-Je.width/2,y:dn.y-Je.height/2},{x:dn.x+Je.width/2,y:dn.y+Je.height/2}]});for(let pt of W.values())if(je.push(...pt.points),pt.label)je.push({x:pt.label.left,y:pt.label.top},{x:pt.label.right,y:pt.label.bottom});let se=Math.min(...je.map((pt)=>pt.x)),we=Math.min(...je.map((pt)=>pt.y)),ge=Math.max(...je.map((pt)=>pt.x))-se,Le=Math.max(...je.map((pt)=>pt.y))-we,Rt=Math.min(1,Math.max(S?1:0.005,Math.min((K.clientWidth-64)/ge,$e/Le)));B({camera:S&&c.kind==="card"?{x:K.clientWidth/2-xe.get(te).x,y:ue+$e/2-xe.get(te).y,scale:1}:{x:(K.clientWidth-ge*Rt)/2-se*Rt,y:ue+($e-Le*Rt)/2-we*Rt,scale:Rt}})};Me(()=>{if(t&&!l.camera&&ke.length)R(!0)},[t,u,l.camera]),q(()=>{if(!t||c.kind==="overview"||M)return;let S=he.has(Mt({boardId:c.boardId}));a((K)=>{let ue=K.filter((je)=>je.scene.kind==="overview"||he.has(Mt(je.scene))),$e=c.kind==="card"&&S?{kind:"board",boardId:c.boardId}:{kind:"overview"};return as(ue.at(-1).scene)===as($e)?ue:[...ue,kg($e)]}),C("The focused endpoint was removed. Returned to its nearest available level.")},[t,te,M]);let ne=(S)=>{let K=xe.get(S.key),ue=I.current;if(!K||!ue)return;let $e=Math.max(1,ye.scale);B({camera:{x:ue.clientWidth/2-K.x*$e,y:ue.clientHeight/2-K.y*$e-20,scale:$e},limit:Math.max(l.limit,Ne.indexOf(S)+1)}),p(!1)},Ce=(S)=>{if(S.kind==="card"&&S.cardId)X({kind:"card",boardId:S.boardId,cardId:S.cardId});else X({kind:"board",boardId:S.boardId})},Ie=(S,K)=>{let ue=I.current;if(!ue)return;let $e=K??{x:ue.clientWidth/2,y:ue.clientHeight/2},je=Math.max(0.005,Math.min(3,S));B({camera:{x:$e.x-($e.x-ye.x)*je/ye.scale,y:$e.y-($e.y-ye.y)*je/ye.scale,scale:je}})},fe=De.links.find((S)=>S.id===l.inspection),it=fe?.edges??Fe,Ft=M?e.find((S)=>S.id===M.boardId):void 0,Ye=(S)=>{B({inspection:S.id}),m((K)=>K+1)},Lt=(S,K,ue)=>r("label",{class:"home-memory-check",children:[r("input",{type:"checkbox","aria-label":S,checked:K,onChange:ue},void 0,!1,void 0,this),r("span",{children:S},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F=c.kind!=="overview"&&!M,Ee=c.kind==="overview"?"Library":c.kind==="board"?O(c.boardId):M?.title??"Missing card";return r("main",{class:`home-memory graph-view${d?" sidebar-open":""}`,"aria-label":"Library Graph",style:{"--graph-node-width":`${Je.width}px`,"--graph-node-height":`${Je.height}px`},children:[r("div",{class:"home-memory-toolbar",children:[s.length>1&&r("button",{type:"button",class:"home-button",onClick:J,children:"Back"},void 0,!1,void 0,this),r("nav",{class:"graph-breadcrumb","aria-label":"Graph path",children:[r("button",{type:"button",class:"home-button",onClick:()=>V({kind:"overview"}),children:"Library"},void 0,!1,void 0,this),c.kind!=="overview"&&r(be,{children:[r("span",{children:"›"},void 0,!1,void 0,this),r("button",{type:"button",class:"home-button",onClick:()=>V({kind:"board",boardId:c.boardId}),children:O(c.boardId)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),c.kind==="card"&&r(be,{children:[r("span",{children:"›"},void 0,!1,void 0,this),r("strong",{children:Ee},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("span",{children:[ke.length," of ",ve.length," connected drawn · ",He," partly/outside view ·"," ",ve.length-Ne.length," filtered · ",Math.max(0,Ne.length-ke.length)," hidden ·"," ",z.length," without links"]},void 0,!0,void 0,this),Ne.length>l.limit&&r("button",{type:"button",class:"home-button",onClick:()=>B({limit:l.limit+80}),children:"Show more connections"},void 0,!1,void 0,this),r("span",{class:`home-memory-live${o?" is-error":""}`,role:"status",children:o?"Update failed":n?"Updating…":"Live"},void 0,!1,void 0,this),r("button",{type:"button",class:"home-button home-memory-sidebar-toggle","aria-expanded":d,onClick:()=>p(!d),children:"Filters"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"home-memory-body",children:[r("div",{class:"home-memory-stage",ref:I,"aria-label":"Pan the memory view",onWheel:(S)=>{S.preventDefault();let K=S.currentTarget.getBoundingClientRect();Ie(ye.scale*Math.exp(-S.deltaY*0.0015),{x:S.clientX-K.left,y:S.clientY-K.top})},onPointerDown:(S)=>{if(S.button!==0||S.target.closest('button, [role="button"]'))return;N(),Y.current=!1,w.current={id:S.pointerId,start:{x:S.clientX,y:S.clientY},origin:ye,moved:!1},S.currentTarget.setPointerCapture(S.pointerId)},onPointerMove:(S)=>{let K=w.current;if(!K||K.id!==S.pointerId||!(S.buttons&1))return;let ue=S.clientX-K.start.x,$e=S.clientY-K.start.y;if(Math.abs(ue)+Math.abs($e)>4)K.moved=!0;if(!K.moved)return;let je={x:K.origin.x+ue/(K.key?ye.scale:1),y:K.origin.y+$e/(K.key?ye.scale:1)};if(K.key)L.current=je,Ue(K.key);else B({camera:{...je,scale:ye.scale}})},onPointerUp:()=>{if(!w.current)return;Y.current=w.current.moved,w.current=null},onPointerCancel:()=>{let S=w.current;if(N(),S?.layout)_.current.set(u,S.layout),g((K)=>K+1);else if(S)B({camera:{...S.origin,scale:ye.scale}});Y.current=!!S?.moved,w.current=null},children:[c.kind==="card"&&r("div",{class:"graph-direction-caption",children:"Incoming starts left · outgoing starts right · drag to rearrange"},void 0,!1,void 0,this),r("div",{class:"home-memory-world",style:{transform:`translate(${ye.x}px, ${ye.y}px) scale(${ye.scale})`},children:[r("svg",{class:"home-memory-links graph-links","aria-label":"Graph connections",children:pe.map((S,K)=>{let ue=W.get(S.id);if(!ue)return null;let $e=S.edges[0],je=mo({kind:$e.relationKind,type:$e.type},e.find((Le)=>Le.id===$e.source.boardId)?.relationVocabulary),se=!S.bundle&&($e.kind!=="card"||je.directed),we=S.bundle?"var(--c-muted)":$e.kind==="card"?`var(--c-rel-${je.ink})`:$e.kind==="wiki"?"var(--c-rel-cites)":"var(--c-rel-derived)",ge=`${S.edges.length} ${S.bundle?"links":"link"} between ${he.get(S.from)?.title} and ${he.get(S.to)?.title}`;return r("g",{class:`graph-link${S.bundle?" is-bundle":" is-exact"}${S.from===y||S.to===y?" is-highlighted":""}${l.inspection===S.id?" is-selected":""}`,"data-from":S.from,"data-to":S.to,"data-count":S.edges.length,"data-link-id":S.id,role:"button",tabindex:0,"aria-label":`Inspect ${ge}`,style:{stroke:we},onClick:()=>Ye(S),onKeyDown:(Le)=>{if(Le.key==="Enter"||Le.key===" ")Le.preventDefault(),Ye(S)},children:[r("defs",{children:r("marker",{id:`graph-arrow-${K}`,viewBox:"0 0 10 10",refX:"9",refY:"5",markerWidth:"6",markerHeight:"6",orient:"auto",children:r("path",{d:"M 0 0 L 10 5 L 0 10 z",style:{fill:we,stroke:"none"}},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("path",{class:"graph-link-hit",d:ue.path},void 0,!1,void 0,this),r("path",{class:"graph-link-line",d:ue.path,"marker-end":se?`url(#graph-arrow-${K})`:void 0},void 0,!1,void 0,this),ue.label&&(S.edges.length>1||c.kind==="card")&&r("text",{x:ue.label.x,y:ue.label.y,children:qe(S)},void 0,!1,void 0,this)]},S.id,!0,void 0,this)})},void 0,!1,void 0,this),ke.map((S,K)=>{let ue=xe.get(S.key),$e=e.find((se)=>se.id===S.boardId),je=S.kind==="board"?S.inContext:!!$e?.pinnedTitles?.some((se)=>se.nodeId===S.cardId)||S.inContext&&!$e?.pin;return r("article",{"data-key":S.key,class:`graph-node is-${S.kind}${te===S.key?" is-selected":""}${je?" in-context":""}${c.kind!=="overview"&&!Pe(S)?" is-external":""}`,style:{left:ue.x,top:ue.y},onPointerEnter:()=>b(S.key),onPointerLeave:()=>b(null),children:r("button",{type:"button",class:"home-memory-select","aria-label":`${S.kind}: ${S.title}`,"aria-pressed":te===S.key,onClick:()=>{if(!Y.current)Ce(S);Y.current=!1},onPointerDown:(se)=>{if(se.button!==0)return;se.stopPropagation(),N(),Y.current=!1,w.current={id:se.pointerId,start:{x:se.clientX,y:se.clientY},origin:ue,key:S.key,layout:new Map(_.current.get(u)),moved:!1},se.currentTarget.setPointerCapture(se.pointerId)},onKeyDown:(se)=>{if(!se.key.startsWith("Arrow"))return;se.preventDefault();let we=(K+(se.key==="ArrowLeft"||se.key==="ArrowUp"?-1:1)+ke.length)%ke.length,ge=ke[we];if(ge)ne(ge),I.current?.querySelectorAll(".home-memory-select")[we]?.focus({preventScroll:!0})},children:[r("span",{class:"graph-glyph","aria-hidden":"true"},void 0,!1,void 0,this),r("strong",{children:S.title},void 0,!1,void 0,this),r("span",{children:S.kind==="board"?`${S.nodeCount??0} cards · ${A.internal.get(S.boardId)??0} internal`:`${O(S.boardId)} · ${S.type??"card"}`},void 0,!1,void 0,this),r("span",{class:je?"memory-context-legend":"",children:je?"⌖ In context":S.folder||"Unfiled"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},S.key,!1,void 0,this)})]},void 0,!0,void 0,this),r("div",{class:"home-memory-zoom",children:[r("button",{type:"button",class:"home-button","aria-label":"Zoom out",onClick:()=>Ie(ye.scale/1.2),children:"−"},void 0,!1,void 0,this),r("span",{children:[Math.round(ye.scale*100),"%"]},void 0,!0,void 0,this),r("button",{type:"button",class:"home-button","aria-label":"Zoom in",onClick:()=>Ie(ye.scale*1.2),children:"+"},void 0,!1,void 0,this),r("button",{type:"button",class:"home-button",onClick:()=>R(),children:"Fit view"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(x||F||!t||!ke.length||o)&&r("div",{class:"home-memory-status",role:"status",children:x||(F?"This endpoint is no longer available. Use Back to return.":o?r(be,{children:["Memory update failed."," ",r("button",{type:"button",class:"home-button",onClick:i,children:"Retry"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):!t?"Loading memory…":Se.length?"No linked nodes in this view. Choose a node in No connections below.":"No matching nodes.")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("aside",{class:"home-memory-sidebar","aria-label":"Graph settings",children:[r("section",{children:[r("h2",{children:c.kind==="overview"?"Find boards":"Find cards and neighbors"},void 0,!1,void 0,this),r("label",{class:"home-memory-search",children:[r("span",{children:"Search graph"},void 0,!1,void 0,this),r("input",{type:"search",value:l.query,placeholder:"Search this graph…",onInput:(S)=>B({query:S.currentTarget.value})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),l.query&&r("ul",{class:"graph-search-results",children:[...ve,...z].filter(re).slice(0,30).map((S)=>r("li",{children:r("button",{type:"button",class:"home-button",onClick:()=>{if(Ae.has(S.key)||S.key===te)ne(S);else Ce(S)},children:S.title},void 0,!1,void 0,this)},S.key,!1,void 0,this))},void 0,!1,void 0,this),Lt("Only in context",l.context,()=>B({context:!l.context}))]},void 0,!0,void 0,this),r("section",{children:[r("h2",{children:"Folders"},void 0,!1,void 0,this),[...new Set(De.nodes.map((S)=>S.folder?.split("/")[0]??""))].sort().map((S)=>r("div",{children:Lt(S||"Unfiled",!l.folders.has(S),()=>{let K=new Set(l.folders);if(K.has(S))K.delete(S);else K.add(S);B({folders:K})})},S,!1,void 0,this))]},void 0,!0,void 0,this),r("section",{children:[r("h2",{children:"Links"},void 0,!1,void 0,this),Object.keys(MT).map((S)=>r("div",{children:Lt(MT[S],!l.hiddenLinks.has(S),()=>{let K=new Set(l.hiddenLinks);if(K.has(S))K.delete(S);else K.add(S);B({hiddenLinks:K})})},S,!1,void 0,this))]},void 0,!0,void 0,this),r("section",{children:[r("h2",{children:"Library evidence"},void 0,!1,void 0,this),r("p",{class:"graph-accounting",children:[A.evidence.length," links ·"," ",[...A.pairs.values()].reduce((S,K)=>S+K.edges.length,0)," between boards ·"," ",[...A.internal.values()].reduce((S,K)=>S+K,0)," inside boards ·"," ",A.missing.length," missing"]},void 0,!0,void 0,this),r("p",{class:"home-memory-help",children:"Counts retain original evidence. Folder membership is not a relation. Filters change the drawing, not the totals."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Se.length>0&&r("details",{class:"graph-unlinked",open:!0,children:[r("summary",{children:["No connections (",Se.length,")"]},void 0,!0,void 0,this),r("div",{children:Se.map((S)=>r("button",{type:"button",class:"home-button graph-tray-node","aria-label":`${S.kind}: ${S.title}`,onClick:()=>Ce(S),children:[S.title,r("small",{children:S.kind==="board"?`${S.nodeCount??0} cards`:O(S.boardId)},void 0,!1,void 0,this)]},S.key,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"home-memory-legend","aria-label":"Legend",children:[r("span",{children:"Click nodes to drill · drag nodes to rearrange · lines for evidence · drag background to pan · scroll to zoom · Fit shows extent · search reveals at readable size"},void 0,!1,void 0,this),r("span",{class:"memory-context-legend",children:"⌖ In context"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r(tp,{initiallyCollapsed:!0,reveal:f,children:M||fe?r("section",{class:"home-memory-details",role:"complementary","aria-label":"Selection details",children:[fe&&r("button",{type:"button",class:"home-memory-clear","aria-label":"Close details",onClick:()=>B({inspection:null}),children:"×"},void 0,!1,void 0,this),r("div",{class:"home-memory-detail-header",children:[r("div",{class:"home-memory-selection-title",children:[r("h3",{children:[fe?`${he.get(fe.from)?.title} ↔ ${he.get(fe.to)?.title}`:Ee," ·"," ",it.length," connections"]},void 0,!0,void 0,this),r("p",{children:fe?"Original evidence, not a new aggregate relation":`${M?.folder||"Unfiled"} / ${O(M.boardId)}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"home-memory-actions",children:M&&r(be,{children:[r("button",{type:"button",class:"home-button is-primary",onClick:()=>void zt(M),children:["Open ",M.kind]},void 0,!0,void 0,this),Ft&&r(ho,{board:Ft},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"home-memory-detail-body",children:[M&&r("p",{class:M.inContext?"memory-context-legend":"",children:[M.inContext?"⌖ In context":"Not in context",M.linksComplete===!1?" · Partial discovery":""]},void 0,!0,void 0,this),r("details",{class:"home-memory-connections",open:!0,children:[r("summary",{children:["Connections",fe?" within this pair":""]},void 0,!0,void 0,this),r("ul",{children:[it.map((S)=>{let K=c.kind==="card"?S.from===te:c.kind==="board"?S.source.boardId===c.boardId:!0,ue=K?S.target:S.source,$e=he.get(Mt(ue)),je=mo({kind:S.relationKind,type:S.type},e.find((we)=>we.id===S.source.boardId)?.relationVocabulary),se=S.kind!=="card"||je.directed;return r("li",{children:[r("span",{children:[se?K?"→":"←":"↔"," ",S.kind==="card"?fa({...S,kind:S.relationKind}):`${S.kind}${S.label?` · ${S.label}`:""}`]},void 0,!0,void 0,this),r("small",{children:[he.get(S.from)?.title??S.source.cardId??O(S.source.boardId)," ",se?"→":"↔"," ",he.get(S.to)?.title??S.target.cardId??O(S.target.boardId)," ·"," ",O(ue.boardId)]},void 0,!0,void 0,this),!$e||S.missing?r("span",{class:"home-memory-missing",children:["⚠ Missing target: ",ue.boardId,ue.cardId?` / ${ue.cardId}`:""]},void 0,!0,void 0,this):r("button",{type:"button",class:"home-button",onClick:()=>Ce($e),children:["Follow ",$e.title]},void 0,!0,void 0,this)]},S.id,!0,void 0,this)}),(t?.unresolvedLinks??[]).filter((S)=>c.kind==="board"?S.source.boardId===c.boardId:Mt(S.source)===te).map((S)=>r("li",{class:"home-memory-missing",children:["⚠ Unresolved wiki: [[",S.ref,"]]"]},`${Mt(S.source)}:${S.ref}`,!0,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):r("div",{class:"home-memory-empty-details",children:[r("h3",{children:"Connections"},void 0,!1,void 0,this),r("p",{class:"home-memory-help",children:"Click a board to explore, then a card to see its exact neighbors. Click a connection line to read the original evidence. Open content is always separate."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},"inspector",!1,void 0,this)]},void 0,!0,void 0,this)}function $T({folder:e,folders:t,onScopeChange:n}){let[o,i]=E(""),[s,a]=E(!1),[l,c]=E(null),[u,d]=E(""),p=Oe.value;q(()=>{if(p)Kt()},[p]),Me(()=>{let C=(v)=>{if(!Oe.value)return;if(!ir(v))return;v.preventDefault(),i(""),a(!1)};return window.addEventListener("keydown",C),()=>window.removeEventListener("keydown",C)},[]);let f=Xn.value,m=(C)=>!e||C===e||!!C?.startsWith(`${e}/`),h=(f?.reviewCards??[]).filter((C)=>m(C.folder)),g=o.trim().toLocaleLowerCase(),y=h.filter((C)=>{let v=f?.cards[Mt(C)];return v&&(!s||v.sources.length>0)&&(!g||`${C.title} ${C.boardTitle} ${v.reasons.join(" ")} ${v.sources.map((k)=>k.title).join(" ")}`.toLocaleLowerCase().includes(g))}),b=new Set(Ge.value.filter((C)=>m(C.folder)).map((C)=>C.id)),x=Object.entries(f?.cards??{}).filter(([C,v])=>!v.retired&&v.unknown&&b.has(JSON.parse(C)[0])).length;if(!p)return null;return r("section",{class:"home-review-view","aria-label":"Card review queue",children:[r("div",{class:"home-main-head",children:[r("div",{class:"home-main-title",children:[r("h1",{class:"home-view-title",children:"Knowledge review"},void 0,!1,void 0,this),r("p",{children:e?`${e} and descendants`:"Whole library"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("label",{children:["Review scope",r("select",{value:e,onChange:(C)=>n(C.currentTarget.value),children:[r("option",{value:"",children:"Whole library"},void 0,!1,void 0,this),t.map((C)=>r("option",{value:C,children:[C," and descendants"]},C,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"home-review-controls",children:[r("label",{children:["Find review cards",r("input",{type:"search",value:o,onInput:(C)=>i(C.currentTarget.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("label",{children:[r("input",{type:"checkbox",checked:s,onChange:(C)=>a(C.currentTarget.checked)},void 0,!1,void 0,this),"Source warnings only"]},void 0,!0,void 0,this),r("button",{type:"button",class:"home-button",onClick:()=>void Kt(),children:"Refresh queue"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Li.value&&r("p",{role:"status",children:"Queue unavailable. Retained results may be out of date. Refresh to retry."},void 0,!1,void 0,this),u&&r("p",{role:"alert",children:u},void 0,!1,void 0,this),!f?r("p",{children:"Loading review cards…"},void 0,!1,void 0,this):r(be,{children:[r("p",{class:"home-review-count",children:["Review needed: ",h.length," ",h.length===1?"card":"cards"," · Showing ",y.length]},void 0,!0,void 0,this),r("table",{class:"home-review-table",children:[r("thead",{children:r("tr",{children:[r("th",{children:"Card"},void 0,!1,void 0,this),r("th",{children:"Board"},void 0,!1,void 0,this),r("th",{children:"Why review"},void 0,!1,void 0,this),r("th",{children:"Last checked"},void 0,!1,void 0,this),r("th",{children:"Open"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),r("tbody",{children:y.map((C)=>{let v=Mt(C),k=f.cards[v],_=[...k.reasons,...k.sources.map((I)=>`${I.title}: ${I.reasons.join(" ")||"Source needs review."}`)];return r("tr",{children:[r("td",{"data-label":"Card",children:C.title},void 0,!1,void 0,this),r("td",{"data-label":"Board",children:C.boardTitle},void 0,!1,void 0,this),r("td",{"data-label":"Why review",children:_.join(" ")||"A source needs review."},void 0,!1,void 0,this),r("td",{"data-label":"Last checked",children:k.lastValidatedAt?new Date(k.lastValidatedAt).toLocaleString():"Never checked"},void 0,!1,void 0,this),r("td",{children:r("button",{type:"button",class:"home-button",disabled:l===v,"aria-label":`Open review: ${C.title} on ${C.boardTitle}`,onClick:async()=>{if(!Oe.value)return;c(v),d("");let I=await zt(C,{review:!0});if(c(null),!I)d("Review did not open. The card may have moved or navigation was cancelled. Refresh and try again.")},children:"Open review"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},v,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),y.length===0&&r("p",{children:"No actionable cards in these filters."},void 0,!1,void 0,this),r("p",{class:"home-review-neutral",children:["No review policy: ",x," ",x===1?"card":"cards",". Missing policy is neutral, not overdue. Explicit content or source warnings still enter the queue."]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var CL=Ri({decayType:fn(["reality","decision","dependency","relevance"]),rate:fn(["fast","medium","slow","durable"]),triggers:We(U().trim().min(1)),revalidationMethod:U().trim().min(1),cadenceDays:Ze().int().min(1).max(36500).optional()}).refine((e)=>e.rate!=="medium"||e.cadenceDays!==void 0,{path:["cadenceDays"],message:"Medium lifecycle requires a cadence in days."}),LT=CL.safeExtend({id:U().trim().min(1),name:U().trim().min(1),glyph:U().trim().min(1)});var sr=(e,t,n,o,i,s)=>({id:e,name:t,glyph:n,decayType:o,rate:i,revalidationMethod:s,triggers:[],...i==="medium"?{cadenceDays:90}:{}}),OT=sr("research","Research","⌕","reality","medium","Check the sources and conflicting evidence."),DT=sr("metric","Metric","▥","reality","fast","Re-read the source dashboard and compare."),BT=sr("decision","Decision","⚑","decision","durable","Check for a superseding decision and changed dependencies."),FT=sr("notes","Notes","✎","relevance","slow","Check relevance to the resumed task."),rp={"Org · team · personal":{categories:[sr("strategy","Strategy","◎","relevance","slow","Check the current goals and decisions."),sr("policy","Policy","◇","decision","slow","Check with the policy owner."),BT,OT,DT,FT],folders:{Org:"strategy","Org/Policies":"policy",Team:"research","Team/Decisions":"decision","Team/Metrics":"metric",Personal:"notes"}},"Solo research":{categories:[sr("question","Question","?","relevance","slow","Check whether this question still matters."),sr("source","Source","▤","reality","medium","Re-read the original source."),sr("finding","Finding","◉","dependency","durable","Compare the supporting and contradicting evidence."),sr("note","Note","✎","relevance","slow","Check relevance to the resumed task.")],folders:{Projects:"question","Projects/Findings":"finding",Sources:"source",Notes:"note"}},"Product team":{categories:[OT,DT,BT,FT],folders:{Discovery:"research","Discovery/Metrics":"metric",Delivery:"notes",Decisions:"decision"}},Empty:{categories:[],folders:{}}};function HT({folder:e,onClose:t}){let n=Oe.value,o=D(null),i=Xn.value,s=i?.folders.find((M)=>M.path===e),a=e?i?.resolvedFolders[e]:null,[l,c]=E(s?.categoryId??""),[u,d]=E(!!s?.lifecycleOverride),[p,f]=E(s?.lifecycleOverride??a?.lifecycle??va),[m,h]=E(()=>i?.categories[0]?structuredClone(i.categories[0]):null),[g,y]=E(null),b=i?.categories.find((M)=>M.id===m?.id),x=i?.folders.filter((M)=>M.categoryId===m?.id)??[],[C,v]=E(!1),[k,_]=E(""),[I,w]=E(()=>JSON.stringify(m)),[P,L]=E("Basics"),[N,Y]=E(""),[B,J]=E(null),X=!e&&JSON.stringify(m)!==I,V=(M)=>{if(!Oe.value||C||B)return;if(X)J(()=>M);else M()},ee=()=>{if(!Oe.value)return;if(B)J(null);else if(g)y(null);else V(t)};bn(o,n,{onEscape:ee}),Me(()=>{if(!n&&o.current?.contains(document.activeElement))document.querySelector('button[aria-label="Settings"]')?.focus({preventScroll:!0})},[n]),q(()=>{if(n)Kt()},[n]);let he=(M)=>{let O=structuredClone(M);h(O),w(JSON.stringify(O)),L("Basics"),y(null),_("")},A=async(M,O)=>{if(!Oe.value)return!1;return(await de("knowledgeWrite",`/api/canvas/knowledge/${M}`,null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(O)}))?.ok===!0},te=async(M)=>{if(!Oe.value||C||!i)return;let O=tn;v(!0),_("");let Pe=!0,Fe=rp[M];for(let De of Fe.categories){if(!Oe.value||O!==tn){Pe=!1;break}if(!i.categories.some((Ae)=>Ae.id===De.id))Pe=await A("category",{category:De});if(!Pe)break}if(Pe)for(let[De,Ae]of Object.entries(Fe.folders)){if(!Oe.value||O!==tn){Pe=!1;break}if(!i.folders.some((ve)=>ve.path===De))Pe=await A("folder",{path:De,categoryId:Ae,lifecycleOverride:null});if(!Pe)break}await Kt(),v(!1),_(Pe?M==="Empty"?"No starter data added. Existing data is unchanged.":"Starter data added. Existing categories and folder settings were preserved.":"Template stopped at a failed save. Saved entries remain; retry adds only missing entries.")};return r("div",{class:"knowledge-backdrop",hidden:!n,style:n?void 0:{display:"none"},onKeyDown:(M)=>{if(M.key==="Escape")M.stopPropagation(),M.preventDefault(),ee()},children:r("div",{ref:o,class:`knowledge-dialog${e?"":" is-category-editor"}`,role:"dialog","aria-modal":"true","aria-label":e?"Folder settings":"Categories",children:[r("header",{children:[r("div",{class:"knowledge-dialog-title",children:[r("h2",{children:e?`${e.split("/").at(-1)} · Folder settings`:"Workspace categories"},void 0,!1,void 0,this),e&&r("span",{class:"knowledge-folder-path",children:e},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("button",{type:"button","aria-label":"Close settings",disabled:C,onClick:()=>V(t),children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),k&&r("p",{role:"status",children:k},void 0,!1,void 0,this),B&&r("div",{role:"group","aria-label":"Discard category changes",class:"category-discard",children:[r("p",{children:"Discard unsaved category changes?"},void 0,!1,void 0,this),r("button",{type:"button",onClick:()=>J(null),children:"Keep editing"},void 0,!1,void 0,this),r("button",{type:"button",onClick:()=>{if(!Oe.value)return;let M=B;J(null),w(JSON.stringify(m)),M()},children:"Discard changes"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!i?r("p",{children:"Knowledge settings unavailable. Close and retry."},void 0,!1,void 0,this):e?r("form",{onSubmit:async(M)=>{if(M.preventDefault(),!Oe.value||C)return;let O=tn;v(!0);let Pe=await A("folder",{path:e,categoryId:l||null,lifecycleOverride:u?Jl(p):null});if(await Kt(),v(!1),Pe&&Oe.value&&O===tn)t();else if(!Pe)_("Folder settings were not saved. Retry.")},children:[r("div",{class:"knowledge-field",children:[r("span",{children:"Category"},void 0,!1,void 0,this),r(Mr,{label:"Category",value:l,onChange:c,options:[{value:"",label:"Use the parent’s"},...i.categories.map((M)=>({value:M.id,label:`${M.glyph} ${M.name}`}))]},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("p",{children:["Currently"," ",a?.category?`${a.category.glyph} ${a.category.name} · ${a.categorySourceFolder===e?"set here":`inherited from ${a.categorySourceFolder}`}`:"unknown",". Cards inherit their category; only lifecycle can be overridden."]},void 0,!0,void 0,this),r("label",{children:[r("input",{type:"checkbox",checked:u,onChange:(M)=>d(M.currentTarget.checked)},void 0,!1,void 0,this)," ","Override lifecycle for this folder"]},void 0,!0,void 0,this),u?r(Xl,{value:p,onChange:f},void 0,!1,void 0,this):r("p",{children:"Lifecycle comes from the selected category or parent. Unknown has no passive expiry."},void 0,!1,void 0,this),r("button",{type:"submit",disabled:C,children:"Save folder settings"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):r(be,{children:[r("details",{class:"category-templates",children:[r("summary",{children:"Add from template"},void 0,!1,void 0,this),r("div",{class:"knowledge-presets",children:Object.entries(rp).map(([M,O])=>r("button",{type:"button",disabled:C||!!B,onClick:()=>V(()=>{if(X)h(b?structuredClone(b):null),w(JSON.stringify(b??null));te(M)}),children:[r("strong",{children:M},void 0,!1,void 0,this),r("span",{children:Object.keys(O.folders).join(" / ")||"No folders or categories"},void 0,!1,void 0,this)]},M,!0,void 0,this))},void 0,!1,void 0,this),r("p",{children:"Templates add missing data. They never replace your existing settings. Rename any category below."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"category-editor-columns",children:[r("section",{class:"category-list-panel",children:[r("h3",{children:[i.categories.length," categories"]},void 0,!0,void 0,this),r("label",{children:["Search categories",r("input",{type:"search",value:N,onInput:(M)=>Y(M.currentTarget.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("button",{type:"button",disabled:C,onClick:()=>V(()=>he({...va,id:crypto.randomUUID(),name:"",glyph:"◇"})),children:"Add category"},void 0,!1,void 0,this),r("div",{class:"category-library",role:"group","aria-label":"Workspace categories",children:i.categories.filter((M)=>M.name.toLocaleLowerCase().includes(N.toLocaleLowerCase())).map((M)=>r("button",{type:"button",class:"category-choice",disabled:C,"aria-pressed":m?.id===M.id,onClick:()=>{if(m?.id!==M.id)V(()=>he(M))},children:[r("strong",{children:[M.glyph," ",M.name]},void 0,!0,void 0,this),r("span",{children:[M.decayType," · ",M.rate,M.rate==="medium"&&M.cadenceDays?` · ${M.cadenceDays} days`:""]},void 0,!0,void 0,this)]},M.id,!0,void 0,this))},void 0,!1,void 0,this),r("p",{children:"Folders with no category above them stay unknown. Categories carry no colour."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),m&&r("form",{class:"category-inspector",noValidate:!0,onSubmit:async(M)=>{if(M.preventDefault(),!Oe.value||C)return;let O=tn,Pe=LT.safeParse({...m,...Jl(m)});if(!Pe.success){let Ae=String(Pe.error.issues[0].path[0]);L(["name","glyph","id"].includes(Ae)?"Basics":"Review policy"),_(Pe.error.issues[0].message),setTimeout(()=>{if(!Oe.value||O!==tn)return;let ve=Ae==="name"?"Name":Ae==="glyph"?"Glyph":Ae==="cadenceDays"?"Cadence in days":"How to check",z=o.current?.querySelectorAll("label");Array.from(z??[]).find((re)=>re.textContent?.trim().startsWith(ve))?.querySelector("input")?.focus()},0);return}v(!0);let Fe=await de("knowledgeWrite","/api/canvas/knowledge/category",null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({category:Pe.data})}),De=Fe?.ok===!0;if(await Kt(),v(!1),!Oe.value||O!==tn)return;if(De){let Ae=Fe?.category??Pe.data;h(Ae),w(JSON.stringify(Ae))}_(De?"Category saved. Inheriting folders now use these defaults.":"Category was not saved. Retry.")},children:[r("h3",{children:b?"Edit category defaults":"New category"},void 0,!1,void 0,this),r("div",{role:"tablist","aria-label":"Category settings",class:"category-tabs",children:["Basics","Review policy","Usage"].map((M)=>r("button",{type:"button",role:"tab",id:`category-tab-${M.replace(" ","-")}`,"aria-controls":"category-tab-panel","aria-selected":P===M,onClick:()=>L(M),children:M},M,!1,void 0,this))},void 0,!1,void 0,this),r("fieldset",{disabled:C||!!B,id:"category-tab-panel",role:"tabpanel","aria-labelledby":`category-tab-${P.replace(" ","-")}`,class:"category-tab-content",children:[P==="Basics"&&r(be,{children:[r("label",{children:["Name",r("input",{required:!0,value:m.name,onInput:(M)=>h({...m,name:M.currentTarget.value})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("label",{children:["Glyph",r("input",{required:!0,value:m.glyph,onInput:(M)=>h({...m,glyph:M.currentTarget.value})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"category-glyph-choices",role:"group","aria-label":"Glyph choices",children:[...new Set(Object.values(rp).flatMap((M)=>M.categories.map((O)=>O.glyph)))].map((M)=>r("button",{type:"button","aria-label":`Choose glyph ${M}`,"aria-pressed":m.glyph===M,onClick:()=>h({...m,glyph:M}),children:M},M,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),P==="Review policy"&&r(Xl,{value:m,onChange:(M)=>h({...m,...M})},void 0,!1,void 0,this),P==="Usage"&&r(be,{children:[r("p",{children:"Folders inherit these defaults. Folder settings and card lifecycle overrides remain unchanged. Unknown has no passive expiry."},void 0,!1,void 0,this),x.length===0&&r("p",{children:"No folders assigned."},void 0,!1,void 0,this),b&&(x.length>0?r("p",{children:["Cannot delete: assigned to ",x.map((M)=>M.path).join(", "),". Reassign or clear those folder categories first. Empty folders also count."]},void 0,!0,void 0,this):g===b.id?r("div",{role:"group","aria-label":"Confirm category deletion",children:[r("p",{children:["Delete ",b.name,"? This removes the category from this workspace."]},void 0,!0,void 0,this),r("button",{type:"button",disabled:C,onClick:()=>y(null),children:"Cancel deletion"},void 0,!1,void 0,this),r("button",{type:"button",class:"is-danger",disabled:C,onClick:async()=>{if(!Oe.value||C)return;let M=tn;v(!0);let O=await de("knowledgeRemove",`/api/canvas/knowledge/category/${encodeURIComponent(b.id)}`,null,{method:"DELETE"});if(await Kt(),v(!1),!Oe.value||M!==tn)return;if(y(null),O?.ok===!0)h(null),w("null");_(O?.ok===!0?"Category deleted.":O?.error??"Category was not deleted. Retry.")},children:"Confirm deletion"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):r("button",{type:"button",class:"is-danger",disabled:C,onClick:()=>y(b.id),children:"Delete category"},void 0,!1,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("footer",{class:"category-editor-footer",children:[r("button",{type:"button",disabled:C||!!B,onClick:()=>V(t),children:"Cancel"},void 0,!1,void 0,this),r("button",{type:"submit",disabled:C||!!B,children:"Save category"},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)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function UT({onClose:e}){let t=D(null),n=Xn.value?.relationPresets,[o,i]=E(),s=o===void 0?n?.[0]??null:o,[a,l]=E(null),[c,u]=E(null),[d,p]=E(null),[f,m]=E(""),[h,g]=E(!1),[y,b]=E(""),[x,C]=E(!1),v=D(null);q(()=>{if(!d)return;let N=document.activeElement;return v.current?.querySelector("button")?.focus(),()=>{if(N instanceof HTMLElement&&N.isConnected)N.focus()}},[d]);let k=s,_=a!==null&&JSON.stringify(a)!==JSON.stringify(c),I=(N)=>{if(h)return;if(_)p(()=>N);else N()},w=()=>{if(d)p(null);else if(x)C(!1);else I(e)};bn(t,!0,{onEscape:w});let P=(N)=>{i(N?structuredClone(N):null),l(null),u(null),C(!1),b("")},L=(N,Y)=>{if(a)l({...a,vocabulary:a.vocabulary.map((B,J)=>J===N?{...B,...Y}:B)})};return r("div",{class:"knowledge-backdrop",onKeyDown:(N)=>{if(N.key==="Escape")N.preventDefault(),N.stopPropagation(),w()},children:r("div",{ref:t,class:"knowledge-dialog is-category-editor relation-presets-dialog",role:"dialog","aria-modal":"true","aria-label":"Workspace relation presets",children:[r("header",{children:[r("h2",{children:"Workspace relation presets"},void 0,!1,void 0,this),r("button",{type:"button",disabled:h||!!d,"aria-label":"Close relation presets",onClick:()=>I(e),children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("p",{children:"Saved templates are shared across the workspace. Saving does not apply a preset to any board."},void 0,!1,void 0,this),y&&r("p",{role:"status",children:y},void 0,!1,void 0,this),d&&r("div",{ref:v,role:"alertdialog","aria-label":"Discard preset changes","aria-modal":"true",class:"relation-dirty-guard",children:[r("p",{children:"Discard unsaved preset changes?"},void 0,!1,void 0,this),r("button",{type:"button",onClick:()=>p(null),children:"Keep editing"},void 0,!1,void 0,this),r("button",{type:"button",onClick:()=>{let N=d;p(null),N()},children:"Discard changes"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{inert:d?!0:void 0,children:!n?r("p",{children:"Relation presets unavailable. Close and retry."},void 0,!1,void 0,this):r("div",{class:"category-editor-columns",children:[r("section",{children:[r("h3",{children:[n.length," presets"]},void 0,!0,void 0,this),r("button",{type:"button",disabled:h,onClick:()=>I(()=>{P(null);let N={id:crypto.randomUUID(),name:"",vocabulary:[]};u(structuredClone(N)),l(N)}),children:"Add preset"},void 0,!1,void 0,this),r("div",{class:"category-library",role:"group","aria-label":"Workspace relation presets",children:n.map((N)=>r("button",{type:"button",class:"category-choice",disabled:h,"aria-pressed":(a?.id??s?.id)===N.id,onClick:()=>I(()=>P(N)),children:[r("strong",{children:N.name},void 0,!1,void 0,this),r("span",{children:N.vocabulary.map((Y)=>Y.kind).join(" · ")||"No relation kinds"},void 0,!1,void 0,this)]},N.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("section",{class:"relation-preset-detail",children:a?r("form",{class:"relation-vocabulary",onSubmit:async(N)=>{if(N.preventDefault(),h)return;if(new Set(a.vocabulary.map((B)=>B.kind.trim())).size!==a.vocabulary.length){b("Give each relation kind a unique name.");return}g(!0);let Y=await de("relationPresetWrite","/api/canvas/knowledge/relation-preset",null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({preset:a})});if(await Kt(),g(!1),Y?.ok)P(Y.preset);b(Y?.ok?"Preset saved for the workspace. Existing boards are unchanged.":"Preset was not saved. Retry.")},children:[r("h3",{children:s?"Customize shared preset":"New shared preset"},void 0,!1,void 0,this),r("label",{children:["Name",r("input",{required:!0,pattern:".*\\S.*",maxLength:80,disabled:h,value:a.name,onInput:(N)=>l({...a,name:N.currentTarget.value})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("p",{children:"Kinds stay open. Choose meaning ink and direction, not pin, agent or warning colours."},void 0,!1,void 0,this),a.vocabulary.map((N,Y)=>r("div",{class:"vocabulary-row",children:[r("input",{required:!0,pattern:".*\\S.*","aria-label":`Kind ${Y+1}`,maxLength:80,disabled:h,value:N.kind,onInput:(B)=>L(Y,{kind:B.currentTarget.value})},void 0,!1,void 0,this),r("select",{"aria-label":`Ink ${Y+1}`,disabled:h,value:N.ink,onChange:(B)=>L(Y,{ink:B.currentTarget.value}),children:["supports","contradicts","cites","derived","informs","related"].map((B)=>r("option",{children:B},B,!1,void 0,this))},void 0,!1,void 0,this),r("label",{children:[r("input",{type:"checkbox",disabled:h,checked:N.directed,onChange:(B)=>L(Y,{directed:B.currentTarget.checked})},void 0,!1,void 0,this),"Arrow"]},void 0,!0,void 0,this),r("button",{type:"button","aria-label":`Remove kind ${Y+1}`,disabled:h,onClick:()=>l({...a,vocabulary:a.vocabulary.filter((B,J)=>J!==Y)}),children:"×"},void 0,!1,void 0,this)]},Y,!0,void 0,this)),r("button",{type:"button",disabled:h||a.vocabulary.length>=64,onClick:()=>l({...a,vocabulary:[...a.vocabulary,{kind:"",ink:"related",directed:!0}]}),children:"Add kind"},void 0,!1,void 0,this),r("div",{class:"relation-preset-footer",children:[r("button",{type:"submit",disabled:h,children:"Save preset"},void 0,!1,void 0,this),r("button",{type:"button",disabled:h,onClick:()=>I(()=>P(s)),children:"Cancel customization"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):k?r(be,{children:[r("h3",{children:k.name},void 0,!1,void 0,this),r("p",{children:"Saved relations · read-only example"},void 0,!1,void 0,this),r("p",{children:"Use on board replaces only the chosen board’s vocabulary. Matching connections use its ink and direction; connection records are not rewritten."},void 0,!1,void 0,this),r("ul",{class:"relation-preset-preview","aria-label":"Saved relation preview",children:k.vocabulary.map((N)=>r("li",{style:{"--relation-ink":`var(--c-rel-${N.ink})`},children:[r("strong",{children:N.kind},void 0,!1,void 0,this),r("div",{class:"relation-preset-example",children:[r("span",{children:"Example A"},void 0,!1,void 0,this),r("svg",{viewBox:"0 0 120 24","aria-hidden":"true",children:[r("line",{x1:"8",y1:"12",x2:"112",y2:"12",stroke:"currentColor","stroke-width":"2","stroke-dasharray":N.ink==="related"?"3 5":void 0},void 0,!1,void 0,this),N.directed&&r("path",{d:"M 102 6 L 112 12 L 102 18",fill:"none",stroke:"currentColor","stroke-width":"2"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("span",{children:"Example B"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("span",{children:[N.ink," · ",N.directed?"Directed: A → B":"Undirected: A — B"]},void 0,!0,void 0,this)]},N.kind,!0,void 0,this))},void 0,!1,void 0,this),!k.vocabulary.length&&r("p",{children:"No relation kinds. This empty preset can still be used on a board."},void 0,!1,void 0,this),r("div",{class:"relation-preset-footer",children:k&&r(be,{children:[r("label",{children:["Apply saved preset to board",r("select",{"aria-label":"Apply saved preset to board",disabled:h,value:f,onChange:(N)=>m(N.currentTarget.value),children:[r("option",{value:"",children:"Choose a board"},void 0,!1,void 0,this),Ge.value.map((N)=>r("option",{value:N.id,children:N.name},N.id,!1,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("button",{type:"button",class:"relation-preset-use",disabled:h||!f,onClick:async()=>{if(h||!f)return;g(!0);let N=await vr(f,{relationVocabulary:k.vocabulary});g(!1),b(N?"Preset applied. Connection records and other boards are unchanged.":"Preset was not applied. Retry.")},children:"Use on board"},void 0,!1,void 0,this),r("button",{type:"button",disabled:h,onClick:()=>{u(structuredClone(k)),l(structuredClone(k)),C(!1),b("")},children:"Customize preset"},void 0,!1,void 0,this),x?r("div",{role:"group","aria-label":"Confirm preset deletion",children:[r("p",{children:["Delete ",k.name,"? Boards that used it keep their existing vocabulary."]},void 0,!0,void 0,this),r("button",{type:"button",disabled:h,onClick:()=>C(!1),children:"Cancel deletion"},void 0,!1,void 0,this),r("button",{type:"button",class:"is-danger",disabled:h,onClick:async()=>{if(h)return;g(!0);let N=await de("relationPresetRemove",`/api/canvas/knowledge/relation-preset/${encodeURIComponent(k.id)}`,null,{method:"DELETE"});if(await Kt(),g(!1),C(!1),N?.ok)P(null);b(N?.ok?"Preset deleted. Existing boards are unchanged.":"Preset was not deleted. Retry.")},children:"Confirm deletion"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):r("button",{type:"button",class:"is-danger",disabled:h,onClick:()=>C(!0),children:"Delete preset"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):r("p",{children:"Choose a saved preset or add a new one."},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function jT(e){if(!e)return"never opened";if((Date.now()-new Date(e).getTime())/86400000>=30)return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"});return Kd(e)}var ar=(e,t)=>`${e} ${t}${e===1?"":"s"}`;function ZT(e){return(e.links?.length??0)+(e.backlinks?.length??0)}async function Sg(e){let t=await Dn("New board","Board name",{confirm:"Create"});if(t)await _k(t,e)}var WT="pmx-canvas-home-collapsed";function TL(){try{let e=localStorage.getItem(WT);if(e)return new Set(JSON.parse(e))}catch{}return new Set([wT])}function IL(e){try{localStorage.setItem(WT,JSON.stringify([...e]))}catch{}}var tc=(e,t)=>e.folder===t||!!e.folder?.startsWith(`${t}/`),lr=(e)=>e.split("/").at(-1)??e;function EL({board:e}){return r("div",{class:"home-thumb","aria-hidden":"true",children:r("div",{class:"home-thumb-inner",children:(e.preview??[]).map((t,n)=>r("span",{class:`home-thumb-card${t.pinned?" is-pinned":""}`,style:{left:`${t.x*100}%`,top:`${t.y*100}%`,width:`${t.w*100}%`,height:`${t.h*100}%`}},n,!1,void 0,this))},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function qT(){let e=Ge.value,t=Oe.value,[n,o]=E("Folders"),i=!t&&n==="Review"?"Folders":n,[s,a]=E(()=>[...Ge.value].sort((Ee,S)=>(S.lastOpenedAt??"").localeCompare(Ee.lastOpenedAt??""))[0]?.folder??""),[l,c]=E([]),[u,d]=E(null),[p,f]=E(!1),[m,h]=E(null),[g,y]=E(!1),[b,x]=E(!1),[C,v]=E(null),[k,_]=E(null),[I,w]=E(""),[P,L]=E([]),[N,Y]=E(TL),[B,J]=E(!1),[X,V]=E(!1),ee=D(null),he=D(null),A=[...new Set([...e.flatMap((F)=>F.folder?Ql(F.folder):[]),...(Xn.value?.folders??[]).flatMap((F)=>Ql(F.path)),...l.flatMap(Ql)])].sort((F,Ee)=>F.localeCompare(Ee)),te=(F)=>A.filter((Ee)=>F?Ee.startsWith(`${F}/`)&&!Ee.slice(F.length+1).includes("/"):!Ee.includes("/")),M=I.trim().toLocaleLowerCase(),O=e.filter((F)=>F.pin),Pe=O.reduce((F,Ee)=>F+(Ee.mapChars??0),0),Fe=te(s),De=e.filter((F)=>(F.folder??"")===s).sort((F,Ee)=>(Ee.lastOpenedAt??"").localeCompare(F.lastOpenedAt??"")),Ae=M?e.filter((F)=>`${F.name} ${F.folder??""}`.toLocaleLowerCase().includes(M)):[],ve=e.find((F)=>F.id===m)??null,z=e.find((F)=>F.id===C),re=e.find((F)=>F.id===k),Ne=new Set(e.filter((F)=>!s||tc(F,s)).map((F)=>F.id)),ke=Object.entries(Xn.value?.cards??{}).filter(([F])=>Ne.has(JSON.parse(F)[0])).map(([,F])=>F),le=ke.filter((F)=>!F.retired&&(F.due||F.sources.length)).length,Se=ke.filter((F)=>F.unknown).length,pe=Xn.value?.resolvedFolders[s]?.category,Ue=new Map;for(let[F,Ee]of Object.entries(Xn.value?.cards??{})){if(Ee.retired||!(Ee.due||Ee.sources.length))continue;let[S,K]=JSON.parse(F),ue=Ue.get(S)??[];ue.push(K),Ue.set(S,ue)}let xe=M?Ae:De,qe=async(F)=>{if(!Oe.value)return;let Ee=tn,S=Ue.get(F)?.[0];if(!S)return;if(await zt({boardId:F,cardId:S})&&Oe.value&&Ee===tn&&ae.value===F)Ro.value="To review"};q(()=>{let F=I.trim();if(!F){L([]);return}let Ee=!1,S=window.setTimeout(()=>{de("searchLibrary",`/api/canvas/search?q=${encodeURIComponent(F)}&scope=library&limit=30`,null).then((K)=>{if(!Ee)L(K?.results??[])})},150);return()=>{Ee=!0,window.clearTimeout(S)}},[I]),q(()=>{if(g)he.current?.querySelector('[role="menuitem"]')?.focus()},[g]),q(()=>{if(m&&!e.some((F)=>F.id===m))h(null)},[e,m]),Me(()=>{if(i!=="Folders"||!m)return;let F=(Ee)=>{if(!ir(Ee))return;Ee.preventDefault(),h(null),x(!1)};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[i,m]);let W=(F)=>zt(F),ye=(F)=>{let Ee=new Set(N);if(Ee.has(F))Ee.delete(F);else Ee.add(F);Y(Ee),IL(Ee)},He=(F)=>{a(F),w(""),h(null),J(!1)},R=(F)=>{h(F),y(!1),x(!1)},ne=async()=>{let F=await Dn("New folder","Folder name",{confirm:"Create"});if(!F)return;let Ee;try{Ee=ep(s?`${s}/${F}`:F)}catch{return}if(!Ee)return;c((S)=>[...S,Ee]),He(Ee)},Ce=async(F)=>{let Ee=await Dn("Rename board","Board name",{initial:F.name,confirm:"Rename"});if(Ee&&Ee!==F.name)await vr(F.id,{name:Ee})},Ie=(F,Ee)=>{let S=te(F),K=!N.has(F),ue=e.filter((je)=>tc(je,F)).length,$e=e.some((je)=>je.pin&&tc(je,F));return r("li",{children:[r("div",{class:`home-tree-row${s===F&&!M?" is-selected":""}`,"data-folder":F,children:[r("span",{class:"home-tree-indent",style:{width:`${Ee*16}px`}},void 0,!1,void 0,this),S.length>0?r("button",{type:"button",class:"home-tree-chevron","aria-label":K?`Fold ${lr(F)}`:`Unfold ${lr(F)}`,"aria-expanded":K,onClick:()=>ye(F),children:K?r(Hs,{},void 0,!1,void 0,this):r(ni,{},void 0,!1,void 0,this)},void 0,!1,void 0,this):r("span",{class:"home-tree-chevron"},void 0,!1,void 0,this),r("button",{type:"button",class:"home-tree-name",onClick:()=>He(F),children:lr(F)},void 0,!1,void 0,this),$e&&r("span",{class:"home-tree-pin","aria-label":"Has a board in the agent's context"},void 0,!1,void 0,this),r("span",{class:"home-tree-count",children:ue},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K&&S.length>0&&r("ul",{class:"home-tree",children:S.map((je)=>Ie(je,Ee+1))},void 0,!1,void 0,this)]},F,!0,void 0,this)},fe=r("ul",{class:"home-tree","aria-label":"Folders",children:[te("").map((F)=>Ie(F,0)),r("li",{children:r("div",{class:`home-tree-row is-unfiled${s===""&&!M?" is-selected":""}`,children:[r("span",{class:"home-tree-chevron"},void 0,!1,void 0,this),r("button",{type:"button",class:"home-tree-name",onClick:()=>He(""),children:"Unfiled"},void 0,!1,void 0,this),r("span",{class:"home-tree-count",children:e.filter((F)=>!F.folder).length},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),it=r("ul",{class:"home-pinned","aria-label":"Pinned boards",children:O.map((F)=>r("li",{children:r("button",{type:"button",class:"home-pinned-row",onClick:()=>He(F.folder??""),children:[r("span",{class:"home-pin-dot","aria-hidden":"true",children:r(uo,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("span",{class:"home-pinned-name",children:F.name},void 0,!1,void 0,this),r("span",{class:"home-tree-count",children:F.folder?lr(F.folder):"Unfiled"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},F.id,!1,void 0,this))},void 0,!1,void 0,this),Ft=r("label",{class:"home-search",children:[r(Eu,{},void 0,!1,void 0,this),r("span",{class:"sr-only",children:"Find boards, cards and folders"},void 0,!1,void 0,this),r("input",{type:"search",placeholder:"Boards, cards, folders…",value:I,onInput:(F)=>w(F.currentTarget.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ye=(F)=>r("li",{children:r("article",{class:`home-card${F.pin?" is-pinned":""}${m===F.id?" is-selected":""}`,"data-testid":"home-board","data-board-id":F.id,children:[r("button",{type:"button",class:"home-card-select","aria-label":F.name,"aria-pressed":m===F.id,onClick:()=>R(F.id),onDblClick:()=>void zn(F.id),children:[r(EL,{board:F},void 0,!1,void 0,this),r("span",{class:"home-card-body",children:[r("span",{class:"home-card-name",children:F.name},void 0,!1,void 0,this),r("span",{class:"home-card-readme",children:F.summary??"No README yet."},void 0,!1,void 0,this),r("span",{class:"home-card-meta",children:[r("span",{children:ar(F.nodeCount,"card")},void 0,!1,void 0,this),ZT(F)>0&&r("span",{children:["↔ ",ar(ZT(F),"link")]},void 0,!0,void 0,this),r("span",{class:"home-card-when",children:jT(F.lastOpenedAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),t&&Ue.has(F.id)&&r("button",{type:"button",class:"home-card-review","aria-label":`Review ${F.name}`,onClick:()=>void qe(F.id),children:["⧗ Review ",ar(Ue.get(F.id).length,"card")]},void 0,!0,void 0,this),r(ho,{board:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},F.id,!1,void 0,this),Lt=ve&&r("aside",{class:"home-details","aria-label":"Board details","data-testid":"home-details",children:[r("button",{type:"button",class:"home-details-grip","aria-label":"Close details",onClick:()=>R(null)},void 0,!1,void 0,this),r("div",{class:"home-details-head",children:[r("span",{class:"home-details-folder",children:ve.folder?lr(ve.folder):"Unfiled"},void 0,!1,void 0,this),r("span",{class:"home-details-name",children:ve.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:`home-details-context${ve.pin?" is-on":""}`,children:[r("span",{class:"home-details-context-text",children:r("span",{class:"home-details-context-label",children:ve.pin?"In the agent's context":"Not in the agent's context"},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("button",{type:"button",role:"switch","aria-checked":!!ve.pin,"aria-label":"In the agent's context",class:"home-switch",onClick:()=>void zs(ve.id,!ve.pin),children:r("span",{class:"home-switch-knob"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),b?r("div",{class:"home-details-confirm",role:"alert",children:[r("span",{children:["Delete ",r("strong",{children:ve.name},void 0,!1,void 0,this)," and its ",ar(ve.nodeCount,"card")," and snapshots? This can't be undone."]},void 0,!0,void 0,this),r("span",{class:"home-details-actions",children:[r("button",{type:"button",class:"home-button",onClick:()=>x(!1),children:"Cancel"},void 0,!1,void 0,this),r("button",{type:"button",class:"home-button is-danger",onClick:()=>{x(!1),Ek(ve.id)},children:"Delete board"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):r("div",{class:"home-details-actions",children:[r("button",{type:"button",class:"home-button is-primary",onClick:()=>void zn(ve.id),children:"Open board"},void 0,!1,void 0,this),t&&Ue.has(ve.id)&&r("button",{type:"button",class:"home-button",onClick:()=>void qe(ve.id),children:"Review cards"},void 0,!1,void 0,this),r("span",{class:"home-more",children:[r("button",{ref:ee,type:"button",class:"home-button is-icon","aria-label":"More: move, rename, create from, delete","aria-haspopup":"menu","aria-expanded":g,onClick:()=>y(!g),children:r(pl,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),g&&r("span",{ref:he,class:"home-more-menu",role:"menu",onKeyDown:(F)=>{let Ee=[...he.current?.querySelectorAll('[role="menuitem"]')??[]],S=Ee.indexOf(document.activeElement);if(F.key==="Escape")F.preventDefault(),y(!1),ee.current?.focus();else if(F.key==="ArrowDown"||F.key==="ArrowUp"){F.preventDefault();let K=F.key==="ArrowDown"?1:-1;Ee[(S+K+Ee.length)%Ee.length]?.focus()}},children:[["Move…",()=>v(ve.id)],["Rename…",()=>void Ce(ve)],["Create from…",()=>_(ve.id)],["Delete…",()=>x(!0)]].map(([F,Ee])=>r("button",{type:"button",role:"menuitem",class:"home-more-item",onClick:()=>{y(!1),Ee()},children:F},F,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);return r("div",{class:"home-shell",children:[u!==null&&r(HT,{folder:u||void 0,onClose:()=>d(null)},u,!1,void 0,this),p&&r(UT,{onClose:()=>f(!1)},void 0,!1,void 0,this),r("nav",{class:"home-view-tabs","aria-label":"Library view",children:[["Folders","Map","Graph","Review"].filter((F)=>t||F!=="Review").map((F)=>r("button",{type:"button",class:"home-button","aria-pressed":i===F,onClick:()=>o(F),children:F},F,!1,void 0,this)),r("button",{type:"button",class:"home-button",onClick:()=>f(!0),children:"Relation presets"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i==="Map"||i==="Graph"?i==="Map"?r(TT,{},void 0,!1,void 0,this):r(zT,{},void 0,!1,void 0,this):r("div",{class:`home-view${ve&&i==="Folders"?" has-details":""}`,"data-testid":"home-view",children:[r("aside",{class:`home-library${B?" is-open":""}`,"aria-label":"Library",children:[r("div",{class:"home-library-head",children:[r("span",{class:"home-library-title",children:"Library"},void 0,!1,void 0,this),r("span",{class:"home-tree-count",children:ar(e.length,"board")},void 0,!1,void 0,this),t&&r("button",{type:"button",class:"home-button",onClick:()=>{if(Oe.value)d("")},children:"Categories"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ft,O.length>0&&r("section",{class:"home-library-section",children:[r("span",{class:"home-section-label",children:"Pinned boards"},void 0,!1,void 0,this),it,r("span",{class:"home-pinned-cost",children:["≈ ",Vl(Pe)," tokens · ",ar(O.length,"board")]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("section",{class:"home-library-section is-folders",children:[r("span",{class:"home-section-label",children:"Folders"},void 0,!1,void 0,this),fe,r("button",{type:"button",class:"home-tree-new",onClick:()=>void ne(),children:"+ New folder"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("main",{class:"home-main",children:[r("div",{class:"home-narrow",children:[Ft,O.length>0&&r(be,{children:[r("button",{type:"button",class:"home-narrow-context","aria-expanded":X,onClick:()=>V(!X),children:[r("span",{class:"home-pin-dot","aria-hidden":"true",children:r(uo,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("span",{class:"home-narrow-context-label",children:["In context: ",ar(O.length,"board")]},void 0,!0,void 0,this),r("span",{class:"home-narrow-context-cost",children:["≈ ",Vl(Pe)," tokens"]},void 0,!0,void 0,this),r("span",{children:X?"Hide ▴":"Show ▾"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X&&it]},void 0,!0,void 0,this),r("button",{type:"button",class:"home-narrow-picker","aria-expanded":B,onClick:()=>J(!B),children:[s?lr(s):"Library",r("span",{class:"home-tree-count",children:["· ",s?e.filter((F)=>tc(F,s)).length:De.length," ▾"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),i==="Review"?r($T,{folder:s,folders:A,onScopeChange:He},void 0,!1,void 0,this):r(be,{children:[r("div",{class:"home-main-head",children:[r("div",{class:"home-main-title",children:[r("nav",{class:"home-crumbs","aria-label":"Folder path",children:[r("button",{type:"button",onClick:()=>He(""),children:"Library"},void 0,!1,void 0,this),s&&Ql(s).map((F)=>r("span",{children:[r("span",{class:"home-crumb-sep",children:"/"},void 0,!1,void 0,this),r("button",{type:"button",onClick:()=>He(F),children:lr(F)},void 0,!1,void 0,this)]},F,!0,void 0,this))]},void 0,!0,void 0,this),r("h1",{class:"home-view-title",children:M?`Results for “${I.trim()}”`:s?lr(s):"Library"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t&&r("button",{type:"button",class:"home-button",onClick:()=>{if(Oe.value)d(s)},children:[" ",s?"Folder settings":"Categories"]},void 0,!0,void 0,this),r("button",{type:"button",class:"home-button is-primary",onClick:()=>void Sg(s||null),children:s?"New board here":"New board"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t&&Xn.value&&!M&&r("section",{class:"home-main-section","aria-label":"Folder review summary",children:[r("span",{class:"home-section-label",children:["Card review · ",s?"In this folder and subfolders":"Across the library"]},void 0,!0,void 0,this),r("div",{class:"home-card-meta",children:[pe&&r("span",{children:["Category: ",pe.glyph," ",pe.name]},void 0,!0,void 0,this),r("button",{type:"button",class:`home-review-link${le?" has-review":""}`,onClick:()=>{o("Review"),h(null)},children:["Review needed: ",ar(le,"card")]},void 0,!0,void 0,this),r("span",{children:["No review policy: ",ar(Se,"card")]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),e.length===0?r("div",{class:"home-view-empty",children:"No boards yet. Create one, or let an agent start writing — it opens one."},void 0,!1,void 0,this):M?r(be,{children:[P.length>0&&r("section",{class:"home-main-section",children:[r("span",{class:"home-section-label",children:["Cards · ",P.length]},void 0,!0,void 0,this),r("ul",{class:"home-hits","aria-label":"Library search results",children:P.map((F)=>r("li",{children:r("button",{type:"button",class:"home-hit",onClick:()=>void W(F),children:[r("span",{class:"home-card-name",children:F.title||F.boardTitle},void 0,!1,void 0,this),t&&F.qualification?.retired&&r("span",{class:"category-tag",children:"Retired"},void 0,!1,void 0,this),r("span",{class:"home-card-meta",children:[F.boardTitle," · ",F.snippet]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},`${F.boardId}:${F.cardId}`,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ae.length>0?r("section",{class:"home-main-section",children:[r("span",{class:"home-section-label",children:["Boards · ",Ae.length]},void 0,!0,void 0,this),r("ul",{class:"home-cards",children:Ae.map(Ye)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):P.length===0&&r("div",{class:"home-view-empty",role:"status",children:["No boards match “",I.trim(),"”."]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):r(be,{children:[Fe.length>0&&r("section",{class:"home-main-section",children:[r("span",{class:"home-section-label",children:["Folders · ",Fe.length]},void 0,!0,void 0,this),r("ul",{class:"home-folders",children:Fe.map((F)=>{let Ee=e.filter((ue)=>tc(ue,F)),S=Ee.map((ue)=>ue.lastOpenedAt??"").sort().at(-1),K=Ee.filter((ue)=>ue.pin).length;return r("li",{children:r("button",{type:"button",class:"home-folder","data-testid":"home-section","data-folder":F,onClick:()=>He(F),children:[r("span",{class:"home-folder-stack","aria-hidden":"true",children:[r("span",{},void 0,!1,void 0,this),r("span",{},void 0,!1,void 0,this),r("span",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K>0&&r("span",{class:"home-folder-context",children:[K," in context"]},void 0,!0,void 0,this),r("span",{class:"home-folder-name",children:lr(F)},void 0,!1,void 0,this),r("span",{class:"home-folder-meta",children:[ar(Ee.length,"board"),S?` · opened ${jT(S)}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},F,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("section",{class:"home-main-section",children:[r("span",{class:"home-section-label",children:[s?`Boards in ${lr(s)}`:"Unfiled boards"," · ",xe.length]},void 0,!0,void 0,this),xe.length>0?r("ul",{class:"home-cards","aria-label":s?`Boards in ${s}`:"Unfiled boards",children:xe.map(Ye)},void 0,!1,void 0,this):r("div",{class:"home-view-empty",children:"No boards here yet."},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),i==="Folders"&&Lt,z&&r(kT,{board:z,folders:A,onClose:()=>v(null)},z.id,!1,void 0,this),re&&r(ST,{board:re,onClose:()=>_(null)},re.id,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var ls=ie(!1);function AL(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:`${Math.ceil(e/1024)} KB`}function GT(){let[e,t]=E(!1),[n,o]=E(!1),[i,s]=E(null),[a,l]=E(null),[c,u]=E(!1),[d,p]=E(""),f=ls.value,m=ae.value;if(q(()=>{if(!f||!m)return;let g=!0;return l(null),p(""),s(null),de("exportPreview",`/api/canvas/export/preview?board=${encodeURIComponent(m)}&includeFiles=${e}&includeDerivedText=${n}`,null).then((y)=>{if(g)s(y?.manifest??null)}),()=>{g=!1}},[f,e,n,m]),q(()=>{o(!1)},[f,m]),q(()=>{if(!f)return;let g=(y)=>{if(y.key!=="Escape")return;y.stopPropagation(),ls.value=!1};return window.addEventListener("keydown",g,{capture:!0}),()=>window.removeEventListener("keydown",g,{capture:!0})},[f]),!f)return null;let h=async()=>{if(!i||i.boardId!==ae.value)return;u(!0);let g=await de("exportBoard","/api/canvas/export",null,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({board:i.boardId,includeFiles:e,includeDerivedText:n})});if(u(!1),g?.path&&ae.value===i.boardId)l(g)};return r("div",{class:"text-prompt-backdrop",onPointerDown:()=>ls.value=!1,children:r("div",{class:"text-prompt export-dialog",role:"dialog","aria-label":"Export board","data-testid":"export-dialog",onPointerDown:(g)=>g.stopPropagation(),children:[r("div",{class:"text-prompt-title",children:["Export ",i?`“${i.boardName}”`:"board"]},void 0,!0,void 0,this),!i?r("div",{class:"export-dialog-note",children:"Reading the board…"},void 0,!1,void 0,this):r(be,{children:[r("div",{class:"export-dialog-note",children:"One HTML file anyone can open without installing anything. It will contain:"},void 0,!1,void 0,this),r("ul",{class:"export-dialog-list",children:[r("li",{children:[i.cards," card",i.cards!==1?"s":""," and ",i.connections," connection",i.connections!==1?"s":""]},void 0,!0,void 0,this),i.frames>0&&r("li",{children:[i.frames," embedded pages, charts or diagrams, with the code that draws them"]},void 0,!0,void 0,this),i.embeddedImages>0&&r("li",{children:[i.embeddedImages," local images"]},void 0,!0,void 0,this),i.placeholders.length>0&&r("li",{children:["Shown as placeholders:"," ",i.placeholders.map((g)=>`${g.title} (${g.reason})`).join(", ")]},void 0,!0,void 0,this),i.remoteImages.length>0&&r("li",{children:["Web images loaded when opened: ",i.remoteImages.join(", ")]},void 0,!0,void 0,this),i.links.length>0&&r("li",{children:["Links included in cards: ",i.links.join(", ")]},void 0,!0,void 0,this),i.frameNetworkDestinations.length>0&&r("li",{children:["Network destinations referenced by embedded pages: ",i.frameNetworkDestinations.join(", ")]},void 0,!0,void 0,this),i.embeddedCodeCanAccessNetwork&&r("li",{children:"Warning: embedded code can access the network. Scripts may contact destinations that cannot be listed in advance."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(i.attachments?.length??0)>0&&r("p",{children:"Original attachments are excluded. Their filenames remain visible."},void 0,!1,void 0,this),(i.sourceDerivedCards?.length??0)>0&&r("label",{class:"export-dialog-files",children:[r("input",{type:"checkbox",checked:n,onChange:(g)=>o(g.currentTarget.checked)},void 0,!1,void 0,this),r("span",{children:["Include imported document text (",i.sourceDerivedCards.length," cards)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),i.files.length>0&&r("label",{class:"export-dialog-files",children:[r("input",{type:"checkbox",checked:e,onChange:(g)=>t(g.target.checked)},void 0,!1,void 0,this),r("span",{children:["Include the contents of ",i.files.length," local file",i.files.length!==1?"s":"",": ",i.files.map((g)=>g.path).join(", ")]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),a&&r("div",{class:"export-dialog-result","data-testid":"export-result",children:[r("div",{children:["Saved (",AL(a.bytes),"): ",r("code",{children:a.path},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"export-dialog-links",children:tt()?r("button",{type:"button",disabled:c,onClick:async()=>{u(!0),p("");try{await Hw(a.url)}catch(g){p(g instanceof Error?g.message:"Download failed. Try again.")}finally{u(!1)}},children:c?"Downloading…":"Download"},void 0,!1,void 0,this):r(be,{children:[r("a",{href:a.url,target:"_blank",rel:"noopener noreferrer",children:"Open"},void 0,!1,void 0,this),r("a",{class:"is-primary",href:`${a.url}?download=1`,children:"Download"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),tt()&&r("p",{children:"Download the HTML file to open it outside ChatGPT."},void 0,!1,void 0,this),d&&r("p",{role:"alert",children:d},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"text-prompt-actions",children:[r("button",{type:"button",class:"text-prompt-cancel",onClick:()=>ls.value=!1,children:a?"Done":"Cancel"},void 0,!1,void 0,this),!a&&r("button",{type:"button",class:"text-prompt-confirm",disabled:!i||c,onClick:()=>void h(),children:c?"Exporting…":"Export"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function _g({presence:e,size:t=18}){return r("span",{class:"writer-avatar",style:{background:So(e.sessionId),width:`${t}px`,height:`${t}px`},"aria-hidden":"true",children:Ed(e.label)},void 0,!1,void 0,this)}function KT(){let e=Rd.value;if(tr.value||e.length===0)return null;let t=e.reduce((i,s)=>i+s.opCount,0),n=e.length===1?e[0].label:`${e.length} writers`,o=es.value;return r(_e,{label:`${e.length} external writer${e.length===1?"":"s"} on this board`,body:"Click for their activity.",align:"end",children:r("button",{type:"button",class:"external-indicator","data-testid":"external-indicator","aria-label":`${n} external activity, ${t} operation${t===1?"":"s"}`,"aria-expanded":o,onClick:()=>{es.value=!o},children:[r("span",{class:"external-indicator-avatars",children:e.slice(0,3).map((i)=>r(_g,{presence:i},i.sessionId,!1,void 0,this))},void 0,!1,void 0,this),r("span",{class:"external-indicator-label",children:n},void 0,!1,void 0,this),r("span",{class:"external-indicator-ops hud-collapsible-text",children:[t," op",t===1?"":"s"]},void 0,!0,void 0,this),r("span",{class:"external-indicator-dot","aria-hidden":"true"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function RL(e){if(e==="node.add"||e==="jsonrender.add"||e==="graph.add"||e==="group.create")return{glyph:"+",tone:"ok"};if(e==="node.remove"||e==="edge.remove"||e==="canvas.clear")return{glyph:"×",tone:"danger"};if(e==="edge.add")return{glyph:"⟶",tone:"accent"};if(e.startsWith("ax."))return{glyph:"◆",tone:"purple"};return{glyph:"✎",tone:"accent"}}function PL(e){return e.reduce((t,n)=>n.lastSeenAt>t?n.lastSeenAt:t,"")}function NL(){return[...Wt.value.values()].filter((e)=>!e.auto&&e.phase==="forming")}function VT(){let e=es.value,t=Rd.value,n=nr(e?1e4:0);if(Me(()=>{if(!e)return;let l=(c)=>{if(c.key!=="Escape"||c.defaultPrevented)return;if(c.preventDefault(),ua.value)ua.value=!1;else es.value=!1};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[e]),!e||tr.value||t.length===0)return null;let o=Zh.value,i=NL().filter((l)=>!o||(l.source??"")===o),s=pi.value.filter((l)=>!o||l.sessionId===o),a=(l,c)=>r("button",{type:"button",class:`activity-filter${o===l?" is-active":""}`,style:l?{"--writer":So(l)}:void 0,"aria-pressed":o===l,onClick:()=>{Zh.value=l},children:c},void 0,!1,void 0,this);return r("div",{class:"activity-feed","data-testid":"activity-feed",role:"dialog","aria-label":"External activity",children:[r("div",{class:"activity-feed-head",children:[r("span",{class:"external-indicator-dot","aria-hidden":"true"},void 0,!1,void 0,this),r("div",{class:"activity-feed-titles",children:[r("div",{class:"activity-feed-title",children:["External activity — ",t.length," writer",t.length===1?"":"s"]},void 0,!0,void 0,this),r("div",{class:"activity-feed-sub",children:[t.reduce((l,c)=>l+c.opCount,0)," writes · last"," ",Ad(PL(t),n)," · live writers"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("button",{type:"button",class:"activity-feed-close","aria-label":"Close activity feed",onClick:()=>{es.value=!1},children:r(Tt,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"activity-filters",children:[a(null,"All"),t.map((l)=>a(l.sessionId,l.label))]},void 0,!0,void 0,this),r("div",{class:"activity-rows",children:[i.map((l)=>r("div",{class:"activity-row is-pending","data-testid":"activity-proposal",children:[r("span",{class:"activity-glyph tone-purple","aria-hidden":"true",children:"▢"},void 0,!1,void 0,this),r("div",{class:"activity-main",children:[r("div",{class:"activity-text",children:["Proposing: ",r("b",{children:l.label?.trim()||`${l.kind} intent`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"activity-meta",children:[l.reason?.trim()||"Intent signalled — a real veto window before the mutation",l.source?` · ${l.source}`:""]},void 0,!0,void 0,this),r("div",{class:"activity-actions",children:[r("button",{type:"button",class:"activity-veto",onClick:()=>{$i(l).then((c)=>{if(c)Mi(l.id)})},children:"Veto"},void 0,!1,void 0,this),r("span",{class:"activity-hint",children:"or hover ghost + Esc"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("span",{class:"activity-age",children:"now"},void 0,!1,void 0,this)]},l.id,!0,void 0,this)),s.length===0&&i.length===0&&r("div",{class:"activity-empty",children:"No writes yet."},void 0,!1,void 0,this),s.map((l)=>{let{glyph:c,tone:u}=RL(l.op);return r("div",{class:"activity-row","data-testid":"activity-row","data-op":l.op,children:[r("span",{class:`activity-glyph tone-${u}`,"aria-hidden":"true",children:c},void 0,!1,void 0,this),r("div",{class:"activity-main",children:[r("div",{class:"activity-text",children:l.summary},void 0,!1,void 0,this),r("div",{class:"activity-writer",style:{color:So(l.sessionId)},children:l.label},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("span",{class:"activity-age",children:Ad(l.at,n)},void 0,!1,void 0,this)]},l.id,!0,void 0,this)})]},void 0,!0,void 0,this),r("div",{class:"activity-feed-foot",children:[r("span",{class:"activity-feed-note",children:"All writes ghost first · Esc vetoes"},void 0,!1,void 0,this),r("button",{type:"button",class:"activity-feed-link",onClick:()=>{ua.value=!0},children:"Writers"},void 0,!1,void 0,this),xt.value&&r("button",{type:"button",class:"activity-feed-link is-accent",onClick:()=>{es.value=!1,yi()},children:["Start session ",r(oi,{size:14},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 ML(){let e=[];if(To.value)e.push("scoped");if(Co.value.length>0)e.push("gated");return e.length>0?e.join(" + "):"open"}function XT(){let e=ua.value,t=nr(e?1e4:0),n=D(null);if(bn(n,e),!e)return null;let o=xt.value?en.value.filter((a)=>a.attached):[],i=Rd.value,s=()=>{ua.value=!1};return r(be,{children:[r("div",{class:"writers-scrim",onClick:s,"aria-hidden":"true"},void 0,!1,void 0,this),r("div",{ref:n,class:"writers-sheet","data-testid":"writers-sheet",role:"dialog","aria-modal":"true","aria-label":"Connected writers",children:[r("div",{class:"writers-head",children:[r("span",{class:"writers-title",children:"Connected writers"},void 0,!1,void 0,this),r("span",{class:"writers-board",children:xr.value.slice(0,12)},void 0,!1,void 0,this),r("button",{type:"button",class:"activity-feed-close","aria-label":"Close writers",onClick:s,children:r(Tt,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"writers-body",children:[xt.value&&r(be,{children:[r("div",{class:"writers-section",children:"Agent sessions"},void 0,!1,void 0,this),o.length===0&&r("div",{class:"writers-empty",children:"None attached — start one from the top bar."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),o.map((a)=>r("div",{class:"writers-row",children:[r(_g,{presence:a,size:20},void 0,!1,void 0,this),r("span",{class:"writers-name",children:a.label},void 0,!1,void 0,this),r("span",{class:"writers-config",children:ML()},void 0,!1,void 0,this)]},a.sessionId,!0,void 0,this)),r("div",{class:"writers-section",children:xt.value?"External writers · MCP":"Live writers"},void 0,!1,void 0,this),i.length===0&&r("div",{class:"writers-empty",children:"No external writers right now."},void 0,!1,void 0,this),i.map((a)=>r("div",{class:"writers-row",children:[r(_g,{presence:a,size:20},void 0,!1,void 0,this),r("span",{class:"writers-name is-mono",children:a.label},void 0,!1,void 0,this),r("span",{class:"writers-meta",children:[a.source!==a.label?`${a.source} · `:"","wrote"," ",Ad(a.lastSeenAt,t)," ago"]},void 0,!0,void 0,this)]},a.sessionId,!0,void 0,this))]},void 0,!0,void 0,this),r("div",{class:"writers-foot",children:[r("span",{class:"writers-note",children:"Local-first: any process on this machine can connect and write. Every write ghosts first — veto is the control, not permissions."},void 0,!1,void 0,this),r("button",{type:"button",class:"writers-done",onClick:s,children:"Done"},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 JT({nodeId:e}){let t=ae.value,[n,o]=E(null),[i,s]=E(!1),a=et.value,l=H.value,c=Ge.value;q(()=>{let m=!1;if(o(null),s(!1),t)de("relations",`/api/canvas/memory-graph?focus=${encodeURIComponent(Mt({boardId:t,cardId:e}))}&depth=1`,null).then((h)=>{if(!m)o(h),s(!h)});return()=>{m=!0}},[t,e,a,l,c]);let u=t?Mt({boardId:t,cardId:e}):"",d=n?.edges.filter((m)=>m.kind!=="member"&&(m.from===u||m.to===u))??[],p=(m)=>{let h=m.to===u;if(h&&m.relationKind==="supports")return"Evidence for";if(h&&m.relationKind==="contradicts")return"Evidence against";let g=Dd({kind:m.relationKind,type:m.type});if(g)return(g==="from"?!h:h)?"Used by":"Sources";if(m.relationKind==="cites"||m.type==="references")return h?"Used by":"Sources";if(!h&&m.relationKind==="supports")return"Used by";return"Connections"},f=["Evidence for","Evidence against","Sources","Used by","Connections"];return d.sort((m,h)=>f.indexOf(p(m))-f.indexOf(p(h))),r("aside",{class:"relations-panel","aria-label":"Relations",children:[r("h3",{children:"Relations"},void 0,!1,void 0,this),!n&&r("p",{role:"status",children:i?"Relations unavailable. Reopen to retry.":"Loading relations…"},void 0,!1,void 0,this),n&&d.length===0&&r("p",{children:"No connections yet."},void 0,!1,void 0,this),d.map((m,h)=>{let g=m.from===u,y=g?m.target:m.source,b=n?.nodes.find((v)=>v.key===Mt(y)),x=c.find((v)=>v.id===m.source.boardId),C=mo({kind:m.relationKind,type:m.type},x?.relationVocabulary);return r("div",{class:"relation-row",children:[(h===0||p(d[h-1])!==p(m))&&r("h4",{children:p(m)},void 0,!1,void 0,this),r("span",{class:"relation-kind",style:{color:`var(--c-rel-${C.ink})`},children:[g?"→":"←"," ",m.relationKind??m.type??m.kind]},void 0,!0,void 0,this),m.missing?r("span",{children:"Missing target"},void 0,!1,void 0,this):r("button",{type:"button",class:"relation-target",onClick:()=>void zt(y),children:b?.title??y.boardId},void 0,!1,void 0,this),m.label&&r("span",{children:m.label},void 0,!1,void 0,this),r("p",{children:m.reason??"No reason recorded."},void 0,!1,void 0,this)]},m.id,!0,void 0,this)}),r("p",{children:"Manage shared relation presets in Home."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function YT(e,t){switch(e.type){case"markdown":return r(Ku,{node:e,expanded:t},void 0,!1,void 0,this);case"mcp-app":return r(ui,{node:e,expanded:t},void 0,!1,void 0,this);case"webpage":return r(_d,{node:e,expanded:t},void 0,!1,void 0,this);case"json-render":return r(ui,{node:e,expanded:t},void 0,!1,void 0,this);case"graph":return r(ui,{node:e,expanded:t},void 0,!1,void 0,this);case"board":return r(jd,{node:e},void 0,!1,void 0,this);case"prompt":return r(Cd,{node:e},void 0,!1,void 0,this);case"response":return r(Td,{node:e,expanded:t},void 0,!1,void 0,this);case"status":return r(kd,{node:e},void 0,!1,void 0,this);case"context":return r(Ru,{node:e,expanded:t},void 0,!1,void 0,this);case"ledger":return r(zu,{node:e},void 0,!1,void 0,this);case"trace":return r(Id,{node:e},void 0,!1,void 0,this);case"file":return r(Mu,{node:e,expanded:t},void 0,!1,void 0,this);case"diff":return r(Pu,{node:e},void 0,!1,void 0,this);case"mermaid":return r(nd,{node:e,expanded:t},void 0,!1,void 0,this);case"image":return r(Sd,{node:e,expanded:t},void 0,!1,void 0,this);case"html":return r(Bl,{node:e,expanded:t},void 0,!1,void 0,this);default:return r("div",{children:"Unknown node type"},void 0,!1,void 0,this)}}function QT(e){switch(e.type){case"markdown":return e.data.content||"";case"diff":return e.data.content||"";case"mermaid":return e.data.content||"";case"file":return e.data.fileContent||"";case"webpage":return e.data.content||"";case"html":return e.data.html||e.data.content||"";case"json-render":case"graph":return JSON.stringify(e.data.spec??e.data.graphConfig??{},null,2);default:return""}}function zL(e){if(!e)return 0;return e.split(/\s+/).filter(Boolean).length}function $L(e,t){return e!==null&&typeof e==="object"&&e.source===Qn&&e.type==="presentation-exit"&&e.token===t}function LL(e){return e==="ArrowRight"||e==="PageDown"||e===" "||e==="ArrowLeft"||e==="PageUp"||e==="Home"||e==="End"}function eI(e){return e instanceof HTMLElement&&Boolean(e.closest(".html-presentation-exit"))}function tI(){let e=Dt.value,t=e?H.value.get(e):void 0,[n,o]=E(!1),[i,s]=E(null),[a,l]=E(!1),[c,u]=E(""),d=D(null),p=D(null),f=oe(()=>{l(!1),Cr()},[]),m=oe(()=>{u(`presentation-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`),l(!0)},[]),h=oe((A)=>{document.querySelector(".html-presentation-overlay iframe.html-node-frame-presentation")?.contentWindow?.postMessage({source:Qn,token:c,...A},"*")},[c]),g=oe(()=>{l(!1)},[]),y=oe((A)=>{if(A.key==="Escape"){A.preventDefault(),A.stopPropagation(),l(!1);return}if(A.key==="Tab"&&!eI(A.target)){A.preventDefault(),A.stopPropagation(),p.current?.focus();return}if((A.key===" "||A.key==="Enter")&&eI(A.target))return;if(!LL(A.key))return;A.preventDefault(),A.stopPropagation(),h({type:"presentation-key",key:A.key})},[h]),b=oe((A)=>{if(A.target.classList.contains("expanded-overlay-backdrop"))Cr()},[]),x=oe(()=>{if(!t)return;let A=QT(t);if(!A)return;navigator.clipboard.writeText(A).then(()=>{o(!0),setTimeout(()=>o(!1),1500)})},[t]),C=oe(()=>{if(!e)return;lo(e)},[e]);q(()=>{l(!1)},[e]),Me(()=>{if(!a)return;let A=()=>{let O=d.current;if(!O||O.contains(document.activeElement))return;O.focus()},te=[0,50,150].map((O)=>window.setTimeout(A,O)),M=(O)=>{if(!$L(O.data,c))return;l(!1)};return document.addEventListener("keydown",y,!0),window.addEventListener("message",M),()=>{te.forEach((O)=>{window.clearTimeout(O)}),document.removeEventListener("keydown",y,!0),window.removeEventListener("message",M)}},[y,c,a]);let v=D(null),k=oe(()=>e?document.querySelector(`.canvas-node[data-node-id="${CSS.escape(e)}"]`):null,[e]),_=Oe.value&&Ct.value?.nodeId===e,I=!Oe.value&&Ct.value?.nodeId===e&&!!document.activeElement?.closest(".lifecycle-dialog");if(bn(v,t!==void 0&&!_,{restoreTo:k}),Me(()=>{if(I)document.querySelector('button[aria-label="Settings"]')?.focus({preventScroll:!0})},[_]),!t)return null;let w=t.data.title||t.data.path?.split("/").pop()||an[t.type],P=QT(t),L=zL(P),N=e?kt.value.has(e):!1,Y=P.length>0,B=zo.value===e,J=t.type==="mcp-app"||t.type==="webpage"||t.type==="json-render"||t.type==="graph",X=j_(t),V=Do(t.type),ee=t.data.provenance&&typeof t.data.provenance==="object"?t.data.provenance:null,he=ee?[ee.sourceKind,ee.sourceUri,ee.syncedAt?`synced ${ee.syncedAt.slice(11,16)}`:null].filter((A)=>typeof A==="string"&&A.length>0).join(" · "):null;return r("div",{class:"expanded-overlay-backdrop",onPointerDown:b,style:{pointerEvents:B?"none":"auto"},children:r("div",{ref:v,class:`expanded-overlay-panel${N?" is-pinned":""}`,role:"dialog","aria-modal":_?void 0:"true","aria-label":w,"data-testid":"expanded-node",children:[r("div",{class:"expanded-header",children:[r("span",{class:"expanded-kind-icon","aria-hidden":"true",children:r(V,{size:15},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("span",{class:"expanded-title",children:w},void 0,!1,void 0,this),r("span",{class:"expanded-kind-pill",children:an[t.type]},void 0,!1,void 0,this),r(_e,{label:N?"In agent context — click to unpin":"Pin as agent context",children:r("button",{type:"button",class:`expanded-pin${N?" is-on":""}`,onClick:C,"aria-label":N?"In agent context — click to unpin":"Pin as agent context","aria-pressed":N,children:"✦"},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("span",{class:"expanded-spacer"},void 0,!1,void 0,this),r("div",{class:"expanded-actions",children:[Oe.value&&r("button",{type:"button",class:"expanded-action-btn",onClick:()=>Is(t.id),children:"Review"},void 0,!1,void 0,this),r("button",{type:"button",class:"expanded-action-btn","aria-pressed":i===e,onClick:()=>s(i===e?null:e),children:"Relations"},void 0,!1,void 0,this),Y&&r(_e,{label:"Copy content to clipboard",children:r("button",{type:"button",class:"expanded-action-btn",onClick:x,children:n?"Copied!":"Copy"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Yu(t)&&r(_e,{label:"Open as a full-page site in the system browser",children:r("button",{type:"button",class:"expanded-action-btn",onClick:()=>void Qu(t),children:["Open in tab ",r(oi,{size:14},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),X&&r(_e,{label:"Present this HTML node fullscreen",children:r("button",{type:"button",class:"expanded-action-btn expanded-action-primary",onClick:m,children:"Present"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r(_e,{label:"Close",shortcut:"Esc",align:"end",children:r("button",{type:"button",class:"expanded-close",onClick:f,"aria-label":"Close",children:r(Tt,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"expanded-content-row",children:[r("div",{class:`expanded-body${J?" is-embedded":""}`,children:J?r("div",{style:{flex:1,minHeight:0,display:"flex"},children:YT(t,!0)},void 0,!1,void 0,this):YT(t,!0)},void 0,!1,void 0,this),i===e&&r(JT,{nodeId:t.id},e,!1,void 0,this)]},void 0,!0,void 0,this),r(Fd,{node:t},void 0,!1,void 0,this),r("div",{style:{"--ax-dock-bleed":"0px","--ax-dock-pad":"16px"},children:r(Ud,{node:t},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("div",{class:"expanded-footer",children:[r("span",{class:"expanded-footer-meta",children:[he,L>0?`${L.toLocaleString()} word${L!==1?"s":""}`:null].filter(Boolean).join(" · ")||an[t.type].toLowerCase()},void 0,!1,void 0,this),r("span",{class:"expanded-spacer"},void 0,!1,void 0,this),r("span",{class:`expanded-footer-hint${B?" is-saving":""}`,children:B?"Saving edits…":"esc or click outside to close"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X&&a&&r("div",{ref:d,class:"html-presentation-overlay",role:"dialog","aria-modal":"true","aria-label":`Present ${w}`,tabIndex:-1,onKeyDownCapture:y,children:[r("button",{ref:p,type:"button",class:"html-presentation-exit",onClick:g,"aria-label":"Exit presentation",children:"Exit presentation"},void 0,!1,void 0,this),r("div",{class:"html-presentation-stage",children:r(Bl,{node:t,expanded:!0,presentation:!0,presentationExitToken:c},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 oI=168,rI=112,ip=20;function nI(e,t,n,o){let i=Array.from(e.values()),s=0,a=0,l=1000,c=800;if(i.length>0){s=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,l=Number.NEGATIVE_INFINITY,c=Number.NEGATIVE_INFINITY;for(let y of i)s=Math.min(s,y.position.x),a=Math.min(a,y.position.y),l=Math.max(l,y.position.x+y.size.width),c=Math.max(c,y.position.y+y.size.height)}let u=-t.x/t.scale,d=-t.y/t.scale,p=u+n/t.scale,f=d+o/t.scale,m={minX:Math.min(s,u)-ip,minY:Math.min(a,d)-ip,maxX:Math.max(l,p)+ip,maxY:Math.max(c,f)+ip},h=m.maxX-m.minX||1,g=m.maxY-m.minY||1;return{bounds:m,scale:Math.min(oI/h,rI/g)}}function iI({viewport:e,nodes:t,onNavigate:n,containerWidth:o,containerHeight:i}){let s=D(null),a=D(!1),l=t.value,c=e.value,u=nI(l,c,o,i),{bounds:d,scale:p}=u,f=(w)=>(w-d.minX)*p,m=(w)=>(w-d.minY)*p,h=oe((w)=>{let P=s.current;if(!P)return;let L=P.getBoundingClientRect(),N=(w.clientX-L.left)/L.width*oI,Y=(w.clientY-L.top)/L.height*rI,B=nI(t.value,e.value,o,i),J=e.value,X=o/J.scale,V=i/J.scale,ee=N/B.scale+B.bounds.minX,he=Y/B.scale+B.bounds.minY;n(-(ee-X/2)*J.scale,-(he-V/2)*J.scale)},[t,e,o,i,n]),g=oe((w)=>{w.stopPropagation(),w.preventDefault(),a.current=!0,h(w);let P=(N)=>{if(a.current)h(N)},L=()=>{a.current=!1,document.removeEventListener("pointermove",P),document.removeEventListener("pointerup",L)};document.addEventListener("pointermove",P),document.addEventListener("pointerup",L)},[h]),y=st.value,b=kt.value,x=tr.value?Pd.value:new Set,C=To.value,v=C?$d(C.nodeIds.map((w)=>l.get(w)).filter((w)=>w!==void 0),C.padding):null,k=en.value.map((w)=>({id:w.sessionId,phase:w.phase,worker:w.parentAgentId!=null,external:!w.attached,at:Nd(w,(P)=>l.get(P))})).filter((w)=>w.at!==null),_=-c.x/c.scale,I=-c.y/c.scale;return r("div",{ref:s,class:"minimap","data-testid":"minimap","aria-label":"Minimap — click to jump, drag the frame to pan",onPointerDown:g,children:[Array.from(l.values()).map((w)=>{let P=w.type==="group";return r("span",{class:`minimap-node${P?" is-group":""}${y.has(w.id)?" is-selected":""}${b.has(w.id)?" is-pinned":""}${x.has(w.id)?" is-agent":""}`,"data-kind":w.type,style:{left:`${f(w.position.x)}px`,top:`${m(w.position.y)}px`,width:`${Math.max(P?6:4,w.size.width*p)}px`,height:`${Math.max(P?5:3,w.size.height*p)}px`}},w.id,!1,void 0,this)}),v&&r("span",{class:"minimap-fence",style:{left:`${f(v.x)}px`,top:`${m(v.y)}px`,width:`${v.width*p}px`,height:`${v.height*p}px`}},void 0,!1,void 0,this),k.map((w)=>r("span",{class:`minimap-presence phase-${w.phase}${w.worker?" is-worker":""}${w.external?" is-external":""}`,style:{left:`${f(w.at.x)-4}px`,top:`${m(w.at.y)-4}px`,"--identity-color":So(w.id)}},w.id,!1,void 0,this)),r("span",{class:"minimap-frame",style:{left:`${f(_)}px`,top:`${m(I)}px`,width:`${o/c.scale*p}px`,height:`${i/c.scale*p}px`}},void 0,!1,void 0,this),r("span",{class:"minimap-zoom",children:[Math.round(c.scale*100),"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function sI(){let e=st.value.size,t=Gd("--selection-bar-height"),n=oe(()=>{let l=Array.from(st.value);if(l.length===0)return;bu(l),Ln()},[]),o=oe(()=>{let l=Array.from(st.value);if(l.length===0)return;Ps({title:"Group",childIds:l}),Ln()},[]),i=oe(()=>{let l=Array.from(st.value);for(let c=0;c<l.length;c++)for(let u=c+1;u<l.length;u++)yr(l[c],l[u],"relation");Ln()},[]),s=oe(()=>{let l=Array.from(st.value);for(let c of l)Vr(c);Ln()},[]);if(e===0)return null;let a=e>=2;return r("div",{class:"selection-bar",role:"toolbar","aria-label":"Selection",ref:t,children:[r("span",{class:"selection-bar-count",children:[e," node",e!==1?"s":""," selected"]},void 0,!0,void 0,this),a&&r(be,{children:[r("span",{class:"selection-bar-sep"},void 0,!1,void 0,this),r(_e,{label:"Align left",side:"up",children:r("button",{type:"button",class:"selection-bar-icon","aria-label":"Align left",onClick:()=>nm("left"),children:r("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","aria-hidden":"true",children:[r("line",{x1:"2.5",y1:"2",x2:"2.5",y2:"14"},void 0,!1,void 0,this),r("rect",{x:"5",y:"3.5",width:"8",height:"3.5",rx:"1"},void 0,!1,void 0,this),r("rect",{x:"5",y:"9",width:"5",height:"3.5",rx:"1"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(_e,{label:"Align top",side:"up",children:r("button",{type:"button",class:"selection-bar-icon","aria-label":"Align top",onClick:()=>nm("top"),children:r("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","aria-hidden":"true",children:[r("line",{x1:"2",y1:"2.5",x2:"14",y2:"2.5"},void 0,!1,void 0,this),r("rect",{x:"3.5",y:"5",width:"3.5",height:"8",rx:"1"},void 0,!1,void 0,this),r("rect",{x:"9",y:"5",width:"3.5",height:"5",rx:"1"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(_e,{label:"Distribute horizontally",body:"Evens the gaps. A selection that cannot fit flows into a clean row instead of overlapping.",side:"up",children:r("button",{type:"button",class:"selection-bar-icon","aria-label":"Distribute",disabled:e<3,onClick:()=>Uk(),children:r("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","aria-hidden":"true",children:[r("rect",{x:"1.5",y:"5",width:"3.5",height:"6",rx:"1"},void 0,!1,void 0,this),r("rect",{x:"6.25",y:"5",width:"3.5",height:"6",rx:"1"},void 0,!1,void 0,this),r("rect",{x:"11",y:"5",width:"3.5",height:"6",rx:"1"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(_e,{label:"Auto-arrange selection",side:"up",children:r("button",{type:"button",class:"selection-bar-icon","aria-label":"Auto-arrange",onClick:()=>jk(),children:r(Tr,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("span",{class:"selection-bar-sep"},void 0,!1,void 0,this),r(_e,{label:"Group the selection",shortcut:"G",side:"up",children:r("button",{type:"button",class:"selection-bar-action",onClick:o,children:[r("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-dasharray":"3 2.5","aria-hidden":"true",children:r("rect",{x:"1.5",y:"1.5",width:"13",height:"13",rx:"2"},void 0,!1,void 0,this)},void 0,!1,void 0,this),"Group"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),r(_e,{label:"Connect every pair",side:"up",children:r("button",{type:"button",class:"selection-bar-action",onClick:i,children:"Connect"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r(_e,{label:"Pin to agent context",side:"up",children:r("button",{type:"button",class:"selection-bar-action is-pin",onClick:n,children:[r("span",{"aria-hidden":"true",children:"✦"},void 0,!1,void 0,this),"Pin as context"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),r("span",{class:"selection-bar-sep"},void 0,!1,void 0,this),r(_e,{label:"Delete selection",side:"up",children:r("button",{type:"button",class:"selection-bar-icon is-danger","aria-label":"Delete selection",onClick:s,children:r("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","aria-hidden":"true",children:[r("path",{d:"M2.5 4 H13.5"},void 0,!1,void 0,this),r("path",{d:"M5.5 4 V2.5 H10.5 V4"},void 0,!1,void 0,this),r("path",{d:"M4 4 L4.8 13.5 H11.2 L12 4"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(_e,{label:"Clear selection",shortcut:"Esc",side:"up",children:r("button",{type:"button",class:"selection-bar-icon",onClick:Ln,"aria-label":"Clear selection",children:r(Tt,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function sp(e,t=Date.now()){if(!e.expiresAt)return null;let n=Date.parse(e.expiresAt);if(!Number.isFinite(n))return null;return Math.max(0,n-t)}function ap(e){let t=Math.max(0,Math.ceil(e/1000)),n=Math.floor(t/60),o=t%60;return`${n}:${String(o).padStart(2,"0")}`}var OL={todo:"queued","in-progress":"running",blocked:"awaiting",done:"done",cancelled:"vetoed"},DL={todo:"queued","in-progress":"running",blocked:"awaiting",done:"done",cancelled:"cancelled"},aI=[{id:"all",label:"All",hint:"Everything below in one feed, newest first"},{id:"update",label:"Updates",hint:"Board edits agents made — nodes, edges, pins, work items"},{id:"steer",label:"Steer",hint:"Instructions sent to agents — by you from the composer, or agent-to-agent"},{id:"assistant",label:"Assistant",hint:"Messages agents posted for you to read"},{id:"event",label:"Events",hint:"Run telemetry — tool runs, approvals, failures, policy notes"},{id:"evidence",label:"Evidence",hint:"Proof agents recorded — test results, artifacts, links"}],BL=Object.fromEntries(aI.map((e)=>[e.id,e.hint])),FL={policy:"warn",prompt:"accent","assistant-message":"muted","tool-start":"accent","tool-result":"ok",failure:"danger",approval:"warn",steering:"purple",command:"accent",note:"muted",evidence:"ok",steer:"purple",update:"purple",yield:"warn"};function Cg(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return"";return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}function HL({item:e}){let t=OL[e.status]??"queued",n=e.nodeIds[0];return r("li",{class:`session-item status-${t}`,"data-work-item-id":e.id,children:[r("span",{class:"session-glyph","aria-hidden":"true"},void 0,!1,void 0,this),r("div",{class:"session-item-main",children:[r("button",{type:"button",class:"session-item-title",disabled:!n,onClick:()=>n&&$t(n),children:e.title},void 0,!1,void 0,this),e.detail&&r("div",{class:"session-item-detail",children:e.detail},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("span",{class:"session-item-status",children:DL[e.status]??t},void 0,!1,void 0,this),r("span",{class:"session-item-time",children:Cg(e.updatedAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function lI({gate:e,now:t}){let[n,o]=E(null),i=async(l)=>{o(l),await _C(e,l),o(null)},s=e.nodeIds[0],a=sp(e,t);return r("li",{class:"session-item status-awaiting session-gate","data-gate-id":e.id,children:[r("span",{class:"session-glyph","aria-hidden":"true"},void 0,!1,void 0,this),r("div",{class:"session-item-main",children:[r("button",{type:"button",class:"session-item-title",disabled:!s,onClick:()=>s&&$t(s),children:e.title},void 0,!1,void 0,this),e.detail&&r("div",{class:"session-item-detail",children:e.detail},void 0,!1,void 0,this),a!==null&&r("div",{class:"session-gate-ttl","data-testid":"gate-countdown",children:["auto-holds in ",ap(a)," if unanswered"]},void 0,!0,void 0,this),r("div",{class:"session-gate-actions",children:[r("button",{type:"button",class:"session-gate-approve",disabled:n!==null,onClick:()=>void i("approved"),children:n==="approved"?"Approving…":"Approve"},void 0,!1,void 0,this),r("button",{type:"button",class:"session-gate-reject",disabled:n!==null,onClick:()=>void i("rejected"),children:n==="rejected"?"Rejecting…":"Reject"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("span",{class:"session-item-time",children:Cg(e.createdAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function cI({gate:e}){let[t,n]=E(!1);return r("li",{class:"session-item status-vetoed session-gate-held","data-gate-id":e.id,children:[r("span",{class:"session-glyph","aria-hidden":"true"},void 0,!1,void 0,this),r("div",{class:"session-item-main",children:[r("span",{class:"session-item-title",children:e.title},void 0,!1,void 0,this),r("div",{class:"session-item-detail",children:"Auto-held — no answer in time, the action did not proceed."},void 0,!1,void 0,this),r("div",{class:"session-gate-actions",children:r("button",{type:"button",class:"session-gate-reject",disabled:t,onClick:()=>{n(!0),CC(e).finally(()=>n(!1))},children:t?"Reopening…":"Reopen"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("span",{class:"session-item-status",children:"held"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function UL(e){let t=e.resolvedBy;if(!t)return e.status;let n=e.status==="approved"?"Approved":"Rejected";if(t.actor==="human")return`${n} by you`;if(t.actor==="system")return`${n} by system`;let o=t.agentId||t.source||"agent";return`${e.selfAnswer?"Self-":""}${n.toLowerCase()} by ${o}`}function uI({gate:e}){return r("li",{class:`session-item status-${e.status}`,"data-gate-id":e.id,children:[r("span",{class:"session-glyph","aria-hidden":"true"},void 0,!1,void 0,this),r("div",{class:"session-item-main",children:[r("span",{class:"session-item-title",children:e.title},void 0,!1,void 0,this),r("div",{class:"session-item-detail",children:UL(e)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function dI(){let e=To.value,t=st.value.size,[n,o]=E(!1),i=(s)=>{o(!0),xC(s).finally(()=>o(!1))};return r("div",{class:`session-scope${e?" is-fenced":""}`,"data-testid":"session-scope",children:[r("span",{class:"session-scope-dot","aria-hidden":"true"},void 0,!1,void 0,this),e?r(be,{children:[r("span",{class:"session-scope-text",children:["Scoped to ",r("strong",{children:e.nodeIds.length},void 0,!1,void 0,this)," node",e.nodeIds.length===1?"":"s"," · writes outside are blocked"]},void 0,!0,void 0,this),r("button",{type:"button",class:"session-scope-action",disabled:n,onClick:()=>i(null),children:"Clear"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):r(be,{children:[r("span",{class:"session-scope-text",children:"Unscoped — the agent may write anywhere"},void 0,!1,void 0,this),r(_e,{label:t===0?"Select nodes on the canvas first":"Fence the agent to the selected nodes",align:"end",children:r("button",{type:"button",class:"session-scope-action",disabled:n||t===0,onClick:()=>i([...st.value]),children:["Fence to selection",t>0?` (${t})`:""]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function jL(e){if(e==="browser")return"you";return en.value.find((n)=>n.sessionId===e||n.source===e)?.label??e}function ZL({entry:e}){let t=jl.value.has(e.id);return r("li",{class:`session-timeline-row tone-${FL[e.kind]??"muted"}`,children:[r("span",{class:"session-timeline-dot","aria-hidden":"true"},void 0,!1,void 0,this),r("div",{class:"session-timeline-main",children:[r("div",{class:"session-timeline-head",children:[r("span",{class:"session-timeline-label",children:e.label},void 0,!1,void 0,this),e.who&&r("span",{class:"session-timeline-who",style:{"--identity-color":So(e.who)},children:jL(e.who)},void 0,!1,void 0,this),r("span",{class:"session-item-time",children:Cg(e.createdAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"session-timeline-body",children:e.body},void 0,!1,void 0,this),e.undoable&&!t&&r("button",{type:"button",class:"session-timeline-undo","data-testid":"timeline-undo",onClick:()=>void eg(e),children:[r(hm,{size:14},void 0,!1,void 0,this)," undo this edit"]},void 0,!0,void 0,this),t&&r("div",{class:"session-timeline-undone",children:"undone · steering sent"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function pI(){let e=Co.value,t=nr();if(!eo.value&&e.length===0)return null;return r("aside",{class:"session-panel","aria-label":"Agent controls",children:[r("header",{class:"session-panel-header",children:[r("span",{class:"session-panel-title",children:"Agent controls"},void 0,!1,void 0,this),r("span",{class:"top-bar-spacer"},void 0,!1,void 0,this),r("button",{type:"button",class:"session-collapse","aria-label":"Collapse agent controls",onClick:()=>eo.value=!1,disabled:e.length>0,children:r(ni,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r(dI,{},void 0,!1,void 0,this),r("div",{class:"session-panel-scroll",children:[r("ul",{class:"session-list","aria-label":"Approvals",children:[e.map((n)=>r(lI,{gate:n,now:t},n.id,!1,void 0,this)),ns.value.map((n)=>r(cI,{gate:n},n.id,!1,void 0,this)),Qh.value.map((n)=>r(uI,{gate:n},n.id,!1,void 0,this))]},void 0,!0,void 0,this),da.value.map((n)=>r("div",{class:"session-item",children:[r("span",{class:"session-item-main",children:n.label},void 0,!1,void 0,this),r("button",{type:"button",class:"session-end",onClick:()=>void Zl(n),children:"End attachment"},void 0,!1,void 0,this)]},n.sessionId,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function fI(){q(()=>()=>{eo.value=!1},[]);let e=fi.value,t=bC.value,n=Co.value,o=ns.value,i=Qh.value,s=SC.value,[a,l]=E(!1),[c,u]=E(null),d=nr();if(q(()=>{gi()},[]),!(eo.value||n.length>0))return r("aside",{class:"session-panel is-collapsed","aria-label":"Session (collapsed)",children:[r("button",{type:"button",class:"session-collapse",onClick:()=>{eo.value=!0},"aria-label":"Expand session panel",children:"‹"},void 0,!1,void 0,this),e&&r("span",{class:`session-collapsed-live phase-${e.phase}`,"aria-label":`Session live: ${di(e)}`,children:[r("span",{class:"session-live-dot","aria-hidden":"true"},void 0,!1,void 0,this),"live"]},void 0,!0,void 0,this),r("span",{class:"session-collapsed-label",children:"Session"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return r("aside",{class:"session-panel","aria-label":"Session",children:[r("header",{class:"session-panel-header",children:[r("span",{class:"session-panel-title",children:"Session"},void 0,!1,void 0,this),e&&r(_e,{label:di(e),tapToOpen:!0,children:r("span",{class:`session-live phase-${e.phase}`,children:[r("span",{class:"session-live-dot","aria-hidden":"true"},void 0,!1,void 0,this),"live"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),r("span",{class:"top-bar-spacer"},void 0,!1,void 0,this),e&&r(_e,{label:"End this session",body:"A receipt and a snapshot of the board follow.",align:"end",children:r("button",{type:"button",class:"session-end",onClick:()=>void Zl(e),children:"End"},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("button",{type:"button",class:"session-collapse",onClick:()=>{eo.value=!1},"aria-label":"Collapse session panel",children:r(ni,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r(dI,{},void 0,!1,void 0,this),(()=>{let f=s.find((m)=>m.undoable&&!jl.value.has(m.id));if(!f)return null;return r("div",{class:"session-undo-row","data-testid":"session-undo-row",children:[r("span",{class:"session-undo-text",children:["Agent edit on top: ",f.body]},void 0,!0,void 0,this),r("button",{type:"button",class:"session-undo-btn",onClick:()=>void eg(f),children:[r(hm,{size:14},void 0,!1,void 0,this)," Undo"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)})(),r("div",{class:"session-panel-body",children:[r("section",{class:"session-section",children:(()=>{let f=t.filter((C)=>C.status==="in-progress"||C.status==="todo").length,m=t.filter((C)=>C.status!=="cancelled"),h=m.filter((C)=>C.status==="done").length,g=t.length-m.length,y=n.length>0,b=a||y,x=f>0?`${f} running`:m.length>0?`${h}/${m.length} done${g>0?` · ${g} cancelled`:""}`:t.length>0?`${t.length} cancelled`:"none yet";return r(be,{children:[r("button",{type:"button",class:"session-section-toggle","aria-expanded":b,"data-testid":"work-items-toggle",onClick:()=>l((C)=>!C),children:[r("span",{class:"session-section-title",children:"Work items"},void 0,!1,void 0,this),r("span",{class:"session-work-summary",children:[f>0&&r("span",{class:"session-work-dot","aria-hidden":"true"},void 0,!1,void 0,this),x]},void 0,!0,void 0,this),r("span",{class:`session-section-chevron${b?" is-open":""}`,"aria-hidden":"true",children:r(ni,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),b&&(n.length===0&&o.length===0&&i.length===0&&t.length===0?r("div",{class:"session-empty",children:"No work items yet — the agent's tasks and gates appear here."},void 0,!1,void 0,this):r("ul",{class:"session-list","aria-live":"polite","aria-label":"Work items and gates",children:[n.map((C)=>r(lI,{gate:C,now:d},C.id,!1,void 0,this)),o.map((C)=>r(cI,{gate:C},C.id,!1,void 0,this)),i.map((C)=>r(uI,{gate:C},C.id,!1,void 0,this)),t.map((C)=>r(HL,{item:C},C.id,!1,void 0,this))]},void 0,!0,void 0,this))]},void 0,!0,void 0,this)})()},void 0,!1,void 0,this),r("section",{class:"session-section",children:[r("h3",{class:"session-section-title",children:"Timeline"},void 0,!1,void 0,this),r("div",{class:"session-timeline-filters",role:"group","aria-label":"Filter timeline",children:aI.map((f)=>r("button",{type:"button",class:`activity-filter${os.value===f.id?" is-active":""}`,"aria-pressed":os.value===f.id,onMouseEnter:()=>u(f.id),onMouseLeave:()=>u((m)=>m===f.id?null:m),onFocus:()=>u(f.id),onBlur:()=>u((m)=>m===f.id?null:m),onClick:()=>{os.value=f.id},children:f.label},f.id,!1,void 0,this))},void 0,!1,void 0,this),r("div",{class:"session-timeline-hint","data-testid":"timeline-filter-hint",children:BL[c??os.value]},void 0,!1,void 0,this),s.length===0?r("div",{class:"session-empty",children:os.value==="all"?"Nothing recorded yet.":"Nothing of this kind yet."},void 0,!1,void 0,this):r("ul",{class:"session-list session-timeline","aria-live":"polite","aria-label":"Timeline",children:s.map((f)=>r(ZL,{entry:f},f.id,!1,void 0,this))},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 Tg(e){if(!e||typeof e!=="object")return null;let t=e,n=(o)=>Array.isArray(o)?o.length:0;return{added:n(t.addedNodes)+n(t.addedEdges),removed:n(t.removedNodes)+n(t.removedEdges),modified:n(t.modifiedNodes)}}var mI=(e)=>e.map((t)=>t.title).join(", ");function hI(e){let t=new Date(e);return Number.isNaN(t.getTime())?"":`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}function WL({context:e,label:t,snapshotId:n}){let[o,i]=E(!1),[s,a]=E([]),[l,c]=E(!1),[u,d]=E(null),[p,f]=E(!1),m=e.edited.length>0&&e.edited.every((x)=>s.includes(x.id))?"undone":l?"kept":null;q(()=>{a([]),c(!1),d(null)},[e]);let h=async(x)=>{if(!n||p)return;f(!0);try{let C=await EC(n,x.filter((v)=>!s.includes(v.id)));return a((v)=>[...v,...C.restored]),C}finally{f(!1)}},y=[{key:"read",name:"Read",glyph:"eye"},{key:"pinned",name:"Pinned",glyph:"pin"},{key:"created",name:"Created",glyph:"spark"},{key:"edited",name:"Edited",glyph:"pen"}].filter((x)=>e[x.key].length>0);if(y.length===0&&e.changedSinceRead.length===0)return null;let b=Hn.value?.kind==="receipt";return r("div",{class:"session-receipt-context","data-testid":"session-receipt-context",children:[e.changedSinceRead.length>0&&r("div",{class:"session-receipt-warn",children:[r("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:r("path",{d:hi.warn},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("span",{children:[mI(e.changedSinceRead)," changed after ",t," read"," ",e.changedSinceRead.length===1?"it":"them","."]},void 0,!0,void 0,this),r("button",{type:"button",class:"session-receipt-mini",disabled:o,onClick:()=>{let x=e.changedSinceRead.length===1?"it":"them";pa(`${e.changedSinceRead.map((C)=>`“${C.title}”`).join(", ")} changed after you read ${x} — read ${x} again before relying on ${x}.`).then((C)=>i(C))},children:o?"Told":`Tell ${t}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),y.map((x)=>r("div",{class:"session-receipt-context-row","data-row":x.key,children:[r("div",{class:"session-receipt-context-head",children:[x.glyph==="pin"?r(uo,{},void 0,!1,void 0,this):r("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:r("path",{d:hi[x.glyph]},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("span",{class:"session-receipt-context-name",children:x.name},void 0,!1,void 0,this),r("span",{class:"session-receipt-context-count",children:e[x.key].length},void 0,!1,void 0,this),x.key==="pinned"&&r("button",{type:"button",class:"session-receipt-mini",disabled:e.pinned.some((C)=>C.boardId&&C.boardId!==ae.value),onClick:()=>Zk(e.pinned.map((C)=>C.id)),children:"Unpin"},void 0,!1,void 0,this),x.key==="edited"&&n&&r("button",{type:"button",class:"session-receipt-mini",disabled:m!==null||p||e.edited.some((C)=>C.boardId&&C.boardId!==ae.value),onClick:()=>{h(e.edited).then((C)=>{if(C?.ok)c(!0)})},children:m==="undone"?"✓ Undone":m==="kept"?"Kept your edits":"Undo"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x.key==="edited"&&m&&r("div",{class:"session-receipt-context-items",children:m==="undone"?"every card restored":"cards you edited since were left alone"},void 0,!1,void 0,this),x.key==="edited"?r("ul",{class:"session-receipt-edits",children:e.edited.map((C)=>r(GL,{node:C,canUndo:n!==null,undoing:p,open:u===or(C),onToggle:()=>d(u===or(C)?null:or(C)),undone:s.includes(C.id),onUndo:()=>void h([C])},or(C),!1,void 0,this))},void 0,!1,void 0,this):r("div",{class:"session-receipt-context-items",children:x.key==="pinned"?e.pinned.map((C)=>C.reason?`${C.title} — “${C.reason}”`:C.title).join("; "):mI(e[x.key])},void 0,!1,void 0,this)]},x.key,!0,void 0,this)),r("button",{type:"button",role:"switch","aria-checked":b,class:`session-receipt-lens${b?" is-on":""}`,onClick:()=>Wl(!b),children:[r("span",{class:"session-receipt-lens-track","aria-hidden":"true",children:r("span",{class:"session-receipt-lens-knob"},void 0,!1,void 0,this)},void 0,!1,void 0,this),"Dim untouched nodes"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function qL(e,t){let n=(d)=>d.match(/\s+|[\p{L}\p{N}_]+|[^\s\p{L}\p{N}_]/gu)??[],o=n(e),i=n(t),s=Array.from({length:o.length+1},()=>new Uint16Array(i.length+1));for(let d=o.length-1;d>=0;d--)for(let p=i.length-1;p>=0;p--)s[d][p]=o[d]===i[p]?s[d+1][p+1]+1:Math.max(s[d+1][p],s[d][p+1]);let a=[],l=[],c=0,u=0;while(c<o.length||u<i.length)if(c<o.length&&u<i.length&&o[c]===i[u])a.push({text:o[c++],changed:!1}),l.push({text:i[u++],changed:!1});else if(c<o.length&&(u===i.length||s[c+1][u]>=s[c][u+1]))a.push({text:o[c++],changed:!0});else l.push({text:i[u++],changed:!0});return[a,l]}function GL({node:e,canUndo:t,undoing:n,open:o,onToggle:i,undone:s,onUndo:a}){let l=!e.boardId||e.boardId===ae.value,c=l?H.value.get(e.id):void 0,u=Ge.value.find((m)=>m.id===e.boardId),d=Ke(()=>o?qL(e.before??"",e.after??""):[],[o,e.before,e.after]),p=D(null);Me(()=>{for(let m of p.current?.querySelectorAll(".session-receipt-diff-text")??[]){let h=m.querySelector("del, ins");if(h)m.scrollTop=h.getBoundingClientRect().top-m.getBoundingClientRect().top-24}},[d]);let f=c?.lastEditedBy?.actor==="human";return r("li",{class:"session-receipt-edit",children:[r("span",{class:"session-receipt-edit-line",children:[r("span",{children:[e.title,e.change?r("span",{class:"session-receipt-edit-change",children:[" — ",e.change]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this),e.before!==void 0&&r("button",{type:"button",class:"session-receipt-link","aria-expanded":o,onClick:i,children:o?"Hide change":"See change"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),o&&r("span",{ref:p,class:"session-receipt-diff-pair",children:[d.map((m,h)=>r("span",{class:"session-receipt-diff-side",children:[r("span",{class:"session-receipt-diff-label",children:h===0?"Before":"After"},void 0,!1,void 0,this),r("span",{class:"session-receipt-diff-text",children:m.length?m.map(({text:g,changed:y},b)=>g==="…"&&(b===0||b===m.length-1)?r("span",{class:"session-receipt-diff-cut",children:g},b,!1,void 0,this):y?h===0?r("del",{children:g},b,!1,void 0,this):r("ins",{children:g},b,!1,void 0,this):g):"Empty"},void 0,!1,void 0,this)]},h,!0,void 0,this)),t&&r("span",{class:"session-receipt-undo",children:[c?r("button",{type:"button",class:"session-receipt-mini",disabled:s||f||n,onClick:a,children:s?"✓ Undone":f?"You edited it since":"Undo this card"},void 0,!1,void 0,this):u&&!l?r("button",{type:"button",class:"session-receipt-mini",onClick:()=>void zn(u.id),children:["Open ",u.name," to undo"]},void 0,!0,void 0,this):r("span",{class:"session-receipt-edit-change",children:"Card no longer on this board"},void 0,!1,void 0,this),r("span",{class:"session-receipt-edit-change",children:c?s?"the card shows Before again":f?"undo would lose your edit":e.before?.includes("…")||e.after?.includes("…")?"undoes the whole card":"puts back the text from before":u&&!l?`it is on ${u.name}`:""},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 gI({onOpenSnapshots:e}){let t=ts.value,[n,o]=E(null),[i,s]=E(!1);if(q(()=>o(null),[t]),!xt.value||!t)return null;let a=t.snapshot?.boardId===ae.value,l=Ge.value.find((f)=>f.id===t.snapshot?.boardId),c=async()=>{if(!t.snapshot||!a)return;s(!0);try{let f=await qt(`/api/canvas/snapshots/${encodeURIComponent(t.snapshot.id)}/diff`,{headers:{"x-pmx-workbench":"1"}});if(f.ok){let m=await f.json();o(Tg(m.diff)??{added:0,removed:0,modified:0})}}finally{s(!1)}},u=hI(t.endedAt),d=t.startedAt?hI(t.startedAt):"",p=t.endedBy==="human"?"ended by you":t.endedBy==="idle-timeout"?"ended on idle timeout":t.endedBy==="agent"?"ended by the agent":"";return r("div",{class:"session-receipt","data-testid":"session-receipt",role:"status",children:[r("div",{class:"session-receipt-head",children:[r("span",{class:"session-receipt-dot","aria-hidden":"true"},void 0,!1,void 0,this),r("span",{class:"session-receipt-title",children:t.sessions>1?`${t.sessions} sessions ended${u?` · ${u}`:""}`:`What ${t.labels[0]} did`},void 0,!1,void 0,this),r("button",{type:"button",class:"session-receipt-close",onClick:Od,"aria-label":"Dismiss receipt",children:r(Tt,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t.sessions>1?r("div",{class:"session-receipt-who",children:t.labels.join(", ")},void 0,!1,void 0,this):r("div",{class:"session-receipt-who","data-testid":"session-receipt-span",children:[`This session · ${d?`${d}–`:""}${u}`,t.snapshot?"saved as a snapshot":"",p].filter(Boolean).join(" · ")},void 0,!1,void 0,this),r("div",{class:"session-receipt-tiles",children:[r("div",{class:"session-receipt-tile",children:[r("span",{class:"session-receipt-tile-label",children:"Items"},void 0,!1,void 0,this),r("span",{class:"session-receipt-tile-value",children:t.counts.items},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"session-receipt-tile",children:[r("span",{class:"session-receipt-tile-label",children:"Done"},void 0,!1,void 0,this),r("span",{class:"session-receipt-tile-value tone-ok",children:t.counts.done},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t.counts.cancelled>0&&r("div",{class:"session-receipt-tile",children:[r("span",{class:"session-receipt-tile-label",children:"Cancelled"},void 0,!1,void 0,this),r("span",{class:"session-receipt-tile-value tone-muted",children:t.counts.cancelled},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t.counts.rejected>0&&r("div",{class:"session-receipt-tile",children:[r("span",{class:"session-receipt-tile-label",children:"Rejected"},void 0,!1,void 0,this),r("span",{class:"session-receipt-tile-value tone-danger",children:t.counts.rejected},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t.counts.held>0&&r("div",{class:"session-receipt-tile",children:[r("span",{class:"session-receipt-tile-label",children:"Held"},void 0,!1,void 0,this),r("span",{class:"session-receipt-tile-value tone-warn",children:t.counts.held},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r(WL,{context:t.context,label:t.labels.join(", "),snapshotId:t.sessions===1?t.snapshot?.id??null:null},void 0,!1,void 0,this),r("div",{class:"session-receipt-note",children:t.sessions>1?"History has each session’s diff and the snapshot from before it.":t.snapshot?"A snapshot of the board from before this session is saved — restore it to undo the session.":t.context.created.length===0&&t.context.edited.length===0?"The board itself did not change — nothing to restore.":"The board was empty when the session started — nothing to restore."},void 0,!1,void 0,this),n&&r("div",{class:"session-receipt-diff","data-testid":"session-receipt-diff",children:["This session: ",n.added," added · ",n.removed," removed · ",n.modified," modified"]},void 0,!0,void 0,this),r("div",{class:"session-receipt-actions",children:[t.snapshot&&r("button",{type:"button",class:"session-receipt-primary",disabled:i||!a&&!l,onClick:()=>a?void c():l&&void zn(l.id),children:!a&&l?`Open ${l.name} to compare`:i?"Comparing…":"View diff"},void 0,!1,void 0,this),r(_e,{label:"Open the History drawer",body:"Saved boards and past sessions.",side:"up",align:"end",children:r("button",{type:"button",class:"session-receipt-secondary",onClick:e,children:"History"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var KL=[{title:"Tools",shortcuts:[{keys:"V",desc:"Select tool — drag empty space to lasso"},{keys:"Space (hold)",desc:"Pan — drag anywhere moves the board"},{keys:"A",desc:"Annotate — draw on the canvas"}]},{title:"Navigation",shortcuts:[{keys:Bt("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:"F",desc:"Fit all nodes on screen"},{keys:Bt("0"),desc:"Reset viewport to origin"},{keys:`${Bt("+")} / ${Bt("−")}`,desc:"Zoom in / out"}]},{title:"Creation",shortcuts:[{keys:"M",desc:"New markdown note"},{keys:"I / W / H",desc:"New image / webpage / HTML surface"},{keys:"Shift+F",desc:"New file node (workspace path)"},{keys:"G / Shift+G",desc:"Group the selection (new frame when empty) / ungroup"},{keys:"Double-click",desc:"Open actions on a node or create menu 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:"Drag empty space",desc:"Lasso select multiple nodes"},{keys:bl?"Delete / ⌫":"Delete / Backspace",desc:"Delete the selection (or the focused node)"},{keys:bl?"⌘Z / ⇧⌘Z":"Ctrl+Z / Ctrl+Y",desc:"Undo / redo — agent edits included"},{keys:"Esc",desc:"Close overlay first, then clear selection and view filters"}]},{title:"View",shortcuts:[{keys:"?",desc:"Toggle this shortcut overlay"},{keys:"Minimap",desc:"Click/drag to navigate (toggle in the rail)"},{keys:"Right-drag",desc:"Pan the board from anywhere"}]}];function yI({onClose:e}){return r("div",{class:"shortcut-overlay-backdrop",onMouseDown:e,children:r("div",{class:"shortcut-overlay",onMouseDown:(t)=>t.stopPropagation(),children:[r("div",{class:"shortcut-overlay-header",children:[r("span",{class:"shortcut-overlay-title",children:"Keyboard Shortcuts"},void 0,!1,void 0,this),r("span",{class:"shortcut-overlay-hint",children:["Press ",r("kbd",{children:"?"},void 0,!1,void 0,this)," or ",r("kbd",{children:"Esc"},void 0,!1,void 0,this)," to close"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"shortcut-overlay-body",children:KL.map((t)=>r("div",{class:"shortcut-group",children:[r("div",{class:"shortcut-group-title",children:t.title},void 0,!1,void 0,this),t.shortcuts.map((n)=>r("div",{class:"shortcut-row",children:[r("kbd",{class:"shortcut-keys",children:n.keys},void 0,!1,void 0,this),r("span",{class:"shortcut-desc",children:tt()&&n.desc.startsWith("Undo / redo")?"Undo / redo — available in the local workbench only":n.desc},void 0,!1,void 0,this)]},n.keys,!0,void 0,this))]},t.title,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var vI="Before session · ";function bI(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return"";return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}function lp(e){if(!e.startsWith(vI))return null;let t=e.slice(vI.length),n=t.lastIndexOf(" · ");return n>0?t.slice(0,n):t}function xI({open:e,onClose:t,anchorRef:n}){let[o,i]=E([]),[s,a]=E(!1),[l,c]=E(!1),[u,d]=E(null),[p,f]=E(""),[m,h]=E(null),[g,y]=E({}),b=D(null),x=D(null);q(()=>{if(!e)return;a(!0),gk().then((w)=>{i(w),a(!1)})},[e]),q(()=>{if(e)setTimeout(()=>x.current?.focus(),50)},[e]),q(()=>{if(!e)return;let w=(P)=>{let L=b.current,N=n.current;if(L&&!L.contains(P.target)&&N&&!N.contains(P.target))t()};return document.addEventListener("mousedown",w),()=>document.removeEventListener("mousedown",w)},[e,t]),q(()=>{if(!e)return;let w=(P)=>{if(P.key==="Escape")t()};return document.addEventListener("keydown",w),()=>document.removeEventListener("keydown",w)},[e,t]);let C=oe(async()=>{let w=p.trim();if(!w)return;c(!0);let P=await yk(w);if(c(!1),P.ok&&P.snapshot)i((L)=>[P.snapshot,...L]),f("")},[p]),v=oe(async(w)=>{h(null),d(w);let P=await vk(w);if(d(null),P.ok)t()},[t]),k=oe(async(w)=>{if((await bk(w)).ok)i((L)=>L.filter((N)=>N.id!==w));h(null)},[]),_=oe(async(w)=>{y((L)=>({...L,[w]:"loading"}));let P=await de("snapshotDiff",`/api/canvas/snapshots/${encodeURIComponent(w)}/diff`,{});y((L)=>({...L,[w]:Tg(P.diff)??{added:0,removed:0,modified:0}}))},[]);if(!e)return null;let I=(w,P)=>m?.id===w.id?r(be,{children:[r("button",{type:"button",class:`snapshot-action-btn ${m.action==="delete"?"snapshot-action-confirm":"snapshot-action-restore"}`,onClick:()=>m.action==="delete"?k(w.id):v(w.id),disabled:u!==null,children:m.action==="delete"?"Delete":u===w.id?"Restoring…":"Confirm"},void 0,!1,void 0,this),r("button",{type:"button",class:"snapshot-action-btn",onClick:()=>h(null),disabled:u!==null,children:"Cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):r(be,{children:[r(_e,{label:"Restore this snapshot",body:tt()?"Replaces the current canvas.":"Replaces the current canvas (undoable).",align:"end",children:r("button",{type:"button",class:"snapshot-action-btn snapshot-action-restore",onClick:()=>h({id:w.id,action:"restore"}),disabled:u!==null,children:u===w.id?"Restoring…":P},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(_e,{label:"Delete this snapshot",align:"end",children:r("button",{type:"button",class:"snapshot-action-btn snapshot-action-delete",onClick:()=>h({id:w.id,action:"delete"}),"aria-label":"Delete snapshot",disabled:u!==null,children:r(Tt,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return r("div",{ref:b,class:"snapshot-panel","data-testid":"history-drawer",role:"dialog","aria-label":"History",children:[r("div",{class:"snapshot-panel-header",children:[r("span",{class:"snapshot-panel-title",children:"History"},void 0,!1,void 0,this),r("span",{class:"snapshot-panel-sub",children:"snapshots + sessions"},void 0,!1,void 0,this),r("span",{class:"snapshot-panel-spacer"},void 0,!1,void 0,this),r("button",{type:"button",class:"snapshot-panel-close",onClick:t,"aria-label":"Close history",children:r(Tt,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"snapshot-save-form",children:[r("input",{ref:x,type:"text",class:"snapshot-name-input",value:p,onInput:(w)=>f(w.target.value),onKeyDown:(w)=>{if(w.key==="Enter")C()},placeholder:"Save a snapshot as…","aria-label":"Snapshot name",maxLength:80,disabled:l},void 0,!1,void 0,this),r("button",{type:"button",class:"snapshot-save-btn",onClick:C,disabled:!p.trim()||l,children:l?"…":"Save"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"snapshot-restore-note",children:tt()?"Restoring replaces the current canvas. Save a snapshot first to keep your current state.":"Restoring replaces the current canvas. You can undo it if needed."},void 0,!1,void 0,this),r("div",{class:"snapshot-list",children:[s&&r("div",{class:"snapshot-empty",children:"Loading…"},void 0,!1,void 0,this),!s&&o.length===0&&r("div",{class:"snapshot-empty",children:"No history yet. Save a snapshot, or start an agent session — it snapshots for you."},void 0,!1,void 0,this),!s&&[...o.filter((w)=>lp(w.name)===null),...o.some((w)=>lp(w.name)!==null)?[{id:"__sessions-header__"}]:[],...o.filter((w)=>lp(w.name)!==null)].map((w)=>{if(w.id==="__sessions-header__")return r("div",{class:"snapshot-section-header","data-testid":"history-sessions-header",children:"Sessions"},w.id,!1,void 0,this);let P=lp(w.name),L=g[w.id];if(P!==null)return r("div",{class:"snapshot-item is-session","data-testid":"history-session",children:[r("div",{class:"snapshot-item-head",children:[r("span",{class:"snapshot-session-dot","aria-hidden":"true"},void 0,!1,void 0,this),r("span",{class:"snapshot-item-name",children:["Agent session — ",P]},void 0,!0,void 0,this),r("span",{class:"snapshot-item-time",children:bI(w.createdAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"snapshot-item-meta",children:["snapshot at session start · ",w.nodeCount," node",w.nodeCount!==1?"s":"",L&&L!=="loading"&&r("span",{class:"snapshot-item-diff",children:[" ","· since: ",L.added," added · ",L.removed," removed · ",L.modified," modified"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"snapshot-item-actions is-session",children:[r("button",{type:"button",class:"snapshot-action-btn snapshot-action-diff",disabled:L==="loading",onClick:()=>void _(w.id),children:L==="loading"?"Comparing…":"View diff"},void 0,!1,void 0,this),I(w,"Restore pre-state")]},void 0,!0,void 0,this)]},w.id,!0,void 0,this);return r("div",{class:"snapshot-item","data-testid":"history-snapshot",children:[r("div",{class:"snapshot-item-head",children:[r("span",{class:"snapshot-item-glyph","aria-hidden":"true",children:"◫"},void 0,!1,void 0,this),r("span",{class:"snapshot-item-name",children:w.name},void 0,!1,void 0,this),r("span",{class:"snapshot-item-time",children:bI(w.createdAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("div",{class:"snapshot-item-meta",children:[w.nodeCount," node",w.nodeCount!==1?"s":"",w.edgeCount>0?` · ${w.edgeCount} edge${w.edgeCount!==1?"s":""}`:""," · ",Kd(w.createdAt)]},void 0,!0,void 0,this),r("div",{class:"snapshot-item-actions",children:I(w,"Restore")},void 0,!1,void 0,this)]},w.id,!0,void 0,this)})]},void 0,!0,void 0,this),r("div",{class:"snapshot-panel-foot",children:"Every agent session start writes a snapshot automatically."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var VL=8;function wI({fallbackName:e}){let[t,n]=E(!1),o=D(null),i=D(null),s=D(null);Me(()=>{if(!t)return;let p=(m)=>{if(m.target instanceof Node&&!o.current?.contains(m.target)&&!s.current?.contains(m.target))n(!1)},f=(m)=>{if(m.key==="Escape")m.stopPropagation(),n(!1),i.current?.focus()};return document.addEventListener("pointerdown",p,!0),document.addEventListener("keydown",f,!0),()=>{document.removeEventListener("pointerdown",p,!0),document.removeEventListener("keydown",f,!0)}},[t]);let a=Yn(),l=!io.value?e:a&&!ut.value?a.name:"Home",c=Ge.value.filter((p)=>ut.value||p.id!==ae.value).slice(0,VL),u=i.current?.getBoundingClientRect(),d=(p)=>{n(!1),zn(p)};return r("span",{class:"board-switcher",ref:o,children:[r("button",{ref:i,type:"button",class:"top-bar-title board-switcher-button","aria-haspopup":"menu","aria-expanded":t,"aria-label":`Board: ${l}. Switch board`,onClick:()=>n((p)=>!p),children:[r("span",{class:"board-switcher-name",children:l},void 0,!1,void 0,this),r("span",{class:"board-switcher-caret","aria-hidden":"true",children:r(Hs,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t&&u&&r(js,{children:r("div",{ref:s,class:"toolbar-menu board-switcher-menu",role:"menu","aria-label":"Boards",style:{position:"fixed",left:`min(${u.left}px, max(12px, calc(100vw - 352px)))`,top:`${u.bottom+8}px`,right:"auto",maxHeight:`min(70vh, calc(100dvh - ${u.bottom+20}px))`},children:[c.length>0&&r("div",{class:"board-switcher-heading",children:"Recent boards"},void 0,!1,void 0,this),r("div",{class:"board-switcher-recents",children:c.map((p)=>r("div",{class:"board-switcher-row",children:[r("button",{type:"button",role:"menuitem",class:"toolbar-menu-item",onClick:()=>d(p.id),children:[r("span",{class:"board-switcher-icon","aria-hidden":"true",children:r(Au,{size:18},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("span",{class:"board-switcher-item-copy",children:[r("span",{class:"board-switcher-item-name",children:p.name},void 0,!1,void 0,this),r("span",{class:"board-switcher-item-folder",children:p.folder?.split("/").join(" / ")||"Unfiled"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("span",{class:"board-switcher-item-meta",children:[p.nodeCount," ",p.nodeCount===1?"node":"nodes"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r(ho,{board:p},void 0,!1,void 0,this)]},p.id,!0,void 0,this))},void 0,!1,void 0,this),r("div",{class:"board-switcher-actions",children:[r("button",{type:"button",role:"menuitem",class:"toolbar-menu-item",onClick:()=>{n(!1),Sg()},children:[r("span",{class:"board-switcher-icon","aria-hidden":"true",children:r(rS,{size:18},void 0,!1,void 0,this)},void 0,!1,void 0,this),"New board…"]},void 0,!0,void 0,this),r("button",{type:"button",role:"menuitem",class:"toolbar-menu-item",onClick:()=>d(null),children:[r("span",{class:"board-switcher-icon","aria-hidden":"true",children:r(Tr,{size:18},void 0,!1,void 0,this)},void 0,!1,void 0,this),"All boards (Home)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var kI=3,SI={"waiting-approval":0,thinking:1,tooling:2,idle:3};function XL(){let[e,t]=E(null),n=D(null);Me(()=>{if(!e)return;let d=(m)=>{if(!n.current?.contains(m.target)&&!e.button.contains(m.target))t(null)},p=(m)=>{if(m.key==="Escape"&&!m.defaultPrevented)m.preventDefault(),t(null),e.button.focus({preventScroll:!0})},f=()=>t(null);return document.addEventListener("pointerdown",d,!0),document.addEventListener("keydown",p),window.addEventListener("resize",f),()=>{document.removeEventListener("pointerdown",d,!0),document.removeEventListener("keydown",p),window.removeEventListener("resize",f)}},[e]);let o=da.value;if(q(()=>{if(e&&!e.button.isConnected)t(null)},[o,e]),!xt.value||o.length===0)return null;let i=o.filter((d)=>!d.parentAgentId||!o.some((p)=>p.sessionId!==d.sessionId&&!p.parentAgentId&&(p.sessionId===d.parentAgentId||p.source===d.parentAgentId))),s=[...i].sort((d,p)=>(SI[d.phase]??4)-(SI[p.phase]??4)),a=s.slice(0,kI),l=s.slice(kI),c=i.reduce((d,p)=>(d[p.phase]=(d[p.phase]??0)+1,d),{}),u=[c["waiting-approval"]&&`${c["waiting-approval"]} waiting on approval`,c.thinking&&`${c.thinking} thinking`,c.tooling&&`${c.tooling} running tools`,c.idle&&`${c.idle} idle`].filter(Boolean).join(", ");return r(be,{children:[r("span",{class:"agent-chips",children:a.map((d)=>{let p=d.parentAgentId?0:en.value.filter((f)=>f.parentAgentId!=null&&(f.parentAgentId===d.sessionId||f.parentAgentId===d.source)).length;return r(_e,{label:`Agent session — ${d.label}`,tapToOpen:!0,body:"What this attached agent is doing right now: idle, thinking, running a tool, or waiting on your approval. Steer it from the composer below.",children:r("span",{class:`agent-chip phase-${d.phase}`,"data-phase":d.phase,style:{"--identity-color":So(d.sessionId)},children:[r("button",{type:"button",class:"agent-chip-initial","aria-label":`${d.label} session details`,"aria-expanded":e?.id===d.sessionId,"aria-haspopup":"dialog",onClick:(f)=>{f.stopPropagation(),t(e?.id===d.sessionId?null:{id:d.sessionId,button:f.currentTarget})},children:[Ed(d.label),r("span",{class:"agent-chip-dot","aria-hidden":"true"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("span",{class:"agent-chip-dot","aria-hidden":"true"},void 0,!1,void 0,this),r("span",{class:"agent-chip-label",children:di(d)},void 0,!1,void 0,this),r("span",{class:"agent-chip-who hud-collapsible-text",children:d.label},void 0,!1,void 0,this),r(_I,{session:d},void 0,!1,void 0,this),p>0&&r("span",{class:"agent-chip-workers",children:["+",p," worker",p===1?"":"s"]},void 0,!0,void 0,this),r("button",{type:"button",class:"agent-chip-end","aria-label":`End ${d.label} session`,onClick:(f)=>{f.stopPropagation(),Zl({source:d.source,agentId:d.agentId})},children:r(Tt,{size:14},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},d.sessionId,!1,void 0,this)})},void 0,!1,void 0,this),l.length>0&&r(_e,{label:`${i.length} agent sessions attached`,tapToOpen:!0,body:`${i.length} agents on this board — ${u}. The most active wear their own chips; the rest are here, and idle agents' cursors leave the board until they work again.`,children:r("span",{class:"agent-chip agent-chip-more","data-testid":"agent-chip-more",children:["+",l.length," · ",i.length," agents"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),e&&a.filter((d)=>d.sessionId===e.id).map((d)=>r(js,{children:r("div",{ref:n,class:`agent-session-popover phase-${d.phase}`,role:"dialog","aria-label":`${d.label} session details`,style:{right:`${Math.max(12,window.innerWidth-e.button.getBoundingClientRect().right)}px`,top:`${e.button.getBoundingClientRect().bottom+8}px`},children:[r("div",{class:"agent-session-popover-head",children:[r("span",{class:"agent-chip-dot","aria-hidden":"true"},void 0,!1,void 0,this),r("strong",{children:[d.label," · ",di(d)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r(_I,{session:d,popover:!0},void 0,!1,void 0,this),r("button",{type:"button",class:"session-receipt-link",onClick:()=>{eo.value=!0,t(null)},children:"Open session panel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},d.sessionId,!1,void 0,this))]},void 0,!0,void 0,this)}function _I({session:e,popover:t=!1}){let n=e.session,o=n?[["read",n.read.length],["created",n.created.length],["edited",n.edited.length],["pinned",n.pinned.length]].filter(([,l])=>l>0):[],i=Hn.value,s=i?.kind==="live"&&i.sessionId===e.sessionId;if(o.length===0&&!s&&!t)return null;let a=o.map(([l,c])=>`${c} ${l}`).join(" · ")||"nothing yet";if(t)return r(be,{children:[r("span",{class:"agent-session-counts",children:a},void 0,!1,void 0,this),r("button",{type:"button",role:"switch","aria-checked":s,class:`session-receipt-lens${s?" is-on":""}`,onClick:()=>Wl(!s,{sessionId:e.sessionId}),children:[r("span",{class:"session-receipt-lens-track","aria-hidden":"true",children:r("span",{class:"session-receipt-lens-knob"},void 0,!1,void 0,this)},void 0,!1,void 0,this),"Dim untouched nodes"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);return r("button",{type:"button",class:`agent-chip-touches${s?" is-on":""}`,"aria-pressed":s,"aria-label":`This session: ${o.map(([l,c])=>`${c} ${l}`).join(", ")||"nothing yet"}. ${s?"Show all cards":"Dim untouched cards"}`,onClick:(l)=>{l.stopPropagation(),Wl(!s,{sessionId:e.sessionId})},children:a},void 0,!1,void 0,this)}function JL(){let e=Co.value.length,t=e>0,n=nr(t?1000:0);if(!t)return null;let o=Co.value.map((i)=>sp(i,n)).filter((i)=>i!==null).sort((i,s)=>i-s)[0];return r(_e,{label:"Approval gates waiting on you",body:"Open agent controls to approve or reject. Unanswered gates auto-hold when the countdown runs out, even with the session beta off.",children:r("button",{type:"button",class:"gate-badge",onClick:()=>eo.value=!0,children:[e," gate",e===1?"":"s",o!==void 0&&` · ${ap(o)}`]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function YL(){let[e,t]=E(!1);if(!xt.value||fi.value)return null;return r(_e,{label:"Start an agent session",body:"Attaches a session to this board: the next agent that writes here is adopted into it, and you get the panel, composer, and receipt.",children:r("button",{type:"button",class:"start-session-btn","aria-label":"Start agent session beta",disabled:e,onClick:()=>{t(!0),yi().finally(()=>t(!1))},children:[r("span",{class:"start-session-dot","aria-hidden":"true"},void 0,!1,void 0,this),r("span",{class:"start-session-label",children:"Start agent session"},void 0,!1,void 0,this),r("span",{class:"beta-tag",children:"beta"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function CI(){let e=D(null);Me(()=>{let g=e.current,y=g?.querySelector(".top-bar-right");if(!g||!y)return;let b=()=>{let v=g.querySelector('.top-bar-more [aria-expanded="true"]');g.classList.remove("is-folded","is-compact");let k=()=>y.getBoundingClientRect().right>g.getBoundingClientRect().right-14;if(v||k())g.classList.add("is-folded");if(k())g.classList.add("is-compact")},x=new ResizeObserver(b);x.observe(g);let C=new MutationObserver(b);return C.observe(g,{childList:!0,characterData:!0,subtree:!0}),b(),()=>{x.disconnect(),C.disconnect()}},[]);let t=ao.value,n=hn.value,o=Te.value,i=H.value.size,s=et.value.size,a=Ls.value,l=Array.from(H.value.values()).filter((g)=>g.type==="trace").length,[c,u]=E("");q(()=>{let g=!1;return qt("/health").then((y)=>y.ok?y.json():null).then((y)=>{if(g||typeof y?.workspace!=="string"||!y.workspace)return;let b=y.workspace.replace(/[\\/]+$/,"").split(/[\\/]/).pop();if(b)u(b)}).catch(()=>{}),()=>{g=!0}},[]);let d=gg.value,p=d??(t==="connected"&&!n?"syncing":t),f=Yn(),m=n?[`${i} node${i!==1?"s":""}`,...s>0?[`${s} edge${s!==1?"s":""}`]:[],...l>0?[`${l} trace${l!==1?"s":""}`]:a?["trace armed"]:[]].join(" · "):"Syncing canvas…",h=()=>{let g=Jt();Bs(g.width,g.height)};return r("div",{class:"top-bar",ref:e,children:[r(_e,{label:`Canvas status: ${p}`,tapToOpen:!0,body:"Live updates stream in over SSE; amber means reconnecting.",align:"start",children:r("span",{class:`connection-dot ${d??t}`,"aria-label":`Canvas status: ${p}`},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(wI,{fallbackName:c||"PMX Canvas"},void 0,!1,void 0,this),f&&!ut.value&&r(ho,{board:f},void 0,!1,void 0,this),r("span",{class:"top-bar-meta hud-collapsible-text",children:xr.value?xr.value.slice(0,12):"…"},void 0,!1,void 0,this),!ut.value&&r("span",{class:"top-bar-meta hud-collapsible-text",children:m},void 0,!1,void 0,this),r("span",{class:"top-bar-spacer"},void 0,!1,void 0,this),r("div",{class:"top-bar-right",children:[r(XL,{},void 0,!1,void 0,this),r(JL,{},void 0,!1,void 0,this),r(aT,{},void 0,!1,void 0,this),r(KT,{},void 0,!1,void 0,this),!tt()&&r(YL,{},void 0,!1,void 0,this),!ut.value&&r(be,{children:[r("div",{class:"top-bar-sep"},void 0,!1,void 0,this),r("div",{class:"top-bar-actions",children:[ae.value&&r(_e,{label:"Export board",body:"One HTML file of this board that anyone can open, no install needed.",children:r("button",{type:"button",class:"present-button",onClick:()=>{ls.value=!0},children:"Export"},void 0,!1,void 0,this)},void 0,!1,void 0,this),ae.value&&r(_e,{label:"Present board",body:"Arrow keys or Space step through stops; Esc exits. Without a saved tour, groups are read top-to-bottom, left-to-right.",children:r("button",{type:"button",class:"present-button",onClick:()=>{dl()},children:"Present"},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(_e,{label:"Zoom out",shortcut:Bt("−"),children:r("button",{type:"button",class:"top-bar-btn",onClick:()=>ei(0.8),"aria-label":"Zoom out",children:r(uS,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(_e,{label:"Reset zoom",shortcut:Bt("0"),children:r("button",{type:"button",class:"top-bar-zoom-label",onClick:()=>_r({x:0,y:0,scale:1},250),"aria-label":"Reset view",children:[Math.round(o.scale*100),"%"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),r(_e,{label:"Zoom in",shortcut:Bt("+"),children:r("button",{type:"button",class:"top-bar-btn",onClick:()=>ei(1.25),"aria-label":"Zoom in",children:r(cS,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),r(_e,{label:"Fit all",shortcut:"F",align:"end",children:r("button",{type:"button",class:"top-bar-btn",onClick:h,"aria-label":"Fit canvas",children:r(Iu,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r(QL,{boardOpen:!!ae.value,onFit:h},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 QL({boardOpen:e,onFit:t}){let[n,o]=E(!1),i=D(null),s=D(null);Me(()=>{if(!n)return;let l=()=>[...i.current?.querySelectorAll('[role="menuitem"]')??[]];l()[0]?.focus();let c=(d)=>{if(d.key==="Escape")o(!1),s.current?.focus();else if(d.key==="ArrowDown"||d.key==="ArrowUp"){d.preventDefault();let p=l(),f=p.indexOf(document.activeElement),m=d.key==="ArrowDown"?f+1:f-1;p[(m+p.length)%p.length]?.focus()}},u=(d)=>{if(i.current&&!i.current.contains(d.target))o(!1)};return window.addEventListener("keydown",c),window.addEventListener("pointerdown",u),()=>{window.removeEventListener("keydown",c),window.removeEventListener("pointerdown",u)}},[n]);let a=(l)=>()=>{o(!1),l()};return r("div",{class:"top-bar-more",ref:i,children:[r("button",{ref:s,type:"button",class:"top-bar-btn","aria-label":"More: export, present, zoom, fit","aria-haspopup":"menu","aria-expanded":n,onClick:()=>o(!n),children:"⋯"},void 0,!1,void 0,this),n&&r("div",{class:"toolbar-menu top-bar-more-menu",role:"menu",children:[e&&r("button",{type:"button",role:"menuitem",class:"toolbar-menu-item",onClick:a(()=>{ls.value=!0}),children:"Export board"},void 0,!1,void 0,this),e&&r("button",{type:"button",role:"menuitem",class:"toolbar-menu-item",onClick:a(()=>void dl()),children:"Present board"},void 0,!1,void 0,this),r("button",{type:"button",role:"menuitem",class:"toolbar-menu-item",onClick:a(()=>ei(1.25)),children:"Zoom in"},void 0,!1,void 0,this),r("button",{type:"button",role:"menuitem",class:"toolbar-menu-item",onClick:a(()=>ei(0.8)),children:"Zoom out"},void 0,!1,void 0,this),r("button",{type:"button",role:"menuitem",class:"toolbar-menu-item",onClick:a(()=>_r({x:0,y:0,scale:1},250)),children:"Reset zoom"},void 0,!1,void 0,this),r("button",{type:"button",role:"menuitem",class:"toolbar-menu-item",onClick:a(t),children:"Fit all"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var vi={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},board:{x:380,y:80,w:360,h:160},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},diff:{x:380,y:80,w:640,h:420},mermaid:{x:380,y:80,w:640,h:460},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 nc(e,t,n,o={}){let i=vi[t];return{id:e,type:t,position:o.position??{x:i.x,y:i.y},size:o.size??{width:i.w,height:i.h},zIndex:t==="status"?0:1,collapsed:!1,pinned:!1,data:n}}var bi=null,rc=null,cp=0,xi=null,eO=3000,tO=2000,nO=1000,oO=80,TI=5000,rO=1e4,oc=!1,$r=null,xa=null,ba=null,cs=0,wi=null;function iO(){if(tt())return"poll";if(typeof location>"u"||typeof window>"u")return null;let e=new URLSearchParams(location.search).get("transport");if(e==="poll"||e==="sse")return e;if(window.__PMX_AMP_ORB===!0)return"poll";return null}var wa=new Map;function ic(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)|0;return Math.abs(t).toString(36)}function fp(e){if(!rc)return e;let t=rc.get(e.id);if(!t)return e;return{...e,position:t.position??e.position,size:t.size??e.size,collapsed:t.collapsed??e.collapsed,pinned:t.pinned??e.pinned}}function sc(e,t,n){return fp(nc(e,t,n))}function sO(){return td([...H.value.values()],vi.markdown.w,vi.markdown.h)}function Sa(){if(!H.value.has("status-main"))kr(sc("status-main","status",{phase:"idle",message:"",elapsed:0}))}function aO(e,t){let n=`md-${ic(e)}`;if(H.value.get(n))Xe(n,{path:e,title:t}),gt.value=n;else{let i=sO(),s=sc(n,"markdown",{path:e,title:t,content:"",rendered:""});s.position=i,kr(s),$t(n)}}function lO(e){if(H.value.get("context-main"))Xe("context-main",{cards:e});else if(e.length>0){let o=sc("context-main","context",{cards:e});kr(o)}}function cO(e){let t=e.url,n=`mcp-${ic(t)}`;if(H.value.get(n))Xe(n,e);else kr(sc(n,"mcp-app",e)),$t(n)}function uO(e){let t=e.toolCallId,o=(typeof e.nodeId==="string"&&e.nodeId.length>0?e.nodeId:null)??(t.startsWith("ext-app-")?t:`ext-app-${t}`);if(H.value.get(o)){Xe(o,e);return}let{serverName:s,toolName:a}=e;if(s&&a){for(let[y,b]of H.value.entries())if(b.type==="mcp-app"&&b.data.mode==="ext-app"&&b.data.serverName===s&&b.data.toolName===a&&!b.data.toolResult){Xe(y,{...e});return}}let{_x:l,_y:c,_width:u,_height:d}=e,p=vi["mcp-app"],f=u??p.w,m=d??p.h,h=l===void 0||c===void 0?td([...H.value.values()],f,m):null,g=fp(nc(o,"mcp-app",{mode:"ext-app",...e},{position:{x:l??h?.x??p.x,y:c??h?.y??p.y},size:{width:f,height:m}}));kr(g),$t(o,{recordHistory:!1})}function dO(e){let t=e.startsWith("ext-app-")?e:`ext-app-${e}`;if(H.value.has(t))return t;let n=`ext-app-${e}`;if(n!==t&&H.value.has(n))return n;for(let[o,i]of H.value.entries())if(i.type==="mcp-app"&&i.data.mode==="ext-app"&&i.data.toolCallId===e)return o;return null}function PI(e){let t=typeof e.nodeId==="string"&&e.nodeId.length>0?e.nodeId:null;if(t&&H.value.has(t))return t;if(typeof e.toolCallId!=="string"||!e.toolCallId)return null;return dO(e.toolCallId)}function NI(e,t){if(typeof e!=="string"||!e)return null;if(typeof t!=="string"||!t)return null;let n=null;for(let[o,i]of H.value.entries())if(i.type==="mcp-app"&&i.data.mode==="ext-app"&&i.data.serverName===e&&i.data.toolName===t&&!i.data.toolResult){if(n)return null;n=o}return n}function MI(e){if(H.value.get("ledger-main"))Xe("ledger-main",e);else{let o=sc("ledger-main","ledger",e);o.collapsed=!0,kr(o)}}function Ag(e){if(!Tl(e))return;if(document.documentElement.setAttribute("data-theme",e),sa(),Qt.value!==e)Qt.value=e}function pO(e){return e==="markdown"||e==="mcp-app"||e==="webpage"||e==="json-render"||e==="graph"||e==="board"||e==="prompt"||e==="response"||e==="status"||e==="context"||e==="ledger"||e==="trace"||e==="file"||e==="diff"||e==="mermaid"||e==="image"||e==="html"||e==="group"}function fO(e){return e==="relation"||e==="depends-on"||e==="flow"||e==="references"}function Rg(e){if(!e||typeof e!=="object")return null;let t=e;if(typeof t.x!=="number"||typeof t.y!=="number")return null;return{x:t.x,y:t.y}}function zI(e){if(!e||typeof e!=="object")return null;let t=e;if(typeof t.width!=="number"||typeof t.height!=="number")return null;return{width:t.width,height:t.height}}function mO(e){let t=Rg(e),n=zI(e);return t&&n?{...t,...n}:null}function hO(e){if(typeof e.id!=="string"||!e.id)return null;if(!pO(e.type))return null;let t=Rg(e.position),n=zI(e.size);if(!t||!n)return null;let o=e.data&&typeof e.data==="object"?Object.fromEntries(Object.entries(e.data)):{};return{id:e.id,type:e.type,position:t,size:n,zIndex:typeof e.zIndex==="number"?e.zIndex:1,collapsed:e.collapsed===!0,pinned:e.pinned===!0,contentRevision:typeof e.contentRevision==="number"?e.contentRevision:0,linksRevision:typeof e.linksRevision==="number"?e.linksRevision:0,...pp(e.createdBy)?{createdBy:e.createdBy}:{},...pp(e.lastEditedBy)?{lastEditedBy:e.lastEditedBy}:{},data:o}}function pp(e){if(!e||typeof e!=="object")return!1;let t=e;return typeof t.actor==="string"&&typeof t.source==="string"}function gO(e){if(typeof e.id!=="string"||!e.id)return null;if(typeof e.from!=="string"||!e.from)return null;if(typeof e.to!=="string"||!e.to)return null;if(!fO(e.type))return null;return{id:e.id,from:e.from,to:e.to,...typeof e.toBoardId==="string"?{toBoardId:e.toBoardId}:{},type:e.type,...typeof e.kind==="string"?{kind:e.kind}:{},...typeof e.reason==="string"?{reason:e.reason}:{},...typeof e.label==="string"?{label:e.label}:{},...e.style==="solid"||e.style==="dashed"||e.style==="dotted"?{style:e.style}:{},...e.animated===!0?{animated:!0}:{},...typeof e.revision==="number"?{revision:e.revision}:{},...pp(e.changedBy)?{changedBy:e.changedBy}:{},...typeof e.changedAt==="string"?{changedAt:e.changedAt}:{},...pp(e.createdBy)?{createdBy:e.createdBy}:{},...typeof e.createdAt==="string"?{createdAt:e.createdAt}:{}}}function yO(e){if(typeof e.id!=="string"||!e.id)return null;if(e.type!=="freehand"&&e.type!=="text")return null;if(!Array.isArray(e.points))return null;let t=e.points.map((o)=>Rg(o)).filter((o)=>o!==null),n=mO(e.bounds);if(t.length<(e.type==="text"?1:2)||!n)return null;return{id:e.id,type:e.type,points:t,bounds:n,color:typeof e.color==="string"?e.color:"#f97316",width:typeof e.width==="number"?e.width:4,...typeof e.text==="string"?{text:e.text}:{},...typeof e.label==="string"?{label:e.label}:{},createdAt:typeof e.createdAt==="string"?e.createdAt:""}}var II="pmx-canvas-version-reload";function vO(e,t){if(typeof window>"u")return;let n=window,o=(s,a)=>typeof s==="string"&&s!==""&&s!=="unknown"&&typeof a==="string"&&a!==""&&a!=="unknown"&&s!==a;if(!o(e,n.__PMX_BOOT_SERVER_VERSION)&&!o(t,n.__PMX_BOOT_BUNDLE_STAMP))return;let i=`${String(e)}::${String(t)}`;try{if(window.sessionStorage.getItem(II)===i)return;window.sessionStorage.setItem(II,i)}catch{return}window.location.reload()}function bO(e){let t=pi.value[0]?.id;if(Wh(e),_o.value&&pi.value[0]?.id!==t)gi()}function xO(e){IC(e)}var EI=null,us=0,Ig=0,ka=null;function wO(e){Of(e)}function kO(e){let t=ka;if(ka=null,e){if(t?.boardId===ae.value)dp(t);return}let n=ae.value,o=++us;if(rc=null,hn.value=!1,nu(),Ok(),lu(),cm({nodes:[],edges:[]}),t?.boardId===ae.value)dp(t);if(ae.value===null)Od();if(Hn.value?.kind==="receipt")Hn.value=null;Gh({}),Lo.value=null,Pg();let i=Ig,s=$o;lk(n).then((a)=>{if(o===us&&i===Ig)dp({layout:a,boardId:n})}),de("fetchPinnedContext","/api/canvas/pinned-context",{}).then((a)=>{if(o===us&&s===$o)$I({nodeIds:a.nodeIds})})}kk(kO);function SO(e){if(bo.value++,us++,ka=null,hn.value=!1,typeof e.catalogEpoch==="string")wk(e.catalogEpoch);if(!tt()&&typeof e.workbenchToken==="string")window.__PMX_WORKBENCH_TOKEN=e.workbenchToken;if(xr.value=e.sessionId||"",Tf(e.workspaceSettings),ao.value="connected",ol().then(Xr),ji.value+=1,vO(e.version,e.bundleStamp),pk().then(Wh),Hl(),zr(),EI?.(),!cu&&!tt())EI=Gw();if(de("fetchHumanPresence","/api/canvas/human-presence",null).then(Of),Pg().then(()=>{if(_o.value)gi()}),typeof e.theme==="string"&&!yg())Ag(e.theme);if(e.ledgerSummary)MI(e.ledgerSummary)}function _O(e){if(typeof e.path!=="string"||!e.path)return;let t=e.path,n=(typeof e.title==="string"?e.title:"")||t.split("/").pop()||"Untitled";if(aO(t,n),e.ledgerSummary)MI(e.ledgerSummary)}function CO(e){Sa(),Xe("status-main",{message:typeof e.message==="string"?e.message:String(e.message??""),level:e.level??"ok",source:e.source})}function TO(e){Sa(),Xe("status-main",{phase:e.phase,detail:e.detail})}function IO(e){let t=e.cards??[];lO(t)}function EO(e){if(typeof e.url==="string"&&e.url)cO({url:e.url,sourceServer:e.sourceServer,sourceTool:e.sourceTool,inferredType:e.inferredType,trustedDomain:e.trustedDomain,hostMode:e.hostMode??"hosted"})}function AO(e){let t=e.sessions??[];for(let n of t){let o=n.url;if(!o)continue;let i=`mcp-${ic(o)}`;if(H.value.has(i))Xe(i,{sessionState:n.state,lastSeenAt:n.lastSeenAt})}}function RO(e){if(typeof e.url==="string"&&e.url){let t=`mcp-${ic(e.url)}`;if(H.value.has(t))Xe(t,{hostMode:"fallback",fallbackReason:e.reasonCode})}}function PO(e){let n=H.value.get("context-main");if(!n)return;let o=(n.data.auxTabs??[]).concat(e);Xe("context-main",{auxTabs:o})}function NO(e){if(H.value.has("context-main"))if(e.mode==="all")Xe("context-main",{auxTabs:[]});else{let o=H.value.get("context-main");if(!o)return;let i=(o.data.auxTabs??[]).filter((s)=>s.id!==e.id);Xe("context-main",{auxTabs:i})}}function MO(e){Sa(),Xe("status-main",{phase:"idle",lastCompletion:{tokenCount:e.tokenCount,artifactCount:e.artifactCount}})}function zO(e){Sa(),Xe("status-main",{phase:"tooling",detail:`${e.name}`,activeTool:e.name})}function $O(e){Sa(),Xe("status-main",{activeTool:null})}function LO(e){if(e.state==="active"&&e.path){let n=`md-${ic(e.path)}`;if(H.value.has(n))Xe(n,{reviewActive:!0})}}function OO(e){if(typeof e.toolCallId!=="string"||!e.toolCallId)return;uO({toolCallId:e.toolCallId,...typeof e.nodeId==="string"&&e.nodeId.length>0?{nodeId:e.nodeId}:{},title:e.title,html:e.html,toolInput:e.toolInput,serverName:e.serverName,toolName:e.toolName,appSessionId:e.appSessionId,resourceUri:e.resourceUri,toolDefinition:e.toolDefinition,resourceMeta:e.resourceMeta,hostMode:"hosted",trustedDomain:!0,...e.chartConfig?{chartConfig:e.chartConfig}:{},...typeof e.x==="number"&&{_x:e.x},...typeof e.y==="number"&&{_y:e.y},...typeof e.width==="number"&&{_width:e.width},...typeof e.height==="number"&&{_height:e.height}})}function DO(e){if(typeof e.toolCallId!=="string"||!e.toolCallId)return;let t=PI(e)??NI(e.serverName,e.toolName);if(!t)return;if(H.value.has(t))Xe(t,{html:e.html})}function BO(e){if(typeof e.toolCallId!=="string"||!e.toolCallId)return;let t=PI(e)??NI(e.serverName,e.toolName);if(!t)return;if(H.value.has(t)){if(e.success===!1){Qr(t);return}Xe(t,{toolResult:Lh({result:e.result,success:typeof e.success==="boolean"?e.success:void 0,error:typeof e.error==="string"?e.error:void 0,content:typeof e.content==="string"?e.content:void 0,detailedContent:typeof e.detailedContent==="string"?e.detailedContent:void 0})})}}function FO(e){Sa(),Xe("status-main",{subagent:{state:e.state,name:e.agentDisplayName??e.agentName}})}function HO(e){let t=e.nodeId;if(!t)return;let n=e.text||"",{position:o,parentNodeId:i,contextNodeIds:s}=e;if(e.threadNodeId&&H.value.has(e.threadNodeId)){let a=e.threadNodeId,l=H.value.get(a);if(!l)return;let c=Array.isArray(l.data.turns)?[...l.data.turns]:[],u=c[c.length-1];if(!u||u.role!=="user"||u.text!==n)c.push({role:"user",text:n,status:"pending"});Xe(a,{turns:c,threadStatus:"pending"});return}if(!H.value.has(t)){let a=o??vi.prompt;kr(fp(nc(t,"prompt",{text:n,turns:n?[{role:"user",text:n,status:"pending"}]:[],threadStatus:n?"pending":"draft",status:n?"pending":"draft",parentNodeId:i,contextNodeIds:s},{position:{x:a.x,y:a.y}}))),$t(t)}if(i&&H.value.has(i))Ms({id:`edge-${i}-${t}`,from:i,to:t,type:"flow",style:"dashed"})}function UO(e){let{nodeId:t,status:n}=e;if(t&&H.value.has(t))Xe(t,{status:n})}function jO(e){let{responseNodeId:t,promptNodeId:n}=e;if(!t)return;let o=n?H.value.get(n):void 0;if(o&&Array.isArray(o.data.turns)){wa.set(t,n);let s=[...o.data.turns];s.push({role:"assistant",text:"",status:"streaming"}),Xe(n,{turns:s,threadStatus:"streaming",_activeResponseId:t}),$t(n);return}let i=o?{x:o.position.x,y:o.position.y+o.size.height+24}:{x:vi.response.x,y:vi.response.y};if(!H.value.has(t))kr(fp(nc(t,"response",{content:"",status:"streaming",promptNodeId:n},{position:i})));if(n)Ms({id:`edge-${n}-${t}`,from:n,to:t,type:"flow",animated:!0});$t(t)}function ZO(e){let t=e.responseNodeId;if(!t)return;let n=wa.get(t);if(n){let o=H.value.get(n);if(o&&Array.isArray(o.data.turns)){let i=[...o.data.turns],s=i[i.length-1];if(s&&s.role==="assistant")s.text=e.content,s.status="streaming";Xe(n,{turns:i,threadStatus:"streaming"})}return}if(!H.value.has(t))return;Xe(t,{content:e.content,status:"streaming"})}function WO(e){let t=e.responseNodeId;if(!t)return;let n=wa.get(t);if(n){let s=H.value.get(n);if(s&&Array.isArray(s.data.turns)){let a=[...s.data.turns],l=a[a.length-1];if(l&&l.role==="assistant")l.text=e.content,l.status="complete";Xe(n,{turns:a,threadStatus:"answered",_activeResponseId:void 0})}wa.delete(t);return}if(!H.value.has(t))return;Xe(t,{content:e.content,status:"complete"});let i=H.value.get(t)?.data.promptNodeId;if(i){let s=`edge-${i}-${t}`,a=et.value.get(s);if(a)Wk(s),Ms({...a,animated:!1})}}function dp(e){bo.value++;let t=e.layout;if(!t?.nodes)return;if(typeof e.boardGeneration==="number"){if(e.catalogEpoch!==Mn||Vo!==null&&e.boardGeneration<Vo)return;if(Vo===null||e.boardGeneration>Vo){ka=e;return}}if(e.boardId!==void 0&&e.boardId!==ae.value){ka=e;return}Ig+=1;let n=!hn.value;hn.value=!0;let o=t.nodes.map(hO).filter((l)=>l!==null),i=Array.isArray(t.edges)?t.edges.map(gO).filter((l)=>l!==null):Array.from(et.value.values()),s=Array.isArray(t.annotations)?t.annotations.map(yO).filter((l)=>l!==null):void 0,a=t.viewport?{x:typeof t.viewport.x==="number"?t.viewport.x:0,y:typeof t.viewport.y==="number"?t.viewport.y:0,scale:typeof t.viewport.scale==="number"?t.viewport.scale:1}:void 0;if(n)co();cm({...a?{viewport:a}:{},nodes:o,edges:i,...s?{annotations:s}:{}},{applyViewport:n}),Qa({event:"canvas-layout-update",data:e}),zr(1000)}function qO(e){if(e<=1)return 500;if(e===2)return 1000;return Math.min(2500,1500+(e-3)*500)}function GO(e){if(dm())return;let t=e.nodeId;if(t&&H.value.has(t)){if(e.noPan===!0){Sr(t);return}$t(t)}}function KO(e){if(dm()||e.clientId===Gr)return;let t=e.viewport;if(!t)return;let n=typeof t.x==="number"?t.x:0,o=typeof t.y==="number"?t.y:0,i=typeof t.scale==="number"?t.scale:1;co(),lm({x:n,y:o,scale:i})}function VO(e){if(Oo.value)return;if(!On.value&&e.present!==!0)return;let t=qc.safeParse(e.stop);if(t.success)Qk(t.data)}function XO(){if(Oo.value)return;On.value=!1,Jo.value=""}function JO(e){if(Oo.value)return;let t=qc.safeParse(e.stop);if(!t.success)return;try{pm(t.data,On.value?void 0:(n)=>ul(n,{recordHistory:!1}))}catch{let n=ja.safeParse(e.viewport);if(!n.success)return;co(),lm(n.data)}}function YO(e){if(H.value.get("context-main"))Xe("context-main",{currentTokens:e.currentTokens,tokenLimit:e.tokenLimit,messagesLength:e.messagesLength,utilization:e.utilization,nearLimit:e.nearLimit})}function QO(e){Ls.value=e.enabled===!0}function eD(e){if(typeof e.theme==="string"&&!yg())Ag(e.theme)}function $I(e){bo.value++;let t=Array.isArray(e.nodeIds)?e.nodeIds.filter((n)=>typeof n==="string"):[];if(Ui===0)im(t);Qa({event:"context-pins-changed",data:e}),Hl(),zr()}function tD(){Hl(),zr()}var up=null,Eg=0;async function Pg(){let e=++Eg,t=us,n=await dk();if(e===Eg&&t===us)Lo.value=n}function AI(){if(up)clearTimeout(up);Eg+=1,up=setTimeout(()=>{if(up=null,Pg(),_o.value)gi()},150)}function nD(e){let t=e.intent;if(!t||typeof t.id!=="string"||typeof t.kind!=="string"||typeof t.expiresAt!=="number")return;Ow(t)}function oD(e){let t=typeof e.id==="string"?e.id:"";if(!t)return;if(e.settled===!0)Bw(t,typeof e.nodeId==="string"?e.nodeId:void 0);else $f(t)}var LI={connected:SO,"workbench-open":_O,"canvas-status":CO,"execution-phase":TO,"context-cards":IO,"mcp-app-candidate":EO,"mcp-app-host-snapshot":AO,"mcp-app-host-fallback":RO,"aux-open":PO,"aux-close":NO,"assistant-complete":MO,"tool-start":zO,"tool-complete":$O,"review-state":LO,"subagent-status":FO,"ext-app-open":OO,"ext-app-update":DO,"ext-app-result":BO,"context-pins-changed":$I,"context-status-changed":tD,"knowledge-changed":()=>void Kt(),"lifecycle-changed":()=>void Kt(),"boards-changed":(e)=>{Yr(e),zr()},"canvas-layout-update":dp,"canvas-focus-node":GO,"canvas-viewport-update":KO,"canvas-tour-step":VO,"canvas-tour-exit":XO,"canvas-camera-move":JO,"context-usage":YO,"trace-state":QO,"theme-changed":eD,"settings-changed":(e)=>Tf(e.workspaceSettings),"canvas-prompt-created":HO,"canvas-prompt-status":UO,"canvas-response-start":jO,"canvas-response-delta":ZO,"canvas-response-complete":WO,"ax-state-changed":AI,"ax-event-created":AI,"ax-intent":nD,"ax-intent-clear":oD,"agent-presence":bO,"human-presence":wO,"agent-session-ended":xO};function OI(e,t){let n=LI[e];if(!n)return;let o=n;try{o(t)}catch(i){console.warn(`[sse-bridge] Handler for "${e}" failed:`,i)}}function RI(){oc=!0,cs+=1;let e=cs;xa?.abort();let t=new AbortController;xa=t;let n=!tt();ao.value="connecting";let o=null,i=!1,s=async()=>{if(e!==cs)return;let a=new AbortController,l;try{let c=new URLSearchParams;if(ba!==null){if(c.set("since",String(ba)),n)c.set("waitMs",String(nO))}let u=xr.value;if(u)c.set("session",u);let d=c.toString(),p=$o,f=await Promise.race([(async()=>{let y=await qt(`/api/workbench/poll${d?`?${d}`:""}`,{signal:AbortSignal.any([t.signal,a.signal])});if(!y.ok)throw Error(`poll failed with HTTP ${y.status}`);return await y.json()})(),new Promise((y,b)=>{l=setTimeout(()=>{a.abort(),b(Error("poll request timed out"))},rO)})]);if(e!==cs)return;if(!f.ok)throw Error("poll returned ok: false");let m=o;if(o=f.sessionId??null,m!==null&&f.sessionId&&m!==f.sessionId&&!f.snapshot){ba=null,$r=setTimeout(()=>void s(),0);return}if(f.snapshot&&i)rc=um(),hn.value=!1,lu(),nu(),wa.clear();let h=p===$o&&Ui===0,g=!1;for(let y of f.events){if(y.event==="context-pins-changed"&&!h){g=!0;continue}OI(y.event,y.payload)}if(g)sm(),Hl(),zr();i=!0,ba=f.seq,Zi.value=0,Wi.value=0,ao.value="connected",$r=setTimeout(()=>void s(),n?oO:tO)}catch(c){if(e!==cs)return;console.warn("[sse-bridge] poll transport error:",c),ao.value="disconnected",Zi.value+=1,Wi.value=TI,$r=setTimeout(()=>void s(),TI)}finally{clearTimeout(l)}};return s(),()=>{if(cs+=1,oc=!1,ba=null,t.abort(),xa===t)xa=null;if($r)clearTimeout($r),$r=null}}function Ng(){if(us++,ka=null,dT(Ag),rc=um(),hn.value=!1,lu(),nu(),wa.clear(),xi)clearTimeout(xi),xi=null;let e=iO();if(e==="poll"||oc)return RI();let t=xr.value,n=t?`/api/workbench/events?session=${t}`:"/api/workbench/events";ao.value="connecting";let o=new EventSource(n);bi=o;let i=!1;if(wi)clearTimeout(wi);if(wi=null,e!=="sse")wi=setTimeout(()=>{if(wi=null,i||bi!==o)return;console.warn("[sse-bridge] No SSE event within watchdog window — switching to polling transport."),window.dispatchEvent(new Event("pmx-canvas-boot-extend")),o.close(),bi=null,RI()},eO);for(let[s]of Object.entries(LI))o.addEventListener(s,(a)=>{if(bi!==o)return;i=!0;try{OI(s,JSON.parse(a.data))}catch(l){console.warn(`[sse-bridge] Failed to parse "${s}" event:`,l)}});return o.onopen=()=>{if(bi!==o)return;cp=0,Zi.value=0,Wi.value=0,ao.value="connected"},o.onerror=()=>{if(bi!==o)return;ao.value="disconnected",o.close(),bi=null,cp+=1;let s=qO(cp);Zi.value=cp,Wi.value=s,xi=setTimeout(()=>{xi=null,Ng()},s)},()=>{if(xi)clearTimeout(xi),xi=null;if(wi)clearTimeout(wi),wi=null;if(oc){if(cs+=1,oc=!1,ba=null,xa?.abort(),xa=null,$r)clearTimeout($r),$r=null}o.close(),bi=null}}function ds(e,t){console.error(`[app] ${e} failed`,t)}var rD=Ve(()=>H.value.size===0),DI=Ve(()=>{let e=Ct.value;return!!e&&!ut.value&&ae.value===e.boardId&&wt===e.incarnation&&H.value.has(e.nodeId)}),Mg=Ve(()=>Oe.value&&DI.value);function BI(){let[e,t]=E(()=>window.innerWidth>=700),[n,o]=E(!1),[i,s]=E(!1),[a,l]=E(!1),[c,u]=E({}),[d,p]=E(!1),[f,m]=E(null),h=D(null),g=D(null),[y,b]=E(Jt),{menu:x,openNodeMenu:C,openCanvasMenu:v,openEdgeMenu:k,closeMenu:_}=hT(),I=hn.value,w=io.value&&(ae.value===null||ut.value),P=tr.value,L=xt.value,N=_o.value||Co.value.length>0||ns.value.length>0||!!To.value,Y=Mg.value;Me(()=>{if(!L){if(Hn.value=null,eo.value=!1,document.activeElement?.closest(".command-bar, .session-panel, .agent-popover"))h.current?.focus({preventScroll:!0})}},[L]);let B=oe(()=>t((A)=>!A),[]),J=oe(()=>o((A)=>!A),[]),X=oe(()=>o(!1),[]),V=oe((A)=>m(A),[]),ee=oe((A)=>{_w(A),g.current=A},[]),he=oe((A,te)=>{_r({x:A,y:te,scale:Te.value.scale},200)},[]);return q(()=>Ng(),[]),q(()=>{let A=(te)=>{let M=te.detail;u(M??{}),l(!0)};return window.addEventListener("pmx-open-board-link",A),()=>window.removeEventListener("pmx-open-board-link",A)},[]),q(()=>{let A=null,te=()=>{if(A!==null)window.clearTimeout(A);A=window.setTimeout(()=>{A=null,Xr()},400)};return window.addEventListener("resize",te),()=>{if(A!==null)window.clearTimeout(A);window.removeEventListener("resize",te)}},[]),Me(()=>{let A=(O)=>{let Pe=(O.metaKey||O.ctrlKey)&&!O.altKey;if(d&&(O.key==="Escape"||O.key==="?"||O.key==="/"&&O.shiftKey)){O.preventDefault(),p(!1);return}if(ut.value||ae.value===null)return;if(O.defaultPrevented)return;if(Pe&&O.key==="k"){O.preventDefault(),s((ve)=>!ve);return}if(O.key==="Escape"&&f){O.preventDefault(),m(null);return}if(O.key==="Escape"&&Mg.value){if(O.target?.closest('[role="menu"], [role="alertdialog"]'))return;O.preventDefault(),Ct.value=null;return}if(O.key==="Escape"&&Dt.value&&!zo.value){O.preventDefault(),Cr();return}if(O.key==="Escape"&&i){O.preventDefault(),s(!1);return}let Fe=O.target,De=Fe?.tagName;if(De==="INPUT"||De==="TEXTAREA"||Fe?.isContentEditable)return;if(Fe?.closest('[role="menu"]'))return;let Ae=Fe?.closest('[role="dialog"]');if((O.key==="Tab"||O.key.startsWith("Arrow"))&&Fe?.closest(".tool-rail, .top-bar"))return;if(O.key===" "&&!O.repeat&&!Pe&&!Ae){O.preventDefault(),ll.value=!0;return}if(O.key==="?"||O.key==="/"&&O.shiftKey){O.preventDefault(),p((ve)=>!ve);return}if(Pe&&(O.key==="z"||O.key==="Z"))O.preventDefault(),tg(O.shiftKey);else if(Pe&&(O.key==="y"||O.key==="Y"))O.preventDefault(),tg(!0);else if(Pe&&O.key==="0")O.preventDefault(),_r({x:0,y:0,scale:1},250);else if(Pe&&(O.key==="="||O.key==="+"))O.preventDefault(),ei(1.25);else if(Pe&&O.key==="-")O.preventDefault(),ei(0.8);else if(Ae)return;else if(O.key==="Escape"){if(!ir(O))return;if(O.preventDefault(),Io.value?.boardId===ae.value)Io.value=null;Ro.value="All",Ln(),gt.value=null,_()}else if(O.key==="Tab")O.preventDefault(),Xk(O.shiftKey?-1:1);else if(O.key==="Delete"||O.key==="Backspace"){if(br.value!==null){let z=br.value;O.preventDefault(),br.value=null,gu(z).catch((re)=>ds("delete-edge",re));return}let ve=st.value.size>0?[...st.value]:gt.value?[gt.value]:[];if(ve.length===0)return;O.preventDefault();for(let z of ve)Vr(z).catch((re)=>ds("delete",re));Ln(),gt.value=null}else if(gt.value&&["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(O.key)){O.preventDefault();let ve=O.key.replace("Arrow","").toLowerCase();Jk(ve)}else if(!Pe&&!O.altKey){let ve=O.key.toLowerCase();if(ve==="v"&&!O.shiftKey)Wn.value="select";else if(ve==="c"&&!O.shiftKey&&!Pe)O.preventDefault(),Wn.value=Wn.value==="connect"?"select":"connect";else if(ve==="m"&&!O.shiftKey)O.preventDefault(),Eo({type:"markdown",title:"New note",width:520,height:360}).catch((z)=>ds("create markdown",z));else if(ve==="a"&&!O.shiftKey)O.preventDefault(),m((z)=>z==="pen"?null:"pen");else if(ve==="g"&&!O.shiftKey){O.preventDefault();let z=Array.from(st.value);if(z.length>=2)Ps({title:"Group",childIds:z}).catch((re)=>ds("group selection",re)),Ln();else Eo({type:"group",title:"Group"}).catch((re)=>ds("create group",re))}else if(ve==="g"&&O.shiftKey){O.preventDefault();for(let z of Hk())Qr(z),Ns(z).catch((re)=>ds("ungroup",re));Ln()}else if(ve==="i"&&!O.shiftKey)O.preventDefault(),ss("image");else if(ve==="w"&&!O.shiftKey)O.preventDefault(),ss("webpage");else if(ve==="h"&&!O.shiftKey)O.preventDefault(),Eo({type:"html",title:"HTML surface"}).catch((z)=>ds("create html",z));else if(ve==="f"&&O.shiftKey)O.preventDefault(),ss("file");else if(ve==="f"&&!O.shiftKey){O.preventDefault();let z=Jt();Bs(z.width,z.height)}}},te=(O)=>{if(O.key===" ")ll.value=!1},M=()=>{ll.value=!1};return document.addEventListener("keydown",A),document.addEventListener("keyup",te),window.addEventListener("blur",M),()=>{document.removeEventListener("keydown",A),document.removeEventListener("keyup",te),window.removeEventListener("blur",M)}},[f,_,i,d]),q(()=>{let A=window.setTimeout(()=>void Xr(),250);return()=>window.clearTimeout(A)},[P]),Me(()=>{let A=g.current;if(!A)return;let te=new ResizeObserver(()=>{b(Jt()),Xr();let M=Ct.value;if(M&&Mg.value)$t(M.nodeId,{recordHistory:!1})});return te.observe(A),()=>te.disconnect()},[]),q(()=>{if(!I)return;let A=window.__pmxCanvasBootstrapReady;if(typeof A==="function")A()},[I]),r("div",{class:`app-shell${On.value?" is-presenting":""}`,"data-session-active":P?"true":"false",children:[r(nS,{},void 0,!1,void 0,this),r(JC,{},void 0,!1,void 0,this),r(bT,{minimapVisible:e,onToggleMinimap:B,snapshotOpen:n,onToggleSnapshot:J,snapshotBtnRef:h,onOpenPalette:()=>s(!0),onOpenShortcuts:()=>p((A)=>!A),annotationTool:f,onSetAnnotationTool:V},void 0,!1,void 0,this),r("div",{class:"app-main",children:[r(CI,{},void 0,!1,void 0,this),r(lT,{},void 0,!1,void 0,this),r("div",{class:`workspace${Y?" is-reviewing":""}`,children:[r("div",{class:"canvas-region",ref:ee,children:[!ut.value&&r(nT,{onNodeContextMenu:C,onCanvasContextMenu:v,onEdgeContextMenu:k,annotationMode:f!==null,annotationTool:f},void 0,!1,void 0,this),r(bS,{},void 0,!1,void 0,this),r(PC,{},void 0,!1,void 0,this),!w&&r(NC,{},void 0,!1,void 0,this),!w&&r(VC,{},void 0,!1,void 0,this),r(vS,{},void 0,!1,void 0,this),r(VT,{},void 0,!1,void 0,this),r(XT,{},void 0,!1,void 0,this),w?r(qT,{},void 0,!1,void 0,this):I&&rD.value&&Wt.value.size===0&&r(xT,{onOpenPalette:()=>s(!0)},void 0,!1,void 0,this),!w&&st.value.size>0&&r(sI,{},void 0,!1,void 0,this),!w&&!L&&r(sT,{},void 0,!1,void 0,this),!w&&_o.value&&!tt()&&r(oT,{},void 0,!1,void 0,this),!w&&r(gI,{onOpenSnapshots:()=>o(!0)},void 0,!1,void 0,this),r(wS,{},void 0,!1,void 0,this),!ut.value&&r(GT,{},void 0,!1,void 0,this),!w&&Dt.value&&r(tI,{},void 0,!1,void 0,this),r(xI,{open:n&&!ut.value,onClose:X,anchorRef:h},void 0,!1,void 0,this),e&&!w&&r(iI,{viewport:Te,nodes:H,edges:et,onNavigate:he,containerWidth:y.width,containerHeight:y.height},void 0,!1,void 0,this)]},void 0,!0,void 0,this),DI.value&&r(mT,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),P&&r(fI,{},void 0,!1,void 0,this),!P&&N&&r(pI,{},void 0,!1,void 0,this),!ut.value&&x&&r(gT,{menu:x,onClose:_},void 0,!1,void 0,this),!ut.value&&i&&r(pT,{onClose:()=>s(!1),onToggleMinimap:B},void 0,!1,void 0,this),!ut.value&&a&&r(fT,{...c,onClose:()=>l(!1)},void 0,!1,void 0,this),d&&r(yI,{onClose:()=>p(!1)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}ES();var FI=document.getElementById("app");if(FI)Ea(r(BI,{},void 0,!1,void 0,this),FI);
|