@north-light/crouter 0.3.312 → 0.3.314

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 (497) hide show
  1. package/dist/api/client.d.ts +27 -30
  2. package/dist/api/client.js +80 -67
  3. package/dist/api/dto/broker-ops.d.ts +10 -20
  4. package/dist/api/dto/canvas.d.ts +1 -10
  5. package/dist/api/dto/health.d.ts +113 -0
  6. package/dist/api/dto/human-requests.d.ts +14 -3
  7. package/dist/api/dto/human.d.ts +2 -48
  8. package/dist/api/dto/human.js +3 -2
  9. package/dist/api/dto/inbox.d.ts +14 -0
  10. package/dist/api/dto/mail.d.ts +43 -0
  11. package/dist/api/dto/nodes.d.ts +11 -8
  12. package/dist/api/dto/recovery.d.ts +96 -0
  13. package/dist/api/dto/reviews.d.ts +2 -2
  14. package/dist/api/routes.d.ts +9 -6
  15. package/dist/api/routes.js +11 -11
  16. package/dist/build-root.d.ts +4 -0
  17. package/dist/build-root.js +11 -1
  18. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/integration/provider-rotation.test.ts +35 -47
  19. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.d.ts +1 -1
  20. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.js +12 -5
  21. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.ts +12 -5
  22. package/dist/cli.js +10 -1
  23. package/dist/clients/__tests__/helpers/human-daemon.d.ts +11 -0
  24. package/dist/clients/__tests__/helpers/human-daemon.js +60 -0
  25. package/dist/clients/attach/chrome/canvas-panels.js +1 -1
  26. package/dist/clients/attach/chrome/inbox-strip.d.ts +3 -3
  27. package/dist/clients/attach/chrome/inbox-strip.js +17 -9
  28. package/dist/clients/attach/chrome/ticket-panel.d.ts +2 -2
  29. package/dist/clients/attach/chrome/ticket-panel.js +77 -46
  30. package/dist/clients/attach/overlays/graph.js +6 -9
  31. package/dist/clients/attach/render/chat-view.d.ts +5 -4
  32. package/dist/clients/attach/render/chat-view.js +22 -13
  33. package/dist/clients/attach/render/page-block.d.ts +11 -7
  34. package/dist/clients/attach/render/page-block.js +64 -55
  35. package/dist/clients/attach/viewer.js +757 -746
  36. package/dist/clients/inbox/__tests__/integration/inbox-controller.test.js +56 -56
  37. package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.js +45 -32
  38. package/dist/clients/inbox/controller.d.ts +42 -14
  39. package/dist/clients/inbox/controller.js +240 -124
  40. package/dist/clients/inbox/dto-adapt.d.ts +28 -0
  41. package/dist/clients/inbox/dto-adapt.js +93 -0
  42. package/dist/clients/inbox/page-adapter.d.ts +5 -4
  43. package/dist/clients/inbox/page-adapter.js +12 -12
  44. package/dist/clients/inbox/resolve.d.ts +10 -5
  45. package/dist/clients/inbox/resolve.js +13 -12
  46. package/dist/clients/inbox/review/review-client.d.ts +0 -1
  47. package/dist/clients/inbox/review/review-client.js +0 -4
  48. package/dist/clients/inbox/review-adapter.d.ts +2 -1
  49. package/dist/clients/inbox/review-adapter.js +3 -5
  50. package/dist/clients/inbox/surface.d.ts +2 -2
  51. package/dist/clients/inbox/surface.js +19 -8
  52. package/dist/clients/inbox/tui.d.ts +3 -3
  53. package/dist/commands/__tests__/human.test.js +31 -15
  54. package/dist/commands/__tests__/integration/dashboard-snapshot.test.js +36 -11
  55. package/dist/commands/{sys/__tests__ → __tests__/integration}/migrate.test.js +142 -36
  56. package/dist/commands/__tests__/revive-now-gate.test.js +2 -0
  57. package/dist/commands/api-client.d.ts +5 -4
  58. package/dist/commands/api-client.js +13 -7
  59. package/dist/commands/canvas-history/shared.js +1 -1
  60. package/dist/commands/canvas-history.js +1 -1
  61. package/dist/commands/canvas-roster.js +1 -1
  62. package/dist/commands/canvas.js +1 -2
  63. package/dist/commands/human/feedback.js +20 -17
  64. package/dist/commands/human/prompts.js +45 -36
  65. package/dist/commands/human/queue.js +73 -123
  66. package/dist/commands/human/review.js +6 -16
  67. package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.js +2 -0
  68. package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.js +2 -0
  69. package/dist/commands/memory/__tests__/repository-root-lint.test.js +2 -0
  70. package/dist/commands/node-inspect-artifacts.js +1 -1
  71. package/dist/commands/node-lifecycle-revive.d.ts +2 -2
  72. package/dist/commands/node-lifecycle-revive.js +9 -19
  73. package/dist/commands/pkg/plugin-manage.js +0 -1
  74. package/dist/commands/profile/show.js +4 -12
  75. package/dist/commands/surface-tmux-spread.js +1 -5
  76. package/dist/commands/sys/__tests__/config-model-ladders.test.js +23 -30
  77. package/dist/commands/sys/__tests__/sync-project-guidance.test.js +37 -11
  78. package/dist/commands/sys/branch.d.ts +2 -0
  79. package/dist/commands/sys/branch.js +19 -0
  80. package/dist/commands/sys/config.js +106 -33
  81. package/dist/commands/sys/daemon.d.ts +2 -0
  82. package/dist/commands/sys/daemon.js +130 -7
  83. package/dist/commands/sys/doctor.js +5 -15
  84. package/dist/commands/sys/migrate.js +21 -92
  85. package/dist/commands/sys/setup-settings-runner.js +4 -2
  86. package/dist/commands/sys.js +2 -15
  87. package/dist/core/__tests__/boot-fault-attempt.test.js +23 -1
  88. package/dist/core/__tests__/boot.test.js +32 -25
  89. package/dist/core/__tests__/broker-launch-candidates.test.js +49 -0
  90. package/dist/core/__tests__/canvas-inbox-watcher-hold.test.js +149 -176
  91. package/dist/core/__tests__/canvas-inbox-watcher-naming.test.js +59 -10
  92. package/dist/core/__tests__/canvas-inbox-watcher.test.js +76 -20
  93. package/dist/core/__tests__/canvas.test.js +18 -47
  94. package/dist/core/__tests__/child-death-wake.test.js +29 -7
  95. package/dist/core/__tests__/cli-help-contract.test.js +2 -0
  96. package/dist/core/__tests__/close.test.js +29 -10
  97. package/dist/core/__tests__/collectible.test.js +2 -1
  98. package/dist/core/__tests__/config-change-delta.test.js +2 -0
  99. package/dist/core/__tests__/context-intro.test.js +13 -1
  100. package/dist/core/__tests__/cron-armed-context-failure.test.js +17 -12
  101. package/dist/core/__tests__/cron-held-settlement.test.js +21 -3
  102. package/dist/core/__tests__/cron-node-sink-parked-root.test.js +29 -10
  103. package/dist/core/__tests__/cron-self-cancel-delivery.test.js +14 -2
  104. package/dist/core/__tests__/cron-timeout-descendants.test.js +13 -1
  105. package/dist/core/__tests__/daemon-boot.test.js +51 -14
  106. package/dist/core/__tests__/fixtures/fake-engine.d.ts +1 -1
  107. package/dist/core/__tests__/fixtures/fake-engine.js +8 -3
  108. package/dist/core/__tests__/focuses.test.js +10 -5
  109. package/dist/core/__tests__/helpers/harness.js +50 -18
  110. package/dist/core/__tests__/history-inbox.test.js +12 -16
  111. package/dist/core/__tests__/human-action-delivery.test.js +48 -28
  112. package/dist/core/__tests__/human-actions.test.js +7 -3
  113. package/dist/core/__tests__/inline-memory-refs.test.js +7 -2
  114. package/dist/core/__tests__/integration/broker-fork-seam.test.js +37 -10
  115. package/dist/core/__tests__/integration/broker-sdk-wiring.test.js +42 -0
  116. package/dist/core/__tests__/integration/broker-snapshot-history.test.js +42 -29
  117. package/dist/core/__tests__/integration/broker-wedge-supervision.test.js +36 -35
  118. package/dist/core/__tests__/integration/command-plugins.test.js +15 -6
  119. package/dist/core/__tests__/integration/deferred-no-wake.test.js +113 -92
  120. package/dist/core/__tests__/integration/fresh-home-commands.test.js +49 -0
  121. package/dist/core/__tests__/integration/host-teardown-process-group.test.js +9 -5
  122. package/dist/core/__tests__/integration/lifecycle-hooks.test.js +16 -3
  123. package/dist/core/__tests__/integration/plugin-revalidate.test.js +4 -0
  124. package/dist/core/__tests__/integration/profile-pause.test.js +4 -4
  125. package/dist/core/__tests__/integration/refresh-stall-recycle.test.js +9 -12
  126. package/dist/core/__tests__/integration/revive.test.js +67 -21
  127. package/dist/core/__tests__/integration/spawn-root.test.js +51 -8
  128. package/dist/core/__tests__/integration/subscription-delivery.test.js +33 -21
  129. package/dist/core/__tests__/integration/worktree-land.test.js +5 -2
  130. package/dist/core/__tests__/integration/worktree-reap.test.js +15 -1
  131. package/dist/core/__tests__/kickoff.test.js +36 -39
  132. package/dist/core/__tests__/lifecycle-terminal-reasons.test.js +2 -1
  133. package/dist/core/__tests__/lifecycle.test.js +2 -1
  134. package/dist/core/__tests__/live-lifecycle-prompt.test.js +13 -1
  135. package/dist/core/__tests__/memory-resolver-precedence.test.js +2 -0
  136. package/dist/core/__tests__/migration.test.js +145 -31
  137. package/dist/core/__tests__/model-pin-durability.test.js +4 -1
  138. package/dist/core/__tests__/model-routes-config.test.js +13 -5
  139. package/dist/core/__tests__/node-outcome.test.js +93 -26
  140. package/dist/core/__tests__/on-read-crouter-home-fence.test.js +2 -1
  141. package/dist/core/__tests__/on-read-dedup-resume.test.js +2 -1
  142. package/dist/core/__tests__/on-read-nested-store.test.js +2 -1
  143. package/dist/core/__tests__/passive-subscription.test.js +50 -157
  144. package/dist/core/__tests__/plugin-kinds.test.js +6 -4
  145. package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.js +6 -1
  146. package/dist/core/__tests__/plugin-page-components.test.js +6 -4
  147. package/dist/core/__tests__/preview-registry-sync.test.js +2 -0
  148. package/dist/core/__tests__/profile-project-memory-delivery.test.js +4 -1
  149. package/dist/core/__tests__/prune.test.js +11 -5
  150. package/dist/core/__tests__/push-final-guard.test.js +14 -7
  151. package/dist/core/__tests__/relaunch-root.test.js +30 -2
  152. package/dist/core/__tests__/remote-canvas-target.test.js +7 -1
  153. package/dist/core/__tests__/repository-root-identity.test.js +4 -0
  154. package/dist/core/__tests__/review-model-floor.test.js +6 -3
  155. package/dist/core/__tests__/revive-all.test.js +13 -3
  156. package/dist/core/__tests__/revive-capacity.test.js +26 -4
  157. package/dist/core/__tests__/revive-parked-fresh.test.js +31 -8
  158. package/dist/core/__tests__/seam/broker-attach-stream.test.js +1 -1
  159. package/dist/core/__tests__/seam/broker-cap-freeze.test.js +4 -3
  160. package/dist/core/__tests__/seam/broker-crash-teardown.test.js +11 -14
  161. package/dist/core/__tests__/seam/broker-provider-retry.test.js +85 -71
  162. package/dist/core/__tests__/seam/dormancy-release.test.js +33 -19
  163. package/dist/core/__tests__/seam/held-deferred-human-prompt.test.js +7 -5
  164. package/dist/core/__tests__/seam/inbox-reference-guidance.test.js +20 -6
  165. package/dist/core/__tests__/seam/node-outcome-delivery.test.js +27 -3
  166. package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +2 -1
  167. package/dist/core/__tests__/stop-guard.test.js +2 -1
  168. package/dist/core/__tests__/subscription-pool-credential-guard.test.js +4 -3
  169. package/dist/core/__tests__/warm-claim-preference-snapshot.test.js +18 -4
  170. package/dist/core/__tests__/yield-ensures-daemon.test.js +2 -1
  171. package/dist/core/bootstrap.js +2 -0
  172. package/dist/core/broker-client/__tests__/transport-socket.test.js +51 -6
  173. package/dist/core/broker-client/transport-socket.d.ts +1 -0
  174. package/dist/core/broker-client/transport-socket.js +13 -5
  175. package/dist/core/canvas/__tests__/attention.test.js +29 -35
  176. package/dist/core/canvas/__tests__/history-transcript.test.js +6 -6
  177. package/dist/core/canvas/__tests__/render-remote.test.js +25 -9
  178. package/dist/core/canvas/attention.d.ts +2 -5
  179. package/dist/core/canvas/attention.js +15 -64
  180. package/dist/core/canvas/boot.d.ts +6 -7
  181. package/dist/core/canvas/boot.js +5 -9
  182. package/dist/core/canvas/canvas.d.ts +13 -109
  183. package/dist/core/canvas/canvas.js +140 -401
  184. package/dist/core/canvas/crons.d.ts +2 -0
  185. package/dist/core/canvas/crons.js +16 -15
  186. package/dist/core/canvas/daemon-owner.js +10 -0
  187. package/dist/core/canvas/db.d.ts +2 -2
  188. package/dist/core/canvas/db.js +2 -18
  189. package/dist/core/canvas/deliveries.d.ts +104 -0
  190. package/dist/core/canvas/deliveries.js +354 -0
  191. package/dist/core/canvas/executions.d.ts +29 -0
  192. package/dist/core/canvas/executions.js +68 -0
  193. package/dist/core/canvas/history.js +35 -35
  194. package/dist/core/canvas/index.d.ts +3 -1
  195. package/dist/core/canvas/index.js +3 -1
  196. package/dist/core/canvas/migrations.js +20 -12
  197. package/dist/core/canvas/nav-model.js +1 -3
  198. package/dist/core/canvas/nav-render.d.ts +4 -4
  199. package/dist/core/canvas/nav-render.js +11 -21
  200. package/dist/core/canvas/node-sql-migration.d.ts +3 -0
  201. package/dist/core/canvas/node-sql-migration.js +261 -0
  202. package/dist/core/canvas/paths.d.ts +2 -16
  203. package/dist/core/canvas/paths.js +2 -31
  204. package/dist/core/canvas/recovery.d.ts +76 -0
  205. package/dist/core/canvas/recovery.js +588 -0
  206. package/dist/core/canvas/remote-canvas-source.js +4 -0
  207. package/dist/core/canvas/render-source.d.ts +16 -27
  208. package/dist/core/canvas/render-source.js +16 -45
  209. package/dist/core/canvas/sessions.d.ts +33 -0
  210. package/dist/core/canvas/sessions.js +78 -0
  211. package/dist/core/canvas/types.d.ts +33 -33
  212. package/dist/core/canvas/types.js +2 -5
  213. package/dist/core/canvas/waits.d.ts +18 -0
  214. package/dist/core/canvas/waits.js +70 -0
  215. package/dist/core/canvas/worktrees.d.ts +40 -0
  216. package/dist/core/canvas/worktrees.js +93 -0
  217. package/dist/core/command.js +11 -0
  218. package/dist/core/config.d.ts +17 -12
  219. package/dist/core/config.js +106 -155
  220. package/dist/core/feed/__tests__/inbox-migrate.test.js +27 -31
  221. package/dist/core/feed/feed.d.ts +0 -6
  222. package/dist/core/feed/feed.js +68 -56
  223. package/dist/core/feed/inbox.d.ts +7 -81
  224. package/dist/core/feed/inbox.js +46 -378
  225. package/dist/core/feed/messages.d.ts +58 -0
  226. package/dist/core/feed/messages.js +217 -0
  227. package/dist/core/fs-utils.d.ts +4 -0
  228. package/dist/core/fs-utils.js +21 -1
  229. package/dist/core/human/answer.d.ts +1 -1
  230. package/dist/core/human/answer.js +1 -1
  231. package/dist/core/human/claim.d.ts +1 -1
  232. package/dist/core/human/claim.js +2 -4
  233. package/dist/core/human/component-docs.js +1 -1
  234. package/dist/core/human/feedback-companion.js +3 -2
  235. package/dist/core/human/feedback.d.ts +5 -8
  236. package/dist/core/human/feedback.js +57 -85
  237. package/dist/core/human/page-authoring.d.ts +30 -0
  238. package/dist/core/human/page-authoring.js +19 -0
  239. package/dist/core/human/requests.d.ts +136 -0
  240. package/dist/core/human/requests.js +515 -0
  241. package/dist/core/human/root.d.ts +0 -7
  242. package/dist/core/human/root.js +0 -17
  243. package/dist/core/human/scan.d.ts +2 -7
  244. package/dist/core/human/scan.js +48 -132
  245. package/dist/core/human/summary.d.ts +1 -1
  246. package/dist/core/human/summary.js +1 -1
  247. package/dist/core/human/tickets.d.ts +23 -83
  248. package/dist/core/human/tickets.js +92 -243
  249. package/dist/core/human/types.d.ts +5 -1
  250. package/dist/core/installed-plugins.js +8 -3
  251. package/dist/core/keybindings/__tests__/resolve.test.js +19 -17
  252. package/dist/core/locked-file.d.ts +6 -3
  253. package/dist/core/locked-file.js +36 -9
  254. package/dist/core/memory/extensions.js +2 -0
  255. package/dist/core/preview-registry.js +0 -1
  256. package/dist/core/profiles/__tests__/env-store.test.js +2 -0
  257. package/dist/core/profiles/default-binding.d.ts +0 -4
  258. package/dist/core/profiles/default-binding.js +12 -58
  259. package/dist/core/profiles/env-store.js +8 -3
  260. package/dist/core/profiles/manifest.d.ts +2 -37
  261. package/dist/core/profiles/manifest.js +35 -161
  262. package/dist/core/profiles/select.js +3 -0
  263. package/dist/core/review/__tests__/capture-origin.test.js +13 -2
  264. package/dist/core/review/__tests__/comments.test.js +28 -10
  265. package/dist/core/review/__tests__/remap.test.js +28 -10
  266. package/dist/core/review/__tests__/stage-identity.test.js +17 -7
  267. package/dist/core/review/birth.d.ts +1 -1
  268. package/dist/core/review/birth.js +34 -5
  269. package/dist/core/review/comments.js +1 -1
  270. package/dist/core/review/document.js +1 -1
  271. package/dist/core/review/project.d.ts +5 -1
  272. package/dist/core/review/project.js +14 -36
  273. package/dist/core/review/realize.d.ts +3 -6
  274. package/dist/core/review/realize.js +51 -168
  275. package/dist/core/review/remap.js +1 -1
  276. package/dist/core/review/stage.d.ts +3 -2
  277. package/dist/core/review/stage.js +2 -3
  278. package/dist/core/review/store.d.ts +3 -21
  279. package/dist/core/review/store.js +140 -186
  280. package/dist/core/review/types.d.ts +0 -1
  281. package/dist/core/runtime/__tests__/install-id-cache-scoping.test.js +9 -5
  282. package/dist/core/runtime/__tests__/spawn-env.test.js +8 -9
  283. package/dist/core/runtime/broker/auth-reload.js +9 -10
  284. package/dist/core/runtime/broker/daemon-ops.d.ts +25 -8
  285. package/dist/core/runtime/broker/daemon-ops.js +42 -9
  286. package/dist/core/runtime/broker/extension-abort.d.ts +3 -0
  287. package/dist/core/runtime/broker/extension-abort.js +11 -0
  288. package/dist/core/runtime/broker/fault-retry.d.ts +15 -6
  289. package/dist/core/runtime/broker/fault-retry.js +142 -95
  290. package/dist/core/runtime/broker/inbox.d.ts +4 -32
  291. package/dist/core/runtime/broker/inbox.js +4 -92
  292. package/dist/core/runtime/broker/rebind.d.ts +1 -0
  293. package/dist/core/runtime/broker/rebind.js +21 -12
  294. package/dist/core/runtime/broker-persona-guidance.d.ts +1 -1
  295. package/dist/core/runtime/broker-persona-guidance.js +2 -13
  296. package/dist/core/runtime/broker.js +28 -22
  297. package/dist/core/runtime/close.d.ts +3 -9
  298. package/dist/core/runtime/close.js +16 -27
  299. package/dist/core/runtime/fault.d.ts +3 -93
  300. package/dist/core/runtime/fault.js +9 -419
  301. package/dist/core/runtime/kickoff.d.ts +3 -6
  302. package/dist/core/runtime/kickoff.js +12 -18
  303. package/dist/core/runtime/launch.js +1 -1
  304. package/dist/core/runtime/lifecycle.js +40 -7
  305. package/dist/core/runtime/placement.js +2 -2
  306. package/dist/core/runtime/recycle.js +8 -2
  307. package/dist/core/runtime/reset.js +22 -6
  308. package/dist/core/runtime/revive.js +226 -218
  309. package/dist/core/runtime/spawn.js +14 -3
  310. package/dist/core/scoped-state/db.d.ts +18 -0
  311. package/dist/core/scoped-state/db.js +135 -0
  312. package/dist/core/scoped-state/migrate.d.ts +8 -0
  313. package/dist/core/scoped-state/migrate.js +181 -0
  314. package/dist/core/scoped-state/paths.d.ts +9 -0
  315. package/dist/core/scoped-state/paths.js +27 -0
  316. package/dist/core/scoped-state/profiles.d.ts +12 -0
  317. package/dist/core/scoped-state/profiles.js +62 -0
  318. package/dist/core/scoped-state/providers.d.ts +16 -0
  319. package/dist/core/scoped-state/providers.js +8 -0
  320. package/dist/core/scoped-state/schema.d.ts +3 -0
  321. package/dist/core/scoped-state/schema.js +26 -0
  322. package/dist/core/scoped-state/settings.d.ts +28 -0
  323. package/dist/core/scoped-state/settings.js +82 -0
  324. package/dist/core/subscription-state.d.ts +29 -48
  325. package/dist/core/subscription-state.js +176 -712
  326. package/dist/core/worktree-close.js +4 -4
  327. package/dist/core/worktree-mutation-async.js +2 -2
  328. package/dist/core/worktree-sweep.js +11 -16
  329. package/dist/core/worktree.js +6 -12
  330. package/dist/daemon/__tests__/autostart-storm.test.js +1 -39
  331. package/dist/daemon/__tests__/helpers/source-daemon.d.ts +2 -2
  332. package/dist/daemon/__tests__/helpers/source-daemon.js +7 -6
  333. package/dist/daemon/__tests__/integration/migration-startup.test.js +59 -26
  334. package/dist/daemon/__tests__/node-deadline-lane.test.js +2 -1
  335. package/dist/daemon/__tests__/node-outcome-birth-invariants.test.js +39 -15
  336. package/dist/daemon/__tests__/node-outcome-delivery.test.js +39 -10
  337. package/dist/daemon/__tests__/reconciler-signature.test.js +2 -2
  338. package/dist/daemon/__tests__/subtree-filter-freshness.test.js +2 -2
  339. package/dist/daemon/api/__tests__/broker-settle-park.test.js +17 -12
  340. package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.js +27 -5
  341. package/dist/daemon/api/__tests__/model-config.test.js +8 -8
  342. package/dist/daemon/api/__tests__/node-create-description.test.js +22 -5
  343. package/dist/daemon/api/__tests__/node-model-validation.test.js +21 -1
  344. package/dist/daemon/api/__tests__/nodes-activity-query.test.js +10 -12
  345. package/dist/daemon/api/__tests__/profile-launch-gates.test.js +4 -1
  346. package/dist/daemon/api/__tests__/profile-metadata-route.test.js +4 -1
  347. package/dist/daemon/api/__tests__/reopen-delivery.test.js +26 -8
  348. package/dist/daemon/api/__tests__/seam/api-server.test.js +24 -32
  349. package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.js +4 -1
  350. package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.js +5 -4
  351. package/dist/daemon/api/__tests__/seam/profile-delete.test.js +27 -41
  352. package/dist/daemon/api/__tests__/submit-result.test.js +3 -2
  353. package/dist/daemon/api/bridge.js +1 -1
  354. package/dist/daemon/api/handlers/bash-jobs.js +6 -7
  355. package/dist/daemon/api/handlers/broker-ops.js +47 -84
  356. package/dist/daemon/api/handlers/broker-recovery.d.ts +4 -0
  357. package/dist/daemon/api/handlers/broker-recovery.js +251 -0
  358. package/dist/daemon/api/handlers/canvas.js +2 -44
  359. package/dist/daemon/api/handlers/daemon.js +41 -0
  360. package/dist/daemon/api/handlers/feedback-comments.js +2 -2
  361. package/dist/daemon/api/handlers/health.js +10 -5
  362. package/dist/daemon/api/handlers/human-requests.js +168 -188
  363. package/dist/daemon/api/handlers/human.js +3 -151
  364. package/dist/daemon/api/handlers/inbox-page.d.ts +4 -0
  365. package/dist/daemon/api/handlers/inbox-page.js +89 -0
  366. package/dist/daemon/api/handlers/inbox.js +21 -120
  367. package/dist/daemon/api/handlers/messages.d.ts +1 -0
  368. package/dist/daemon/api/handlers/messages.js +73 -15
  369. package/dist/daemon/api/handlers/node-outcomes.js +58 -13
  370. package/dist/daemon/api/handlers/nodes.js +7 -13
  371. package/dist/daemon/api/handlers/reviews.js +4 -29
  372. package/dist/daemon/api/map.d.ts +25 -3
  373. package/dist/daemon/api/map.js +84 -14
  374. package/dist/daemon/api/server.js +68 -9
  375. package/dist/daemon/control.d.ts +18 -0
  376. package/dist/daemon/cron/disposition.d.ts +2 -0
  377. package/dist/daemon/cron/disposition.js +8 -5
  378. package/dist/daemon/cron/settle.js +37 -13
  379. package/dist/daemon/cron/sinks.d.ts +18 -1
  380. package/dist/daemon/cron/sinks.js +47 -93
  381. package/dist/daemon/crtrd-cli.js +4 -19
  382. package/dist/daemon/crtrd.d.ts +2 -0
  383. package/dist/daemon/crtrd.js +206 -81
  384. package/dist/daemon/fleet.js +5 -6
  385. package/dist/daemon/human/finish.d.ts +12 -24
  386. package/dist/daemon/human/finish.js +88 -285
  387. package/dist/daemon/human/settle.d.ts +40 -0
  388. package/dist/daemon/human/settle.js +89 -0
  389. package/dist/daemon/human/sweep.d.ts +20 -5
  390. package/dist/daemon/human/sweep.js +56 -60
  391. package/dist/daemon/manage.d.ts +21 -16
  392. package/dist/daemon/manage.js +85 -51
  393. package/dist/daemon/messaging/node-message.d.ts +1 -1
  394. package/dist/daemon/messaging/node-message.js +9 -12
  395. package/dist/daemon/park-activity.js +3 -3
  396. package/dist/daemon/reconcilers/bash-deadline.js +6 -7
  397. package/dist/daemon/reconcilers/broker-supervision.d.ts +1 -1
  398. package/dist/daemon/reconcilers/broker-supervision.js +41 -19
  399. package/dist/daemon/reconcilers/controller-death.js +6 -18
  400. package/dist/daemon/reconcilers/delivery-lane.d.ts +9 -0
  401. package/dist/daemon/reconcilers/delivery-lane.js +130 -0
  402. package/dist/daemon/reconcilers/live-obligation.js +3 -3
  403. package/dist/daemon/reconcilers/node-deadline.js +1 -1
  404. package/dist/daemon/reconcilers/node-lifecycle/freeze-lane.d.ts +1 -1
  405. package/dist/daemon/reconcilers/node-lifecycle/freeze-lane.js +10 -12
  406. package/dist/daemon/reconcilers/node-lifecycle/tick.js +5 -5
  407. package/dist/daemon/reconcilers/node-lifecycle/wants-execution.js +1 -1
  408. package/dist/daemon/reconcilers/pending-review-submit.js +3 -3
  409. package/dist/daemon/reconcilers/storage-maintenance.d.ts +2 -8
  410. package/dist/daemon/reconcilers/storage-maintenance.js +13 -43
  411. package/dist/daemon/review/companion.js +5 -11
  412. package/dist/daemon/review/deliver.d.ts +1 -5
  413. package/dist/daemon/review/deliver.js +3 -52
  414. package/dist/daemon/review/finish.d.ts +2 -27
  415. package/dist/daemon/review/finish.js +79 -263
  416. package/dist/daemon/review/sweep.d.ts +3 -10
  417. package/dist/daemon/review/sweep.js +13 -131
  418. package/dist/daemon/startup-policy.d.ts +0 -5
  419. package/dist/daemon/startup-policy.js +0 -5
  420. package/dist/index.d.ts +2 -1
  421. package/dist/index.js +1 -1
  422. package/dist/migrations/__tests__/activation-concurrency.test.js +3 -2
  423. package/dist/migrations/__tests__/activation.test.js +9 -6
  424. package/dist/migrations/activation.d.ts +3 -2
  425. package/dist/migrations/activation.js +2 -4
  426. package/dist/migrations/corpus.d.ts +2 -5
  427. package/dist/migrations/corpus.js +9 -20
  428. package/dist/migrations/runner.d.ts +3 -1
  429. package/dist/migrations/runner.js +6 -2
  430. package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +21 -89
  431. package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.js +4 -2
  432. package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +51 -33
  433. package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.js +16 -2
  434. package/dist/pi-extensions/__tests__/pre-command-gate.test.js +13 -1
  435. package/dist/pi-extensions/canvas-inbox-watcher.js +98 -244
  436. package/dist/pi-extensions/canvas-passive-context.d.ts +4 -8
  437. package/dist/pi-extensions/canvas-passive-context.js +85 -37
  438. package/dist/pi-extensions/canvas-stophook.js +47 -31
  439. package/dist/shared/env.d.ts +1 -0
  440. package/dist/shared/env.js +3 -0
  441. package/package.json +1 -1
  442. package/runtime.lock.json +5 -5
  443. package/dist/clients/attach/__tests__/page-block.test.js +0 -54
  444. package/dist/clients/inbox/review-visibility.d.ts +0 -5
  445. package/dist/clients/inbox/review-visibility.js +0 -19
  446. package/dist/commands/canvas-rebuild-index.d.ts +0 -2
  447. package/dist/commands/canvas-rebuild-index.js +0 -46
  448. package/dist/core/__tests__/human-cancel-guard.test.js +0 -110
  449. package/dist/core/__tests__/human-deliver.test.js +0 -256
  450. package/dist/core/__tests__/human-node-not-supervised.test.d.ts +0 -1
  451. package/dist/core/__tests__/human-node-not-supervised.test.js +0 -89
  452. package/dist/core/__tests__/integration/human-deliver-e2e.test.d.ts +0 -1
  453. package/dist/core/__tests__/integration/human-deliver-e2e.test.js +0 -131
  454. package/dist/core/__tests__/phase4-review-store.test.d.ts +0 -1
  455. package/dist/core/__tests__/phase4-review-store.test.js +0 -144
  456. package/dist/core/__tests__/watchdog-abort-arms-retry.test.d.ts +0 -1
  457. package/dist/core/__tests__/watchdog-abort-arms-retry.test.js +0 -110
  458. package/dist/core/canvas/human-deliveries.d.ts +0 -39
  459. package/dist/core/canvas/human-deliveries.js +0 -75
  460. package/dist/core/canvas/node-outcome-deliveries.d.ts +0 -64
  461. package/dist/core/canvas/node-outcome-deliveries.js +0 -159
  462. package/dist/core/feed/passive.d.ts +0 -3
  463. package/dist/core/feed/passive.js +0 -53
  464. package/dist/core/human/__tests__/inbox-cancel-worker.d.ts +0 -1
  465. package/dist/core/human/__tests__/inbox-cancel-worker.js +0 -7
  466. package/dist/core/human/__tests__/inbox-claim-worker.d.ts +0 -1
  467. package/dist/core/human/__tests__/inbox-claim-worker.js +0 -17
  468. package/dist/core/human/__tests__/inbox-stale-claim-worker.d.ts +0 -1
  469. package/dist/core/human/__tests__/inbox-stale-claim-worker.js +0 -8
  470. package/dist/core/human/__tests__/integration/inbox-core.test.d.ts +0 -1
  471. package/dist/core/human/__tests__/integration/inbox-core.test.js +0 -145
  472. package/dist/core/human/__tests__/page-tickets.test.d.ts +0 -1
  473. package/dist/core/human/__tests__/page-tickets.test.js +0 -161
  474. package/dist/core/review/ticket-filter.d.ts +0 -17
  475. package/dist/core/review/ticket-filter.js +0 -21
  476. package/dist/core/runtime/broker/passive.d.ts +0 -17
  477. package/dist/core/runtime/broker/passive.js +0 -44
  478. package/dist/core/runtime/busy.d.ts +0 -46
  479. package/dist/core/runtime/busy.js +0 -150
  480. package/dist/daemon/__tests__/startup-block-marker.test.d.ts +0 -1
  481. package/dist/daemon/__tests__/startup-block-marker.test.js +0 -86
  482. package/dist/daemon/api/__tests__/review-terminal-conflict.test.d.ts +0 -1
  483. package/dist/daemon/api/__tests__/review-terminal-conflict.test.js +0 -98
  484. package/dist/daemon/human/deliver-action.d.ts +0 -3
  485. package/dist/daemon/human/deliver-action.js +0 -9
  486. package/dist/daemon/node-outcome/deliver-outcome.d.ts +0 -3
  487. package/dist/daemon/node-outcome/deliver-outcome.js +0 -9
  488. package/dist/daemon/reconcilers/human-delivery-lane.d.ts +0 -10
  489. package/dist/daemon/reconcilers/human-delivery-lane.js +0 -41
  490. package/dist/daemon/reconcilers/node-outcome-delivery-lane.d.ts +0 -10
  491. package/dist/daemon/reconcilers/node-outcome-delivery-lane.js +0 -41
  492. package/dist/daemon/startup-block-marker.d.ts +0 -25
  493. package/dist/daemon/startup-block-marker.js +0 -99
  494. /package/dist/{clients/attach/__tests__/page-block.test.d.ts → api/dto/mail.js} +0 -0
  495. /package/dist/{commands/sys/__tests__/migrate.test.d.ts → api/dto/recovery.js} +0 -0
  496. /package/dist/{core/__tests__/human-cancel-guard.test.d.ts → commands/__tests__/integration/migrate.test.d.ts} +0 -0
  497. /package/dist/core/__tests__/{human-deliver.test.d.ts → integration/fresh-home-commands.test.d.ts} +0 -0
@@ -1,7 +1,7 @@
1
1
  import type { IsoTime } from './common.js';
2
- import type { InboxTicketIdDTO, PageResponsesDTO, TicketSourceDTO } from './inbox.js';
3
- /** A request id IS an opaque inbox ticket id: lowercase 64-hex. */
4
- export type HumanRequestIdDTO = InboxTicketIdDTO;
2
+ import type { InboxPageDTO, PageResponsesDTO, TicketSourceDTO } from './inbox.js';
3
+ /** Daemon-minted request identity. Inbox presentation has a separate opaque ticket id. */
4
+ export type HumanRequestIdDTO = string;
5
5
  /** The complete authored page text, inline — never a path. */
6
6
  export interface HumanRequestPageDTO {
7
7
  dialect: 'jsx' | 'html';
@@ -22,6 +22,8 @@ export interface CreateHumanRequestRequest {
22
22
  page: HumanRequestPageDTO;
23
23
  delivery?: HumanRequestDeliveryDTO;
24
24
  source?: TicketSourceDTO;
25
+ /** The one node that receives the terminal result. Required for reply-bearing pages. */
26
+ requester_node_id?: string | null;
25
27
  creator_cwd: string;
26
28
  action?: HumanRequestActionDTO;
27
29
  }
@@ -29,6 +31,8 @@ export type HumanRequestState = 'pending' | 'answered' | 'dismissed' | 'canceled
29
31
  export type HumanRequestDeliveryState = 'none' | 'pending' | 'running' | 'accepted' | 'permanent_failed';
30
32
  export interface CreateHumanRequestDTO {
31
33
  request_id: HumanRequestIdDTO;
34
+ /** Daemon-owned directory where the request's rendered page is projected. */
35
+ request_dir: string;
32
36
  state: 'pending';
33
37
  /** Omitted entirely when the request carries no action binding. */
34
38
  action?: {
@@ -56,6 +60,11 @@ export interface HumanRequestDeliveryDetailDTO {
56
60
  }
57
61
  export interface HumanRequestDTO {
58
62
  request_id: HumanRequestIdDTO;
63
+ /** Opaque inbox identity for inbox-only routes. */
64
+ inbox_ticket_id: string;
65
+ /** Daemon-owned directory where the request's rendered page is projected. */
66
+ request_dir: string;
67
+ kind: 'page' | 'review';
59
68
  state: HumanRequestState;
60
69
  title: string;
61
70
  subtitle?: string;
@@ -73,6 +82,8 @@ export interface HumanRequestDTO {
73
82
  payload: unknown;
74
83
  };
75
84
  delivery?: HumanRequestDeliveryDetailDTO;
85
+ /** Present exactly when this request is a page. */
86
+ page?: InboxPageDTO;
76
87
  }
77
88
  export interface ReplaceHumanRequestRequest {
78
89
  page: HumanRequestPageDTO;
@@ -1,26 +1,16 @@
1
- import type { NodeIdDTO } from './common.js';
2
- /** One anchored review comment, mirroring crouter's ticket-store shape as a
3
- * plain structural wire type (no store import). */
1
+ /** One anchored review comment, mirroring crouter's canonical review result. */
4
2
  export interface FeedbackCommentDTO {
5
3
  id: string;
6
- /** 1-based source line where the comment is anchored (start). */
7
4
  line: number;
8
- /** 1-based source line where the anchored range ends (== line for one line). */
9
5
  endLine: number;
10
- /** Exact selected substring when the human made a visual selection. */
11
6
  quote?: string;
12
- /** 0-based byte column where a partial (charwise) selection starts on `line`. */
13
7
  colStart?: number;
14
- /** 0-based exclusive byte column where the selection ends on `endLine`. */
15
8
  colEnd?: number;
16
- /** Full source text of the anchored line(s) — context for the agent. */
17
9
  lineText: string;
18
10
  comment: string;
19
11
  createdAt: string;
20
12
  }
21
- /** Immutable daemon-projected approval result, mirroring crouter's canonical
22
- * review result as a plain structural wire type — `src/api/**` never imports
23
- * the store's own type. */
13
+ /** Immutable daemon-projected review approval result. */
24
14
  export interface FeedbackResultDTO {
25
15
  file: string;
26
16
  submitted: true;
@@ -36,39 +26,3 @@ export interface FeedbackResultDTO {
36
26
  commentsTotal: number;
37
27
  commentsUnresolved: number;
38
28
  }
39
- /** `POST /v1/human/tickets/{ticket_id}/resolve` body — a page answer keyed by slot id. */
40
- export interface HumanResolveRequest {
41
- responses: Record<string, Record<string, unknown>>;
42
- }
43
- /** `POST /v1/human/tickets/{ticket_id}/cancel` body. */
44
- export interface HumanCancelRequest {
45
- reason?: string;
46
- actor?: string;
47
- /** The recipient surface closing it sends `dismissed`; a requester retracting
48
- * it sends `canceled` or omits the field. */
49
- disposition?: 'canceled' | 'dismissed';
50
- }
51
- /** `POST /v1/human/tickets/{ticket_id}/resolve` result. */
52
- export interface HumanResolveResultDTO {
53
- completed: true;
54
- reply_delivered: boolean;
55
- kind: 'page';
56
- }
57
- /** `POST /v1/human/tickets/{ticket_id}/cancel` result. */
58
- export interface HumanCancelResultDTO {
59
- canceled: true;
60
- }
61
- /** `POST /v1/human/bridge` body — create a terminal `kind:'human'` bridge node
62
- * via `spawnNode` (NO broker engine). Distinct from `POST /v1/nodes`, whose
63
- * `spawnChild` always launches a broker the bridge must never have. */
64
- export interface CreateHumanBridgeRequest {
65
- kind: 'human';
66
- parent: NodeIdDTO | null;
67
- cwd: string;
68
- name: string;
69
- }
70
- /** `POST /v1/human/bridge` result — the minted bridge node id + its name. */
71
- export interface HumanBridgeResultDTO {
72
- node_id: NodeIdDTO;
73
- name: string;
74
- }
@@ -1,3 +1,4 @@
1
- // Human-bridge and crouter ticket-store DTOs — the canvas-facing wire shapes
2
- // for bridge work and ticket resolution through crtrd.
1
+ // Shared human-review result DTOs. Page and review lifecycle contracts live in
2
+ // their request-specific modules; bridge and duplicate ticket settlement types
3
+ // are intentionally absent.
3
4
  export {};
@@ -10,6 +10,10 @@ export interface TicketSourceDTO {
10
10
  nodeId?: string;
11
11
  }
12
12
  export interface ReviewTicketSummaryDTO {
13
+ /** Request identity for direct request/review routes. */
14
+ request_id: string;
15
+ /** Daemon-owned projection directory. */
16
+ request_dir: string;
13
17
  ticket_id: InboxTicketIdDTO;
14
18
  kind: 'review';
15
19
  title: string;
@@ -33,6 +37,10 @@ export interface PageFastActionDTO {
33
37
  responses: PageResponsesDTO;
34
38
  }
35
39
  export interface PageTicketSummaryDTO {
40
+ /** Request identity for direct request routes. */
41
+ request_id: string;
42
+ /** Daemon-owned projection directory. */
43
+ request_dir: string;
36
44
  ticket_id: InboxTicketIdDTO;
37
45
  kind: 'page';
38
46
  title: string;
@@ -118,13 +126,19 @@ export interface InboxPageDTO {
118
126
  ticket_id: InboxTicketIdDTO;
119
127
  kind: 'page';
120
128
  state: 'pending' | 'resolved' | 'canceled' | 'passive';
129
+ /** Opaque SQL-selected immutable presentation revision. */
130
+ revision: string;
121
131
  page: PageManifestDTO;
122
132
  /** JSX is compiled for the host; HTML is the authored document verbatim. */
123
133
  document: string;
134
+ /** Authored JSX or HTML, distinct from the compiled JSX host document. */
135
+ source_document: string;
124
136
  document_media_type: 'text/jsx' | 'text/html';
125
137
  progress: {
126
138
  responses: PageResponsesDTO;
127
139
  } | null;
140
+ /** Canonical stored terminal result, or null while the ticket remains open. */
141
+ result: PageTicketResultDTO | CanceledTicketResultDTO | null;
128
142
  /** Ticket-attached feedback comments and the companion conversation they
129
143
  * deliver to. Comments are immutable once sent — open until the companion
130
144
  * resolves them. */
@@ -0,0 +1,43 @@
1
+ export interface MailEntryDTO {
2
+ entry_id: string;
3
+ operation_id: string;
4
+ ts: string;
5
+ from: string | null;
6
+ from_name?: string;
7
+ tier: 'critical' | 'urgent' | 'normal' | 'deferred';
8
+ kind: 'update' | 'urgent' | 'final' | 'message' | 'completed';
9
+ ref?: string;
10
+ label: string;
11
+ data?: Record<string, unknown>;
12
+ disposition?: 'human-answer' | 'human-canceled';
13
+ }
14
+ export interface ClaimedMailDTO {
15
+ delivery_id: string;
16
+ attempts: number;
17
+ handoff: 'fresh' | 'inherited';
18
+ entry: MailEntryDTO;
19
+ }
20
+ export interface ClaimMailRequest {
21
+ execution_id: string;
22
+ channel: 'wake' | 'passive';
23
+ }
24
+ export interface ClaimMailResultDTO {
25
+ action: 'claimed' | 'hold';
26
+ deliveries: ClaimedMailDTO[];
27
+ }
28
+ export interface MailReceiptDTO {
29
+ delivery_id: string;
30
+ attempts: number;
31
+ disposition: 'acknowledged' | 'released';
32
+ }
33
+ export interface AcknowledgeMailRequest {
34
+ execution_id: string;
35
+ deliveries: MailReceiptDTO[];
36
+ }
37
+ export interface AcknowledgeMailResultDTO {
38
+ action: 'acknowledged' | 'hold';
39
+ results: Array<{
40
+ delivery_id: string;
41
+ outcome: 'acknowledged' | 'released' | 'stale';
42
+ }>;
43
+ }
@@ -1,6 +1,7 @@
1
1
  import type { Cursor, ExitIntentDTO, IsoTime, LifecycleDTO, ModeDTO, NodeIdDTO, NodeStatusDTO, TerminalReasonDTO } from './common.js';
2
2
  import type { ReportDTO } from './reports.js';
3
3
  import type { NodeOutcomeDTO, RegisterOutcomeDeliveryRequest } from './node-outcomes.js';
4
+ import type { FaultLink, FaultKind, FaultRetry, FaultProviderError } from './recovery.js';
4
5
  /** `GET /v1/nodes/{id}/subject` — the node-config subject substrate gate
5
6
  * predicates evaluate against. Mirrors `NodeConfigSubject`; this narrow
6
7
  * endpoint exists so a CLI process (the `memory read` leaf) can gate-check
@@ -105,6 +106,8 @@ export interface NodeSummaryDTO {
105
106
  finalized_at: IsoTime | null;
106
107
  deadline_at: IsoTime | null;
107
108
  outcome: NodeOutcomeDTO | null;
109
+ fault?: NodeFaultDTO | null;
110
+ streaming?: boolean;
108
111
  /** Present only when requested with `include=activity`. */
109
112
  activity?: NodeActivityDTO;
110
113
  }
@@ -135,7 +138,6 @@ export interface NodePathsDTO {
135
138
  context_dir: string;
136
139
  reports_dir: string;
137
140
  meta_path: string;
138
- inbox_path: string;
139
141
  transcript_path: string;
140
142
  view_socket: string;
141
143
  }
@@ -172,12 +174,15 @@ export interface NodeReviewBindingDTO {
172
174
  }
173
175
  /** The active fault projection shown by node inspection. */
174
176
  export interface NodeFaultDTO {
175
- link: string;
176
- kind: string;
177
- retry: {
178
- disposition: string;
179
- };
177
+ link: FaultLink;
178
+ op: string;
179
+ kind: FaultKind;
180
+ retry: FaultRetry;
181
+ message: string;
180
182
  since: IsoTime;
183
+ operation_id: string;
184
+ anchorEntryId?: string;
185
+ providerError?: FaultProviderError;
181
186
  }
182
187
  /** The full node view — summary ∪ identity extras ∪ edges ∪ paths. Returned by
183
188
  * `GET /v1/nodes/{id}` and by the create/lifecycle actions that yield a node. */
@@ -212,8 +217,6 @@ export interface NodeDetailDTO extends NodeSummaryDTO {
212
217
  edges: NodeEdgesDTO;
213
218
  paths: NodePathsDTO;
214
219
  worktree?: NodeWorktreeDTO | null;
215
- /** The currently active runtime fault, when one is present. */
216
- fault?: NodeFaultDTO | null;
217
220
  /** Present only on a `POST /promote` response — the roadmap/goal facts the
218
221
  * promote primitive returns beyond the node meta (spec §6.2). A plain detail
219
222
  * read omits them. */
@@ -0,0 +1,96 @@
1
+ export type FaultLink = 'pi→provider' | 'viewer↔broker' | 'relay↔broker' | 'viewer↔crtrd' | 'daemon→node' | 'crtr→pi';
2
+ export type FaultKind = 'rate-limit' | 'overloaded' | 'connection' | 'auth' | 'protocol' | 'context-overflow' | 'other' | 'wedged' | 'model-not-found';
3
+ export interface FaultRetry {
4
+ disposition: 'auto' | 'manual' | 'fatal';
5
+ by?: 'sdk' | 'daemon' | 'client';
6
+ attempt?: number;
7
+ max?: number;
8
+ nextAt?: string;
9
+ }
10
+ export interface FaultProviderError {
11
+ provider: string;
12
+ model: string;
13
+ status?: number;
14
+ code?: string | number;
15
+ errno?: string;
16
+ body?: string;
17
+ causes?: Array<{
18
+ message?: string;
19
+ status?: number;
20
+ code?: string | number;
21
+ errno?: string;
22
+ body?: string;
23
+ }>;
24
+ }
25
+ export interface RecoveryFaultDTO {
26
+ fault_id: string;
27
+ link: FaultLink;
28
+ op: string;
29
+ kind: FaultKind;
30
+ retry: FaultRetry;
31
+ message: string;
32
+ since: string;
33
+ operation_id: string;
34
+ anchor_entry_id?: string;
35
+ provider_error?: FaultProviderError;
36
+ }
37
+ export interface ExecutionExitDiagnosticDTO {
38
+ schema: 'crtr.execution-exit-diagnostic/v1';
39
+ transport_poison: {
40
+ consecutive_passes: number;
41
+ routes: string[];
42
+ };
43
+ }
44
+ export interface BrokerTurnResultDTO {
45
+ applied: boolean;
46
+ }
47
+ export interface BrokerTurnRequest {
48
+ expected_execution_id: string;
49
+ event: 'started' | 'progress' | 'closed' | 'interrupted' | 'exit-diagnostic';
50
+ end_reason?: 'settled' | 'teardown-aborted';
51
+ exit_diagnostic?: ExecutionExitDiagnosticDTO;
52
+ }
53
+ export interface BrokerFaultInputDTO {
54
+ link: FaultLink;
55
+ op: string;
56
+ kind: FaultKind;
57
+ retry: FaultRetry;
58
+ message: string;
59
+ operation_id?: string;
60
+ since?: string;
61
+ anchor_entry_id?: string;
62
+ provider_error?: FaultProviderError;
63
+ }
64
+ export interface BrokerFaultResultDTO {
65
+ fault: RecoveryFaultDTO | null;
66
+ }
67
+ export interface BrokerFaultRequest {
68
+ expected_execution_id: string;
69
+ op: 'record' | 'clear';
70
+ link?: FaultLink;
71
+ preserve_episode?: boolean;
72
+ input?: BrokerFaultInputDTO;
73
+ }
74
+ export interface BrokerProviderRetryResultDTO {
75
+ applied: boolean;
76
+ episode: RecoveryStateDTO['episode'];
77
+ }
78
+ export interface BrokerProviderRetryRequest {
79
+ expected_execution_id: string;
80
+ op: 'record-pending' | 'admit' | 'reopen' | 'invalidate' | 'clear';
81
+ session_id: string;
82
+ fault_id?: string;
83
+ retry?: FaultRetry;
84
+ input?: BrokerFaultInputDTO;
85
+ }
86
+ export interface RecoveryStateDTO {
87
+ fault: RecoveryFaultDTO | null;
88
+ episode: {
89
+ state: 'pending' | 'admitted' | 'invalidated';
90
+ session_id: string | null;
91
+ fault: RecoveryFaultDTO;
92
+ } | null;
93
+ }
94
+ export interface NodeFaultClearResultDTO {
95
+ cleared: boolean;
96
+ }
@@ -26,8 +26,8 @@ export interface ReviewDTO {
26
26
  origin_kind: ReviewOriginKindDTO;
27
27
  /** Daemon-recorded originating node. */
28
28
  origin_node_id: NodeIdDTO;
29
- /** Daemon-recorded ticket bridge, when this review came from a ticket. */
30
- bridge_node_id: NodeIdDTO | null;
29
+ /** Daemon-owned directory containing the review branch and terminal result. */
30
+ review_dir: string;
31
31
  /** Daemon-preallocated companion node. */
32
32
  companion_node_id: NodeIdDTO;
33
33
  /** Daemon-canonicalized reviewed file path. */
@@ -5,6 +5,8 @@ export declare const routes: {
5
5
  readonly healthz: () => string;
6
6
  readonly status: () => string;
7
7
  readonly daemonRestart: () => string;
8
+ readonly daemonMigrate: () => string;
9
+ readonly daemonAdmit: () => string;
8
10
  readonly nodes: () => string;
9
11
  readonly reviveAll: () => string;
10
12
  readonly node: (id: string) => string;
@@ -31,11 +33,17 @@ export declare const routes: {
31
33
  readonly nodeBrokerSettle: (id: string) => string;
32
34
  readonly nodeBrokerParkComplete: (id: string) => string;
33
35
  readonly nodeBrokerParkActivity: (id: string) => string;
34
- readonly nodeBrokerInboxCursor: (id: string) => string;
36
+ readonly nodeMailClaim: (id: string) => string;
37
+ readonly nodeMailAcknowledge: (id: string) => string;
35
38
  readonly nodeBrokerModel: (id: string) => string;
36
39
  readonly nodeBrokerExtensionState: (id: string) => string;
37
40
  readonly nodeBrokerGeneratedName: (id: string) => string;
38
41
  readonly nodeBrokerPersonaAck: (id: string) => string;
42
+ readonly brokerTurn: (id: string) => string;
43
+ readonly brokerProviderRetry: (id: string) => string;
44
+ readonly brokerFault: (id: string) => string;
45
+ readonly brokerRecovery: (id: string) => string;
46
+ readonly nodeFault: (id: string) => string;
39
47
  readonly nodeClose: (id: string) => string;
40
48
  readonly nodeRecycle: (id: string) => string;
41
49
  readonly nodeDemote: (id: string) => string;
@@ -68,13 +76,8 @@ export declare const routes: {
68
76
  readonly canvasSnapshot: () => string;
69
77
  readonly canvasRoster: () => string;
70
78
  readonly canvasPrune: () => string;
71
- readonly canvasRebuildIndex: () => string;
72
- readonly humanBridge: () => string;
73
- readonly humanTicketResolve: (ticketId: string) => string;
74
- readonly humanTicketCancel: (ticketId: string) => string;
75
79
  readonly humanReviews: () => string;
76
80
  readonly humanReview: (reviewId: string) => string;
77
- readonly humanReviewByBridge: (bridgeNodeId: string) => string;
78
81
  readonly humanReviewSubmit: (reviewId: string) => string;
79
82
  readonly humanReviewCancel: (reviewId: string) => string;
80
83
  readonly humanReviewDocument: (reviewId: string) => string;
@@ -19,6 +19,8 @@ export const routes = {
19
19
  healthz: () => '/healthz',
20
20
  status: () => `${V}/status`,
21
21
  daemonRestart: () => `${V}/daemon/restart`,
22
+ daemonMigrate: () => `${V}/daemon/migrate`,
23
+ daemonAdmit: () => `${V}/daemon/admit`,
22
24
  // Nodes — collection + item
23
25
  nodes: () => `${V}/nodes`,
24
26
  reviveAll: () => `${V}/nodes/revive-all`,
@@ -49,11 +51,17 @@ export const routes = {
49
51
  nodeBrokerSettle: (id) => `${V}/nodes/${id}/broker/settle`,
50
52
  nodeBrokerParkComplete: (id) => `${V}/nodes/${id}/broker/park-complete`,
51
53
  nodeBrokerParkActivity: (id) => `${V}/nodes/${id}/broker/park-activity`,
52
- nodeBrokerInboxCursor: (id) => `${V}/nodes/${id}/broker/inbox-cursor`,
54
+ nodeMailClaim: (id) => `${V}/nodes/${id}/mail/claim`,
55
+ nodeMailAcknowledge: (id) => `${V}/nodes/${id}/mail/acknowledge`,
53
56
  nodeBrokerModel: (id) => `${V}/nodes/${id}/broker/model`,
54
57
  nodeBrokerExtensionState: (id) => `${V}/nodes/${id}/broker/extension-state`,
55
58
  nodeBrokerGeneratedName: (id) => `${V}/nodes/${id}/broker/generated-name`,
56
59
  nodeBrokerPersonaAck: (id) => `${V}/nodes/${id}/broker/persona-ack`,
60
+ brokerTurn: (id) => `${V}/broker/${id}/turn`,
61
+ brokerProviderRetry: (id) => `${V}/broker/${id}/provider-retry`,
62
+ brokerFault: (id) => `${V}/broker/${id}/fault`,
63
+ brokerRecovery: (id) => `${V}/broker/${id}/recovery`,
64
+ nodeFault: (id) => `${V}/nodes/${id}/fault`,
57
65
  nodeClose: (id) => `${V}/nodes/${id}/close`,
58
66
  nodeRecycle: (id) => `${V}/nodes/${id}/recycle`,
59
67
  nodeDemote: (id) => `${V}/nodes/${id}/demote`,
@@ -90,17 +98,10 @@ export const routes = {
90
98
  canvasSnapshot: () => `${V}/canvas/snapshot`,
91
99
  canvasRoster: () => `${V}/canvas/roster`,
92
100
  canvasPrune: () => `${V}/canvas/prune`,
93
- canvasRebuildIndex: () => `${V}/canvas/rebuild-index`,
94
- // Human bridge creation + the pinned ticket route table (design §"The `/v1`
95
- // surface") — every ticket route is addressed by node id only.
96
- humanBridge: () => `${V}/human/bridge`,
97
- humanTicketResolve: (ticketId) => `${V}/human/tickets/${ticketId}/resolve`,
98
- humanTicketCancel: (ticketId) => `${V}/human/tickets/${ticketId}/cancel`,
99
101
  // Daemon-owned document reviews and comments. All interpolated ids are
100
102
  // guarded by `CrtrClient` before they reach these pure builders.
101
103
  humanReviews: () => `${V}/human/reviews`,
102
104
  humanReview: (reviewId) => `${V}/human/reviews/${reviewId}`,
103
- humanReviewByBridge: (bridgeNodeId) => `${V}/human/reviews/by-bridge/${bridgeNodeId}`,
104
105
  humanReviewSubmit: (reviewId) => `${V}/human/reviews/${reviewId}/submit`,
105
106
  humanReviewCancel: (reviewId) => `${V}/human/reviews/${reviewId}/cancel`,
106
107
  humanReviewDocument: (reviewId) => `${V}/human/reviews/${reviewId}/document`,
@@ -120,9 +121,8 @@ export const routes = {
120
121
  humanInboxResponse: (ticketId) => `${V}/human/inbox/${ticketId}/response`,
121
122
  humanInboxCancel: (ticketId) => `${V}/human/inbox/${ticketId}/cancel`,
122
123
  humanInboxFeedbackResolve: (ticketId, commentId) => `${V}/human/inbox/${ticketId}/feedback-comments/${commentId}/resolve`,
123
- // Durable programmatic human requests. `request_id` is the same opaque
124
- // inbox ticket id the `/v1/human/inbox` routes address, so one request is one
125
- // record across both surfaces.
124
+ // Durable programmatic human requests. A request id is separate from the
125
+ // opaque inbox ticket id used by `/v1/human/inbox`.
126
126
  humanRequests: () => `${V}/human/requests`,
127
127
  humanRequest: (requestId) => `${V}/human/requests/${requestId}`,
128
128
  humanRequestReplace: (requestId) => `${V}/human/requests/${requestId}/replace`,
@@ -5,6 +5,10 @@ import { type CoreHookCatalog } from './core/command-hooks/catalog.js';
5
5
  export declare const SUBTREE_NAMES: readonly string[];
6
6
  export declare function coreHookCatalog(): Promise<CoreHookCatalog>;
7
7
  export declare function coreCommandPaths(): Promise<ReadonlySet<string>>;
8
+ /** Whether argv targets the daemon-control subtree after the dispatcher's global-token normalization. This only selects a smaller canonical tree; `runCli` still parses, renders help, and reports errors. */
9
+ export declare function isDaemonControlInvocation(argv: readonly string[]): boolean;
10
+ /** Assemble the canonical daemon-control definitions without loading settings or plugin discovery. This path exists so `crtr sys daemon restart` can start the new generation that converts pre-SQL user state. */
11
+ export declare function resolveDaemonControlRoot(): Promise<RootDef>;
8
12
  /** Build a root that contains only the subtree `first` dispatches into.
9
13
  * Returns the FULL root when `first` is not a recognized subtree — bare `crtr`,
10
14
  * `-h`/`--help`, `--version`, and any unknown leading token all need the
@@ -1,4 +1,4 @@
1
- import { defineRoot } from './core/command.js';
1
+ import { defineRoot, GLOBAL_TOKENS } from './core/command.js';
2
2
  import { createCoreHookCatalog } from './core/command-hooks/catalog.js';
3
3
  import { composeCoreHooks } from './core/command-hooks/compose.js';
4
4
  import { mark } from './core/timing.js';
@@ -104,6 +104,16 @@ export async function coreCommandPaths() {
104
104
  visit(subtree, subtree.name);
105
105
  return paths;
106
106
  }
107
+ /** Whether argv targets the daemon-control subtree after the dispatcher's global-token normalization. This only selects a smaller canonical tree; `runCli` still parses, renders help, and reports errors. */
108
+ export function isDaemonControlInvocation(argv) {
109
+ const tokens = argv.slice(2).filter((token) => !GLOBAL_TOKENS.has(token));
110
+ return tokens[0] === 'sys' && tokens[1] === 'daemon';
111
+ }
112
+ /** Assemble the canonical daemon-control definitions without loading settings or plugin discovery. This path exists so `crtr sys daemon restart` can start the new generation that converts pre-SQL user state. */
113
+ export async function resolveDaemonControlRoot() {
114
+ const { registerDaemonControlSys } = await import('./commands/sys/daemon.js');
115
+ return defineRoot({ tagline: TAGLINE, globals: GLOBALS, subtrees: [registerDaemonControlSys()] });
116
+ }
107
117
  /** Build a root that contains only the subtree `first` dispatches into.
108
118
  * Returns the FULL root when `first` is not a recognized subtree — bare `crtr`,
109
119
  * `-h`/`--help`, `--version`, and any unknown leading token all need the