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
|
@@ -22,7 +22,8 @@
|
|
|
22
22
|
"data": {
|
|
23
23
|
"title": "① Start here",
|
|
24
24
|
"content": "What the agent is doing, what context it holds, what it decided, and the tool calls behind it.",
|
|
25
|
-
"strictSize": true
|
|
25
|
+
"strictSize": true,
|
|
26
|
+
"wikiLinks": []
|
|
26
27
|
},
|
|
27
28
|
"createdBy": {
|
|
28
29
|
"actor": "agent",
|
|
@@ -33,6 +34,9 @@
|
|
|
33
34
|
"source": "api"
|
|
34
35
|
},
|
|
35
36
|
"contentRevision": 1,
|
|
37
|
+
"linksRevision": 0,
|
|
38
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
39
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
36
40
|
"kind": "markdown",
|
|
37
41
|
"title": "① Start here",
|
|
38
42
|
"content": "What the agent is doing, what context it holds, what it decided, and the tool calls behind it.",
|
|
@@ -58,7 +62,8 @@
|
|
|
58
62
|
"data": {
|
|
59
63
|
"title": "PMX Canvas — guided tour",
|
|
60
64
|
"content": "# PMX Canvas\n\nAn infinite spatial canvas that agents drive over **MCP**, **HTTP** or the **Bun SDK** — and that humans steer by pinning nodes.\n\nThis board is a live catalogue. Bands ① to ④ and ⑧ run down the left, ⑤ to ⑦ down the right.\n\n| Band | Shows |\n| --- | --- |\n| ① Start here | status · context · ledger · trace |\n| ② Files & review | file · CSV table · diff · image · webpage |\n| ③ Diagrams & surfaces | mermaid · raw HTML · MCP app |\n| ④ Charts | all 12 graph types |\n| ⑤ Structured UI | json-render specs |\n| ⑥ Grouping | one group frame |\n| ⑦ HTML primitives | all 21 generated surfaces |\n| ⑧ Agent at work | a live AX flow, mid-task |\n\n> Pin a node in the browser and the agent reads it back from `canvas://pinned-context`. That is the whole collaboration loop.",
|
|
61
|
-
"strictSize": true
|
|
65
|
+
"strictSize": true,
|
|
66
|
+
"wikiLinks": []
|
|
62
67
|
},
|
|
63
68
|
"createdBy": {
|
|
64
69
|
"actor": "agent",
|
|
@@ -69,6 +74,9 @@
|
|
|
69
74
|
"source": "api"
|
|
70
75
|
},
|
|
71
76
|
"contentRevision": 2,
|
|
77
|
+
"linksRevision": 0,
|
|
78
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
79
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
72
80
|
"kind": "markdown",
|
|
73
81
|
"title": "PMX Canvas — guided tour",
|
|
74
82
|
"content": "# PMX Canvas\n\nAn infinite spatial canvas that agents drive over **MCP**, **HTTP** or the **Bun SDK** — and that humans steer by pinning nodes.\n\nThis board is a live catalogue. Bands ① to ④ and ⑧ run down the left, ⑤ to ⑦ down the right.\n\n| Band | Shows |\n| --- | --- |\n| ① Start here | status · context · ledger · trace |\n| ② Files & review | file · CSV table · diff · image · webpage |\n| ③ Diagrams & surfaces | mermaid · raw HTML · MCP app |\n| ④ Charts | all 12 graph types |\n| ⑤ Structured UI | json-render specs |\n| ⑥ Grouping | one group frame |\n| ⑦ HTML primitives | all 21 generated surfaces |\n| ⑧ Agent at work | a live AX flow, mid-task |\n\n> Pin a node in the browser and the agent reads it back from `canvas://pinned-context`. That is the whole collaboration loop.",
|
|
@@ -105,6 +113,9 @@
|
|
|
105
113
|
"source": "api"
|
|
106
114
|
},
|
|
107
115
|
"contentRevision": 3,
|
|
116
|
+
"linksRevision": 0,
|
|
117
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
118
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
108
119
|
"kind": "board",
|
|
109
120
|
"title": "Related research",
|
|
110
121
|
"content": null,
|
|
@@ -149,6 +160,9 @@
|
|
|
149
160
|
"source": "api"
|
|
150
161
|
},
|
|
151
162
|
"contentRevision": 4,
|
|
163
|
+
"linksRevision": 92,
|
|
164
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
165
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
152
166
|
"kind": "status",
|
|
153
167
|
"title": "Agent",
|
|
154
168
|
"content": null,
|
|
@@ -189,6 +203,9 @@
|
|
|
189
203
|
"source": "api"
|
|
190
204
|
},
|
|
191
205
|
"contentRevision": 5,
|
|
206
|
+
"linksRevision": 93,
|
|
207
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
208
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
192
209
|
"kind": "trace",
|
|
193
210
|
"title": "canvas_query",
|
|
194
211
|
"content": null,
|
|
@@ -229,6 +246,9 @@
|
|
|
229
246
|
"source": "api"
|
|
230
247
|
},
|
|
231
248
|
"contentRevision": 6,
|
|
249
|
+
"linksRevision": 93,
|
|
250
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
251
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
232
252
|
"kind": "trace",
|
|
233
253
|
"title": "edit_file",
|
|
234
254
|
"content": null,
|
|
@@ -298,6 +318,9 @@
|
|
|
298
318
|
"source": "api"
|
|
299
319
|
},
|
|
300
320
|
"contentRevision": 7,
|
|
321
|
+
"linksRevision": 94,
|
|
322
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
323
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
301
324
|
"kind": "context",
|
|
302
325
|
"title": "Working context",
|
|
303
326
|
"content": null,
|
|
@@ -338,6 +361,9 @@
|
|
|
338
361
|
"source": "api"
|
|
339
362
|
},
|
|
340
363
|
"contentRevision": 8,
|
|
364
|
+
"linksRevision": 94,
|
|
365
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
366
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
341
367
|
"kind": "ledger",
|
|
342
368
|
"title": "Decision ledger",
|
|
343
369
|
"content": "09:12 Ship 0.4.7 behind the existing smoke gate\n09:26 Keep demo board offline-only — no live sessions\n10:03 strictSize on every demo node so layout is stable\n10:41 Drop the OKR board; catalogue every node type instead\n11:15 Charts band shows all 12 graph types, Tufte row last\n11:48 Pin the intro, the context card and the diff under review\n13:20 Bands get section labels; only one group frame survives",
|
|
@@ -363,7 +389,8 @@
|
|
|
363
389
|
"data": {
|
|
364
390
|
"title": "② Files & review",
|
|
365
391
|
"content": "Inline file text, delimited data as a table, unified diffs, images, and cached webpage snapshots.",
|
|
366
|
-
"strictSize": true
|
|
392
|
+
"strictSize": true,
|
|
393
|
+
"wikiLinks": []
|
|
367
394
|
},
|
|
368
395
|
"createdBy": {
|
|
369
396
|
"actor": "agent",
|
|
@@ -374,6 +401,9 @@
|
|
|
374
401
|
"source": "api"
|
|
375
402
|
},
|
|
376
403
|
"contentRevision": 9,
|
|
404
|
+
"linksRevision": 0,
|
|
405
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
406
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
377
407
|
"kind": "markdown",
|
|
378
408
|
"title": "② Files & review",
|
|
379
409
|
"content": "Inline file text, delimited data as a table, unified diffs, images, and cached webpage snapshots.",
|
|
@@ -412,6 +442,9 @@
|
|
|
412
442
|
"source": "api"
|
|
413
443
|
},
|
|
414
444
|
"contentRevision": 10,
|
|
445
|
+
"linksRevision": 95,
|
|
446
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
447
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
415
448
|
"kind": "file",
|
|
416
449
|
"title": "node-sizes.ts",
|
|
417
450
|
"content": "import { canvasState } from './canvas-state.js';\nimport { nodeMinSize } from '../shared/node-sizes.js';\n\n/** Clamp an agent-supplied frame up to the per-type readability floor. */\nexport function clampNodeFrame(type: string, width: number, height: number) {\n const min = nodeMinSize(type);\n if (!min) return { width, height };\n return {\n width: Math.max(width, min.width),\n height: Math.max(height, min.height),\n };\n}\n\nexport function nodeCountByType(): Record<string, number> {\n const counts: Record<string, number> = {};\n for (const node of canvasState.getLayout().nodes) {\n counts[node.type] = (counts[node.type] ?? 0) + 1;\n }\n return counts;\n}",
|
|
@@ -448,6 +481,9 @@
|
|
|
448
481
|
"source": "api"
|
|
449
482
|
},
|
|
450
483
|
"contentRevision": 11,
|
|
484
|
+
"linksRevision": 95,
|
|
485
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
486
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
451
487
|
"kind": "diff",
|
|
452
488
|
"title": "Readability floor — 2 files",
|
|
453
489
|
"content": "diff --git a/src/shared/node-sizes.ts b/src/shared/node-sizes.ts\n--- a/src/shared/node-sizes.ts\n+++ b/src/shared/node-sizes.ts\n@@ -20,6 +20,8 @@ export const NODE_MIN_SIZES: Record<string, { width: number; height: number }> =\n markdown: { width: 360, height: 180 },\n context: { width: 360, height: 180 },\n file: { width: 360, height: 200 },\n+ diff: { width: 420, height: 240 },\n+ mermaid: { width: 360, height: 240 },\n status: { width: 280, height: 120 },\n\ndiff --git a/src/client/canvas/auto-fit.ts b/src/client/canvas/auto-fit.ts\n--- a/src/client/canvas/auto-fit.ts\n+++ b/src/client/canvas/auto-fit.ts\n@@ -63,7 +63,8 @@ export function computeAutoFitHeight(node: CanvasNodeState, contentHeight: numbe\n const fitted = Math.min(contentHeight + AUTO_FIT_TITLEBAR_HEIGHT, AUTO_FIT_MAX_HEIGHT);\n- return fitted;\n+ const min = nodeMinSize(node.type);\n+ return min ? Math.max(fitted, min.height) : fitted;\n }",
|
|
@@ -499,6 +535,8 @@
|
|
|
499
535
|
"source": "api"
|
|
500
536
|
},
|
|
501
537
|
"contentRevision": 12,
|
|
538
|
+
"linksRevision": 0,
|
|
539
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
502
540
|
"kind": "file",
|
|
503
541
|
"title": "weekly-throughput.csv",
|
|
504
542
|
"content": "week,merged_prs,review_hours,p95_ci_minutes,flaky_reruns\n2026-W23,41,18.5,11.2,6\n2026-W24,38,21.0,12.8,9\n2026-W25,52,16.4,10.1,4\n2026-W26,47,15.2,9.6,3\n2026-W27,55,14.8,9.1,2\n2026-W28,61,13.9,8.4,2",
|
|
@@ -546,6 +584,9 @@
|
|
|
546
584
|
"source": "api"
|
|
547
585
|
},
|
|
548
586
|
"contentRevision": 13,
|
|
587
|
+
"linksRevision": 0,
|
|
588
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
589
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
549
590
|
"kind": "image",
|
|
550
591
|
"title": "Canvas data flow",
|
|
551
592
|
"content": "data:image/svg+xml;utf8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%20480%20300'%20width%3D'480'%20height%3D'300'%3E%3Crect%20width%3D'480'%20height%3D'300'%20rx%3D'16'%20fill%3D'%230f1420'%2F%3E%3Ctext%20x%3D'24'%20y%3D'40'%20fill%3D'%23e6ecff'%20font-family%3D'ui-sans-serif%2Csystem-ui'%20font-size%3D'17'%20font-weight%3D'600'%3ECanvas%20data%20flow%3C%2Ftext%3E%3Crect%20x%3D'24'%20y%3D'70'%20width%3D'128'%20height%3D'62'%20rx%3D'10'%20fill%3D'%2316203a'%20stroke%3D'%234a9eff'%2F%3E%3Ctext%20x%3D'88'%20y%3D'106'%20fill%3D'%239ec5ff'%20font-family%3D'ui-sans-serif%2Csystem-ui'%20font-size%3D'13'%20text-anchor%3D'middle'%3EAgent%20(MCP)%3C%2Ftext%3E%3Crect%20x%3D'176'%20y%3D'70'%20width%3D'128'%20height%3D'62'%20rx%3D'10'%20fill%3D'%2316203a'%20stroke%3D'%237c5cff'%2F%3E%3Ctext%20x%3D'240'%20y%3D'100'%20fill%3D'%23c3b4ff'%20font-family%3D'ui-sans-serif%2Csystem-ui'%20font-size%3D'13'%20text-anchor%3D'middle'%3ECanvas%20state%3C%2Ftext%3E%3Ctext%20x%3D'240'%20y%3D'118'%20fill%3D'%237b86a8'%20font-family%3D'ui-sans-serif%2Csystem-ui'%20font-size%3D'11'%20text-anchor%3D'middle'%3Esingle%20source%20of%20truth%3C%2Ftext%3E%3Crect%20x%3D'328'%20y%3D'70'%20width%3D'128'%20height%3D'62'%20rx%3D'10'%20fill%3D'%2316203a'%20stroke%3D'%2322c55e'%2F%3E%3Ctext%20x%3D'392'%20y%3D'106'%20fill%3D'%238ee5ad'%20font-family%3D'ui-sans-serif%2Csystem-ui'%20font-size%3D'13'%20text-anchor%3D'middle'%3EBrowser%3C%2Ftext%3E%3Cpath%20d%3D'M152%20101%20L172%20101'%20stroke%3D'%234a9eff'%20stroke-width%3D'2'%2F%3E%3Cpath%20d%3D'M304%20101%20L324%20101'%20stroke%3D'%2322c55e'%20stroke-width%3D'2'%2F%3E%3Cpath%20d%3D'M392%20140%20L392%20196%20L88%20196%20L88%20140'%20fill%3D'none'%20stroke%3D'%23eab308'%20stroke-width%3D'2'%20stroke-dasharray%3D'5%205'%2F%3E%3Ctext%20x%3D'240'%20y%3D'188'%20fill%3D'%23eab308'%20font-family%3D'ui-sans-serif%2Csystem-ui'%20font-size%3D'12'%20text-anchor%3D'middle'%3Ehuman%20pins%20nodes%20-%26gt%3B%20canvas%3A%2F%2Fpinned-context%3C%2Ftext%3E%3Crect%20x%3D'24'%20y%3D'222'%20width%3D'432'%20height%3D'52'%20rx%3D'10'%20fill%3D'%23111827'%20stroke%3D'%23243049'%2F%3E%3Ctext%20x%3D'240'%20y%3D'253'%20fill%3D'%237b86a8'%20font-family%3D'ui-monospace%2Cmonospace'%20font-size%3D'12'%20text-anchor%3D'middle'%3Estate%20survives%20refresh%20%C2%B7%20SQLite%20at%20.pmx-canvas%2Fcanvas.db%3C%2Ftext%3E%3C%2Fsvg%3E",
|
|
@@ -606,6 +647,8 @@
|
|
|
606
647
|
"source": "api"
|
|
607
648
|
},
|
|
608
649
|
"contentRevision": 16,
|
|
650
|
+
"linksRevision": 0,
|
|
651
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
609
652
|
"kind": "webpage",
|
|
610
653
|
"title": "Model Context Protocol — Resources",
|
|
611
654
|
"content": "https://modelcontextprotocol.io/docs/concepts/resources",
|
|
@@ -642,7 +685,8 @@
|
|
|
642
685
|
"data": {
|
|
643
686
|
"title": "③ Diagrams & surfaces",
|
|
644
687
|
"content": "Mermaid renders from plain text; HTML and MCP App nodes are sandboxed iframes the agent authors.",
|
|
645
|
-
"strictSize": true
|
|
688
|
+
"strictSize": true,
|
|
689
|
+
"wikiLinks": []
|
|
646
690
|
},
|
|
647
691
|
"createdBy": {
|
|
648
692
|
"actor": "agent",
|
|
@@ -653,6 +697,9 @@
|
|
|
653
697
|
"source": "api"
|
|
654
698
|
},
|
|
655
699
|
"contentRevision": 17,
|
|
700
|
+
"linksRevision": 0,
|
|
701
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
702
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
656
703
|
"kind": "markdown",
|
|
657
704
|
"title": "③ Diagrams & surfaces",
|
|
658
705
|
"content": "Mermaid renders from plain text; HTML and MCP App nodes are sandboxed iframes the agent authors.",
|
|
@@ -689,6 +736,9 @@
|
|
|
689
736
|
"source": "api"
|
|
690
737
|
},
|
|
691
738
|
"contentRevision": 18,
|
|
739
|
+
"linksRevision": 0,
|
|
740
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
741
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
692
742
|
"kind": "mermaid",
|
|
693
743
|
"title": "Flowchart — request path",
|
|
694
744
|
"content": "flowchart LR\n A[Agent] -->|MCP tool call| B(Canvas server)\n B --> C{{SSE stream}}\n C --> D[Browser canvas]\n D -->|human pins a node| B\n B --> E[(canvas.db)]",
|
|
@@ -725,6 +775,9 @@
|
|
|
725
775
|
"source": "api"
|
|
726
776
|
},
|
|
727
777
|
"contentRevision": 19,
|
|
778
|
+
"linksRevision": 96,
|
|
779
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
780
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
728
781
|
"kind": "mermaid",
|
|
729
782
|
"title": "Sequence — the pin loop",
|
|
730
783
|
"content": "sequenceDiagram\n participant H as Human\n participant C as Canvas\n participant A as Agent\n H->>C: pin 3 nodes\n C-->>A: resources/updated\n A->>C: read canvas://pinned-context\n A->>C: canvas_node add (summary)\n C-->>H: SSE layout update",
|
|
@@ -761,6 +814,9 @@
|
|
|
761
814
|
"source": "api"
|
|
762
815
|
},
|
|
763
816
|
"contentRevision": 20,
|
|
817
|
+
"linksRevision": 96,
|
|
818
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
819
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
764
820
|
"kind": "mermaid",
|
|
765
821
|
"title": "State — approval gate",
|
|
766
822
|
"content": "stateDiagram-v2\n [*] --> pending\n pending --> approved: human approves\n pending --> rejected: human rejects\n pending --> expired: timeout\n approved --> [*]\n rejected --> [*]\n expired --> [*]",
|
|
@@ -800,6 +856,9 @@
|
|
|
800
856
|
"source": "api"
|
|
801
857
|
},
|
|
802
858
|
"contentRevision": 21,
|
|
859
|
+
"linksRevision": 0,
|
|
860
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
861
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
803
862
|
"kind": "html",
|
|
804
863
|
"title": "Release gates",
|
|
805
864
|
"content": "Five release gates with pass/running/warning status for 0.4.7.\nRelease gates — 0.4.7 Raw HTML in a sandboxed iframe. No scripts, no network, no build step. typecheck passing unit tests 612 passed web-canvas e2e running bundle size +4.1% vs 0.4.6 pack dry-run clean",
|
|
@@ -850,6 +909,8 @@
|
|
|
850
909
|
"source": "api"
|
|
851
910
|
},
|
|
852
911
|
"contentRevision": 22,
|
|
912
|
+
"linksRevision": 0,
|
|
913
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
853
914
|
"kind": "external-app",
|
|
854
915
|
"title": "Board inspector",
|
|
855
916
|
"content": null,
|
|
@@ -885,7 +946,8 @@
|
|
|
885
946
|
"data": {
|
|
886
947
|
"title": "④ Charts",
|
|
887
948
|
"content": "Every canonical graph type, then the Tufte primitives in the compact bottom row.",
|
|
888
|
-
"strictSize": true
|
|
949
|
+
"strictSize": true,
|
|
950
|
+
"wikiLinks": []
|
|
889
951
|
},
|
|
890
952
|
"createdBy": {
|
|
891
953
|
"actor": "agent",
|
|
@@ -896,6 +958,9 @@
|
|
|
896
958
|
"source": "api"
|
|
897
959
|
},
|
|
898
960
|
"contentRevision": 23,
|
|
961
|
+
"linksRevision": 0,
|
|
962
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
963
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
899
964
|
"kind": "markdown",
|
|
900
965
|
"title": "④ Charts",
|
|
901
966
|
"content": "Every canonical graph type, then the Tufte primitives in the compact bottom row.",
|
|
@@ -1024,6 +1089,9 @@
|
|
|
1024
1089
|
"source": "api"
|
|
1025
1090
|
},
|
|
1026
1091
|
"contentRevision": 24,
|
|
1092
|
+
"linksRevision": 0,
|
|
1093
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
1094
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
1027
1095
|
"kind": "graph",
|
|
1028
1096
|
"title": "line — p95 latency",
|
|
1029
1097
|
"content": null,
|
|
@@ -1156,6 +1224,9 @@
|
|
|
1156
1224
|
"source": "api"
|
|
1157
1225
|
},
|
|
1158
1226
|
"contentRevision": 25,
|
|
1227
|
+
"linksRevision": 0,
|
|
1228
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
1229
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
1159
1230
|
"kind": "graph",
|
|
1160
1231
|
"title": "bar — merged PRs per week",
|
|
1161
1232
|
"content": null,
|
|
@@ -1276,6 +1347,9 @@
|
|
|
1276
1347
|
"source": "api"
|
|
1277
1348
|
},
|
|
1278
1349
|
"contentRevision": 26,
|
|
1350
|
+
"linksRevision": 0,
|
|
1351
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
1352
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
1279
1353
|
"kind": "graph",
|
|
1280
1354
|
"title": "area — canvas nodes created",
|
|
1281
1355
|
"content": null,
|
|
@@ -1390,6 +1464,9 @@
|
|
|
1390
1464
|
"source": "api"
|
|
1391
1465
|
},
|
|
1392
1466
|
"contentRevision": 27,
|
|
1467
|
+
"linksRevision": 0,
|
|
1468
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
1469
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
1393
1470
|
"kind": "graph",
|
|
1394
1471
|
"title": "pie — node types on real boards",
|
|
1395
1472
|
"content": null,
|
|
@@ -1527,6 +1604,9 @@
|
|
|
1527
1604
|
"source": "api"
|
|
1528
1605
|
},
|
|
1529
1606
|
"contentRevision": 28,
|
|
1607
|
+
"linksRevision": 0,
|
|
1608
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
1609
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
1530
1610
|
"kind": "graph",
|
|
1531
1611
|
"title": "stacked-bar — CI minutes by stage",
|
|
1532
1612
|
"content": null,
|
|
@@ -1650,6 +1730,9 @@
|
|
|
1650
1730
|
"source": "api"
|
|
1651
1731
|
},
|
|
1652
1732
|
"contentRevision": 29,
|
|
1733
|
+
"linksRevision": 0,
|
|
1734
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
1735
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
1653
1736
|
"kind": "graph",
|
|
1654
1737
|
"title": "composed — throughput vs review load",
|
|
1655
1738
|
"content": null,
|
|
@@ -1792,6 +1875,9 @@
|
|
|
1792
1875
|
"source": "api"
|
|
1793
1876
|
},
|
|
1794
1877
|
"contentRevision": 30,
|
|
1878
|
+
"linksRevision": 0,
|
|
1879
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
1880
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
1795
1881
|
"kind": "graph",
|
|
1796
1882
|
"title": "scatter — PR size vs review time",
|
|
1797
1883
|
"content": null,
|
|
@@ -1929,6 +2015,9 @@
|
|
|
1929
2015
|
"source": "api"
|
|
1930
2016
|
},
|
|
1931
2017
|
"contentRevision": 31,
|
|
2018
|
+
"linksRevision": 0,
|
|
2019
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
2020
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
1932
2021
|
"kind": "graph",
|
|
1933
2022
|
"title": "radar — surface coverage",
|
|
1934
2023
|
"content": null,
|
|
@@ -2079,6 +2168,9 @@
|
|
|
2079
2168
|
"source": "api"
|
|
2080
2169
|
},
|
|
2081
2170
|
"contentRevision": 32,
|
|
2171
|
+
"linksRevision": 0,
|
|
2172
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
2173
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
2082
2174
|
"kind": "graph",
|
|
2083
2175
|
"title": "sparkline — build time",
|
|
2084
2176
|
"content": null,
|
|
@@ -2193,6 +2285,9 @@
|
|
|
2193
2285
|
"source": "api"
|
|
2194
2286
|
},
|
|
2195
2287
|
"contentRevision": 33,
|
|
2288
|
+
"linksRevision": 0,
|
|
2289
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
2290
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
2196
2291
|
"kind": "graph",
|
|
2197
2292
|
"title": "dot-plot — test time by suite",
|
|
2198
2293
|
"content": null,
|
|
@@ -2337,6 +2432,9 @@
|
|
|
2337
2432
|
"source": "api"
|
|
2338
2433
|
},
|
|
2339
2434
|
"contentRevision": 34,
|
|
2435
|
+
"linksRevision": 0,
|
|
2436
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
2437
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
2340
2438
|
"kind": "graph",
|
|
2341
2439
|
"title": "bullet — release KPIs vs target",
|
|
2342
2440
|
"content": null,
|
|
@@ -2465,6 +2563,9 @@
|
|
|
2465
2563
|
"source": "api"
|
|
2466
2564
|
},
|
|
2467
2565
|
"contentRevision": 35,
|
|
2566
|
+
"linksRevision": 0,
|
|
2567
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
2568
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
2468
2569
|
"kind": "graph",
|
|
2469
2570
|
"title": "slopegraph — coverage 0.4.6 → 0.4.7",
|
|
2470
2571
|
"content": null,
|
|
@@ -2490,7 +2591,8 @@
|
|
|
2490
2591
|
"data": {
|
|
2491
2592
|
"title": "⑤ Structured UI",
|
|
2492
2593
|
"content": "json-render nodes: an agent posts a validated component spec and the canvas renders real UI.",
|
|
2493
|
-
"strictSize": true
|
|
2594
|
+
"strictSize": true,
|
|
2595
|
+
"wikiLinks": []
|
|
2494
2596
|
},
|
|
2495
2597
|
"createdBy": {
|
|
2496
2598
|
"actor": "agent",
|
|
@@ -2501,6 +2603,9 @@
|
|
|
2501
2603
|
"source": "api"
|
|
2502
2604
|
},
|
|
2503
2605
|
"contentRevision": 36,
|
|
2606
|
+
"linksRevision": 0,
|
|
2607
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
2608
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
2504
2609
|
"kind": "markdown",
|
|
2505
2610
|
"title": "⑤ Structured UI",
|
|
2506
2611
|
"content": "json-render nodes: an agent posts a validated component spec and the canvas renders real UI.",
|
|
@@ -2709,6 +2814,9 @@
|
|
|
2709
2814
|
"source": "api"
|
|
2710
2815
|
},
|
|
2711
2816
|
"contentRevision": 37,
|
|
2817
|
+
"linksRevision": 0,
|
|
2818
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
2819
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
2712
2820
|
"kind": "json-render",
|
|
2713
2821
|
"title": "Release dashboard",
|
|
2714
2822
|
"content": null,
|
|
@@ -2735,6 +2843,11 @@
|
|
|
2735
2843
|
"title": "Blocker intake form",
|
|
2736
2844
|
"spec": {
|
|
2737
2845
|
"root": "form",
|
|
2846
|
+
"state": {
|
|
2847
|
+
"form": {
|
|
2848
|
+
"severity": "major"
|
|
2849
|
+
}
|
|
2850
|
+
},
|
|
2738
2851
|
"elements": {
|
|
2739
2852
|
"form": {
|
|
2740
2853
|
"type": "Card",
|
|
@@ -2805,7 +2918,9 @@
|
|
|
2805
2918
|
"major",
|
|
2806
2919
|
"minor"
|
|
2807
2920
|
],
|
|
2808
|
-
"value":
|
|
2921
|
+
"value": {
|
|
2922
|
+
"$bindState": "/form/severity"
|
|
2923
|
+
}
|
|
2809
2924
|
},
|
|
2810
2925
|
"children": [],
|
|
2811
2926
|
"visible": true,
|
|
@@ -2894,6 +3009,9 @@
|
|
|
2894
3009
|
"source": "api"
|
|
2895
3010
|
},
|
|
2896
3011
|
"contentRevision": 38,
|
|
3012
|
+
"linksRevision": 0,
|
|
3013
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
3014
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
2897
3015
|
"kind": "json-render",
|
|
2898
3016
|
"title": "Blocker intake form",
|
|
2899
3017
|
"content": null,
|
|
@@ -3062,6 +3180,9 @@
|
|
|
3062
3180
|
"source": "api"
|
|
3063
3181
|
},
|
|
3064
3182
|
"contentRevision": 39,
|
|
3183
|
+
"linksRevision": 0,
|
|
3184
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
3185
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
3065
3186
|
"kind": "json-render",
|
|
3066
3187
|
"title": "Usage panel",
|
|
3067
3188
|
"content": null,
|
|
@@ -3087,7 +3208,8 @@
|
|
|
3087
3208
|
"data": {
|
|
3088
3209
|
"title": "⑥ Grouping",
|
|
3089
3210
|
"content": "A group says \"these belong together\". One frame is enough — bands carry a board’s structure.",
|
|
3090
|
-
"strictSize": true
|
|
3211
|
+
"strictSize": true,
|
|
3212
|
+
"wikiLinks": []
|
|
3091
3213
|
},
|
|
3092
3214
|
"createdBy": {
|
|
3093
3215
|
"actor": "agent",
|
|
@@ -3098,6 +3220,9 @@
|
|
|
3098
3220
|
"source": "api"
|
|
3099
3221
|
},
|
|
3100
3222
|
"contentRevision": 40,
|
|
3223
|
+
"linksRevision": 0,
|
|
3224
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
3225
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
3101
3226
|
"kind": "markdown",
|
|
3102
3227
|
"title": "⑥ Grouping",
|
|
3103
3228
|
"content": "A group says \"these belong together\". One frame is enough — bands carry a board’s structure.",
|
|
@@ -3124,6 +3249,7 @@
|
|
|
3124
3249
|
"title": "Sprint 41 — canvas polish",
|
|
3125
3250
|
"content": "Three nodes, one frame. Moving the frame moves the children; ungrouping leaves them exactly where they are.\n\n- Group children keep their own positions by default\n- `childLayout` opts into auto-packing\n- The frame is stored as `data.children` on the group",
|
|
3126
3251
|
"strictSize": true,
|
|
3252
|
+
"wikiLinks": [],
|
|
3127
3253
|
"parentGroup": "group"
|
|
3128
3254
|
},
|
|
3129
3255
|
"createdBy": {
|
|
@@ -3135,6 +3261,9 @@
|
|
|
3135
3261
|
"source": "api"
|
|
3136
3262
|
},
|
|
3137
3263
|
"contentRevision": 46,
|
|
3264
|
+
"linksRevision": 97,
|
|
3265
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
3266
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
3138
3267
|
"kind": "markdown",
|
|
3139
3268
|
"title": "Sprint 41 — canvas polish",
|
|
3140
3269
|
"content": "Three nodes, one frame. Moving the frame moves the children; ungrouping leaves them exactly where they are.\n\n- Group children keep their own positions by default\n- `childLayout` opts into auto-packing\n- The frame is stored as `data.children` on the group",
|
|
@@ -3175,6 +3304,9 @@
|
|
|
3175
3304
|
"source": "api"
|
|
3176
3305
|
},
|
|
3177
3306
|
"contentRevision": 47,
|
|
3307
|
+
"linksRevision": 97,
|
|
3308
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
3309
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
3178
3310
|
"kind": "status",
|
|
3179
3311
|
"title": "Sprint state",
|
|
3180
3312
|
"content": null,
|
|
@@ -3216,6 +3348,9 @@
|
|
|
3216
3348
|
"source": "api"
|
|
3217
3349
|
},
|
|
3218
3350
|
"contentRevision": 48,
|
|
3351
|
+
"linksRevision": 0,
|
|
3352
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
3353
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
3219
3354
|
"kind": "trace",
|
|
3220
3355
|
"title": "canvas_group",
|
|
3221
3356
|
"content": null,
|
|
@@ -3257,6 +3392,9 @@
|
|
|
3257
3392
|
"source": "api"
|
|
3258
3393
|
},
|
|
3259
3394
|
"contentRevision": 45,
|
|
3395
|
+
"linksRevision": 0,
|
|
3396
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
3397
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
3260
3398
|
"kind": "group",
|
|
3261
3399
|
"title": "Sprint 41",
|
|
3262
3400
|
"content": null,
|
|
@@ -3282,7 +3420,8 @@
|
|
|
3282
3420
|
"data": {
|
|
3283
3421
|
"title": "⑦ HTML primitives",
|
|
3284
3422
|
"content": "All 21 generated communication surfaces — self-contained sandboxed documents, no build step.",
|
|
3285
|
-
"strictSize": true
|
|
3423
|
+
"strictSize": true,
|
|
3424
|
+
"wikiLinks": []
|
|
3286
3425
|
},
|
|
3287
3426
|
"createdBy": {
|
|
3288
3427
|
"actor": "agent",
|
|
@@ -3293,6 +3432,9 @@
|
|
|
3293
3432
|
"source": "api"
|
|
3294
3433
|
},
|
|
3295
3434
|
"contentRevision": 49,
|
|
3435
|
+
"linksRevision": 0,
|
|
3436
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
3437
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
3296
3438
|
"kind": "markdown",
|
|
3297
3439
|
"title": "⑦ HTML primitives",
|
|
3298
3440
|
"content": "All 21 generated communication surfaces — self-contained sandboxed documents, no build step.",
|
|
@@ -3378,6 +3520,9 @@
|
|
|
3378
3520
|
"source": "api"
|
|
3379
3521
|
},
|
|
3380
3522
|
"contentRevision": 50,
|
|
3523
|
+
"linksRevision": 0,
|
|
3524
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
3525
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
3381
3526
|
"kind": "html",
|
|
3382
3527
|
"title": "How should the demo board be generated?",
|
|
3383
3528
|
"content": "Side-by-side options with tradeoffs, pros, cons, and code or evidence snippets.",
|
|
@@ -3488,6 +3633,9 @@
|
|
|
3488
3633
|
"source": "api"
|
|
3489
3634
|
},
|
|
3490
3635
|
"contentRevision": 51,
|
|
3636
|
+
"linksRevision": 0,
|
|
3637
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
3638
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
3491
3639
|
"kind": "html",
|
|
3492
3640
|
"title": "Demo board rebuild",
|
|
3493
3641
|
"content": "Implementation plan with milestones, data flow, code checkpoints, and risks.",
|
|
@@ -3567,6 +3715,9 @@
|
|
|
3567
3715
|
"source": "api"
|
|
3568
3716
|
},
|
|
3569
3717
|
"contentRevision": 52,
|
|
3718
|
+
"linksRevision": 0,
|
|
3719
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
3720
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
3570
3721
|
"kind": "html",
|
|
3571
3722
|
"title": "Review — auto-fit floor",
|
|
3572
3723
|
"content": "Annotated PR/code review sheet with severity-colored findings and diff excerpts.",
|
|
@@ -3655,6 +3806,9 @@
|
|
|
3655
3806
|
"source": "api"
|
|
3656
3807
|
},
|
|
3657
3808
|
"contentRevision": 53,
|
|
3809
|
+
"linksRevision": 0,
|
|
3810
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
3811
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
3658
3812
|
"kind": "html",
|
|
3659
3813
|
"title": "PR — replace the demo board",
|
|
3660
3814
|
"content": "Reviewer-ready PR narrative with motivation, before/after, file tour, test plan, and rollout notes.",
|
|
@@ -3767,6 +3921,9 @@
|
|
|
3767
3921
|
"source": "api"
|
|
3768
3922
|
},
|
|
3769
3923
|
"contentRevision": 54,
|
|
3924
|
+
"linksRevision": 0,
|
|
3925
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
3926
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
3770
3927
|
"kind": "html",
|
|
3771
3928
|
"title": "Canvas server map",
|
|
3772
3929
|
"content": "Module or architecture map with boxes, relationships, entry points, and hot paths.",
|
|
@@ -3896,6 +4053,9 @@
|
|
|
3896
4053
|
"source": "api"
|
|
3897
4054
|
},
|
|
3898
4055
|
"contentRevision": 55,
|
|
4056
|
+
"linksRevision": 0,
|
|
4057
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
4058
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
3899
4059
|
"kind": "html",
|
|
3900
4060
|
"title": "Walkthrough — creating a node",
|
|
3901
4061
|
"content": "Guided code-path map with modules, ordered file steps, snippets, key files, and gotchas.",
|
|
@@ -3999,6 +4159,9 @@
|
|
|
3999
4159
|
"source": "api"
|
|
4000
4160
|
},
|
|
4001
4161
|
"contentRevision": 56,
|
|
4162
|
+
"linksRevision": 0,
|
|
4163
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
4164
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
4002
4165
|
"kind": "html",
|
|
4003
4166
|
"title": "Board typography directions",
|
|
4004
4167
|
"content": "Visual design directions, tokens, swatches, type samples, and rationale.",
|
|
@@ -4082,6 +4245,9 @@
|
|
|
4082
4245
|
"source": "api"
|
|
4083
4246
|
},
|
|
4084
4247
|
"contentRevision": 57,
|
|
4248
|
+
"linksRevision": 0,
|
|
4249
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
4250
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
4085
4251
|
"kind": "html",
|
|
4086
4252
|
"title": "Node titlebar states",
|
|
4087
4253
|
"content": "Contact sheet for component variants, states, sizes, and accessibility notes.",
|
|
@@ -4180,6 +4346,9 @@
|
|
|
4180
4346
|
"source": "api"
|
|
4181
4347
|
},
|
|
4182
4348
|
"contentRevision": 58,
|
|
4349
|
+
"linksRevision": 0,
|
|
4350
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
4351
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
4183
4352
|
"kind": "html",
|
|
4184
4353
|
"title": "Node expand transition",
|
|
4185
4354
|
"content": "Throwaway interaction or motion sandbox with a live stage, controls, annotations, and copyable config.",
|
|
@@ -4266,6 +4435,9 @@
|
|
|
4266
4435
|
"source": "api"
|
|
4267
4436
|
},
|
|
4268
4437
|
"contentRevision": 59,
|
|
4438
|
+
"linksRevision": 0,
|
|
4439
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
4440
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
4269
4441
|
"kind": "html",
|
|
4270
4442
|
"title": "Release pipeline",
|
|
4271
4443
|
"content": "Clickable flowchart for pipelines, user journeys, process diagrams, and failure paths.",
|
|
@@ -4361,6 +4533,9 @@
|
|
|
4361
4533
|
"source": "api"
|
|
4362
4534
|
},
|
|
4363
4535
|
"contentRevision": 60,
|
|
4536
|
+
"linksRevision": 0,
|
|
4537
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
4538
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
4364
4539
|
"kind": "html",
|
|
4365
4540
|
"title": "Why a spatial canvas",
|
|
4366
4541
|
"content": "Arrow-key HTML deck with sections, speaker notes, and copyable JSON payload. Slides: Chat is a queue, work is a graph, The canvas is the agent’s working memory, Pinning is the steering wheel.",
|
|
@@ -4479,6 +4654,9 @@
|
|
|
4479
4654
|
"source": "api"
|
|
4480
4655
|
},
|
|
4481
4656
|
"contentRevision": 61,
|
|
4657
|
+
"linksRevision": 0,
|
|
4658
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
4659
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
4482
4660
|
"kind": "html",
|
|
4483
4661
|
"title": "PMX Canvas 0.4.7 briefing",
|
|
4484
4662
|
"content": "PowerPoint-style fullscreen-ready HTML presentation with slide navigation, progress, speaker notes, and presentation metadata. Slides: Where we are, What changed in 0.4.7, Next.",
|
|
@@ -4644,6 +4822,9 @@
|
|
|
4644
4822
|
"source": "api"
|
|
4645
4823
|
},
|
|
4646
4824
|
"contentRevision": 62,
|
|
4825
|
+
"linksRevision": 0,
|
|
4826
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
4827
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
4647
4828
|
"kind": "html",
|
|
4648
4829
|
"title": "Figures — the collaboration loop",
|
|
4649
4830
|
"content": "Inline SVG figure sheet with captions and per-figure SVG copy/export controls.",
|
|
@@ -4750,6 +4931,9 @@
|
|
|
4750
4931
|
"source": "api"
|
|
4751
4932
|
},
|
|
4752
4933
|
"contentRevision": 63,
|
|
4934
|
+
"linksRevision": 0,
|
|
4935
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
4936
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
4753
4937
|
"kind": "html",
|
|
4754
4938
|
"title": "How context pins work",
|
|
4755
4939
|
"content": "Readable explainer with TLDR, collapsible steps, annotated snippets, FAQ, and glossary.",
|
|
@@ -4871,6 +5055,9 @@
|
|
|
4871
5055
|
"source": "api"
|
|
4872
5056
|
},
|
|
4873
5057
|
"contentRevision": 64,
|
|
5058
|
+
"linksRevision": 0,
|
|
5059
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
5060
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
4874
5061
|
"kind": "html",
|
|
4875
5062
|
"title": "Blank ext-app tiles on WebKit",
|
|
4876
5063
|
"content": "Post-incident report with impact metrics, minute-by-minute timeline, root cause, log excerpts, and action checklist.",
|
|
@@ -4957,6 +5144,9 @@
|
|
|
4957
5144
|
"source": "api"
|
|
4958
5145
|
},
|
|
4959
5146
|
"contentRevision": 65,
|
|
5147
|
+
"linksRevision": 0,
|
|
5148
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
5149
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
4960
5150
|
"kind": "html",
|
|
4961
5151
|
"title": "Weekly canvas status",
|
|
4962
5152
|
"content": "Skimmable report with metrics, shipped/slipped lists, blockers, and next actions.",
|
|
@@ -5043,6 +5233,9 @@
|
|
|
5043
5233
|
"source": "api"
|
|
5044
5234
|
},
|
|
5045
5235
|
"contentRevision": 66,
|
|
5236
|
+
"linksRevision": 0,
|
|
5237
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
5238
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
5046
5239
|
"kind": "html",
|
|
5047
5240
|
"title": "Post-0.4.7 triage",
|
|
5048
5241
|
"content": "Draggable Now/Next/Later/Cut board with copy-as-markdown export.",
|
|
@@ -5135,6 +5328,9 @@
|
|
|
5135
5328
|
"source": "api"
|
|
5136
5329
|
},
|
|
5137
5330
|
"contentRevision": 67,
|
|
5331
|
+
"linksRevision": 0,
|
|
5332
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
5333
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
5138
5334
|
"kind": "html",
|
|
5139
5335
|
"title": "Canvas feature flags",
|
|
5140
5336
|
"content": "Form-like editor for flags or structured config with dependency warnings and copy-diff export.",
|
|
@@ -5204,6 +5400,9 @@
|
|
|
5204
5400
|
"source": "api"
|
|
5205
5401
|
},
|
|
5206
5402
|
"contentRevision": 68,
|
|
5403
|
+
"linksRevision": 0,
|
|
5404
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
5405
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
5207
5406
|
"kind": "html",
|
|
5208
5407
|
"title": "Board summary prompt",
|
|
5209
5408
|
"content": "Side-by-side prompt/template editor with live variable previews and copy export.",
|
|
@@ -5257,6 +5456,9 @@
|
|
|
5257
5456
|
"source": "api"
|
|
5258
5457
|
},
|
|
5259
5458
|
"contentRevision": 69,
|
|
5459
|
+
"linksRevision": 0,
|
|
5460
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
5461
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
5260
5462
|
"kind": "html",
|
|
5261
5463
|
"title": "Agent board",
|
|
5262
5464
|
"content": "Live agent work board: hand the agent tasks, watch status, steer, and run bounded task loops.",
|
|
@@ -5337,7 +5539,10 @@
|
|
|
5337
5539
|
"actor": "agent",
|
|
5338
5540
|
"source": "api"
|
|
5339
5541
|
},
|
|
5340
|
-
"contentRevision":
|
|
5542
|
+
"contentRevision": 88,
|
|
5543
|
+
"linksRevision": 0,
|
|
5544
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
5545
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
5341
5546
|
"kind": "html",
|
|
5342
5547
|
"title": "Release flow",
|
|
5343
5548
|
"content": "HTML primitive: ax-flow\nLive task-flow control panel: a step diagram with an explicit loop-back, per-step status, and a one-click materialize onto the board.\nRelease flow PMX HTML primitive / ax-flow Release flow Live task-flow control panel: a step diagram with an explicit loop-back, per-step status, and a one-click materialize onto the board. Copy JSON Copy prompt AX bridge unavailable This flow is not running as an AX-enabled canvas node, so its controls are inert. Release flow Each step is a canvas AX work item. Materialize drops the same flow onto the board as real nodes. loops back to step 1 · max 3 runs Run the flow Queue every step A step is queued once — after that its status control advances it (todo → in-progress → done). or run the whole flow as a bounded loop: max runs Start loop Steer Queue steering message Queued for the agent's next turn — steering is recorded on the timeline, it does not wake a running agent. Loop run 0 of 0 Each run is its own work item. When you mark the current run done , the surface opens the next run...",
|
|
@@ -5363,7 +5568,8 @@
|
|
|
5363
5568
|
"data": {
|
|
5364
5569
|
"title": "⑧ Agent at work",
|
|
5365
5570
|
"content": "A task caught mid-flight: one work item per step, status chips on the nodes, controls that steer the agent.",
|
|
5366
|
-
"strictSize": true
|
|
5571
|
+
"strictSize": true,
|
|
5572
|
+
"wikiLinks": []
|
|
5367
5573
|
},
|
|
5368
5574
|
"createdBy": {
|
|
5369
5575
|
"actor": "agent",
|
|
@@ -5374,6 +5580,9 @@
|
|
|
5374
5580
|
"source": "api"
|
|
5375
5581
|
},
|
|
5376
5582
|
"contentRevision": 71,
|
|
5583
|
+
"linksRevision": 0,
|
|
5584
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
5585
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
5377
5586
|
"kind": "markdown",
|
|
5378
5587
|
"title": "⑧ Agent at work",
|
|
5379
5588
|
"content": "A task caught mid-flight: one work item per step, status chips on the nodes, controls that steer the agent.",
|
|
@@ -5402,6 +5611,7 @@
|
|
|
5402
5611
|
"axFlowId": "axflow-primitive-ax-flow",
|
|
5403
5612
|
"axFlowStep": 1,
|
|
5404
5613
|
"axFlowSourceNodeId": "primitive-ax-flow",
|
|
5614
|
+
"wikiLinks": [],
|
|
5405
5615
|
"axWorkStatus": "done",
|
|
5406
5616
|
"axStep": {
|
|
5407
5617
|
"flowId": "axflow-primitive-ax-flow",
|
|
@@ -5454,7 +5664,10 @@
|
|
|
5454
5664
|
"actor": "agent",
|
|
5455
5665
|
"source": "api"
|
|
5456
5666
|
},
|
|
5457
|
-
"contentRevision":
|
|
5667
|
+
"contentRevision": 89,
|
|
5668
|
+
"linksRevision": 84,
|
|
5669
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
5670
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
5458
5671
|
"kind": "markdown",
|
|
5459
5672
|
"title": "1. Reproduce",
|
|
5460
5673
|
"content": "Ran the publish gate 20× in a loop. Fails 3 in 20, always on the registry probe.",
|
|
@@ -5483,6 +5696,7 @@
|
|
|
5483
5696
|
"axFlowId": "axflow-primitive-ax-flow",
|
|
5484
5697
|
"axFlowStep": 2,
|
|
5485
5698
|
"axFlowSourceNodeId": "primitive-ax-flow",
|
|
5699
|
+
"wikiLinks": [],
|
|
5486
5700
|
"axWorkStatus": "in-progress",
|
|
5487
5701
|
"axStep": {
|
|
5488
5702
|
"flowId": "axflow-primitive-ax-flow",
|
|
@@ -5500,7 +5714,10 @@
|
|
|
5500
5714
|
"actor": "agent",
|
|
5501
5715
|
"source": "api"
|
|
5502
5716
|
},
|
|
5503
|
-
"contentRevision":
|
|
5717
|
+
"contentRevision": 90,
|
|
5718
|
+
"linksRevision": 85,
|
|
5719
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
5720
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
5504
5721
|
"kind": "markdown",
|
|
5505
5722
|
"title": "2. Fix",
|
|
5506
5723
|
"content": "Retry the probe with backoff instead of failing the gate on the first timeout.",
|
|
@@ -5529,6 +5746,7 @@
|
|
|
5529
5746
|
"axFlowId": "axflow-primitive-ax-flow",
|
|
5530
5747
|
"axFlowStep": 3,
|
|
5531
5748
|
"axFlowSourceNodeId": "primitive-ax-flow",
|
|
5749
|
+
"wikiLinks": [],
|
|
5532
5750
|
"axWorkStatus": "todo",
|
|
5533
5751
|
"axStep": {
|
|
5534
5752
|
"flowId": "axflow-primitive-ax-flow",
|
|
@@ -5547,6 +5765,9 @@
|
|
|
5547
5765
|
"source": "api"
|
|
5548
5766
|
},
|
|
5549
5767
|
"contentRevision": 80,
|
|
5768
|
+
"linksRevision": 86,
|
|
5769
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
5770
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
5550
5771
|
"kind": "markdown",
|
|
5551
5772
|
"title": "3. Verify",
|
|
5552
5773
|
"content": "Re-run the same 20× loop and require 20 green.",
|
|
@@ -5575,6 +5796,7 @@
|
|
|
5575
5796
|
"axFlowId": "axflow-primitive-ax-flow",
|
|
5576
5797
|
"axFlowStep": 4,
|
|
5577
5798
|
"axFlowSourceNodeId": "primitive-ax-flow",
|
|
5799
|
+
"wikiLinks": [],
|
|
5578
5800
|
"axWorkStatus": "todo",
|
|
5579
5801
|
"axStep": {
|
|
5580
5802
|
"flowId": "axflow-primitive-ax-flow",
|
|
@@ -5593,6 +5815,9 @@
|
|
|
5593
5815
|
"source": "api"
|
|
5594
5816
|
},
|
|
5595
5817
|
"contentRevision": 83,
|
|
5818
|
+
"linksRevision": 86,
|
|
5819
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
5820
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
5596
5821
|
"kind": "markdown",
|
|
5597
5822
|
"title": "4. Ship",
|
|
5598
5823
|
"content": "Land the patch, then watch the next three releases.",
|
|
@@ -5618,7 +5843,8 @@
|
|
|
5618
5843
|
"data": {
|
|
5619
5844
|
"title": "How to read this band",
|
|
5620
5845
|
"content": "Each step is a real **AX work item**, so the chip on a step node is the\nagent’s live status — it moves as the agent works.\n\nThe buttons in each step footer steer it: **Start**, **Done** and\n**Blocked** write that step’s work item, which the agent reads back from\n`canvas://ax-work`.\n\nStep 2 is pinned, so `canvas://pinned-context` hands the agent the\nstep it is actually on.",
|
|
5621
|
-
"strictSize": true
|
|
5846
|
+
"strictSize": true,
|
|
5847
|
+
"wikiLinks": []
|
|
5622
5848
|
},
|
|
5623
5849
|
"createdBy": {
|
|
5624
5850
|
"actor": "agent",
|
|
@@ -5628,7 +5854,10 @@
|
|
|
5628
5854
|
"actor": "agent",
|
|
5629
5855
|
"source": "api"
|
|
5630
5856
|
},
|
|
5631
|
-
"contentRevision":
|
|
5857
|
+
"contentRevision": 91,
|
|
5858
|
+
"linksRevision": 0,
|
|
5859
|
+
"contentChangedAt": "2026-08-01T09:00:00.000Z",
|
|
5860
|
+
"freshnessStartedAt": "2026-08-01T09:00:00.000Z",
|
|
5632
5861
|
"kind": "markdown",
|
|
5633
5862
|
"title": "How to read this band",
|
|
5634
5863
|
"content": "Each step is a real **AX work item**, so the chip on a step node is the\nagent’s live status — it moves as the agent works.\n\nThe buttons in each step footer steer it: **Start**, **Done** and\n**Blocked** write that step’s work item, which the agent reads back from\n`canvas://ax-work`.\n\nStep 2 is pinned, so `canvas://pinned-context` hands the agent the\nstep it is actually on.",
|
|
@@ -5644,21 +5873,54 @@
|
|
|
5644
5873
|
"from": "axflow-primitive-ax-flow-step-1",
|
|
5645
5874
|
"to": "axflow-primitive-ax-flow-step-2",
|
|
5646
5875
|
"type": "flow",
|
|
5647
|
-
"style": "solid"
|
|
5876
|
+
"style": "solid",
|
|
5877
|
+
"revision": 84,
|
|
5878
|
+
"changedBy": {
|
|
5879
|
+
"actor": "agent",
|
|
5880
|
+
"source": "api"
|
|
5881
|
+
},
|
|
5882
|
+
"changedAt": "2026-08-01T09:00:00.000Z",
|
|
5883
|
+
"createdBy": {
|
|
5884
|
+
"actor": "agent",
|
|
5885
|
+
"source": "api"
|
|
5886
|
+
},
|
|
5887
|
+
"createdAt": "2026-08-01T09:00:00.000Z"
|
|
5648
5888
|
},
|
|
5649
5889
|
{
|
|
5650
5890
|
"id": "axflow-primitive-ax-flow-edge-2",
|
|
5651
5891
|
"from": "axflow-primitive-ax-flow-step-2",
|
|
5652
5892
|
"to": "axflow-primitive-ax-flow-step-3",
|
|
5653
5893
|
"type": "flow",
|
|
5654
|
-
"style": "solid"
|
|
5894
|
+
"style": "solid",
|
|
5895
|
+
"revision": 85,
|
|
5896
|
+
"changedBy": {
|
|
5897
|
+
"actor": "agent",
|
|
5898
|
+
"source": "api"
|
|
5899
|
+
},
|
|
5900
|
+
"changedAt": "2026-08-01T09:00:00.000Z",
|
|
5901
|
+
"createdBy": {
|
|
5902
|
+
"actor": "agent",
|
|
5903
|
+
"source": "api"
|
|
5904
|
+
},
|
|
5905
|
+
"createdAt": "2026-08-01T09:00:00.000Z"
|
|
5655
5906
|
},
|
|
5656
5907
|
{
|
|
5657
5908
|
"id": "axflow-primitive-ax-flow-edge-3",
|
|
5658
5909
|
"from": "axflow-primitive-ax-flow-step-3",
|
|
5659
5910
|
"to": "axflow-primitive-ax-flow-step-4",
|
|
5660
5911
|
"type": "flow",
|
|
5661
|
-
"style": "solid"
|
|
5912
|
+
"style": "solid",
|
|
5913
|
+
"revision": 86,
|
|
5914
|
+
"changedBy": {
|
|
5915
|
+
"actor": "agent",
|
|
5916
|
+
"source": "api"
|
|
5917
|
+
},
|
|
5918
|
+
"changedAt": "2026-08-01T09:00:00.000Z",
|
|
5919
|
+
"createdBy": {
|
|
5920
|
+
"actor": "agent",
|
|
5921
|
+
"source": "api"
|
|
5922
|
+
},
|
|
5923
|
+
"createdAt": "2026-08-01T09:00:00.000Z"
|
|
5662
5924
|
},
|
|
5663
5925
|
{
|
|
5664
5926
|
"id": "edge-runs",
|
|
@@ -5666,7 +5928,18 @@
|
|
|
5666
5928
|
"to": "trace-plan",
|
|
5667
5929
|
"type": "flow",
|
|
5668
5930
|
"label": "runs",
|
|
5669
|
-
"animated": true
|
|
5931
|
+
"animated": true,
|
|
5932
|
+
"revision": 92,
|
|
5933
|
+
"changedBy": {
|
|
5934
|
+
"actor": "agent",
|
|
5935
|
+
"source": "api"
|
|
5936
|
+
},
|
|
5937
|
+
"changedAt": "2026-08-01T09:00:00.000Z",
|
|
5938
|
+
"createdBy": {
|
|
5939
|
+
"actor": "agent",
|
|
5940
|
+
"source": "api"
|
|
5941
|
+
},
|
|
5942
|
+
"createdAt": "2026-08-01T09:00:00.000Z"
|
|
5670
5943
|
},
|
|
5671
5944
|
{
|
|
5672
5945
|
"id": "edge-then",
|
|
@@ -5674,21 +5947,57 @@
|
|
|
5674
5947
|
"to": "trace-apply",
|
|
5675
5948
|
"type": "flow",
|
|
5676
5949
|
"label": "then",
|
|
5677
|
-
"style": "dotted"
|
|
5950
|
+
"style": "dotted",
|
|
5951
|
+
"revision": 93,
|
|
5952
|
+
"changedBy": {
|
|
5953
|
+
"actor": "agent",
|
|
5954
|
+
"source": "api"
|
|
5955
|
+
},
|
|
5956
|
+
"changedAt": "2026-08-01T09:00:00.000Z",
|
|
5957
|
+
"createdBy": {
|
|
5958
|
+
"actor": "agent",
|
|
5959
|
+
"source": "api"
|
|
5960
|
+
},
|
|
5961
|
+
"createdAt": "2026-08-01T09:00:00.000Z"
|
|
5678
5962
|
},
|
|
5679
5963
|
{
|
|
5680
5964
|
"id": "edge-decisions",
|
|
5681
5965
|
"from": "context",
|
|
5682
5966
|
"to": "ledger",
|
|
5683
5967
|
"type": "relation",
|
|
5684
|
-
"
|
|
5968
|
+
"kind": "supports",
|
|
5969
|
+
"reason": "The working context explains the recorded decisions.",
|
|
5970
|
+
"label": "decisions",
|
|
5971
|
+
"revision": 94,
|
|
5972
|
+
"changedBy": {
|
|
5973
|
+
"actor": "agent",
|
|
5974
|
+
"source": "api"
|
|
5975
|
+
},
|
|
5976
|
+
"changedAt": "2026-08-01T09:00:00.000Z",
|
|
5977
|
+
"createdBy": {
|
|
5978
|
+
"actor": "agent",
|
|
5979
|
+
"source": "api"
|
|
5980
|
+
},
|
|
5981
|
+
"createdAt": "2026-08-01T09:00:00.000Z"
|
|
5685
5982
|
},
|
|
5686
5983
|
{
|
|
5687
5984
|
"id": "edge-changed-in",
|
|
5688
5985
|
"from": "file-ts",
|
|
5689
5986
|
"to": "diff",
|
|
5690
5987
|
"type": "depends-on",
|
|
5691
|
-
"label": "changed in"
|
|
5988
|
+
"label": "changed in",
|
|
5989
|
+
"sourceRevision": 11,
|
|
5990
|
+
"revision": 95,
|
|
5991
|
+
"changedBy": {
|
|
5992
|
+
"actor": "agent",
|
|
5993
|
+
"source": "api"
|
|
5994
|
+
},
|
|
5995
|
+
"changedAt": "2026-08-01T09:00:00.000Z",
|
|
5996
|
+
"createdBy": {
|
|
5997
|
+
"actor": "agent",
|
|
5998
|
+
"source": "api"
|
|
5999
|
+
},
|
|
6000
|
+
"createdAt": "2026-08-01T09:00:00.000Z"
|
|
5692
6001
|
},
|
|
5693
6002
|
{
|
|
5694
6003
|
"id": "edge-gate",
|
|
@@ -5696,14 +6005,36 @@
|
|
|
5696
6005
|
"to": "mermaid-state",
|
|
5697
6006
|
"type": "references",
|
|
5698
6007
|
"label": "approval gate",
|
|
5699
|
-
"style": "dashed"
|
|
6008
|
+
"style": "dashed",
|
|
6009
|
+
"revision": 96,
|
|
6010
|
+
"changedBy": {
|
|
6011
|
+
"actor": "agent",
|
|
6012
|
+
"source": "api"
|
|
6013
|
+
},
|
|
6014
|
+
"changedAt": "2026-08-01T09:00:00.000Z",
|
|
6015
|
+
"createdBy": {
|
|
6016
|
+
"actor": "agent",
|
|
6017
|
+
"source": "api"
|
|
6018
|
+
},
|
|
6019
|
+
"createdAt": "2026-08-01T09:00:00.000Z"
|
|
5700
6020
|
},
|
|
5701
6021
|
{
|
|
5702
6022
|
"id": "edge-sprint",
|
|
5703
6023
|
"from": "group-note",
|
|
5704
6024
|
"to": "group-status",
|
|
5705
6025
|
"type": "relation",
|
|
5706
|
-
"style": "dashed"
|
|
6026
|
+
"style": "dashed",
|
|
6027
|
+
"revision": 97,
|
|
6028
|
+
"changedBy": {
|
|
6029
|
+
"actor": "agent",
|
|
6030
|
+
"source": "api"
|
|
6031
|
+
},
|
|
6032
|
+
"changedAt": "2026-08-01T09:00:00.000Z",
|
|
6033
|
+
"createdBy": {
|
|
6034
|
+
"actor": "agent",
|
|
6035
|
+
"source": "api"
|
|
6036
|
+
},
|
|
6037
|
+
"createdAt": "2026-08-01T09:00:00.000Z"
|
|
5707
6038
|
}
|
|
5708
6039
|
],
|
|
5709
6040
|
"annotations": [
|