@crouton-kit/crouter 0.3.27 → 0.3.29

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 (343) hide show
  1. package/dist/build-root.js +4 -2
  2. package/dist/builtin-memory/crouter-development/marketplaces.md +7 -6
  3. package/dist/builtin-memory/crouter-development/personas/base-prompt.md +1 -1
  4. package/dist/builtin-memory/crouter-development/personas/orchestrator-prompt.md +1 -1
  5. package/dist/builtin-memory/crouter-development/personas.md +1 -1
  6. package/dist/builtin-memory/crouter-development/plugins.md +20 -18
  7. package/dist/builtin-memory/design.md +1 -1
  8. package/dist/builtin-memory/development.md +1 -1
  9. package/dist/builtin-memory/internal/INDEX.md +1 -1
  10. package/dist/builtin-memory/internal/examples/INDEX.md +1 -1
  11. package/dist/builtin-memory/internal/examples/imessage-assistant.md +2 -2
  12. package/dist/builtin-memory/internal/nodes-and-canvas.md +1 -1
  13. package/dist/builtin-memory/internal/storage-tiers.md +1 -1
  14. package/dist/builtin-memory/planning.md +1 -1
  15. package/dist/builtin-memory/spec.md +6 -4
  16. package/dist/builtin-personas/orchestration-kernel.md +4 -5
  17. package/dist/builtin-personas/runtime-base.md +8 -4
  18. package/dist/builtin-personas/spec/PERSONA.md +8 -4
  19. package/dist/builtin-personas/spec/orchestrator.md +5 -3
  20. package/dist/builtin-personas/spec/requirements/PERSONA.md +10 -0
  21. package/dist/builtin-views/canvas/core.mjs +586 -0
  22. package/dist/builtin-views/canvas/text.mjs +58 -0
  23. package/dist/builtin-views/canvas/tui.mjs +165 -0
  24. package/dist/builtin-views/canvas/web.jsx +120 -0
  25. package/dist/builtin-views/git-pr/core.mjs +673 -0
  26. package/dist/builtin-views/git-pr/text.mjs +84 -0
  27. package/dist/builtin-views/git-pr/tui.mjs +302 -0
  28. package/dist/builtin-views/git-pr/web.jsx +216 -0
  29. package/dist/builtin-views/inbox/_lib/render.mjs +1 -3
  30. package/dist/builtin-views/inbox/core.mjs +1273 -0
  31. package/dist/builtin-views/inbox/text.mjs +73 -0
  32. package/dist/builtin-views/inbox/tui.mjs +312 -0
  33. package/dist/builtin-views/inbox/web.jsx +188 -0
  34. package/dist/builtin-views/linkedin/core.mjs +906 -0
  35. package/dist/builtin-views/linkedin/text.mjs +69 -0
  36. package/dist/builtin-views/linkedin/tui.mjs +427 -0
  37. package/dist/builtin-views/linkedin/web.jsx +206 -0
  38. package/dist/builtin-views/workspace-sidebar/core.mjs +621 -0
  39. package/dist/builtin-views/workspace-sidebar/text.mjs +53 -0
  40. package/dist/builtin-views/workspace-sidebar/tui.mjs +142 -0
  41. package/dist/builtin-views/workspace-sidebar/web.jsx +109 -0
  42. package/dist/cli.js +3 -3
  43. package/dist/clients/attach/__tests__/action-parity.test.js +48 -0
  44. package/dist/clients/attach/__tests__/clipboard-image.test.js +76 -0
  45. package/dist/clients/attach/__tests__/editor-newline.test.js +57 -0
  46. package/dist/clients/attach/__tests__/git-info.test.js +31 -0
  47. package/dist/clients/attach/__tests__/onrequest-wired.test.js +20 -0
  48. package/dist/clients/attach/__tests__/reconnect-giveup.test.js +30 -0
  49. package/dist/clients/attach/__tests__/slash-quit-copy.test.js +42 -0
  50. package/dist/clients/attach/__tests__/titled-editor.test.d.ts +1 -0
  51. package/dist/clients/attach/__tests__/titled-editor.test.js +39 -0
  52. package/dist/clients/attach/attach-cmd.js +445 -41
  53. package/dist/clients/attach/auth-pickers.d.ts +9 -0
  54. package/dist/clients/attach/auth-pickers.js +194 -0
  55. package/dist/clients/attach/canvas-panels.d.ts +12 -0
  56. package/dist/clients/attach/canvas-panels.js +78 -0
  57. package/dist/clients/attach/chat-view.d.ts +27 -2
  58. package/dist/clients/attach/chat-view.js +98 -9
  59. package/dist/clients/attach/clipboard-image.d.ts +47 -8
  60. package/dist/clients/attach/clipboard-image.js +150 -26
  61. package/dist/clients/attach/clipboard-text.d.ts +3 -0
  62. package/dist/clients/attach/clipboard-text.js +39 -0
  63. package/dist/clients/attach/config-load.d.ts +54 -7
  64. package/dist/clients/attach/config-load.js +99 -3
  65. package/dist/clients/attach/context-message.d.ts +12 -0
  66. package/dist/clients/attach/context-message.js +72 -0
  67. package/dist/clients/attach/git-info.d.ts +20 -0
  68. package/dist/clients/attach/git-info.js +44 -0
  69. package/dist/clients/attach/graph-overlay.d.ts +43 -0
  70. package/dist/clients/attach/graph-overlay.js +306 -0
  71. package/dist/clients/attach/input-controller.d.ts +81 -13
  72. package/dist/clients/attach/input-controller.js +307 -67
  73. package/dist/clients/attach/pickers.d.ts +58 -0
  74. package/dist/clients/attach/pickers.js +171 -0
  75. package/dist/clients/attach/slash-commands.d.ts +44 -1
  76. package/dist/clients/attach/slash-commands.js +250 -27
  77. package/dist/clients/attach/titled-editor.d.ts +33 -0
  78. package/dist/clients/attach/titled-editor.js +84 -0
  79. package/dist/clients/attach/view-socket.d.ts +37 -2
  80. package/dist/clients/attach/view-socket.js +131 -7
  81. package/dist/clients/web/dev-server.d.ts +7 -0
  82. package/dist/clients/web/dev-server.js +59 -0
  83. package/dist/clients/web/events.d.ts +14 -0
  84. package/dist/clients/web/events.js +151 -0
  85. package/dist/clients/web/server.d.ts +18 -0
  86. package/dist/clients/web/server.js +450 -0
  87. package/dist/clients/web/web-cmd.d.ts +2 -0
  88. package/dist/clients/web/web-cmd.js +120 -0
  89. package/dist/commands/canvas.js +1 -2
  90. package/dist/commands/chord.js +1 -1
  91. package/dist/commands/dashboard.js +5 -1
  92. package/dist/commands/human/prompts.js +3 -3
  93. package/dist/commands/human/queue.d.ts +17 -0
  94. package/dist/commands/human/queue.js +111 -4
  95. package/dist/commands/memory/__tests__/lint-schema.test.js +27 -4
  96. package/dist/commands/memory/lint.d.ts +5 -4
  97. package/dist/commands/memory/lint.js +23 -7
  98. package/dist/commands/memory/read.js +2 -2
  99. package/dist/commands/memory/shared.d.ts +7 -1
  100. package/dist/commands/memory/shared.js +18 -3
  101. package/dist/commands/memory/write.js +20 -7
  102. package/dist/commands/memory.js +4 -4
  103. package/dist/commands/node.d.ts +1 -1
  104. package/dist/commands/node.js +64 -65
  105. package/dist/commands/pkg.js +1 -2
  106. package/dist/commands/revive.js +11 -3
  107. package/dist/commands/sys/feedback.d.ts +1 -0
  108. package/dist/commands/sys/feedback.js +163 -0
  109. package/dist/commands/sys/sync.d.ts +1 -0
  110. package/dist/commands/sys/sync.js +187 -0
  111. package/dist/commands/sys.js +4 -2
  112. package/dist/commands/view-cycle.js +2 -2
  113. package/dist/commands/view-list.js +8 -8
  114. package/dist/commands/view-new.js +21 -17
  115. package/dist/commands/view-pick.js +1 -1
  116. package/dist/commands/view-run.js +35 -14
  117. package/dist/commands/view.js +8 -6
  118. package/dist/commands/workspace.d.ts +2 -0
  119. package/dist/commands/workspace.js +161 -0
  120. package/dist/core/__tests__/broker-double-spawn.test.d.ts +1 -0
  121. package/dist/core/__tests__/broker-double-spawn.test.js +143 -0
  122. package/dist/core/__tests__/broker-fork-seam.test.d.ts +1 -0
  123. package/dist/core/__tests__/broker-fork-seam.test.js +102 -0
  124. package/dist/core/__tests__/broker-sdk-wiring.test.js +2 -0
  125. package/dist/core/__tests__/broker-snapshot-history.test.d.ts +1 -0
  126. package/dist/core/__tests__/broker-snapshot-history.test.js +105 -0
  127. package/dist/core/__tests__/child-death-wake.test.js +56 -111
  128. package/dist/core/__tests__/close.test.js +14 -20
  129. package/dist/core/__tests__/context-intro.test.js +19 -19
  130. package/dist/core/__tests__/daemon-boot.test.js +30 -23
  131. package/dist/core/__tests__/draw-style.test.js +1 -1
  132. package/dist/core/__tests__/error-stall-recycle.test.d.ts +1 -0
  133. package/dist/core/__tests__/error-stall-recycle.test.js +141 -0
  134. package/dist/core/__tests__/fixtures/fake-engine.d.ts +24 -1
  135. package/dist/core/__tests__/fixtures/fake-engine.js +32 -2
  136. package/dist/core/__tests__/fixtures/fake-pi-host.js +2 -2
  137. package/dist/core/__tests__/focuses.test.js +25 -13
  138. package/dist/core/__tests__/fork.test.js +22 -5
  139. package/dist/core/__tests__/full/broker-control-preempt.test.d.ts +1 -0
  140. package/dist/core/__tests__/full/broker-control-preempt.test.js +61 -0
  141. package/dist/core/__tests__/full/broker-model-changed-broadcast.test.d.ts +1 -0
  142. package/dist/core/__tests__/full/broker-model-changed-broadcast.test.js +57 -0
  143. package/dist/core/__tests__/full/broker-navigate-tree-rewelcome.test.d.ts +1 -0
  144. package/dist/core/__tests__/full/broker-navigate-tree-rewelcome.test.js +80 -0
  145. package/dist/core/__tests__/full/broker-pane-resolution.test.js +90 -0
  146. package/dist/core/__tests__/full/cascade-close.test.js +22 -8
  147. package/dist/core/__tests__/full/detach-focus.test.js +66 -169
  148. package/dist/core/__tests__/helpers/harness.d.ts +6 -9
  149. package/dist/core/__tests__/helpers/harness.js +19 -36
  150. package/dist/core/__tests__/human-node-not-supervised.test.d.ts +1 -0
  151. package/dist/core/__tests__/human-node-not-supervised.test.js +83 -0
  152. package/dist/core/__tests__/human-stranded-deliver.test.d.ts +1 -0
  153. package/dist/core/__tests__/human-stranded-deliver.test.js +108 -0
  154. package/dist/core/__tests__/lifecycle.test.js +1 -19
  155. package/dist/core/__tests__/live-mutation-verbs.test.js +5 -5
  156. package/dist/core/__tests__/memory-resolver.test.js +1 -1
  157. package/dist/core/__tests__/on-read-dedup-resume.test.d.ts +1 -0
  158. package/dist/core/__tests__/on-read-dedup-resume.test.js +81 -0
  159. package/dist/core/__tests__/refresh-stall-recycle.test.d.ts +1 -0
  160. package/dist/core/__tests__/refresh-stall-recycle.test.js +88 -0
  161. package/dist/core/__tests__/relaunch-root.test.d.ts +1 -0
  162. package/dist/core/__tests__/relaunch-root.test.js +114 -0
  163. package/dist/core/__tests__/reset.test.js +19 -79
  164. package/dist/core/__tests__/steer-note.test.js +9 -7
  165. package/dist/core/__tests__/tmux-surface.test.js +13 -7
  166. package/dist/core/bootstrap.d.ts +0 -3
  167. package/dist/core/bootstrap.js +1 -143
  168. package/dist/core/canvas/browse/__tests__/model.test.js +86 -1
  169. package/dist/core/canvas/browse/__tests__/render.test.js +2 -1
  170. package/dist/core/canvas/browse/app.js +131 -8
  171. package/dist/core/canvas/browse/model.d.ts +23 -5
  172. package/dist/core/canvas/browse/model.js +68 -13
  173. package/dist/core/canvas/browse/render.d.ts +7 -1
  174. package/dist/core/canvas/browse/render.js +178 -47
  175. package/dist/core/canvas/canvas.js +1 -1
  176. package/dist/core/canvas/focuses.d.ts +4 -4
  177. package/dist/core/canvas/focuses.js +7 -7
  178. package/dist/core/canvas/nav-model.d.ts +162 -0
  179. package/dist/core/canvas/nav-model.js +487 -0
  180. package/dist/core/canvas/paths.d.ts +7 -0
  181. package/dist/core/canvas/paths.js +9 -0
  182. package/dist/core/canvas/render.d.ts +68 -9
  183. package/dist/core/canvas/render.js +195 -61
  184. package/dist/core/canvas/types.d.ts +16 -23
  185. package/dist/core/config.js +1 -4
  186. package/dist/core/memory-resolver.js +43 -5
  187. package/dist/core/runtime/bearings.d.ts +1 -1
  188. package/dist/core/runtime/bearings.js +8 -8
  189. package/dist/core/runtime/branded-host.d.ts +16 -0
  190. package/dist/core/runtime/branded-host.js +127 -0
  191. package/dist/core/runtime/broker-protocol.d.ts +212 -6
  192. package/dist/core/runtime/broker-sdk.d.ts +0 -12
  193. package/dist/core/runtime/broker-sdk.js +77 -6
  194. package/dist/core/runtime/broker.d.ts +5 -1
  195. package/dist/core/runtime/broker.js +520 -59
  196. package/dist/core/runtime/close.d.ts +12 -2
  197. package/dist/core/runtime/close.js +37 -16
  198. package/dist/core/runtime/front-door.js +14 -7
  199. package/dist/core/runtime/host.d.ts +14 -34
  200. package/dist/core/runtime/host.js +14 -50
  201. package/dist/core/runtime/launch.d.ts +12 -9
  202. package/dist/core/runtime/launch.js +27 -15
  203. package/dist/core/runtime/lifecycle.d.ts +1 -1
  204. package/dist/core/runtime/lifecycle.js +15 -19
  205. package/dist/core/runtime/nodes.d.ts +0 -55
  206. package/dist/core/runtime/nodes.js +6 -74
  207. package/dist/core/runtime/placement.d.ts +91 -334
  208. package/dist/core/runtime/placement.js +262 -828
  209. package/dist/core/runtime/promote.d.ts +2 -0
  210. package/dist/core/runtime/promote.js +24 -6
  211. package/dist/core/runtime/recap.d.ts +8 -0
  212. package/dist/core/runtime/recap.js +107 -0
  213. package/dist/core/runtime/recycle.js +25 -61
  214. package/dist/core/runtime/reset.d.ts +43 -37
  215. package/dist/core/runtime/reset.js +131 -218
  216. package/dist/core/runtime/revive.d.ts +9 -29
  217. package/dist/core/runtime/revive.js +45 -135
  218. package/dist/core/runtime/spawn.d.ts +15 -11
  219. package/dist/core/runtime/spawn.js +168 -136
  220. package/dist/core/runtime/surface-bg.d.ts +11 -0
  221. package/dist/core/runtime/surface-bg.js +68 -0
  222. package/dist/core/runtime/tmux.d.ts +15 -43
  223. package/dist/core/runtime/tmux.js +38 -80
  224. package/dist/core/scope.d.ts +1 -2
  225. package/dist/core/scope.js +1 -5
  226. package/dist/core/skill-sync/__tests__/dry-run-wrote-count.test.d.ts +1 -0
  227. package/dist/core/skill-sync/__tests__/dry-run-wrote-count.test.js +57 -0
  228. package/dist/core/skill-sync/builtins.d.ts +42 -0
  229. package/dist/core/skill-sync/builtins.js +112 -0
  230. package/dist/core/skill-sync/claude-plugins.d.ts +23 -0
  231. package/dist/core/skill-sync/claude-plugins.js +71 -0
  232. package/dist/core/skill-sync/engine.d.ts +42 -0
  233. package/dist/core/skill-sync/engine.js +633 -0
  234. package/dist/core/skill-sync/export.d.ts +23 -0
  235. package/dist/core/skill-sync/export.js +86 -0
  236. package/dist/core/skill-sync/manifest.d.ts +64 -0
  237. package/dist/core/skill-sync/manifest.js +181 -0
  238. package/dist/core/skill-sync/profile.d.ts +76 -0
  239. package/dist/core/skill-sync/profile.js +173 -0
  240. package/dist/core/skill-sync/snapshot.d.ts +57 -0
  241. package/dist/core/skill-sync/snapshot.js +120 -0
  242. package/dist/core/spawn.d.ts +14 -0
  243. package/dist/core/spawn.js +29 -9
  244. package/dist/core/substrate/index.d.ts +2 -2
  245. package/dist/core/substrate/index.js +7 -7
  246. package/dist/core/substrate/injected-store.d.ts +10 -0
  247. package/dist/core/substrate/injected-store.js +55 -0
  248. package/dist/core/substrate/on-read.js +68 -6
  249. package/dist/core/substrate/render.d.ts +8 -11
  250. package/dist/core/substrate/render.js +29 -43
  251. package/dist/core/substrate/schema.d.ts +16 -11
  252. package/dist/core/substrate/schema.js +32 -31
  253. package/dist/core/tui/host.d.ts +12 -4
  254. package/dist/core/tui/host.js +280 -149
  255. package/dist/core/view/bridge.d.ts +10 -0
  256. package/dist/core/view/bridge.js +31 -0
  257. package/dist/core/view/chrome.d.ts +9 -0
  258. package/dist/core/view/chrome.js +22 -0
  259. package/dist/core/view/contract.d.ts +171 -0
  260. package/dist/core/view/contract.js +23 -0
  261. package/dist/core/view/loader.d.ts +31 -0
  262. package/dist/core/view/loader.js +188 -0
  263. package/dist/core/view/transport-local.d.ts +7 -0
  264. package/dist/core/view/transport-local.js +70 -0
  265. package/dist/core/view/transport.d.ts +4 -0
  266. package/dist/core/view/transport.js +15 -0
  267. package/dist/daemon/crtrd.d.ts +38 -27
  268. package/dist/daemon/crtrd.js +303 -376
  269. package/dist/daemon/manage.js +6 -1
  270. package/dist/index.js +1 -1
  271. package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +28 -20
  272. package/dist/pi-extensions/canvas-context-intro.js +4 -4
  273. package/dist/pi-extensions/canvas-doc-substrate.js +29 -20
  274. package/dist/pi-extensions/canvas-nav.js +35 -385
  275. package/dist/pi-extensions/canvas-recap.d.ts +37 -0
  276. package/dist/pi-extensions/canvas-recap.js +236 -0
  277. package/dist/pi-extensions/canvas-resume.js +2 -1
  278. package/dist/pi-extensions/canvas-stophook.d.ts +15 -13
  279. package/dist/pi-extensions/canvas-stophook.js +119 -103
  280. package/dist/pi-extensions/canvas-view.js +2 -1
  281. package/dist/pi-extensions/widget-order-bus.d.ts +6 -0
  282. package/dist/pi-extensions/widget-order-bus.js +34 -0
  283. package/dist/prompts/view.d.ts +2 -2
  284. package/dist/prompts/view.js +145 -73
  285. package/dist/types.d.ts +1 -6
  286. package/dist/types.js +1 -3
  287. package/dist/web/ViewChrome.d.ts +7 -0
  288. package/dist/web/ViewChrome.js +28 -0
  289. package/dist/web/ViewPane.d.ts +39 -0
  290. package/dist/web/ViewPane.js +48 -0
  291. package/dist/web/index.d.ts +6 -0
  292. package/dist/web/index.js +16 -0
  293. package/dist/web/runtime.d.ts +39 -0
  294. package/dist/web/runtime.js +133 -0
  295. package/dist/web/states.d.ts +24 -0
  296. package/dist/web/states.js +24 -0
  297. package/dist/web/transport-http.d.ts +5 -0
  298. package/dist/web/transport-http.js +28 -0
  299. package/dist/web-client/assets/index-BUvQb4hR.css +2 -0
  300. package/dist/web-client/assets/index-ClLQXYAE.js +10 -0
  301. package/dist/web-client/index.html +13 -0
  302. package/package.json +20 -6
  303. package/dist/builtin-views/canvas/client.mjs +0 -303
  304. package/dist/builtin-views/canvas/view.mjs +0 -576
  305. package/dist/builtin-views/git-pr/client.mjs +0 -440
  306. package/dist/builtin-views/git-pr/view.mjs +0 -675
  307. package/dist/builtin-views/inbox/sources/gmail.mjs +0 -965
  308. package/dist/builtin-views/inbox/sources/linkedin.mjs +0 -427
  309. package/dist/builtin-views/inbox/view.mjs +0 -889
  310. package/dist/builtin-views/linkedin/client.mjs +0 -610
  311. package/dist/builtin-views/linkedin/view.mjs +0 -1171
  312. package/dist/commands/pkg/bridge.d.ts +0 -1
  313. package/dist/commands/pkg/bridge.js +0 -137
  314. package/dist/commands/skill/author.d.ts +0 -3
  315. package/dist/commands/skill/author.js +0 -140
  316. package/dist/commands/skill/shared.d.ts +0 -3
  317. package/dist/commands/skill/shared.js +0 -19
  318. package/dist/commands/skill.d.ts +0 -2
  319. package/dist/commands/skill.js +0 -21
  320. package/dist/commands/tmux-spread.d.ts +0 -2
  321. package/dist/commands/tmux-spread.js +0 -144
  322. package/dist/core/__tests__/full/daemon-liveness-pane.full.test.js +0 -292
  323. package/dist/core/__tests__/full/placement-focus.test.js +0 -309
  324. package/dist/core/__tests__/full/placement-reconcile.test.js +0 -212
  325. package/dist/core/__tests__/full/placement-revive.test.js +0 -238
  326. package/dist/core/__tests__/full/placement-teardown.test.js +0 -221
  327. package/dist/core/__tests__/home-session.test.js +0 -186
  328. package/dist/core/__tests__/relaunch.test.js +0 -335
  329. package/dist/core/bridge-map.d.ts +0 -19
  330. package/dist/core/bridge-map.js +0 -73
  331. package/dist/core/tui/contract.d.ts +0 -83
  332. package/dist/core/tui/contract.js +0 -8
  333. package/dist/core/tui/loader.d.ts +0 -16
  334. package/dist/core/tui/loader.js +0 -94
  335. package/dist/prompts/skill.d.ts +0 -2
  336. package/dist/prompts/skill.js +0 -650
  337. /package/dist/{core/__tests__/full/daemon-liveness-pane.full.test.d.ts → clients/attach/__tests__/action-parity.test.d.ts} +0 -0
  338. /package/dist/{core/__tests__/full/placement-focus.test.d.ts → clients/attach/__tests__/clipboard-image.test.d.ts} +0 -0
  339. /package/dist/{core/__tests__/full/placement-reconcile.test.d.ts → clients/attach/__tests__/editor-newline.test.d.ts} +0 -0
  340. /package/dist/{core/__tests__/full/placement-revive.test.d.ts → clients/attach/__tests__/git-info.test.d.ts} +0 -0
  341. /package/dist/{core/__tests__/full/placement-teardown.test.d.ts → clients/attach/__tests__/onrequest-wired.test.d.ts} +0 -0
  342. /package/dist/{core/__tests__/home-session.test.d.ts → clients/attach/__tests__/reconnect-giveup.test.d.ts} +0 -0
  343. /package/dist/{core/__tests__/relaunch.test.d.ts → clients/attach/__tests__/slash-quit-copy.test.d.ts} +0 -0
@@ -1,8 +1,8 @@
1
1
  import type { Scope } from '../../types.js';
2
2
  import type { MemoryDoc } from '../memory-resolver.js';
3
- export declare const KINDS: readonly ["skill", "reference", "preference"];
3
+ export declare const KINDS: readonly ["knowledge", "preference"];
4
4
  export type DocKind = (typeof KINDS)[number];
5
- /** Is `v` one of the three valid document kinds? */
5
+ /** Is `v` one of the two valid document kinds? */
6
6
  export declare function isDocKind(v: unknown): v is DocKind;
7
7
  export declare const RUNGS: readonly ["none", "name", "preview", "content"];
8
8
  export type Rung = (typeof RUNGS)[number];
@@ -11,10 +11,7 @@ export declare function rungRank(r: Rung): number;
11
11
  /** Does rung `r` disclose at least as much as `min`? — e.g.
12
12
  * `rungAtLeast(doc.systemPromptVisibility, 'name')` ⇒ "shows at boot at all". */
13
13
  export declare function rungAtLeast(r: Rung, min: Rung): boolean;
14
- export declare const KIND_DEFAULT_RUNGS: Record<DocKind, {
15
- systemPrompt: Rung;
16
- fileRead: Rung;
17
- }>;
14
+ export declare const FALLBACK_RUNG: Rung;
18
15
  /** A gate predicate tree, evaluated by predicate.ts (`evalCondition`) against
19
16
  * the node-config subject. Typed loosely on purpose — the matcher engine owns
20
17
  * validation; structurally it is a field→matcher map with optional
@@ -24,7 +21,7 @@ export type GatePredicate = Record<string, unknown>;
24
21
  * defaults applied. Required fields (`kind`/`when-and-why-to-read`) and
25
22
  * optionals all resolved to concrete typed values. */
26
23
  export interface SubstrateSchema {
27
- /** Which of the three semantic kinds. */
24
+ /** Which of the two semantic kinds (knowledge | preference). */
28
25
  kind: DocKind;
29
26
  /** The read-routing line — a single sentence answering WHEN to read this doc
30
27
  * and WHY it is worth the read: "When <circumstance>, this <kind> should be
@@ -46,6 +43,13 @@ export interface SubstrateSchema {
46
43
  /** Optional glob list narrowing the on-read trigger to matching read files.
47
44
  * Absent ⇒ positional trigger only. A single glob is normalized to a 1-list. */
48
45
  appliesTo?: string[];
46
+ /** Optional condition over the READ FILE's own frontmatter — the on-read
47
+ * frontmatter trigger (Stream A native rules). Same coercion + predicate
48
+ * vocabulary as `gate` (non-null non-array object carried; empty `{}` inert),
49
+ * but evaluated by `evalCondition` against the read file's parsed YAML rather
50
+ * than the node subject. Absent ⇒ no frontmatter trigger. Frontmatter key
51
+ * `read-when`. */
52
+ readWhen?: GatePredicate;
49
53
  }
50
54
  /** A fully-resolved substrate document: the parsed schema PLUS the resolver's
51
55
  * path-derived identity and body. This single object flows through the whole
@@ -63,10 +67,11 @@ export interface SubstrateDoc extends SubstrateSchema {
63
67
  /** Parse a raw frontmatter record (from `parseFrontmatterGeneric`, via the
64
68
  * resolver) into a typed schema with defaults applied. Returns `null` when the
65
69
  * record is absent or carries no valid `kind` — i.e. it is not a substrate
66
- * document and cannot be classified or defaulted. Tolerant of every other
67
- * imperfection (a missing `when-and-why-to-read` defaults to '', a bad rung
68
- * falls back to the kind default), so a renderer mapping over many docs never
69
- * throws. Authoring-time enforcement of the field lives in `crtr memory lint`. */
70
+ * document and cannot be classified. Tolerant of every other imperfection (a
71
+ * missing `when-and-why-to-read` defaults to '', a missing/bad rung falls back
72
+ * to the neutral floor `none`), so a renderer mapping over many docs never
73
+ * throws. Authoring-time enforcement of these fields lives in `crtr memory
74
+ * write` (on create) and `crtr memory lint`. */
70
75
  export declare function parseSubstrateFrontmatter(fm: Record<string, unknown> | null): SubstrateSchema | null;
71
76
  /** Parse a resolved MemoryDoc into a fully-typed SubstrateDoc (schema + the
72
77
  * resolver's name/scope/path/body). Returns `null` for a non-substrate doc
@@ -1,14 +1,23 @@
1
1
  // schema.ts — the typed shape of a substrate document's frontmatter, the
2
- // visibility ladder, the kind→default-rungs table, and the parse/validate
3
- // function that turns a resolved MemoryDoc into a fully-typed SubstrateDoc with
4
- // defaults applied. This is the keystone every downstream track (CLI verbs,
5
- // boot render, on-read render, migrator) builds against — pure and side-effect
6
- // free. See design-substrate.md §4 (schema) + §9 (defaults).
2
+ // visibility ladder, and the parse/validate function that turns a resolved
3
+ // MemoryDoc into a fully-typed SubstrateDoc. This is the keystone every
4
+ // downstream track (CLI verbs, boot render, on-read render, migrator) builds
5
+ // against — pure and side-effect free. See design-substrate.md §4 (schema).
6
+ //
7
+ // There is NO kind-based default for visibility: the right rung is a
8
+ // case-by-case authoring call, so both rungs are required at authoring time
9
+ // (enforced by `crtr memory write` on create and by `crtr memory lint`). The
10
+ // runtime parser is tolerant by contract (it maps over many docs and must
11
+ // never throw), so a doc missing/with an invalid rung falls back to the neutral
12
+ // floor `none` — a malformed doc renders invisible rather than crashing, and
13
+ // lint flags it. Valid docs never hit the fallback.
7
14
  // ---------------------------------------------------------------------------
8
- // Kinds — the three semantic kinds (design §3). `kind` is data, not a fork.
15
+ // Kinds — the two semantic kinds (design §3): `knowledge` (consult procedural
16
+ // playbooks + factual references merged) vs `preference` (behave — standing
17
+ // directives). `kind` is a load-bearing binary, not a content taxonomy.
9
18
  // ---------------------------------------------------------------------------
10
- export const KINDS = ['skill', 'reference', 'preference'];
11
- /** Is `v` one of the three valid document kinds? */
19
+ export const KINDS = ['knowledge', 'preference'];
20
+ /** Is `v` one of the two valid document kinds? */
12
21
  export function isDocKind(v) {
13
22
  return typeof v === 'string' && KINDS.includes(v);
14
23
  }
@@ -28,46 +37,38 @@ export function rungAtLeast(r, min) {
28
37
  return rungRank(r) >= rungRank(min);
29
38
  }
30
39
  // ---------------------------------------------------------------------------
31
- // The kind→default-rungs table (design §9). When an author omits a visibility
32
- // field, its default is a function of `kind` chosen so the common case is
33
- // correct with no thought and the migration is behavior-preserving for skills
34
- // and preferences. One data row per kind, NOT a code fork.
35
- //
36
- // kind system-prompt-visibility file-read-visibility
37
- // skill name none
38
- // preference preview none
39
- // reference none preview
40
+ // The neutral fallback rung used only when a doc omits a visibility field or
41
+ // carries an invalid one. NOT a default an author may lean on authoring-time
42
+ // enforcement requires explicit rungs; this is purely the runtime parser's
43
+ // never-throw floor (a malformed doc renders invisible, and lint flags it).
40
44
  // ---------------------------------------------------------------------------
41
- export const KIND_DEFAULT_RUNGS = {
42
- skill: { systemPrompt: 'name', fileRead: 'none' },
43
- preference: { systemPrompt: 'preview', fileRead: 'none' },
44
- reference: { systemPrompt: 'none', fileRead: 'preview' },
45
- };
45
+ export const FALLBACK_RUNG = 'none';
46
46
  // ---------------------------------------------------------------------------
47
47
  // Parse / validate.
48
48
  // ---------------------------------------------------------------------------
49
49
  /** Parse a raw frontmatter record (from `parseFrontmatterGeneric`, via the
50
50
  * resolver) into a typed schema with defaults applied. Returns `null` when the
51
51
  * record is absent or carries no valid `kind` — i.e. it is not a substrate
52
- * document and cannot be classified or defaulted. Tolerant of every other
53
- * imperfection (a missing `when-and-why-to-read` defaults to '', a bad rung
54
- * falls back to the kind default), so a renderer mapping over many docs never
55
- * throws. Authoring-time enforcement of the field lives in `crtr memory lint`. */
52
+ * document and cannot be classified. Tolerant of every other imperfection (a
53
+ * missing `when-and-why-to-read` defaults to '', a missing/bad rung falls back
54
+ * to the neutral floor `none`), so a renderer mapping over many docs never
55
+ * throws. Authoring-time enforcement of these fields lives in `crtr memory
56
+ * write` (on create) and `crtr memory lint`. */
56
57
  export function parseSubstrateFrontmatter(fm) {
57
58
  if (fm === null)
58
59
  return null;
59
60
  if (!isDocKind(fm.kind))
60
61
  return null;
61
62
  const kind = fm.kind;
62
- const defaults = KIND_DEFAULT_RUNGS[kind];
63
63
  return {
64
64
  kind,
65
65
  whenAndWhyToRead: strField(fm['when-and-why-to-read']),
66
66
  shortForm: strField(fm['short-form']),
67
- systemPromptVisibility: parseRung(fm['system-prompt-visibility'], defaults.systemPrompt),
68
- fileReadVisibility: parseRung(fm['file-read-visibility'], defaults.fileRead),
67
+ systemPromptVisibility: parseRung(fm['system-prompt-visibility'], FALLBACK_RUNG),
68
+ fileReadVisibility: parseRung(fm['file-read-visibility'], FALLBACK_RUNG),
69
69
  gate: parseGate(fm.gate),
70
70
  appliesTo: parseAppliesTo(fm['applies-to']),
71
+ readWhen: parseGate(fm['read-when']),
71
72
  };
72
73
  }
73
74
  /** Parse a resolved MemoryDoc into a fully-typed SubstrateDoc (schema + the
@@ -95,8 +96,8 @@ export function previewLine(doc) {
95
96
  function strField(v) {
96
97
  return typeof v === 'string' ? v : '';
97
98
  }
98
- /** Resolve a visibility field to a ladder rung, falling back to the kind
99
- * default when absent/invalid. */
99
+ /** Resolve a visibility field to a ladder rung, falling back to the neutral
100
+ * floor when absent/invalid. */
100
101
  function parseRung(v, fallback) {
101
102
  return typeof v === 'string' && RUNGS.includes(v)
102
103
  ? v
@@ -1,5 +1,5 @@
1
1
  import { type Draw, type Rect, type Size } from './draw.js';
2
- import type { ViewModule, ViewManifest, BannerLevel } from './contract.js';
2
+ import type { ViewCore, TuiPresenter, TextPresenter, KeyHint, BannerLevel } from '../view/contract.js';
3
3
  export interface RunViewOptions {
4
4
  /** CLI flags forwarded verbatim to the view via host.options. */
5
5
  options?: Record<string, string>;
@@ -19,11 +19,19 @@ export interface Chrome {
19
19
  subtitle: string | null;
20
20
  mode: string | null;
21
21
  }
22
+ /** The slice of a view's manifest that drawChrome reads (title + subtitle), plus
23
+ * the footer hints lifted from the TuiPresenter's keymap bindings. */
24
+ export interface ChromeManifest {
25
+ title: string;
26
+ subtitle?: string;
27
+ keymap?: KeyHint[];
28
+ }
22
29
  /** Draw the host chrome into `draw` and return the content Rect for the view.
23
30
  * Three zones: title row (state rail + title/subtitle + state chip + liveness),
24
31
  * a hairline, and a footer (status left, keymap right) with a severity banner
25
32
  * on the row above it when set. */
26
- declare function drawChrome(draw: Draw, size: Size, manifest: ViewManifest, c: Chrome, now?: number): Rect;
33
+ declare function drawChrome(draw: Draw, size: Size, manifest: ChromeManifest, c: Chrome, now?: number): Rect;
27
34
  export { drawChrome };
28
- /** Host a view in the alt screen until it quits (or Ctrl-C). */
29
- export declare function runView<S>(view: ViewModule<S>, opts?: RunViewOptions): Promise<void>;
35
+ /** Host a dual-target ViewCore + TuiPresenter in the alt screen until it quits
36
+ * (or Ctrl-C). `text` is the optional text presenter for the piped path. */
37
+ export declare function runCoreView<S>(core: ViewCore<S>, tui: TuiPresenter<S>, text: TextPresenter<S> | null, opts?: RunViewOptions): Promise<void>;