@north-light/crouter 0.3.317 → 0.3.319

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 (1305) hide show
  1. package/README.md +0 -3
  2. package/dist/api/client.d.ts +1 -1
  3. package/dist/api/client.js +2 -912
  4. package/dist/api/dto/attach.js +0 -13
  5. package/dist/api/dto/bash-jobs.js +1 -9
  6. package/dist/api/dto/broker-ops.js +0 -6
  7. package/dist/api/dto/broker.js +0 -20
  8. package/dist/api/dto/canvas.js +0 -2
  9. package/dist/api/dto/chat-inventory.js +0 -11
  10. package/dist/api/dto/common.js +1 -15
  11. package/dist/api/dto/config.js +0 -3
  12. package/dist/api/dto/crons.js +1 -10
  13. package/dist/api/dto/files.js +0 -7
  14. package/dist/api/dto/focus.js +0 -10
  15. package/dist/api/dto/health.js +0 -2
  16. package/dist/api/dto/human-requests.js +0 -4
  17. package/dist/api/dto/human.js +0 -4
  18. package/dist/api/dto/inbox.js +0 -4
  19. package/dist/api/dto/lifecycle.js +0 -3
  20. package/dist/api/dto/mail.js +0 -1
  21. package/dist/api/dto/memory.js +0 -6
  22. package/dist/api/dto/messages.js +0 -2
  23. package/dist/api/dto/model-config.js +0 -1
  24. package/dist/api/dto/modelauth.js +0 -4
  25. package/dist/api/dto/node-outcomes.js +0 -2
  26. package/dist/api/dto/nodes.js +0 -3
  27. package/dist/api/dto/profiles.js +1 -4
  28. package/dist/api/dto/recovery.js +0 -1
  29. package/dist/api/dto/reports.js +0 -2
  30. package/dist/api/dto/review-comments.js +0 -5
  31. package/dist/api/dto/reviews.js +0 -5
  32. package/dist/api/dto/subscriptions.js +0 -2
  33. package/dist/api/dto/worktree.js +0 -6
  34. package/dist/api/errors.js +1 -40
  35. package/dist/api/index.js +1 -33
  36. package/dist/api/plugin-manifest-schema.js +0 -23
  37. package/dist/api/routes.js +1 -147
  38. package/dist/build-root.js +1 -198
  39. package/dist/cli.js +3 -99
  40. package/dist/clients/attach/ansi-cells.js +1 -137
  41. package/dist/clients/attach/chrome/bash-jobs.js +1 -31
  42. package/dist/clients/attach/chrome/canvas-panels.js +1 -194
  43. package/dist/clients/attach/chrome/completion-bell.js +1 -89
  44. package/dist/clients/attach/chrome/cron-wait.js +1 -34
  45. package/dist/clients/attach/chrome/git-info.js +2 -44
  46. package/dist/clients/attach/chrome/header.js +1 -30
  47. package/dist/clients/attach/chrome/inbox-strip.js +1 -199
  48. package/dist/clients/attach/chrome/recap.js +1 -19
  49. package/dist/clients/attach/chrome/review-wait.js +1 -22
  50. package/dist/clients/attach/chrome/roster.js +4 -275
  51. package/dist/clients/attach/chrome/status-line.js +1 -117
  52. package/dist/clients/attach/chrome/ticket-panel.js +1 -280
  53. package/dist/clients/attach/chrome/widgets.js +1 -51
  54. package/dist/clients/attach/command.js +1 -107
  55. package/dist/clients/attach/config.js +1 -274
  56. package/dist/clients/attach/input/capabilities.js +1 -104
  57. package/dist/clients/attach/input/clipboard-image.js +3 -220
  58. package/dist/clients/attach/input/completion-frecency.js +1 -141
  59. package/dist/clients/attach/input/controller.js +7 -377
  60. package/dist/clients/attach/input/overlay-owner.js +1 -199
  61. package/dist/clients/attach/input/ref-autocomplete.js +2 -176
  62. package/dist/clients/attach/input/titled-editor.js +4 -859
  63. package/dist/clients/attach/overlays/auth.js +2 -271
  64. package/dist/clients/attach/overlays/dialogs.js +2 -102
  65. package/dist/clients/attach/overlays/file-review.js +2 -128
  66. package/dist/clients/attach/overlays/graph.js +1 -661
  67. package/dist/clients/attach/overlays/help.js +1 -211
  68. package/dist/clients/attach/overlays/mcp.js +1 -302
  69. package/dist/clients/attach/overlays/pickers.js +1 -163
  70. package/dist/clients/attach/render/activity-slot.js +1 -13
  71. package/dist/clients/attach/render/assistant-message.js +1 -56
  72. package/dist/clients/attach/render/card-presentation.js +5 -218
  73. package/dist/clients/attach/render/chat-view.js +5 -1708
  74. package/dist/clients/attach/render/condensed-history.js +1 -60
  75. package/dist/clients/attach/render/context-message.js +1 -63
  76. package/dist/clients/attach/render/crtr-output.js +17 -905
  77. package/dist/clients/attach/render/diagram.js +7 -111
  78. package/dist/clients/attach/render/edit-diff.js +5 -304
  79. package/dist/clients/attach/render/glyph-codepoints.js +1 -42
  80. package/dist/clients/attach/render/group-activity.js +2 -263
  81. package/dist/clients/attach/render/group-recap.js +1 -152
  82. package/dist/clients/attach/render/markdown-source.js +5 -266
  83. package/dist/clients/attach/render/measured-container.js +1 -322
  84. package/dist/clients/attach/render/page-block.js +1 -183
  85. package/dist/clients/attach/render/scroll-animation.js +1 -80
  86. package/dist/clients/attach/render/tool-calls.js +3 -361
  87. package/dist/clients/attach/render/transcript-copy.js +2 -81
  88. package/dist/clients/attach/render/transcript-search.js +1 -152
  89. package/dist/clients/attach/render/viewport.js +1 -184
  90. package/dist/clients/attach/session/banner.js +1 -29
  91. package/dist/clients/attach/session/bindings.js +1 -71
  92. package/dist/clients/attach/session/chrome-refresh.js +1 -94
  93. package/dist/clients/attach/session/connection.js +1 -186
  94. package/dist/clients/attach/session/context.js +0 -16
  95. package/dist/clients/attach/session/editor-frame.js +1 -142
  96. package/dist/clients/attach/session/editor-inventory.js +6 -160
  97. package/dist/clients/attach/session/file-links.js +1 -68
  98. package/dist/clients/attach/session/focus-events.js +1 -12
  99. package/dist/clients/attach/session/frame.js +1 -214
  100. package/dist/clients/attach/session/frames.js +1 -188
  101. package/dist/clients/attach/session/identity.js +1 -26
  102. package/dist/clients/attach/session/input-wiring.js +1 -140
  103. package/dist/clients/attach/session/invariant.js +1 -15
  104. package/dist/clients/attach/session/keys.js +1 -77
  105. package/dist/clients/attach/session/layout.js +1 -59
  106. package/dist/clients/attach/session/mouse.js +1 -78
  107. package/dist/clients/attach/session/pane-focus.js +1 -42
  108. package/dist/clients/attach/session/pane-tag.js +1 -112
  109. package/dist/clients/attach/session/pi-assets.js +1 -24
  110. package/dist/clients/attach/session/pi-oauth-flows.js +1 -21
  111. package/dist/clients/attach/session/profile-files.js +1 -228
  112. package/dist/clients/attach/session/reconnect.js +1 -175
  113. package/dist/clients/attach/session/selection.js +3 -108
  114. package/dist/clients/attach/session/state-sync.js +1 -67
  115. package/dist/clients/attach/session/surface-frame.js +1 -73
  116. package/dist/clients/attach/session/surface-host.js +1 -255
  117. package/dist/clients/attach/session/teardown.js +5 -94
  118. package/dist/clients/attach/session/transcript-search.js +3 -151
  119. package/dist/clients/attach/session/whip-achievements.js +2 -145
  120. package/dist/clients/attach/session/whip.js +1 -362
  121. package/dist/clients/attach/slash/dispatch.js +1 -706
  122. package/dist/clients/attach/slash/prompt-preview.js +1 -121
  123. package/dist/clients/attach/viewer.js +1 -1
  124. package/dist/clients/conversation/projection.js +1 -324
  125. package/dist/clients/conversation/submit.js +1 -51
  126. package/dist/clients/inbox/controller.js +1 -701
  127. package/dist/clients/inbox/dto-adapt.js +1 -93
  128. package/dist/clients/inbox/layout.js +1 -9
  129. package/dist/clients/inbox/page-adapter.js +1 -55
  130. package/dist/clients/inbox/resolve.js +1 -35
  131. package/dist/clients/inbox/review/anchors.js +1 -89
  132. package/dist/clients/inbox/review/comments-client.js +1 -98
  133. package/dist/clients/inbox/review/companion-pane.js +1 -82
  134. package/dist/clients/inbox/review/document-surface.js +2 -1188
  135. package/dist/clients/inbox/review/frame.js +1 -216
  136. package/dist/clients/inbox/review/keys.js +1 -123
  137. package/dist/clients/inbox/review/launch.js +1 -151
  138. package/dist/clients/inbox/review/live-source.js +1 -160
  139. package/dist/clients/inbox/review/nvim.js +1 -44
  140. package/dist/clients/inbox/review/remap.js +1 -157
  141. package/dist/clients/inbox/review/review-client.js +1 -123
  142. package/dist/clients/inbox/review/roundtrip.js +3 -36
  143. package/dist/clients/inbox/review/state.js +4 -315
  144. package/dist/clients/inbox/review-adapter.js +1 -43
  145. package/dist/clients/inbox/surface.js +1 -152
  146. package/dist/clients/inbox/tui/ansi.js +3 -321
  147. package/dist/clients/inbox/tui/input.js +5 -392
  148. package/dist/clients/inbox/tui/keys.js +1 -104
  149. package/dist/clients/inbox/tui/page-body.js +1 -66
  150. package/dist/clients/inbox/tui/panel.js +1 -84
  151. package/dist/clients/inbox/tui/render.js +2 -368
  152. package/dist/clients/inbox/tui/slots.js +3 -134
  153. package/dist/clients/inbox/tui/types.js +0 -1
  154. package/dist/clients/inbox/tui.js +1 -86
  155. package/dist/clients/surfaces/host.js +0 -1
  156. package/dist/commands/api-client.js +4 -290
  157. package/dist/commands/attention.js +1 -215
  158. package/dist/commands/canvas-browse.js +1 -70
  159. package/dist/commands/canvas-config.js +2 -192
  160. package/dist/commands/canvas-history/grep.js +7 -85
  161. package/dist/commands/canvas-history/read.js +3 -50
  162. package/dist/commands/canvas-history/search.js +10 -99
  163. package/dist/commands/canvas-history/shared.js +1 -139
  164. package/dist/commands/canvas-history/stats.js +6 -68
  165. package/dist/commands/canvas-history.js +1 -32
  166. package/dist/commands/canvas-issue.js +14 -149
  167. package/dist/commands/canvas-prune.js +1 -108
  168. package/dist/commands/canvas-roster.js +1 -69
  169. package/dist/commands/canvas-snapshot.js +1 -34
  170. package/dist/commands/canvas-use.js +1 -61
  171. package/dist/commands/canvas.js +1 -49
  172. package/dist/commands/chord.js +1 -241
  173. package/dist/commands/cron.js +11 -534
  174. package/dist/commands/dashboard.js +1 -85
  175. package/dist/commands/human/components.js +3 -77
  176. package/dist/commands/human/feedback.js +1 -112
  177. package/dist/commands/human/prompts.js +1 -331
  178. package/dist/commands/human/queue.js +1 -191
  179. package/dist/commands/human/request.js +1 -266
  180. package/dist/commands/human/review.js +1 -288
  181. package/dist/commands/human/shared.js +1 -67
  182. package/dist/commands/human.js +4 -60
  183. package/dist/commands/memory/delete.js +1 -100
  184. package/dist/commands/memory/edit.js +21 -219
  185. package/dist/commands/memory/find.js +2 -244
  186. package/dist/commands/memory/history.js +5 -199
  187. package/dist/commands/memory/lint.js +1 -107
  188. package/dist/commands/memory/list.js +1 -142
  189. package/dist/commands/memory/move.js +1 -223
  190. package/dist/commands/memory/origin.js +1 -130
  191. package/dist/commands/memory/read.js +6 -232
  192. package/dist/commands/memory/shared.js +12 -802
  193. package/dist/commands/memory/write.js +13 -235
  194. package/dist/commands/memory.js +1 -30
  195. package/dist/commands/node/bash.js +5 -245
  196. package/dist/commands/node/create.js +3 -332
  197. package/dist/commands/node/inspect.js +12 -300
  198. package/dist/commands/node/lifecycle.js +2 -453
  199. package/dist/commands/node/message.js +1 -161
  200. package/dist/commands/node/outcome.js +4 -134
  201. package/dist/commands/node/pyramid.js +2 -79
  202. package/dist/commands/node/subscription.js +1 -78
  203. package/dist/commands/node/wait.js +7 -163
  204. package/dist/commands/node-context.js +2 -159
  205. package/dist/commands/node-inspect-artifacts.js +8 -109
  206. package/dist/commands/node-lifecycle-revive.js +1 -217
  207. package/dist/commands/node-snapshot.js +1 -37
  208. package/dist/commands/node-transcript.js +1 -62
  209. package/dist/commands/node-worktree.js +1 -138
  210. package/dist/commands/node.js +1 -29
  211. package/dist/commands/pkg/browse/actions.js +1 -198
  212. package/dist/commands/pkg/browse/catalog.js +1 -466
  213. package/dist/commands/pkg/browse/command-view.js +1 -191
  214. package/dist/commands/pkg/browse/detail-panel.js +1 -402
  215. package/dist/commands/pkg/browse/doc-view.js +1 -89
  216. package/dist/commands/pkg/browse/list-panel.js +2 -168
  217. package/dist/commands/pkg/browse/model.js +1 -36
  218. package/dist/commands/pkg/browse/shell.js +1 -640
  219. package/dist/commands/pkg/browse.js +1 -27
  220. package/dist/commands/pkg/market-inspect.js +1 -141
  221. package/dist/commands/pkg/market-manage.js +1 -327
  222. package/dist/commands/pkg/market.js +1 -14
  223. package/dist/commands/pkg/plugin-inspect.js +1 -168
  224. package/dist/commands/pkg/plugin-manage.js +17 -1109
  225. package/dist/commands/pkg/plugin.js +1 -14
  226. package/dist/commands/pkg/shared.js +1 -62
  227. package/dist/commands/pkg.js +1 -21
  228. package/dist/commands/profile/default.js +1 -139
  229. package/dist/commands/profile/delete.js +1 -66
  230. package/dist/commands/profile/env.js +3 -188
  231. package/dist/commands/profile/kind.js +2 -35
  232. package/dist/commands/profile/list.js +1 -43
  233. package/dist/commands/profile/meta.js +1 -67
  234. package/dist/commands/profile/new.js +1 -115
  235. package/dist/commands/profile/pause.js +1 -59
  236. package/dist/commands/profile/project.js +1 -113
  237. package/dist/commands/profile/rename.js +1 -38
  238. package/dist/commands/profile/show.js +1 -52
  239. package/dist/commands/profile.js +1 -35
  240. package/dist/commands/push.js +9 -265
  241. package/dist/commands/revive.js +10 -181
  242. package/dist/commands/surface/node/cycle.js +1 -83
  243. package/dist/commands/surface/node/focus.js +1 -81
  244. package/dist/commands/surface/node/id.js +1 -38
  245. package/dist/commands/surface/node/pin.js +1 -42
  246. package/dist/commands/surface/node/placement.js +1 -134
  247. package/dist/commands/surface-edit.js +1 -157
  248. package/dist/commands/surface-inbox.js +1 -98
  249. package/dist/commands/surface-inspect.js +1 -39
  250. package/dist/commands/surface-node.js +1 -19
  251. package/dist/commands/surface-reload.js +2 -134
  252. package/dist/commands/surface-tmux-spread.js +1 -214
  253. package/dist/commands/surface.js +1 -28
  254. package/dist/commands/sys/branch.js +1 -19
  255. package/dist/commands/sys/config.js +1 -353
  256. package/dist/commands/sys/context/admin/actions.js +2 -246
  257. package/dist/commands/sys/context/admin/detail-panel.js +1 -247
  258. package/dist/commands/sys/context/admin/docs-panel.js +1 -191
  259. package/dist/commands/sys/context/admin/list-view.js +1 -183
  260. package/dist/commands/sys/context/admin/model.js +1 -229
  261. package/dist/commands/sys/context/admin/rail-panel.js +1 -227
  262. package/dist/commands/sys/context/admin/read-view.js +2 -194
  263. package/dist/commands/sys/context/admin/shell.js +1 -910
  264. package/dist/commands/sys/context/admin.js +2 -126
  265. package/dist/commands/sys/context/doc.js +3 -197
  266. package/dist/commands/sys/context/prompt-review.js +11 -291
  267. package/dist/commands/sys/context/resolve.js +10 -489
  268. package/dist/commands/sys/context/sysprompt.js +5 -96
  269. package/dist/commands/sys/context.js +1 -20
  270. package/dist/commands/sys/daemon.js +1 -313
  271. package/dist/commands/sys/doctor.js +1 -617
  272. package/dist/commands/sys/feedback.js +7 -228
  273. package/dist/commands/sys/logs.js +3 -129
  274. package/dist/commands/sys/migrate.js +1 -94
  275. package/dist/commands/sys/panels/broker-limits-panel.js +2 -110
  276. package/dist/commands/sys/panels/dependencies-panel.js +1 -80
  277. package/dist/commands/sys/panels/keybindings-panel.js +1 -703
  278. package/dist/commands/sys/panels/models-panel.js +1 -1133
  279. package/dist/commands/sys/panels/plugins-panel.js +1 -80
  280. package/dist/commands/sys/panels/prefs-panel.js +1 -85
  281. package/dist/commands/sys/panels/profiles-panel.js +1 -601
  282. package/dist/commands/sys/panels/provider-panel.js +1 -538
  283. package/dist/commands/sys/settings-shell.js +1 -400
  284. package/dist/commands/sys/settings.js +1 -46
  285. package/dist/commands/sys/setup-core.js +6 -579
  286. package/dist/commands/sys/setup-settings-runner.js +1 -16
  287. package/dist/commands/sys/setup-wizard.js +1 -279
  288. package/dist/commands/sys/setup.js +1 -34
  289. package/dist/commands/sys/shared.js +1 -81
  290. package/dist/commands/sys/support/prepare.js +3 -239
  291. package/dist/commands/sys/support/submit.js +6 -524
  292. package/dist/commands/sys/support.js +1 -18
  293. package/dist/commands/sys/sync-deps.js +15 -498
  294. package/dist/commands/sys/sync-project-guidance.js +4 -481
  295. package/dist/commands/sys/sync-shared.js +1 -49
  296. package/dist/commands/sys/sync-skills.js +2 -311
  297. package/dist/commands/sys/sync.js +1 -18
  298. package/dist/commands/sys/update.js +1 -147
  299. package/dist/commands/sys/worktrees.js +5 -53
  300. package/dist/commands/sys.js +1 -18
  301. package/dist/core/activity-signal.js +2 -38
  302. package/dist/core/asset-root.js +1 -18
  303. package/dist/core/auth-file.js +2 -179
  304. package/dist/core/auth-interaction.js +3 -94
  305. package/dist/core/auto-update.js +4 -94
  306. package/dist/core/bash-guard.js +11 -393
  307. package/dist/core/bash-jobs.js +7 -411
  308. package/dist/core/bootstrap.js +2 -53
  309. package/dist/core/broker-client/client.js +1 -184
  310. package/dist/core/broker-client/index.js +1 -13
  311. package/dist/core/broker-client/transport-relay.js +1 -157
  312. package/dist/core/broker-client/transport-socket.js +1 -179
  313. package/dist/core/broker-client/transport.js +1 -26
  314. package/dist/core/canvas/attention.js +1 -47
  315. package/dist/core/canvas/boot-id.js +1 -26
  316. package/dist/core/canvas/boot.js +1 -186
  317. package/dist/core/canvas/browse/app.js +3 -919
  318. package/dist/core/canvas/browse/model.js +1 -477
  319. package/dist/core/canvas/browse/pins.js +1 -29
  320. package/dist/core/canvas/browse/render.js +3 -1055
  321. package/dist/core/canvas/canvas.js +15 -922
  322. package/dist/core/canvas/crons.js +11 -481
  323. package/dist/core/canvas/daemon-owner.js +2 -146
  324. package/dist/core/canvas/db.js +2 -100
  325. package/dist/core/canvas/deliveries.js +22 -283
  326. package/dist/core/canvas/delivery-contract.js +1 -8
  327. package/dist/core/canvas/executions.js +1 -68
  328. package/dist/core/canvas/extensions.js +1 -83
  329. package/dist/core/canvas/focuses.js +1 -77
  330. package/dist/core/canvas/history.js +24 -860
  331. package/dist/core/canvas/index.js +1 -15
  332. package/dist/core/canvas/install-id.js +1 -84
  333. package/dist/core/canvas/labels.js +1 -43
  334. package/dist/core/canvas/meta-file.js +1 -89
  335. package/dist/core/canvas/migrations.js +41 -1150
  336. package/dist/core/canvas/nav-model.js +1 -231
  337. package/dist/core/canvas/nav-render.js +1 -260
  338. package/dist/core/canvas/node-order.js +1 -37
  339. package/dist/core/canvas/node-recap.js +2 -67
  340. package/dist/core/canvas/node-sql-migration.js +2 -209
  341. package/dist/core/canvas/paths.js +1 -153
  342. package/dist/core/canvas/pid.js +4 -683
  343. package/dist/core/canvas/recovery.js +3 -565
  344. package/dist/core/canvas/remote-canvas-source.js +1 -288
  345. package/dist/core/canvas/remote-transport.js +1 -57
  346. package/dist/core/canvas/render-source.js +10 -635
  347. package/dist/core/canvas/sessions.js +1 -78
  348. package/dist/core/canvas/source.js +1 -47
  349. package/dist/core/canvas/status-glyph.js +1 -132
  350. package/dist/core/canvas/telemetry.js +1 -35
  351. package/dist/core/canvas/types.js +1 -6
  352. package/dist/core/canvas/waits.js +4 -68
  353. package/dist/core/canvas/worktrees.js +1 -93
  354. package/dist/core/clipboard-text.js +1 -57
  355. package/dist/core/command-hooks/artifact.js +1 -145
  356. package/dist/core/command-hooks/catalog.js +1 -38
  357. package/dist/core/command-hooks/compose.js +1 -99
  358. package/dist/core/command-hooks/discovery.js +1 -228
  359. package/dist/core/command-hooks/help.js +1 -18
  360. package/dist/core/command-hooks/index.js +1 -7
  361. package/dist/core/command-hooks/lifecycle-catalog.js +1 -9
  362. package/dist/core/command-hooks/lifecycle-create.js +1 -51
  363. package/dist/core/command-hooks/report.js +1 -28
  364. package/dist/core/command-hooks/schema.js +1 -157
  365. package/dist/core/command-hooks/transport/exec-invoke.js +1 -276
  366. package/dist/core/command-hooks/transport/exec-lifecycle.js +1 -211
  367. package/dist/core/command-manifests/manifest.js +1 -324
  368. package/dist/core/command-manifests/registry.js +1 -118
  369. package/dist/core/command-manifests/schema.js +1 -736
  370. package/dist/core/command-plugins/bundle.js +1 -261
  371. package/dist/core/command-plugins/compose.js +1 -65
  372. package/dist/core/command-plugins/discovery.js +1 -245
  373. package/dist/core/command-plugins/endpoint.js +1 -48
  374. package/dist/core/command-plugins/extensions.js +1 -166
  375. package/dist/core/command-plugins/help-addenda.js +1 -44
  376. package/dist/core/command-plugins/presence.js +1 -17
  377. package/dist/core/command-plugins/revalidate.js +2 -152
  378. package/dist/core/command-plugins/transport/exec-invoke.js +1 -215
  379. package/dist/core/command-plugins/transport/http-fetch.js +1 -68
  380. package/dist/core/command-plugins/transport/http-invoke.js +3 -546
  381. package/dist/core/command.js +10 -739
  382. package/dist/core/config.js +1 -1059
  383. package/dist/core/document-lines.js +3 -6
  384. package/dist/core/env-name.js +1 -9
  385. package/dist/core/errors.js +1 -52
  386. package/dist/core/events/emit.js +1 -17
  387. package/dist/core/events/envelope.js +1 -84
  388. package/dist/core/events/errors.js +1 -69
  389. package/dist/core/events/index.js +1 -4
  390. package/dist/core/events/operation-id.js +1 -24
  391. package/dist/core/events/read.js +1 -623
  392. package/dist/core/events/serialize.js +1 -199
  393. package/dist/core/events/source.js +1 -31
  394. package/dist/core/events/types.js +1 -11
  395. package/dist/core/exclusive-lock.js +1 -197
  396. package/dist/core/fault-classifier.js +1 -96
  397. package/dist/core/feed/feed.js +7 -202
  398. package/dist/core/feed/inbox-migrate.js +3 -135
  399. package/dist/core/feed/inbox.js +10 -122
  400. package/dist/core/feed/messages.js +6 -212
  401. package/dist/core/frontmatter.js +1 -35
  402. package/dist/core/fs-utils.js +3 -202
  403. package/dist/core/git.js +2 -103
  404. package/dist/core/help.js +9 -310
  405. package/dist/core/host-exports/builtins.js +9 -68
  406. package/dist/core/host-exports/export.js +3 -124
  407. package/dist/core/human/action-binding.js +1 -40
  408. package/dist/core/human/answer-text.js +5 -100
  409. package/dist/core/human/answer.js +1 -119
  410. package/dist/core/human/claim.js +3 -67
  411. package/dist/core/human/completion.js +1 -27
  412. package/dist/core/human/component-docs.js +78 -272
  413. package/dist/core/human/convention.js +2 -82
  414. package/dist/core/human/feedback-companion.js +1 -106
  415. package/dist/core/human/feedback.js +1 -88
  416. package/dist/core/human/page-authoring.js +1 -19
  417. package/dist/core/human/page-catalog.js +1 -172
  418. package/dist/core/human/page-errors.js +1 -7
  419. package/dist/core/human/page-eval.js +1 -125
  420. package/dist/core/human/page-html-markdown.js +8 -260
  421. package/dist/core/human/page-markdown.js +17 -295
  422. package/dist/core/human/page-schema.js +1 -373
  423. package/dist/core/human/page-synth.js +8 -27
  424. package/dist/core/human/page.js +1 -198
  425. package/dist/core/human/requests.js +15 -466
  426. package/dist/core/human/review-schema.js +1 -34
  427. package/dist/core/human/root.js +1 -11
  428. package/dist/core/human/scan.js +1 -69
  429. package/dist/core/human/summary.js +1 -5
  430. package/dist/core/human/tickets.js +1 -171
  431. package/dist/core/human/types.js +0 -1
  432. package/dist/core/human/visible-paths.js +1 -77
  433. package/dist/core/human-actions.js +1 -101
  434. package/dist/core/inspector/chrome.js +1 -14
  435. package/dist/core/inspector/contract.js +0 -1
  436. package/dist/core/inspector/core.js +2 -295
  437. package/dist/core/inspector/host.js +4 -538
  438. package/dist/core/inspector/model.js +2 -226
  439. package/dist/core/inspector/text.js +6 -45
  440. package/dist/core/inspector/transport.js +1 -36
  441. package/dist/core/inspector/tui.js +2 -295
  442. package/dist/core/installed-plugins.js +1 -78
  443. package/dist/core/io.js +7 -356
  444. package/dist/core/keybindings/attach-control.js +1 -42
  445. package/dist/core/keybindings/background-bash.js +1 -33
  446. package/dist/core/keybindings/catalog.js +1 -256
  447. package/dist/core/keybindings/inbox.js +1 -25
  448. package/dist/core/keybindings/index.js +1 -7
  449. package/dist/core/keybindings/match.js +1 -127
  450. package/dist/core/keybindings/persistence.js +1 -49
  451. package/dist/core/keybindings/resolve.js +1 -348
  452. package/dist/core/keybindings/types.js +0 -1
  453. package/dist/core/locked-file.js +1 -118
  454. package/dist/core/log.js +3 -27
  455. package/dist/core/manifest-recovery.js +1 -72
  456. package/dist/core/manifest-stale.js +1 -39
  457. package/dist/core/manifest.js +1 -20
  458. package/dist/core/memory/doc-link-grammar.js +2 -109
  459. package/dist/core/memory/extensions.js +1 -221
  460. package/dist/core/memory/history.js +6 -268
  461. package/dist/core/memory/identity.js +1 -181
  462. package/dist/core/memory/inline-ref-grammar.js +1 -98
  463. package/dist/core/memory/inline-ref-guidance.js +2 -35
  464. package/dist/core/memory/inline-ref-inventory.js +1 -59
  465. package/dist/core/memory/lint.js +2 -671
  466. package/dist/core/memory/project-namespace.js +2 -85
  467. package/dist/core/memory/repository-association.js +1 -129
  468. package/dist/core/memory/tree.js +1 -93
  469. package/dist/core/memory-resolver.js +2 -611
  470. package/dist/core/model-config.js +1 -107
  471. package/dist/core/model-routes.js +1 -201
  472. package/dist/core/nested-stores.js +2 -166
  473. package/dist/core/output.js +7 -99
  474. package/dist/core/pagination.js +1 -88
  475. package/dist/core/plugin-swap-lock.js +1 -31
  476. package/dist/core/pool-credential-store.js +1 -116
  477. package/dist/core/predicate.js +1 -191
  478. package/dist/core/preview-registry.js +2 -411
  479. package/dist/core/preview-result-path.js +1 -26
  480. package/dist/core/profiles/default-binding.js +1 -24
  481. package/dist/core/profiles/deletion-reservation.js +1 -42
  482. package/dist/core/profiles/env-store.js +2 -162
  483. package/dist/core/profiles/fuzzy-match.js +1 -92
  484. package/dist/core/profiles/manifest.js +1 -574
  485. package/dist/core/profiles/select.js +35 -741
  486. package/dist/core/profiles/state-block.js +3 -17
  487. package/dist/core/provider-error-recognition.js +1 -74
  488. package/dist/core/provider-failure.js +1 -86
  489. package/dist/core/provider-management.js +1 -22
  490. package/dist/core/remote-canvas-target.js +1 -30
  491. package/dist/core/render.js +18 -138
  492. package/dist/core/resolver.js +1 -111
  493. package/dist/core/review/birth.js +1 -52
  494. package/dist/core/review/comments.js +5 -279
  495. package/dist/core/review/companion.js +1 -215
  496. package/dist/core/review/document.js +2 -138
  497. package/dist/core/review/project.js +1 -36
  498. package/dist/core/review/realize.js +1 -71
  499. package/dist/core/review/remap.js +4 -141
  500. package/dist/core/review/signal.js +1 -12
  501. package/dist/core/review/stage.js +1 -184
  502. package/dist/core/review/store.js +1 -168
  503. package/dist/core/review/types.js +1 -23
  504. package/dist/core/runtime/advertised-command-invocation.js +1 -233
  505. package/dist/core/runtime/auth-reload.js +1 -67
  506. package/dist/core/runtime/banner.js +1 -51
  507. package/dist/core/runtime/bearings-render.js +18 -250
  508. package/dist/core/runtime/bearings.js +7 -194
  509. package/dist/core/runtime/bin-contributions.js +2 -186
  510. package/dist/core/runtime/boot-root.js +1 -107
  511. package/dist/core/runtime/branded-host.js +2 -264
  512. package/dist/core/runtime/broker/auth-reload.js +1 -157
  513. package/dist/core/runtime/broker/client-registry.js +1 -179
  514. package/dist/core/runtime/broker/daemon-ops.js +1 -88
  515. package/dist/core/runtime/broker/engine-drive.js +1 -354
  516. package/dist/core/runtime/broker/engine-routing.js +1 -211
  517. package/dist/core/runtime/broker/event-projection.js +1 -193
  518. package/dist/core/runtime/broker/extension-abort.js +1 -36
  519. package/dist/core/runtime/broker/fault-retry.js +1 -588
  520. package/dist/core/runtime/broker/frame-client.js +1 -132
  521. package/dist/core/runtime/broker/frame-dispatch.js +1 -183
  522. package/dist/core/runtime/broker/frame-engine-control.js +1 -231
  523. package/dist/core/runtime/broker/frame-memory-refs.js +1 -41
  524. package/dist/core/runtime/broker/frame-model-query.js +1 -69
  525. package/dist/core/runtime/broker/frame-read.js +1 -116
  526. package/dist/core/runtime/broker/frame-replies.js +1 -64
  527. package/dist/core/runtime/broker/frame-session.js +4 -203
  528. package/dist/core/runtime/broker/held-deferred-inbox.js +1 -13
  529. package/dist/core/runtime/broker/inbox.js +13 -163
  530. package/dist/core/runtime/broker/node-named.js +1 -27
  531. package/dist/core/runtime/broker/read-ops.js +1 -171
  532. package/dist/core/runtime/broker/rebind.js +1 -318
  533. package/dist/core/runtime/broker/tool-groups.js +1 -246
  534. package/dist/core/runtime/broker/turn-admission.js +1 -31
  535. package/dist/core/runtime/broker/turn-ignition.js +1 -84
  536. package/dist/core/runtime/broker-cli.js +3 -81
  537. package/dist/core/runtime/broker-extension-render.js +5 -135
  538. package/dist/core/runtime/broker-inventory.js +1 -116
  539. package/dist/core/runtime/broker-persona-guidance.js +4 -154
  540. package/dist/core/runtime/broker-protocol.js +3 -152
  541. package/dist/core/runtime/broker-request.js +1 -85
  542. package/dist/core/runtime/broker-sdk.js +1 -129
  543. package/dist/core/runtime/broker.js +1 -1214
  544. package/dist/core/runtime/canvas-extensions.js +1 -96
  545. package/dist/core/runtime/chat-inventory-rows.js +1 -105
  546. package/dist/core/runtime/close.js +1 -265
  547. package/dist/core/runtime/command-expansion.js +9 -104
  548. package/dist/core/runtime/command-surface.js +1 -117
  549. package/dist/core/runtime/connectivity.js +1 -73
  550. package/dist/core/runtime/deliver-live.js +1 -88
  551. package/dist/core/runtime/fault-recovery.js +1 -83
  552. package/dist/core/runtime/fault.js +1 -17
  553. package/dist/core/runtime/fleet.js +1 -58
  554. package/dist/core/runtime/front-door-env.js +1 -16
  555. package/dist/core/runtime/front-door.js +7 -183
  556. package/dist/core/runtime/headless-pi.js +1 -161
  557. package/dist/core/runtime/host.js +1 -457
  558. package/dist/core/runtime/interactive-deliver.js +1 -51
  559. package/dist/core/runtime/invocation.js +0 -10
  560. package/dist/core/runtime/kickoff.js +30 -327
  561. package/dist/core/runtime/launch-config-worker.js +1 -12
  562. package/dist/core/runtime/launch-prompt.js +4 -13
  563. package/dist/core/runtime/launch-target.js +1 -55
  564. package/dist/core/runtime/launch.js +1 -483
  565. package/dist/core/runtime/lifecycle.js +2 -213
  566. package/dist/core/runtime/managed-provider-cooling.js +1 -62
  567. package/dist/core/runtime/memory.js +1 -17
  568. package/dist/core/runtime/model-registry.js +1 -13
  569. package/dist/core/runtime/model-selection.js +1 -135
  570. package/dist/core/runtime/model-swap.js +1 -86
  571. package/dist/core/runtime/naming.js +14 -298
  572. package/dist/core/runtime/nerd-font.js +2 -127
  573. package/dist/core/runtime/node-read.js +2 -386
  574. package/dist/core/runtime/nodes.js +1 -331
  575. package/dist/core/runtime/outcome-document.js +1 -97
  576. package/dist/core/runtime/package-health.js +4 -99
  577. package/dist/core/runtime/persona.js +2 -55
  578. package/dist/core/runtime/pi-cli.js +1 -65
  579. package/dist/core/runtime/pi-vendored.js +1 -66
  580. package/dist/core/runtime/placement-tmux.js +1 -81
  581. package/dist/core/runtime/placement.js +1 -386
  582. package/dist/core/runtime/promote.js +1 -174
  583. package/dist/core/runtime/prospective-inventory-cli.js +3 -61
  584. package/dist/core/runtime/prospective-inventory.js +2 -88
  585. package/dist/core/runtime/recap.js +27 -103
  586. package/dist/core/runtime/recycle.js +1 -190
  587. package/dist/core/runtime/reopen.js +1 -138
  588. package/dist/core/runtime/reset.js +1 -245
  589. package/dist/core/runtime/resume-root.js +10 -290
  590. package/dist/core/runtime/revive-all.js +1 -107
  591. package/dist/core/runtime/revive.js +4 -544
  592. package/dist/core/runtime/roadmap.js +4 -38
  593. package/dist/core/runtime/session-branch.js +1 -46
  594. package/dist/core/runtime/session-cycles.js +1 -110
  595. package/dist/core/runtime/session-list-cache.js +1 -406
  596. package/dist/core/runtime/session-visibility.js +1 -99
  597. package/dist/core/runtime/shell-expansion.js +9 -100
  598. package/dist/core/runtime/situational-context.js +2 -67
  599. package/dist/core/runtime/situational-live.js +1 -41
  600. package/dist/core/runtime/spawn-env.js +1 -255
  601. package/dist/core/runtime/spawn.js +3 -577
  602. package/dist/core/runtime/stamp/channel.js +1 -76
  603. package/dist/core/runtime/stamp/protocol.js +1 -113
  604. package/dist/core/runtime/stop-guard.js +7 -116
  605. package/dist/core/runtime/stop-signals.js +1 -46
  606. package/dist/core/runtime/stream-watchdog.js +1 -134
  607. package/dist/core/runtime/structured-output.js +4 -156
  608. package/dist/core/runtime/surface-bg.js +1 -85
  609. package/dist/core/runtime/tmux-bindings.js +4 -730
  610. package/dist/core/runtime/tmux-chrome.js +1 -5
  611. package/dist/core/runtime/tmux-driver.js +7 -637
  612. package/dist/core/runtime/tool-group-summary.js +6 -85
  613. package/dist/core/runtime/turn-visibility.js +1 -31
  614. package/dist/core/runtime/view-socket.js +1 -83
  615. package/dist/core/runtime/warm-pool.d.ts +3 -2
  616. package/dist/core/runtime/warm-pool.js +1 -385
  617. package/dist/core/scope.js +1 -254
  618. package/dist/core/scoped-state/db.js +1 -135
  619. package/dist/core/scoped-state/migrate.js +3 -181
  620. package/dist/core/scoped-state/paths.js +1 -27
  621. package/dist/core/scoped-state/profiles.js +1 -62
  622. package/dist/core/scoped-state/providers.js +1 -8
  623. package/dist/core/scoped-state/schema.js +3 -16
  624. package/dist/core/scoped-state/settings.js +1 -82
  625. package/dist/core/secrets.js +2 -55
  626. package/dist/core/self-update.js +1 -71
  627. package/dist/core/session-model/session-state.js +1 -180
  628. package/dist/core/shell-segments.js +4 -169
  629. package/dist/core/spawn.js +1 -26
  630. package/dist/core/stdout-errors.js +1 -14
  631. package/dist/core/subscription-state.js +3 -193
  632. package/dist/core/substrate/frontmatter-validation.js +1 -105
  633. package/dist/core/substrate/gate-explain.js +1 -424
  634. package/dist/core/substrate/gate.js +1 -26
  635. package/dist/core/substrate/index.js +1 -30
  636. package/dist/core/substrate/injected-store.js +1 -249
  637. package/dist/core/substrate/listings.js +1 -115
  638. package/dist/core/substrate/on-read-node.js +1 -36
  639. package/dist/core/substrate/on-read.js +9 -315
  640. package/dist/core/substrate/plan.js +1 -266
  641. package/dist/core/substrate/render-node.js +1 -30
  642. package/dist/core/substrate/render.js +65 -689
  643. package/dist/core/substrate/schema.js +1 -186
  644. package/dist/core/substrate/session-cache.js +1 -83
  645. package/dist/core/substrate/subject-fields.js +1 -35
  646. package/dist/core/substrate/subject.js +1 -47
  647. package/dist/core/substrate/surface-match.js +1 -242
  648. package/dist/core/termrender/code-doc.js +5 -92
  649. package/dist/core/termrender/display.js +2 -56
  650. package/dist/core/termrender/termrender.js +14 -719
  651. package/dist/core/termrender/version.js +1 -1
  652. package/dist/core/timing.js +2 -94
  653. package/dist/core/tui/draw.js +2 -378
  654. package/dist/core/tui/fuzzy.js +1 -38
  655. package/dist/core/tui/markdown.js +3 -407
  656. package/dist/core/tui/page-host.js +1 -74
  657. package/dist/core/tui/panel.js +1 -137
  658. package/dist/core/tui/terminal.js +2 -100
  659. package/dist/core/user-settings.js +1 -454
  660. package/dist/core/wake.js +1 -296
  661. package/dist/core/worktree-close.js +6 -228
  662. package/dist/core/worktree-containment.js +3 -48
  663. package/dist/core/worktree-landing.js +4 -56
  664. package/dist/core/worktree-mutation-async.js +10 -280
  665. package/dist/core/worktree-quarantine.js +1 -54
  666. package/dist/core/worktree-sweep.js +6 -453
  667. package/dist/core/worktree.js +18 -899
  668. package/dist/daemon/api/bridge.js +8 -418
  669. package/dist/daemon/api/handlers/attach.js +1 -65
  670. package/dist/daemon/api/handlers/bash-jobs.js +2 -91
  671. package/dist/daemon/api/handlers/broker-ops.js +1 -447
  672. package/dist/daemon/api/handlers/broker-recovery.js +1 -251
  673. package/dist/daemon/api/handlers/canvas.js +6 -490
  674. package/dist/daemon/api/handlers/chat-inventory.js +1 -25
  675. package/dist/daemon/api/handlers/crons.js +1 -373
  676. package/dist/daemon/api/handlers/daemon.js +1 -76
  677. package/dist/daemon/api/handlers/feedback-comments.js +3 -199
  678. package/dist/daemon/api/handlers/files.js +1 -63
  679. package/dist/daemon/api/handlers/focus.js +1 -92
  680. package/dist/daemon/api/handlers/health.js +1 -76
  681. package/dist/daemon/api/handlers/human-requests.js +1 -379
  682. package/dist/daemon/api/handlers/human.js +1 -3
  683. package/dist/daemon/api/handlers/inbox-page.js +1 -89
  684. package/dist/daemon/api/handlers/inbox.js +1 -301
  685. package/dist/daemon/api/handlers/memory.js +1 -50
  686. package/dist/daemon/api/handlers/messages.js +2 -506
  687. package/dist/daemon/api/handlers/model-config.js +1 -44
  688. package/dist/daemon/api/handlers/modelauth.js +1 -165
  689. package/dist/daemon/api/handlers/node-outcomes.js +1 -181
  690. package/dist/daemon/api/handlers/nodes.js +1 -943
  691. package/dist/daemon/api/handlers/profiles.js +1 -140
  692. package/dist/daemon/api/handlers/prospective-chat-inventory.js +1 -59
  693. package/dist/daemon/api/handlers/reports.js +16 -332
  694. package/dist/daemon/api/handlers/review-comments.js +1 -465
  695. package/dist/daemon/api/handlers/reviews.js +1 -200
  696. package/dist/daemon/api/handlers/subscriptions.js +1 -53
  697. package/dist/daemon/api/handlers/validate.js +1 -58
  698. package/dist/daemon/api/handlers/worktree.js +1 -39
  699. package/dist/daemon/api/map.js +2 -735
  700. package/dist/daemon/api/router.js +1 -190
  701. package/dist/daemon/api/server.js +11 -408
  702. package/dist/daemon/boot-migrations.js +1 -31
  703. package/dist/daemon/companion-retire.js +1 -34
  704. package/dist/daemon/control.js +1 -22
  705. package/dist/daemon/cron/armed-context.js +1 -100
  706. package/dist/daemon/cron/capture.js +2 -45
  707. package/dist/daemon/cron/disposition.js +1 -55
  708. package/dist/daemon/cron/escalation.js +3 -124
  709. package/dist/daemon/cron/held.js +1 -20
  710. package/dist/daemon/cron/lease-recovery.js +1 -119
  711. package/dist/daemon/cron/live-runs.js +1 -23
  712. package/dist/daemon/cron/passes.js +1 -58
  713. package/dist/daemon/cron/settle.js +1 -61
  714. package/dist/daemon/cron/sinks.js +2 -59
  715. package/dist/daemon/cron-run.js +1 -405
  716. package/dist/daemon/crtrd-cli.js +1 -23
  717. package/dist/daemon/crtrd.js +8 -854
  718. package/dist/daemon/delivery/run-delivery.js +1 -164
  719. package/dist/daemon/fleet.js +17 -475
  720. package/dist/daemon/human/finish.js +10 -179
  721. package/dist/daemon/human/settle.js +1 -89
  722. package/dist/daemon/human/sweep.js +1 -66
  723. package/dist/daemon/manage.js +2 -595
  724. package/dist/daemon/messaging/node-message.js +1 -99
  725. package/dist/daemon/park-activity.js +1 -30
  726. package/dist/daemon/park-pending.js +1 -52
  727. package/dist/daemon/pidfile.js +1 -37
  728. package/dist/daemon/profile-delete.js +1 -306
  729. package/dist/daemon/reconcilers/bash-deadline.js +1 -80
  730. package/dist/daemon/reconcilers/broker-supervision.js +4 -761
  731. package/dist/daemon/reconcilers/controller-death.js +1 -14
  732. package/dist/daemon/reconcilers/cron-lane.js +1 -29
  733. package/dist/daemon/reconcilers/delivery-lane.js +1 -130
  734. package/dist/daemon/reconcilers/live-obligation.js +1 -87
  735. package/dist/daemon/reconcilers/managed-worktree-sweep.js +1 -202
  736. package/dist/daemon/reconcilers/node-deadline.js +1 -82
  737. package/dist/daemon/reconcilers/node-lifecycle/freeze-lane.js +1 -172
  738. package/dist/daemon/reconcilers/node-lifecycle/respawn-policy.js +1 -59
  739. package/dist/daemon/reconcilers/node-lifecycle/terminating.js +1 -12
  740. package/dist/daemon/reconcilers/node-lifecycle/tick.js +1 -146
  741. package/dist/daemon/reconcilers/node-lifecycle/wants-execution.js +1 -11
  742. package/dist/daemon/reconcilers/pending-review-submit.js +1 -36
  743. package/dist/daemon/reconcilers/storage-maintenance.js +1 -207
  744. package/dist/daemon/review/comment-notify.js +2 -109
  745. package/dist/daemon/review/companion.js +1 -29
  746. package/dist/daemon/review/deliver.js +3 -8
  747. package/dist/daemon/review/finish.js +1 -122
  748. package/dist/daemon/review/sweep.js +1 -18
  749. package/dist/daemon/startup-policy.js +1 -1
  750. package/dist/daemon/supervise-cadence.js +1 -6
  751. package/dist/hook-authoring.js +5 -447
  752. package/dist/hook-process.js +1 -34
  753. package/dist/index.js +1 -52
  754. package/dist/migrations/001-surfaces-frontmatter.js +1 -161
  755. package/dist/migrations/002-profile-project-memory.js +1 -72
  756. package/dist/migrations/003-repository-root-memory-identity/front-door.js +11 -231
  757. package/dist/migrations/003-repository-root-memory-identity/index.js +5 -513
  758. package/dist/migrations/003-repository-root-memory-identity/references.js +5 -469
  759. package/dist/migrations/003-repository-root-memory-identity/repository-facts.js +3 -349
  760. package/dist/migrations/activation.js +2 -89
  761. package/dist/migrations/convergent.js +2 -82
  762. package/dist/migrations/corpus.js +3 -483
  763. package/dist/migrations/frontmatter-splice.js +8 -176
  764. package/dist/migrations/profile-manifests.js +2 -70
  765. package/dist/migrations/registry.js +1 -42
  766. package/dist/migrations/runner.js +1 -85
  767. package/dist/migrations/types.js +0 -24
  768. package/dist/pi-extensions/broker-local.js +2 -106
  769. package/dist/pi-extensions/canvas-bash-valve.js +7 -461
  770. package/dist/pi-extensions/canvas-context-intro.js +2 -113
  771. package/dist/pi-extensions/canvas-doc-substrate.js +9 -178
  772. package/dist/pi-extensions/canvas-goal-capture.js +1 -83
  773. package/dist/pi-extensions/canvas-inbox-watcher.js +1 -1010
  774. package/dist/pi-extensions/canvas-passive-context.js +14 -203
  775. package/dist/pi-extensions/canvas-preview-result.js +2 -72
  776. package/dist/pi-extensions/canvas-prompt-scrub.js +2 -54
  777. package/dist/pi-extensions/canvas-recap.js +11 -405
  778. package/dist/pi-extensions/canvas-review-boundary.js +3 -63
  779. package/dist/pi-extensions/canvas-stamp.js +2 -77
  780. package/dist/pi-extensions/canvas-stophook.js +1 -643
  781. package/dist/pi-extensions/canvas-structured-output.js +13 -35
  782. package/dist/pi-extensions/canvas-tool-guide.js +9 -78
  783. package/dist/pi-extensions/envelope-merge.js +8 -29
  784. package/dist/prompts/review.js +20 -42
  785. package/dist/shared/birth-announcement.js +1 -25
  786. package/dist/shared/crtr-version.js +1 -18
  787. package/dist/shared/env.js +1 -214
  788. package/dist/shared/generated-context.js +11 -226
  789. package/dist/shared/predicates.js +1 -4
  790. package/dist/shared/shell-quote.js +1 -5
  791. package/dist/shared/tool-groups.js +1 -64
  792. package/dist/shared/working-activity.js +1 -27
  793. package/dist/suppress-experimental-warnings.js +1 -15
  794. package/dist/types.js +1 -185
  795. package/docs/public-api.md +10 -9
  796. package/package.json +6 -5
  797. package/runtime.lock.json +5 -5
  798. package/dist/api/__tests__/integration/client.test.d.ts +0 -1
  799. package/dist/api/__tests__/integration/client.test.js +0 -163
  800. package/dist/builtin-pi-packages/pi-crtr-extensions/__tests__/insights-active-init.test.ts +0 -98
  801. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/crtr-commands.test.ts +0 -93
  802. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/integration/provider-rotation.test.ts +0 -2530
  803. package/dist/clients/__tests__/helpers/human-daemon.d.ts +0 -11
  804. package/dist/clients/__tests__/helpers/human-daemon.js +0 -60
  805. package/dist/clients/attach/__tests__/attach-remote-readonly.test.d.ts +0 -1
  806. package/dist/clients/attach/__tests__/attach-remote-readonly.test.js +0 -97
  807. package/dist/clients/attach/__tests__/bash-call-width.test.d.ts +0 -1
  808. package/dist/clients/attach/__tests__/bash-call-width.test.js +0 -38
  809. package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.d.ts +0 -1
  810. package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.js +0 -175
  811. package/dist/clients/attach/__tests__/completion-frecency.test.d.ts +0 -1
  812. package/dist/clients/attach/__tests__/completion-frecency.test.js +0 -35
  813. package/dist/clients/attach/__tests__/context-message.test.d.ts +0 -1
  814. package/dist/clients/attach/__tests__/context-message.test.js +0 -130
  815. package/dist/clients/attach/__tests__/crtr-output.test.d.ts +0 -1
  816. package/dist/clients/attach/__tests__/crtr-output.test.js +0 -68
  817. package/dist/clients/attach/__tests__/diagram.test.d.ts +0 -1
  818. package/dist/clients/attach/__tests__/diagram.test.js +0 -42
  819. package/dist/clients/attach/__tests__/edit-diff.test.d.ts +0 -1
  820. package/dist/clients/attach/__tests__/edit-diff.test.js +0 -31
  821. package/dist/clients/attach/__tests__/frame-selection.test.d.ts +0 -1
  822. package/dist/clients/attach/__tests__/frame-selection.test.js +0 -84
  823. package/dist/clients/attach/__tests__/group-activity.test.d.ts +0 -1
  824. package/dist/clients/attach/__tests__/group-activity.test.js +0 -165
  825. package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.d.ts +0 -1
  826. package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.js +0 -83
  827. package/dist/clients/attach/__tests__/pane-tag-successor.test.d.ts +0 -1
  828. package/dist/clients/attach/__tests__/pane-tag-successor.test.js +0 -56
  829. package/dist/clients/attach/__tests__/profile-files.test.d.ts +0 -1
  830. package/dist/clients/attach/__tests__/profile-files.test.js +0 -21
  831. package/dist/clients/attach/__tests__/prompt-preview.test.d.ts +0 -1
  832. package/dist/clients/attach/__tests__/prompt-preview.test.js +0 -21
  833. package/dist/clients/attach/__tests__/ref-autocomplete.test.d.ts +0 -1
  834. package/dist/clients/attach/__tests__/ref-autocomplete.test.js +0 -64
  835. package/dist/clients/attach/__tests__/titled-editor-paste.test.d.ts +0 -1
  836. package/dist/clients/attach/__tests__/titled-editor-paste.test.js +0 -114
  837. package/dist/clients/attach/__tests__/titled-editor-preview.test.d.ts +0 -1
  838. package/dist/clients/attach/__tests__/titled-editor-preview.test.js +0 -83
  839. package/dist/clients/inbox/__tests__/integration/inbox-controller.test.d.ts +0 -1
  840. package/dist/clients/inbox/__tests__/integration/inbox-controller.test.js +0 -81
  841. package/dist/clients/inbox/__tests__/integration/mount-panel.test.d.ts +0 -1
  842. package/dist/clients/inbox/__tests__/integration/mount-panel.test.js +0 -135
  843. package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.d.ts +0 -1
  844. package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.js +0 -66
  845. package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.d.ts +0 -1
  846. package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.js +0 -35
  847. package/dist/clients/inbox/review/__tests__/review-core.test.d.ts +0 -1
  848. package/dist/clients/inbox/review/__tests__/review-core.test.js +0 -52
  849. package/dist/clients/inbox/review/__tests__/teardown-notice.test.d.ts +0 -1
  850. package/dist/clients/inbox/review/__tests__/teardown-notice.test.js +0 -100
  851. package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.d.ts +0 -1
  852. package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.js +0 -69
  853. package/dist/commands/__tests__/human.test.d.ts +0 -1
  854. package/dist/commands/__tests__/human.test.js +0 -172
  855. package/dist/commands/__tests__/integration/dashboard-snapshot.test.d.ts +0 -1
  856. package/dist/commands/__tests__/integration/dashboard-snapshot.test.js +0 -237
  857. package/dist/commands/__tests__/integration/migrate.test.d.ts +0 -1
  858. package/dist/commands/__tests__/integration/migrate.test.js +0 -1330
  859. package/dist/commands/__tests__/node-message.test.d.ts +0 -1
  860. package/dist/commands/__tests__/node-message.test.js +0 -112
  861. package/dist/commands/__tests__/node-new.test.d.ts +0 -1
  862. package/dist/commands/__tests__/node-new.test.js +0 -58
  863. package/dist/commands/__tests__/revive-now-gate.test.d.ts +0 -1
  864. package/dist/commands/__tests__/revive-now-gate.test.js +0 -62
  865. package/dist/commands/__tests__/seam/daemon-status.test.d.ts +0 -1
  866. package/dist/commands/__tests__/seam/daemon-status.test.js +0 -29
  867. package/dist/commands/__tests__/surface-reload-target.test.d.ts +0 -1
  868. package/dist/commands/__tests__/surface-reload-target.test.js +0 -21
  869. package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.d.ts +0 -1
  870. package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.js +0 -379
  871. package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.d.ts +0 -1
  872. package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.js +0 -124
  873. package/dist/commands/memory/__tests__/repository-root-lint.test.d.ts +0 -1
  874. package/dist/commands/memory/__tests__/repository-root-lint.test.js +0 -148
  875. package/dist/commands/sys/__tests__/config-model-ladders.test.d.ts +0 -1
  876. package/dist/commands/sys/__tests__/config-model-ladders.test.js +0 -114
  877. package/dist/commands/sys/__tests__/setup-core.test.d.ts +0 -1
  878. package/dist/commands/sys/__tests__/setup-core.test.js +0 -45
  879. package/dist/commands/sys/__tests__/sync-project-guidance.test.d.ts +0 -1
  880. package/dist/commands/sys/__tests__/sync-project-guidance.test.js +0 -244
  881. package/dist/core/__tests__/bash-guard.test.d.ts +0 -1
  882. package/dist/core/__tests__/bash-guard.test.js +0 -190
  883. package/dist/core/__tests__/boot-fault-attempt.test.d.ts +0 -1
  884. package/dist/core/__tests__/boot-fault-attempt.test.js +0 -105
  885. package/dist/core/__tests__/boot.test.d.ts +0 -1
  886. package/dist/core/__tests__/boot.test.js +0 -274
  887. package/dist/core/__tests__/branded-host-concurrency.test.d.ts +0 -1
  888. package/dist/core/__tests__/branded-host-concurrency.test.js +0 -72
  889. package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.d.ts +0 -1
  890. package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.js +0 -75
  891. package/dist/core/__tests__/broker-launch-candidates.test.d.ts +0 -1
  892. package/dist/core/__tests__/broker-launch-candidates.test.js +0 -311
  893. package/dist/core/__tests__/broker-preflight.test.d.ts +0 -1
  894. package/dist/core/__tests__/broker-preflight.test.js +0 -95
  895. package/dist/core/__tests__/broker-stream-watchdog-floor.test.d.ts +0 -1
  896. package/dist/core/__tests__/broker-stream-watchdog-floor.test.js +0 -82
  897. package/dist/core/__tests__/broker-turn-admission.test.d.ts +0 -1
  898. package/dist/core/__tests__/broker-turn-admission.test.js +0 -44
  899. package/dist/core/__tests__/canvas-db-boundary.test.d.ts +0 -1
  900. package/dist/core/__tests__/canvas-db-boundary.test.js +0 -46
  901. package/dist/core/__tests__/canvas-inbox-watcher-hold.test.d.ts +0 -1
  902. package/dist/core/__tests__/canvas-inbox-watcher-hold.test.js +0 -710
  903. package/dist/core/__tests__/canvas-inbox-watcher-naming.test.d.ts +0 -1
  904. package/dist/core/__tests__/canvas-inbox-watcher-naming.test.js +0 -310
  905. package/dist/core/__tests__/canvas-inbox-watcher.test.d.ts +0 -1
  906. package/dist/core/__tests__/canvas-inbox-watcher.test.js +0 -397
  907. package/dist/core/__tests__/canvas.test.d.ts +0 -1
  908. package/dist/core/__tests__/canvas.test.js +0 -138
  909. package/dist/core/__tests__/child-death-wake.test.d.ts +0 -1
  910. package/dist/core/__tests__/child-death-wake.test.js +0 -153
  911. package/dist/core/__tests__/cli-help-contract.test.d.ts +0 -1
  912. package/dist/core/__tests__/cli-help-contract.test.js +0 -152
  913. package/dist/core/__tests__/close.test.d.ts +0 -1
  914. package/dist/core/__tests__/close.test.js +0 -284
  915. package/dist/core/__tests__/collectible.test.d.ts +0 -1
  916. package/dist/core/__tests__/collectible.test.js +0 -89
  917. package/dist/core/__tests__/config-change-delta.test.d.ts +0 -1
  918. package/dist/core/__tests__/config-change-delta.test.js +0 -108
  919. package/dist/core/__tests__/context-intro.test.d.ts +0 -1
  920. package/dist/core/__tests__/context-intro.test.js +0 -123
  921. package/dist/core/__tests__/cron-armed-context-failure.test.d.ts +0 -1
  922. package/dist/core/__tests__/cron-armed-context-failure.test.js +0 -150
  923. package/dist/core/__tests__/cron-held-settlement.test.d.ts +0 -1
  924. package/dist/core/__tests__/cron-held-settlement.test.js +0 -240
  925. package/dist/core/__tests__/cron-node-sink-parked-root.test.d.ts +0 -1
  926. package/dist/core/__tests__/cron-node-sink-parked-root.test.js +0 -166
  927. package/dist/core/__tests__/cron-self-cancel-delivery.test.d.ts +0 -1
  928. package/dist/core/__tests__/cron-self-cancel-delivery.test.js +0 -84
  929. package/dist/core/__tests__/cron-timeout-descendants.test.d.ts +0 -1
  930. package/dist/core/__tests__/cron-timeout-descendants.test.js +0 -114
  931. package/dist/core/__tests__/daemon-boot.test.d.ts +0 -1
  932. package/dist/core/__tests__/daemon-boot.test.js +0 -422
  933. package/dist/core/__tests__/daemon-wedge.test.d.ts +0 -1
  934. package/dist/core/__tests__/daemon-wedge.test.js +0 -106
  935. package/dist/core/__tests__/dead-node-policy-table.test.d.ts +0 -1
  936. package/dist/core/__tests__/dead-node-policy-table.test.js +0 -77
  937. package/dist/core/__tests__/events-contract.test.d.ts +0 -1
  938. package/dist/core/__tests__/events-contract.test.js +0 -76
  939. package/dist/core/__tests__/extension-abort.test.d.ts +0 -1
  940. package/dist/core/__tests__/extension-abort.test.js +0 -21
  941. package/dist/core/__tests__/fault-classifier.test.d.ts +0 -1
  942. package/dist/core/__tests__/fault-classifier.test.js +0 -138
  943. package/dist/core/__tests__/fixtures/api-server-host.d.ts +0 -1
  944. package/dist/core/__tests__/fixtures/api-server-host.js +0 -47
  945. package/dist/core/__tests__/fixtures/c3-custom-provider-ext.d.ts +0 -2
  946. package/dist/core/__tests__/fixtures/c3-custom-provider-ext.js +0 -34
  947. package/dist/core/__tests__/fixtures/c5-command-boundary-ext.d.ts +0 -2
  948. package/dist/core/__tests__/fixtures/c5-command-boundary-ext.js +0 -32
  949. package/dist/core/__tests__/fixtures/fake-engine.d.ts +0 -347
  950. package/dist/core/__tests__/fixtures/fake-engine.js +0 -1509
  951. package/dist/core/__tests__/fixtures/fake-pi-host.d.ts +0 -2
  952. package/dist/core/__tests__/fixtures/fake-pi-host.js +0 -311
  953. package/dist/core/__tests__/fixtures/memory-slash-live-probe.d.ts +0 -1
  954. package/dist/core/__tests__/fixtures/memory-slash-live-probe.js +0 -75
  955. package/dist/core/__tests__/fixtures/metadata-migration-race.d.ts +0 -1
  956. package/dist/core/__tests__/fixtures/metadata-migration-race.js +0 -49
  957. package/dist/core/__tests__/focuses.test.d.ts +0 -1
  958. package/dist/core/__tests__/focuses.test.js +0 -113
  959. package/dist/core/__tests__/fs-utils.test.d.ts +0 -1
  960. package/dist/core/__tests__/fs-utils.test.js +0 -50
  961. package/dist/core/__tests__/helpers/broker-clients.d.ts +0 -43
  962. package/dist/core/__tests__/helpers/broker-clients.js +0 -174
  963. package/dist/core/__tests__/helpers/fleet.d.ts +0 -12
  964. package/dist/core/__tests__/helpers/fleet.js +0 -50
  965. package/dist/core/__tests__/helpers/harness.d.ts +0 -124
  966. package/dist/core/__tests__/helpers/harness.js +0 -806
  967. package/dist/core/__tests__/helpers/viewer-panes.d.ts +0 -12
  968. package/dist/core/__tests__/helpers/viewer-panes.js +0 -133
  969. package/dist/core/__tests__/history-inbox.test.d.ts +0 -1
  970. package/dist/core/__tests__/history-inbox.test.js +0 -121
  971. package/dist/core/__tests__/human-action-delivery.test.d.ts +0 -1
  972. package/dist/core/__tests__/human-action-delivery.test.js +0 -162
  973. package/dist/core/__tests__/human-actions.test.d.ts +0 -1
  974. package/dist/core/__tests__/human-actions.test.js +0 -120
  975. package/dist/core/__tests__/inline-memory-refs.test.d.ts +0 -1
  976. package/dist/core/__tests__/inline-memory-refs.test.js +0 -225
  977. package/dist/core/__tests__/integration/broker-fork-seam.test.d.ts +0 -1
  978. package/dist/core/__tests__/integration/broker-fork-seam.test.js +0 -193
  979. package/dist/core/__tests__/integration/broker-sdk-wiring.test.d.ts +0 -1
  980. package/dist/core/__tests__/integration/broker-sdk-wiring.test.js +0 -750
  981. package/dist/core/__tests__/integration/broker-snapshot-history.test.d.ts +0 -1
  982. package/dist/core/__tests__/integration/broker-snapshot-history.test.js +0 -288
  983. package/dist/core/__tests__/integration/broker-wedge-supervision.test.d.ts +0 -1
  984. package/dist/core/__tests__/integration/broker-wedge-supervision.test.js +0 -103
  985. package/dist/core/__tests__/integration/command-plugins.test.d.ts +0 -1
  986. package/dist/core/__tests__/integration/command-plugins.test.js +0 -1200
  987. package/dist/core/__tests__/integration/deferred-no-wake.test.d.ts +0 -1
  988. package/dist/core/__tests__/integration/deferred-no-wake.test.js +0 -610
  989. package/dist/core/__tests__/integration/flagship-lifecycle.test.d.ts +0 -1
  990. package/dist/core/__tests__/integration/flagship-lifecycle.test.js +0 -264
  991. package/dist/core/__tests__/integration/fresh-home-commands.test.d.ts +0 -1
  992. package/dist/core/__tests__/integration/fresh-home-commands.test.js +0 -49
  993. package/dist/core/__tests__/integration/git-optional-locks.test.d.ts +0 -1
  994. package/dist/core/__tests__/integration/git-optional-locks.test.js +0 -81
  995. package/dist/core/__tests__/integration/host-teardown-process-group.test.d.ts +0 -1
  996. package/dist/core/__tests__/integration/host-teardown-process-group.test.js +0 -480
  997. package/dist/core/__tests__/integration/lifecycle-hooks.test.d.ts +0 -1
  998. package/dist/core/__tests__/integration/lifecycle-hooks.test.js +0 -498
  999. package/dist/core/__tests__/integration/live-mutation-verbs.test.d.ts +0 -1
  1000. package/dist/core/__tests__/integration/live-mutation-verbs.test.js +0 -180
  1001. package/dist/core/__tests__/integration/live-mutation.test.d.ts +0 -1
  1002. package/dist/core/__tests__/integration/live-mutation.test.js +0 -173
  1003. package/dist/core/__tests__/integration/plugin-revalidate.test.d.ts +0 -1
  1004. package/dist/core/__tests__/integration/plugin-revalidate.test.js +0 -359
  1005. package/dist/core/__tests__/integration/profile-pause.test.d.ts +0 -1
  1006. package/dist/core/__tests__/integration/profile-pause.test.js +0 -115
  1007. package/dist/core/__tests__/integration/refresh-stall-recycle.test.d.ts +0 -1
  1008. package/dist/core/__tests__/integration/refresh-stall-recycle.test.js +0 -151
  1009. package/dist/core/__tests__/integration/revive.test.d.ts +0 -1
  1010. package/dist/core/__tests__/integration/revive.test.js +0 -615
  1011. package/dist/core/__tests__/integration/spawn-root.test.d.ts +0 -1
  1012. package/dist/core/__tests__/integration/spawn-root.test.js +0 -536
  1013. package/dist/core/__tests__/integration/subscription-delivery.test.d.ts +0 -1
  1014. package/dist/core/__tests__/integration/subscription-delivery.test.js +0 -132
  1015. package/dist/core/__tests__/integration/tmux-surface.test.d.ts +0 -1
  1016. package/dist/core/__tests__/integration/tmux-surface.test.js +0 -330
  1017. package/dist/core/__tests__/integration/worktree-land.test.d.ts +0 -1
  1018. package/dist/core/__tests__/integration/worktree-land.test.js +0 -607
  1019. package/dist/core/__tests__/integration/worktree-reap.test.d.ts +0 -1
  1020. package/dist/core/__tests__/integration/worktree-reap.test.js +0 -842
  1021. package/dist/core/__tests__/kickoff.test.d.ts +0 -1
  1022. package/dist/core/__tests__/kickoff.test.js +0 -196
  1023. package/dist/core/__tests__/lifecycle-terminal-reasons.test.d.ts +0 -1
  1024. package/dist/core/__tests__/lifecycle-terminal-reasons.test.js +0 -62
  1025. package/dist/core/__tests__/lifecycle.test.d.ts +0 -1
  1026. package/dist/core/__tests__/lifecycle.test.js +0 -176
  1027. package/dist/core/__tests__/live-lifecycle-prompt.test.d.ts +0 -1
  1028. package/dist/core/__tests__/live-lifecycle-prompt.test.js +0 -63
  1029. package/dist/core/__tests__/memory-resolver-precedence.test.d.ts +0 -1
  1030. package/dist/core/__tests__/memory-resolver-precedence.test.js +0 -228
  1031. package/dist/core/__tests__/migration.test.d.ts +0 -1
  1032. package/dist/core/__tests__/migration.test.js +0 -946
  1033. package/dist/core/__tests__/model-pin-durability.test.d.ts +0 -1
  1034. package/dist/core/__tests__/model-pin-durability.test.js +0 -195
  1035. package/dist/core/__tests__/model-routes-config.test.d.ts +0 -1
  1036. package/dist/core/__tests__/model-routes-config.test.js +0 -150
  1037. package/dist/core/__tests__/nested-store-discovery.test.d.ts +0 -1
  1038. package/dist/core/__tests__/nested-store-discovery.test.js +0 -89
  1039. package/dist/core/__tests__/node-outcome.test.d.ts +0 -1
  1040. package/dist/core/__tests__/node-outcome.test.js +0 -246
  1041. package/dist/core/__tests__/on-read-crouter-home-fence.test.d.ts +0 -1
  1042. package/dist/core/__tests__/on-read-crouter-home-fence.test.js +0 -66
  1043. package/dist/core/__tests__/on-read-dedup-resume.test.d.ts +0 -1
  1044. package/dist/core/__tests__/on-read-dedup-resume.test.js +0 -132
  1045. package/dist/core/__tests__/on-read-nested-store.test.d.ts +0 -1
  1046. package/dist/core/__tests__/on-read-nested-store.test.js +0 -135
  1047. package/dist/core/__tests__/parse-argv-stdin-secret.test.d.ts +0 -1
  1048. package/dist/core/__tests__/parse-argv-stdin-secret.test.js +0 -68
  1049. package/dist/core/__tests__/passive-subscription.test.d.ts +0 -1
  1050. package/dist/core/__tests__/passive-subscription.test.js +0 -120
  1051. package/dist/core/__tests__/pid-identity-match.test.d.ts +0 -1
  1052. package/dist/core/__tests__/pid-identity-match.test.js +0 -145
  1053. package/dist/core/__tests__/pid-zombie.test.d.ts +0 -1
  1054. package/dist/core/__tests__/pid-zombie.test.js +0 -42
  1055. package/dist/core/__tests__/plugin-kinds.test.d.ts +0 -1
  1056. package/dist/core/__tests__/plugin-kinds.test.js +0 -182
  1057. package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.d.ts +0 -1
  1058. package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.js +0 -43
  1059. package/dist/core/__tests__/plugin-page-components.test.d.ts +0 -1
  1060. package/dist/core/__tests__/plugin-page-components.test.js +0 -159
  1061. package/dist/core/__tests__/preview-mirror-cap.test.d.ts +0 -1
  1062. package/dist/core/__tests__/preview-mirror-cap.test.js +0 -53
  1063. package/dist/core/__tests__/preview-registry-sync.test.d.ts +0 -1
  1064. package/dist/core/__tests__/preview-registry-sync.test.js +0 -107
  1065. package/dist/core/__tests__/profile-project-memory-delivery.test.d.ts +0 -1
  1066. package/dist/core/__tests__/profile-project-memory-delivery.test.js +0 -644
  1067. package/dist/core/__tests__/prospective-inventory-capability-parity.test.d.ts +0 -1
  1068. package/dist/core/__tests__/prospective-inventory-capability-parity.test.js +0 -91
  1069. package/dist/core/__tests__/prune.test.d.ts +0 -1
  1070. package/dist/core/__tests__/prune.test.js +0 -243
  1071. package/dist/core/__tests__/push-final-guard.test.d.ts +0 -1
  1072. package/dist/core/__tests__/push-final-guard.test.js +0 -191
  1073. package/dist/core/__tests__/relaunch-root.test.d.ts +0 -1
  1074. package/dist/core/__tests__/relaunch-root.test.js +0 -249
  1075. package/dist/core/__tests__/remote-canvas-target.test.d.ts +0 -1
  1076. package/dist/core/__tests__/remote-canvas-target.test.js +0 -93
  1077. package/dist/core/__tests__/repository-association.test.d.ts +0 -1
  1078. package/dist/core/__tests__/repository-association.test.js +0 -153
  1079. package/dist/core/__tests__/repository-root-identity.test.d.ts +0 -1
  1080. package/dist/core/__tests__/repository-root-identity.test.js +0 -223
  1081. package/dist/core/__tests__/respawn-throttle.test.d.ts +0 -1
  1082. package/dist/core/__tests__/respawn-throttle.test.js +0 -20
  1083. package/dist/core/__tests__/review-model-floor.test.d.ts +0 -1
  1084. package/dist/core/__tests__/review-model-floor.test.js +0 -83
  1085. package/dist/core/__tests__/revive-all.test.d.ts +0 -1
  1086. package/dist/core/__tests__/revive-all.test.js +0 -157
  1087. package/dist/core/__tests__/revive-capacity.test.d.ts +0 -1
  1088. package/dist/core/__tests__/revive-capacity.test.js +0 -184
  1089. package/dist/core/__tests__/revive-parked-fresh.test.d.ts +0 -1
  1090. package/dist/core/__tests__/revive-parked-fresh.test.js +0 -176
  1091. package/dist/core/__tests__/scope-crouter-home-fence.test.d.ts +0 -1
  1092. package/dist/core/__tests__/scope-crouter-home-fence.test.js +0 -55
  1093. package/dist/core/__tests__/seam/broker-attach-multiclient.test.d.ts +0 -1
  1094. package/dist/core/__tests__/seam/broker-attach-multiclient.test.js +0 -262
  1095. package/dist/core/__tests__/seam/broker-attach-stream.test.d.ts +0 -1
  1096. package/dist/core/__tests__/seam/broker-attach-stream.test.js +0 -176
  1097. package/dist/core/__tests__/seam/broker-cap-freeze.test.d.ts +0 -1
  1098. package/dist/core/__tests__/seam/broker-cap-freeze.test.js +0 -155
  1099. package/dist/core/__tests__/seam/broker-crash-teardown.test.d.ts +0 -1
  1100. package/dist/core/__tests__/seam/broker-crash-teardown.test.js +0 -131
  1101. package/dist/core/__tests__/seam/broker-pane-resolution.test.d.ts +0 -1
  1102. package/dist/core/__tests__/seam/broker-pane-resolution.test.js +0 -204
  1103. package/dist/core/__tests__/seam/broker-provider-retry.test.d.ts +0 -1
  1104. package/dist/core/__tests__/seam/broker-provider-retry.test.js +0 -686
  1105. package/dist/core/__tests__/seam/broker-startup-diagnostics.test.d.ts +0 -1
  1106. package/dist/core/__tests__/seam/broker-startup-diagnostics.test.js +0 -82
  1107. package/dist/core/__tests__/seam/broker-whip-interrupt.test.d.ts +0 -1
  1108. package/dist/core/__tests__/seam/broker-whip-interrupt.test.js +0 -50
  1109. package/dist/core/__tests__/seam/deadline-wake-delivery.test.d.ts +0 -1
  1110. package/dist/core/__tests__/seam/deadline-wake-delivery.test.js +0 -138
  1111. package/dist/core/__tests__/seam/dormancy-release.test.d.ts +0 -1
  1112. package/dist/core/__tests__/seam/dormancy-release.test.js +0 -516
  1113. package/dist/core/__tests__/seam/held-deferred-human-prompt.test.d.ts +0 -1
  1114. package/dist/core/__tests__/seam/held-deferred-human-prompt.test.js +0 -65
  1115. package/dist/core/__tests__/seam/inbox-reference-guidance.test.d.ts +0 -1
  1116. package/dist/core/__tests__/seam/inbox-reference-guidance.test.js +0 -84
  1117. package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.d.ts +0 -1
  1118. package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.js +0 -160
  1119. package/dist/core/__tests__/seam/node-outcome-delivery.test.d.ts +0 -1
  1120. package/dist/core/__tests__/seam/node-outcome-delivery.test.js +0 -177
  1121. package/dist/core/__tests__/seam/prospective-inventory-stdout.test.d.ts +0 -1
  1122. package/dist/core/__tests__/seam/prospective-inventory-stdout.test.js +0 -31
  1123. package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.d.ts +0 -1
  1124. package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.js +0 -60
  1125. package/dist/core/__tests__/seam/self-close-teardown.test.d.ts +0 -1
  1126. package/dist/core/__tests__/seam/self-close-teardown.test.js +0 -49
  1127. package/dist/core/__tests__/seam/yield-refresh-transaction.test.d.ts +0 -1
  1128. package/dist/core/__tests__/seam/yield-refresh-transaction.test.js +0 -100
  1129. package/dist/core/__tests__/secrets.test.d.ts +0 -1
  1130. package/dist/core/__tests__/secrets.test.js +0 -49
  1131. package/dist/core/__tests__/self-update.test.d.ts +0 -1
  1132. package/dist/core/__tests__/self-update.test.js +0 -46
  1133. package/dist/core/__tests__/session-branch.test.d.ts +0 -1
  1134. package/dist/core/__tests__/session-branch.test.js +0 -61
  1135. package/dist/core/__tests__/session-cycles.test.d.ts +0 -1
  1136. package/dist/core/__tests__/session-cycles.test.js +0 -133
  1137. package/dist/core/__tests__/session-model.test.d.ts +0 -1
  1138. package/dist/core/__tests__/session-model.test.js +0 -111
  1139. package/dist/core/__tests__/spawn-worktree-id-conflict.test.d.ts +0 -1
  1140. package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +0 -71
  1141. package/dist/core/__tests__/stdin-body-no-discard.test.d.ts +0 -1
  1142. package/dist/core/__tests__/stdin-body-no-discard.test.js +0 -33
  1143. package/dist/core/__tests__/stdout-errors.test.d.ts +0 -1
  1144. package/dist/core/__tests__/stdout-errors.test.js +0 -16
  1145. package/dist/core/__tests__/stop-guard.test.d.ts +0 -1
  1146. package/dist/core/__tests__/stop-guard.test.js +0 -237
  1147. package/dist/core/__tests__/stream-watchdog.test.d.ts +0 -1
  1148. package/dist/core/__tests__/stream-watchdog.test.js +0 -154
  1149. package/dist/core/__tests__/subscription-pool-credential-guard.test.d.ts +0 -1
  1150. package/dist/core/__tests__/subscription-pool-credential-guard.test.js +0 -95
  1151. package/dist/core/__tests__/tmux-driver-boundary.test.d.ts +0 -1
  1152. package/dist/core/__tests__/tmux-driver-boundary.test.js +0 -50
  1153. package/dist/core/__tests__/warm-claim-preference-snapshot.test.d.ts +0 -1
  1154. package/dist/core/__tests__/warm-claim-preference-snapshot.test.js +0 -54
  1155. package/dist/core/__tests__/worktree-landing.test.d.ts +0 -1
  1156. package/dist/core/__tests__/worktree-landing.test.js +0 -11
  1157. package/dist/core/__tests__/yield-ensures-daemon.test.d.ts +0 -1
  1158. package/dist/core/__tests__/yield-ensures-daemon.test.js +0 -55
  1159. package/dist/core/broker-client/__tests__/transport-relay.test.d.ts +0 -1
  1160. package/dist/core/broker-client/__tests__/transport-relay.test.js +0 -214
  1161. package/dist/core/broker-client/__tests__/transport-socket.test.d.ts +0 -1
  1162. package/dist/core/broker-client/__tests__/transport-socket.test.js +0 -73
  1163. package/dist/core/canvas/__tests__/attention.test.d.ts +0 -1
  1164. package/dist/core/canvas/__tests__/attention.test.js +0 -83
  1165. package/dist/core/canvas/__tests__/history-transcript.test.d.ts +0 -1
  1166. package/dist/core/canvas/__tests__/history-transcript.test.js +0 -102
  1167. package/dist/core/canvas/__tests__/remote-canvas-source.test.d.ts +0 -1
  1168. package/dist/core/canvas/__tests__/remote-canvas-source.test.js +0 -328
  1169. package/dist/core/canvas/__tests__/remote-transport.test.d.ts +0 -1
  1170. package/dist/core/canvas/__tests__/remote-transport.test.js +0 -97
  1171. package/dist/core/canvas/__tests__/render-remote.test.d.ts +0 -1
  1172. package/dist/core/canvas/__tests__/render-remote.test.js +0 -243
  1173. package/dist/core/canvas/__tests__/session-window.test.d.ts +0 -1
  1174. package/dist/core/canvas/__tests__/session-window.test.js +0 -70
  1175. package/dist/core/feed/__tests__/inbox-migrate.test.d.ts +0 -1
  1176. package/dist/core/feed/__tests__/inbox-migrate.test.js +0 -49
  1177. package/dist/core/human/__tests__/page-catalog.test.d.ts +0 -1
  1178. package/dist/core/human/__tests__/page-catalog.test.js +0 -20
  1179. package/dist/core/human/__tests__/page-html-markdown.test.d.ts +0 -1
  1180. package/dist/core/human/__tests__/page-html-markdown.test.js +0 -48
  1181. package/dist/core/human/__tests__/page.test.d.ts +0 -1
  1182. package/dist/core/human/__tests__/page.test.js +0 -92
  1183. package/dist/core/keybindings/__tests__/resolve.test.d.ts +0 -1
  1184. package/dist/core/keybindings/__tests__/resolve.test.js +0 -171
  1185. package/dist/core/profiles/__tests__/env-store.test.d.ts +0 -1
  1186. package/dist/core/profiles/__tests__/env-store.test.js +0 -99
  1187. package/dist/core/profiles/__tests__/fuzzy-match.test.d.ts +0 -1
  1188. package/dist/core/profiles/__tests__/fuzzy-match.test.js +0 -51
  1189. package/dist/core/profiles/__tests__/root-profile.test.d.ts +0 -1
  1190. package/dist/core/profiles/__tests__/root-profile.test.js +0 -59
  1191. package/dist/core/review/__tests__/capture-origin.test.d.ts +0 -1
  1192. package/dist/core/review/__tests__/capture-origin.test.js +0 -150
  1193. package/dist/core/review/__tests__/comments.test.d.ts +0 -1
  1194. package/dist/core/review/__tests__/comments.test.js +0 -116
  1195. package/dist/core/review/__tests__/remap.test.d.ts +0 -1
  1196. package/dist/core/review/__tests__/remap.test.js +0 -177
  1197. package/dist/core/review/__tests__/stage-identity.test.d.ts +0 -1
  1198. package/dist/core/review/__tests__/stage-identity.test.js +0 -150
  1199. package/dist/core/runtime/__tests__/engine-route.test.d.ts +0 -1
  1200. package/dist/core/runtime/__tests__/engine-route.test.js +0 -36
  1201. package/dist/core/runtime/__tests__/install-id-cache-scoping.test.d.ts +0 -1
  1202. package/dist/core/runtime/__tests__/install-id-cache-scoping.test.js +0 -45
  1203. package/dist/core/runtime/__tests__/node-env.test.d.ts +0 -1
  1204. package/dist/core/runtime/__tests__/node-env.test.js +0 -73
  1205. package/dist/core/runtime/__tests__/spawn-env.test.d.ts +0 -1
  1206. package/dist/core/runtime/__tests__/spawn-env.test.js +0 -259
  1207. package/dist/core/substrate/__tests__/surface-match-command.test.d.ts +0 -1
  1208. package/dist/core/substrate/__tests__/surface-match-command.test.js +0 -89
  1209. package/dist/core/substrate/__tests__/surface-match-memory-read.test.d.ts +0 -1
  1210. package/dist/core/substrate/__tests__/surface-match-memory-read.test.js +0 -28
  1211. package/dist/core/substrate/__tests__/surface-match-pre-command.test.d.ts +0 -1
  1212. package/dist/core/substrate/__tests__/surface-match-pre-command.test.js +0 -92
  1213. package/dist/daemon/__tests__/autostart-storm.test.d.ts +0 -1
  1214. package/dist/daemon/__tests__/autostart-storm.test.js +0 -128
  1215. package/dist/daemon/__tests__/broker-ownership.test.d.ts +0 -1
  1216. package/dist/daemon/__tests__/broker-ownership.test.js +0 -25
  1217. package/dist/daemon/__tests__/daemon-ownership.test.d.ts +0 -1
  1218. package/dist/daemon/__tests__/daemon-ownership.test.js +0 -27
  1219. package/dist/daemon/__tests__/helpers/source-daemon.d.ts +0 -30
  1220. package/dist/daemon/__tests__/helpers/source-daemon.js +0 -176
  1221. package/dist/daemon/__tests__/integration/api-startup-readiness.test.d.ts +0 -1
  1222. package/dist/daemon/__tests__/integration/api-startup-readiness.test.js +0 -83
  1223. package/dist/daemon/__tests__/integration/migration-startup.test.d.ts +0 -1
  1224. package/dist/daemon/__tests__/integration/migration-startup.test.js +0 -127
  1225. package/dist/daemon/__tests__/node-deadline-lane.test.d.ts +0 -1
  1226. package/dist/daemon/__tests__/node-deadline-lane.test.js +0 -77
  1227. package/dist/daemon/__tests__/node-outcome-birth-invariants.test.d.ts +0 -1
  1228. package/dist/daemon/__tests__/node-outcome-birth-invariants.test.js +0 -146
  1229. package/dist/daemon/__tests__/node-outcome-delivery.test.d.ts +0 -1
  1230. package/dist/daemon/__tests__/node-outcome-delivery.test.js +0 -116
  1231. package/dist/daemon/__tests__/reconciler-signature.test.d.ts +0 -1
  1232. package/dist/daemon/__tests__/reconciler-signature.test.js +0 -37
  1233. package/dist/daemon/__tests__/subtree-filter-freshness.test.d.ts +0 -1
  1234. package/dist/daemon/__tests__/subtree-filter-freshness.test.js +0 -63
  1235. package/dist/daemon/__tests__/thaw-order.test.d.ts +0 -1
  1236. package/dist/daemon/__tests__/thaw-order.test.js +0 -55
  1237. package/dist/daemon/api/__tests__/bridge-heartbeat.test.d.ts +0 -1
  1238. package/dist/daemon/api/__tests__/bridge-heartbeat.test.js +0 -58
  1239. package/dist/daemon/api/__tests__/broker-settle-park.test.d.ts +0 -1
  1240. package/dist/daemon/api/__tests__/broker-settle-park.test.js +0 -175
  1241. package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.d.ts +0 -1
  1242. package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.js +0 -216
  1243. package/dist/daemon/api/__tests__/error-seam.test.d.ts +0 -1
  1244. package/dist/daemon/api/__tests__/error-seam.test.js +0 -83
  1245. package/dist/daemon/api/__tests__/model-config.test.d.ts +0 -1
  1246. package/dist/daemon/api/__tests__/model-config.test.js +0 -73
  1247. package/dist/daemon/api/__tests__/node-create-description.test.d.ts +0 -1
  1248. package/dist/daemon/api/__tests__/node-create-description.test.js +0 -107
  1249. package/dist/daemon/api/__tests__/node-model-validation.test.d.ts +0 -1
  1250. package/dist/daemon/api/__tests__/node-model-validation.test.js +0 -183
  1251. package/dist/daemon/api/__tests__/nodes-activity-query.test.d.ts +0 -1
  1252. package/dist/daemon/api/__tests__/nodes-activity-query.test.js +0 -99
  1253. package/dist/daemon/api/__tests__/profile-launch-gates.test.d.ts +0 -1
  1254. package/dist/daemon/api/__tests__/profile-launch-gates.test.js +0 -172
  1255. package/dist/daemon/api/__tests__/profile-metadata-route.test.d.ts +0 -1
  1256. package/dist/daemon/api/__tests__/profile-metadata-route.test.js +0 -95
  1257. package/dist/daemon/api/__tests__/reopen-delivery.test.d.ts +0 -1
  1258. package/dist/daemon/api/__tests__/reopen-delivery.test.js +0 -260
  1259. package/dist/daemon/api/__tests__/seam/api-server.test.d.ts +0 -1
  1260. package/dist/daemon/api/__tests__/seam/api-server.test.js +0 -442
  1261. package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.d.ts +0 -1
  1262. package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.js +0 -310
  1263. package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.d.ts +0 -1
  1264. package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.js +0 -351
  1265. package/dist/daemon/api/__tests__/seam/node-outcome-api.test.d.ts +0 -1
  1266. package/dist/daemon/api/__tests__/seam/node-outcome-api.test.js +0 -159
  1267. package/dist/daemon/api/__tests__/seam/profile-delete.test.d.ts +0 -1
  1268. package/dist/daemon/api/__tests__/seam/profile-delete.test.js +0 -372
  1269. package/dist/daemon/api/__tests__/submit-result.test.d.ts +0 -1
  1270. package/dist/daemon/api/__tests__/submit-result.test.js +0 -215
  1271. package/dist/migrations/__tests__/activation-concurrency.test.d.ts +0 -1
  1272. package/dist/migrations/__tests__/activation-concurrency.test.js +0 -146
  1273. package/dist/migrations/__tests__/activation.test.d.ts +0 -1
  1274. package/dist/migrations/__tests__/activation.test.js +0 -152
  1275. package/dist/migrations/__tests__/deletion-and-root-declaration.test.d.ts +0 -1
  1276. package/dist/migrations/__tests__/deletion-and-root-declaration.test.js +0 -149
  1277. package/dist/pi-extensions/__tests__/canvas-bash-valve.test.d.ts +0 -1
  1278. package/dist/pi-extensions/__tests__/canvas-bash-valve.test.js +0 -86
  1279. package/dist/pi-extensions/__tests__/canvas-context-intro.test.d.ts +0 -1
  1280. package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +0 -364
  1281. package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.d.ts +0 -1
  1282. package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.js +0 -106
  1283. package/dist/pi-extensions/__tests__/canvas-recap.test.d.ts +0 -1
  1284. package/dist/pi-extensions/__tests__/canvas-recap.test.js +0 -62
  1285. package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.d.ts +0 -1
  1286. package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +0 -432
  1287. package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.d.ts +0 -1
  1288. package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.js +0 -152
  1289. package/dist/pi-extensions/__tests__/canvas-structured-output.test.d.ts +0 -1
  1290. package/dist/pi-extensions/__tests__/canvas-structured-output.test.js +0 -88
  1291. package/dist/pi-extensions/__tests__/canvas-tool-guide.test.d.ts +0 -1
  1292. package/dist/pi-extensions/__tests__/canvas-tool-guide.test.js +0 -96
  1293. package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.d.ts +0 -1
  1294. package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.js +0 -133
  1295. package/dist/pi-extensions/__tests__/pre-command-gate.test.d.ts +0 -1
  1296. package/dist/pi-extensions/__tests__/pre-command-gate.test.js +0 -232
  1297. package/dist/shared/__tests__/env-boundary.test.d.ts +0 -1
  1298. package/dist/shared/__tests__/env-boundary.test.js +0 -95
  1299. package/dist/shared/__tests__/generated-context-grammar.test.d.ts +0 -1
  1300. package/dist/shared/__tests__/generated-context-grammar.test.js +0 -80
  1301. package/docs/compat/hearth-crtr-v1.md +0 -179
  1302. package/docs/compat/hearth-crtr-v2.md +0 -177
  1303. package/docs/compat/hearth-crtr-v3.md +0 -176
  1304. package/docs/compat/hearth-crtr-v4.md +0 -182
  1305. package/docs/compat/hearth-crtr-v5.md +0 -169
@@ -1,353 +1 @@
1
- import { defineBranch, defineLeaf } from '../../core/command.js';
2
- import { InvalidRawSettingsError, readConfig, readRawSettingsForTarget, replaceRawSettingsForTarget, updateConfig, persistModelLadders, configPath as coreConfigPath } from '../../core/config.js';
3
- import { usage, notFound } from '../../core/errors.js';
4
- import { requireScopeRoot } from '../../core/scope.js';
5
- import { resolveScope } from './shared.js';
6
- import { resolveProfileOperand } from '../../core/profiles/manifest.js';
7
- import { SettingsRevisionConflictError } from '../../core/scoped-state/settings.js';
8
- import { InputError } from '../../core/io.js';
9
- import { SCOPE_CONFIG_KEYS, USER_SETTINGS, findUserSetting } from '../../core/user-settings.js';
10
- // Config helpers (ported from commands/config.ts)
11
- const CONFIG_TOP_LEVEL_HELP = SCOPE_CONFIG_KEYS.join(', ');
12
- const SCALAR_SETTING_HELP = USER_SETTINGS.map((setting) => `${setting.key} (${setting.valueConstraint})`).join(', ');
13
- const MODEL_PROVIDERS = new Set(['anthropic', 'openai']);
14
- const MODEL_STRENGTHS = new Set(['ultra', 'strong', 'medium', 'light']);
15
- function isModelProvider(value) {
16
- return MODEL_PROVIDERS.has(value);
17
- }
18
- function isModelStrength(value) {
19
- return MODEL_STRENGTHS.has(value);
20
- }
21
- function getNestedValue(obj, key) {
22
- const parts = key.split('.');
23
- let current = obj;
24
- for (const part of parts) {
25
- if (current === null || typeof current !== 'object')
26
- return undefined;
27
- current = current[part];
28
- }
29
- return current;
30
- }
31
- function parseConfigValue(raw) {
32
- if (raw === 'true')
33
- return true;
34
- if (raw === 'false')
35
- return false;
36
- if (/^-?\d+$/.test(raw))
37
- return parseInt(raw, 10);
38
- return raw;
39
- }
40
- function assertUserScopeBrokerThresholds(key, scope) {
41
- if (key.split('.', 1)[0] === 'brokerThresholds' && scope !== 'user') {
42
- throw usage('brokerThresholds are available only in user scope');
43
- }
44
- }
45
- function assertUserScopeLifecycle(key, scope) {
46
- if (key.split('.', 1)[0] === 'lifecycle' && scope !== 'user') {
47
- throw usage('lifecycle settings are available only in user scope');
48
- }
49
- }
50
- function assertWorkingGerundsScope(key, scope) {
51
- if (key === 'working_gerunds' && scope !== 'user') {
52
- throw usage('working_gerunds is available only in user scope');
53
- }
54
- }
55
- function assertWhipMessagesScope(key, scope) {
56
- if (key === 'whip_messages' && scope !== 'user') {
57
- throw usage('whip_messages are available only in user scope');
58
- }
59
- }
60
- function assertUserSettingScope(key, scope) {
61
- if (findUserSetting(key) !== undefined && scope !== 'user') {
62
- throw usage(`${key} is available only in user scope`);
63
- }
64
- }
65
- /** Validate a `modelLadders.*` key/value into an explicit sparse patch, or
66
- * return null when the key is not a ladder key. Ladder sets do NOT go through
67
- * `setNestedValue`/`updateConfig`: that path persists only what differs from
68
- * the compiled defaults, so choosing today's default value would record
69
- * nothing (see `persistModelLadders`). */
70
- function modelLadderPatch(key, rawValue) {
71
- const parts = key.split('.');
72
- if (parts[0] !== 'modelLadders')
73
- return null;
74
- if (parts.length === 2 && parts[1] === 'defaultProvider') {
75
- if (!isModelProvider(rawValue)) {
76
- throw usage(`modelLadders.defaultProvider must be anthropic or openai`);
77
- }
78
- return { defaultProvider: rawValue };
79
- }
80
- if (parts.length === 3) {
81
- const provider = parts[1];
82
- const strength = parts[2];
83
- if (!isModelProvider(provider)) {
84
- throw usage(`modelLadders provider must be anthropic or openai`);
85
- }
86
- if (!isModelStrength(strength)) {
87
- throw usage(`modelLadders strength must be ultra, strong, medium, or light`);
88
- }
89
- if (rawValue.trim() === '') {
90
- throw usage(`modelLadders.${provider}.${strength} cannot be empty`);
91
- }
92
- return { [provider]: { [strength]: rawValue } };
93
- }
94
- throw usage(`unsupported key path for set: ${key}`);
95
- }
96
- function rawSettingsTarget(input) {
97
- const scope = input['scope'];
98
- if (scope === 'project') {
99
- throw usage('project settings remain a JSON file; use `crtr sys config set` or `crtr sys config path --scope project`.');
100
- }
101
- const profile = input['profile'];
102
- if (scope === 'user') {
103
- if (profile !== undefined)
104
- throw usage('--profile is available only with --scope profile.');
105
- return { scope: 'user' };
106
- }
107
- if (profile === undefined)
108
- throw usage('--profile is required with --scope profile.');
109
- return { scope: 'profile', profileId: resolveProfileOperand(profile).profileId };
110
- }
111
- function parseRawSettings(raw) {
112
- let value;
113
- try {
114
- value = JSON.parse(raw);
115
- }
116
- catch {
117
- throw new InputError({ error: 'invalid_request', message: 'stdin must be valid JSON', field: 'stdin', next: 'Pipe one complete JSON object on stdin.' });
118
- }
119
- if (value === null || typeof value !== 'object' || Array.isArray(value)) {
120
- throw new InputError({ error: 'invalid_request', message: 'stdin must be a JSON object', field: 'stdin', next: 'Pipe one complete JSON object on stdin.' });
121
- }
122
- return value;
123
- }
124
- function setNestedValue(cfg, key, rawValue, value) {
125
- const parts = key.split('.');
126
- const topKey = parts[0];
127
- if (key === 'working_gerunds' || key === 'whip_messages') {
128
- let parsed;
129
- try {
130
- parsed = JSON.parse(rawValue);
131
- }
132
- catch {
133
- throw usage(`${key} must be a JSON array of non-empty strings`);
134
- }
135
- if (!Array.isArray(parsed) || parsed.length === 0 || !parsed.every((entry) => typeof entry === 'string' && entry.trim() !== '')) {
136
- throw usage(`${key} must be a non-empty JSON array of non-empty strings`);
137
- }
138
- cfg[key] = parsed.map((entry) => entry.trim());
139
- return;
140
- }
141
- if (topKey === 'keybindings') {
142
- throw usage('keybindings are edited only through `crtr sys settings`');
143
- }
144
- if (topKey === 'modelLadders') {
145
- throw usage('modelLadders keys are written through persistModelLadders, not this path');
146
- }
147
- const setting = findUserSetting(key);
148
- if (setting !== undefined) {
149
- const error = setting.setFromString(cfg, rawValue);
150
- if (error !== null)
151
- throw usage(error);
152
- return;
153
- }
154
- if (topKey === 'brokerThresholds') {
155
- if (parts.length !== 2 || (parts[1] !== 'warning' && parts[1] !== 'automaticReviveCap')) {
156
- throw usage(`brokerThresholds key must be warning or automaticReviveCap`);
157
- }
158
- if (typeof value !== 'number' || !Number.isFinite(value) || value < 1) {
159
- throw usage(`brokerThresholds.${parts[1]} must be an integer >= 1`);
160
- }
161
- const threshold = Math.floor(value);
162
- if (parts[1] === 'warning' && threshold > cfg.brokerThresholds.automaticReviveCap) {
163
- throw usage('brokerThresholds.warning must be <= brokerThresholds.automaticReviveCap');
164
- }
165
- if (parts[1] === 'automaticReviveCap' && threshold < cfg.brokerThresholds.warning) {
166
- throw usage('brokerThresholds.automaticReviveCap must be >= brokerThresholds.warning');
167
- }
168
- cfg.brokerThresholds[parts[1]] = threshold;
169
- return;
170
- }
171
- if (topKey === 'lifecycle') {
172
- if (parts.length !== 2 || parts[1] !== 'unattendedParkMs') {
173
- throw usage(`lifecycle key must be unattendedParkMs`);
174
- }
175
- if (typeof value !== 'number' || !Number.isFinite(value) || value < 1) {
176
- throw usage(`lifecycle.unattendedParkMs must be an integer >= 1`);
177
- }
178
- cfg.lifecycle.unattendedParkMs = Math.floor(value);
179
- return;
180
- }
181
- throw usage(`unsupported key path for set: ${key}`);
182
- }
183
- // Leaf definitions
184
- const configGet = defineLeaf({
185
- name: 'get',
186
- description: 'read a config value by key',
187
- whenToUse: 'you want to inspect one config value — including the whole user keybindings object — optionally from a specific scope. Use sys settings to edit keybindings and sys config set for supported scalar settings.',
188
- help: {
189
- name: 'sys config get',
190
- summary: 'read a config value by dotted key',
191
- params: [
192
- { kind: 'positional', name: 'key', type: 'string', required: true, constraint: `Dotted key path. Top-level keys: ${CONFIG_TOP_LEVEL_HELP}. brokerThresholds and lifecycle are user-only; keybindings is readable only as the whole user-scope object and editable only through sys settings.` },
193
- { kind: 'flag', name: 'scope', type: 'enum', choices: ['user', 'project'], required: false, constraint: 'Scope to read from. Default: user.' },
194
- ],
195
- output: [
196
- { name: 'key', type: 'string', required: true, constraint: 'Echo of input key.' },
197
- { name: 'value', type: 'unknown', required: true, constraint: 'The resolved value. Type depends on the key.' },
198
- { name: 'scope', type: 'string', required: true, constraint: 'Scope the value was read from.' },
199
- ],
200
- outputKind: 'object',
201
- effects: ['None. Read-only.'],
202
- },
203
- run: async (input) => {
204
- const key = input['key'];
205
- const scope = resolveScope(input['scope']);
206
- assertUserScopeBrokerThresholds(key, scope);
207
- assertUserScopeLifecycle(key, scope);
208
- if (key.startsWith('keybindings.') || (key === 'keybindings' && scope !== 'user')) {
209
- throw notFound('keybindings are available only as the whole user-scope object');
210
- }
211
- const cfg = readConfig(scope);
212
- const value = getNestedValue(cfg, key);
213
- if (value === undefined) {
214
- throw notFound(`config key not found: ${key}`);
215
- }
216
- return { key, value: value, scope };
217
- },
218
- });
219
- const configSet = defineLeaf({
220
- name: 'set',
221
- description: 'write a config value by key',
222
- whenToUse: 'you want to change a supported crtr setting in user or project scope. Use sys settings instead for keybindings, and sys config get to inspect values.',
223
- help: {
224
- name: 'sys config set',
225
- summary: 'write a config value by dotted key',
226
- params: [
227
- { kind: 'positional', name: 'key', type: 'string', required: true, constraint: `Dotted key path. User-scope scalar settings: ${SCALAR_SETTING_HELP}. Also supported: working_gerunds and whip_messages (non-empty JSON string arrays), brokerThresholds.warning and brokerThresholds.automaticReviveCap (user scope; integer >= 1), lifecycle.unattendedParkMs (user scope; integer ms >= 1), modelLadders.defaultProvider, and modelLadders.<anthropic|openai>.<ultra|strong|medium|light>. Keybindings are edited only through sys settings. For arbitrary raw user or profile documents, use sys config get-raw and set-raw.` },
228
- { kind: 'flag', name: 'value', type: 'string', required: true, constraint: 'value VALUE — string, required. working_gerunds and whip_messages accept JSON arrays; other values are stored as-is if quoted and coerced to number or boolean when unambiguous.' },
229
- { kind: 'flag', name: 'scope', type: 'enum', choices: ['user', 'project'], required: false, constraint: 'Scope to write to. Default: user. Project scope is supported only for modelLadders.' },
230
- ],
231
- output: [
232
- { name: 'value', type: 'unknown', required: true, constraint: 'Resolved value as written after parsing and setting-specific coercion.' },
233
- { name: 'scope', type: 'string', required: true, constraint: 'Scope the value was written to.' },
234
- ],
235
- outputKind: 'object',
236
- effects: ['Writes the updated value through the target scope’s configuration storage.'],
237
- },
238
- run: async (input) => {
239
- const key = input['key'];
240
- const rawValue = input['value'];
241
- const scope = resolveScope(input['scope']);
242
- assertUserScopeBrokerThresholds(key, scope);
243
- assertUserScopeLifecycle(key, scope);
244
- assertWorkingGerundsScope(key, scope);
245
- assertWhipMessagesScope(key, scope);
246
- assertUserSettingScope(key, scope);
247
- // Flags are stringly-typed; coerce to number or boolean when unambiguous
248
- const parsed = parseConfigValue(rawValue);
249
- // Ladder rungs record explicit intent (even when the value equals today's
250
- // compiled default); everything else mutates + persists through the central
251
- // raw-partial path, which never freezes a materialized `modelLadders`.
252
- const ladder = modelLadderPatch(key, rawValue);
253
- const cfg = ladder !== null
254
- ? (persistModelLadders(requireScopeRoot(scope), ladder), readConfig(scope))
255
- : updateConfig(scope, (c) => setNestedValue(c, key, rawValue, parsed));
256
- // Read back the resolved value that was written
257
- const written = getNestedValue(cfg, key);
258
- return { value: written, scope };
259
- },
260
- });
261
- const configGetRaw = defineLeaf({
262
- name: 'get-raw',
263
- description: 'read one raw SQL-backed settings document and revision',
264
- whenToUse: 'you need the exact stored user or profile settings document before replacing it with set-raw.',
265
- help: {
266
- name: 'sys config get-raw',
267
- summary: 'read one raw user or profile settings document',
268
- params: [
269
- { kind: 'flag', name: 'scope', type: 'enum', choices: ['user', 'profile', 'project'], required: true, constraint: 'SQL-backed target: user or profile. project is rejected because its settings remain a JSON file.' },
270
- { kind: 'flag', name: 'profile', type: 'string', required: false, constraint: 'Profile id or name to target. Required with --scope profile; rejected with --scope user or project.' },
271
- ],
272
- output: [
273
- { name: 'revision', type: 'string', required: true, constraint: 'Opaque revision token for set-raw. absent means the settings row does not exist.' },
274
- { name: 'settings', type: 'object | null', required: true, constraint: 'Exact stored settings document, or null when no row exists.' },
275
- ],
276
- outputKind: 'object',
277
- effects: ['None. Read-only.'],
278
- },
279
- run: async (input) => readRawSettingsForTarget(rawSettingsTarget(input)),
280
- });
281
- const configSetRaw = defineLeaf({
282
- name: 'set-raw',
283
- description: 'replace one raw SQL-backed settings document at a revision',
284
- whenToUse: 'you have a complete user or profile settings document from get-raw and must replace it without losing a concurrent change.',
285
- help: {
286
- name: 'sys config set-raw',
287
- summary: 'atomically replace one raw user or profile settings document',
288
- params: [
289
- { kind: 'flag', name: 'scope', type: 'enum', choices: ['user', 'profile', 'project'], required: true, constraint: 'SQL-backed target: user or profile. project is rejected because its settings remain a JSON file.' },
290
- { kind: 'flag', name: 'profile', type: 'string', required: false, constraint: 'Profile id or name to target. Required with --scope profile; rejected with --scope user or project.' },
291
- { kind: 'flag', name: 'if-revision', type: 'string', required: true, constraint: 'Revision returned by get-raw. Required; use absent only when get-raw reported no settings row.' },
292
- { kind: 'stdin', name: 'settings', required: true, allowPositional: false, constraint: 'One complete JSON object. It replaces the document exactly; values are not normalized or merged.' },
293
- ],
294
- output: [
295
- { name: 'revision', type: 'string', required: true, constraint: 'Revision token of the stored document after this operation.' },
296
- { name: 'changed', type: 'boolean', required: true, constraint: 'Whether the stored document changed.' },
297
- ],
298
- outputKind: 'object',
299
- effects: ['Atomically replaces the SQL-backed settings document only when --if-revision matches its current revision.'],
300
- },
301
- run: async (input) => {
302
- const target = rawSettingsTarget(input);
303
- const settings = parseRawSettings(input['settings']);
304
- try {
305
- return replaceRawSettingsForTarget(target, settings, input['ifRevision']);
306
- }
307
- catch (error) {
308
- if (error instanceof SettingsRevisionConflictError) {
309
- throw new InputError({ error: 'settings_revision_conflict', message: 'settings changed since the supplied revision', field: 'if_revision', next: 'Run `crtr sys config get-raw` again, reapply the intended transformation, and retry with its revision.' });
310
- }
311
- if (error instanceof InvalidRawSettingsError) {
312
- throw new InputError({ error: 'invalid_settings', message: error.message, field: 'stdin', next: 'Correct the document so crouter can merge it into resolved settings, then retry with a fresh revision.' });
313
- }
314
- throw error;
315
- }
316
- },
317
- });
318
- const configPath = defineLeaf({
319
- name: 'path',
320
- description: 'print the project config.json path',
321
- whenToUse: 'you need the project config.json path for inspection or backup. User and profile settings use get-raw and set-raw instead.',
322
- help: {
323
- name: 'sys config path',
324
- summary: 'print the project config.json path',
325
- params: [
326
- { kind: 'flag', name: 'scope', type: 'enum', choices: ['project', 'user', 'profile'], required: false, constraint: 'Project is the only path-backed settings scope. user and profile are rejected because they use SQL-backed get-raw and set-raw. Default: project.' },
327
- ],
328
- output: [
329
- { name: 'paths', type: 'object[]', required: true, constraint: 'One {scope: "project", path} entry when the current project has a config file; otherwise empty.' },
330
- ],
331
- outputKind: 'object',
332
- effects: ['None. Read-only.'],
333
- },
334
- run: async (input) => {
335
- const scope = input['scope'];
336
- if (scope === 'user' || scope === 'profile') {
337
- throw usage(`${scope} settings are SQL-backed; use \`crtr sys config get-raw --scope ${scope}\` instead.`);
338
- }
339
- const path = coreConfigPath('project');
340
- return { paths: path === null ? [] : [{ scope: 'project', path }] };
341
- },
342
- });
343
- export const configBranch = defineBranch({
344
- name: 'config',
345
- description: 'read and write configuration',
346
- whenToUse: 'inspecting crtr settings, changing supported scalar values, replacing complete raw user or profile settings documents, or locating a project config.json. Keybinding changes belong in sys settings.',
347
- help: {
348
- name: 'sys config',
349
- summary: 'read and write crtr configuration, including model ladders and raw SQL-backed user/profile settings',
350
- model: 'get and set resolve individual settings. get-raw and set-raw read and replace complete user or profile documents with a revision precondition. path applies only to project config.json.',
351
- },
352
- children: [configGet, configSet, configGetRaw, configSetRaw, configPath],
353
- });
1
+ var S=Object.defineProperty;var i=(t,e)=>S(t,"name",{value:e,configurable:!0});import{defineBranch as j,defineLeaf as u}from"../../core/command.js";import{InvalidRawSettingsError as T,readConfig as f,readRawSettingsForTarget as q,replaceRawSettingsForTarget as L,updateConfig as R,persistModelLadders as P,configPath as N}from"../../core/config.js";import{usage as o,notFound as g}from"../../core/errors.js";import{requireScopeRoot as _}from"../../core/scope.js";import{resolveScope as h}from"./shared.js";import{resolveProfileOperand as O}from"../../core/profiles/manifest.js";import{SettingsRevisionConflictError as E}from"../../core/scoped-state/settings.js";import{InputError as l}from"../../core/io.js";import{SCOPE_CONFIG_KEYS as C,USER_SETTINGS as U,findUserSetting as m}from"../../core/user-settings.js";const $=C.join(", "),J=U.map(t=>`${t.key} (${t.valueConstraint})`).join(", "),M=new Set(["anthropic","openai"]),I=new Set(["ultra","strong","medium","light"]);function y(t){return M.has(t)}i(y,"isModelProvider");function x(t){return I.has(t)}i(x,"isModelStrength");function w(t,e){const n=e.split(".");let r=t;for(const s of n){if(r===null||typeof r!="object")return;r=r[s]}return r}i(w,"getNestedValue");function A(t){return t==="true"?!0:t==="false"?!1:/^-?\d+$/.test(t)?parseInt(t,10):t}i(A,"parseConfigValue");function b(t,e){if(t.split(".",1)[0]==="brokerThresholds"&&e!=="user")throw o("brokerThresholds are available only in user scope")}i(b,"assertUserScopeBrokerThresholds");function v(t,e){if(t.split(".",1)[0]==="lifecycle"&&e!=="user")throw o("lifecycle settings are available only in user scope")}i(v,"assertUserScopeLifecycle");function F(t,e){if(t==="working_gerunds"&&e!=="user")throw o("working_gerunds is available only in user scope")}i(F,"assertWorkingGerundsScope");function K(t,e){if(t==="whip_messages"&&e!=="user")throw o("whip_messages are available only in user scope")}i(K,"assertWhipMessagesScope");function D(t,e){if(m(t)!==void 0&&e!=="user")throw o(`${t} is available only in user scope`)}i(D,"assertUserSettingScope");function G(t,e){const n=t.split(".");if(n[0]!=="modelLadders")return null;if(n.length===2&&n[1]==="defaultProvider"){if(!y(e))throw o("modelLadders.defaultProvider must be anthropic or openai");return{defaultProvider:e}}if(n.length===3){const r=n[1],s=n[2];if(!y(r))throw o("modelLadders provider must be anthropic or openai");if(!x(s))throw o("modelLadders strength must be ultra, strong, medium, or light");if(e.trim()==="")throw o(`modelLadders.${r}.${s} cannot be empty`);return{[r]:{[s]:e}}}throw o(`unsupported key path for set: ${t}`)}i(G,"modelLadderPatch");function k(t){const e=t.scope;if(e==="project")throw o("project settings remain a JSON file; use `crtr sys config set` or `crtr sys config path --scope project`.");const n=t.profile;if(e==="user"){if(n!==void 0)throw o("--profile is available only with --scope profile.");return{scope:"user"}}if(n===void 0)throw o("--profile is required with --scope profile.");return{scope:"profile",profileId:O(n).profileId}}i(k,"rawSettingsTarget");function Q(t){let e;try{e=JSON.parse(t)}catch{throw new l({error:"invalid_request",message:"stdin must be valid JSON",field:"stdin",next:"Pipe one complete JSON object on stdin."})}if(e===null||typeof e!="object"||Array.isArray(e))throw new l({error:"invalid_request",message:"stdin must be a JSON object",field:"stdin",next:"Pipe one complete JSON object on stdin."});return e}i(Q,"parseRawSettings");function W(t,e,n,r){const s=e.split("."),c=s[0];if(e==="working_gerunds"||e==="whip_messages"){let a;try{a=JSON.parse(n)}catch{throw o(`${e} must be a JSON array of non-empty strings`)}if(!Array.isArray(a)||a.length===0||!a.every(d=>typeof d=="string"&&d.trim()!==""))throw o(`${e} must be a non-empty JSON array of non-empty strings`);t[e]=a.map(d=>d.trim());return}if(c==="keybindings")throw o("keybindings are edited only through `crtr sys settings`");if(c==="modelLadders")throw o("modelLadders keys are written through persistModelLadders, not this path");const p=m(e);if(p!==void 0){const a=p.setFromString(t,n);if(a!==null)throw o(a);return}if(c==="brokerThresholds"){if(s.length!==2||s[1]!=="warning"&&s[1]!=="automaticReviveCap")throw o("brokerThresholds key must be warning or automaticReviveCap");if(typeof r!="number"||!Number.isFinite(r)||r<1)throw o(`brokerThresholds.${s[1]} must be an integer >= 1`);const a=Math.floor(r);if(s[1]==="warning"&&a>t.brokerThresholds.automaticReviveCap)throw o("brokerThresholds.warning must be <= brokerThresholds.automaticReviveCap");if(s[1]==="automaticReviveCap"&&a<t.brokerThresholds.warning)throw o("brokerThresholds.automaticReviveCap must be >= brokerThresholds.warning");t.brokerThresholds[s[1]]=a;return}if(c==="lifecycle"){if(s.length!==2||s[1]!=="unattendedParkMs")throw o("lifecycle key must be unattendedParkMs");if(typeof r!="number"||!Number.isFinite(r)||r<1)throw o("lifecycle.unattendedParkMs must be an integer >= 1");t.lifecycle.unattendedParkMs=Math.floor(r);return}throw o(`unsupported key path for set: ${e}`)}i(W,"setNestedValue");const B=u({name:"get",description:"read a config value by key",whenToUse:"you want to inspect one config value \u2014 including the whole user keybindings object \u2014 optionally from a specific scope. Use sys settings to edit keybindings and sys config set for supported scalar settings.",help:{name:"sys config get",summary:"read a config value by dotted key",params:[{kind:"positional",name:"key",type:"string",required:!0,constraint:`Dotted key path. Top-level keys: ${$}. brokerThresholds and lifecycle are user-only; keybindings is readable only as the whole user-scope object and editable only through sys settings.`},{kind:"flag",name:"scope",type:"enum",choices:["user","project"],required:!1,constraint:"Scope to read from. Default: user."}],output:[{name:"key",type:"string",required:!0,constraint:"Echo of input key."},{name:"value",type:"unknown",required:!0,constraint:"The resolved value. Type depends on the key."},{name:"scope",type:"string",required:!0,constraint:"Scope the value was read from."}],outputKind:"object",effects:["None. Read-only."]},run:i(async t=>{const e=t.key,n=h(t.scope);if(b(e,n),v(e,n),e.startsWith("keybindings.")||e==="keybindings"&&n!=="user")throw g("keybindings are available only as the whole user-scope object");const r=f(n),s=w(r,e);if(s===void 0)throw g(`config key not found: ${e}`);return{key:e,value:s,scope:n}},"run")}),H=u({name:"set",description:"write a config value by key",whenToUse:"you want to change a supported crtr setting in user or project scope. Use sys settings instead for keybindings, and sys config get to inspect values.",help:{name:"sys config set",summary:"write a config value by dotted key",params:[{kind:"positional",name:"key",type:"string",required:!0,constraint:`Dotted key path. User-scope scalar settings: ${J}. Also supported: working_gerunds and whip_messages (non-empty JSON string arrays), brokerThresholds.warning and brokerThresholds.automaticReviveCap (user scope; integer >= 1), lifecycle.unattendedParkMs (user scope; integer ms >= 1), modelLadders.defaultProvider, and modelLadders.<anthropic|openai>.<ultra|strong|medium|light>. Keybindings are edited only through sys settings. For arbitrary raw user or profile documents, use sys config get-raw and set-raw.`},{kind:"flag",name:"value",type:"string",required:!0,constraint:"value VALUE \u2014 string, required. working_gerunds and whip_messages accept JSON arrays; other values are stored as-is if quoted and coerced to number or boolean when unambiguous."},{kind:"flag",name:"scope",type:"enum",choices:["user","project"],required:!1,constraint:"Scope to write to. Default: user. Project scope is supported only for modelLadders."}],output:[{name:"value",type:"unknown",required:!0,constraint:"Resolved value as written after parsing and setting-specific coercion."},{name:"scope",type:"string",required:!0,constraint:"Scope the value was written to."}],outputKind:"object",effects:["Writes the updated value through the target scope\u2019s configuration storage."]},run:i(async t=>{const e=t.key,n=t.value,r=h(t.scope);b(e,r),v(e,r),F(e,r),K(e,r),D(e,r);const s=A(n),c=G(e,n),p=c!==null?(P(_(r),c),f(r)):R(r,d=>W(d,e,n,s));return{value:w(p,e),scope:r}},"run")}),V=u({name:"get-raw",description:"read one raw SQL-backed settings document and revision",whenToUse:"you need the exact stored user or profile settings document before replacing it with set-raw.",help:{name:"sys config get-raw",summary:"read one raw user or profile settings document",params:[{kind:"flag",name:"scope",type:"enum",choices:["user","profile","project"],required:!0,constraint:"SQL-backed target: user or profile. project is rejected because its settings remain a JSON file."},{kind:"flag",name:"profile",type:"string",required:!1,constraint:"Profile id or name to target. Required with --scope profile; rejected with --scope user or project."}],output:[{name:"revision",type:"string",required:!0,constraint:"Opaque revision token for set-raw. absent means the settings row does not exist."},{name:"settings",type:"object | null",required:!0,constraint:"Exact stored settings document, or null when no row exists."}],outputKind:"object",effects:["None. Read-only."]},run:i(async t=>q(k(t)),"run")}),z=u({name:"set-raw",description:"replace one raw SQL-backed settings document at a revision",whenToUse:"you have a complete user or profile settings document from get-raw and must replace it without losing a concurrent change.",help:{name:"sys config set-raw",summary:"atomically replace one raw user or profile settings document",params:[{kind:"flag",name:"scope",type:"enum",choices:["user","profile","project"],required:!0,constraint:"SQL-backed target: user or profile. project is rejected because its settings remain a JSON file."},{kind:"flag",name:"profile",type:"string",required:!1,constraint:"Profile id or name to target. Required with --scope profile; rejected with --scope user or project."},{kind:"flag",name:"if-revision",type:"string",required:!0,constraint:"Revision returned by get-raw. Required; use absent only when get-raw reported no settings row."},{kind:"stdin",name:"settings",required:!0,allowPositional:!1,constraint:"One complete JSON object. It replaces the document exactly; values are not normalized or merged."}],output:[{name:"revision",type:"string",required:!0,constraint:"Revision token of the stored document after this operation."},{name:"changed",type:"boolean",required:!0,constraint:"Whether the stored document changed."}],outputKind:"object",effects:["Atomically replaces the SQL-backed settings document only when --if-revision matches its current revision."]},run:i(async t=>{const e=k(t),n=Q(t.settings);try{return L(e,n,t.ifRevision)}catch(r){throw r instanceof E?new l({error:"settings_revision_conflict",message:"settings changed since the supplied revision",field:"if_revision",next:"Run `crtr sys config get-raw` again, reapply the intended transformation, and retry with its revision."}):r instanceof T?new l({error:"invalid_settings",message:r.message,field:"stdin",next:"Correct the document so crouter can merge it into resolved settings, then retry with a fresh revision."}):r}},"run")}),Y=u({name:"path",description:"print the project config.json path",whenToUse:"you need the project config.json path for inspection or backup. User and profile settings use get-raw and set-raw instead.",help:{name:"sys config path",summary:"print the project config.json path",params:[{kind:"flag",name:"scope",type:"enum",choices:["project","user","profile"],required:!1,constraint:"Project is the only path-backed settings scope. user and profile are rejected because they use SQL-backed get-raw and set-raw. Default: project."}],output:[{name:"paths",type:"object[]",required:!0,constraint:'One {scope: "project", path} entry when the current project has a config file; otherwise empty.'}],outputKind:"object",effects:["None. Read-only."]},run:i(async t=>{const e=t.scope;if(e==="user"||e==="profile")throw o(`${e} settings are SQL-backed; use \`crtr sys config get-raw --scope ${e}\` instead.`);const n=N("project");return{paths:n===null?[]:[{scope:"project",path:n}]}},"run")}),ce=j({name:"config",description:"read and write configuration",whenToUse:"inspecting crtr settings, changing supported scalar values, replacing complete raw user or profile settings documents, or locating a project config.json. Keybinding changes belong in sys settings.",help:{name:"sys config",summary:"read and write crtr configuration, including model ladders and raw SQL-backed user/profile settings",model:"get and set resolve individual settings. get-raw and set-raw read and replace complete user or profile documents with a revision precondition. path applies only to project config.json."},children:[B,H,V,z,Y]});export{ce as configBranch};
@@ -1,246 +1,2 @@
1
- // Every write `crtr sys context admin` can make. Document changes go through
2
- // the same `memory edit` / `memory move` leaves the CLI runs, always with
3
- // rationale `editor`; a project relationship's memory ceiling goes through the
4
- // profile manifest the profiles settings panel writes. Nothing here touches a
5
- // memory file directly.
6
- import { dirname } from 'node:path';
7
- import { editLeaf } from '../../../memory/edit.js';
8
- import { literalBodySegment } from '../../../memory/shared.js';
9
- import { moveLeaf } from '../../../memory/move.js';
10
- import { addProfileProject, loadProfileManifest } from '../../../../core/profiles/manifest.js';
11
- import { findProjectScopeRoots } from '../../../../core/scope.js';
12
- import { readText, realpathOrSelf } from '../../../../core/fs-utils.js';
13
- import { parseSubstrateFrontmatter } from '../../../../core/substrate/schema.js';
14
- import { surfaceEntryToFlag } from './model.js';
15
- const RATIONALE = 'editor';
16
- /** Which store a mutation must land in, or why the page cannot name one.
17
- *
18
- * The memory leaves resolve a bare name against the AMBIENT target — this
19
- * process's cwd, profile and node — while the page plans against a dialled
20
- * snapshot that may name a different one. Every mutation therefore carries an
21
- * explicit selector for the store the record was actually read from. A record
22
- * no selector reaches is READ-ONLY here rather than sent without one: the leaf
23
- * would resolve the bare name ambiently and rewrite whatever wins it — a
24
- * same-named override at a writable scope — and report that as success. */
25
- function storeAddress(record, profileId) {
26
- if (record.doc.plugin !== undefined) {
27
- return {
28
- refusal: `${record.name} belongs to the plugin “${record.doc.plugin}” and is read-only here — override it with \`crtr memory write ${record.name}\`.`,
29
- };
30
- }
31
- if (record.scope === 'builtin') {
32
- return {
33
- refusal: `${record.name} is a builtin document and is read-only here — override it with \`crtr memory write ${record.name}\`.`,
34
- };
35
- }
36
- if (record.scope === 'project') {
37
- const ownerDir = record.source.store.ownerDir;
38
- return ownerDir === undefined
39
- ? { refusal: `${record.name} resolves from a project store with no owning directory, which this page cannot address — edit it with \`crtr memory edit ${record.name} --dir <dir>\`.` }
40
- : { selector: { dir: ownerDir } };
41
- }
42
- if (record.scope === 'profile') {
43
- return { selector: profileId === null ? { scope: 'profile' } : { scope: 'profile', profile: profileId } };
44
- }
45
- if (record.scope === 'user' || record.scope === 'node')
46
- return { selector: { scope: record.scope } };
47
- return { refusal: `${record.name} resolves from the ${record.scope} scope, which this page cannot address.` };
48
- }
49
- /** The notice a mutating action shows instead of writing, or null when the
50
- * record is writable. The dossier marks a refusing record read-only so the
51
- * refusal is never a surprise. */
52
- export function readOnlyReason(record, profileId) {
53
- const address = storeAddress(record, profileId);
54
- return 'refusal' in address ? address.refusal : null;
55
- }
56
- function failure(error) {
57
- return { ok: false, message: error instanceof Error ? error.message : String(error) };
58
- }
59
- async function runEdit(record, profileId, request, success) {
60
- const address = storeAddress(record, profileId);
61
- if ('refusal' in address)
62
- return { ok: false, message: address.refusal };
63
- const surfaces = request.surfaces;
64
- const unset = [...(request.unset ?? [])];
65
- if (surfaces !== undefined && surfaces.length === 0 && !unset.includes('surfaces'))
66
- unset.push('surfaces');
67
- try {
68
- await editLeaf.run({
69
- name: record.name,
70
- rationale: RATIONALE,
71
- ...address.selector,
72
- ...(surfaces !== undefined && surfaces.length > 0 ? { surface: surfaces.map(surfaceEntryToFlag) } : {}),
73
- ...(request.body === undefined ? {} : { body: request.body }),
74
- ...(request.gate === undefined ? {} : { gate: request.gate }),
75
- ...(request.unlisted === undefined ? {} : { unlisted: true }),
76
- ...(request.slash === undefined ? {} : { slash: true }),
77
- ...(request.whenAndWhyToRead === undefined ? {} : { whenAndWhyToRead: request.whenAndWhyToRead }),
78
- ...(request.shortForm === undefined ? {} : { shortForm: request.shortForm }),
79
- ...(unset.length > 0 ? { unset } : {}),
80
- });
81
- return { ok: true, message: success, name: record.name };
82
- }
83
- catch (error) {
84
- return failure(error);
85
- }
86
- }
87
- /** Replace one document's whole surfaces list — refused when the list on disk
88
- * holds more than the parsed list can carry back. */
89
- export function writeSurfaces(record, profileId, surfaces, success) {
90
- const refusal = readOnlyReason(record, profileId) ?? unwritableSurfaces(record);
91
- if (refusal !== null)
92
- return Promise.resolve({ ok: false, message: refusal });
93
- return runEdit(record, profileId, { surfaces }, success);
94
- }
95
- /** Why the authored `surfaces` list cannot survive a write, or null when it can.
96
- *
97
- * A surface write REPLACES the whole list with the parsed entries, and the
98
- * runtime parser is tolerant: it drops an entry it cannot read and strips a key
99
- * it does not know. Writing that list back would delete authored content the
100
- * page never showed, so an unrepresentable list refuses the edit instead —
101
- * `memory edit --surface` admits only entries the strict coercion accepts, so
102
- * carrying the original through verbatim is not available either. */
103
- function unwritableSurfaces(record) {
104
- const raw = record.source.frontmatter?.['surfaces'];
105
- if (raw === undefined || raw === null)
106
- return null;
107
- const fix = `a write replaces the whole list, so fix ${record.storePath} first`;
108
- if (!Array.isArray(raw)) {
109
- return `The \`surfaces\` field of ${record.name} is not a list of entries — ${fix}.`;
110
- }
111
- for (const [index, entry] of raw.entries()) {
112
- const loss = entryLoss(record.kind, entry);
113
- if (loss !== null)
114
- return `Entry ${index + 1} of ${record.name} ${loss} — ${fix}.`;
115
- }
116
- return null;
117
- }
118
- /** The frontmatter key behind each field a parsed entry carries back. */
119
- const ENTRY_FIELDS = {
120
- on: 'on',
121
- at: 'at',
122
- match: 'match',
123
- 'match-frontmatter': 'matchFrontmatter',
124
- gate: 'gate',
125
- };
126
- function entryLoss(kind, raw) {
127
- if (raw === null || typeof raw !== 'object' || Array.isArray(raw))
128
- return 'is not an entry object';
129
- const rec = raw;
130
- const parsed = parseSubstrateFrontmatter({ kind, surfaces: [rec] })?.surfaces[0];
131
- if (parsed === undefined)
132
- return `(on ${JSON.stringify(rec['on'] ?? null)}) is malformed and the parser drops it`;
133
- for (const key of Object.keys(rec)) {
134
- if (rec[key] === undefined)
135
- continue;
136
- const field = ENTRY_FIELDS[key];
137
- if (field === undefined)
138
- return `carries an unknown key \`${key}\``;
139
- if (parsed[field] === undefined)
140
- return `carries a \`${key}\` the parser drops`;
141
- }
142
- return null;
143
- }
144
- /** The body exactly as it sits after the frontmatter fence, which is what the
145
- * revision path saves back. The PARSED body eats the blank line the fence opens
146
- * with, so seeding an editor from it would rewrite every doc it touched. */
147
- export function readBody(record) {
148
- const segment = literalBodySegment(readText(record.storePath));
149
- return segment.startsWith('\n') ? segment.slice(1) : segment;
150
- }
151
- /** Replace one document's whole body. */
152
- export function writeBody(record, profileId, body) {
153
- if (body.trim() === '') {
154
- return Promise.resolve({
155
- ok: false,
156
- message: `An empty body is not an edit \u2014 remove ${record.name} with \`crtr memory delete\` instead.`,
157
- });
158
- }
159
- return runEdit(record, profileId, { body }, `Rewrote the body of ${record.name}.`);
160
- }
161
- /** Set or clear the document-level gate. An empty predicate clears it. */
162
- export function writeGate(record, profileId, gate) {
163
- const trimmed = gate.trim();
164
- return trimmed === ''
165
- ? runEdit(record, profileId, { unset: ['gate'] }, `Cleared the gate on ${record.name}.`)
166
- : runEdit(record, profileId, { gate: trimmed }, `Gated ${record.name} on ${trimmed}.`);
167
- }
168
- export function toggleFlag(record, profileId, field) {
169
- const on = field === 'unlisted' ? record.doc.unlisted : record.doc.slash;
170
- if (on)
171
- return runEdit(record, profileId, { unset: [field] }, `${record.name} is no longer ${field}.`);
172
- const set = field === 'unlisted' ? { unlisted: true } : { slash: true };
173
- return runEdit(record, profileId, set, `${record.name} is now ${field}.`);
174
- }
175
- export function writeRoutingLine(record, profileId, line) {
176
- const trimmed = line.trim();
177
- if (trimmed === '') {
178
- return Promise.resolve({ ok: false, message: 'A routing line cannot be empty — it is the document\u2019s contract.' });
179
- }
180
- return runEdit(record, profileId, { whenAndWhyToRead: trimmed }, `Rewrote the routing line on ${record.name}.`);
181
- }
182
- export function writeShortForm(record, profileId, text) {
183
- const trimmed = text.trim();
184
- return trimmed === ''
185
- ? runEdit(record, profileId, { unset: ['short-form'] }, `Cleared the short form on ${record.name}.`)
186
- : runEdit(record, profileId, { shortForm: trimmed }, `Rewrote the short form on ${record.name}.`);
187
- }
188
- /** Rename or relocate a document inside its own store. */
189
- export async function moveDoc(record, profileId, to) {
190
- const trimmed = to.trim();
191
- if (trimmed === '')
192
- return { ok: false, message: 'Type the new canonical name.' };
193
- const address = storeAddress(record, profileId);
194
- if ('refusal' in address)
195
- return { ok: false, message: address.refusal };
196
- try {
197
- const result = (await moveLeaf.run({
198
- name: record.name,
199
- to: trimmed,
200
- ...address.selector,
201
- }));
202
- const name = typeof result?.['name'] === 'string' ? result['name'] : trimmed;
203
- return { ok: true, message: `${record.name} now answers to ${name}.`, name };
204
- }
205
- catch (error) {
206
- return failure(error);
207
- }
208
- }
209
- /** The profile project entry whose ceiling reaches a document's store, or null
210
- * when the store carries the neutral ceiling because no entry covers it.
211
- *
212
- * Mirrors `resolveProjectScopeRoots`: pointers are walked in manifest order
213
- * and the FIRST entry whose ancestor walk reaches the store's SCOPE root — the
214
- * `.crouter/` dir one level above the `memory/` store — owns the ceiling, so
215
- * cycling any other entry would move a number the store never reads. */
216
- export function capOwnerFor(record, profileId) {
217
- if (profileId === null || record.scope !== 'project')
218
- return null;
219
- // Realpathed on both sides: a manifest path is stored already resolved while
220
- // a store root is derived from the dialled cwd, so a symlinked ancestor would
221
- // otherwise read as no entry governing the store.
222
- const scopeRoot = realpathOrSelf(dirname(record.source.store.storeRoot));
223
- let manifest;
224
- try {
225
- manifest = loadProfileManifest(profileId).manifest;
226
- }
227
- catch {
228
- return null;
229
- }
230
- for (const project of manifest.projects) {
231
- if (findProjectScopeRoots(project.path, null).some((root) => realpathOrSelf(root) === scopeRoot)) {
232
- return { path: project.path, memory: project.memory };
233
- }
234
- }
235
- return null;
236
- }
237
- /** Move a project relationship's automatic-delivery ceiling. */
238
- export function writeCap(profileId, path, memory) {
239
- try {
240
- addProfileProject(profileId, path, { memory });
241
- return { ok: true, message: `${path} discloses up to "${memory}".`, change: { path, memory } };
242
- }
243
- catch (error) {
244
- return failure(error);
245
- }
246
- }
1
+ var h=Object.defineProperty;var a=(e,n)=>h(e,"name",{value:n,configurable:!0});import{dirname as d}from"node:path";import{editLeaf as p}from"../../../memory/edit.js";import{literalBodySegment as g}from"../../../memory/shared.js";import{moveLeaf as y}from"../../../memory/move.js";import{addProfileProject as $,loadProfileManifest as w}from"../../../../core/profiles/manifest.js";import{findProjectScopeRoots as k}from"../../../../core/scope.js";import{readText as x,realpathOrSelf as l}from"../../../../core/fs-utils.js";import{parseSubstrateFrontmatter as R}from"../../../../core/substrate/schema.js";import{surfaceEntryToFlag as b}from"./model.js";const A="editor";function f(e,n){if(e.doc.plugin!==void 0)return{refusal:`${e.name} belongs to the plugin \u201C${e.doc.plugin}\u201D and is read-only here \u2014 override it with \`crtr memory write ${e.name}\`.`};if(e.scope==="builtin")return{refusal:`${e.name} is a builtin document and is read-only here \u2014 override it with \`crtr memory write ${e.name}\`.`};if(e.scope==="project"){const t=e.source.store.ownerDir;return t===void 0?{refusal:`${e.name} resolves from a project store with no owning directory, which this page cannot address \u2014 edit it with \`crtr memory edit ${e.name} --dir <dir>\`.`}:{selector:{dir:t}}}return e.scope==="profile"?{selector:n===null?{scope:"profile"}:{scope:"profile",profile:n}}:e.scope==="user"||e.scope==="node"?{selector:{scope:e.scope}}:{refusal:`${e.name} resolves from the ${e.scope} scope, which this page cannot address.`}}a(f,"storeAddress");function F(e,n){const t=f(e,n);return"refusal"in t?t.refusal:null}a(F,"readOnlyReason");function m(e){return{ok:!1,message:e instanceof Error?e.message:String(e)}}a(m,"failure");async function i(e,n,t,r){const o=f(e,n);if("refusal"in o)return{ok:!1,message:o.refusal};const s=t.surfaces,u=[...t.unset??[]];s!==void 0&&s.length===0&&!u.includes("surfaces")&&u.push("surfaces");try{return await p.run({name:e.name,rationale:A,...o.selector,...s!==void 0&&s.length>0?{surface:s.map(b)}:{},...t.body===void 0?{}:{body:t.body},...t.gate===void 0?{}:{gate:t.gate},...t.unlisted===void 0?{}:{unlisted:!0},...t.slash===void 0?{}:{slash:!0},...t.whenAndWhyToRead===void 0?{}:{whenAndWhyToRead:t.whenAndWhyToRead},...t.shortForm===void 0?{}:{shortForm:t.shortForm},...u.length>0?{unset:u}:{}}),{ok:!0,message:r,name:e.name}}catch(c){return m(c)}}a(i,"runEdit");function G(e,n,t,r){const o=F(e,n)??j(e);return o!==null?Promise.resolve({ok:!1,message:o}):i(e,n,{surfaces:t},r)}a(G,"writeSurfaces");function j(e){const n=e.source.frontmatter?.surfaces;if(n==null)return null;const t=`a write replaces the whole list, so fix ${e.storePath} first`;if(!Array.isArray(n))return`The \`surfaces\` field of ${e.name} is not a list of entries \u2014 ${t}.`;for(const[r,o]of n.entries()){const s=S(e.kind,o);if(s!==null)return`Entry ${r+1} of ${e.name} ${s} \u2014 ${t}.`}return null}a(j,"unwritableSurfaces");const v={on:"on",at:"at",match:"match","match-frontmatter":"matchFrontmatter",gate:"gate"};function S(e,n){if(n===null||typeof n!="object"||Array.isArray(n))return"is not an entry object";const t=n,r=R({kind:e,surfaces:[t]})?.surfaces[0];if(r===void 0)return`(on ${JSON.stringify(t.on??null)}) is malformed and the parser drops it`;for(const o of Object.keys(t)){if(t[o]===void 0)continue;const s=v[o];if(s===void 0)return`carries an unknown key \`${o}\``;if(r[s]===void 0)return`carries a \`${o}\` the parser drops`}return null}a(S,"entryLoss");function J(e){const n=g(x(e.storePath));return n.startsWith(`
2
+ `)?n.slice(1):n}a(J,"readBody");function M(e,n,t){return t.trim()===""?Promise.resolve({ok:!1,message:`An empty body is not an edit \u2014 remove ${e.name} with \`crtr memory delete\` instead.`}):i(e,n,{body:t},`Rewrote the body of ${e.name}.`)}a(M,"writeBody");function Y(e,n,t){const r=t.trim();return r===""?i(e,n,{unset:["gate"]},`Cleared the gate on ${e.name}.`):i(e,n,{gate:r},`Gated ${e.name} on ${r}.`)}a(Y,"writeGate");function _(e,n,t){return(t==="unlisted"?e.doc.unlisted:e.doc.slash)?i(e,n,{unset:[t]},`${e.name} is no longer ${t}.`):i(e,n,t==="unlisted"?{unlisted:!0}:{slash:!0},`${e.name} is now ${t}.`)}a(_,"toggleFlag");function z(e,n,t){const r=t.trim();return r===""?Promise.resolve({ok:!1,message:"A routing line cannot be empty \u2014 it is the document\u2019s contract."}):i(e,n,{whenAndWhyToRead:r},`Rewrote the routing line on ${e.name}.`)}a(z,"writeRoutingLine");function H(e,n,t){const r=t.trim();return r===""?i(e,n,{unset:["short-form"]},`Cleared the short form on ${e.name}.`):i(e,n,{shortForm:r},`Rewrote the short form on ${e.name}.`)}a(H,"writeShortForm");async function K(e,n,t){const r=t.trim();if(r==="")return{ok:!1,message:"Type the new canonical name."};const o=f(e,n);if("refusal"in o)return{ok:!1,message:o.refusal};try{const s=await y.run({name:e.name,to:r,...o.selector}),u=typeof s?.name=="string"?s.name:r;return{ok:!0,message:`${e.name} now answers to ${u}.`,name:u}}catch(s){return m(s)}}a(K,"moveDoc");function Q(e,n){if(n===null||e.scope!=="project")return null;const t=l(d(e.source.store.storeRoot));let r;try{r=w(n).manifest}catch{return null}for(const o of r.projects)if(k(o.path,null).some(s=>l(s)===t))return{path:o.path,memory:o.memory};return null}a(Q,"capOwnerFor");function U(e,n,t){try{return $(e,n,{memory:t}),{ok:!0,message:`${n} discloses up to "${t}".`,change:{path:n,memory:t}}}catch(r){return m(r)}}a(U,"writeCap");export{Q as capOwnerFor,K as moveDoc,J as readBody,F as readOnlyReason,_ as toggleFlag,M as writeBody,U as writeCap,Y as writeGate,z as writeRoutingLine,H as writeShortForm,G as writeSurfaces};