@north-light/crouter 0.3.173 → 0.3.175

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.
Files changed (674) hide show
  1. package/bin/runtime-selector.mjs +8 -1
  2. package/dist/api/__tests__/{client.test.js → serial/client.test.js} +2 -135
  3. package/dist/api/client.d.ts +12 -21
  4. package/dist/api/client.js +22 -31
  5. package/dist/api/dto/broker-ops.d.ts +158 -0
  6. package/dist/api/dto/broker-ops.js +6 -0
  7. package/dist/api/dto/crons.d.ts +6 -0
  8. package/dist/api/dto/human.d.ts +7 -1
  9. package/dist/api/dto/inbox.d.ts +1 -71
  10. package/dist/api/dto/inbox.js +1 -9
  11. package/dist/api/dto/nodes.d.ts +6 -7
  12. package/dist/api/dto/reviews.d.ts +1 -11
  13. package/dist/api/routes.d.ts +7 -4
  14. package/dist/api/routes.js +8 -5
  15. package/dist/build-root.js +3 -3
  16. package/dist/builtin-memory/04-base-worker.md +1 -4
  17. package/dist/builtin-memory/05-kinds/advisor/00-base.md +1 -5
  18. package/dist/builtin-memory/05-kinds/advisor/01-orchestrator.md +2 -7
  19. package/dist/builtin-memory/05-kinds/design/00-base.md +1 -6
  20. package/dist/builtin-memory/05-kinds/developer/00-base.md +1 -6
  21. package/dist/builtin-memory/05-kinds/explore/00-base.md +1 -4
  22. package/dist/builtin-memory/05-kinds/explore/01-orchestrator.md +1 -2
  23. package/dist/builtin-memory/05-kinds/general/00-base.md +1 -3
  24. package/dist/builtin-memory/05-kinds/plan/00-base.md +1 -6
  25. package/dist/builtin-memory/05-kinds/plan/reviewers/00-base.md +1 -2
  26. package/dist/builtin-memory/05-kinds/plan/reviewers/architecture-fit.md +1 -3
  27. package/dist/builtin-memory/05-kinds/plan/reviewers/code-smells.md +1 -3
  28. package/dist/builtin-memory/05-kinds/plan/reviewers/pattern-consistency.md +1 -3
  29. package/dist/builtin-memory/05-kinds/plan/reviewers/requirements-coverage.md +1 -3
  30. package/dist/builtin-memory/05-kinds/plan/reviewers/security.md +1 -4
  31. package/dist/builtin-memory/05-kinds/review/companion/00-base.md +2 -3
  32. package/dist/builtin-memory/05-kinds/spec/00-base.md +1 -2
  33. package/dist/builtin-memory/advisor/council.md +1 -6
  34. package/dist/builtin-memory/design.md +2 -7
  35. package/dist/builtin-memory/development.md +9 -14
  36. package/dist/builtin-memory/internal/marketplaces.md +2 -6
  37. package/dist/builtin-memory/internal/nodes-and-canvas.md +1 -1
  38. package/dist/builtin-memory/internal/plugins.md +2 -8
  39. package/dist/builtin-memory/internal/storage-tiers.md +1 -2
  40. package/dist/builtin-memory/testing.md +41 -0
  41. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/{provider-rotation.test.ts → serial/provider-rotation.test.ts} +27 -179
  42. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/claude-plugin-commands.ts +5 -15
  43. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/frontmatter-rules/index.ts +1 -28
  44. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/memory-slash-commands.ts +43 -88
  45. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.js +7 -1
  46. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.ts +9 -1
  47. package/dist/cli.js +2 -2
  48. package/dist/clients/attach/__tests__/attach-remote-readonly.test.js +37 -131
  49. package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.js +71 -152
  50. package/dist/clients/attach/__tests__/context-message.test.js +16 -174
  51. package/dist/clients/attach/__tests__/crtr-output.test.js +36 -2069
  52. package/dist/clients/attach/__tests__/diagram.test.js +2 -2
  53. package/dist/clients/attach/__tests__/edit-diff.test.js +0 -4
  54. package/dist/clients/attach/__tests__/file-review-focus.test.js +2 -1
  55. package/dist/clients/attach/__tests__/group-activity.test.js +40 -229
  56. package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.js +26 -76
  57. package/dist/clients/attach/__tests__/prompt-preview.test.js +4 -70
  58. package/dist/clients/attach/__tests__/ref-autocomplete.test.js +11 -125
  59. package/dist/clients/attach/__tests__/titled-editor-preview.test.js +14 -205
  60. package/dist/clients/attach/command.d.ts +2 -1
  61. package/dist/clients/attach/command.js +81 -76
  62. package/dist/clients/attach/input/capabilities.d.ts +27 -0
  63. package/dist/clients/attach/input/capabilities.js +96 -0
  64. package/dist/clients/attach/input/controller.d.ts +20 -182
  65. package/dist/clients/attach/input/controller.js +128 -537
  66. package/dist/clients/attach/input/overlay-owner.d.ts +41 -0
  67. package/dist/clients/attach/input/overlay-owner.js +199 -0
  68. package/dist/clients/attach/overlays/file-review.d.ts +0 -4
  69. package/dist/clients/attach/overlays/file-review.js +13 -5
  70. package/dist/clients/attach/overlays/graph.js +2 -10
  71. package/dist/clients/attach/render/chat-view.d.ts +4 -3
  72. package/dist/clients/attach/render/chat-view.js +39 -33
  73. package/dist/clients/attach/render/group-activity.d.ts +1 -0
  74. package/dist/clients/attach/render/group-activity.js +20 -13
  75. package/dist/clients/attach/render/group-recap.js +12 -3
  76. package/dist/clients/attach/session/connection.js +9 -15
  77. package/dist/clients/attach/session/editor-inventory.d.ts +6 -5
  78. package/dist/clients/attach/session/editor-inventory.js +7 -8
  79. package/dist/clients/attach/session/file-links.d.ts +13 -0
  80. package/dist/clients/attach/session/file-links.js +107 -0
  81. package/dist/clients/attach/session/frame.d.ts +3 -0
  82. package/dist/clients/attach/session/frame.js +10 -1
  83. package/dist/clients/attach/session/frames.js +2 -3
  84. package/dist/clients/attach/session/input-wiring.d.ts +4 -1
  85. package/dist/clients/attach/session/input-wiring.js +15 -14
  86. package/dist/clients/attach/session/mouse.d.ts +6 -1
  87. package/dist/clients/attach/session/mouse.js +8 -5
  88. package/dist/clients/attach/session/profile-files.js +18 -12
  89. package/dist/clients/attach/session/reconnect.js +1 -1
  90. package/dist/clients/attach/session/state-sync.js +1 -2
  91. package/dist/clients/attach/session/surface-host.d.ts +3 -2
  92. package/dist/clients/attach/session/surface-host.js +4 -4
  93. package/dist/clients/attach/slash/dispatch.d.ts +8 -31
  94. package/dist/clients/attach/slash/dispatch.js +34 -81
  95. package/dist/clients/attach/viewer.js +820 -860
  96. package/dist/clients/conversation/projection.d.ts +79 -0
  97. package/dist/clients/conversation/projection.js +341 -0
  98. package/dist/clients/inbox/__tests__/serial/inbox-controller.test.js +159 -0
  99. package/dist/clients/inbox/__tests__/serial/mount-panel.test.js +151 -0
  100. package/dist/clients/inbox/controller.d.ts +0 -4
  101. package/dist/clients/inbox/controller.js +0 -2
  102. package/dist/clients/inbox/review/__tests__/review-core.test.js +4 -293
  103. package/dist/clients/inbox/review/__tests__/teardown-notice.test.js +100 -0
  104. package/dist/clients/inbox/review/comments-client.d.ts +3 -2
  105. package/dist/clients/inbox/review/comments-client.js +12 -12
  106. package/dist/clients/inbox/review/companion-pane.d.ts +30 -0
  107. package/dist/clients/inbox/review/companion-pane.js +86 -0
  108. package/dist/clients/inbox/review/document-surface.d.ts +182 -0
  109. package/dist/clients/inbox/review/{document-region.js → document-surface.js} +252 -48
  110. package/dist/clients/inbox/review/frame.js +5 -4
  111. package/dist/clients/inbox/review/launch.d.ts +8 -8
  112. package/dist/clients/inbox/review/launch.js +52 -92
  113. package/dist/clients/inbox/review/nvim.d.ts +2 -0
  114. package/dist/clients/inbox/review/nvim.js +14 -12
  115. package/dist/clients/inbox/review/review-client.d.ts +12 -8
  116. package/dist/clients/inbox/review/review-client.js +46 -35
  117. package/dist/clients/inbox/review-adapter.d.ts +3 -10
  118. package/dist/clients/inbox/review-adapter.js +27 -19
  119. package/dist/clients/inbox/surface.d.ts +0 -4
  120. package/dist/clients/inbox/surface.js +0 -2
  121. package/dist/clients/surfaces/host.d.ts +11 -3
  122. package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.js +7 -34
  123. package/dist/commands/__tests__/human.test.js +11 -322
  124. package/dist/commands/api-client.d.ts +5 -5
  125. package/dist/commands/api-client.js +6 -85
  126. package/dist/commands/canvas-browse.js +3 -29
  127. package/dist/commands/canvas-config.js +1 -1
  128. package/dist/commands/canvas-use.js +3 -3
  129. package/dist/commands/canvas.js +1 -1
  130. package/dist/commands/cron.js +5 -1
  131. package/dist/commands/human/queue.d.ts +0 -4
  132. package/dist/commands/human/queue.js +7 -40
  133. package/dist/commands/memory/list.d.ts +14 -0
  134. package/dist/commands/memory/list.js +35 -31
  135. package/dist/commands/memory/read.d.ts +7 -0
  136. package/dist/commands/memory/read.js +14 -8
  137. package/dist/commands/memory/write.js +13 -12
  138. package/dist/commands/node/bash.d.ts +1 -0
  139. package/dist/commands/node/bash.js +198 -0
  140. package/dist/commands/node/create.d.ts +23 -0
  141. package/dist/commands/node/create.js +207 -0
  142. package/dist/commands/node/inspect.d.ts +2 -0
  143. package/dist/commands/node/inspect.js +302 -0
  144. package/dist/commands/node/lifecycle.d.ts +4 -0
  145. package/dist/commands/node/lifecycle.js +415 -0
  146. package/dist/commands/node/message.d.ts +1 -0
  147. package/dist/commands/node/message.js +164 -0
  148. package/dist/commands/node/pyramid.d.ts +2 -0
  149. package/dist/commands/node/pyramid.js +79 -0
  150. package/dist/commands/node/subscription.d.ts +1 -0
  151. package/dist/commands/node/subscription.js +82 -0
  152. package/dist/commands/node/wait.d.ts +1 -0
  153. package/dist/commands/node/wait.js +159 -0
  154. package/dist/commands/node-lifecycle-revive.js +10 -57
  155. package/dist/commands/node.d.ts +0 -42
  156. package/dist/commands/node.js +11 -2065
  157. package/dist/commands/search.js +1 -1
  158. package/dist/commands/surface/node/cycle.d.ts +1 -0
  159. package/dist/commands/surface/node/cycle.js +83 -0
  160. package/dist/commands/surface/node/focus.d.ts +1 -0
  161. package/dist/commands/surface/node/focus.js +67 -0
  162. package/dist/commands/surface/node/id.d.ts +1 -0
  163. package/dist/commands/surface/node/id.js +38 -0
  164. package/dist/commands/surface/node/pin.d.ts +1 -0
  165. package/dist/commands/surface/node/pin.js +42 -0
  166. package/dist/commands/surface/node/placement.d.ts +46 -0
  167. package/dist/commands/surface/node/placement.js +124 -0
  168. package/dist/commands/surface-node.js +4 -1
  169. package/dist/commands/surface-reload.js +1 -2
  170. package/dist/commands/surface-tmux-spread.js +1 -1
  171. package/dist/commands/surface.js +5 -20
  172. package/dist/commands/sys/__tests__/setup-core.test.js +18 -271
  173. package/dist/commands/sys/config.js +6 -6
  174. package/dist/commands/sys/logs.js +1 -1
  175. package/dist/commands/sys/panels/broker-limits-panel.d.ts +17 -0
  176. package/dist/commands/sys/panels/broker-limits-panel.js +104 -0
  177. package/dist/commands/sys/panels/dependencies-panel.d.ts +14 -0
  178. package/dist/commands/sys/panels/dependencies-panel.js +80 -0
  179. package/dist/commands/sys/panels/keybindings-panel.d.ts +56 -0
  180. package/dist/commands/sys/panels/keybindings-panel.js +703 -0
  181. package/dist/commands/sys/panels/keys-panel.d.ts +16 -0
  182. package/dist/commands/sys/panels/keys-panel.js +60 -0
  183. package/dist/commands/sys/panels/models-panel.d.ts +77 -0
  184. package/dist/commands/sys/panels/models-panel.js +647 -0
  185. package/dist/commands/sys/panels/panel.d.ts +45 -0
  186. package/dist/commands/sys/panels/panel.js +137 -0
  187. package/dist/commands/sys/panels/plugins-panel.d.ts +16 -0
  188. package/dist/commands/sys/panels/plugins-panel.js +80 -0
  189. package/dist/commands/sys/panels/prefs-panel.d.ts +21 -0
  190. package/dist/commands/sys/panels/prefs-panel.js +85 -0
  191. package/dist/commands/sys/panels/provider-panel.d.ts +62 -0
  192. package/dist/commands/sys/panels/provider-panel.js +538 -0
  193. package/dist/commands/sys/settings-shell.d.ts +55 -0
  194. package/dist/commands/sys/settings-shell.js +400 -0
  195. package/dist/commands/sys/settings.d.ts +2 -0
  196. package/dist/commands/sys/settings.js +31 -0
  197. package/dist/commands/sys/setup-core.d.ts +3 -33
  198. package/dist/commands/sys/setup-core.js +27 -78
  199. package/dist/commands/sys/setup-settings-runner.d.ts +24 -0
  200. package/dist/commands/sys/setup-settings-runner.js +63 -0
  201. package/dist/commands/sys/setup-wizard.d.ts +26 -125
  202. package/dist/commands/sys/setup-wizard.js +209 -2473
  203. package/dist/commands/sys/setup.js +5 -7
  204. package/dist/commands/sys.js +3 -2
  205. package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.js +50 -0
  206. package/dist/core/__tests__/broker-launch-candidates.test.js +20 -9
  207. package/dist/core/__tests__/broker-preflight.test.js +1 -1
  208. package/dist/core/__tests__/canvas-inbox-watcher-hold.test.js +108 -27
  209. package/dist/core/__tests__/canvas-inbox-watcher.test.js +14 -0
  210. package/dist/core/__tests__/canvas.test.js +2 -36
  211. package/dist/core/__tests__/close.test.js +14 -3
  212. package/dist/core/__tests__/context-intro.test.js +32 -143
  213. package/dist/core/__tests__/cron-broker-capacity.test.js +22 -3
  214. package/dist/core/__tests__/daemon-boot.test.js +2 -20
  215. package/dist/core/__tests__/daemon-wedge.test.js +1 -1
  216. package/dist/core/__tests__/dead-node-policy-table.test.js +1 -18
  217. package/dist/core/__tests__/fixtures/fake-engine.d.ts +1 -1
  218. package/dist/core/__tests__/fixtures/fake-engine.js +2 -2
  219. package/dist/core/__tests__/fixtures/fake-pi-host.js +2 -2
  220. package/dist/core/__tests__/focuses.test.js +4 -98
  221. package/dist/core/__tests__/helpers/broker-clients.d.ts +0 -3
  222. package/dist/core/__tests__/helpers/broker-clients.js +0 -14
  223. package/dist/core/__tests__/helpers/harness.d.ts +0 -8
  224. package/dist/core/__tests__/helpers/harness.js +7 -87
  225. package/dist/core/__tests__/helpers/viewer-panes.js +1 -1
  226. package/dist/core/__tests__/inline-memory-refs.test.js +5 -134
  227. package/dist/core/__tests__/kickoff.test.js +1 -1
  228. package/dist/core/__tests__/memory-resolver-precedence.test.js +29 -1
  229. package/dist/core/__tests__/migration.test.js +35 -48
  230. package/dist/core/__tests__/on-read-dedup-resume.test.js +22 -12
  231. package/dist/core/__tests__/passive-subscription.test.js +26 -49
  232. package/dist/core/__tests__/preview-registry-sync.test.js +1 -2
  233. package/dist/core/__tests__/prune.test.js +94 -1
  234. package/dist/core/__tests__/review-model-floor.test.js +0 -32
  235. package/dist/core/__tests__/seam/broker-attach-multiclient.test.js +255 -0
  236. package/dist/core/__tests__/{full → seam}/broker-attach-stream.test.js +39 -7
  237. package/dist/core/__tests__/{full → seam}/broker-crash-teardown.test.js +30 -29
  238. package/dist/core/__tests__/{full → seam}/broker-pane-resolution.test.js +54 -5
  239. package/dist/core/__tests__/{full → seam}/broker-provider-retry.test.js +134 -82
  240. package/dist/core/__tests__/{full → seam}/broker-whip-interrupt.test.js +15 -4
  241. package/dist/core/__tests__/{full/idle-release-settlement.test.js → seam/dormancy-release.test.js} +69 -17
  242. package/dist/core/__tests__/{full/yield-message-transaction.test.js → seam/yield-refresh-transaction.test.js} +31 -9
  243. package/dist/core/__tests__/secrets.test.js +1 -7
  244. package/dist/core/__tests__/{broker-fork-seam.test.js → serial/broker-fork-seam.test.js} +58 -7
  245. package/dist/core/__tests__/{broker-sdk-wiring.test.js → serial/broker-sdk-wiring.test.js} +18 -162
  246. package/dist/core/__tests__/{broker-snapshot-history.test.js → serial/broker-snapshot-history.test.js} +9 -9
  247. package/dist/core/__tests__/{command-plugins.test.js → serial/command-plugins.test.js} +105 -15
  248. package/dist/core/__tests__/{deferred-no-wake.test.js → serial/deferred-no-wake.test.js} +23 -20
  249. package/dist/core/__tests__/{flagship-lifecycle.test.js → serial/flagship-lifecycle.test.js} +7 -7
  250. package/dist/core/__tests__/{host-teardown-process-group.test.js → serial/host-teardown-process-group.test.js} +6 -6
  251. package/dist/core/__tests__/{human-deliver-e2e.test.js → serial/human-deliver-e2e.test.js} +12 -12
  252. package/dist/core/__tests__/{live-mutation.test.js → serial/live-mutation.test.js} +5 -5
  253. package/dist/core/__tests__/{refresh-stall-recycle.test.js → serial/refresh-stall-recycle.test.js} +5 -14
  254. package/dist/core/__tests__/{revive.test.js → serial/revive.test.js} +15 -100
  255. package/dist/core/__tests__/{spawn-root.test.js → serial/spawn-root.test.js} +32 -15
  256. package/dist/core/__tests__/serial/subscription-delivery.test.js +126 -0
  257. package/dist/core/__tests__/serial/tmux-surface.test.js +256 -0
  258. package/dist/core/__tests__/{worktree.test.js → serial/worktree.test.js} +15 -15
  259. package/dist/core/__tests__/session-model.test.js +0 -18
  260. package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +9 -0
  261. package/dist/core/__tests__/watchdog-abort-arms-retry.test.js +50 -0
  262. package/dist/core/broker-client/__tests__/transport-relay.test.js +15 -16
  263. package/dist/core/broker-client/__tests__/transport-socket.test.js +28 -0
  264. package/dist/core/broker-client/client.d.ts +2 -2
  265. package/dist/core/broker-client/client.js +4 -7
  266. package/dist/core/broker-client/transport-relay.d.ts +13 -19
  267. package/dist/core/broker-client/transport-relay.js +19 -34
  268. package/dist/core/broker-client/transport-socket.d.ts +2 -2
  269. package/dist/core/broker-client/transport-socket.js +9 -2
  270. package/dist/core/broker-client/transport.d.ts +7 -3
  271. package/dist/core/broker-client/transport.js +4 -4
  272. package/dist/core/canvas/__tests__/attention.test.js +1 -18
  273. package/dist/core/canvas/__tests__/remote-canvas-source.test.js +7 -64
  274. package/dist/core/canvas/__tests__/remote-transport.test.js +2 -3
  275. package/dist/core/canvas/__tests__/render-remote.test.js +7 -52
  276. package/dist/core/canvas/browse/app.d.ts +2 -17
  277. package/dist/core/canvas/browse/app.js +16 -88
  278. package/dist/core/canvas/browse/model.d.ts +0 -4
  279. package/dist/core/canvas/browse/model.js +1 -12
  280. package/dist/core/canvas/browse/render.js +6 -3
  281. package/dist/core/canvas/crons.d.ts +8 -5
  282. package/dist/core/canvas/crons.js +7 -6
  283. package/dist/core/canvas/extensions.d.ts +7 -3
  284. package/dist/core/canvas/extensions.js +16 -4
  285. package/dist/core/canvas/nav-model.d.ts +0 -4
  286. package/dist/core/canvas/nav-model.js +2 -14
  287. package/dist/core/canvas/node-order.d.ts +3 -0
  288. package/dist/core/canvas/node-order.js +12 -0
  289. package/dist/core/canvas/remote-canvas-source.d.ts +3 -6
  290. package/dist/core/canvas/remote-canvas-source.js +8 -15
  291. package/dist/core/command.js +11 -4
  292. package/dist/core/config.js +3 -1
  293. package/dist/core/events/envelope.js +1 -1
  294. package/dist/core/events/read.js +7 -21
  295. package/dist/core/events/source.d.ts +0 -2
  296. package/dist/core/events/source.js +0 -16
  297. package/dist/core/events/types.d.ts +1 -1
  298. package/dist/core/fault-classifier.d.ts +1 -1
  299. package/dist/core/feed/passive.d.ts +0 -11
  300. package/dist/core/feed/passive.js +1 -62
  301. package/dist/core/human/__tests__/{inbox-core.test.js → serial/inbox-core.test.js} +6 -6
  302. package/dist/core/keybindings/__tests__/resolve.test.js +1 -96
  303. package/dist/core/keybindings/background-bash.js +3 -4
  304. package/dist/core/keybindings/catalog.js +1 -1
  305. package/dist/core/memory/inline-ref-grammar.js +3 -3
  306. package/dist/core/memory-resolver.d.ts +11 -25
  307. package/dist/core/memory-resolver.js +51 -33
  308. package/dist/core/model-routes.d.ts +15 -0
  309. package/dist/core/model-routes.js +12 -0
  310. package/dist/core/pool-credential-store.js +1 -1
  311. package/dist/core/preview-registry.js +8 -9
  312. package/dist/core/profiles/__tests__/root-profile.test.js +4 -14
  313. package/dist/core/review/realize.d.ts +0 -13
  314. package/dist/core/review/realize.js +0 -40
  315. package/dist/core/review/types.d.ts +1 -1
  316. package/dist/core/runtime/__tests__/engine-route.test.js +2 -2
  317. package/dist/core/runtime/bearings.js +1 -11
  318. package/dist/core/runtime/broker/client-registry.d.ts +33 -0
  319. package/dist/core/runtime/broker/client-registry.js +164 -0
  320. package/dist/core/runtime/broker/daemon-ops.d.ts +19 -0
  321. package/dist/core/runtime/broker/daemon-ops.js +49 -0
  322. package/dist/core/runtime/broker/event-projection.d.ts +42 -0
  323. package/dist/core/runtime/broker/event-projection.js +178 -0
  324. package/dist/core/runtime/broker/fault-retry.d.ts +39 -0
  325. package/dist/core/runtime/broker/fault-retry.js +277 -0
  326. package/dist/core/runtime/broker/frame-dispatch.d.ts +238 -0
  327. package/dist/core/runtime/broker/frame-dispatch.js +1537 -0
  328. package/dist/core/runtime/broker/inbox.d.ts +22 -0
  329. package/dist/core/runtime/broker/inbox.js +167 -0
  330. package/dist/core/runtime/broker/passive.d.ts +16 -0
  331. package/dist/core/runtime/broker/passive.js +44 -0
  332. package/dist/core/runtime/broker/read-ops.d.ts +23 -0
  333. package/dist/core/runtime/broker/read-ops.js +150 -0
  334. package/dist/core/runtime/broker/rebind.d.ts +74 -0
  335. package/dist/core/runtime/broker/rebind.js +211 -0
  336. package/dist/core/runtime/broker/tool-groups.d.ts +39 -0
  337. package/dist/core/runtime/broker/tool-groups.js +244 -0
  338. package/dist/core/runtime/broker-extension-render.d.ts +11 -0
  339. package/dist/core/runtime/broker-extension-render.js +181 -0
  340. package/dist/core/runtime/broker-persona-guidance.d.ts +13 -0
  341. package/dist/core/runtime/broker-persona-guidance.js +58 -0
  342. package/dist/core/runtime/broker-protocol.d.ts +1 -1
  343. package/dist/core/runtime/broker-protocol.js +1 -1
  344. package/dist/core/runtime/broker.d.ts +5 -196
  345. package/dist/core/runtime/broker.js +276 -3059
  346. package/dist/core/runtime/canvas-extensions.js +11 -2
  347. package/dist/core/runtime/fault.js +1 -1
  348. package/dist/core/runtime/model-selection.d.ts +9 -0
  349. package/dist/core/runtime/model-selection.js +12 -0
  350. package/dist/core/runtime/model-swap.d.ts +3 -3
  351. package/dist/core/runtime/model-swap.js +33 -25
  352. package/dist/core/runtime/placement-tmux.d.ts +3 -14
  353. package/dist/core/runtime/placement-tmux.js +11 -80
  354. package/dist/core/runtime/placement.d.ts +4 -2
  355. package/dist/core/runtime/placement.js +7 -12
  356. package/dist/core/runtime/promote.d.ts +14 -1
  357. package/dist/core/runtime/promote.js +1 -1
  358. package/dist/core/runtime/reset.d.ts +1 -1
  359. package/dist/core/runtime/roadmap.js +1 -1
  360. package/dist/core/runtime/spawn.d.ts +8 -0
  361. package/dist/core/runtime/spawn.js +36 -6
  362. package/dist/core/runtime/stop-guard.d.ts +4 -3
  363. package/dist/core/runtime/stop-guard.js +36 -18
  364. package/dist/core/runtime/stop-signals.d.ts +4 -1
  365. package/dist/core/runtime/stream-watchdog.js +4 -5
  366. package/dist/core/runtime/structured-output.d.ts +15 -2
  367. package/dist/core/runtime/structured-output.js +35 -12
  368. package/dist/core/runtime/tmux-bindings.d.ts +25 -0
  369. package/dist/core/runtime/tmux-bindings.js +682 -0
  370. package/dist/core/runtime/tmux-chrome.d.ts +2 -1
  371. package/dist/core/runtime/tmux-chrome.js +3 -2
  372. package/dist/core/runtime/{tmux.d.ts → tmux-driver.d.ts} +18 -26
  373. package/dist/core/runtime/tmux-driver.js +598 -0
  374. package/dist/core/runtime/view-socket.d.ts +14 -0
  375. package/dist/core/runtime/view-socket.js +83 -0
  376. package/dist/core/session-model/session-state.d.ts +1 -2
  377. package/dist/core/session-model/session-state.js +5 -8
  378. package/dist/core/spawn.d.ts +1 -1
  379. package/dist/core/spawn.js +2 -2
  380. package/dist/core/substrate/gate.d.ts +1 -1
  381. package/dist/core/substrate/on-read-pure.d.ts +7 -0
  382. package/dist/core/substrate/on-read-pure.js +272 -0
  383. package/dist/core/termrender/termrender.js +32 -2
  384. package/dist/core/user-settings.d.ts +23 -1
  385. package/dist/core/user-settings.js +18 -1
  386. package/dist/daemon/api/__tests__/node-model-validation.test.js +134 -0
  387. package/dist/daemon/api/__tests__/review-terminal-conflict.test.js +98 -0
  388. package/dist/daemon/api/__tests__/{full → seam}/api-server.test.js +6 -48
  389. package/dist/daemon/api/__tests__/{full → seam}/b10-attach-modelauth.test.js +17 -44
  390. package/dist/daemon/api/__tests__/{full/push-parity.test.js → seam/leaf-api-parity.test.js} +61 -42
  391. package/dist/daemon/api/bridge.js +40 -81
  392. package/dist/daemon/api/handlers/broker-ops.d.ts +2 -0
  393. package/dist/daemon/api/handlers/broker-ops.js +383 -0
  394. package/dist/daemon/api/handlers/crons.js +9 -4
  395. package/dist/daemon/api/handlers/files.js +6 -7
  396. package/dist/daemon/api/handlers/inbox.js +2 -340
  397. package/dist/daemon/api/handlers/nodes.d.ts +10 -1
  398. package/dist/daemon/api/handlers/nodes.js +74 -39
  399. package/dist/daemon/api/handlers/review-comments.js +5 -1
  400. package/dist/daemon/api/handlers/reviews.js +0 -19
  401. package/dist/daemon/api/map.js +25 -4
  402. package/dist/daemon/api/router.js +2 -3
  403. package/dist/daemon/api/server.js +5 -7
  404. package/dist/daemon/cron-run.d.ts +4 -0
  405. package/dist/daemon/cron-run.js +30 -13
  406. package/dist/daemon/crtrd.d.ts +3 -58
  407. package/dist/daemon/crtrd.js +28 -1244
  408. package/dist/daemon/manage.js +0 -1
  409. package/dist/daemon/reconcilers/broker-supervision.d.ts +50 -0
  410. package/dist/daemon/reconcilers/broker-supervision.js +549 -0
  411. package/dist/daemon/reconcilers/cron-lane.d.ts +10 -0
  412. package/dist/daemon/reconcilers/cron-lane.js +32 -0
  413. package/dist/daemon/reconcilers/dormant-inbox.d.ts +18 -0
  414. package/dist/daemon/reconcilers/dormant-inbox.js +143 -0
  415. package/dist/daemon/reconcilers/storage-maintenance.d.ts +22 -0
  416. package/dist/daemon/reconcilers/storage-maintenance.js +213 -0
  417. package/dist/daemon/review/finish.js +2 -5
  418. package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +34 -53
  419. package/dist/pi-extensions/__tests__/canvas-recap.test.js +16 -113
  420. package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +72 -99
  421. package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.js +29 -12
  422. package/dist/pi-extensions/broker-local.d.ts +20 -0
  423. package/dist/pi-extensions/broker-local.js +89 -0
  424. package/dist/pi-extensions/canvas-context-intro.d.ts +3 -3
  425. package/dist/pi-extensions/canvas-context-intro.js +22 -11
  426. package/dist/pi-extensions/canvas-doc-substrate.js +17 -34
  427. package/dist/pi-extensions/canvas-goal-capture.js +7 -12
  428. package/dist/pi-extensions/canvas-inbox-watcher.js +124 -139
  429. package/dist/pi-extensions/canvas-passive-context.d.ts +3 -3
  430. package/dist/pi-extensions/canvas-passive-context.js +22 -18
  431. package/dist/pi-extensions/canvas-recap.d.ts +2 -2
  432. package/dist/pi-extensions/canvas-recap.js +48 -21
  433. package/dist/pi-extensions/canvas-review-boundary.js +10 -4
  434. package/dist/pi-extensions/canvas-stophook.d.ts +0 -5
  435. package/dist/pi-extensions/canvas-stophook.js +149 -431
  436. package/dist/pi-extensions/canvas-structured-output.js +52 -30
  437. package/dist/pi-extensions/envelope-merge.d.ts +13 -0
  438. package/dist/pi-extensions/envelope-merge.js +29 -0
  439. package/dist/shared/working-activity.d.ts +3 -2
  440. package/dist/shared/working-activity.js +3 -2
  441. package/dist/types.d.ts +6 -5
  442. package/dist/types.js +2 -2
  443. package/docs/compat/hearth-crtr-v1.md +4 -12
  444. package/docs/compat/hearth-crtr-v2.md +3 -11
  445. package/docs/compat/hearth-crtr-v3.md +4 -12
  446. package/docs/compat/hearth-crtr-v4.md +3 -11
  447. package/docs/compat/hearth-crtr-v5.md +3 -11
  448. package/docs/public-api.md +3 -7
  449. package/package.json +7 -49
  450. package/runtime.lock.json +2766 -14533
  451. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/claude-plugin-commands.test.ts +0 -49
  452. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/memory-slash-commands.test.ts +0 -194
  453. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/statusline.test.ts +0 -68
  454. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/frontmatter-rules/test.ts +0 -119
  455. package/dist/clients/attach/__tests__/attach-chrome-remote.test.js +0 -439
  456. package/dist/clients/attach/__tests__/attach-keybindings.test.js +0 -170
  457. package/dist/clients/attach/__tests__/crtr-output-coverage.test.js +0 -57
  458. package/dist/clients/attach/__tests__/editor-frame-title.test.js +0 -19
  459. package/dist/clients/attach/__tests__/input-controller-extension-command.test.js +0 -32
  460. package/dist/clients/attach/__tests__/markdown-headings.test.js +0 -35
  461. package/dist/clients/attach/__tests__/session-identity-refresh.test.js +0 -32
  462. package/dist/clients/conversation/conversation.d.ts +0 -65
  463. package/dist/clients/conversation/conversation.js +0 -318
  464. package/dist/clients/conversation/frames.d.ts +0 -30
  465. package/dist/clients/conversation/frames.js +0 -52
  466. package/dist/clients/conversation/region.d.ts +0 -51
  467. package/dist/clients/conversation/region.js +0 -265
  468. package/dist/clients/inbox/__tests__/inbox-controller.test.js +0 -247
  469. package/dist/clients/inbox/__tests__/mount-panel.test.js +0 -776
  470. package/dist/clients/inbox/review/__tests__/remap.test.js +0 -196
  471. package/dist/clients/inbox/review/columns.d.ts +0 -22
  472. package/dist/clients/inbox/review/columns.js +0 -40
  473. package/dist/clients/inbox/review/composition.d.ts +0 -60
  474. package/dist/clients/inbox/review/composition.js +0 -278
  475. package/dist/clients/inbox/review/document-region.d.ts +0 -120
  476. package/dist/clients/surfaces/region.d.ts +0 -16
  477. package/dist/clients/web/__tests__/push-engine.test.js +0 -158
  478. package/dist/clients/web/__tests__/push-registry.test.d.ts +0 -1
  479. package/dist/clients/web/__tests__/push-registry.test.js +0 -177
  480. package/dist/clients/web/dev-server.d.ts +0 -7
  481. package/dist/clients/web/dev-server.js +0 -46
  482. package/dist/clients/web/events.d.ts +0 -19
  483. package/dist/clients/web/events.js +0 -163
  484. package/dist/clients/web/push-engine.d.ts +0 -44
  485. package/dist/clients/web/push-engine.js +0 -125
  486. package/dist/clients/web/push-registry.d.ts +0 -85
  487. package/dist/clients/web/push-registry.js +0 -373
  488. package/dist/clients/web/server.d.ts +0 -19
  489. package/dist/clients/web/server.js +0 -661
  490. package/dist/clients/web/web-client/shared/protocol.d.ts +0 -214
  491. package/dist/clients/web/web-client/shared/protocol.js +0 -8
  492. package/dist/clients/web/web-cmd.d.ts +0 -2
  493. package/dist/clients/web/web-cmd.js +0 -141
  494. package/dist/commands/__tests__/api-canvas-source.test.d.ts +0 -1
  495. package/dist/commands/__tests__/api-canvas-source.test.js +0 -37
  496. package/dist/commands/__tests__/canvas-config.test.d.ts +0 -1
  497. package/dist/commands/__tests__/canvas-config.test.js +0 -107
  498. package/dist/commands/__tests__/node-no-kickoff-flag.test.d.ts +0 -1
  499. package/dist/commands/__tests__/node-no-kickoff-flag.test.js +0 -73
  500. package/dist/commands/__tests__/node-worktree-flag.test.d.ts +0 -1
  501. package/dist/commands/__tests__/node-worktree-flag.test.js +0 -49
  502. package/dist/commands/__tests__/search-contents.test.d.ts +0 -1
  503. package/dist/commands/__tests__/search-contents.test.js +0 -52
  504. package/dist/commands/memory/__tests__/lint.test.d.ts +0 -1
  505. package/dist/commands/memory/__tests__/lint.test.js +0 -15
  506. package/dist/commands/sys/__tests__/config-broker-thresholds.test.d.ts +0 -1
  507. package/dist/commands/sys/__tests__/config-broker-thresholds.test.js +0 -95
  508. package/dist/commands/sys/__tests__/config-keybindings.test.d.ts +0 -1
  509. package/dist/commands/sys/__tests__/config-keybindings.test.js +0 -55
  510. package/dist/commands/sys/__tests__/helpers/setup-runtime.d.ts +0 -5
  511. package/dist/commands/sys/__tests__/helpers/setup-runtime.js +0 -19
  512. package/dist/commands/sys/__tests__/setup-front-door.test.d.ts +0 -1
  513. package/dist/commands/sys/__tests__/setup-front-door.test.js +0 -102
  514. package/dist/commands/sys/__tests__/setup-models.test.d.ts +0 -1
  515. package/dist/commands/sys/__tests__/setup-models.test.js +0 -205
  516. package/dist/commands/sys/__tests__/setup-providers-viewport.test.d.ts +0 -1
  517. package/dist/commands/sys/__tests__/setup-providers-viewport.test.js +0 -155
  518. package/dist/commands/sys/__tests__/sync-deps.test.d.ts +0 -1
  519. package/dist/commands/sys/__tests__/sync-deps.test.js +0 -179
  520. package/dist/commands/sys/__tests__/sync-import.test.d.ts +0 -1
  521. package/dist/commands/sys/__tests__/sync-import.test.js +0 -315
  522. package/dist/core/__tests__/base-worker-prompt.test.d.ts +0 -1
  523. package/dist/core/__tests__/base-worker-prompt.test.js +0 -57
  524. package/dist/core/__tests__/command-plugins-surfaces.test.d.ts +0 -1
  525. package/dist/core/__tests__/command-plugins-surfaces.test.js +0 -359
  526. package/dist/core/__tests__/connection-reconnect-resume.test.d.ts +0 -1
  527. package/dist/core/__tests__/connection-reconnect-resume.test.js +0 -36
  528. package/dist/core/__tests__/finalization-migration.test.d.ts +0 -1
  529. package/dist/core/__tests__/finalization-migration.test.js +0 -38
  530. package/dist/core/__tests__/fixtures/extra-extension.d.ts +0 -1
  531. package/dist/core/__tests__/fixtures/extra-extension.js +0 -3
  532. package/dist/core/__tests__/fixtures/spawn-proof-target.test.d.ts +0 -1
  533. package/dist/core/__tests__/fixtures/spawn-proof-target.test.js +0 -15
  534. package/dist/core/__tests__/fork.test.d.ts +0 -1
  535. package/dist/core/__tests__/fork.test.js +0 -108
  536. package/dist/core/__tests__/full/broker-attach-limits.test.d.ts +0 -1
  537. package/dist/core/__tests__/full/broker-attach-limits.test.js +0 -147
  538. package/dist/core/__tests__/full/broker-deliver-ack.test.d.ts +0 -1
  539. package/dist/core/__tests__/full/broker-deliver-ack.test.js +0 -73
  540. package/dist/core/__tests__/full/broker-dialogs.test.d.ts +0 -1
  541. package/dist/core/__tests__/full/broker-dialogs.test.js +0 -180
  542. package/dist/core/__tests__/full/broker-display-snapshot.test.d.ts +0 -1
  543. package/dist/core/__tests__/full/broker-display-snapshot.test.js +0 -75
  544. package/dist/core/__tests__/full/broker-dormant-wake.test.d.ts +0 -1
  545. package/dist/core/__tests__/full/broker-dormant-wake.test.js +0 -130
  546. package/dist/core/__tests__/full/broker-model-changed-broadcast.test.d.ts +0 -1
  547. package/dist/core/__tests__/full/broker-model-changed-broadcast.test.js +0 -57
  548. package/dist/core/__tests__/full/broker-navigate-tree-rewelcome.test.d.ts +0 -1
  549. package/dist/core/__tests__/full/broker-navigate-tree-rewelcome.test.js +0 -80
  550. package/dist/core/__tests__/full/cascade-close.test.d.ts +0 -1
  551. package/dist/core/__tests__/full/cascade-close.test.js +0 -240
  552. package/dist/core/__tests__/full/detach-focus.test.d.ts +0 -1
  553. package/dist/core/__tests__/full/detach-focus.test.js +0 -126
  554. package/dist/core/__tests__/full/idle-release-settlement.test.d.ts +0 -1
  555. package/dist/core/__tests__/full/issue-146-yield-spawn-focus.test.d.ts +0 -1
  556. package/dist/core/__tests__/full/issue-146-yield-spawn-focus.test.js +0 -107
  557. package/dist/core/__tests__/full/park-clock-release.test.d.ts +0 -1
  558. package/dist/core/__tests__/full/park-clock-release.test.js +0 -56
  559. package/dist/core/__tests__/full/yield-message-transaction.test.d.ts +0 -1
  560. package/dist/core/__tests__/memory-index-render.test.d.ts +0 -1
  561. package/dist/core/__tests__/memory-index-render.test.js +0 -60
  562. package/dist/core/__tests__/model-routes.test.d.ts +0 -1
  563. package/dist/core/__tests__/model-routes.test.js +0 -41
  564. package/dist/core/__tests__/on-read-identity.test.d.ts +0 -1
  565. package/dist/core/__tests__/on-read-identity.test.js +0 -61
  566. package/dist/core/__tests__/phase4-review-migration.test.d.ts +0 -1
  567. package/dist/core/__tests__/phase4-review-migration.test.js +0 -100
  568. package/dist/core/__tests__/prune-to-limit.test.d.ts +0 -1
  569. package/dist/core/__tests__/prune-to-limit.test.js +0 -126
  570. package/dist/core/__tests__/reset.test.d.ts +0 -1
  571. package/dist/core/__tests__/reset.test.js +0 -69
  572. package/dist/core/__tests__/spawn-no-kickoff.test.d.ts +0 -1
  573. package/dist/core/__tests__/spawn-no-kickoff.test.js +0 -115
  574. package/dist/core/__tests__/steer-note.test.d.ts +0 -1
  575. package/dist/core/__tests__/steer-note.test.js +0 -41
  576. package/dist/core/__tests__/subcommand-tier.test.d.ts +0 -1
  577. package/dist/core/__tests__/subcommand-tier.test.js +0 -99
  578. package/dist/core/__tests__/subscription-delivery.test.js +0 -211
  579. package/dist/core/__tests__/test-runner-cheap-sharding.test.d.ts +0 -1
  580. package/dist/core/__tests__/test-runner-cheap-sharding.test.js +0 -97
  581. package/dist/core/__tests__/tmux-surface.test.js +0 -484
  582. package/dist/core/__tests__/wake-bearings.test.d.ts +0 -1
  583. package/dist/core/__tests__/wake-bearings.test.js +0 -102
  584. package/dist/core/canvas/__tests__/remote-event-stream.test.d.ts +0 -1
  585. package/dist/core/canvas/__tests__/remote-event-stream.test.js +0 -146
  586. package/dist/core/canvas/__tests__/source-resolve.test.d.ts +0 -1
  587. package/dist/core/canvas/__tests__/source-resolve.test.js +0 -77
  588. package/dist/core/canvas/browse/__tests__/model.test.d.ts +0 -1
  589. package/dist/core/canvas/browse/__tests__/model.test.js +0 -290
  590. package/dist/core/canvas/browse/__tests__/rebuild-coalescer.test.d.ts +0 -1
  591. package/dist/core/canvas/browse/__tests__/rebuild-coalescer.test.js +0 -134
  592. package/dist/core/canvas/browse/__tests__/render.test.d.ts +0 -1
  593. package/dist/core/canvas/browse/__tests__/render.test.js +0 -111
  594. package/dist/core/canvas/browse/rebuild-coalescer.d.ts +0 -7
  595. package/dist/core/canvas/browse/rebuild-coalescer.js +0 -61
  596. package/dist/core/canvas/remote-event-stream.d.ts +0 -24
  597. package/dist/core/canvas/remote-event-stream.js +0 -94
  598. package/dist/core/feed/__tests__/coalesce-human.test.d.ts +0 -1
  599. package/dist/core/feed/__tests__/coalesce-human.test.js +0 -36
  600. package/dist/core/feed/__tests__/empty-node-guard.test.d.ts +0 -1
  601. package/dist/core/feed/__tests__/empty-node-guard.test.js +0 -45
  602. package/dist/core/host-exports/__tests__/export-prunes-boot-skill.test.d.ts +0 -1
  603. package/dist/core/host-exports/__tests__/export-prunes-boot-skill.test.js +0 -84
  604. package/dist/core/human/__tests__/visible-paths.test.d.ts +0 -1
  605. package/dist/core/human/__tests__/visible-paths.test.js +0 -28
  606. package/dist/core/keybindings/__tests__/inbox-affordance.test.d.ts +0 -1
  607. package/dist/core/keybindings/__tests__/inbox-affordance.test.js +0 -38
  608. package/dist/core/review/__tests__/project.test.d.ts +0 -1
  609. package/dist/core/review/__tests__/project.test.js +0 -71
  610. package/dist/core/runtime/__tests__/command-expansion.test.d.ts +0 -1
  611. package/dist/core/runtime/__tests__/command-expansion.test.js +0 -25
  612. package/dist/core/runtime/__tests__/session-visibility.test.d.ts +0 -1
  613. package/dist/core/runtime/__tests__/session-visibility.test.js +0 -119
  614. package/dist/core/runtime/__tests__/spawn-at-given-id.test.d.ts +0 -1
  615. package/dist/core/runtime/__tests__/spawn-at-given-id.test.js +0 -34
  616. package/dist/core/runtime/tmux.js +0 -1314
  617. package/dist/daemon/api/__tests__/full/push-parity.test.d.ts +0 -1
  618. package/dist/daemon/api/__tests__/full/worktree-parity.test.d.ts +0 -1
  619. package/dist/daemon/api/__tests__/full/worktree-parity.test.js +0 -160
  620. package/dist/daemon/api/__tests__/inbox.test.d.ts +0 -1
  621. package/dist/daemon/api/__tests__/inbox.test.js +0 -489
  622. package/dist/web-client/apple-touch-icon.png +0 -0
  623. package/dist/web-client/assets/fragment-mono-latin-400-normal-BYwT3kSJ.woff +0 -0
  624. package/dist/web-client/assets/fragment-mono-latin-400-normal-yxdJ5AmL.woff2 +0 -0
  625. package/dist/web-client/assets/fragment-mono-latin-ext-400-normal-BbKYyvR9.woff2 +0 -0
  626. package/dist/web-client/assets/fragment-mono-latin-ext-400-normal-CT4YFKeK.woff +0 -0
  627. package/dist/web-client/assets/index-CCPaLeW7.css +0 -2
  628. package/dist/web-client/assets/index-kyOWsnZK.js +0 -86
  629. package/dist/web-client/assets/martian-mono-cyrillic-wght-normal-B84CD5C_.woff2 +0 -0
  630. package/dist/web-client/assets/martian-mono-latin-ext-wght-normal-DlL6xMw5.woff2 +0 -0
  631. package/dist/web-client/assets/martian-mono-latin-wght-normal-5W32yIyr.woff2 +0 -0
  632. package/dist/web-client/assets/workbox-window.prod.es5-Bd17z0YL.js +0 -2
  633. package/dist/web-client/icon-192.png +0 -0
  634. package/dist/web-client/icon-512.png +0 -0
  635. package/dist/web-client/icon-maskable-512.png +0 -0
  636. package/dist/web-client/index.html +0 -17
  637. package/dist/web-client/manifest.webmanifest +0 -1
  638. package/dist/web-client/sw.js +0 -1
  639. /package/dist/api/__tests__/{client.test.d.ts → serial/client.test.d.ts} +0 -0
  640. /package/dist/clients/inbox/__tests__/{inbox-controller.test.d.ts → serial/inbox-controller.test.d.ts} +0 -0
  641. /package/dist/clients/inbox/__tests__/{mount-panel.test.d.ts → serial/mount-panel.test.d.ts} +0 -0
  642. /package/dist/clients/{attach/__tests__/attach-chrome-remote.test.d.ts → inbox/review/__tests__/teardown-notice.test.d.ts} +0 -0
  643. /package/dist/{clients/attach/__tests__/attach-keybindings.test.d.ts → core/__tests__/broker-extension-canvas-db-boundary.test.d.ts} +0 -0
  644. /package/dist/{clients/attach/__tests__/crtr-output-coverage.test.d.ts → core/__tests__/seam/broker-attach-multiclient.test.d.ts} +0 -0
  645. /package/dist/core/__tests__/{full → seam}/broker-attach-stream.test.d.ts +0 -0
  646. /package/dist/core/__tests__/{full → seam}/broker-crash-teardown.test.d.ts +0 -0
  647. /package/dist/core/__tests__/{full → seam}/broker-pane-resolution.test.d.ts +0 -0
  648. /package/dist/core/__tests__/{full → seam}/broker-provider-retry.test.d.ts +0 -0
  649. /package/dist/core/__tests__/{full → seam}/broker-whip-interrupt.test.d.ts +0 -0
  650. /package/dist/{clients/attach/__tests__/editor-frame-title.test.d.ts → core/__tests__/seam/dormancy-release.test.d.ts} +0 -0
  651. /package/dist/{clients/attach/__tests__/input-controller-extension-command.test.d.ts → core/__tests__/seam/yield-refresh-transaction.test.d.ts} +0 -0
  652. /package/dist/core/__tests__/{broker-fork-seam.test.d.ts → serial/broker-fork-seam.test.d.ts} +0 -0
  653. /package/dist/core/__tests__/{broker-sdk-wiring.test.d.ts → serial/broker-sdk-wiring.test.d.ts} +0 -0
  654. /package/dist/core/__tests__/{broker-snapshot-history.test.d.ts → serial/broker-snapshot-history.test.d.ts} +0 -0
  655. /package/dist/core/__tests__/{command-plugins.test.d.ts → serial/command-plugins.test.d.ts} +0 -0
  656. /package/dist/core/__tests__/{deferred-no-wake.test.d.ts → serial/deferred-no-wake.test.d.ts} +0 -0
  657. /package/dist/core/__tests__/{flagship-lifecycle.test.d.ts → serial/flagship-lifecycle.test.d.ts} +0 -0
  658. /package/dist/core/__tests__/{host-teardown-process-group.test.d.ts → serial/host-teardown-process-group.test.d.ts} +0 -0
  659. /package/dist/core/__tests__/{human-deliver-e2e.test.d.ts → serial/human-deliver-e2e.test.d.ts} +0 -0
  660. /package/dist/core/__tests__/{live-mutation.test.d.ts → serial/live-mutation.test.d.ts} +0 -0
  661. /package/dist/core/__tests__/{refresh-stall-recycle.test.d.ts → serial/refresh-stall-recycle.test.d.ts} +0 -0
  662. /package/dist/core/__tests__/{revive.test.d.ts → serial/revive.test.d.ts} +0 -0
  663. /package/dist/core/__tests__/{spawn-root.test.d.ts → serial/spawn-root.test.d.ts} +0 -0
  664. /package/dist/core/__tests__/{subscription-delivery.test.d.ts → serial/subscription-delivery.test.d.ts} +0 -0
  665. /package/dist/core/__tests__/{tmux-surface.test.d.ts → serial/tmux-surface.test.d.ts} +0 -0
  666. /package/dist/core/__tests__/{worktree.test.d.ts → serial/worktree.test.d.ts} +0 -0
  667. /package/dist/{clients/attach/__tests__/markdown-headings.test.d.ts → core/__tests__/watchdog-abort-arms-retry.test.d.ts} +0 -0
  668. /package/dist/{clients/attach/__tests__/session-identity-refresh.test.d.ts → core/broker-client/__tests__/transport-socket.test.d.ts} +0 -0
  669. /package/dist/core/human/__tests__/{inbox-core.test.d.ts → serial/inbox-core.test.d.ts} +0 -0
  670. /package/dist/{clients/inbox/review/__tests__/remap.test.d.ts → daemon/api/__tests__/node-model-validation.test.d.ts} +0 -0
  671. /package/dist/{clients/surfaces/region.js → daemon/api/__tests__/review-terminal-conflict.test.d.ts} +0 -0
  672. /package/dist/daemon/api/__tests__/{full → seam}/api-server.test.d.ts +0 -0
  673. /package/dist/daemon/api/__tests__/{full → seam}/b10-attach-modelauth.test.d.ts +0 -0
  674. /package/dist/{clients/web/__tests__/push-engine.test.d.ts → daemon/api/__tests__/seam/leaf-api-parity.test.d.ts} +0 -0
@@ -1,9 +1,12 @@
1
1
  // canvas-structured-output.ts — dynamic `submit` tool for schema-shaped node results.
2
2
  //
3
- // Loaded into every canvas node. Inert unless nodes/<id>/output-schema.json exists.
3
+ // Loaded into every canvas node. Inert unless nodes/<id>/output-schema.json exists
4
+ // and is valid. If the request file is malformed, the tool is not registered — the
5
+ // stop-guard will reprompt the node with an explicit error about the invalid file.
4
6
  import { mkdirSync, writeFileSync } from 'node:fs';
5
7
  import { dirname } from 'node:path';
6
- import { FinalizationError, pushFinal, pushUpdate } from '../core/feed/feed.js';
8
+ import { emitEvent } from '../core/events/emit.js';
9
+ import { publishBrokerReport } from '../core/runtime/broker/daemon-ops.js';
7
10
  import { outputResultPath, readOutputRequest, removeOutputSchema, } from '../core/runtime/structured-output.js';
8
11
  function reportBody(resultPath, json) {
9
12
  return `Structured output submitted.\n\nResult path: ${resultPath}\n\n\`\`\`json\n${json}\n\`\`\`\n`;
@@ -84,14 +87,26 @@ export function registerCanvasStructuredOutput(pi) {
84
87
  let registeredKey = null;
85
88
  let active = false;
86
89
  const ensureSubmitTool = (activate) => {
87
- const request = readOutputRequest(nodeId);
88
- if (request === null) {
90
+ const state = readOutputRequest(nodeId);
91
+ // If no request exists, retire the tool if it was active.
92
+ if (state.state === 'absent') {
89
93
  if (active) {
90
94
  active = false;
91
95
  retireTool(pi);
92
96
  }
93
97
  return;
94
98
  }
99
+ // If the request is invalid, do not register or activate the tool.
100
+ // The stop-guard will reprompt with an explicit error message.
101
+ if (state.state === 'invalid') {
102
+ if (active) {
103
+ active = false;
104
+ retireTool(pi);
105
+ }
106
+ return;
107
+ }
108
+ // The request is valid; proceed with tool registration and activation.
109
+ const request = state.request;
95
110
  const key = JSON.stringify(request);
96
111
  if (registeredKey !== key) {
97
112
  pi.registerTool({
@@ -117,13 +132,19 @@ export function registerCanvasStructuredOutput(pi) {
117
132
  constrainedSampling: { type: 'json_schema', strict: 'prefer' },
118
133
  async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
119
134
  const current = readOutputRequest(nodeId);
120
- if (current === null) {
135
+ if (current.state === 'absent') {
121
136
  return {
122
137
  content: [{ type: 'text', text: 'No structured output is currently requested.' }],
123
138
  details: { submitted: false, reason: 'no_request' },
124
139
  };
125
140
  }
126
- if (JSON.stringify(current) !== key) {
141
+ if (current.state === 'invalid') {
142
+ return {
143
+ content: [{ type: 'text', text: `Structured-output request is invalid: ${current.error}` }],
144
+ details: { submitted: false, reason: 'invalid_request', error: current.error },
145
+ };
146
+ }
147
+ if (JSON.stringify(current.request) !== key) {
127
148
  registeredKey = null;
128
149
  ensureSubmitTool(true);
129
150
  return {
@@ -131,20 +152,31 @@ export function registerCanvasStructuredOutput(pi) {
131
152
  details: { submitted: false, reason: 'schema_replaced' },
132
153
  };
133
154
  }
134
- const result = omitStrictNulls(params, current.schema);
155
+ const result = omitStrictNulls(params, current.request.schema);
135
156
  const resultPath = outputResultPath(nodeId);
136
157
  const json = JSON.stringify(result, null, 2);
137
158
  mkdirSync(dirname(resultPath), { recursive: true });
138
159
  writeFileSync(resultPath, `${json}\n`, 'utf8');
139
160
  const body = reportBody(resultPath, json);
140
- if (current.mode === 'terminal') {
141
- try {
142
- await pushFinal(nodeId, body);
143
- }
144
- catch (err) {
145
- if (!(err instanceof FinalizationError && err.code === 'already_finalized'))
146
- throw err;
147
- }
161
+ try {
162
+ await publishBrokerReport(nodeId, {
163
+ tier: current.request.mode === 'terminal' ? 'final' : 'update',
164
+ body,
165
+ });
166
+ }
167
+ catch (error) {
168
+ // A rejected daemon operation leaves the schema active and does not
169
+ // terminate Pi, so the submitted result remains retryable.
170
+ emitEvent({
171
+ event: 'broker.daemon.operation.failed',
172
+ level: 'error',
173
+ node_id: nodeId,
174
+ error,
175
+ fields: { operation: 'structured_output_report' },
176
+ });
177
+ throw error;
178
+ }
179
+ if (current.request.mode === 'terminal') {
148
180
  removeOutputSchema(nodeId);
149
181
  active = false;
150
182
  retireTool(pi);
@@ -158,17 +190,16 @@ export function registerCanvasStructuredOutput(pi) {
158
190
  catch { /* ignore */ }
159
191
  return {
160
192
  content: [{ type: 'text', text: `Structured output submitted and finalized: ${resultPath}` }],
161
- details: { submitted: true, mode: current.mode, resultPath, result },
193
+ details: { submitted: true, mode: current.request.mode, resultPath, result },
162
194
  terminate: true,
163
195
  };
164
196
  }
165
- await pushUpdate(nodeId, body);
166
197
  removeOutputSchema(nodeId);
167
198
  active = false;
168
199
  retireTool(pi);
169
200
  return {
170
201
  content: [{ type: 'text', text: `Structured output submitted: ${resultPath}` }],
171
- details: { submitted: true, mode: current.mode, resultPath, result },
202
+ details: { submitted: true, mode: current.request.mode, resultPath, result },
172
203
  };
173
204
  },
174
205
  });
@@ -179,21 +210,12 @@ export function registerCanvasStructuredOutput(pi) {
179
210
  activateTool(pi);
180
211
  }
181
212
  };
182
- try {
183
- ensureSubmitTool(false);
184
- }
185
- catch { /* malformed files are enforced by the stop-guard */ }
213
+ ensureSubmitTool(false);
186
214
  pi.on('before_agent_start', () => {
187
- try {
188
- ensureSubmitTool(true);
189
- }
190
- catch { /* keep the node alive; stop-guard will reprompt */ }
215
+ ensureSubmitTool(true);
191
216
  });
192
217
  pi.on('agent_start', () => {
193
- try {
194
- ensureSubmitTool(true);
195
- }
196
- catch { /* keep the node alive; stop-guard will reprompt */ }
218
+ ensureSubmitTool(true);
197
219
  });
198
220
  }
199
221
  export default registerCanvasStructuredOutput;
@@ -0,0 +1,13 @@
1
+ type ContentBlock = {
2
+ type: string;
3
+ text?: string;
4
+ };
5
+ type TextBlock = {
6
+ type: 'text';
7
+ text: string;
8
+ };
9
+ /** Return the normalized contents of an auto-loaded-context envelope. */
10
+ export declare function autoLoadedContextInner(text: string): string | null;
11
+ /** Merge fresh items into the one auto-loaded-context envelope in a tool result. */
12
+ export declare function mergeAutoLoadedContext<T extends ContentBlock>(items: readonly string[], content: T[]): Array<T | TextBlock>;
13
+ export {};
@@ -0,0 +1,29 @@
1
+ const AUTO_CONTEXT_RE = /<auto-loaded-context(?:\s[^>]*)?>\n([\s\S]*?)\n<\/auto-loaded-context>/;
2
+ /** Return the normalized contents of an auto-loaded-context envelope. */
3
+ export function autoLoadedContextInner(text) {
4
+ const inner = text.match(AUTO_CONTEXT_RE)?.[1]?.trim();
5
+ return inner === undefined || inner === '' ? null : inner;
6
+ }
7
+ /** Merge fresh items into the one auto-loaded-context envelope in a tool result. */
8
+ export function mergeAutoLoadedContext(items, content) {
9
+ const existingText = content.map((block) => block.text ?? '').join('\n');
10
+ const fresh = items.map((item) => item.trim()).filter((item) => item !== '' && !existingText.includes(item));
11
+ if (fresh.length === 0)
12
+ return content;
13
+ const inner = fresh.join('\n');
14
+ const existingIdx = content.findIndex((block) => typeof block.text === 'string' && AUTO_CONTEXT_RE.test(block.text));
15
+ if (existingIdx === -1) {
16
+ return [{ type: 'text', text: `<auto-loaded-context>\n${inner}\n</auto-loaded-context>` }, ...content];
17
+ }
18
+ return content.map((block, idx) => {
19
+ if (idx !== existingIdx || typeof block.text !== 'string')
20
+ return block;
21
+ return {
22
+ ...block,
23
+ text: block.text.replace(AUTO_CONTEXT_RE, (_whole, current) => {
24
+ const existing = current.trim();
25
+ return `<auto-loaded-context>\n${inner}${existing === '' ? '' : `\n${existing}`}\n</auto-loaded-context>`;
26
+ }),
27
+ };
28
+ });
29
+ }
@@ -1,8 +1,9 @@
1
1
  export declare const DEFAULT_WORKING_GERUND = "working";
2
+ export declare const DEFAULT_WORKING_GERUNDS: readonly ["thinking", "planning", "checking", "working"];
2
3
  export declare const DEFAULT_WORKING_ACTIVITY = "Working...";
3
- /** Keep only usable configured labels; an absent, malformed, or empty list falls back to working. */
4
+ /** Keep only usable configured labels; malformed or empty lists fall back to working. */
4
5
  export declare function normalizeWorkingGerunds(value: unknown): string[];
5
6
  /** Format one configured gerund as the activity label shown by every viewer. */
6
7
  export declare function formatWorkingActivity(gerund: unknown): string;
7
- /** Pick one configured gerund for a newly-started agent turn. */
8
+ /** Pick one configured gerund when the broker receives a user message. */
8
9
  export declare function randomWorkingActivity(value: unknown, random?: () => number): string;
@@ -1,6 +1,7 @@
1
1
  export const DEFAULT_WORKING_GERUND = 'working';
2
+ export const DEFAULT_WORKING_GERUNDS = ['thinking', 'planning', 'checking', DEFAULT_WORKING_GERUND];
2
3
  export const DEFAULT_WORKING_ACTIVITY = 'Working...';
3
- /** Keep only usable configured labels; an absent, malformed, or empty list falls back to working. */
4
+ /** Keep only usable configured labels; malformed or empty lists fall back to working. */
4
5
  export function normalizeWorkingGerunds(value) {
5
6
  if (!Array.isArray(value))
6
7
  return [DEFAULT_WORKING_GERUND];
@@ -15,7 +16,7 @@ export function formatWorkingActivity(gerund) {
15
16
  const normalized = normalizeWorkingGerunds([gerund])[0] ?? DEFAULT_WORKING_GERUND;
16
17
  return `${normalized[0].toUpperCase()}${normalized.slice(1)}...`;
17
18
  }
18
- /** Pick one configured gerund for a newly-started agent turn. */
19
+ /** Pick one configured gerund when the broker receives a user message. */
19
20
  export function randomWorkingActivity(value, random = Math.random) {
20
21
  const gerunds = normalizeWorkingGerunds(value);
21
22
  const draw = random();
package/dist/types.d.ts CHANGED
@@ -166,8 +166,9 @@ export interface ScopeConfig {
166
166
  * node with no viewer attached is silent regardless. Default true. */
167
167
  completion_bell: boolean;
168
168
  /** Gerunds used for the live turn activity label. A new entry is selected at
169
- * random on each agent turn and rendered as, for example, `Thinking...`.
170
- * Missing, malformed, or empty lists fall back to `['working']`. */
169
+ * random for each received user message and rendered as, for example,
170
+ * `Thinking...`. Missing configuration uses the built-in rotation; malformed
171
+ * or empty lists fall back to `['working']`. */
171
172
  working_gerunds: string[];
172
173
  /** Play the whip header animation whenever the human sends a prompt, and once
173
174
  * when an automatically opened managed-child viewer starts. Default false. */
@@ -223,9 +224,9 @@ export interface ScopeConfig {
223
224
  * entries at the same scope precedence as the rest of `ScopeConfig`. */
224
225
  kinds: Record<string, KindConfig>;
225
226
  /** Named remote-canvas targets for `crtr surface attach to <id> --canvas
226
- * <name>`, `crtr node inspect list/show --canvas <name>`, and `crtr canvas
227
- * browse --canvas <name>` — registered/managed via `crtr canvas config
228
- * add/list/show/remove` and selected durably via `crtr canvas use`. Unset
227
+ * <name>` and `crtr node inspect list/show --canvas <name>` — registered/
228
+ * managed via `crtr canvas config add/list/show/remove` and selected durably
229
+ * via `crtr canvas use`. Unset
229
230
  * via `sys config set` — not in `TOP_LEVEL_KEYS`. */
230
231
  remoteCanvas: RemoteCanvasConfig;
231
232
  /** Extra env-var names/globs a scope explicitly admits across the broker
package/dist/types.js CHANGED
@@ -1,4 +1,4 @@
1
- import { DEFAULT_WORKING_GERUND } from './shared/working-activity.js';
1
+ import { DEFAULT_WORKING_GERUNDS } from './shared/working-activity.js';
2
2
  export const ExitCode = {
3
3
  SUCCESS: 0,
4
4
  GENERAL: 1,
@@ -76,7 +76,7 @@ export function defaultScopeConfig() {
76
76
  auto_open_child_viewers: true,
77
77
  brokerThresholds: { warning: 128, automaticReviveCap: 256 },
78
78
  completion_bell: true,
79
- working_gerunds: [DEFAULT_WORKING_GERUND],
79
+ working_gerunds: [...DEFAULT_WORKING_GERUNDS],
80
80
  whip_mode: false,
81
81
  whip_messages: [...DEFAULT_WHIP_MESSAGES],
82
82
  mouse_mode_default: 'tmux',
@@ -1,6 +1,6 @@
1
1
  # Hearth ↔ crtr runtime compatibility — v1 (retired)
2
2
 
3
- This is the historical v1 contract for an external product (originally: `@crouton-kit/hearth`) that pinned a crtr package version. It ended at the node-and-surface hard cut: current crtr removes `crtr node msg`, so do not run this document's v1 command examples against a current install. Migrate consumers to [v2](hearth-crtr-v2.md), which records the replacement contract. This file remains unchanged as the v1 snapshot rather than silently redefining v1 as v2.
3
+ This is the historical v1 contract for an external product (originally: `@crouton-kit/hearth`) that pinned a crtr package version. It ended at the node-and-surface hard cut: current crtr removes `crtr node msg`, so do not run this document's v1 command examples against a current install. Migrate consumers to [v2](hearth-crtr-v2.md), which records the replacement contract. The retired developer web surface is not part of this document's current compatibility promise.
4
4
 
5
5
  ## 1. Import contract
6
6
 
@@ -65,17 +65,9 @@ call; if a caller needs to know the target acted on the message, that is a
65
65
  separate, out-of-band observation (e.g. polling node status or waiting for
66
66
  the target to message back), not a guarantee `node msg` makes.
67
67
 
68
- ## 4. In-guest web port
69
-
70
- `crtr surface web serve --host 127.0.0.1 --port <PRIVATE>` starts crtr's
71
- unified web server (shell SPA, source/command bridge, SSE change lane, and
72
- the browser⇄broker relay) bound to loopback on a private port chosen by the
73
- guest. This is a **private, unauthenticated-by-default loopback surface** —
74
- binding a non-loopback host requires `--token`; a consumer that fronts this
75
- port (reverse-proxying non-model-auth or non-product traffic to it) is
76
- responsible for whatever auth gate sits in front of the public listener. crtr
77
- itself makes no claim about what proxies to this port or how; it only
78
- guarantees the port serves the crtr web UI when bound.
68
+ ## 4. Retired web surface
69
+
70
+ Current crtr provides no developer web server or in-guest web port. This historical v1 compatibility document does not promise either surface.
79
71
 
80
72
  ## 5. Broker `view.sock` — the `reload_auth` subset
81
73
 
@@ -64,17 +64,9 @@ call; if a caller needs to know the target acted on the message, that is a
64
64
  separate, out-of-band observation (e.g. polling node status or waiting for
65
65
  the target to message back), not a guarantee `node message send` makes.
66
66
 
67
- ## 4. In-guest web port
68
-
69
- `crtr surface web serve --host 127.0.0.1 --port <PRIVATE>` starts crtr's
70
- unified web server (shell SPA, source/command bridge, SSE change lane, and
71
- the browser⇄broker relay) bound to loopback on a private port chosen by the
72
- guest. This is a **private, unauthenticated-by-default loopback surface** —
73
- binding a non-loopback host requires `--token`; a consumer that fronts this
74
- port (reverse-proxying non-model-auth or non-product traffic to it) is
75
- responsible for whatever auth gate sits in front of the public listener. crtr
76
- itself makes no claim about what proxies to this port or how; it only
77
- guarantees the port serves the crtr web UI when bound.
67
+ ## 4. Retired web surface
68
+
69
+ Current crtr provides no developer web server or in-guest web port. This historical v2 compatibility document does not promise either surface.
78
70
 
79
71
  ## 5. Broker `view.sock` — the `reload_auth` subset
80
72
 
@@ -1,6 +1,6 @@
1
1
  # Hearth ↔ crtr runtime compatibility — v3 (retired)
2
2
 
3
- This is the historical v3 contract for an external product (originally: `@crouton-kit/hearth`) that pinned a crtr package version. It ended at the trigger→cron hard cut: current crtr removes the entire `node trigger` command family (`node trigger send`, `node trigger revive`, and every other trigger leaf) along with the `triggers` canvas table, so do not run this document's `node trigger` examples against a current install — they now fail with `unknown subcommand`. Migrate consumers to [v4](hearth-crtr-v4.md), which records the replacement contract built on `crtr cron`. This file remains unchanged as the v3 snapshot rather than silently redefining v3 as v4.
3
+ This is the historical v3 contract for an external product (originally: `@crouton-kit/hearth`) that pinned a crtr package version. It ended at the trigger→cron hard cut: current crtr removes the entire `node trigger` command family (`node trigger send`, `node trigger revive`, and every other trigger leaf) along with the `triggers` canvas table, so do not run this document's `node trigger` examples against a current install — they now fail with `unknown subcommand`. Migrate consumers to [v4](hearth-crtr-v4.md), which records the replacement contract built on `crtr cron`. The retired developer web surface is not part of this document's current compatibility promise.
4
4
 
5
5
  ## Status and migration from v2
6
6
 
@@ -64,17 +64,9 @@ call; if a caller needs to know the target acted on the message, that is a
64
64
  separate, out-of-band observation (e.g. polling node status or waiting for
65
65
  the target to message back), not a guarantee `node message send` makes.
66
66
 
67
- ## 4. In-guest web port
68
-
69
- `crtr surface web serve --host 127.0.0.1 --port <PRIVATE>` starts crtr's
70
- unified web server (shell SPA, source/command bridge, SSE change lane, and
71
- the browser⇄broker relay) bound to loopback on a private port chosen by the
72
- guest. This is a **private, unauthenticated-by-default loopback surface** —
73
- binding a non-loopback host requires `--token`; a consumer that fronts this
74
- port (reverse-proxying non-model-auth or non-product traffic to it) is
75
- responsible for whatever auth gate sits in front of the public listener. crtr
76
- itself makes no claim about what proxies to this port or how; it only
77
- guarantees the port serves the crtr web UI when bound.
67
+ ## 4. Retired web surface
68
+
69
+ Current crtr provides no developer web server or in-guest web port. This historical v3 compatibility document does not promise either surface.
78
70
 
79
71
  ## 5. Broker `view.sock` — the `reload_auth` subset
80
72
 
@@ -70,17 +70,9 @@ call; if a caller needs to know the target acted on the message, that is a
70
70
  separate, out-of-band observation (e.g. polling node status or waiting for
71
71
  the target to message back), not a guarantee `node message send` makes.
72
72
 
73
- ## 4. In-guest web port
74
-
75
- `crtr surface web serve --host 127.0.0.1 --port <PRIVATE>` starts crtr's
76
- unified web server (shell SPA, source/command bridge, SSE change lane, and
77
- the browser⇄broker relay) bound to loopback on a private port chosen by the
78
- guest. This is a **private, unauthenticated-by-default loopback surface** —
79
- binding a non-loopback host requires `--token`; a consumer that fronts this
80
- port (reverse-proxying non-model-auth or non-product traffic to it) is
81
- responsible for whatever auth gate sits in front of the public listener. crtr
82
- itself makes no claim about what proxies to this port or how; it only
83
- guarantees the port serves the crtr web UI when bound.
73
+ ## 4. Retired web surface
74
+
75
+ Current crtr provides no developer web server or in-guest web port. This historical v4 compatibility document does not promise either surface.
84
76
 
85
77
  ## 5. Broker `view.sock` — the `reload_auth` subset
86
78
 
@@ -68,17 +68,9 @@ call; if a caller needs to know the target acted on the message, that is a
68
68
  separate, out-of-band observation (e.g. polling node status or waiting for
69
69
  the target to message back), not a guarantee `node message send` makes.
70
70
 
71
- ## 4. In-guest web port
72
-
73
- `crtr surface web serve --host 127.0.0.1 --port <PRIVATE>` starts crtr's
74
- unified web server (shell SPA, source/command bridge, SSE change lane, and
75
- the browser⇄broker relay) bound to loopback on a private port chosen by the
76
- guest. This is a **private, unauthenticated-by-default loopback surface** —
77
- binding a non-loopback host requires `--token`; a consumer that fronts this
78
- port (reverse-proxying non-model-auth or non-product traffic to it) is
79
- responsible for whatever auth gate sits in front of the public listener. crtr
80
- itself makes no claim about what proxies to this port or how; it only
81
- guarantees the port serves the crtr web UI when bound.
71
+ ## 4. Retired web surface
72
+
73
+ Current crtr provides no developer web server or in-guest web port. This v5 compatibility contract does not promise either surface.
82
74
 
83
75
  ## 5. Broker `view.sock` — the `reload_auth` subset
84
76
 
@@ -54,10 +54,6 @@ comment-organized); this table is the map, not the inventory:
54
54
 
55
55
  ## What is NOT public
56
56
 
57
- - `startWebServer` / `RunningWebServer` (`src/clients/web/server.ts`) are
58
- **not exported** and are not part of the public API. A consumer that needs
59
- an HTTP front for guest/remote use cases builds its own process; it does
60
- not import crtr's web server.
61
57
  - Anything under `src/commands/`, `src/daemon/`, `src/core/canvas/*` (writer
62
58
  paths), or any file not reachable from one of the three barrels above.
63
59
  - Deep imports (`@north-light/crouter/dist/...`, `@north-light/crouter/src/...`)
@@ -68,9 +64,9 @@ comment-organized); this table is the map, not the inventory:
68
64
 
69
65
  A consumer that runs alongside crtr (a separate process, a separate repo)
70
66
  also has a CLI/socket/schema surface to depend on instead of an import.
71
- That contract — `crtr sys version`, `crtr node message send`, the in-guest web port,
72
- the broker `view.sock` `reload_auth` subset, and the canvas.db byte-shape —
73
- is documented separately and versioned: see `docs/compat/hearth-crtr-v5.md`.
67
+ That contract — `crtr sys version`, `crtr node message send`, the broker
68
+ `view.sock` `reload_auth` subset, and the canvas.db byte-shape — is documented
69
+ separately and versioned: see `docs/compat/hearth-crtr-v5.md`.
74
70
 
75
71
  ## Packaging
76
72
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@north-light/crouter",
3
- "version": "0.3.173",
3
+ "version": "0.3.175",
4
4
  "description": "crtr — agent runtime with memory, plugins, and marketplaces",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -60,7 +60,6 @@
60
60
  "files": [
61
61
  "dist",
62
62
  "bin",
63
- "!bin/__tests__",
64
63
  "docs",
65
64
  "scripts/postinstall.mjs",
66
65
  "scripts/patch-pi-tree-root-ordering.mjs",
@@ -73,8 +72,7 @@
73
72
  "build": "node scripts/build.mjs",
74
73
  "build:api": "tsc -p packages/crouter-api/tsconfig.json",
75
74
  "typecheck:pi-packages": "npx tsc -p src/builtin-pi-packages/pi-crtr-extensions/tsconfig.json",
76
- "test:build-output": "node scripts/test-runner.mjs build-output",
77
- "lint:web-px": "node scripts/lint-web-px.mjs",
75
+ "test:build-output": "node scripts/build-concurrency-test.mjs",
78
76
  "check:cli-no-canvas": "node scripts/check-cli-no-canvas.mjs",
79
77
  "postinstall": "node scripts/postinstall.mjs",
80
78
  "install-runtime": "node scripts/install-runtime.mjs",
@@ -83,12 +81,9 @@
83
81
  "dev": "tsx --conditions=crtr-src src/cli.ts",
84
82
  "link": "npm link",
85
83
  "prepublishOnly": "npm run build",
86
- "test": "node scripts/test-runner.mjs fast",
87
- "test:full": "node scripts/test-runner.mjs full",
88
- "test:full:cheap": "node scripts/test-runner.mjs cheap",
89
- "test:full:process": "node scripts/test-runner.mjs process",
90
- "test:full:live": "node scripts/test-runner.mjs live",
91
- "test:full:heavy": "node scripts/test-runner.mjs heavy"
84
+ "test": "node --conditions=crtr-src --import tsx/esm --test --test-concurrency=4 --test-timeout=10000 'src/**/__tests__/*.test.ts'",
85
+ "test:serial": "node --conditions=crtr-src --import tsx/esm --test --test-concurrency=1 --test-timeout=60000 'src/**/__tests__/serial/*.test.ts'",
86
+ "test:seam": "npm run build && node --test --test-concurrency=1 --test-timeout=180000 'dist/**/__tests__/seam/*.test.js'"
92
87
  },
93
88
  "overrides": {
94
89
  "@earendil-works/pi-ai": "0.83.0",
@@ -108,57 +103,20 @@
108
103
  "@earendil-works/pi-ai": "0.83.0",
109
104
  "@earendil-works/pi-coding-agent": "0.83.0",
110
105
  "@earendil-works/pi-tui": "0.83.0",
111
- "@fontsource-variable/fraunces": "^5.2.9",
112
- "@fontsource-variable/instrument-sans": "^5.2.8",
113
- "@fontsource-variable/martian-mono": "^5.2.7",
114
- "@fontsource/fragment-mono": "^5.2.8",
115
- "@tailwindcss/typography": "^0.5.20",
116
- "@tailwindcss/vite": "^4.3.2",
117
- "@tanstack/react-virtual": "^3.13.0",
118
- "@types/markdown-it": "^14.1.2",
119
- "@vitejs/plugin-react": "^6.0.3",
120
- "class-variance-authority": "^0.7.1",
121
- "clsx": "^2.1.1",
122
106
  "cron-parser": "^5.6.0",
123
- "dompurify": "^3.2.3",
124
- "highlight.js": "^11.11.1",
125
- "lucide-react": "^0.469.0",
126
- "markdown-it": "^14.1.0",
127
- "mermaid": "^11.16.0",
128
107
  "proper-lockfile": "4.1.2",
129
- "radix-ui": "^1.6.2",
130
- "react": "^19.2.7",
131
- "react-markdown": "^10.1.0",
132
- "react-dom": "^19.2.7",
133
- "react-router-dom": "^7.1.1",
134
- "rehype-highlight": "^7.0.2",
135
- "remark-gfm": "^4.0.1",
136
- "remark-parse": "^11.0.0",
137
108
  "string-width": "^7.0.0",
138
- "tailwind-merge": "^3.6.0",
139
- "tailwindcss": "^4.3.2",
140
109
  "tar": "^7.5.22",
141
- "tw-animate-css": "^1.4.0",
142
- "unified": "^11.0.5",
143
- "vite": "^8.1.3",
144
- "web-push": "^3.6.7",
145
110
  "ws": "^8.21.0",
146
111
  "yaml": "^2.9.0",
147
- "zod": "^4.3.6",
148
- "zustand": "^5.0.2"
112
+ "zod": "^4.3.6"
149
113
  },
150
114
  "devDependencies": {
151
115
  "@types/node": "^24.0.0",
152
116
  "@types/proper-lockfile": "^4.1.4",
153
- "@types/react": "^19.2.17",
154
- "@types/react-dom": "^19.2.3",
155
- "@types/web-push": "^3.6.4",
156
117
  "@types/ws": "^8.18.1",
157
118
  "esbuild": "^0.27.7",
158
- "jsdom": "^29.1.1",
159
- "remark-rehype": "^11.1.0",
160
119
  "tsx": "^4.0.0",
161
- "typescript": "^5.7.0",
162
- "vite-plugin-pwa": "^1.3.0"
120
+ "typescript": "^5.7.0"
163
121
  }
164
122
  }