@north-light/crouter 0.3.170 → 0.3.172

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 (670) hide show
  1. package/dist/api/client.d.ts +37 -11
  2. package/dist/api/client.js +84 -15
  3. package/dist/api/dto/human.d.ts +53 -39
  4. package/dist/api/dto/human.js +2 -3
  5. package/dist/api/dto/inbox.d.ts +0 -1
  6. package/dist/api/dto/nodes.d.ts +12 -0
  7. package/dist/api/dto/review-comments.d.ts +137 -0
  8. package/dist/api/dto/review-comments.js +5 -0
  9. package/dist/api/dto/reviews.d.ts +109 -0
  10. package/dist/api/dto/reviews.js +5 -0
  11. package/dist/api/index.d.ts +2 -0
  12. package/dist/api/index.js +2 -0
  13. package/dist/api/routes.d.ts +17 -4
  14. package/dist/api/routes.js +21 -5
  15. package/dist/build-root.d.ts +1 -16
  16. package/dist/build-root.js +1 -25
  17. package/dist/builtin-memory/00-runtime-base.md +7 -5
  18. package/dist/builtin-memory/04-base-worker.md +1 -1
  19. package/dist/builtin-memory/04-orchestration-kernel.md +7 -7
  20. package/dist/builtin-memory/05-kinds/design/00-base.md +1 -1
  21. package/dist/builtin-memory/05-kinds/design/01-orchestrator.md +1 -1
  22. package/dist/builtin-memory/05-kinds/developer/00-base.md +1 -1
  23. package/dist/builtin-memory/05-kinds/explore/00-base.md +1 -1
  24. package/dist/builtin-memory/05-kinds/plan/00-base.md +1 -1
  25. package/dist/builtin-memory/05-kinds/plan/01-orchestrator.md +1 -1
  26. package/dist/builtin-memory/05-kinds/review/00-base.md +1 -1
  27. package/dist/builtin-memory/05-kinds/review/companion/00-base.md +20 -0
  28. package/dist/builtin-memory/05-kinds/spec/00-base.md +3 -7
  29. package/dist/builtin-memory/05-kinds/spec/01-orchestrator.md +3 -3
  30. package/dist/builtin-memory/05-kinds/spec/requirements.md +3 -3
  31. package/dist/builtin-memory/design.md +2 -2
  32. package/dist/builtin-memory/insights/capture.md +50 -0
  33. package/dist/builtin-memory/insights/init.md +45 -0
  34. package/dist/builtin-memory/insights/listen.md +9 -0
  35. package/dist/builtin-memory/internal/agent-shaping.md +2 -2
  36. package/dist/builtin-memory/internal/nodes-and-canvas.md +1 -1
  37. package/dist/builtin-memory/internal/plugins.md +12 -11
  38. package/dist/builtin-memory/internal/storage-tiers.md +2 -2
  39. package/dist/builtin-memory/{planning.md → plan/roadmap.md} +3 -3
  40. package/dist/builtin-memory/plan.md +19 -0
  41. package/dist/builtin-memory/spec/guide.md +38 -0
  42. package/dist/builtin-memory/spec/requirements.md +31 -0
  43. package/dist/builtin-memory/spec/roadmap.md +35 -0
  44. package/dist/builtin-memory/spec.md +10 -86
  45. package/dist/builtin-pi-packages/pi-crtr-extensions/README.md +3 -4
  46. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/provider-rotation.test.ts +49 -5
  47. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.d.ts +56 -0
  48. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.js +920 -0
  49. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.ts +221 -156
  50. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/statusline.ts +4 -5
  51. package/dist/cli.js +2 -6
  52. package/dist/clients/attach/__tests__/attach-chrome-remote.test.js +7 -35
  53. package/dist/clients/attach/__tests__/attach-keybindings.test.js +32 -16
  54. package/dist/clients/attach/__tests__/context-message.test.js +142 -6
  55. package/dist/clients/attach/__tests__/crtr-output.test.js +29 -45
  56. package/dist/clients/attach/__tests__/diagram.test.js +1 -1
  57. package/dist/clients/attach/__tests__/file-review-focus.test.js +48 -0
  58. package/dist/clients/attach/__tests__/group-activity.test.js +266 -0
  59. package/dist/clients/attach/__tests__/input-controller-extension-command.test.js +32 -0
  60. package/dist/clients/attach/__tests__/session-identity-refresh.test.js +32 -0
  61. package/dist/clients/attach/__tests__/titled-editor-preview.test.js +1 -2
  62. package/dist/clients/attach/chrome/header.d.ts +10 -0
  63. package/dist/clients/attach/chrome/header.js +30 -0
  64. package/dist/clients/attach/chrome/recap.d.ts +7 -0
  65. package/dist/clients/attach/chrome/recap.js +19 -0
  66. package/dist/clients/attach/chrome/status-line.d.ts +3 -0
  67. package/dist/clients/attach/chrome/status-line.js +5 -0
  68. package/dist/clients/attach/chrome/widgets.js +11 -21
  69. package/dist/clients/attach/command.js +11 -7
  70. package/dist/clients/attach/config.d.ts +4 -0
  71. package/dist/clients/attach/config.js +3 -0
  72. package/dist/clients/attach/input/controller.d.ts +19 -0
  73. package/dist/clients/attach/input/controller.js +62 -28
  74. package/dist/clients/attach/input/titled-editor.d.ts +0 -4
  75. package/dist/clients/attach/input/titled-editor.js +2 -10
  76. package/dist/clients/attach/overlays/file-review.d.ts +9 -5
  77. package/dist/clients/attach/overlays/file-review.js +9 -70
  78. package/dist/clients/attach/overlays/help.d.ts +33 -0
  79. package/dist/clients/attach/overlays/help.js +204 -0
  80. package/dist/clients/attach/render/activity-slot.d.ts +4 -0
  81. package/dist/clients/attach/render/activity-slot.js +13 -0
  82. package/dist/clients/attach/render/chat-view.d.ts +117 -12
  83. package/dist/clients/attach/render/chat-view.js +604 -135
  84. package/dist/clients/attach/render/context-message.d.ts +2 -1
  85. package/dist/clients/attach/render/context-message.js +17 -13
  86. package/dist/clients/attach/render/crtr-output.js +1 -3
  87. package/dist/clients/attach/render/diagram.js +2 -2
  88. package/dist/clients/attach/render/edit-diff.d.ts +4 -1
  89. package/dist/clients/attach/render/edit-diff.js +7 -11
  90. package/dist/clients/attach/render/group-activity.d.ts +32 -0
  91. package/dist/clients/attach/render/group-activity.js +206 -0
  92. package/dist/clients/attach/render/group-recap.d.ts +10 -0
  93. package/dist/clients/attach/render/group-recap.js +93 -0
  94. package/dist/clients/attach/render/html-markdown.d.ts +17 -0
  95. package/dist/clients/attach/render/html-markdown.js +228 -0
  96. package/dist/clients/attach/render/measured-container.d.ts +96 -0
  97. package/dist/clients/attach/render/measured-container.js +322 -0
  98. package/dist/clients/attach/render/scroll-animation.d.ts +8 -0
  99. package/dist/clients/attach/render/scroll-animation.js +80 -0
  100. package/dist/clients/attach/render/tool-calls.js +6 -6
  101. package/dist/clients/attach/render/transcript-copy.d.ts +9 -0
  102. package/dist/clients/attach/render/transcript-copy.js +81 -0
  103. package/dist/clients/attach/render/viewport.d.ts +29 -0
  104. package/dist/clients/attach/render/viewport.js +159 -0
  105. package/dist/clients/attach/session/bindings.d.ts +10 -7
  106. package/dist/clients/attach/session/bindings.js +23 -8
  107. package/dist/clients/attach/session/connection.js +4 -5
  108. package/dist/clients/attach/session/context.d.ts +6 -4
  109. package/dist/clients/attach/session/frame.d.ts +34 -0
  110. package/dist/clients/attach/session/frame.js +176 -0
  111. package/dist/clients/attach/session/frames.d.ts +4 -1
  112. package/dist/clients/attach/session/frames.js +14 -1
  113. package/dist/clients/attach/session/identity.js +4 -3
  114. package/dist/clients/attach/session/input-wiring.d.ts +14 -4
  115. package/dist/clients/attach/session/input-wiring.js +15 -13
  116. package/dist/clients/attach/session/invariant.d.ts +9 -0
  117. package/dist/clients/attach/session/invariant.js +15 -0
  118. package/dist/clients/attach/session/keys.d.ts +10 -2
  119. package/dist/clients/attach/session/keys.js +13 -5
  120. package/dist/clients/attach/session/layout.d.ts +10 -8
  121. package/dist/clients/attach/session/layout.js +33 -34
  122. package/dist/clients/attach/session/mouse.d.ts +18 -0
  123. package/dist/clients/attach/session/mouse.js +64 -0
  124. package/dist/clients/attach/session/pane-tag.d.ts +3 -0
  125. package/dist/clients/attach/session/pane-tag.js +51 -8
  126. package/dist/clients/attach/session/reconnect.d.ts +3 -0
  127. package/dist/clients/attach/session/reconnect.js +42 -5
  128. package/dist/clients/attach/session/surface-frame.d.ts +20 -0
  129. package/dist/clients/attach/session/surface-frame.js +73 -0
  130. package/dist/clients/attach/session/surface-host.d.ts +64 -0
  131. package/dist/clients/attach/session/surface-host.js +255 -0
  132. package/dist/clients/attach/session/whip.d.ts +17 -0
  133. package/dist/clients/attach/session/whip.js +334 -0
  134. package/dist/clients/attach/slash/dispatch.d.ts +13 -1
  135. package/dist/clients/attach/slash/dispatch.js +51 -29
  136. package/dist/clients/attach/viewer.js +907 -819
  137. package/dist/clients/conversation/conversation.d.ts +65 -0
  138. package/dist/clients/conversation/conversation.js +318 -0
  139. package/dist/clients/conversation/frames.d.ts +30 -0
  140. package/dist/clients/conversation/frames.js +52 -0
  141. package/dist/clients/conversation/region.d.ts +51 -0
  142. package/dist/clients/conversation/region.js +265 -0
  143. package/dist/clients/conversation/submit.d.ts +38 -0
  144. package/dist/clients/conversation/submit.js +51 -0
  145. package/dist/clients/inbox/__tests__/inbox-controller.test.js +247 -0
  146. package/dist/clients/inbox/__tests__/mount-panel.test.js +776 -0
  147. package/dist/clients/inbox/controller.d.ts +79 -0
  148. package/dist/clients/inbox/controller.js +448 -0
  149. package/dist/clients/inbox/deck-adapter.d.ts +29 -0
  150. package/dist/clients/inbox/deck-adapter.js +62 -0
  151. package/dist/clients/inbox/layout.d.ts +8 -0
  152. package/dist/clients/inbox/layout.js +9 -0
  153. package/dist/clients/inbox/resolve.d.ts +10 -0
  154. package/dist/clients/inbox/resolve.js +34 -0
  155. package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.js +29 -0
  156. package/dist/clients/inbox/review/__tests__/remap.test.js +196 -0
  157. package/dist/clients/inbox/review/__tests__/review-core.test.js +341 -0
  158. package/dist/clients/inbox/review/anchors.d.ts +41 -0
  159. package/dist/clients/inbox/review/anchors.js +89 -0
  160. package/dist/clients/inbox/review/columns.d.ts +22 -0
  161. package/dist/clients/inbox/review/columns.js +40 -0
  162. package/dist/clients/inbox/review/comments-client.d.ts +66 -0
  163. package/dist/clients/inbox/review/comments-client.js +98 -0
  164. package/dist/clients/inbox/review/composition.d.ts +60 -0
  165. package/dist/clients/inbox/review/composition.js +278 -0
  166. package/dist/clients/inbox/review/document-region.d.ts +120 -0
  167. package/dist/clients/inbox/review/document-region.js +902 -0
  168. package/dist/clients/inbox/review/frame.d.ts +45 -0
  169. package/dist/clients/inbox/review/frame.js +215 -0
  170. package/dist/clients/inbox/review/keys.d.ts +67 -0
  171. package/dist/clients/inbox/review/keys.js +130 -0
  172. package/dist/clients/inbox/review/launch.d.ts +10 -0
  173. package/dist/clients/inbox/review/launch.js +129 -0
  174. package/dist/clients/inbox/review/live-source.d.ts +24 -0
  175. package/dist/clients/inbox/review/live-source.js +160 -0
  176. package/dist/clients/inbox/review/nvim.d.ts +13 -0
  177. package/dist/clients/inbox/review/nvim.js +42 -0
  178. package/dist/clients/inbox/review/remap.d.ts +51 -0
  179. package/dist/clients/inbox/review/remap.js +157 -0
  180. package/dist/clients/inbox/review/review-client.d.ts +30 -0
  181. package/dist/clients/inbox/review/review-client.js +107 -0
  182. package/dist/clients/inbox/review/roundtrip.d.ts +5 -0
  183. package/dist/clients/inbox/review/roundtrip.js +36 -0
  184. package/dist/clients/inbox/review/state.d.ts +143 -0
  185. package/dist/clients/inbox/review/state.js +282 -0
  186. package/dist/clients/inbox/review-adapter.d.ts +29 -0
  187. package/dist/clients/inbox/review-adapter.js +92 -0
  188. package/dist/clients/inbox/review-visibility.d.ts +5 -0
  189. package/dist/clients/inbox/review-visibility.js +19 -0
  190. package/dist/clients/inbox/surface.d.ts +19 -0
  191. package/dist/clients/inbox/surface.js +128 -0
  192. package/dist/clients/inbox/tui/ansi.d.ts +66 -0
  193. package/dist/clients/inbox/tui/ansi.js +317 -0
  194. package/dist/clients/inbox/tui/clipboard.d.ts +2 -0
  195. package/dist/clients/inbox/tui/clipboard.js +26 -0
  196. package/dist/clients/inbox/tui/input.d.ts +7 -0
  197. package/dist/clients/inbox/tui/input.js +653 -0
  198. package/dist/clients/inbox/tui/keys.d.ts +28 -0
  199. package/dist/clients/inbox/tui/keys.js +111 -0
  200. package/dist/clients/inbox/tui/panel.d.ts +2 -0
  201. package/dist/clients/inbox/tui/panel.js +217 -0
  202. package/dist/clients/inbox/tui/render.d.ts +37 -0
  203. package/dist/clients/inbox/tui/render.js +476 -0
  204. package/dist/clients/inbox/tui/types.d.ts +57 -0
  205. package/dist/clients/inbox/tui/types.js +1 -0
  206. package/dist/clients/inbox/tui.d.ts +6 -0
  207. package/dist/clients/inbox/tui.js +74 -0
  208. package/dist/clients/surfaces/host.d.ts +66 -0
  209. package/dist/clients/surfaces/host.js +1 -0
  210. package/dist/clients/surfaces/region.d.ts +16 -0
  211. package/dist/clients/surfaces/region.js +1 -0
  212. package/dist/clients/web/__tests__/push-engine.test.js +14 -158
  213. package/dist/clients/web/dev-server.d.ts +3 -3
  214. package/dist/clients/web/dev-server.js +9 -23
  215. package/dist/clients/web/events.js +4 -6
  216. package/dist/clients/web/push-engine.d.ts +2 -66
  217. package/dist/clients/web/push-engine.js +30 -161
  218. package/dist/clients/web/push-registry.d.ts +0 -4
  219. package/dist/clients/web/push-registry.js +2 -7
  220. package/dist/clients/web/server.js +3 -35
  221. package/dist/clients/web/web-client/shared/protocol.d.ts +0 -108
  222. package/dist/clients/web/web-cmd.js +2 -2
  223. package/dist/commands/__tests__/human.test.js +27 -15
  224. package/dist/commands/api-client.js +3 -3
  225. package/dist/commands/canvas-browse.js +1 -1
  226. package/dist/commands/canvas-issue.js +1 -1
  227. package/dist/commands/canvas-use.js +1 -1
  228. package/dist/commands/human/doc.d.ts +2 -0
  229. package/dist/commands/human/doc.js +98 -0
  230. package/dist/commands/human/inbox.d.ts +2 -0
  231. package/dist/commands/human/inbox.js +101 -0
  232. package/dist/commands/human/prompts.d.ts +2 -3
  233. package/dist/commands/human/prompts.js +27 -180
  234. package/dist/commands/human/queue.d.ts +1 -5
  235. package/dist/commands/human/queue.js +54 -216
  236. package/dist/commands/human/review.d.ts +2 -0
  237. package/dist/commands/human/review.js +298 -0
  238. package/dist/commands/human/shared.d.ts +2 -69
  239. package/dist/commands/human/shared.js +1 -181
  240. package/dist/commands/human.js +15 -20
  241. package/dist/commands/memory/__tests__/lint.test.d.ts +1 -0
  242. package/dist/commands/memory/__tests__/lint.test.js +15 -0
  243. package/dist/commands/memory/delete.js +2 -2
  244. package/dist/commands/memory/lint.d.ts +1 -0
  245. package/dist/commands/memory/lint.js +21 -3
  246. package/dist/commands/memory/read.js +4 -4
  247. package/dist/commands/node.js +8 -7
  248. package/dist/commands/pkg/plugin-manage.js +143 -68
  249. package/dist/commands/surface-inspect.js +2 -2
  250. package/dist/commands/surface.js +6 -12
  251. package/dist/commands/sys/__tests__/setup-core.test.js +9 -5
  252. package/dist/commands/sys/__tests__/setup-front-door.test.js +7 -42
  253. package/dist/commands/sys/config.js +29 -3
  254. package/dist/commands/sys/feedback.js +1 -1
  255. package/dist/commands/sys/setup-core.d.ts +12 -11
  256. package/dist/commands/sys/setup-core.js +55 -46
  257. package/dist/commands/sys/setup-wizard.d.ts +4 -1
  258. package/dist/commands/sys/setup-wizard.js +50 -9
  259. package/dist/commands/sys/sync-deps.js +1 -1
  260. package/dist/commands/sys.js +4 -6
  261. package/dist/core/__tests__/broker-sdk-wiring.test.js +6 -1
  262. package/dist/core/__tests__/broker-snapshot-history.test.js +9 -1
  263. package/dist/core/__tests__/dead-node-policy-table.test.js +3 -4
  264. package/dist/core/__tests__/fixtures/fake-engine.d.ts +8 -5
  265. package/dist/core/__tests__/fixtures/fake-engine.js +28 -2
  266. package/dist/core/__tests__/full/broker-provider-retry.test.js +87 -2
  267. package/dist/core/__tests__/full/broker-whip-interrupt.test.d.ts +1 -0
  268. package/dist/core/__tests__/full/broker-whip-interrupt.test.js +39 -0
  269. package/dist/core/__tests__/full/detach-focus.test.js +1 -1
  270. package/dist/core/__tests__/human-deliver-e2e.test.js +64 -64
  271. package/dist/core/__tests__/human-deliver.test.js +71 -345
  272. package/dist/core/__tests__/inline-memory-refs.test.js +2 -12
  273. package/dist/core/__tests__/memory-resolver-precedence.test.js +12 -15
  274. package/dist/core/__tests__/migration.test.js +10 -0
  275. package/dist/core/__tests__/model-pin-durability.test.js +14 -0
  276. package/dist/core/__tests__/phase4-review-migration.test.d.ts +1 -0
  277. package/dist/core/__tests__/phase4-review-migration.test.js +100 -0
  278. package/dist/core/__tests__/phase4-review-store.test.d.ts +1 -0
  279. package/dist/core/__tests__/phase4-review-store.test.js +143 -0
  280. package/dist/core/__tests__/remote-canvas-target.test.js +2 -2
  281. package/dist/core/__tests__/revive.test.js +22 -53
  282. package/dist/core/__tests__/session-cycles.test.js +48 -18
  283. package/dist/core/__tests__/spawn-no-kickoff.test.js +8 -12
  284. package/dist/core/__tests__/stop-guard.test.js +16 -1
  285. package/dist/core/__tests__/tmux-surface.test.js +21 -25
  286. package/dist/core/asset-root.d.ts +7 -0
  287. package/dist/core/asset-root.js +18 -0
  288. package/dist/core/broker-client/client.d.ts +0 -7
  289. package/dist/core/broker-client/client.js +4 -10
  290. package/dist/core/broker-client/transport-relay.d.ts +3 -4
  291. package/dist/core/broker-client/transport-relay.js +3 -4
  292. package/dist/core/canvas/__tests__/attention.test.js +1 -1
  293. package/dist/core/canvas/__tests__/remote-canvas-source.test.js +1 -1
  294. package/dist/core/canvas/__tests__/remote-transport.test.d.ts +1 -0
  295. package/dist/core/{view/__tests__/transport-remote.test.js → canvas/__tests__/remote-transport.test.js} +2 -2
  296. package/dist/core/canvas/__tests__/render-remote.test.js +1 -1
  297. package/dist/core/canvas/attention.js +4 -4
  298. package/dist/core/canvas/canvas.d.ts +6 -11
  299. package/dist/core/canvas/canvas.js +11 -33
  300. package/dist/core/canvas/db.js +207 -38
  301. package/dist/core/canvas/extensions.d.ts +1 -1
  302. package/dist/core/canvas/extensions.js +8 -1
  303. package/dist/core/canvas/index.d.ts +0 -1
  304. package/dist/core/canvas/index.js +0 -1
  305. package/dist/core/canvas/nav-model.d.ts +1 -1
  306. package/dist/core/canvas/nav-model.js +1 -1
  307. package/dist/core/canvas/paths.d.ts +5 -0
  308. package/dist/core/canvas/paths.js +16 -0
  309. package/dist/core/canvas/remote-canvas-source.js +2 -2
  310. package/dist/core/canvas/remote-transport.d.ts +7 -0
  311. package/dist/core/{view/transport-remote.js → canvas/remote-transport.js} +3 -4
  312. package/dist/core/canvas/source.js +1 -1
  313. package/dist/core/canvas/status-glyph.js +4 -12
  314. package/dist/core/canvas/types.d.ts +10 -35
  315. package/dist/core/clipboard-text.d.ts +8 -0
  316. package/dist/core/clipboard-text.js +18 -0
  317. package/dist/core/command-manifests/registry.d.ts +1 -3
  318. package/dist/core/command-plugins/bundle.d.ts +29 -0
  319. package/dist/core/command-plugins/bundle.js +198 -0
  320. package/dist/core/command-plugins/discovery.d.ts +0 -8
  321. package/dist/core/command-plugins/discovery.js +2 -39
  322. package/dist/core/command-plugins/transport/http-fetch.d.ts +4 -30
  323. package/dist/core/command-plugins/transport/http-fetch.js +17 -95
  324. package/dist/core/command.d.ts +1 -13
  325. package/dist/core/command.js +1 -16
  326. package/dist/core/config.d.ts +4 -0
  327. package/dist/core/config.js +28 -3
  328. package/dist/core/document-lines.d.ts +4 -0
  329. package/dist/core/document-lines.js +6 -0
  330. package/dist/core/feed/feed.d.ts +2 -0
  331. package/dist/core/feed/feed.js +11 -7
  332. package/dist/core/human/__tests__/inbox-cancel-worker.d.ts +1 -0
  333. package/dist/core/human/__tests__/inbox-cancel-worker.js +7 -0
  334. package/dist/core/human/__tests__/inbox-claim-worker.d.ts +1 -0
  335. package/dist/core/human/__tests__/inbox-claim-worker.js +17 -0
  336. package/dist/core/human/__tests__/inbox-core.test.d.ts +1 -0
  337. package/dist/core/human/__tests__/inbox-core.test.js +144 -0
  338. package/dist/core/human/__tests__/inbox-stale-claim-worker.d.ts +1 -0
  339. package/dist/core/human/__tests__/inbox-stale-claim-worker.js +8 -0
  340. package/dist/core/human/__tests__/visible-paths.test.d.ts +1 -0
  341. package/dist/{clients/attach → core/human}/__tests__/visible-paths.test.js +9 -0
  342. package/dist/core/human/claim.d.ts +23 -0
  343. package/dist/core/human/claim.js +67 -0
  344. package/dist/core/human/convention.d.ts +30 -0
  345. package/dist/core/human/convention.js +202 -0
  346. package/dist/core/human/deck-factories.d.ts +8 -0
  347. package/dist/core/human/deck-factories.js +15 -0
  348. package/dist/core/human/deck-schema.d.ts +70 -0
  349. package/dist/core/human/deck-schema.js +92 -0
  350. package/dist/core/human/root.d.ts +7 -0
  351. package/dist/core/human/root.js +37 -0
  352. package/dist/core/human/scan.d.ts +3 -0
  353. package/dist/core/human/scan.js +76 -0
  354. package/dist/core/human/summary.d.ts +8 -0
  355. package/dist/core/human/summary.js +44 -0
  356. package/dist/core/human/tickets.d.ts +49 -0
  357. package/dist/core/human/tickets.js +190 -0
  358. package/dist/core/human/types.d.ts +136 -0
  359. package/dist/core/human/types.js +5 -0
  360. package/dist/{clients/attach → core/human}/visible-paths.d.ts +1 -1
  361. package/dist/{clients/attach → core/human}/visible-paths.js +3 -2
  362. package/dist/core/inspector/chrome.d.ts +6 -0
  363. package/dist/core/inspector/chrome.js +14 -0
  364. package/dist/core/inspector/contract.d.ts +105 -0
  365. package/dist/core/inspector/contract.js +1 -0
  366. package/dist/core/inspector/core.d.ts +4 -5
  367. package/dist/core/inspector/core.js +3 -5
  368. package/dist/core/inspector/host.d.ts +46 -0
  369. package/dist/core/{tui → inspector}/host.js +42 -208
  370. package/dist/core/inspector/text.d.ts +2 -2
  371. package/dist/core/inspector/transport.d.ts +6 -0
  372. package/dist/core/inspector/transport.js +36 -0
  373. package/dist/core/inspector/tui.d.ts +2 -2
  374. package/dist/core/inspector/tui.js +15 -15
  375. package/dist/core/keybindings/__tests__/inbox-affordance.test.js +11 -11
  376. package/dist/core/keybindings/__tests__/resolve.test.js +10 -19
  377. package/dist/core/keybindings/attach-control.d.ts +9 -3
  378. package/dist/core/keybindings/attach-control.js +3 -1
  379. package/dist/core/keybindings/catalog.d.ts +6 -5
  380. package/dist/core/keybindings/catalog.js +61 -133
  381. package/dist/core/keybindings/inbox.d.ts +5 -6
  382. package/dist/core/keybindings/inbox.js +9 -10
  383. package/dist/core/keybindings/index.d.ts +3 -3
  384. package/dist/core/keybindings/index.js +3 -3
  385. package/dist/core/keybindings/persistence.d.ts +5 -1
  386. package/dist/core/keybindings/persistence.js +24 -6
  387. package/dist/core/keybindings/resolve.d.ts +6 -0
  388. package/dist/core/keybindings/resolve.js +10 -3
  389. package/dist/core/memory/inline-ref-grammar.js +2 -3
  390. package/dist/core/memory-resolver.d.ts +27 -29
  391. package/dist/core/memory-resolver.js +45 -39
  392. package/dist/core/model-routes.d.ts +33 -0
  393. package/dist/core/model-routes.js +42 -3
  394. package/dist/core/preview-registry.js +17 -55
  395. package/dist/core/profiles/select.js +3 -3
  396. package/dist/core/{view/remote-canvas-target.d.ts → remote-canvas-target.d.ts} +2 -2
  397. package/dist/core/{view/remote-canvas-target.js → remote-canvas-target.js} +4 -4
  398. package/dist/core/review/__tests__/capture-origin.test.d.ts +1 -0
  399. package/dist/core/review/__tests__/capture-origin.test.js +139 -0
  400. package/dist/core/review/__tests__/comments.test.d.ts +1 -0
  401. package/dist/core/review/__tests__/comments.test.js +98 -0
  402. package/dist/core/review/__tests__/project.test.d.ts +1 -0
  403. package/dist/core/review/__tests__/project.test.js +71 -0
  404. package/dist/core/review/__tests__/remap.test.d.ts +1 -0
  405. package/dist/core/review/__tests__/remap.test.js +159 -0
  406. package/dist/core/review/__tests__/stage-identity.test.d.ts +1 -0
  407. package/dist/core/review/__tests__/stage-identity.test.js +140 -0
  408. package/dist/core/review/birth.d.ts +7 -0
  409. package/dist/core/review/birth.js +23 -0
  410. package/dist/core/review/comments.d.ts +69 -0
  411. package/dist/core/review/comments.js +295 -0
  412. package/dist/core/review/companion.d.ts +35 -0
  413. package/dist/core/review/companion.js +205 -0
  414. package/dist/core/review/document.d.ts +27 -0
  415. package/dist/core/review/document.js +138 -0
  416. package/dist/core/review/project.d.ts +13 -0
  417. package/dist/core/review/project.js +58 -0
  418. package/dist/core/review/realize.d.ts +19 -0
  419. package/dist/core/review/realize.js +217 -0
  420. package/dist/core/review/remap.d.ts +24 -0
  421. package/dist/core/review/remap.js +156 -0
  422. package/dist/core/review/signal.d.ts +5 -0
  423. package/dist/core/review/signal.js +31 -0
  424. package/dist/core/review/stage.d.ts +26 -0
  425. package/dist/core/review/stage.js +184 -0
  426. package/dist/core/review/store.d.ts +46 -0
  427. package/dist/core/review/store.js +163 -0
  428. package/dist/core/review/ticket-filter.d.ts +17 -0
  429. package/dist/core/review/ticket-filter.js +32 -0
  430. package/dist/core/review/types.d.ts +130 -0
  431. package/dist/core/review/types.js +23 -0
  432. package/dist/core/runtime/__tests__/session-visibility.test.d.ts +1 -0
  433. package/dist/core/runtime/__tests__/session-visibility.test.js +119 -0
  434. package/dist/core/runtime/bearings.d.ts +5 -17
  435. package/dist/core/runtime/bearings.js +88 -71
  436. package/dist/core/runtime/broker-protocol.d.ts +31 -8
  437. package/dist/core/runtime/broker.d.ts +15 -1
  438. package/dist/core/runtime/broker.js +573 -141
  439. package/dist/core/runtime/canvas-extensions.d.ts +4 -5
  440. package/dist/core/runtime/canvas-extensions.js +5 -5
  441. package/dist/core/runtime/front-door.js +4 -4
  442. package/dist/core/runtime/headless-pi.d.ts +24 -0
  443. package/dist/core/runtime/headless-pi.js +152 -0
  444. package/dist/core/runtime/kickoff.d.ts +1 -5
  445. package/dist/core/runtime/kickoff.js +1 -5
  446. package/dist/core/runtime/model-registry.d.ts +3 -0
  447. package/dist/core/runtime/model-registry.js +13 -0
  448. package/dist/core/runtime/naming-persist.d.ts +4 -0
  449. package/dist/core/runtime/naming-persist.js +27 -1
  450. package/dist/core/runtime/naming.d.ts +17 -12
  451. package/dist/core/runtime/naming.js +91 -140
  452. package/dist/core/runtime/node-read.js +19 -10
  453. package/dist/core/runtime/nodes.d.ts +9 -14
  454. package/dist/core/runtime/nodes.js +3 -53
  455. package/dist/core/runtime/package-health.d.ts +6 -21
  456. package/dist/core/runtime/package-health.js +12 -123
  457. package/dist/core/runtime/placement-tmux.d.ts +2 -1
  458. package/dist/core/runtime/placement-tmux.js +6 -4
  459. package/dist/core/runtime/placement.d.ts +1 -0
  460. package/dist/core/runtime/placement.js +4 -8
  461. package/dist/core/runtime/promote.js +3 -0
  462. package/dist/core/runtime/recap.d.ts +2 -7
  463. package/dist/core/runtime/recap.js +35 -69
  464. package/dist/core/runtime/revive.js +34 -77
  465. package/dist/core/runtime/session-cycles.d.ts +4 -0
  466. package/dist/core/runtime/session-cycles.js +14 -1
  467. package/dist/core/runtime/session-visibility.d.ts +37 -0
  468. package/dist/core/runtime/session-visibility.js +83 -0
  469. package/dist/core/runtime/spawn.js +10 -22
  470. package/dist/core/runtime/stop-guard.d.ts +1 -1
  471. package/dist/core/runtime/stop-guard.js +18 -13
  472. package/dist/core/runtime/surface-bg.js +1 -1
  473. package/dist/core/runtime/tmux-chrome.d.ts +1 -1
  474. package/dist/core/runtime/tmux-chrome.js +1 -1
  475. package/dist/core/runtime/tmux.d.ts +35 -7
  476. package/dist/core/runtime/tmux.js +439 -62
  477. package/dist/core/runtime/tool-group-summary.d.ts +19 -0
  478. package/dist/core/runtime/tool-group-summary.js +88 -0
  479. package/dist/core/scope.d.ts +2 -7
  480. package/dist/core/scope.js +9 -35
  481. package/dist/core/substrate/schema.d.ts +2 -2
  482. package/dist/core/termrender/code-doc.d.ts +12 -0
  483. package/dist/core/termrender/code-doc.js +92 -0
  484. package/dist/core/termrender/display.d.ts +12 -0
  485. package/dist/core/termrender/display.js +19 -0
  486. package/dist/core/termrender/termrender.d.ts +73 -0
  487. package/dist/core/termrender/termrender.js +795 -0
  488. package/dist/core/termrender/version.d.ts +1 -0
  489. package/dist/core/termrender/version.js +1 -0
  490. package/dist/core/tui/terminal.js +1 -2
  491. package/dist/core/user-settings.d.ts +71 -3
  492. package/dist/core/user-settings.js +83 -1
  493. package/dist/daemon/api/__tests__/inbox.test.js +44 -133
  494. package/dist/daemon/api/handlers/human.d.ts +0 -10
  495. package/dist/daemon/api/handlers/human.js +104 -702
  496. package/dist/daemon/api/handlers/inbox.js +113 -142
  497. package/dist/daemon/api/handlers/review-comments.d.ts +2 -0
  498. package/dist/daemon/api/handlers/review-comments.js +500 -0
  499. package/dist/daemon/api/handlers/reviews.d.ts +2 -0
  500. package/dist/daemon/api/handlers/reviews.js +287 -0
  501. package/dist/daemon/api/map.d.ts +22 -7
  502. package/dist/daemon/api/map.js +159 -11
  503. package/dist/daemon/api/server.js +4 -0
  504. package/dist/daemon/cron-run.js +6 -9
  505. package/dist/daemon/crtrd.js +17 -33
  506. package/dist/daemon/fleet.d.ts +1 -8
  507. package/dist/daemon/fleet.js +4 -30
  508. package/dist/daemon/human/finish.d.ts +14 -0
  509. package/dist/daemon/human/finish.js +115 -0
  510. package/dist/daemon/human/sweep.d.ts +6 -0
  511. package/dist/daemon/human/sweep.js +49 -0
  512. package/dist/daemon/messaging/node-message.d.ts +18 -0
  513. package/dist/daemon/messaging/node-message.js +70 -0
  514. package/dist/daemon/review/comment-notify.d.ts +26 -0
  515. package/dist/daemon/review/comment-notify.js +107 -0
  516. package/dist/daemon/review/deliver.d.ts +7 -0
  517. package/dist/daemon/review/deliver.js +56 -0
  518. package/dist/daemon/review/finish.d.ts +22 -0
  519. package/dist/daemon/review/finish.js +254 -0
  520. package/dist/daemon/review/sweep.d.ts +11 -0
  521. package/dist/daemon/review/sweep.js +120 -0
  522. package/dist/index.d.ts +2 -0
  523. package/dist/index.js +2 -2
  524. package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +42 -64
  525. package/dist/pi-extensions/__tests__/canvas-recap.test.d.ts +1 -0
  526. package/dist/pi-extensions/__tests__/canvas-recap.test.js +159 -0
  527. package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +16 -38
  528. package/dist/pi-extensions/__tests__/canvas-structured-output.test.d.ts +1 -0
  529. package/dist/pi-extensions/__tests__/canvas-structured-output.test.js +63 -0
  530. package/dist/pi-extensions/canvas-context-intro.d.ts +8 -11
  531. package/dist/pi-extensions/canvas-context-intro.js +50 -104
  532. package/dist/pi-extensions/canvas-recap.d.ts +15 -2
  533. package/dist/pi-extensions/canvas-recap.js +192 -69
  534. package/dist/pi-extensions/canvas-review-boundary.d.ts +59 -0
  535. package/dist/pi-extensions/canvas-review-boundary.js +81 -0
  536. package/dist/pi-extensions/canvas-stophook.d.ts +3 -3
  537. package/dist/pi-extensions/canvas-stophook.js +78 -128
  538. package/dist/pi-extensions/canvas-structured-output.js +52 -8
  539. package/dist/shared/generated-context.d.ts +29 -4
  540. package/dist/shared/generated-context.js +122 -7
  541. package/dist/shared/tool-groups.d.ts +23 -0
  542. package/dist/shared/tool-groups.js +60 -0
  543. package/dist/shared/working-activity.d.ts +8 -0
  544. package/dist/shared/working-activity.js +26 -0
  545. package/dist/types.d.ts +36 -2
  546. package/dist/types.js +51 -0
  547. package/dist/web-client/assets/index-CCPaLeW7.css +2 -0
  548. package/dist/web-client/assets/index-kyOWsnZK.js +86 -0
  549. package/dist/web-client/index.html +2 -2
  550. package/dist/web-client/sw.js +1 -1
  551. package/docs/compat/hearth-crtr-v4.md +2 -2
  552. package/docs/compat/hearth-crtr-v5.md +4 -2
  553. package/docs/public-api.md +3 -3
  554. package/package.json +21 -14
  555. package/runtime.lock.json +4661 -1453
  556. package/scripts/postinstall.mjs +15 -2
  557. package/dist/builtin-pi-packages/pi-mode-switch/README.md +0 -36
  558. package/dist/builtin-pi-packages/pi-mode-switch/bin/mode +0 -36
  559. package/dist/builtin-pi-packages/pi-mode-switch/extensions/index.ts +0 -449
  560. package/dist/builtin-pi-packages/pi-mode-switch/package.json +0 -14
  561. package/dist/builtin-pi-packages/pi-mode-switch/tsconfig.json +0 -9
  562. package/dist/builtin-views/_lib/states.mjs +0 -161
  563. package/dist/builtin-views/canvas/core.mjs +0 -657
  564. package/dist/builtin-views/canvas/text.mjs +0 -58
  565. package/dist/builtin-views/canvas/tui.mjs +0 -168
  566. package/dist/builtin-views/canvas/web.jsx +0 -121
  567. package/dist/builtin-views/chat/core.mjs +0 -684
  568. package/dist/builtin-views/chat/text.mjs +0 -101
  569. package/dist/builtin-views/chat/tui.mjs +0 -360
  570. package/dist/builtin-views/chat/web.jsx +0 -362
  571. package/dist/builtin-views/git-pr/core.mjs +0 -673
  572. package/dist/builtin-views/git-pr/text.mjs +0 -84
  573. package/dist/builtin-views/git-pr/tui.mjs +0 -301
  574. package/dist/builtin-views/git-pr/web.jsx +0 -216
  575. package/dist/builtin-views/inbox/_lib/render.mjs +0 -175
  576. package/dist/builtin-views/inbox/core.mjs +0 -1273
  577. package/dist/builtin-views/inbox/text.mjs +0 -73
  578. package/dist/builtin-views/inbox/tui.mjs +0 -314
  579. package/dist/builtin-views/inbox/web.jsx +0 -188
  580. package/dist/builtin-views/linkedin/core.mjs +0 -906
  581. package/dist/builtin-views/linkedin/text.mjs +0 -69
  582. package/dist/builtin-views/linkedin/tui.mjs +0 -413
  583. package/dist/builtin-views/linkedin/web.jsx +0 -206
  584. package/dist/builtin-views/prompt-review/core.mjs +0 -735
  585. package/dist/builtin-views/prompt-review/text.mjs +0 -15
  586. package/dist/builtin-views/prompt-review/tui.mjs +0 -196
  587. package/dist/builtin-views/prompt-review/web.jsx +0 -484
  588. package/dist/builtin-views/workspace-sidebar/__tests__/core.test.js +0 -50
  589. package/dist/builtin-views/workspace-sidebar/__tests__/core.test.ts +0 -53
  590. package/dist/builtin-views/workspace-sidebar/core.mjs +0 -670
  591. package/dist/builtin-views/workspace-sidebar/text.mjs +0 -53
  592. package/dist/builtin-views/workspace-sidebar/tui.mjs +0 -141
  593. package/dist/builtin-views/workspace-sidebar/web.jsx +0 -109
  594. package/dist/clients/attach/session/mode.d.ts +0 -25
  595. package/dist/clients/attach/session/mode.js +0 -97
  596. package/dist/commands/sys/promptstudio.d.ts +0 -2
  597. package/dist/commands/sys/promptstudio.js +0 -65
  598. package/dist/commands/view-cycle.d.ts +0 -2
  599. package/dist/commands/view-cycle.js +0 -130
  600. package/dist/commands/view-list.d.ts +0 -2
  601. package/dist/commands/view-list.js +0 -66
  602. package/dist/commands/view-new.d.ts +0 -2
  603. package/dist/commands/view-new.js +0 -74
  604. package/dist/commands/view-pick.d.ts +0 -6
  605. package/dist/commands/view-pick.js +0 -129
  606. package/dist/commands/view-run.d.ts +0 -2
  607. package/dist/commands/view-run.js +0 -214
  608. package/dist/commands/view.d.ts +0 -2
  609. package/dist/commands/view.js +0 -31
  610. package/dist/commands/workspace.d.ts +0 -2
  611. package/dist/commands/workspace.js +0 -165
  612. package/dist/core/__tests__/chat-view-reconnect.test.js +0 -105
  613. package/dist/core/__tests__/full/consult-startup-failure.test.js +0 -124
  614. package/dist/core/canvas/__tests__/human-work-outbox.test.js +0 -123
  615. package/dist/core/canvas/human-work-outbox.d.ts +0 -73
  616. package/dist/core/canvas/human-work-outbox.js +0 -261
  617. package/dist/core/command-plugins/store.d.ts +0 -16
  618. package/dist/core/command-plugins/store.js +0 -64
  619. package/dist/core/keybindings/__tests__/bespoke-consumers.test.js +0 -40
  620. package/dist/core/runtime/fault-recovery-nudge.d.ts +0 -3
  621. package/dist/core/runtime/fault-recovery-nudge.js +0 -3
  622. package/dist/core/tui/__tests__/host-keybindings.test.js +0 -113
  623. package/dist/core/tui/host.d.ts +0 -66
  624. package/dist/core/view/__tests__/transport-cache.test.js +0 -62
  625. package/dist/core/view/bridge.d.ts +0 -10
  626. package/dist/core/view/bridge.js +0 -31
  627. package/dist/core/view/chrome.d.ts +0 -9
  628. package/dist/core/view/chrome.js +0 -22
  629. package/dist/core/view/contract.d.ts +0 -205
  630. package/dist/core/view/contract.js +0 -23
  631. package/dist/core/view/loader.d.ts +0 -31
  632. package/dist/core/view/loader.js +0 -188
  633. package/dist/core/view/stream-local.d.ts +0 -3
  634. package/dist/core/view/stream-local.js +0 -231
  635. package/dist/core/view/transport-cache.d.ts +0 -8
  636. package/dist/core/view/transport-cache.js +0 -38
  637. package/dist/core/view/transport-local.d.ts +0 -7
  638. package/dist/core/view/transport-local.js +0 -83
  639. package/dist/core/view/transport-remote.d.ts +0 -2
  640. package/dist/core/view/transport.d.ts +0 -10
  641. package/dist/core/view/transport.js +0 -15
  642. package/dist/pi-extensions/naming-tool.d.ts +0 -24
  643. package/dist/pi-extensions/naming-tool.js +0 -67
  644. package/dist/prompts/view.d.ts +0 -7
  645. package/dist/prompts/view.js +0 -172
  646. package/dist/web/ViewChrome.d.ts +0 -7
  647. package/dist/web/ViewChrome.js +0 -28
  648. package/dist/web/ViewPane.d.ts +0 -39
  649. package/dist/web/ViewPane.js +0 -48
  650. package/dist/web/index.d.ts +0 -8
  651. package/dist/web/index.js +0 -22
  652. package/dist/web/runtime.d.ts +0 -39
  653. package/dist/web/runtime.js +0 -232
  654. package/dist/web/states.d.ts +0 -24
  655. package/dist/web/states.js +0 -24
  656. package/dist/web/transport-http.d.ts +0 -5
  657. package/dist/web/transport-http.js +0 -34
  658. package/dist/web/transport-stream.d.ts +0 -3
  659. package/dist/web/transport-stream.js +0 -204
  660. package/dist/web-client/assets/index-U_NZ66VE.js +0 -79
  661. package/dist/web-client/assets/index-aaeu4adv.css +0 -2
  662. /package/dist/{builtin-views/workspace-sidebar/__tests__/core.test.d.ts → clients/attach/__tests__/file-review-focus.test.d.ts} +0 -0
  663. /package/dist/clients/attach/__tests__/{visible-paths.test.d.ts → group-activity.test.d.ts} +0 -0
  664. /package/dist/{core/__tests__/chat-view-reconnect.test.d.ts → clients/attach/__tests__/input-controller-extension-command.test.d.ts} +0 -0
  665. /package/dist/{core/__tests__/full/consult-startup-failure.test.d.ts → clients/attach/__tests__/session-identity-refresh.test.d.ts} +0 -0
  666. /package/dist/{core/canvas/__tests__/human-work-outbox.test.d.ts → clients/inbox/__tests__/inbox-controller.test.d.ts} +0 -0
  667. /package/dist/{core/keybindings/__tests__/bespoke-consumers.test.d.ts → clients/inbox/__tests__/mount-panel.test.d.ts} +0 -0
  668. /package/dist/{core/tui/__tests__/host-keybindings.test.d.ts → clients/inbox/review/__tests__/editor-roundtrip.test.d.ts} +0 -0
  669. /package/dist/{core/view/__tests__/transport-cache.test.d.ts → clients/inbox/review/__tests__/remap.test.d.ts} +0 -0
  670. /package/dist/{core/view/__tests__/transport-remote.test.d.ts → clients/inbox/review/__tests__/review-core.test.d.ts} +0 -0
@@ -1,7 +0,0 @@
1
- import type { JSX, ReactNode } from 'react';
2
- import type { ChromeState } from '../core/view/contract.js';
3
- export declare function ViewChrome({ chrome, title, children }: {
4
- chrome: ChromeState;
5
- title: string;
6
- children: ReactNode;
7
- }): JSX.Element;
@@ -1,28 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { deriveState } from '../core/view/chrome.js';
3
- const CHIP_LABEL = {
4
- working: 'working',
5
- blocked: 'blocked',
6
- attention: 'attention',
7
- ready: 'ready',
8
- idle: 'idle',
9
- };
10
- const CHIP_DOT = {
11
- working: 'bg-blue-500',
12
- blocked: 'bg-red-500',
13
- attention: 'bg-amber-500',
14
- ready: 'bg-green-500',
15
- idle: 'bg-slate-400',
16
- };
17
- const BANNER_BAR = {
18
- info: 'bg-slate-100 text-slate-800 border-slate-300',
19
- action: 'bg-amber-100 text-amber-900 border-amber-300',
20
- error: 'bg-red-100 text-red-900 border-red-300',
21
- };
22
- export function ViewChrome({ chrome, title, children }) {
23
- // deriveState's contract: an explicit interaction mode overrides the derived
24
- // chip, and each target's renderer applies that precedence. Web keeps the mode
25
- // as its own header pill (the §4.1 web idiom) AND lets it win the chip.
26
- const chip = chrome.mode ? 'attention' : deriveState(chrome);
27
- return (_jsxs("div", { className: "min-h-screen bg-white text-slate-900", children: [_jsxs("header", { className: "flex items-center gap-3 border-b border-slate-200 px-4 py-2", children: [_jsx("h1", { className: "font-mono text-sm font-semibold", children: title }), chrome.subtitle ? (_jsxs("span", { className: "font-mono text-xs text-slate-400", children: ["\u00B7 ", chrome.subtitle] })) : null, chrome.mode ? (_jsx("span", { className: "rounded-full bg-slate-800 px-2 py-0.5 text-xs text-white", children: chrome.mode })) : null, _jsxs("span", { className: "ml-auto flex items-center gap-2 text-xs text-slate-500", children: [chrome.busy ? (_jsx("span", { className: "inline-block h-3 w-3 animate-spin rounded-full border-2 border-slate-300 border-t-slate-600" })) : null, _jsx("span", { className: `inline-block h-2 w-2 rounded-full ${CHIP_DOT[chip]}` }), _jsx("span", { children: CHIP_LABEL[chip] })] })] }), chrome.banner ? (_jsx("div", { className: `border-b px-4 py-1.5 font-mono text-xs ${BANNER_BAR[chrome.banner.level]}`, children: chrome.banner.msg })) : null, _jsx("main", { className: "px-4 py-3", children: children }), chrome.status ? (_jsx("footer", { className: "border-t border-slate-200 px-4 py-1.5 font-mono text-xs text-slate-500", children: chrome.status })) : null] }));
28
- }
@@ -1,39 +0,0 @@
1
- import type { JSX, FunctionComponent } from 'react';
2
- import type { ViewCore, ChromeState } from '../core/view/contract.js';
3
- import { type IntentTap } from './runtime.js';
4
- type ViewPropsWeb = {
5
- state: unknown;
6
- dispatch: (intent: string, payload?: unknown) => void;
7
- chrome: ChromeState;
8
- };
9
- type WebComponent = FunctionComponent<ViewPropsWeb>;
10
- export interface UseViewCoreOptions {
11
- /** Frozen options map handed to core.init. */
12
- options?: Record<string, string>;
13
- /** Bridge endpoint for the HTTP transport; defaults to /__crtr/source. */
14
- endpoint?: string;
15
- /** The host TAP (§5): observe/intercept dispatched intents. */
16
- onIntent?: IntentTap;
17
- }
18
- export interface ViewCoreHandle {
19
- state: unknown;
20
- chrome: ChromeState;
21
- dispatch: (intent: string, payload?: unknown) => void;
22
- /** Force an immediate refresh — the seam the shell calls on an SSE
23
- * invalidation (Wave 3). */
24
- refresh: () => void;
25
- }
26
- /** Run a view core client-side and bind it to React. Returns the live state +
27
- * chrome + a dispatch (and a refresh seam). The onIntent tap is read fresh on
28
- * every render, so a parent can change it without tearing down the view. */
29
- export declare function useViewCore(core: ViewCore, opts?: UseViewCoreOptions): ViewCoreHandle;
30
- /** Host any dual-target view as a React component: its web component wrapped in
31
- * <ViewChrome>, driven by useViewCore. Pass onIntent to tap its intents. */
32
- export declare function ViewPane({ core, View, options, endpoint, onIntent }: {
33
- core: ViewCore;
34
- View: WebComponent;
35
- options?: Record<string, string>;
36
- endpoint?: string;
37
- onIntent?: IntentTap;
38
- }): JSX.Element;
39
- export {};
@@ -1,48 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- // ViewPane.tsx — the React surface for a dual-target view. <ViewPane> and its
3
- // useViewCore hook are the composable replacement for the deleted imperative
4
- // mount(): the shell hosts many views as ordinary React components instead of
5
- // imperative createRoot calls.
6
- //
7
- // useViewCore wraps a createViewStore (runtime.tsx) — the framework-free dispatch
8
- // loop — with the React lifecycle: it creates the store once (a ref), keeps the
9
- // onIntent TAP fresh per render WITHOUT restarting, re-renders off the store's
10
- // external-store surface (useSyncExternalStore), and starts/stops the auto-poll
11
- // on mount/unmount.
12
- //
13
- // <ViewPane> = useViewCore + <ViewChrome> + the view's web component. When
14
- // onIntent is undefined a ViewPane is byte-identical to the old standalone mount
15
- // — the hosted view never knows it is in a shell.
16
- import { createElement, useEffect, useRef, useSyncExternalStore } from 'react';
17
- import { ViewChrome } from './ViewChrome.js';
18
- import { createViewStore } from './runtime.js';
19
- /** Run a view core client-side and bind it to React. Returns the live state +
20
- * chrome + a dispatch (and a refresh seam). The onIntent tap is read fresh on
21
- * every render, so a parent can change it without tearing down the view. */
22
- export function useViewCore(core, opts = {}) {
23
- const storeRef = useRef(null);
24
- if (storeRef.current === null) {
25
- storeRef.current = createViewStore(core, { options: opts.options, endpoint: opts.endpoint });
26
- }
27
- const store = storeRef.current;
28
- // Keep the TAP fresh without recreating the store (which would restart the
29
- // dispatch loop and lose state).
30
- store.onIntent = opts.onIntent;
31
- useSyncExternalStore(store.subscribe, store.getVersion, store.getVersion);
32
- useEffect(() => {
33
- store.start();
34
- return () => store.stop();
35
- }, [store]);
36
- return {
37
- state: store.getState(),
38
- chrome: store.getChrome(),
39
- dispatch: store.dispatch,
40
- refresh: store.refresh,
41
- };
42
- }
43
- /** Host any dual-target view as a React component: its web component wrapped in
44
- * <ViewChrome>, driven by useViewCore. Pass onIntent to tap its intents. */
45
- export function ViewPane({ core, View, options, endpoint, onIntent }) {
46
- const { state, chrome, dispatch } = useViewCore(core, { options, endpoint, onIntent });
47
- return (_jsx(ViewChrome, { chrome: chrome, title: core.manifest.title, children: createElement(View, { state, dispatch, chrome }) }));
48
- }
@@ -1,8 +0,0 @@
1
- export { ViewPane, useViewCore } from './ViewPane.js';
2
- export type { UseViewCoreOptions, ViewCoreHandle } from './ViewPane.js';
3
- export { createViewStore } from './runtime.js';
4
- export type { ViewStore, ViewStoreOptions, IntentTap } from './runtime.js';
5
- export { ViewChrome } from './ViewChrome.js';
6
- export { Loading, Empty, ErrorState, NotReady } from './states.js';
7
- export { findRefTokens, formatRefToken, findRefTokenAtCaret, } from '../core/memory/inline-ref-grammar.js';
8
- export type { RefToken, RefCaretToken } from '../core/memory/inline-ref-grammar.js';
package/dist/web/index.js DELETED
@@ -1,22 +0,0 @@
1
- // index.ts — the public barrel for crtr's web runtime, published as the package
2
- // `exports` subpath `@north-light/crouter/web` (→ ./dist/web/index.js).
3
- //
4
- // A dual-target view's `web.jsx` imports the shared four-state vocabulary +
5
- // (if it needs them) the chrome wrapper from here, via that stable specifier —
6
- // NOT a relative path from builtin-views, which would break for user/project
7
- // views living outside the package tree. The shell + dev Vite resolve this
8
- // subpath against crouter's own built barrel.
9
- //
10
- // The web shell composes views via <ViewPane>/useViewCore (the React surface)
11
- // over createViewStore (the framework-free dispatch loop + the onIntent tap +
12
- // the refresh() SSE seam).
13
- export { ViewPane, useViewCore } from './ViewPane.js';
14
- export { createViewStore } from './runtime.js';
15
- export { ViewChrome } from './ViewChrome.js';
16
- export { Loading, Empty, ErrorState, NotReady } from './states.js';
17
- // Inline memory-reference grammar (spec §4.1) — zero-import, browser-safe.
18
- // The web client imports THIS re-export (never a mirrored copy) so its
19
- // highlighting/completion use byte-identical logic to the broker's
20
- // resolution/guidance and the terminal attach viewer. See
21
- // `src/core/memory/inline-ref-grammar.ts` for the algorithm.
22
- export { findRefTokens, formatRefToken, findRefTokenAtCaret, } from '../core/memory/inline-ref-grammar.js';
@@ -1,39 +0,0 @@
1
- import type { ViewCore, ChromeState } from '../core/view/contract.js';
2
- /** Host-level pre-dispatch hook: observes every dispatched intent + its payload
3
- * against a snapshot of state, before the view's own handler runs. The shell
4
- * taps the small documented shell-intent vocabulary (`activate`, `open`) and
5
- * lets everything else pass through untouched. */
6
- export type IntentTap = (name: string, payload: unknown, state: unknown) => void;
7
- export interface ViewStoreOptions {
8
- /** Frozen options map handed to core.init (e.g. forwarded --target). */
9
- options?: Record<string, string>;
10
- /** Bridge endpoint for the HTTP transport; defaults to /__crtr/source. */
11
- endpoint?: string;
12
- /** The host TAP (§5). Omit ⇒ standalone, byte-identical to no shell. */
13
- onIntent?: IntentTap;
14
- }
15
- export interface ViewStore {
16
- /** Snapshot of the current view state (read after a subscribe fires). */
17
- getState(): unknown;
18
- /** Snapshot of the current chrome record. */
19
- getChrome(): ChromeState;
20
- /** Dispatch a named intent — runs the TAP, then the core handler. */
21
- dispatch(intent: string, payload?: unknown): Promise<void>;
22
- /** Force an immediate, busy-guarded refresh (auto-poll cb + the SSE seam). */
23
- refresh(): void;
24
- /** External-store subscribe (for useSyncExternalStore). */
25
- subscribe(listener: () => void): () => void;
26
- /** Monotonic version the external store snapshots on. */
27
- getVersion(): number;
28
- /** Run the first refresh + start the refreshMs auto-poll. Idempotent. */
29
- start(): void;
30
- /** Stop the auto-poll. Idempotent. */
31
- stop(): void;
32
- /** The host TAP — mutable so the React layer keeps it fresh per render
33
- * WITHOUT restarting the store. */
34
- onIntent?: IntentTap;
35
- }
36
- /** Build the running store for one view (its core + the HTTP transport). The
37
- * React layer (useViewCore) owns lifecycle (start on mount, stop on unmount)
38
- * and re-renders off subscribe/getVersion; this factory is React-free. */
39
- export declare function createViewStore(core: ViewCore, opts?: ViewStoreOptions): ViewStore;
@@ -1,232 +0,0 @@
1
- // runtime.tsx — the framework-agnostic dispatch-loop STORE for a dual-target
2
- // view. It is what <ViewPane>/useViewCore (ViewPane.tsx) are built from.
3
- //
4
- // createViewStore() seeds state from core.init, builds the IntentCtx
5
- // (set/resolve/execute/signal/dispatch/connect) over the HTTP transport, runs
6
- // the dispatch loop with the busy-guarded refreshMs auto-poll, and exposes a
7
- // tiny external-store surface (subscribe/getVersion) the React layer binds via
8
- // useSyncExternalStore. The core it drives is byte-identical to the TUI's; only
9
- // the injected Transport differs.
10
- import { initialChrome } from '../core/view/chrome.js';
11
- import { createHttpTransport } from './transport-http.js';
12
- /** Build the running store for one view (its core + the HTTP transport). The
13
- * React layer (useViewCore) owns lifecycle (start on mount, stop on unmount)
14
- * and re-renders off subscribe/getVersion; this factory is React-free. */
15
- export function createViewStore(core, opts = {}) {
16
- const transport = createHttpTransport(opts.endpoint);
17
- const initOptions = Object.freeze({ ...(opts.options ?? {}) });
18
- let state = core.init(initOptions);
19
- let chrome = initialChrome();
20
- let onIntentTap = opts.onIntent;
21
- // External store: a version counter the React tree subscribes to. state and
22
- // chrome are read via the getters on each render; bumping `version` re-renders.
23
- let version = 0;
24
- const listeners = new Set();
25
- const emit = () => { version += 1; for (const l of listeners)
26
- l(); };
27
- const subscribe = (l) => { listeners.add(l); return () => { listeners.delete(l); }; };
28
- const setChrome = (patch) => { chrome = { ...chrome, ...patch }; emit(); };
29
- const signal = {
30
- setStatus: (msg) => setChrome({ status: msg }),
31
- setBanner: (msg, level) => setChrome({ banner: { msg, level } }),
32
- clearBanner: () => setChrome({ banner: null }),
33
- setSubtitle: (s) => setChrome({ subtitle: s }),
34
- setMode: (mode) => setChrome({ mode }),
35
- // Web has no pane to leave; closing the tab is up to the user. No-op.
36
- quit: () => { },
37
- };
38
- const streams = new Set();
39
- let generation = 0;
40
- let started = false;
41
- let timer = null;
42
- let busyDepth = 0;
43
- let drainingQueue = false;
44
- let dispatchQueue = [];
45
- const makeCtx = () => ({
46
- get state() { return state; },
47
- set(next) {
48
- state = typeof next === 'function' ? next(state) : next;
49
- emit();
50
- },
51
- async resolve(source, args) {
52
- const raw = await transport.send(source.request(args));
53
- return source.parse(raw);
54
- },
55
- async execute(command, args) {
56
- const raw = await transport.send(command.request(args));
57
- return command.parse(raw);
58
- },
59
- connect(source, args) {
60
- const capturedGeneration = generation;
61
- let channel;
62
- channel = transport.open(source.request(args), {
63
- onFrame(frame) {
64
- if (capturedGeneration !== generation)
65
- return;
66
- void enqueueDispatch(source.onFrame, frame);
67
- },
68
- onClose(reason) {
69
- if (capturedGeneration !== generation)
70
- return;
71
- streams.delete(channel);
72
- if (source.onClose)
73
- void enqueueDispatch(source.onClose, { reason, channelId: channel.id });
74
- },
75
- onError(err) {
76
- if (capturedGeneration !== generation)
77
- return;
78
- setChrome({ banner: { msg: err.display.headline, level: err.display.level } });
79
- },
80
- });
81
- streams.add(channel);
82
- if (source.onOpen)
83
- void enqueueDispatch(source.onOpen, channel);
84
- return channel;
85
- },
86
- signal,
87
- dispatch(intent, payload) {
88
- return runIntent(intent, payload);
89
- },
90
- });
91
- function scheduleDrain() {
92
- if (drainingQueue)
93
- return;
94
- drainingQueue = true;
95
- void drainQueue();
96
- }
97
- async function drainQueue() {
98
- try {
99
- while (started && dispatchQueue.length > 0) {
100
- if (busyDepth > 0)
101
- return;
102
- const job = dispatchQueue.shift();
103
- try {
104
- await runIntent(job.intent, job.payload);
105
- job.resolve();
106
- }
107
- catch (err) {
108
- job.reject(err);
109
- }
110
- }
111
- }
112
- finally {
113
- drainingQueue = false;
114
- if (started && dispatchQueue.length > 0 && busyDepth === 0)
115
- scheduleDrain();
116
- }
117
- }
118
- function enqueueDispatch(intent, payload) {
119
- if (!started)
120
- return Promise.resolve();
121
- return new Promise((resolve, reject) => {
122
- dispatchQueue.push({ intent, payload, resolve, reject });
123
- scheduleDrain();
124
- });
125
- }
126
- function settleAfterIntent(intentName) {
127
- if (intentName === 'refresh') {
128
- chrome = { ...chrome, busy: busyDepth > 0, loaded: true, lastRefresh: Date.now() };
129
- emit();
130
- return;
131
- }
132
- chrome = { ...chrome, busy: busyDepth > 0 };
133
- emit();
134
- }
135
- async function runIntent(intent, payload) {
136
- if (!started) {
137
- // The store is stopped; ignore stray external work.
138
- return;
139
- }
140
- onIntentTap?.(intent, payload, state);
141
- const fn = core.intents[intent];
142
- if (!fn) {
143
- // eslint-disable-next-line no-console
144
- console.warn(`[crtr view] unknown intent: ${intent}`);
145
- return;
146
- }
147
- let result;
148
- try {
149
- result = fn(makeCtx(), payload);
150
- }
151
- catch (e) {
152
- // eslint-disable-next-line no-console
153
- console.warn(`[crtr view] intent ${intent} threw:`, e);
154
- throw e;
155
- }
156
- if (result instanceof Promise) {
157
- const wasBusy = busyDepth > 0;
158
- busyDepth += 1;
159
- if (!wasBusy)
160
- setChrome({ busy: true });
161
- try {
162
- await result;
163
- }
164
- finally {
165
- busyDepth -= 1;
166
- chrome = { ...chrome, busy: busyDepth > 0, loaded: chrome.loaded || intent === 'refresh', lastRefresh: Date.now() };
167
- emit();
168
- if (busyDepth === 0 && started && dispatchQueue.length > 0)
169
- scheduleDrain();
170
- }
171
- return;
172
- }
173
- settleAfterIntent(intent);
174
- }
175
- const refresh = () => {
176
- if (busyDepth === 0)
177
- void enqueueDispatch('refresh');
178
- };
179
- function start() {
180
- if (started)
181
- return;
182
- started = true;
183
- generation += 1;
184
- state = core.init(initOptions);
185
- chrome = initialChrome();
186
- dispatchQueue = [];
187
- drainingQueue = false;
188
- void enqueueDispatch('refresh');
189
- const cadence = core.manifest.refreshMs;
190
- if (typeof cadence === 'number' && cadence > 0)
191
- timer = setInterval(refresh, cadence);
192
- }
193
- function stop() {
194
- if (!started)
195
- return;
196
- started = false;
197
- generation += 1;
198
- const openChannels = Array.from(streams);
199
- for (const channel of openChannels) {
200
- try {
201
- channel.close();
202
- }
203
- catch {
204
- /* ignore */
205
- }
206
- }
207
- streams.clear();
208
- if (timer) {
209
- clearInterval(timer);
210
- timer = null;
211
- }
212
- if (dispatchQueue.length > 0) {
213
- const err = new Error('view stopped');
214
- for (const job of dispatchQueue)
215
- job.reject(err);
216
- dispatchQueue = [];
217
- }
218
- drainingQueue = false;
219
- }
220
- return {
221
- getState: () => state,
222
- getChrome: () => chrome,
223
- dispatch: enqueueDispatch,
224
- refresh,
225
- subscribe,
226
- getVersion: () => version,
227
- start,
228
- stop,
229
- get onIntent() { return onIntentTap; },
230
- set onIntent(v) { onIntentTap = v; },
231
- };
232
- }
@@ -1,24 +0,0 @@
1
- import type { JSX } from 'react';
2
- /** Initial load, before the first source resolves. */
3
- export declare function Loading({ label }: {
4
- label?: string;
5
- }): JSX.Element;
6
- /** Resolved, but nothing to show. */
7
- export declare function Empty({ label }: {
8
- label?: string;
9
- }): JSX.Element;
10
- /** A non-blocking-or-blocking failure — renders a SourceError.display verbatim. */
11
- export declare function ErrorState({ headline, explanation, nextStep, onRetry }: {
12
- headline: string;
13
- explanation?: string;
14
- nextStep?: string;
15
- onRetry?: () => void;
16
- }): JSX.Element;
17
- /** A precondition isn't met (e.g. not a repo / unauthed) — same shape as
18
- * ErrorState but named for the "not ready to run here" case. */
19
- export declare function NotReady({ headline, explanation, nextStep, onRetry }: {
20
- headline?: string;
21
- explanation?: string;
22
- nextStep?: string;
23
- onRetry?: () => void;
24
- }): JSX.Element;
@@ -1,24 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- function Center({ children }) {
3
- return (_jsx("div", { className: "flex min-h-[40vh] flex-col items-center justify-center gap-2 p-8 text-center font-mono text-sm text-slate-600", children: children }));
4
- }
5
- /** Initial load, before the first source resolves. */
6
- export function Loading({ label = 'Loading…' }) {
7
- return (_jsxs(Center, { children: [_jsx("span", { className: "inline-block h-3 w-3 animate-spin rounded-full border-2 border-slate-300 border-t-slate-600" }), _jsx("span", { children: label })] }));
8
- }
9
- /** Resolved, but nothing to show. */
10
- export function Empty({ label = 'Nothing here yet.' }) {
11
- return (_jsx(Center, { children: _jsx("span", { className: "text-slate-400", children: label }) }));
12
- }
13
- /** A non-blocking-or-blocking failure — renders a SourceError.display verbatim. */
14
- export function ErrorState({ headline, explanation, nextStep, onRetry }) {
15
- return (_jsxs(Center, { children: [_jsx("div", { className: "font-semibold text-red-700", children: headline }), explanation ? _jsx("div", { className: "text-slate-600", children: explanation }) : null, nextStep ? _jsx("div", { className: "text-slate-500", children: nextStep }) : null, onRetry ? _jsx(RetryButton, { onRetry: onRetry }) : null] }));
16
- }
17
- /** A precondition isn't met (e.g. not a repo / unauthed) — same shape as
18
- * ErrorState but named for the "not ready to run here" case. */
19
- export function NotReady({ headline = 'Not ready', explanation, nextStep, onRetry }) {
20
- return (_jsxs(Center, { children: [_jsx("div", { className: "font-semibold text-amber-700", children: headline }), explanation ? _jsx("div", { className: "text-slate-600", children: explanation }) : null, nextStep ? _jsx("div", { className: "text-slate-500", children: nextStep }) : null, onRetry ? _jsx(RetryButton, { onRetry: onRetry }) : null] }));
21
- }
22
- function RetryButton({ onRetry }) {
23
- return (_jsx("button", { type: "button", onClick: onRetry, className: "mt-2 rounded border border-slate-300 px-3 py-1 text-slate-700 hover:bg-slate-100", children: "Retry" }));
24
- }
@@ -1,5 +0,0 @@
1
- import type { Transport } from '../core/view/transport.js';
2
- /** Browser Transport → POST <endpoint> {SourceRequest} → RawResponse. Never
3
- * throws: a network/bridge failure becomes a transport-level RawResponse
4
- * (ok:false + stderr), exactly like the local transport's spawn failures. */
5
- export declare function createHttpTransport(endpoint?: string): Transport;
@@ -1,34 +0,0 @@
1
- // transport-http.ts — the browser-side Transport. send() posts declarative
2
- // SourceRequests to the local bridge server (`crtr view serve`'s /__crtr/source)
3
- // and open() connects browser stream requests to the same-origin WS relay.
4
- //
5
- // P2 DEFERRAL (Stage-C, plan C-1/C-5): the browser data plane still rides
6
- // `/__crtr/source` (the dev-shell bridge), NOT crtrd `/v1`. Moving the SPA onto
7
- // the crtrd API is a settled P2 deferral, not a P1 defect — leave as-is.
8
- import { openBrowserStream } from './transport-stream.js';
9
- /** Browser Transport → POST <endpoint> {SourceRequest} → RawResponse. Never
10
- * throws: a network/bridge failure becomes a transport-level RawResponse
11
- * (ok:false + stderr), exactly like the local transport's spawn failures. */
12
- export function createHttpTransport(endpoint = '/__crtr/source') {
13
- return {
14
- async send(req) {
15
- try {
16
- const res = await fetch(endpoint, {
17
- method: 'POST',
18
- headers: { 'content-type': 'application/json' },
19
- body: JSON.stringify(req),
20
- });
21
- if (!res.ok) {
22
- return { ok: false, stdout: '', stderr: `bridge ${res.status} ${res.statusText}` };
23
- }
24
- return (await res.json());
25
- }
26
- catch (e) {
27
- return { ok: false, stdout: '', stderr: e instanceof Error ? e.message : String(e) };
28
- }
29
- },
30
- open(req, handlers) {
31
- return openBrowserStream(req, handlers);
32
- },
33
- };
34
- }
@@ -1,3 +0,0 @@
1
- import type { StreamRequest, StreamChannel } from '../core/view/contract.js';
2
- import type { StreamHandlers } from '../core/view/transport.js';
3
- export declare function openBrowserStream(req: StreamRequest, handlers: StreamHandlers): StreamChannel;