@north-light/crouter 0.3.173 → 0.3.174

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 (673) 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/node/bash.d.ts +1 -0
  138. package/dist/commands/node/bash.js +198 -0
  139. package/dist/commands/node/create.d.ts +23 -0
  140. package/dist/commands/node/create.js +207 -0
  141. package/dist/commands/node/inspect.d.ts +2 -0
  142. package/dist/commands/node/inspect.js +302 -0
  143. package/dist/commands/node/lifecycle.d.ts +4 -0
  144. package/dist/commands/node/lifecycle.js +415 -0
  145. package/dist/commands/node/message.d.ts +1 -0
  146. package/dist/commands/node/message.js +164 -0
  147. package/dist/commands/node/pyramid.d.ts +2 -0
  148. package/dist/commands/node/pyramid.js +79 -0
  149. package/dist/commands/node/subscription.d.ts +1 -0
  150. package/dist/commands/node/subscription.js +82 -0
  151. package/dist/commands/node/wait.d.ts +1 -0
  152. package/dist/commands/node/wait.js +159 -0
  153. package/dist/commands/node-lifecycle-revive.js +10 -57
  154. package/dist/commands/node.d.ts +0 -42
  155. package/dist/commands/node.js +11 -2065
  156. package/dist/commands/search.js +1 -1
  157. package/dist/commands/surface/node/cycle.d.ts +1 -0
  158. package/dist/commands/surface/node/cycle.js +83 -0
  159. package/dist/commands/surface/node/focus.d.ts +1 -0
  160. package/dist/commands/surface/node/focus.js +67 -0
  161. package/dist/commands/surface/node/id.d.ts +1 -0
  162. package/dist/commands/surface/node/id.js +38 -0
  163. package/dist/commands/surface/node/pin.d.ts +1 -0
  164. package/dist/commands/surface/node/pin.js +42 -0
  165. package/dist/commands/surface/node/placement.d.ts +46 -0
  166. package/dist/commands/surface/node/placement.js +124 -0
  167. package/dist/commands/surface-node.js +4 -1
  168. package/dist/commands/surface-reload.js +1 -2
  169. package/dist/commands/surface-tmux-spread.js +1 -1
  170. package/dist/commands/surface.js +5 -20
  171. package/dist/commands/sys/__tests__/setup-core.test.js +18 -271
  172. package/dist/commands/sys/config.js +6 -6
  173. package/dist/commands/sys/logs.js +1 -1
  174. package/dist/commands/sys/panels/broker-limits-panel.d.ts +17 -0
  175. package/dist/commands/sys/panels/broker-limits-panel.js +104 -0
  176. package/dist/commands/sys/panels/dependencies-panel.d.ts +14 -0
  177. package/dist/commands/sys/panels/dependencies-panel.js +80 -0
  178. package/dist/commands/sys/panels/keybindings-panel.d.ts +56 -0
  179. package/dist/commands/sys/panels/keybindings-panel.js +703 -0
  180. package/dist/commands/sys/panels/keys-panel.d.ts +16 -0
  181. package/dist/commands/sys/panels/keys-panel.js +60 -0
  182. package/dist/commands/sys/panels/models-panel.d.ts +77 -0
  183. package/dist/commands/sys/panels/models-panel.js +647 -0
  184. package/dist/commands/sys/panels/panel.d.ts +45 -0
  185. package/dist/commands/sys/panels/panel.js +137 -0
  186. package/dist/commands/sys/panels/plugins-panel.d.ts +16 -0
  187. package/dist/commands/sys/panels/plugins-panel.js +80 -0
  188. package/dist/commands/sys/panels/prefs-panel.d.ts +21 -0
  189. package/dist/commands/sys/panels/prefs-panel.js +85 -0
  190. package/dist/commands/sys/panels/provider-panel.d.ts +62 -0
  191. package/dist/commands/sys/panels/provider-panel.js +538 -0
  192. package/dist/commands/sys/settings-shell.d.ts +55 -0
  193. package/dist/commands/sys/settings-shell.js +400 -0
  194. package/dist/commands/sys/settings.d.ts +2 -0
  195. package/dist/commands/sys/settings.js +31 -0
  196. package/dist/commands/sys/setup-core.d.ts +3 -33
  197. package/dist/commands/sys/setup-core.js +27 -78
  198. package/dist/commands/sys/setup-settings-runner.d.ts +24 -0
  199. package/dist/commands/sys/setup-settings-runner.js +63 -0
  200. package/dist/commands/sys/setup-wizard.d.ts +26 -125
  201. package/dist/commands/sys/setup-wizard.js +209 -2473
  202. package/dist/commands/sys/setup.js +5 -7
  203. package/dist/commands/sys.js +3 -2
  204. package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.js +50 -0
  205. package/dist/core/__tests__/broker-launch-candidates.test.js +20 -9
  206. package/dist/core/__tests__/broker-preflight.test.js +1 -1
  207. package/dist/core/__tests__/canvas-inbox-watcher-hold.test.js +108 -27
  208. package/dist/core/__tests__/canvas-inbox-watcher.test.js +14 -0
  209. package/dist/core/__tests__/canvas.test.js +2 -36
  210. package/dist/core/__tests__/close.test.js +14 -3
  211. package/dist/core/__tests__/context-intro.test.js +32 -143
  212. package/dist/core/__tests__/cron-broker-capacity.test.js +22 -3
  213. package/dist/core/__tests__/daemon-boot.test.js +2 -20
  214. package/dist/core/__tests__/daemon-wedge.test.js +1 -1
  215. package/dist/core/__tests__/dead-node-policy-table.test.js +1 -18
  216. package/dist/core/__tests__/fixtures/fake-engine.d.ts +1 -1
  217. package/dist/core/__tests__/fixtures/fake-engine.js +2 -2
  218. package/dist/core/__tests__/fixtures/fake-pi-host.js +2 -2
  219. package/dist/core/__tests__/focuses.test.js +4 -98
  220. package/dist/core/__tests__/helpers/broker-clients.d.ts +0 -3
  221. package/dist/core/__tests__/helpers/broker-clients.js +0 -14
  222. package/dist/core/__tests__/helpers/harness.d.ts +0 -8
  223. package/dist/core/__tests__/helpers/harness.js +7 -87
  224. package/dist/core/__tests__/helpers/viewer-panes.js +1 -1
  225. package/dist/core/__tests__/inline-memory-refs.test.js +5 -134
  226. package/dist/core/__tests__/kickoff.test.js +1 -1
  227. package/dist/core/__tests__/memory-resolver-precedence.test.js +29 -1
  228. package/dist/core/__tests__/migration.test.js +35 -48
  229. package/dist/core/__tests__/on-read-dedup-resume.test.js +22 -12
  230. package/dist/core/__tests__/passive-subscription.test.js +26 -49
  231. package/dist/core/__tests__/preview-registry-sync.test.js +1 -2
  232. package/dist/core/__tests__/prune.test.js +94 -1
  233. package/dist/core/__tests__/review-model-floor.test.js +0 -32
  234. package/dist/core/__tests__/seam/broker-attach-multiclient.test.js +255 -0
  235. package/dist/core/__tests__/{full → seam}/broker-attach-stream.test.js +39 -7
  236. package/dist/core/__tests__/{full → seam}/broker-crash-teardown.test.js +30 -29
  237. package/dist/core/__tests__/{full → seam}/broker-pane-resolution.test.js +54 -5
  238. package/dist/core/__tests__/{full → seam}/broker-provider-retry.test.js +134 -82
  239. package/dist/core/__tests__/{full → seam}/broker-whip-interrupt.test.js +15 -4
  240. package/dist/core/__tests__/{full/idle-release-settlement.test.js → seam/dormancy-release.test.js} +69 -17
  241. package/dist/core/__tests__/{full/yield-message-transaction.test.js → seam/yield-refresh-transaction.test.js} +31 -9
  242. package/dist/core/__tests__/secrets.test.js +1 -7
  243. package/dist/core/__tests__/{broker-fork-seam.test.js → serial/broker-fork-seam.test.js} +58 -7
  244. package/dist/core/__tests__/{broker-sdk-wiring.test.js → serial/broker-sdk-wiring.test.js} +18 -162
  245. package/dist/core/__tests__/{broker-snapshot-history.test.js → serial/broker-snapshot-history.test.js} +9 -9
  246. package/dist/core/__tests__/{command-plugins.test.js → serial/command-plugins.test.js} +105 -15
  247. package/dist/core/__tests__/{deferred-no-wake.test.js → serial/deferred-no-wake.test.js} +23 -20
  248. package/dist/core/__tests__/{flagship-lifecycle.test.js → serial/flagship-lifecycle.test.js} +7 -7
  249. package/dist/core/__tests__/{host-teardown-process-group.test.js → serial/host-teardown-process-group.test.js} +6 -6
  250. package/dist/core/__tests__/{human-deliver-e2e.test.js → serial/human-deliver-e2e.test.js} +12 -12
  251. package/dist/core/__tests__/{live-mutation.test.js → serial/live-mutation.test.js} +5 -5
  252. package/dist/core/__tests__/{refresh-stall-recycle.test.js → serial/refresh-stall-recycle.test.js} +5 -14
  253. package/dist/core/__tests__/{revive.test.js → serial/revive.test.js} +15 -100
  254. package/dist/core/__tests__/{spawn-root.test.js → serial/spawn-root.test.js} +32 -15
  255. package/dist/core/__tests__/serial/subscription-delivery.test.js +126 -0
  256. package/dist/core/__tests__/serial/tmux-surface.test.js +256 -0
  257. package/dist/core/__tests__/{worktree.test.js → serial/worktree.test.js} +15 -15
  258. package/dist/core/__tests__/session-model.test.js +0 -18
  259. package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +9 -0
  260. package/dist/core/__tests__/watchdog-abort-arms-retry.test.js +50 -0
  261. package/dist/core/broker-client/__tests__/transport-relay.test.js +15 -16
  262. package/dist/core/broker-client/__tests__/transport-socket.test.js +28 -0
  263. package/dist/core/broker-client/client.d.ts +2 -2
  264. package/dist/core/broker-client/client.js +4 -7
  265. package/dist/core/broker-client/transport-relay.d.ts +13 -19
  266. package/dist/core/broker-client/transport-relay.js +19 -34
  267. package/dist/core/broker-client/transport-socket.d.ts +2 -2
  268. package/dist/core/broker-client/transport-socket.js +9 -2
  269. package/dist/core/broker-client/transport.d.ts +7 -3
  270. package/dist/core/broker-client/transport.js +4 -4
  271. package/dist/core/canvas/__tests__/attention.test.js +1 -18
  272. package/dist/core/canvas/__tests__/remote-canvas-source.test.js +7 -64
  273. package/dist/core/canvas/__tests__/remote-transport.test.js +2 -3
  274. package/dist/core/canvas/__tests__/render-remote.test.js +7 -52
  275. package/dist/core/canvas/browse/app.d.ts +2 -17
  276. package/dist/core/canvas/browse/app.js +16 -88
  277. package/dist/core/canvas/browse/model.d.ts +0 -4
  278. package/dist/core/canvas/browse/model.js +1 -12
  279. package/dist/core/canvas/browse/render.js +6 -3
  280. package/dist/core/canvas/crons.d.ts +8 -5
  281. package/dist/core/canvas/crons.js +7 -6
  282. package/dist/core/canvas/extensions.d.ts +7 -3
  283. package/dist/core/canvas/extensions.js +16 -4
  284. package/dist/core/canvas/nav-model.d.ts +0 -4
  285. package/dist/core/canvas/nav-model.js +2 -14
  286. package/dist/core/canvas/node-order.d.ts +3 -0
  287. package/dist/core/canvas/node-order.js +12 -0
  288. package/dist/core/canvas/remote-canvas-source.d.ts +3 -6
  289. package/dist/core/canvas/remote-canvas-source.js +8 -15
  290. package/dist/core/command.js +11 -4
  291. package/dist/core/config.js +3 -1
  292. package/dist/core/events/envelope.js +1 -1
  293. package/dist/core/events/read.js +7 -21
  294. package/dist/core/events/source.d.ts +0 -2
  295. package/dist/core/events/source.js +0 -16
  296. package/dist/core/events/types.d.ts +1 -1
  297. package/dist/core/fault-classifier.d.ts +1 -1
  298. package/dist/core/feed/passive.d.ts +0 -11
  299. package/dist/core/feed/passive.js +1 -62
  300. package/dist/core/human/__tests__/{inbox-core.test.js → serial/inbox-core.test.js} +6 -6
  301. package/dist/core/keybindings/__tests__/resolve.test.js +1 -96
  302. package/dist/core/keybindings/background-bash.js +3 -4
  303. package/dist/core/keybindings/catalog.js +1 -1
  304. package/dist/core/memory/inline-ref-grammar.js +3 -3
  305. package/dist/core/memory-resolver.d.ts +11 -25
  306. package/dist/core/memory-resolver.js +51 -33
  307. package/dist/core/model-routes.d.ts +15 -0
  308. package/dist/core/model-routes.js +12 -0
  309. package/dist/core/pool-credential-store.js +1 -1
  310. package/dist/core/preview-registry.js +8 -9
  311. package/dist/core/profiles/__tests__/root-profile.test.js +4 -14
  312. package/dist/core/review/realize.d.ts +0 -13
  313. package/dist/core/review/realize.js +0 -40
  314. package/dist/core/review/types.d.ts +1 -1
  315. package/dist/core/runtime/__tests__/engine-route.test.js +2 -2
  316. package/dist/core/runtime/bearings.js +1 -11
  317. package/dist/core/runtime/broker/client-registry.d.ts +33 -0
  318. package/dist/core/runtime/broker/client-registry.js +164 -0
  319. package/dist/core/runtime/broker/daemon-ops.d.ts +19 -0
  320. package/dist/core/runtime/broker/daemon-ops.js +49 -0
  321. package/dist/core/runtime/broker/event-projection.d.ts +42 -0
  322. package/dist/core/runtime/broker/event-projection.js +178 -0
  323. package/dist/core/runtime/broker/fault-retry.d.ts +39 -0
  324. package/dist/core/runtime/broker/fault-retry.js +277 -0
  325. package/dist/core/runtime/broker/frame-dispatch.d.ts +238 -0
  326. package/dist/core/runtime/broker/frame-dispatch.js +1537 -0
  327. package/dist/core/runtime/broker/inbox.d.ts +22 -0
  328. package/dist/core/runtime/broker/inbox.js +167 -0
  329. package/dist/core/runtime/broker/passive.d.ts +16 -0
  330. package/dist/core/runtime/broker/passive.js +44 -0
  331. package/dist/core/runtime/broker/read-ops.d.ts +23 -0
  332. package/dist/core/runtime/broker/read-ops.js +150 -0
  333. package/dist/core/runtime/broker/rebind.d.ts +74 -0
  334. package/dist/core/runtime/broker/rebind.js +211 -0
  335. package/dist/core/runtime/broker/tool-groups.d.ts +39 -0
  336. package/dist/core/runtime/broker/tool-groups.js +244 -0
  337. package/dist/core/runtime/broker-extension-render.d.ts +11 -0
  338. package/dist/core/runtime/broker-extension-render.js +181 -0
  339. package/dist/core/runtime/broker-persona-guidance.d.ts +13 -0
  340. package/dist/core/runtime/broker-persona-guidance.js +58 -0
  341. package/dist/core/runtime/broker-protocol.d.ts +1 -1
  342. package/dist/core/runtime/broker-protocol.js +1 -1
  343. package/dist/core/runtime/broker.d.ts +5 -196
  344. package/dist/core/runtime/broker.js +276 -3059
  345. package/dist/core/runtime/canvas-extensions.js +11 -2
  346. package/dist/core/runtime/fault.js +1 -1
  347. package/dist/core/runtime/model-selection.d.ts +9 -0
  348. package/dist/core/runtime/model-selection.js +12 -0
  349. package/dist/core/runtime/model-swap.d.ts +3 -3
  350. package/dist/core/runtime/model-swap.js +33 -25
  351. package/dist/core/runtime/placement-tmux.d.ts +3 -14
  352. package/dist/core/runtime/placement-tmux.js +11 -80
  353. package/dist/core/runtime/placement.d.ts +4 -2
  354. package/dist/core/runtime/placement.js +7 -12
  355. package/dist/core/runtime/promote.d.ts +14 -1
  356. package/dist/core/runtime/promote.js +1 -1
  357. package/dist/core/runtime/reset.d.ts +1 -1
  358. package/dist/core/runtime/roadmap.js +1 -1
  359. package/dist/core/runtime/spawn.d.ts +8 -0
  360. package/dist/core/runtime/spawn.js +36 -6
  361. package/dist/core/runtime/stop-guard.d.ts +4 -3
  362. package/dist/core/runtime/stop-guard.js +36 -18
  363. package/dist/core/runtime/stop-signals.d.ts +4 -1
  364. package/dist/core/runtime/stream-watchdog.js +4 -5
  365. package/dist/core/runtime/structured-output.d.ts +15 -2
  366. package/dist/core/runtime/structured-output.js +35 -12
  367. package/dist/core/runtime/tmux-bindings.d.ts +25 -0
  368. package/dist/core/runtime/tmux-bindings.js +682 -0
  369. package/dist/core/runtime/tmux-chrome.d.ts +2 -1
  370. package/dist/core/runtime/tmux-chrome.js +3 -2
  371. package/dist/core/runtime/{tmux.d.ts → tmux-driver.d.ts} +18 -26
  372. package/dist/core/runtime/tmux-driver.js +598 -0
  373. package/dist/core/runtime/view-socket.d.ts +14 -0
  374. package/dist/core/runtime/view-socket.js +83 -0
  375. package/dist/core/session-model/session-state.d.ts +1 -2
  376. package/dist/core/session-model/session-state.js +5 -8
  377. package/dist/core/spawn.d.ts +1 -1
  378. package/dist/core/spawn.js +2 -2
  379. package/dist/core/substrate/gate.d.ts +1 -1
  380. package/dist/core/substrate/on-read-pure.d.ts +7 -0
  381. package/dist/core/substrate/on-read-pure.js +272 -0
  382. package/dist/core/termrender/termrender.js +32 -2
  383. package/dist/core/user-settings.d.ts +23 -1
  384. package/dist/core/user-settings.js +18 -1
  385. package/dist/daemon/api/__tests__/node-model-validation.test.js +134 -0
  386. package/dist/daemon/api/__tests__/review-terminal-conflict.test.js +98 -0
  387. package/dist/daemon/api/__tests__/{full → seam}/api-server.test.js +6 -48
  388. package/dist/daemon/api/__tests__/{full → seam}/b10-attach-modelauth.test.js +17 -44
  389. package/dist/daemon/api/__tests__/{full/push-parity.test.js → seam/leaf-api-parity.test.js} +61 -42
  390. package/dist/daemon/api/bridge.js +40 -81
  391. package/dist/daemon/api/handlers/broker-ops.d.ts +2 -0
  392. package/dist/daemon/api/handlers/broker-ops.js +383 -0
  393. package/dist/daemon/api/handlers/crons.js +9 -4
  394. package/dist/daemon/api/handlers/files.js +6 -7
  395. package/dist/daemon/api/handlers/inbox.js +2 -340
  396. package/dist/daemon/api/handlers/nodes.d.ts +10 -1
  397. package/dist/daemon/api/handlers/nodes.js +74 -39
  398. package/dist/daemon/api/handlers/review-comments.js +5 -1
  399. package/dist/daemon/api/handlers/reviews.js +0 -19
  400. package/dist/daemon/api/map.js +25 -4
  401. package/dist/daemon/api/router.js +2 -3
  402. package/dist/daemon/api/server.js +5 -7
  403. package/dist/daemon/cron-run.d.ts +4 -0
  404. package/dist/daemon/cron-run.js +30 -13
  405. package/dist/daemon/crtrd.d.ts +3 -58
  406. package/dist/daemon/crtrd.js +28 -1244
  407. package/dist/daemon/manage.js +0 -1
  408. package/dist/daemon/reconcilers/broker-supervision.d.ts +50 -0
  409. package/dist/daemon/reconcilers/broker-supervision.js +549 -0
  410. package/dist/daemon/reconcilers/cron-lane.d.ts +10 -0
  411. package/dist/daemon/reconcilers/cron-lane.js +32 -0
  412. package/dist/daemon/reconcilers/dormant-inbox.d.ts +18 -0
  413. package/dist/daemon/reconcilers/dormant-inbox.js +143 -0
  414. package/dist/daemon/reconcilers/storage-maintenance.d.ts +22 -0
  415. package/dist/daemon/reconcilers/storage-maintenance.js +213 -0
  416. package/dist/daemon/review/finish.js +2 -5
  417. package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +34 -53
  418. package/dist/pi-extensions/__tests__/canvas-recap.test.js +16 -113
  419. package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +72 -99
  420. package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.js +29 -12
  421. package/dist/pi-extensions/broker-local.d.ts +20 -0
  422. package/dist/pi-extensions/broker-local.js +89 -0
  423. package/dist/pi-extensions/canvas-context-intro.d.ts +3 -3
  424. package/dist/pi-extensions/canvas-context-intro.js +22 -11
  425. package/dist/pi-extensions/canvas-doc-substrate.js +17 -34
  426. package/dist/pi-extensions/canvas-goal-capture.js +7 -12
  427. package/dist/pi-extensions/canvas-inbox-watcher.js +124 -139
  428. package/dist/pi-extensions/canvas-passive-context.d.ts +3 -3
  429. package/dist/pi-extensions/canvas-passive-context.js +22 -18
  430. package/dist/pi-extensions/canvas-recap.d.ts +2 -2
  431. package/dist/pi-extensions/canvas-recap.js +48 -21
  432. package/dist/pi-extensions/canvas-review-boundary.js +10 -4
  433. package/dist/pi-extensions/canvas-stophook.d.ts +0 -5
  434. package/dist/pi-extensions/canvas-stophook.js +149 -431
  435. package/dist/pi-extensions/canvas-structured-output.js +52 -30
  436. package/dist/pi-extensions/envelope-merge.d.ts +13 -0
  437. package/dist/pi-extensions/envelope-merge.js +29 -0
  438. package/dist/shared/working-activity.d.ts +3 -2
  439. package/dist/shared/working-activity.js +3 -2
  440. package/dist/types.d.ts +6 -5
  441. package/dist/types.js +2 -2
  442. package/docs/compat/hearth-crtr-v1.md +4 -12
  443. package/docs/compat/hearth-crtr-v2.md +3 -11
  444. package/docs/compat/hearth-crtr-v3.md +4 -12
  445. package/docs/compat/hearth-crtr-v4.md +3 -11
  446. package/docs/compat/hearth-crtr-v5.md +3 -11
  447. package/docs/public-api.md +3 -7
  448. package/package.json +7 -49
  449. package/runtime.lock.json +2766 -14533
  450. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/claude-plugin-commands.test.ts +0 -49
  451. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/memory-slash-commands.test.ts +0 -194
  452. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/statusline.test.ts +0 -68
  453. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/frontmatter-rules/test.ts +0 -119
  454. package/dist/clients/attach/__tests__/attach-chrome-remote.test.js +0 -439
  455. package/dist/clients/attach/__tests__/attach-keybindings.test.js +0 -170
  456. package/dist/clients/attach/__tests__/crtr-output-coverage.test.js +0 -57
  457. package/dist/clients/attach/__tests__/editor-frame-title.test.js +0 -19
  458. package/dist/clients/attach/__tests__/input-controller-extension-command.test.js +0 -32
  459. package/dist/clients/attach/__tests__/markdown-headings.test.js +0 -35
  460. package/dist/clients/attach/__tests__/session-identity-refresh.test.js +0 -32
  461. package/dist/clients/conversation/conversation.d.ts +0 -65
  462. package/dist/clients/conversation/conversation.js +0 -318
  463. package/dist/clients/conversation/frames.d.ts +0 -30
  464. package/dist/clients/conversation/frames.js +0 -52
  465. package/dist/clients/conversation/region.d.ts +0 -51
  466. package/dist/clients/conversation/region.js +0 -265
  467. package/dist/clients/inbox/__tests__/inbox-controller.test.js +0 -247
  468. package/dist/clients/inbox/__tests__/mount-panel.test.js +0 -776
  469. package/dist/clients/inbox/review/__tests__/remap.test.js +0 -196
  470. package/dist/clients/inbox/review/columns.d.ts +0 -22
  471. package/dist/clients/inbox/review/columns.js +0 -40
  472. package/dist/clients/inbox/review/composition.d.ts +0 -60
  473. package/dist/clients/inbox/review/composition.js +0 -278
  474. package/dist/clients/inbox/review/document-region.d.ts +0 -120
  475. package/dist/clients/surfaces/region.d.ts +0 -16
  476. package/dist/clients/web/__tests__/push-engine.test.js +0 -158
  477. package/dist/clients/web/__tests__/push-registry.test.d.ts +0 -1
  478. package/dist/clients/web/__tests__/push-registry.test.js +0 -177
  479. package/dist/clients/web/dev-server.d.ts +0 -7
  480. package/dist/clients/web/dev-server.js +0 -46
  481. package/dist/clients/web/events.d.ts +0 -19
  482. package/dist/clients/web/events.js +0 -163
  483. package/dist/clients/web/push-engine.d.ts +0 -44
  484. package/dist/clients/web/push-engine.js +0 -125
  485. package/dist/clients/web/push-registry.d.ts +0 -85
  486. package/dist/clients/web/push-registry.js +0 -373
  487. package/dist/clients/web/server.d.ts +0 -19
  488. package/dist/clients/web/server.js +0 -661
  489. package/dist/clients/web/web-client/shared/protocol.d.ts +0 -214
  490. package/dist/clients/web/web-client/shared/protocol.js +0 -8
  491. package/dist/clients/web/web-cmd.d.ts +0 -2
  492. package/dist/clients/web/web-cmd.js +0 -141
  493. package/dist/commands/__tests__/api-canvas-source.test.d.ts +0 -1
  494. package/dist/commands/__tests__/api-canvas-source.test.js +0 -37
  495. package/dist/commands/__tests__/canvas-config.test.d.ts +0 -1
  496. package/dist/commands/__tests__/canvas-config.test.js +0 -107
  497. package/dist/commands/__tests__/node-no-kickoff-flag.test.d.ts +0 -1
  498. package/dist/commands/__tests__/node-no-kickoff-flag.test.js +0 -73
  499. package/dist/commands/__tests__/node-worktree-flag.test.d.ts +0 -1
  500. package/dist/commands/__tests__/node-worktree-flag.test.js +0 -49
  501. package/dist/commands/__tests__/search-contents.test.d.ts +0 -1
  502. package/dist/commands/__tests__/search-contents.test.js +0 -52
  503. package/dist/commands/memory/__tests__/lint.test.d.ts +0 -1
  504. package/dist/commands/memory/__tests__/lint.test.js +0 -15
  505. package/dist/commands/sys/__tests__/config-broker-thresholds.test.d.ts +0 -1
  506. package/dist/commands/sys/__tests__/config-broker-thresholds.test.js +0 -95
  507. package/dist/commands/sys/__tests__/config-keybindings.test.d.ts +0 -1
  508. package/dist/commands/sys/__tests__/config-keybindings.test.js +0 -55
  509. package/dist/commands/sys/__tests__/helpers/setup-runtime.d.ts +0 -5
  510. package/dist/commands/sys/__tests__/helpers/setup-runtime.js +0 -19
  511. package/dist/commands/sys/__tests__/setup-front-door.test.d.ts +0 -1
  512. package/dist/commands/sys/__tests__/setup-front-door.test.js +0 -102
  513. package/dist/commands/sys/__tests__/setup-models.test.d.ts +0 -1
  514. package/dist/commands/sys/__tests__/setup-models.test.js +0 -205
  515. package/dist/commands/sys/__tests__/setup-providers-viewport.test.d.ts +0 -1
  516. package/dist/commands/sys/__tests__/setup-providers-viewport.test.js +0 -155
  517. package/dist/commands/sys/__tests__/sync-deps.test.d.ts +0 -1
  518. package/dist/commands/sys/__tests__/sync-deps.test.js +0 -179
  519. package/dist/commands/sys/__tests__/sync-import.test.d.ts +0 -1
  520. package/dist/commands/sys/__tests__/sync-import.test.js +0 -315
  521. package/dist/core/__tests__/base-worker-prompt.test.d.ts +0 -1
  522. package/dist/core/__tests__/base-worker-prompt.test.js +0 -57
  523. package/dist/core/__tests__/command-plugins-surfaces.test.d.ts +0 -1
  524. package/dist/core/__tests__/command-plugins-surfaces.test.js +0 -359
  525. package/dist/core/__tests__/connection-reconnect-resume.test.d.ts +0 -1
  526. package/dist/core/__tests__/connection-reconnect-resume.test.js +0 -36
  527. package/dist/core/__tests__/finalization-migration.test.d.ts +0 -1
  528. package/dist/core/__tests__/finalization-migration.test.js +0 -38
  529. package/dist/core/__tests__/fixtures/extra-extension.d.ts +0 -1
  530. package/dist/core/__tests__/fixtures/extra-extension.js +0 -3
  531. package/dist/core/__tests__/fixtures/spawn-proof-target.test.d.ts +0 -1
  532. package/dist/core/__tests__/fixtures/spawn-proof-target.test.js +0 -15
  533. package/dist/core/__tests__/fork.test.d.ts +0 -1
  534. package/dist/core/__tests__/fork.test.js +0 -108
  535. package/dist/core/__tests__/full/broker-attach-limits.test.d.ts +0 -1
  536. package/dist/core/__tests__/full/broker-attach-limits.test.js +0 -147
  537. package/dist/core/__tests__/full/broker-deliver-ack.test.d.ts +0 -1
  538. package/dist/core/__tests__/full/broker-deliver-ack.test.js +0 -73
  539. package/dist/core/__tests__/full/broker-dialogs.test.d.ts +0 -1
  540. package/dist/core/__tests__/full/broker-dialogs.test.js +0 -180
  541. package/dist/core/__tests__/full/broker-display-snapshot.test.d.ts +0 -1
  542. package/dist/core/__tests__/full/broker-display-snapshot.test.js +0 -75
  543. package/dist/core/__tests__/full/broker-dormant-wake.test.d.ts +0 -1
  544. package/dist/core/__tests__/full/broker-dormant-wake.test.js +0 -130
  545. package/dist/core/__tests__/full/broker-model-changed-broadcast.test.d.ts +0 -1
  546. package/dist/core/__tests__/full/broker-model-changed-broadcast.test.js +0 -57
  547. package/dist/core/__tests__/full/broker-navigate-tree-rewelcome.test.d.ts +0 -1
  548. package/dist/core/__tests__/full/broker-navigate-tree-rewelcome.test.js +0 -80
  549. package/dist/core/__tests__/full/cascade-close.test.d.ts +0 -1
  550. package/dist/core/__tests__/full/cascade-close.test.js +0 -240
  551. package/dist/core/__tests__/full/detach-focus.test.d.ts +0 -1
  552. package/dist/core/__tests__/full/detach-focus.test.js +0 -126
  553. package/dist/core/__tests__/full/idle-release-settlement.test.d.ts +0 -1
  554. package/dist/core/__tests__/full/issue-146-yield-spawn-focus.test.d.ts +0 -1
  555. package/dist/core/__tests__/full/issue-146-yield-spawn-focus.test.js +0 -107
  556. package/dist/core/__tests__/full/park-clock-release.test.d.ts +0 -1
  557. package/dist/core/__tests__/full/park-clock-release.test.js +0 -56
  558. package/dist/core/__tests__/full/yield-message-transaction.test.d.ts +0 -1
  559. package/dist/core/__tests__/memory-index-render.test.d.ts +0 -1
  560. package/dist/core/__tests__/memory-index-render.test.js +0 -60
  561. package/dist/core/__tests__/model-routes.test.d.ts +0 -1
  562. package/dist/core/__tests__/model-routes.test.js +0 -41
  563. package/dist/core/__tests__/on-read-identity.test.d.ts +0 -1
  564. package/dist/core/__tests__/on-read-identity.test.js +0 -61
  565. package/dist/core/__tests__/phase4-review-migration.test.d.ts +0 -1
  566. package/dist/core/__tests__/phase4-review-migration.test.js +0 -100
  567. package/dist/core/__tests__/prune-to-limit.test.d.ts +0 -1
  568. package/dist/core/__tests__/prune-to-limit.test.js +0 -126
  569. package/dist/core/__tests__/reset.test.d.ts +0 -1
  570. package/dist/core/__tests__/reset.test.js +0 -69
  571. package/dist/core/__tests__/spawn-no-kickoff.test.d.ts +0 -1
  572. package/dist/core/__tests__/spawn-no-kickoff.test.js +0 -115
  573. package/dist/core/__tests__/steer-note.test.d.ts +0 -1
  574. package/dist/core/__tests__/steer-note.test.js +0 -41
  575. package/dist/core/__tests__/subcommand-tier.test.d.ts +0 -1
  576. package/dist/core/__tests__/subcommand-tier.test.js +0 -99
  577. package/dist/core/__tests__/subscription-delivery.test.js +0 -211
  578. package/dist/core/__tests__/test-runner-cheap-sharding.test.d.ts +0 -1
  579. package/dist/core/__tests__/test-runner-cheap-sharding.test.js +0 -97
  580. package/dist/core/__tests__/tmux-surface.test.js +0 -484
  581. package/dist/core/__tests__/wake-bearings.test.d.ts +0 -1
  582. package/dist/core/__tests__/wake-bearings.test.js +0 -102
  583. package/dist/core/canvas/__tests__/remote-event-stream.test.d.ts +0 -1
  584. package/dist/core/canvas/__tests__/remote-event-stream.test.js +0 -146
  585. package/dist/core/canvas/__tests__/source-resolve.test.d.ts +0 -1
  586. package/dist/core/canvas/__tests__/source-resolve.test.js +0 -77
  587. package/dist/core/canvas/browse/__tests__/model.test.d.ts +0 -1
  588. package/dist/core/canvas/browse/__tests__/model.test.js +0 -290
  589. package/dist/core/canvas/browse/__tests__/rebuild-coalescer.test.d.ts +0 -1
  590. package/dist/core/canvas/browse/__tests__/rebuild-coalescer.test.js +0 -134
  591. package/dist/core/canvas/browse/__tests__/render.test.d.ts +0 -1
  592. package/dist/core/canvas/browse/__tests__/render.test.js +0 -111
  593. package/dist/core/canvas/browse/rebuild-coalescer.d.ts +0 -7
  594. package/dist/core/canvas/browse/rebuild-coalescer.js +0 -61
  595. package/dist/core/canvas/remote-event-stream.d.ts +0 -24
  596. package/dist/core/canvas/remote-event-stream.js +0 -94
  597. package/dist/core/feed/__tests__/coalesce-human.test.d.ts +0 -1
  598. package/dist/core/feed/__tests__/coalesce-human.test.js +0 -36
  599. package/dist/core/feed/__tests__/empty-node-guard.test.d.ts +0 -1
  600. package/dist/core/feed/__tests__/empty-node-guard.test.js +0 -45
  601. package/dist/core/host-exports/__tests__/export-prunes-boot-skill.test.d.ts +0 -1
  602. package/dist/core/host-exports/__tests__/export-prunes-boot-skill.test.js +0 -84
  603. package/dist/core/human/__tests__/visible-paths.test.d.ts +0 -1
  604. package/dist/core/human/__tests__/visible-paths.test.js +0 -28
  605. package/dist/core/keybindings/__tests__/inbox-affordance.test.d.ts +0 -1
  606. package/dist/core/keybindings/__tests__/inbox-affordance.test.js +0 -38
  607. package/dist/core/review/__tests__/project.test.d.ts +0 -1
  608. package/dist/core/review/__tests__/project.test.js +0 -71
  609. package/dist/core/runtime/__tests__/command-expansion.test.d.ts +0 -1
  610. package/dist/core/runtime/__tests__/command-expansion.test.js +0 -25
  611. package/dist/core/runtime/__tests__/session-visibility.test.d.ts +0 -1
  612. package/dist/core/runtime/__tests__/session-visibility.test.js +0 -119
  613. package/dist/core/runtime/__tests__/spawn-at-given-id.test.d.ts +0 -1
  614. package/dist/core/runtime/__tests__/spawn-at-given-id.test.js +0 -34
  615. package/dist/core/runtime/tmux.js +0 -1314
  616. package/dist/daemon/api/__tests__/full/push-parity.test.d.ts +0 -1
  617. package/dist/daemon/api/__tests__/full/worktree-parity.test.d.ts +0 -1
  618. package/dist/daemon/api/__tests__/full/worktree-parity.test.js +0 -160
  619. package/dist/daemon/api/__tests__/inbox.test.d.ts +0 -1
  620. package/dist/daemon/api/__tests__/inbox.test.js +0 -489
  621. package/dist/web-client/apple-touch-icon.png +0 -0
  622. package/dist/web-client/assets/fragment-mono-latin-400-normal-BYwT3kSJ.woff +0 -0
  623. package/dist/web-client/assets/fragment-mono-latin-400-normal-yxdJ5AmL.woff2 +0 -0
  624. package/dist/web-client/assets/fragment-mono-latin-ext-400-normal-BbKYyvR9.woff2 +0 -0
  625. package/dist/web-client/assets/fragment-mono-latin-ext-400-normal-CT4YFKeK.woff +0 -0
  626. package/dist/web-client/assets/index-CCPaLeW7.css +0 -2
  627. package/dist/web-client/assets/index-kyOWsnZK.js +0 -86
  628. package/dist/web-client/assets/martian-mono-cyrillic-wght-normal-B84CD5C_.woff2 +0 -0
  629. package/dist/web-client/assets/martian-mono-latin-ext-wght-normal-DlL6xMw5.woff2 +0 -0
  630. package/dist/web-client/assets/martian-mono-latin-wght-normal-5W32yIyr.woff2 +0 -0
  631. package/dist/web-client/assets/workbox-window.prod.es5-Bd17z0YL.js +0 -2
  632. package/dist/web-client/icon-192.png +0 -0
  633. package/dist/web-client/icon-512.png +0 -0
  634. package/dist/web-client/icon-maskable-512.png +0 -0
  635. package/dist/web-client/index.html +0 -17
  636. package/dist/web-client/manifest.webmanifest +0 -1
  637. package/dist/web-client/sw.js +0 -1
  638. /package/dist/api/__tests__/{client.test.d.ts → serial/client.test.d.ts} +0 -0
  639. /package/dist/clients/inbox/__tests__/{inbox-controller.test.d.ts → serial/inbox-controller.test.d.ts} +0 -0
  640. /package/dist/clients/inbox/__tests__/{mount-panel.test.d.ts → serial/mount-panel.test.d.ts} +0 -0
  641. /package/dist/clients/{attach/__tests__/attach-chrome-remote.test.d.ts → inbox/review/__tests__/teardown-notice.test.d.ts} +0 -0
  642. /package/dist/{clients/attach/__tests__/attach-keybindings.test.d.ts → core/__tests__/broker-extension-canvas-db-boundary.test.d.ts} +0 -0
  643. /package/dist/{clients/attach/__tests__/crtr-output-coverage.test.d.ts → core/__tests__/seam/broker-attach-multiclient.test.d.ts} +0 -0
  644. /package/dist/core/__tests__/{full → seam}/broker-attach-stream.test.d.ts +0 -0
  645. /package/dist/core/__tests__/{full → seam}/broker-crash-teardown.test.d.ts +0 -0
  646. /package/dist/core/__tests__/{full → seam}/broker-pane-resolution.test.d.ts +0 -0
  647. /package/dist/core/__tests__/{full → seam}/broker-provider-retry.test.d.ts +0 -0
  648. /package/dist/core/__tests__/{full → seam}/broker-whip-interrupt.test.d.ts +0 -0
  649. /package/dist/{clients/attach/__tests__/editor-frame-title.test.d.ts → core/__tests__/seam/dormancy-release.test.d.ts} +0 -0
  650. /package/dist/{clients/attach/__tests__/input-controller-extension-command.test.d.ts → core/__tests__/seam/yield-refresh-transaction.test.d.ts} +0 -0
  651. /package/dist/core/__tests__/{broker-fork-seam.test.d.ts → serial/broker-fork-seam.test.d.ts} +0 -0
  652. /package/dist/core/__tests__/{broker-sdk-wiring.test.d.ts → serial/broker-sdk-wiring.test.d.ts} +0 -0
  653. /package/dist/core/__tests__/{broker-snapshot-history.test.d.ts → serial/broker-snapshot-history.test.d.ts} +0 -0
  654. /package/dist/core/__tests__/{command-plugins.test.d.ts → serial/command-plugins.test.d.ts} +0 -0
  655. /package/dist/core/__tests__/{deferred-no-wake.test.d.ts → serial/deferred-no-wake.test.d.ts} +0 -0
  656. /package/dist/core/__tests__/{flagship-lifecycle.test.d.ts → serial/flagship-lifecycle.test.d.ts} +0 -0
  657. /package/dist/core/__tests__/{host-teardown-process-group.test.d.ts → serial/host-teardown-process-group.test.d.ts} +0 -0
  658. /package/dist/core/__tests__/{human-deliver-e2e.test.d.ts → serial/human-deliver-e2e.test.d.ts} +0 -0
  659. /package/dist/core/__tests__/{live-mutation.test.d.ts → serial/live-mutation.test.d.ts} +0 -0
  660. /package/dist/core/__tests__/{refresh-stall-recycle.test.d.ts → serial/refresh-stall-recycle.test.d.ts} +0 -0
  661. /package/dist/core/__tests__/{revive.test.d.ts → serial/revive.test.d.ts} +0 -0
  662. /package/dist/core/__tests__/{spawn-root.test.d.ts → serial/spawn-root.test.d.ts} +0 -0
  663. /package/dist/core/__tests__/{subscription-delivery.test.d.ts → serial/subscription-delivery.test.d.ts} +0 -0
  664. /package/dist/core/__tests__/{tmux-surface.test.d.ts → serial/tmux-surface.test.d.ts} +0 -0
  665. /package/dist/core/__tests__/{worktree.test.d.ts → serial/worktree.test.d.ts} +0 -0
  666. /package/dist/{clients/attach/__tests__/markdown-headings.test.d.ts → core/__tests__/watchdog-abort-arms-retry.test.d.ts} +0 -0
  667. /package/dist/{clients/attach/__tests__/session-identity-refresh.test.d.ts → core/broker-client/__tests__/transport-socket.test.d.ts} +0 -0
  668. /package/dist/core/human/__tests__/{inbox-core.test.d.ts → serial/inbox-core.test.d.ts} +0 -0
  669. /package/dist/{clients/inbox/review/__tests__/remap.test.d.ts → daemon/api/__tests__/node-model-validation.test.d.ts} +0 -0
  670. /package/dist/{clients/surfaces/region.js → daemon/api/__tests__/review-terminal-conflict.test.d.ts} +0 -0
  671. /package/dist/daemon/api/__tests__/{full → seam}/api-server.test.d.ts +0 -0
  672. /package/dist/daemon/api/__tests__/{full → seam}/b10-attach-modelauth.test.d.ts +0 -0
  673. /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.174",
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
  }