@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,121 +1 @@
1
- import { expandDeterministicCommand, isDeterministicCommandExpansion, } from '../../../core/runtime/command-expansion.js';
2
- /** Parse an untrusted broker command inventory. Bad entries are discarded so a
3
- * malformed extension registration cannot take down autocomplete or preview. */
4
- export function parsePreviewableCommands(detail) {
5
- try {
6
- const parsed = JSON.parse(detail);
7
- if (!Array.isArray(parsed))
8
- return [];
9
- return parsed.flatMap((value) => {
10
- if (typeof value !== 'object' || value === null || Array.isArray(value))
11
- return [];
12
- const command = value;
13
- if (typeof command.name !== 'string' || typeof command.description !== 'string' || typeof command.source !== 'string')
14
- return [];
15
- if (command.source !== 'builtin' && command.source !== 'command' && command.source !== 'template')
16
- return [];
17
- if (command.template !== undefined && typeof command.template !== 'string')
18
- return [];
19
- if (command.expansion !== undefined && !isDeterministicCommandExpansion(command.expansion))
20
- return [];
21
- return [{
22
- name: command.name,
23
- description: command.description,
24
- source: command.source,
25
- ...(typeof command.template === 'string' ? { template: command.template } : {}),
26
- ...(isDeterministicCommandExpansion(command.expansion) ? { expansion: command.expansion } : {}),
27
- }];
28
- });
29
- }
30
- catch {
31
- return [];
32
- }
33
- }
34
- /** Parse prompt-template arguments exactly as pi does: whitespace separates
35
- * arguments except inside matching single or double quotes. */
36
- export function parseCommandArgs(argsString) {
37
- const args = [];
38
- let current = '';
39
- let inQuote = null;
40
- for (const char of argsString) {
41
- if (inQuote !== null) {
42
- if (char === inQuote)
43
- inQuote = null;
44
- else
45
- current += char;
46
- }
47
- else if (char === '"' || char === "'") {
48
- inQuote = char;
49
- }
50
- else if (/\s/.test(char)) {
51
- if (current !== '') {
52
- args.push(current);
53
- current = '';
54
- }
55
- }
56
- else {
57
- current += char;
58
- }
59
- }
60
- if (current !== '')
61
- args.push(current);
62
- return args;
63
- }
64
- /** Expand pi's prompt-template placeholders without recursively expanding text
65
- * supplied by the user. Kept byte-compatible with pi's prompt expansion. */
66
- export function substitutePromptArgs(content, args) {
67
- const allArgs = args.join(' ');
68
- return content.replace(/\$\{(\d+):-([^}]*)\}|\$\{@:(\d+)(?::(\d+))?\}|\$(ARGUMENTS|@|\d+)/g, (_match, defaultNum, defaultValue, sliceStart, sliceLength, simple) => {
69
- if (defaultNum !== undefined) {
70
- const value = args[Number.parseInt(defaultNum, 10) - 1];
71
- return value || defaultValue || '';
72
- }
73
- if (sliceStart !== undefined) {
74
- const start = Math.max(0, Number.parseInt(sliceStart, 10) - 1);
75
- if (sliceLength !== undefined) {
76
- return args.slice(start, start + Number.parseInt(sliceLength, 10)).join(' ');
77
- }
78
- return args.slice(start).join(' ');
79
- }
80
- if (simple === 'ARGUMENTS' || simple === '@')
81
- return allArgs;
82
- return args[Number.parseInt(simple || '0', 10) - 1] ?? '';
83
- });
84
- }
85
- /** Resolve the leading slash token in the live editor. Viewer builtins run
86
- * first, followed by extension commands and then pi prompt templates. Extension
87
- * matching deliberately uses only ASCII space: pi's `_tryExecuteExtensionCommand`
88
- * treats tabs and newlines as part of the command name, while template matching
89
- * accepts all whitespace. */
90
- export function loadedCommandPreview(editorText, commands) {
91
- const templateMatch = editorText.match(/^\/([^\s]+)(?:\s+([\s\S]*))?$/);
92
- if (templateMatch === null)
93
- return undefined;
94
- const templateName = templateMatch[1];
95
- // Viewer-owned builtins intercept the same slash token before the broker.
96
- if (commands.some((candidate) => candidate.source === 'builtin' && candidate.name === templateName))
97
- return undefined;
98
- const spaceIndex = editorText.indexOf(' ');
99
- const extensionName = spaceIndex === -1 ? editorText.slice(1) : editorText.slice(1, spaceIndex);
100
- const extension = commands.find((candidate) => candidate.source === 'command' && candidate.name === extensionName);
101
- if (extension !== undefined) {
102
- if (extension.expansion === undefined || !isDeterministicCommandExpansion(extension.expansion))
103
- return undefined;
104
- const rawArgs = spaceIndex === -1 ? '' : editorText.slice(spaceIndex + 1);
105
- return {
106
- name: extension.name,
107
- invocation: editorText,
108
- content: expandDeterministicCommand(extension.expansion, rawArgs),
109
- };
110
- }
111
- // An extension whose name only coincides with the template does not shadow it
112
- // unless pi's ASCII-space extension parser actually matched it.
113
- const template = commands.find((candidate) => candidate.source === 'template' && candidate.name === templateName);
114
- if (typeof template?.template !== 'string')
115
- return undefined;
116
- return {
117
- name: template.name,
118
- invocation: editorText,
119
- content: substitutePromptArgs(template.template, parseCommandArgs(templateMatch[2] ?? '')),
120
- };
121
- }
1
+ var m=Object.defineProperty;var a=(r,n)=>m(r,"name",{value:n,configurable:!0});import{expandDeterministicCommand as l,isDeterministicCommandExpansion as c}from"../../../core/runtime/command-expansion.js";function b(r){try{const n=JSON.parse(r);return Array.isArray(n)?n.flatMap(t=>{if(typeof t!="object"||t===null||Array.isArray(t))return[];const e=t;return typeof e.name!="string"||typeof e.description!="string"||typeof e.source!="string"?[]:e.source!=="builtin"&&e.source!=="command"&&e.source!=="template"?[]:e.template!==void 0&&typeof e.template!="string"?[]:e.expansion!==void 0&&!c(e.expansion)?[]:[{name:e.name,description:e.description,source:e.source,...typeof e.template=="string"?{template:e.template}:{},...c(e.expansion)?{expansion:e.expansion}:{}}]}):[]}catch{return[]}}a(b,"parsePreviewableCommands");function d(r){const n=[];let t="",e=null;for(const i of r)e!==null?i===e?e=null:t+=i:i==='"'||i==="'"?e=i:/\s/.test(i)?t!==""&&(n.push(t),t=""):t+=i;return t!==""&&n.push(t),n}a(d,"parseCommandArgs");function x(r,n){const t=n.join(" ");return r.replace(/\$\{(\d+):-([^}]*)\}|\$\{@:(\d+)(?::(\d+))?\}|\$(ARGUMENTS|@|\d+)/g,(e,i,p,o,u,s)=>{if(i!==void 0)return n[Number.parseInt(i,10)-1]||p||"";if(o!==void 0){const f=Math.max(0,Number.parseInt(o,10)-1);return u!==void 0?n.slice(f,f+Number.parseInt(u,10)).join(" "):n.slice(f).join(" ")}return s==="ARGUMENTS"||s==="@"?t:n[Number.parseInt(s||"0",10)-1]??""})}a(x,"substitutePromptArgs");function N(r,n){const t=r.match(/^\/([^\s]+)(?:\s+([\s\S]*))?$/);if(t===null)return;const e=t[1];if(n.some(s=>s.source==="builtin"&&s.name===e))return;const i=r.indexOf(" "),p=i===-1?r.slice(1):r.slice(1,i),o=n.find(s=>s.source==="command"&&s.name===p);if(o!==void 0){if(o.expansion===void 0||!c(o.expansion))return;const s=i===-1?"":r.slice(i+1);return{name:o.name,invocation:r,content:l(o.expansion,s)}}const u=n.find(s=>s.source==="template"&&s.name===e);if(typeof u?.template=="string")return{name:u.name,invocation:r,content:x(u.template,d(t[2]??""))}}a(N,"loadedCommandPreview");export{N as loadedCommandPreview,d as parseCommandArgs,b as parsePreviewableCommands,x as substitutePromptArgs};
@@ -1729,7 +1729,7 @@ CREATE TABLE scope_plugins (owner_key TEXT NOT NULL REFERENCES scope_owners(owne
1729
1729
  CREATE TABLE managed_accounts (provider_id TEXT NOT NULL, id TEXT NOT NULL, label TEXT NOT NULL, label_key TEXT NOT NULL, position INTEGER NOT NULL, last_attempt_at INTEGER NOT NULL, last_rate_limited_at INTEGER NOT NULL, rate_limited_until INTEGER NOT NULL, auth_failure TEXT CHECK(auth_failure IS NULL OR auth_failure='invalid_grant'), PRIMARY KEY(provider_id,id), UNIQUE(provider_id,label_key));
1730
1730
  CREATE INDEX managed_accounts_order ON managed_accounts(provider_id,position);
1731
1731
  CREATE TABLE rotation_settings (singleton INTEGER PRIMARY KEY CHECK(singleton=1), default_fallback_strength TEXT, revert_when_available INTEGER CHECK(revert_when_available IN (0,1)));
1732
- CREATE TABLE provider_revision (singleton INTEGER PRIMARY KEY CHECK(singleton=1), revision INTEGER NOT NULL);`;function QBe(t,e){if(t.exec(e==="provider"?kVr:TVr),e!=="provider"){let n=e==="user"?"user":"project";t.prepare("INSERT INTO scope_owners(owner_key, kind, root, profile_id) VALUES (?, ?, ?, NULL)").run(n,e,"")}else t.prepare("INSERT INTO provider_revision(singleton, revision) VALUES (1, 0)").run();t.exec("PRAGMA user_version = 1")}var Rfn=new Map,cgt=/^[a-z0-9]+(?:-[a-z0-9]+)*-[0-9a-f]{8}$/;function lgt(t,e,n){t.prepare("UPDATE scope_owners SET root=? WHERE owner_key=?").run(n,e)}function RVr(t){return Number(t.prepare("PRAGMA user_version").get().user_version)}function ugt(t){gH(t)&&agt(t,384);for(let e of["-wal","-shm"])gH(`${t}${e}`)&&agt(`${t}${e}`,384)}function mbe(t){return gH(t.path)}function pgt(t){if(t.kind==="project")return[PR(t.root,FB)];if(t.kind==="provider")return[PR(t.root,"anthropic-subscriptions.json"),PR(t.root,"openai-codex-subscriptions.json"),PR(t.root,"provider-rotation.json")];let e=[PR(t.root,MB),PR(t.root,FB),PR(t.root,"profile-defaults.json")],n=PR(t.root,kie);if(gH(n))for(let i of IVr(n,{withFileTypes:!0}))i.isDirectory()&&cgt.test(i.name)&&e.push(PR(n,i.name,"profile.json"),PR(n,i.name,MB),PR(n,i.name,FB));return e}function dgt(t){let e=t.kind==="user"?hM(t.root):t.kind==="project"?Rie(t.root):zj(t.root);mbe(e)||(Ofn(e.root,{recursive:!0,mode:448}),FC(PR(e.root,".init.lock"),()=>{if(mbe(e))return;let n=pgt(e).find(gH);if(n!==void 0)throw new Error(`legacy scoped state exists at ${n}; crtr was updated and \`crtr sys daemon restart\` converts local state`);fgt(e,i=>{QBe(i,e.kind),e.kind!=="provider"&&lgt(i,e.kind,e.root)})}))}function c8(t){let e=Rfn.get(t.path);if(e!==void 0)return e;gH(t.path)||dgt(t);let n=new Nfn(t.path);n.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON;");let i=RVr(n);if(i===0)throw n.close(),new Error(`scoped SQL store is uninitialized: ${t.path}; crtr was updated and \`crtr sys daemon restart\` converts local state`);if(i>1)throw n.close(),new Error(`scoped SQL store ${t.path} uses unsupported schema version ${i}`);if(i!==1)throw n.close(),new Error(`scoped SQL store ${t.path} requires an explicit conversion`);return ugt(t.path),Rfn.set(t.path,n),n}function fgt(t,e){if(gH(t.path))throw new Error(`scoped SQL store already exists: ${t.path}`);if(Ofn(t.root,{recursive:!0,mode:448}),!PVr(t.root).isDirectory())throw new Error(`scoped SQL root is not a directory: ${t.root}`);agt(t.root,448),DVr(t.path,"",{mode:384});let n=new Nfn(t.path);try{n.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON; BEGIN IMMEDIATE;"),e(n),n.exec("COMMIT")}catch(i){try{n.exec("ROLLBACK")}catch{}throw i}finally{ugt(t.path),n.close()}}function hbe(t,e){let n=c8(t);if(n.isTransaction)return e(n);n.exec("BEGIN IMMEDIATE");try{let i=e(n);return n.exec("COMMIT"),ugt(t.path),i}catch(i){try{n.exec("ROLLBACK")}catch{}throw i}}function NVr(t){return hM(t)}function OVr(t,e){return{profileId:t.id,manifest:{schema_version:1,name:t.name,projects:e,home:t.home,paused_at:t.paused_at,...t.default_kind===null?{}:{default_kind:t.default_kind},...Object.keys(JSON.parse(t.metadata_json)).length===0?{}:{metadata:JSON.parse(t.metadata_json)},created_at:t.created_at,last_used_at:t.last_used_at}}}function MVr(t,e){let n=t.prepare("SELECT id, name, created_at, last_used_at, paused_at, home, default_kind, metadata_json FROM profiles WHERE id=?").get(e);if(!n)return null;let i=t.prepare("SELECT path, memory FROM profile_projects WHERE profile_id=? ORDER BY position").all(e);return OVr(n,i)}function Mfn(t){let e=c8(NVr(t));return e.prepare("SELECT id FROM profiles ORDER BY rowid").all().map(({id:i})=>MVr(e,i)).filter(Boolean)}var Bfn=/^[a-z0-9]+(?:-[a-z0-9]+)*-[0-9a-f]{8}$/,UVr="root-00000000";function $fn(){return hgt(GP(),kie)}function jVr(t){if(!Bfn.test(t))throw o8(`invalid profile id: ${t}`,{received:t,next:"Profile ids look like <slug>-<8-hex-chars> (as printed by `crtr profile new`). Pass an exact id or a profile name, not a raw path."})}function WVr(t){let e=$fn(),n=mgt(e),i=Ffn(e)?Lfn(e):n,s=Ffn(t)?Lfn(t):mgt(i,BVr(n,mgt(t)));if(s!==i&&!s.startsWith(i+$Vr))throw o8(`profile path escapes the profiles root: ${t}`)}function ggt(t){jVr(t);let e=hgt($fn(),t);return WVr(e),e}function Ufn(t){return hgt(ggt(t),"memory")}function QVr(t,e){let n=typeof e.home=="string"&&e.home!==""?e.home:null;return{...e,home:t===UVr?n:n??e.projects[0]?.path??null,paused_at:typeof e.paused_at=="string"&&e.paused_at!==""?e.paused_at:null}}function qVr(){return{entries:Mfn(GP()).map(({profileId:t,manifest:e})=>({profileId:t,manifest:QVr(t,e)})),unreadableIds:[]}}function qBe(){return qVr().entries}function GVr(t){let e=qBe(),n=VVr(e,t);return n?{kind:"resolved",entry:n}:{kind:"absent"}}function VVr(t,e){if(Bfn.test(e)){let i=t.find(s=>s.profileId===e);if(i!==void 0)return i}let n=t.filter(i=>i.manifest.name===e);if(n.length===1)return n[0];if(n.length>1){let i=n.map(s=>s.profileId);throw afn(`profile name "${e}" matches ${i.length} profiles: ${i.join(", ")}`,{received:e,candidates:i,next:`Re-run with one exact profile id: ${i.join(", ")}.`})}return null}function zVr(t,e){let n=t.map(i=>`${i.profileId} (${i.manifest.name})`);return Hht(`profile not found: ${e}`,{received:e,available:n,next:n.length>0?`Re-run with one of the profiles on this host: ${n.join(", ")} \u2014 or create one with \`crtr profile new --name <name>\`.`:"No profiles exist on this host yet \u2014 create one with `crtr profile new --name <name>`."})}function Nie(t){let e=GVr(t);if(e.kind==="resolved")return e.entry;throw zVr(qBe(),t)}var YVr="content",jfn=new Map;function XVr(t,e){return`${t}\0${e??""}`}function GP(){return Qfn(Wfn(),i8)}function ZVr(t,e){if(!HVr(t)||Pie(t)===Pie(e))return!1;try{return JVr(t).isDirectory()}catch{return!1}}function ezr(t=process.cwd()){return Gfn(t)[0]??null}function tzr(t,e){let n=[],i=Pie(Wfn()),s=qfn(t);for(;;){let a=Qfn(s,i8);if(ZVr(a,e)&&n.push(a),Pie(s)===i)return n;let u=KVr(s);if(u===s)return n;s=u}}function Gfn(t=process.cwd(),e=Smt()||null){return nzr(t,e).roots}function nzr(t,e){let n=qfn(t),i=XVr(n,e),s=jfn.get(i);if(s!==void 0)return s;let a=GP(),u=[{dir:n,memory:null}];if(e!==null&&e!=="")try{let{manifest:x}=Nie(e);for(let k of x.projects)u.push({dir:k.path,memory:k.memory})}catch{}let p=new Set,f=[],_=new Map;for(let x of u)for(let k of tzr(x.dir,a))p.has(k)||(p.add(k),f.push(k)),x.memory!==null&&!_.has(k)&&_.set(k,x.memory);let m=f.map(x=>({root:x,memory:_.get(x)??YVr})),b={roots:f,annotated:m};return jfn.set(i,b),b}function Vfn(t){return ezr(t)}function l8(t){return t==="builtin"?null:t==="user"?GP():Vfn()}function _gt(t){let e=l8(t);if(!e)throw o8(`no ${t} scope available \u2014 run \`crtr init\` here or use --scope user`);return e}import{join as wgt}from"node:path";import{join as Szr}from"node:path";import{request as rzr}from"node:http";import{request as izr}from"node:https";import{homedir as szr}from"node:os";import{join as Jfn}from"node:path";var Mh=class extends Error{status;code;details;constructor(e,n,i,s){super(i),this.name="ApiError",this.status=e,this.code=n,s!==void 0&&(this.details=s)}};function ygt(t){if(typeof t!="object"||t===null)return!1;let e=t.error;if(typeof e!="object"||e===null)return!1;let{code:n,message:i}=e;return typeof n=="string"&&typeof i=="string"}var Wo={healthz:()=>"/healthz",status:()=>"/v1/status",daemonRestart:()=>"/v1/daemon/restart",daemonMigrate:()=>"/v1/daemon/migrate",daemonAdmit:()=>"/v1/daemon/admit",nodes:()=>"/v1/nodes",reviveAll:()=>"/v1/nodes/revive-all",node:t=>`/v1/nodes/${t}`,nodeOutcome:t=>`/v1/nodes/${t}/outcome`,nodeOutcomeDelivery:t=>`/v1/nodes/${t}/outcome-delivery`,nodeSnapshot:t=>`/v1/nodes/${t}/snapshot`,nodeSubject:t=>`/v1/nodes/${t}/subject`,nodeSession:t=>`/v1/nodes/${t}/session`,nodeChatInventory:t=>`/v1/nodes/${t}/chat-inventory`,prospectiveChatInventory:()=>"/v1/prospective-chat-inventory",nodeTranscript:t=>`/v1/nodes/${t}/transcript`,nodeContext:t=>`/v1/nodes/${t}/context`,nodeArtifacts:t=>`/v1/nodes/${t}/artifacts`,nodeReports:t=>`/v1/nodes/${t}/reports`,nodeResult:t=>`/v1/nodes/${t}/result`,nodeJobs:t=>`/v1/nodes/${t}/jobs`,nodeJob:(t,e)=>`/v1/nodes/${t}/jobs/${e}`,nodeMessages:t=>`/v1/nodes/${t}/messages`,nodeInterrupt:t=>`/v1/nodes/${t}/interrupt`,nodeFork:t=>`/v1/nodes/${t}/fork`,nodeRevive:t=>`/v1/nodes/${t}/revive`,nodeRelaunchRoot:t=>`/v1/nodes/${t}/relaunch-root`,nodeBrokerSessionBound:t=>`/v1/nodes/${t}/broker/session-bound`,nodeBrokerSettle:t=>`/v1/nodes/${t}/broker/settle`,nodeBrokerParkComplete:t=>`/v1/nodes/${t}/broker/park-complete`,nodeBrokerParkActivity:t=>`/v1/nodes/${t}/broker/park-activity`,nodeMailClaim:t=>`/v1/nodes/${t}/mail/claim`,nodeMailAcknowledge:t=>`/v1/nodes/${t}/mail/acknowledge`,nodeBrokerModel:t=>`/v1/nodes/${t}/broker/model`,nodeBrokerExtensionState:t=>`/v1/nodes/${t}/broker/extension-state`,nodeBrokerGeneratedName:t=>`/v1/nodes/${t}/broker/generated-name`,nodeBrokerPersonaAck:t=>`/v1/nodes/${t}/broker/persona-ack`,brokerTurn:t=>`/v1/broker/${t}/turn`,brokerProviderRetry:t=>`/v1/broker/${t}/provider-retry`,brokerFault:t=>`/v1/broker/${t}/fault`,brokerRecovery:t=>`/v1/broker/${t}/recovery`,nodeFault:t=>`/v1/nodes/${t}/fault`,nodeClose:t=>`/v1/nodes/${t}/close`,nodeRecycle:t=>`/v1/nodes/${t}/recycle`,nodeDemote:t=>`/v1/nodes/${t}/demote`,nodePromote:t=>`/v1/nodes/${t}/promote`,nodeYield:t=>`/v1/nodes/${t}/yield`,nodeWait:t=>`/v1/nodes/${t}/wait`,nodeConfig:t=>`/v1/nodes/${t}/config`,nodeWorktreeClose:t=>`/v1/nodes/${t}/worktree/close`,nodeWorktreeAbandon:t=>`/v1/nodes/${t}/worktree/abandon`,quarantinedWorktrees:()=>"/v1/worktrees/quarantined",nodeAttach:t=>`/v1/nodes/${t}/attach`,focuses:()=>"/v1/focuses",focusByNode:()=>"/v1/focuses/by-node",focusByPane:()=>"/v1/focuses/by-pane",focus:t=>`/v1/focuses/${t}`,nodeSubscriptions:t=>`/v1/nodes/${t}/subscriptions`,nodeSubscription:(t,e)=>`/v1/nodes/${t}/subscriptions/${e}`,crons:()=>"/v1/crons",cron:t=>`/v1/crons/${t}`,cronPause:t=>`/v1/crons/${t}/pause`,cronResume:t=>`/v1/crons/${t}/resume`,cronRun:t=>`/v1/crons/${t}/run`,cronsPoke:()=>"/v1/crons/poke",canvasAttention:()=>"/v1/canvas/attention",canvasAttentionCounts:()=>"/v1/canvas/attention/counts",canvasHistorySearch:()=>"/v1/canvas/history/search",canvasHistoryGrep:()=>"/v1/canvas/history/grep",canvasHistoryRead:()=>"/v1/canvas/history/read",canvasHistoryStats:()=>"/v1/canvas/history/stats",canvasSnapshot:()=>"/v1/canvas/snapshot",canvasRoster:()=>"/v1/canvas/roster",canvasPrune:()=>"/v1/canvas/prune",humanReviews:()=>"/v1/human/reviews",humanReview:t=>`/v1/human/reviews/${t}`,humanReviewSubmit:t=>`/v1/human/reviews/${t}/submit`,humanReviewCancel:t=>`/v1/human/reviews/${t}/cancel`,humanReviewDocument:t=>`/v1/human/reviews/${t}/document`,humanReviewComments:t=>`/v1/human/reviews/${t}/comments`,humanReviewCommentEvents:t=>`/v1/human/reviews/${t}/comment-events`,humanReviewCommentRanges:t=>`/v1/human/reviews/${t}/comment-ranges`,humanComment:t=>`/v1/human/comments/${t}`,humanCommentEdit:t=>`/v1/human/comments/${t}/edit`,humanCommentResolve:t=>`/v1/human/comments/${t}/resolve`,humanCommentReopen:t=>`/v1/human/comments/${t}/reopen`,humanCommentDelete:t=>`/v1/human/comments/${t}/delete`,humanInbox:()=>"/v1/human/inbox",humanInboxTicket:t=>`/v1/human/inbox/${t}`,humanInboxRespond:t=>`/v1/human/inbox/${t}/respond`,humanInboxProgress:t=>`/v1/human/inbox/${t}/progress`,humanInboxResponse:t=>`/v1/human/inbox/${t}/response`,humanInboxCancel:t=>`/v1/human/inbox/${t}/cancel`,humanInboxFeedbackResolve:(t,e)=>`/v1/human/inbox/${t}/feedback-comments/${e}/resolve`,humanRequests:()=>"/v1/human/requests",humanRequest:t=>`/v1/human/requests/${t}`,humanRequestReplace:t=>`/v1/human/requests/${t}/replace`,humanRequestRespond:t=>`/v1/human/requests/${t}/respond`,humanRequestDismiss:t=>`/v1/human/requests/${t}/dismiss`,humanRequestCancel:t=>`/v1/human/requests/${t}/cancel`,profiles:()=>"/v1/profiles",profile:t=>`/v1/profiles/${t}`,profilePause:t=>`/v1/profiles/${t}/pause`,profileResume:t=>`/v1/profiles/${t}/resume`,profileMetadata:t=>`/v1/profiles/${t}/metadata`,modelAuths:()=>"/v1/model-auth",modelAuth:t=>`/v1/model-auth/${t}`,filePeek:()=>"/v1/files/peek",memoryResolve:()=>"/v1/memory/resolve"};function GBe(t){return typeof t=="string"&&t!==""&&t!=="."&&t!==".."&&!/[\\/\0]/u.test(t)&&Buffer.byteLength(t,"utf8")<=128}function zfn(t){return typeof t=="string"&&t!==""&&t!=="."&&t!==".."&&/^[A-Za-z0-9._~-]+$/u.test(t)&&Buffer.byteLength(t,"utf8")<=128}function Hfn(t){return typeof t=="string"&&t!==""&&t!=="."&&t!==".."&&!/[\\/\0\s?#%]/u.test(t)&&Buffer.byteLength(t,"utf8")<=128}var ozr=".crouter",azr="crtrd.sock";function czr(){let t=Fj(),e=t!==void 0&&t!==""?t:Jfn(szr(),ozr,"canvas");return Jfn(e,azr)}var lzr=3e4,uzr=1e4,pzr=200;async function VBe({windowMs:t,probe:e,initialError:n,pollIntervalMs:i=pzr,retry:s=()=>!0,now:a=Date.now,sleep:u=dzr}){let p=a()+t,f=n;for(;;){let _=p-a();if(_<=0)throw f??new Error("crtrd availability window expired without a probe failure");try{await e(_);return}catch(b){if(f=b,!s(b))throw b}let m=p-a();if(m<=0)throw f;await u(Math.min(i,m))}}var LB=class t{socketPath;baseUrl;headers;autostart;timeoutMs;onColdSocket;coldStartDiagnostic;coldStartPollWindowMs;coldStartAttempted=!1;constructor(e){let n=e.socketPath!==void 0&&e.socketPath!=="",i=e.baseUrl!==void 0&&e.baseUrl!=="";if(n===i)throw new TypeError("CrtrClient requires exactly one of socketPath | baseUrl");n&&(this.socketPath=e.socketPath),i&&(this.baseUrl=new URL(e.baseUrl)),this.headers={...e.headers},this.autostart=e.autostart??n,this.timeoutMs=e.timeoutMs??lzr,e.onColdSocket!==void 0&&(this.onColdSocket=e.onColdSocket),e.coldStartDiagnostic!==void 0&&(this.coldStartDiagnostic=e.coldStartDiagnostic),this.coldStartPollWindowMs=e.coldStartPollWindowMs??uzr}static forLocalSocket(e){return new t({socketPath:czr(),autostart:!0,...e})}healthz(){return this.request("GET",Wo.healthz())}async probeHealthz(e){let n=await this.transport("GET",Wo.healthz(),void 0,void 0,e);if(n.status===503)try{let i=JSON.parse(n.text);if(typeof i.startup_blocked=="string")return i}catch{}return Kfn(n)}status(){return this.request("GET",Wo.status())}restartDaemon(){return this.request("POST",Wo.daemonRestart())}admitDaemon(){return this.request("POST",Wo.daemonAdmit())}migrateState(e){return this.request("POST",Wo.daemonMigrate(),e)}createNode(e){return this.request("POST",Wo.nodes(),e)}listNodes(e){return this.request("GET",nA(Wo.nodes(),e))}getNode(e){return this.request("GET",Wo.node(this.nodePath(e)))}getNodeOutcome(e,{waitSeconds:n}={}){if(n!==void 0&&(!Number.isInteger(n)||n<0||n>25))throw new RangeError("waitSeconds must be an integer between 0 and 25");return this.request("GET",nA(Wo.nodeOutcome(this.nodePath(e)),{wait:n}))}registerOutcomeDelivery(e,n){return this.request("PUT",Wo.nodeOutcomeDelivery(this.nodePath(e)),n)}getOutcomeDelivery(e){return this.request("GET",Wo.nodeOutcomeDelivery(this.nodePath(e)))}async disarmOutcomeDelivery(e){await this.request("DELETE",Wo.nodeOutcomeDelivery(this.nodePath(e)))}listBashJobs(e){return this.request("GET",Wo.nodeJobs(this.nodePath(e)))}stopBashJob(e,n){return this.request("DELETE",Wo.nodeJob(this.nodePath(e),this.jobPath(n)))}sendMessage(e,n){return this.request("POST",Wo.nodeMessages(this.nodePath(e)),n)}interruptNode(e){return this.request("POST",Wo.nodeInterrupt(this.nodePath(e)),{})}pushReport(e,n){return this.request("POST",Wo.nodeReports(this.nodePath(e)),n)}submitResult(e,n){return this.request("POST",Wo.nodeResult(this.nodePath(e)),n)}forkNode(e){return this.request("POST",Wo.nodeFork(this.nodePath(e)),{})}reviveNode(e,n){return this.request("POST",Wo.nodeRevive(this.nodePath(e)),n??{})}relaunchRoot(e){return this.request("POST",Wo.nodeRelaunchRoot(this.nodePath(e)),{})}bindBrokerSession(e,n){return this.request("POST",Wo.nodeBrokerSessionBound(this.nodePath(e)),n)}settleBroker(e,n){return this.request("POST",Wo.nodeBrokerSettle(this.nodePath(e)),n)}completeBrokerPark(e,n){return this.request("POST",Wo.nodeBrokerParkComplete(this.nodePath(e)),n)}recordBrokerParkActivity(e,n){return this.request("POST",Wo.nodeBrokerParkActivity(this.nodePath(e)),n)}claimNodeMail(e,n){return this.request("POST",Wo.nodeMailClaim(this.nodePath(e)),n)}acknowledgeNodeMail(e,n){return this.request("POST",Wo.nodeMailAcknowledge(this.nodePath(e)),n)}recordBrokerTurn(e,n){return this.request("POST",Wo.brokerTurn(this.nodePath(e)),n)}mutateBrokerProviderRetry(e,n){return this.request("POST",Wo.brokerProviderRetry(this.nodePath(e)),n)}mutateBrokerFault(e,n){return this.request("POST",Wo.brokerFault(this.nodePath(e)),n)}getBrokerRecovery(e,n){return this.request("GET",`${Wo.brokerRecovery(this.nodePath(e))}?expected_execution_id=${encodeURIComponent(n)}`)}recordNodeFault(e,n){return this.request("POST",Wo.nodeFault(this.nodePath(e)),n)}clearNodeFault(e,n={}){let i=new URLSearchParams;n.link!==void 0&&i.set("link",n.link),n.preserve_episode!==void 0&&i.set("preserve_episode",String(n.preserve_episode));let s=i.size===0?"":`?${i.toString()}`;return this.request("DELETE",`${Wo.nodeFault(this.nodePath(e))}${s}`)}commitBrokerModel(e,n){return this.request("POST",Wo.nodeBrokerModel(this.nodePath(e)),n)}brokerExtensionState(e){return this.request("GET",Wo.nodeBrokerExtensionState(this.nodePath(e)))}commitBrokerGeneratedName(e,n){return this.request("POST",Wo.nodeBrokerGeneratedName(this.nodePath(e)),n)}commitBrokerPersonaAck(e,n){return this.request("POST",Wo.nodeBrokerPersonaAck(this.nodePath(e)),n)}closeNode(e,n){return this.request("POST",Wo.nodeClose(this.nodePath(e)),n??{})}recycleNode(e){return this.request("POST",Wo.nodeRecycle(this.nodePath(e)),{})}demoteNode(e){return this.request("POST",Wo.nodeDemote(this.nodePath(e)),{})}promoteNode(e,n){return this.request("POST",Wo.nodePromote(this.nodePath(e)),n)}yieldNode(e,n){return this.request("POST",Wo.nodeYield(this.nodePath(e)),n)}waitNode(e,n){return this.request("POST",Wo.nodeWait(this.nodePath(e)),n)}patchConfig(e,n){return this.request("PATCH",Wo.nodeConfig(this.nodePath(e)),n)}closeWorktree(e){return this.request("POST",Wo.nodeWorktreeClose(this.nodePath(e)),{})}abandonWorktree(e,n){return this.request("POST",Wo.nodeWorktreeAbandon(this.nodePath(e)),n)}listQuarantinedWorktrees(){return this.request("GET",Wo.quarantinedWorktrees())}subscribe(e,n){return this.request("POST",Wo.nodeSubscriptions(this.nodePath(e)),n)}listFocuses(){return this.request("GET",Wo.focuses())}focusOf(e){return this.request("GET",nA(Wo.focusByNode(),{node_id:e}))}focusByPane(e){return this.request("GET",nA(Wo.focusByPane(),{pane:e}))}registerFocus(e){return this.request("POST",Wo.focuses(),e)}async setFocusPane(e,n){await this.request("PATCH",Wo.focus(e),n)}async closeFocus(e){await this.request("DELETE",Wo.focus(e))}async unsubscribe(e,n){await this.request("DELETE",Wo.nodeSubscription(this.nodePath(e),this.nodePath(n)))}armCron(e){return this.request("POST",Wo.crons(),e)}listCrons(e){return this.request("GET",nA(Wo.crons(),e))}showCron(e,n){return this.request("GET",nA(Wo.cron(this.cronPath(e)),n))}pauseCron(e,n){return this.request("POST",nA(Wo.cronPause(this.cronPath(e)),n),{})}resumeCron(e,n){return this.request("POST",nA(Wo.cronResume(this.cronPath(e)),n),{})}runCron(e,n){return this.request("POST",nA(Wo.cronRun(this.cronPath(e)),n),{})}async cancelCron(e,n){await this.request("DELETE",nA(Wo.cron(this.cronPath(e)),n))}pokeCrons(){return this.request("POST",Wo.cronsPoke(),{})}ensureAttach(e,n){return this.request("POST",Wo.nodeAttach(this.nodePath(e)),n??{})}getReports(e,n){return this.request("GET",nA(Wo.nodeReports(this.nodePath(e)),n))}getTranscript(e,n){return this.request("GET",nA(Wo.nodeTranscript(this.nodePath(e)),n))}getSnapshot(e){return this.request("GET",Wo.nodeSnapshot(this.nodePath(e)))}nodeSubject(e){return this.request("GET",Wo.nodeSubject(this.nodePath(e)))}getNodeMessages(e,n){return this.request("GET",nA(Wo.nodeMessages(this.nodePath(e)),n))}getSession(e){return this.request("GET",Wo.nodeSession(this.nodePath(e)))}getChatInventory(e){return this.request("GET",Wo.nodeChatInventory(this.nodePath(e)))}getProspectiveChatInventory(e){return this.request("GET",nA(Wo.prospectiveChatInventory(),e))}getArtifacts(e,n){return this.request("GET",nA(Wo.nodeArtifacts(this.nodePath(e)),n))}getContext(e){return this.request("GET",Wo.nodeContext(this.nodePath(e)))}peekFile(e){return this.request("GET",nA(Wo.filePeek(),{path:e}))}resolveMemoryDoc(e,n){return this.request("GET",nA(Wo.memoryResolve(),{name:e,node:n}))}ensureProfile(e,n){return this.request("PUT",Wo.profile(e),n??{})}listProfiles(){return this.request("GET",Wo.profiles())}getProfile(e){return this.request("GET",Wo.profile(e))}pauseProfile(e){return this.request("POST",Wo.profilePause(e),{})}resumeProfile(e){return this.request("POST",Wo.profileResume(e),{})}updateProfileMetadata(e,n){return this.request("PATCH",Wo.profileMetadata(e),n)}deleteProfile(e,n){return this.request("DELETE",Wo.profile(e),n)}listModelAuth(){return this.request("GET",Wo.modelAuths())}installCredential(e,n){return this.request("PUT",Wo.modelAuth(e),n)}removeCredential(e){return this.request("DELETE",Wo.modelAuth(e))}createReview(e){return this.request("POST",Wo.humanReviews(),e)}listReviews(e){return this.request("GET",nA(Wo.humanReviews(),e))}getReview(e){return this.request("GET",Wo.humanReview(this.reviewPath(e)))}submitReview(e){return this.request("POST",Wo.humanReviewSubmit(this.reviewPath(e)),{})}cancelReview(e,n={}){return this.request("POST",Wo.humanReviewCancel(this.reviewPath(e)),n)}getReviewDocumentBase(e){return this.request("GET",Wo.humanReviewDocument(this.reviewPath(e)))}createReviewComment(e,n){let i=e===void 0?"self":this.reviewPath(e);return this.request("POST",Wo.humanReviewComments(i),n)}listReviewComments(e,n){let i=e===void 0?"self":this.reviewPath(e);return this.request("GET",nA(Wo.humanReviewComments(i),n))}readReviewCommentEvents(e,n){return this.request("GET",nA(Wo.humanReviewCommentEvents(this.reviewPath(e)),n))}updateReviewCommentRanges(e,n){return this.request("POST",Wo.humanReviewCommentRanges(this.reviewPath(e)),n)}getReviewComment(e){return this.request("GET",Wo.humanComment(this.commentPath(e)))}editReviewComment(e,n){return this.request("POST",Wo.humanCommentEdit(this.commentPath(e)),n)}resolveReviewComment(e,n={}){return this.request("POST",Wo.humanCommentResolve(this.commentPath(e)),n)}reopenReviewComment(e,n={}){return this.request("POST",Wo.humanCommentReopen(this.commentPath(e)),n)}deleteReviewComment(e,n={}){return this.request("POST",Wo.humanCommentDelete(this.commentPath(e)),n)}listHumanInbox(){return this.request("GET",Wo.humanInbox())}getHumanInboxPage(e){return this.request("GET",Wo.humanInboxTicket(this.ticketId(e)))}getInboxHistory(e){if(e===void 0)return this.request("GET",Wo.humanInbox()+"/history");if(typeof e!="string"||e==="")throw new TypeError(`invalid node id: ${JSON.stringify(e)}`);return this.request("GET",nA(Wo.humanInbox()+"/history",{node_id:e}))}respondHumanInboxPage(e,n){return this.request("POST",Wo.humanInboxRespond(this.ticketId(e)),n)}postInboxProgress(e,n){return this.request("POST",Wo.humanInboxProgress(this.ticketId(e)),{responses:n})}getInboxResponse(e){return this.request("GET",Wo.humanInboxResponse(this.ticketId(e)))}cancelHumanInboxTicket(e,n){return this.request("POST",Wo.humanInboxCancel(this.ticketId(e)),n??{})}createHumanRequest(e){return this.request("POST",Wo.humanRequests(),e)}getHumanRequest(e){return this.request("GET",Wo.humanRequest(this.requestPath(e)))}replaceHumanRequest(e,n){return this.request("POST",Wo.humanRequestReplace(this.requestPath(e)),n)}respondHumanRequest(e,n){return this.request("POST",Wo.humanRequestRespond(this.requestPath(e)),n)}dismissHumanRequest(e,n={}){return this.request("POST",Wo.humanRequestDismiss(this.requestPath(e)),n)}cancelHumanRequest(e,n={}){return this.request("POST",Wo.humanRequestCancel(this.requestPath(e)),n)}resolvePageFeedbackComment(e,n,i){if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(n))throw new TypeError(`invalid feedback comment id: ${JSON.stringify(n)}`);return this.request("POST",Wo.humanInboxFeedbackResolve(this.ticketId(e),n),{node_id:i})}async dashboard(e){let n=e?.under!==void 0?{under:e.under}:void 0,[i,s]=await Promise.all([this.listNodes(n),this.status()]);return{nodes:i,counts:s.node_counts,generated_at:new Date().toISOString()}}attention(){return this.request("GET",Wo.canvasAttention())}attentionCounts(e){let n={node_ids:e};return this.request("POST",Wo.canvasAttentionCounts(),n)}historySearch(e){return this.request("POST",Wo.canvasHistorySearch(),e)}historyGrep(e){return this.request("POST",Wo.canvasHistoryGrep(),e)}historyRead(e){return this.request("GET",nA(Wo.canvasHistoryRead(),e))}historyStats(e){return this.request("POST",Wo.canvasHistoryStats(),e)}canvasSnapshot(){return this.request("GET",Wo.canvasSnapshot())}canvasRoster(){return this.request("GET",Wo.canvasRoster())}prune(e){return this.request("POST",Wo.canvasPrune(),e)}async request(e,n,i){return Kfn(await this.send(e,n,i))}async send(e,n,i,s){try{return await this.transport(e,n,i,s)}catch(a){if(this.isColdSocketError(a))try{return await this.handleColdSocket(a),await this.transport(e,n,i,s)}catch(u){throw gbe(u)}if(this.isInterruptedSocketError(a))return await this.rideOutInterruptedRequest(e,n,i,s);throw gbe(a)}}nodePath(e){if(!GBe(e))throw new Mh(400,"invalid_node_id",`invalid node id: ${JSON.stringify(e)}`);return e}jobPath(e){if(!zfn(e))throw new Mh(400,"invalid_job_id",`invalid background job id: ${JSON.stringify(e)}`);return e}cronPath(e){if(!Hfn(e))throw new Mh(400,"invalid_cron_id",`invalid cron id: ${JSON.stringify(e)}`);return e}requestPath(e){if(!GBe(e))throw new Mh(400,"invalid_request_id",`invalid request id: ${JSON.stringify(e)}`);return e}ticketId(e){if(!/^[a-f0-9]{64}$/.test(e))throw new TypeError(`invalid inbox ticket id: ${JSON.stringify(e)}`);return e}reviewPath(e){if(!GBe(e))throw new Mh(400,"invalid_review_id",`invalid review id: ${JSON.stringify(e)}`);return e}commentPath(e){if(!/^[a-f0-9]{32}$/.test(e))throw new Mh(400,"invalid_comment_id",`invalid comment id: ${JSON.stringify(e)}`);return e}transport(e,n,i,s,a=this.timeoutMs){let p=this.baseUrl?.protocol==="https:"?izr:rzr,f=i===void 0?void 0:JSON.stringify(i),_={accept:"application/json",...this.headers,...s};f!==void 0&&(_["content-type"]="application/json",_["content-length"]=String(Buffer.byteLength(f)));let m={method:e,path:n,headers:_,timeout:a};return this.socketPath!==void 0?m.socketPath=this.socketPath:this.baseUrl!==void 0&&(m.protocol=this.baseUrl.protocol,m.hostname=this.baseUrl.hostname,this.baseUrl.port!==""&&(m.port=this.baseUrl.port)),new Promise((b,x)=>{let k=p(m,I=>{let C=[];I.on("data",P=>C.push(P)),I.on("end",()=>{let P={};for(let[R,F]of Object.entries(I.headers))F!==void 0&&(P[R]=Array.isArray(F)?F.join(", "):F);b({status:I.statusCode??0,text:Buffer.concat(C).toString("utf8"),headers:P})}),I.on("error",x)});k.on("error",x),k.on("timeout",()=>{k.destroy(Object.assign(new Error("request timed out"),{code:"ETIMEDOUT"}))}),f!==void 0&&k.write(f),k.end()})}isColdSocketError(e){if(this.socketPath===void 0)return!1;let n=e?.code;return n==="ECONNREFUSED"||n==="ENOENT"||n==="ENOTSOCK"}isInterruptedSocketError(e){if(this.socketPath===void 0)return!1;let n=e?.code;return n==="ECONNRESET"||n==="EPIPE"}async rideOutInterruptedRequest(e,n,i,s){try{await this.awaitAvailability()}catch(a){throw gbe(a)}if(e!=="GET"&&e!=="HEAD")throw new Mh(503,"daemon_request_interrupted",`crtrd connection ended before this ${e} response; the request may or may not have been applied.`);try{return await this.transport(e,n,i,s)}catch(a){throw gbe(a)}}async awaitAvailability(e){await VBe({windowMs:this.coldStartPollWindowMs,initialError:e,probe:async n=>{let i=await this.transport("GET",Wo.healthz(),void 0,void 0,n);if(!(i.status>=200&&i.status<300)){try{if(typeof JSON.parse(i.text).startup_blocked=="string")return}catch{}throw new Mh(i.status,"daemon_health_unavailable",`crtrd health check returned HTTP ${i.status}: ${i.text.slice(0,500)}`)}}})}async handleColdSocket(e){let n=this.autostart&&this.onColdSocket!==void 0&&!this.coldStartAttempted;n&&(this.coldStartAttempted=!0,await this.onColdSocket());try{await this.awaitAvailability(e)}catch(i){if(n){let s=fzr(this.coldStartDiagnostic);if(s!==void 0){let a=gbe(i);throw new Mh(a.status,a.code,`${a.message}
1732
+ CREATE TABLE provider_revision (singleton INTEGER PRIMARY KEY CHECK(singleton=1), revision INTEGER NOT NULL);`;function QBe(t,e){if(t.exec(e==="provider"?kVr:TVr),e!=="provider"){let n=e==="user"?"user":"project";t.prepare("INSERT INTO scope_owners(owner_key, kind, root, profile_id) VALUES (?, ?, ?, NULL)").run(n,e,"")}else t.prepare("INSERT INTO provider_revision(singleton, revision) VALUES (1, 0)").run();t.exec("PRAGMA user_version = 1")}var Rfn=new Map,cgt=/^[a-z0-9]+(?:-[a-z0-9]+)*-[0-9a-f]{8}$/;function lgt(t,e,n){t.prepare("UPDATE scope_owners SET root=? WHERE owner_key=?").run(n,e)}function RVr(t){return Number(t.prepare("PRAGMA user_version").get().user_version)}function ugt(t){gH(t)&&agt(t,384);for(let e of["-wal","-shm"])gH(`${t}${e}`)&&agt(`${t}${e}`,384)}function mbe(t){return gH(t.path)}function pgt(t){if(t.kind==="project")return[PR(t.root,FB)];if(t.kind==="provider")return[PR(t.root,"anthropic-subscriptions.json"),PR(t.root,"openai-codex-subscriptions.json"),PR(t.root,"provider-rotation.json")];let e=[PR(t.root,MB),PR(t.root,FB),PR(t.root,"profile-defaults.json")],n=PR(t.root,kie);if(gH(n))for(let i of IVr(n,{withFileTypes:!0}))i.isDirectory()&&cgt.test(i.name)&&e.push(PR(n,i.name,"profile.json"),PR(n,i.name,MB),PR(n,i.name,FB));return e}function dgt(t){let e=t.kind==="user"?hM(t.root):t.kind==="project"?Rie(t.root):zj(t.root);mbe(e)||(Ofn(e.root,{recursive:!0,mode:448}),FC(PR(e.root,".init.lock"),()=>{if(mbe(e))return;let n=pgt(e).find(gH);if(n!==void 0)throw new Error(`legacy scoped state exists at ${n}; crtr was updated and \`crtr sys daemon restart\` converts local state`);fgt(e,i=>{QBe(i,e.kind),e.kind!=="provider"&&lgt(i,e.kind,e.root)})}))}function c8(t){let e=Rfn.get(t.path);if(e!==void 0)return e;gH(t.path)||dgt(t);let n=new Nfn(t.path);n.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON;");let i=RVr(n);if(i===0)throw n.close(),new Error(`scoped SQL store is uninitialized: ${t.path}; crtr was updated and \`crtr sys daemon restart\` converts local state`);if(i>1)throw n.close(),new Error(`scoped SQL store ${t.path} uses unsupported schema version ${i}`);if(i!==1)throw n.close(),new Error(`scoped SQL store ${t.path} requires an explicit conversion`);return ugt(t.path),Rfn.set(t.path,n),n}function fgt(t,e){if(gH(t.path))throw new Error(`scoped SQL store already exists: ${t.path}`);if(Ofn(t.root,{recursive:!0,mode:448}),!PVr(t.root).isDirectory())throw new Error(`scoped SQL root is not a directory: ${t.root}`);agt(t.root,448),DVr(t.path,"",{mode:384});let n=new Nfn(t.path);try{n.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON; BEGIN IMMEDIATE;"),e(n),n.exec("COMMIT")}catch(i){try{n.exec("ROLLBACK")}catch{}throw i}finally{ugt(t.path),n.close()}}function hbe(t,e){let n=c8(t);if(n.isTransaction)return e(n);n.exec("BEGIN IMMEDIATE");try{let i=e(n);return n.exec("COMMIT"),ugt(t.path),i}catch(i){try{n.exec("ROLLBACK")}catch{}throw i}}function NVr(t){return hM(t)}function OVr(t,e){return{profileId:t.id,manifest:{schema_version:1,name:t.name,projects:e,home:t.home,paused_at:t.paused_at,...t.default_kind===null?{}:{default_kind:t.default_kind},...Object.keys(JSON.parse(t.metadata_json)).length===0?{}:{metadata:JSON.parse(t.metadata_json)},created_at:t.created_at,last_used_at:t.last_used_at}}}function MVr(t,e){let n=t.prepare("SELECT id, name, created_at, last_used_at, paused_at, home, default_kind, metadata_json FROM profiles WHERE id=?").get(e);if(!n)return null;let i=t.prepare("SELECT path, memory FROM profile_projects WHERE profile_id=? ORDER BY position").all(e);return OVr(n,i)}function Mfn(t){let e=c8(NVr(t));return e.prepare("SELECT id FROM profiles ORDER BY rowid").all().map(({id:i})=>MVr(e,i)).filter(Boolean)}var Bfn=/^[a-z0-9]+(?:-[a-z0-9]+)*-[0-9a-f]{8}$/,UVr="root-00000000";function $fn(){return hgt(GP(),kie)}function jVr(t){if(!Bfn.test(t))throw o8(`invalid profile id: ${t}`,{received:t,next:"Profile ids look like <slug>-<8-hex-chars> (as printed by `crtr profile new`). Pass an exact id or a profile name, not a raw path."})}function WVr(t){let e=$fn(),n=mgt(e),i=Ffn(e)?Lfn(e):n,s=Ffn(t)?Lfn(t):mgt(i,BVr(n,mgt(t)));if(s!==i&&!s.startsWith(i+$Vr))throw o8(`profile path escapes the profiles root: ${t}`)}function ggt(t){jVr(t);let e=hgt($fn(),t);return WVr(e),e}function Ufn(t){return hgt(ggt(t),"memory")}function QVr(t,e){let n=typeof e.home=="string"&&e.home!==""?e.home:null;return{...e,home:t===UVr?n:n??e.projects[0]?.path??null,paused_at:typeof e.paused_at=="string"&&e.paused_at!==""?e.paused_at:null}}function qVr(){return{entries:Mfn(GP()).map(({profileId:t,manifest:e})=>({profileId:t,manifest:QVr(t,e)})),unreadableIds:[]}}function qBe(){return qVr().entries}function GVr(t){let e=qBe(),n=VVr(e,t);return n?{kind:"resolved",entry:n}:{kind:"absent"}}function VVr(t,e){if(Bfn.test(e)){let i=t.find(s=>s.profileId===e);if(i!==void 0)return i}let n=t.filter(i=>i.manifest.name===e);if(n.length===1)return n[0];if(n.length>1){let i=n.map(s=>s.profileId);throw afn(`profile name "${e}" matches ${i.length} profiles: ${i.join(", ")}`,{received:e,candidates:i,next:`Re-run with one exact profile id: ${i.join(", ")}.`})}return null}function zVr(t,e){let n=t.map(i=>`${i.profileId} (${i.manifest.name})`);return Hht(`profile not found: ${e}`,{received:e,available:n,next:n.length>0?`Re-run with one of the profiles on this host: ${n.join(", ")} \u2014 or create one with \`crtr profile new --name <name>\`.`:"No profiles exist on this host yet \u2014 create one with `crtr profile new --name <name>`."})}function Nie(t){let e=GVr(t);if(e.kind==="resolved")return e.entry;throw zVr(qBe(),t)}var YVr="content",jfn=new Map;function XVr(t,e){return`${t}\0${e??""}`}function GP(){return Qfn(Wfn(),i8)}function ZVr(t,e){if(!HVr(t)||Pie(t)===Pie(e))return!1;try{return JVr(t).isDirectory()}catch{return!1}}function ezr(t=process.cwd()){return Gfn(t)[0]??null}function tzr(t,e){let n=[],i=Pie(Wfn()),s=qfn(t);for(;;){let a=Qfn(s,i8);if(ZVr(a,e)&&n.push(a),Pie(s)===i)return n;let u=KVr(s);if(u===s)return n;s=u}}function Gfn(t=process.cwd(),e=Smt()||null){return nzr(t,e).roots}function nzr(t,e){let n=qfn(t),i=XVr(n,e),s=jfn.get(i);if(s!==void 0)return s;let a=GP(),u=[{dir:n,memory:null}];if(e!==null&&e!=="")try{let{manifest:x}=Nie(e);for(let k of x.projects)u.push({dir:k.path,memory:k.memory})}catch{}let p=new Set,f=[],_=new Map;for(let x of u)for(let k of tzr(x.dir,a))p.has(k)||(p.add(k),f.push(k)),x.memory!==null&&!_.has(k)&&_.set(k,x.memory);let m=f.map(x=>({root:x,memory:_.get(x)??YVr})),b={roots:f,annotated:m};return jfn.set(i,b),b}function Vfn(t){return ezr(t)}function l8(t){return t==="builtin"?null:t==="user"?GP():Vfn()}function _gt(t){let e=l8(t);if(!e)throw o8(`no ${t} scope available \u2014 run \`crtr init\` here or use --scope user`);return e}import{join as wgt}from"node:path";import{join as Szr}from"node:path";import{request as rzr}from"node:http";import{request as izr}from"node:https";import{homedir as szr}from"node:os";import{join as Jfn}from"node:path";var Mh=class extends Error{status;code;details;constructor(e,n,i,s){super(i),this.name="ApiError",this.status=e,this.code=n,s!==void 0&&(this.details=s)}};function ygt(t){if(typeof t!="object"||t===null)return!1;let e=t.error;if(typeof e!="object"||e===null)return!1;let{code:n,message:i}=e;return typeof n=="string"&&typeof i=="string"}var Wo={healthz:()=>"/healthz",status:()=>"/v1/status",daemonRestart:()=>"/v1/daemon/restart",daemonMigrate:()=>"/v1/daemon/migrate",daemonAdmit:()=>"/v1/daemon/admit",nodes:()=>"/v1/nodes",reviveAll:()=>"/v1/nodes/revive-all",node:t=>`/v1/nodes/${t}`,nodeOutcome:t=>`/v1/nodes/${t}/outcome`,nodeOutcomeDelivery:t=>`/v1/nodes/${t}/outcome-delivery`,nodeSnapshot:t=>`/v1/nodes/${t}/snapshot`,nodeSubject:t=>`/v1/nodes/${t}/subject`,nodeSession:t=>`/v1/nodes/${t}/session`,nodeChatInventory:t=>`/v1/nodes/${t}/chat-inventory`,prospectiveChatInventory:()=>"/v1/prospective-chat-inventory",nodeTranscript:t=>`/v1/nodes/${t}/transcript`,nodeContext:t=>`/v1/nodes/${t}/context`,nodeArtifacts:t=>`/v1/nodes/${t}/artifacts`,nodeReports:t=>`/v1/nodes/${t}/reports`,nodeResult:t=>`/v1/nodes/${t}/result`,nodeJobs:t=>`/v1/nodes/${t}/jobs`,nodeJob:(t,e)=>`/v1/nodes/${t}/jobs/${e}`,nodeMessages:t=>`/v1/nodes/${t}/messages`,nodeInterrupt:t=>`/v1/nodes/${t}/interrupt`,nodeFork:t=>`/v1/nodes/${t}/fork`,nodeRevive:t=>`/v1/nodes/${t}/revive`,nodeRelaunchRoot:t=>`/v1/nodes/${t}/relaunch-root`,nodeBrokerSessionBound:t=>`/v1/nodes/${t}/broker/session-bound`,nodeBrokerSettle:t=>`/v1/nodes/${t}/broker/settle`,nodeBrokerParkComplete:t=>`/v1/nodes/${t}/broker/park-complete`,nodeBrokerParkActivity:t=>`/v1/nodes/${t}/broker/park-activity`,nodeMailClaim:t=>`/v1/nodes/${t}/mail/claim`,nodeMailAcknowledge:t=>`/v1/nodes/${t}/mail/acknowledge`,nodeBrokerModel:t=>`/v1/nodes/${t}/broker/model`,nodeBrokerExtensionState:t=>`/v1/nodes/${t}/broker/extension-state`,nodeBrokerGeneratedName:t=>`/v1/nodes/${t}/broker/generated-name`,nodeBrokerPersonaAck:t=>`/v1/nodes/${t}/broker/persona-ack`,brokerTurn:t=>`/v1/broker/${t}/turn`,brokerProviderRetry:t=>`/v1/broker/${t}/provider-retry`,brokerFault:t=>`/v1/broker/${t}/fault`,brokerRecovery:t=>`/v1/broker/${t}/recovery`,nodeFault:t=>`/v1/nodes/${t}/fault`,nodeClose:t=>`/v1/nodes/${t}/close`,nodeRecycle:t=>`/v1/nodes/${t}/recycle`,nodeDemote:t=>`/v1/nodes/${t}/demote`,nodePromote:t=>`/v1/nodes/${t}/promote`,nodeYield:t=>`/v1/nodes/${t}/yield`,nodeWait:t=>`/v1/nodes/${t}/wait`,nodeConfig:t=>`/v1/nodes/${t}/config`,nodeWorktreeClose:t=>`/v1/nodes/${t}/worktree/close`,nodeWorktreeAbandon:t=>`/v1/nodes/${t}/worktree/abandon`,quarantinedWorktrees:()=>"/v1/worktrees/quarantined",nodeAttach:t=>`/v1/nodes/${t}/attach`,focuses:()=>"/v1/focuses",focusByNode:()=>"/v1/focuses/by-node",focusByPane:()=>"/v1/focuses/by-pane",focus:t=>`/v1/focuses/${t}`,nodeSubscriptions:t=>`/v1/nodes/${t}/subscriptions`,nodeSubscription:(t,e)=>`/v1/nodes/${t}/subscriptions/${e}`,crons:()=>"/v1/crons",cron:t=>`/v1/crons/${t}`,cronPause:t=>`/v1/crons/${t}/pause`,cronResume:t=>`/v1/crons/${t}/resume`,cronRun:t=>`/v1/crons/${t}/run`,cronsPoke:()=>"/v1/crons/poke",canvasAttention:()=>"/v1/canvas/attention",canvasAttentionCounts:()=>"/v1/canvas/attention/counts",canvasHistorySearch:()=>"/v1/canvas/history/search",canvasHistoryGrep:()=>"/v1/canvas/history/grep",canvasHistoryRead:()=>"/v1/canvas/history/read",canvasHistoryStats:()=>"/v1/canvas/history/stats",canvasSnapshot:()=>"/v1/canvas/snapshot",canvasRoster:()=>"/v1/canvas/roster",canvasPrune:()=>"/v1/canvas/prune",humanReviews:()=>"/v1/human/reviews",humanReview:t=>`/v1/human/reviews/${t}`,humanReviewSubmit:t=>`/v1/human/reviews/${t}/submit`,humanReviewCancel:t=>`/v1/human/reviews/${t}/cancel`,humanReviewDocument:t=>`/v1/human/reviews/${t}/document`,humanReviewComments:t=>`/v1/human/reviews/${t}/comments`,humanReviewCommentEvents:t=>`/v1/human/reviews/${t}/comment-events`,humanReviewCommentRanges:t=>`/v1/human/reviews/${t}/comment-ranges`,humanComment:t=>`/v1/human/comments/${t}`,humanCommentEdit:t=>`/v1/human/comments/${t}/edit`,humanCommentResolve:t=>`/v1/human/comments/${t}/resolve`,humanCommentReopen:t=>`/v1/human/comments/${t}/reopen`,humanCommentDelete:t=>`/v1/human/comments/${t}/delete`,humanInbox:()=>"/v1/human/inbox",humanInboxTicket:t=>`/v1/human/inbox/${t}`,humanInboxRespond:t=>`/v1/human/inbox/${t}/respond`,humanInboxProgress:t=>`/v1/human/inbox/${t}/progress`,humanInboxResponse:t=>`/v1/human/inbox/${t}/response`,humanInboxCancel:t=>`/v1/human/inbox/${t}/cancel`,humanInboxFeedbackResolve:(t,e)=>`/v1/human/inbox/${t}/feedback-comments/${e}/resolve`,humanRequests:()=>"/v1/human/requests",humanRequest:t=>`/v1/human/requests/${t}`,humanRequestReplace:t=>`/v1/human/requests/${t}/replace`,humanRequestRespond:t=>`/v1/human/requests/${t}/respond`,humanRequestDismiss:t=>`/v1/human/requests/${t}/dismiss`,humanRequestCancel:t=>`/v1/human/requests/${t}/cancel`,profiles:()=>"/v1/profiles",profile:t=>`/v1/profiles/${t}`,profilePause:t=>`/v1/profiles/${t}/pause`,profileResume:t=>`/v1/profiles/${t}/resume`,profileMetadata:t=>`/v1/profiles/${t}/metadata`,modelAuths:()=>"/v1/model-auth",modelAuth:t=>`/v1/model-auth/${t}`,filePeek:()=>"/v1/files/peek",memoryResolve:()=>"/v1/memory/resolve"};function GBe(t){return typeof t=="string"&&t!==""&&t!=="."&&t!==".."&&!/[\\/\0]/u.test(t)&&Buffer.byteLength(t,"utf8")<=128}function zfn(t){return typeof t=="string"&&t!==""&&t!=="."&&t!==".."&&/^[A-Za-z0-9._~-]+$/u.test(t)&&Buffer.byteLength(t,"utf8")<=128}function Hfn(t){return typeof t=="string"&&t!==""&&t!=="."&&t!==".."&&!/[\\/\0\s?#%]/u.test(t)&&Buffer.byteLength(t,"utf8")<=128}var ozr=".crouter",azr="crtrd.sock";function czr(){let t=Fj(),e=t!==void 0&&t!==""?t:Jfn(szr(),ozr,"canvas");return Jfn(e,azr)}var lzr=3e4,uzr=1e4,pzr=200;async function VBe({windowMs:t,probe:e,initialError:n,pollIntervalMs:i=pzr,retry:s=()=>!0,now:a=Date.now,sleep:u=dzr}){let p=a()+t,f=n;for(;;){let _=p-a();if(_<=0)throw f??new Error("crtrd availability window expired without a probe failure");try{await e(_);return}catch(b){if(f=b,!s(b))throw b}let m=p-a();if(m<=0)throw f;await u(Math.min(i,m))}}var LB=class t{socketPath;baseUrl;headers;autostart;timeoutMs;onColdSocket;coldStartDiagnostic;coldStartPollWindowMs;coldStartAttempted=!1;constructor(e){let n=e.socketPath!==void 0&&e.socketPath!=="",i=e.baseUrl!==void 0&&e.baseUrl!=="";if(n===i)throw new TypeError("CrtrClient requires exactly one of socketPath | baseUrl");n&&(this.socketPath=e.socketPath),i&&(this.baseUrl=new URL(e.baseUrl)),this.headers={...e.headers},this.autostart=e.autostart??n,this.timeoutMs=e.timeoutMs??lzr,e.onColdSocket!==void 0&&(this.onColdSocket=e.onColdSocket),e.coldStartDiagnostic!==void 0&&(this.coldStartDiagnostic=e.coldStartDiagnostic),this.coldStartPollWindowMs=e.coldStartPollWindowMs??uzr}static forLocalSocket(e){return new t({socketPath:czr(),autostart:!0,...e})}healthz(){return this.request("GET",Wo.healthz())}async probeHealthz(e){let n=await this.transport("GET",Wo.healthz(),void 0,void 0,e);if(n.status===503)try{let i=JSON.parse(n.text);if(typeof i.startup_blocked=="string")return i}catch{}return Kfn(n)}status(){return this.request("GET",Wo.status())}restartDaemon(){return this.request("POST",Wo.daemonRestart())}admitDaemon(){return this.request("POST",Wo.daemonAdmit())}migrateState(e){return this.request("POST",Wo.daemonMigrate(),e)}createNode(e){return this.request("POST",Wo.nodes(),e)}listNodes(e){return this.request("GET",nA(Wo.nodes(),e))}getNode(e){return this.request("GET",Wo.node(this.nodePath(e)))}getNodeOutcome(e,{waitSeconds:n}={}){if(n!==void 0&&(!Number.isInteger(n)||n<0||n>25))throw new RangeError("waitSeconds must be an integer between 0 and 25");return this.request("GET",nA(Wo.nodeOutcome(this.nodePath(e)),{wait:n}),void 0,(n??0)*1e3+this.timeoutMs)}registerOutcomeDelivery(e,n){return this.request("PUT",Wo.nodeOutcomeDelivery(this.nodePath(e)),n)}getOutcomeDelivery(e){return this.request("GET",Wo.nodeOutcomeDelivery(this.nodePath(e)))}async disarmOutcomeDelivery(e){await this.request("DELETE",Wo.nodeOutcomeDelivery(this.nodePath(e)))}listBashJobs(e){return this.request("GET",Wo.nodeJobs(this.nodePath(e)))}stopBashJob(e,n){return this.request("DELETE",Wo.nodeJob(this.nodePath(e),this.jobPath(n)))}sendMessage(e,n){return this.request("POST",Wo.nodeMessages(this.nodePath(e)),n)}interruptNode(e){return this.request("POST",Wo.nodeInterrupt(this.nodePath(e)),{})}pushReport(e,n){return this.request("POST",Wo.nodeReports(this.nodePath(e)),n)}submitResult(e,n){return this.request("POST",Wo.nodeResult(this.nodePath(e)),n)}forkNode(e){return this.request("POST",Wo.nodeFork(this.nodePath(e)),{})}reviveNode(e,n){return this.request("POST",Wo.nodeRevive(this.nodePath(e)),n??{})}relaunchRoot(e){return this.request("POST",Wo.nodeRelaunchRoot(this.nodePath(e)),{})}bindBrokerSession(e,n){return this.request("POST",Wo.nodeBrokerSessionBound(this.nodePath(e)),n)}settleBroker(e,n){return this.request("POST",Wo.nodeBrokerSettle(this.nodePath(e)),n)}completeBrokerPark(e,n){return this.request("POST",Wo.nodeBrokerParkComplete(this.nodePath(e)),n)}recordBrokerParkActivity(e,n){return this.request("POST",Wo.nodeBrokerParkActivity(this.nodePath(e)),n)}claimNodeMail(e,n){return this.request("POST",Wo.nodeMailClaim(this.nodePath(e)),n)}acknowledgeNodeMail(e,n){return this.request("POST",Wo.nodeMailAcknowledge(this.nodePath(e)),n)}recordBrokerTurn(e,n){return this.request("POST",Wo.brokerTurn(this.nodePath(e)),n)}mutateBrokerProviderRetry(e,n){return this.request("POST",Wo.brokerProviderRetry(this.nodePath(e)),n)}mutateBrokerFault(e,n){return this.request("POST",Wo.brokerFault(this.nodePath(e)),n)}getBrokerRecovery(e,n){return this.request("GET",`${Wo.brokerRecovery(this.nodePath(e))}?expected_execution_id=${encodeURIComponent(n)}`)}recordNodeFault(e,n){return this.request("POST",Wo.nodeFault(this.nodePath(e)),n)}clearNodeFault(e,n={}){let i=new URLSearchParams;n.link!==void 0&&i.set("link",n.link),n.preserve_episode!==void 0&&i.set("preserve_episode",String(n.preserve_episode));let s=i.size===0?"":`?${i.toString()}`;return this.request("DELETE",`${Wo.nodeFault(this.nodePath(e))}${s}`)}commitBrokerModel(e,n){return this.request("POST",Wo.nodeBrokerModel(this.nodePath(e)),n)}brokerExtensionState(e){return this.request("GET",Wo.nodeBrokerExtensionState(this.nodePath(e)))}commitBrokerGeneratedName(e,n){return this.request("POST",Wo.nodeBrokerGeneratedName(this.nodePath(e)),n)}commitBrokerPersonaAck(e,n){return this.request("POST",Wo.nodeBrokerPersonaAck(this.nodePath(e)),n)}closeNode(e,n){return this.request("POST",Wo.nodeClose(this.nodePath(e)),n??{})}recycleNode(e){return this.request("POST",Wo.nodeRecycle(this.nodePath(e)),{})}demoteNode(e){return this.request("POST",Wo.nodeDemote(this.nodePath(e)),{})}promoteNode(e,n){return this.request("POST",Wo.nodePromote(this.nodePath(e)),n)}yieldNode(e,n){return this.request("POST",Wo.nodeYield(this.nodePath(e)),n)}waitNode(e,n){return this.request("POST",Wo.nodeWait(this.nodePath(e)),n)}patchConfig(e,n){return this.request("PATCH",Wo.nodeConfig(this.nodePath(e)),n)}closeWorktree(e){return this.request("POST",Wo.nodeWorktreeClose(this.nodePath(e)),{})}abandonWorktree(e,n){return this.request("POST",Wo.nodeWorktreeAbandon(this.nodePath(e)),n)}listQuarantinedWorktrees(){return this.request("GET",Wo.quarantinedWorktrees())}subscribe(e,n){return this.request("POST",Wo.nodeSubscriptions(this.nodePath(e)),n)}listFocuses(){return this.request("GET",Wo.focuses())}focusOf(e){return this.request("GET",nA(Wo.focusByNode(),{node_id:e}))}focusByPane(e){return this.request("GET",nA(Wo.focusByPane(),{pane:e}))}registerFocus(e){return this.request("POST",Wo.focuses(),e)}async setFocusPane(e,n){await this.request("PATCH",Wo.focus(e),n)}async closeFocus(e){await this.request("DELETE",Wo.focus(e))}async unsubscribe(e,n){await this.request("DELETE",Wo.nodeSubscription(this.nodePath(e),this.nodePath(n)))}armCron(e){return this.request("POST",Wo.crons(),e)}listCrons(e){return this.request("GET",nA(Wo.crons(),e))}showCron(e,n){return this.request("GET",nA(Wo.cron(this.cronPath(e)),n))}pauseCron(e,n){return this.request("POST",nA(Wo.cronPause(this.cronPath(e)),n),{})}resumeCron(e,n){return this.request("POST",nA(Wo.cronResume(this.cronPath(e)),n),{})}runCron(e,n){return this.request("POST",nA(Wo.cronRun(this.cronPath(e)),n),{})}async cancelCron(e,n){await this.request("DELETE",nA(Wo.cron(this.cronPath(e)),n))}pokeCrons(){return this.request("POST",Wo.cronsPoke(),{})}ensureAttach(e,n){return this.request("POST",Wo.nodeAttach(this.nodePath(e)),n??{})}getReports(e,n){return this.request("GET",nA(Wo.nodeReports(this.nodePath(e)),n))}getTranscript(e,n){return this.request("GET",nA(Wo.nodeTranscript(this.nodePath(e)),n))}getSnapshot(e){return this.request("GET",Wo.nodeSnapshot(this.nodePath(e)))}nodeSubject(e){return this.request("GET",Wo.nodeSubject(this.nodePath(e)))}getNodeMessages(e,n){return this.request("GET",nA(Wo.nodeMessages(this.nodePath(e)),n))}getSession(e){return this.request("GET",Wo.nodeSession(this.nodePath(e)))}getChatInventory(e){return this.request("GET",Wo.nodeChatInventory(this.nodePath(e)))}getProspectiveChatInventory(e){return this.request("GET",nA(Wo.prospectiveChatInventory(),e))}getArtifacts(e,n){return this.request("GET",nA(Wo.nodeArtifacts(this.nodePath(e)),n))}getContext(e){return this.request("GET",Wo.nodeContext(this.nodePath(e)))}peekFile(e){return this.request("GET",nA(Wo.filePeek(),{path:e}))}resolveMemoryDoc(e,n){return this.request("GET",nA(Wo.memoryResolve(),{name:e,node:n}))}ensureProfile(e,n){return this.request("PUT",Wo.profile(e),n??{})}listProfiles(){return this.request("GET",Wo.profiles())}getProfile(e){return this.request("GET",Wo.profile(e))}pauseProfile(e){return this.request("POST",Wo.profilePause(e),{})}resumeProfile(e){return this.request("POST",Wo.profileResume(e),{})}updateProfileMetadata(e,n){return this.request("PATCH",Wo.profileMetadata(e),n)}deleteProfile(e,n){return this.request("DELETE",Wo.profile(e),n)}listModelAuth(){return this.request("GET",Wo.modelAuths())}installCredential(e,n){return this.request("PUT",Wo.modelAuth(e),n)}removeCredential(e){return this.request("DELETE",Wo.modelAuth(e))}createReview(e){return this.request("POST",Wo.humanReviews(),e)}listReviews(e){return this.request("GET",nA(Wo.humanReviews(),e))}getReview(e){return this.request("GET",Wo.humanReview(this.reviewPath(e)))}submitReview(e){return this.request("POST",Wo.humanReviewSubmit(this.reviewPath(e)),{})}cancelReview(e,n={}){return this.request("POST",Wo.humanReviewCancel(this.reviewPath(e)),n)}getReviewDocumentBase(e){return this.request("GET",Wo.humanReviewDocument(this.reviewPath(e)))}createReviewComment(e,n){let i=e===void 0?"self":this.reviewPath(e);return this.request("POST",Wo.humanReviewComments(i),n)}listReviewComments(e,n){let i=e===void 0?"self":this.reviewPath(e);return this.request("GET",nA(Wo.humanReviewComments(i),n))}readReviewCommentEvents(e,n){return this.request("GET",nA(Wo.humanReviewCommentEvents(this.reviewPath(e)),n))}updateReviewCommentRanges(e,n){return this.request("POST",Wo.humanReviewCommentRanges(this.reviewPath(e)),n)}getReviewComment(e){return this.request("GET",Wo.humanComment(this.commentPath(e)))}editReviewComment(e,n){return this.request("POST",Wo.humanCommentEdit(this.commentPath(e)),n)}resolveReviewComment(e,n={}){return this.request("POST",Wo.humanCommentResolve(this.commentPath(e)),n)}reopenReviewComment(e,n={}){return this.request("POST",Wo.humanCommentReopen(this.commentPath(e)),n)}deleteReviewComment(e,n={}){return this.request("POST",Wo.humanCommentDelete(this.commentPath(e)),n)}listHumanInbox(){return this.request("GET",Wo.humanInbox())}getHumanInboxPage(e){return this.request("GET",Wo.humanInboxTicket(this.ticketId(e)))}getInboxHistory(e){if(e===void 0)return this.request("GET",Wo.humanInbox()+"/history");if(typeof e!="string"||e==="")throw new TypeError(`invalid node id: ${JSON.stringify(e)}`);return this.request("GET",nA(Wo.humanInbox()+"/history",{node_id:e}))}respondHumanInboxPage(e,n){return this.request("POST",Wo.humanInboxRespond(this.ticketId(e)),n)}postInboxProgress(e,n){return this.request("POST",Wo.humanInboxProgress(this.ticketId(e)),{responses:n})}getInboxResponse(e){return this.request("GET",Wo.humanInboxResponse(this.ticketId(e)))}cancelHumanInboxTicket(e,n){return this.request("POST",Wo.humanInboxCancel(this.ticketId(e)),n??{})}createHumanRequest(e){return this.request("POST",Wo.humanRequests(),e)}getHumanRequest(e){return this.request("GET",Wo.humanRequest(this.requestPath(e)))}replaceHumanRequest(e,n){return this.request("POST",Wo.humanRequestReplace(this.requestPath(e)),n)}respondHumanRequest(e,n){return this.request("POST",Wo.humanRequestRespond(this.requestPath(e)),n)}dismissHumanRequest(e,n={}){return this.request("POST",Wo.humanRequestDismiss(this.requestPath(e)),n)}cancelHumanRequest(e,n={}){return this.request("POST",Wo.humanRequestCancel(this.requestPath(e)),n)}resolvePageFeedbackComment(e,n,i){if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(n))throw new TypeError(`invalid feedback comment id: ${JSON.stringify(n)}`);return this.request("POST",Wo.humanInboxFeedbackResolve(this.ticketId(e),n),{node_id:i})}async dashboard(e){let n=e?.under!==void 0?{under:e.under}:void 0,[i,s]=await Promise.all([this.listNodes(n),this.status()]);return{nodes:i,counts:s.node_counts,generated_at:new Date().toISOString()}}attention(){return this.request("GET",Wo.canvasAttention())}attentionCounts(e){let n={node_ids:e};return this.request("POST",Wo.canvasAttentionCounts(),n)}historySearch(e){return this.request("POST",Wo.canvasHistorySearch(),e)}historyGrep(e){return this.request("POST",Wo.canvasHistoryGrep(),e)}historyRead(e){return this.request("GET",nA(Wo.canvasHistoryRead(),e))}historyStats(e){return this.request("POST",Wo.canvasHistoryStats(),e)}canvasSnapshot(){return this.request("GET",Wo.canvasSnapshot())}canvasRoster(){return this.request("GET",Wo.canvasRoster())}prune(e){return this.request("POST",Wo.canvasPrune(),e)}async request(e,n,i,s){return Kfn(await this.send(e,n,i,void 0,s))}async send(e,n,i,s,a){try{return await this.transport(e,n,i,s,a)}catch(u){if(this.isColdSocketError(u))try{return await this.handleColdSocket(u),await this.transport(e,n,i,s,a)}catch(p){throw gbe(p)}if(this.isInterruptedSocketError(u))return await this.rideOutInterruptedRequest(e,n,i,s,a);throw gbe(u)}}nodePath(e){if(!GBe(e))throw new Mh(400,"invalid_node_id",`invalid node id: ${JSON.stringify(e)}`);return e}jobPath(e){if(!zfn(e))throw new Mh(400,"invalid_job_id",`invalid background job id: ${JSON.stringify(e)}`);return e}cronPath(e){if(!Hfn(e))throw new Mh(400,"invalid_cron_id",`invalid cron id: ${JSON.stringify(e)}`);return e}requestPath(e){if(!GBe(e))throw new Mh(400,"invalid_request_id",`invalid request id: ${JSON.stringify(e)}`);return e}ticketId(e){if(!/^[a-f0-9]{64}$/.test(e))throw new TypeError(`invalid inbox ticket id: ${JSON.stringify(e)}`);return e}reviewPath(e){if(!GBe(e))throw new Mh(400,"invalid_review_id",`invalid review id: ${JSON.stringify(e)}`);return e}commentPath(e){if(!/^[a-f0-9]{32}$/.test(e))throw new Mh(400,"invalid_comment_id",`invalid comment id: ${JSON.stringify(e)}`);return e}transport(e,n,i,s,a=this.timeoutMs){let p=this.baseUrl?.protocol==="https:"?izr:rzr,f=i===void 0?void 0:JSON.stringify(i),_={accept:"application/json",...this.headers,...s};f!==void 0&&(_["content-type"]="application/json",_["content-length"]=String(Buffer.byteLength(f)));let m={method:e,path:n,headers:_,timeout:a};return this.socketPath!==void 0?m.socketPath=this.socketPath:this.baseUrl!==void 0&&(m.protocol=this.baseUrl.protocol,m.hostname=this.baseUrl.hostname,this.baseUrl.port!==""&&(m.port=this.baseUrl.port)),new Promise((b,x)=>{let k=p(m,I=>{let C=[];I.on("data",P=>C.push(P)),I.on("end",()=>{let P={};for(let[R,F]of Object.entries(I.headers))F!==void 0&&(P[R]=Array.isArray(F)?F.join(", "):F);b({status:I.statusCode??0,text:Buffer.concat(C).toString("utf8"),headers:P})}),I.on("error",x)});k.on("error",x),k.on("timeout",()=>{k.destroy(Object.assign(new Error("request timed out"),{code:"ETIMEDOUT"}))}),f!==void 0&&k.write(f),k.end()})}isColdSocketError(e){if(this.socketPath===void 0)return!1;let n=e?.code;return n==="ECONNREFUSED"||n==="ENOENT"||n==="ENOTSOCK"}isInterruptedSocketError(e){if(this.socketPath===void 0)return!1;let n=e?.code;return n==="ECONNRESET"||n==="EPIPE"}async rideOutInterruptedRequest(e,n,i,s,a){try{await this.awaitAvailability()}catch(u){throw gbe(u)}if(e!=="GET"&&e!=="HEAD")throw new Mh(503,"daemon_request_interrupted",`crtrd connection ended before this ${e} response; the request may or may not have been applied.`);try{return await this.transport(e,n,i,s,a)}catch(u){throw gbe(u)}}async awaitAvailability(e){await VBe({windowMs:this.coldStartPollWindowMs,initialError:e,probe:async n=>{let i=await this.transport("GET",Wo.healthz(),void 0,void 0,n);if(!(i.status>=200&&i.status<300)){try{if(typeof JSON.parse(i.text).startup_blocked=="string")return}catch{}throw new Mh(i.status,"daemon_health_unavailable",`crtrd health check returned HTTP ${i.status}: ${i.text.slice(0,500)}`)}}})}async handleColdSocket(e){let n=this.autostart&&this.onColdSocket!==void 0&&!this.coldStartAttempted;n&&(this.coldStartAttempted=!0,await this.onColdSocket());try{await this.awaitAvailability(e)}catch(i){if(n){let s=fzr(this.coldStartDiagnostic);if(s!==void 0){let a=gbe(i);throw new Mh(a.status,a.code,`${a.message}
1733
1733
  ${s}`)}}throw i}}};function nA(t,e){if(e===void 0)return t;let n=new URLSearchParams;for(let[s,a]of Object.entries(e))a!=null&&n.set(s,String(a));let i=n.toString();return i===""?t:`${t}?${i}`}function Kfn(t){let e=t.status>=200&&t.status<300,n=t.text.trim(),i;if(n!=="")try{i=JSON.parse(n)}catch{if(e)return;throw new Mh(t.status,"invalid_response",t.text.slice(0,500))}if(e)return i;throw ygt(i)?new Mh(t.status,i.error.code,i.error.message,i.error.details):new Mh(t.status,"internal",`request failed with status ${t.status}`)}function gbe(t){if(t instanceof Mh)return t;let e=t?.code,n=t instanceof Error?t.message:String(t);return e==="ECONNREFUSED"||e==="ENOENT"||e==="ENOTSOCK"?new Mh(503,"daemon_unavailable",`crtrd is not reachable: ${n}`):e==="ETIMEDOUT"?new Mh(504,"request_timeout",`crtrd request timed out: ${n}`):new Mh(503,"transport_error",n)}function dzr(t){return new Promise(e=>setTimeout(e,t))}function fzr(t){if(t!==void 0)try{return t()}catch{return}}var mzr="crtr-context",hzr="crtr-situational-context",gzr="crtr-context-nudge",_zr="crtr-review-boundary";var Yfn="Provider credentials were just updated (a new login landed). Your previous turn stopped on a provider authentication failure. Continue from where you left off and retry the work that failed.",Xfn="The network connection is back online. Your previous turn stopped on a connection error (the network was down). Continue from where you left off and retry the work that failed.",Zfn="Your previous turn stopped on a provider fault. Continue from where you left off and retry the work that failed.";function yzr(t){switch(t){case gzr:return"context-nudge";case mzr:return"bearings";case _zr:return"review-boundary";case hzr:return"situational";default:return}}var zBe=/\s+([A-Za-z_:][A-Za-z0-9_:.-]*)\s*=\s*(?:"([^"]*)"|'([^']*)')/gy;function Agt(t){return t.replace(/&(?:amp|lt|gt|quot|apos);/g,e=>({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&apos;":"'"})[e])}function bgt(t){let e={};zBe.lastIndex=0;let n=0;for(;n<t.length&&!/^\s*$/.test(t.slice(n));){zBe.lastIndex=n;let i=zBe.exec(t);if(i===null)return null;let[,s,a,u]=i;if(s===void 0||Object.hasOwn(e,s))return null;e[s]=Agt(a??u??""),n=zBe.lastIndex}return e}function vgt(t){return typeof t.content=="string"?t.content:Array.isArray(t.content)?t.content.filter(e=>typeof e=="object"&&e!==null&&e.type==="text"&&typeof e.text=="string").map(e=>e.text).join(""):""}function bzr(t){let e=[],n=/<from\b([^>]*)>([\s\S]*?)<\/from>/g;for(let i of t.matchAll(n)){let s=bgt(i[1]??"");if(s?.id===void 0)continue;let a=[],u=i[2]??"",p=/<entry\b([^>]*)>([\s\S]*?)<\/entry>/g;for(let _ of u.matchAll(p)){let m=bgt(_[1]??"");if(m?.kind===void 0)continue;let b=m.disposition==="human-answer"||m.disposition==="human-canceled"?m.disposition:"report";a.push({kind:m.kind,disposition:b,body:Agt(_[2]??""),...m.ref===void 0?{}:{ref:m.ref}})}let f=s.updates===void 0?Number.NaN:Number(s.updates);e.push({id:s.id,updates:Number.isFinite(f)?f:a.length,finished:s.finished==="true"||a.some(_=>_.kind==="final"),entries:a})}return e}function Azr(t,e,n,i){return{kind:t,facts:e,body:n,senders:i}}function vzr(t){let e=/^<runtime\b([^>]*)>/.exec(t);if(e===null||!t.endsWith("</runtime>"))return null;let n=bgt(e[1]??"");if(n?.kind===void 0)return null;let i=t.slice(e[0].length,-10),{kind:s,...a}=n,u=Object.freeze(a),p=s.includes(":")?Agt(i):i;return Azr(s,u,p,s==="inbox"?bzr(p):[])}function HBe(t){let e=vgt(t),n=vzr(e);if(n!==null)return n;if(t.role!=="custom")return null;let i=yzr(t.customType);return i===void 0?null:{kind:i,facts:Object.freeze({}),body:e,senders:[]}}var tNs=256*1024;var Hj=class extends s8{payload;constructor(e,n=IR.USAGE){super(e.error,e.message,n,{...e}),this.name="InputError",this.payload=e}};var xzr={400:"invalid_request",404:"not_found",409:"conflict",422:"unprocessable",503:"daemon_unavailable"};function emn(t,e){if(t.code==="daemon_restarting")return new s8("daemon_restarting",t.message,IR.NETWORK,{next:"crtrd is now on the new generation \u2014 retry the command."});if(t.status===503||t.code==="daemon_unavailable")return new s8("daemon_unavailable",t.message,IR.NETWORK,{next:"Start it with `crtr sys daemon start`, then retry."});let n=t.details,i=n&&typeof n.error=="string"&&typeof n.message=="string"&&typeof n.next=="string"?n:{error:xzr[t.status]??t.code,message:t.message,next:e??(t.status>=500?"This is a crtr bug, not a bad call. Retry; if it persists, report it (the daemon log holds the full cause).":t.status===404?"List nodes with `crtr node inspect list`.":"Inspect the error and adjust the call. See -h for the schema.")};return new Hj(i,wzr(i.error,t.status))}function wzr(t,e){return t==="not_found"||e===404?IR.NOT_FOUND:t==="ambiguous"?IR.AMBIGUOUS:IR.USAGE}function Ezr(t){return Szr(t,ifn,sfn)}function tmn(t){return hH(Ezr(t))}import{join as Czr}from"node:path";var Tzr=2e3;function nmn(t,e){return Czr(t,"tmp",`${e}.swap.lock`)}function rmn(t,e){let n=WBe(nmn(t,e));return n!==null&&n!==process.pid}function imn(t,e){Pfn(nmn(t,e),Tzr)}import{createHash as kzr}from"node:crypto";function xgt(t,e){let n=t.prepare("SELECT kind, root, profile_id FROM scope_owners WHERE owner_key = ?").get(e.key);if(!n)throw new Error(`scoped SQL owner is missing: ${e.key}`);if(n.kind!==e.kind||n.root!==e.root||(e.profileId??null)!==n.profile_id)throw new Error(`scoped SQL owner does not match its root: ${e.key}`)}function Izr(t){return t===void 0?"absent":kzr("sha256").update(t.raw_json).digest("hex")}function Pzr(t,e){return t.prepare("SELECT raw_json FROM scope_settings WHERE owner_key = ?").get(e.key)}function smn(t){let e=c8(t.store);xgt(e,t);let n=Pzr(e,t);return{revision:Izr(n),settings:n===void 0?null:JSON.parse(n.raw_json)}}function JBe(t){return smn(t).settings}function omn(t,e){return hbe(t.store,n=>{xgt(n,t);let i=n.prepare("SELECT raw_json FROM scope_settings WHERE owner_key = ?").get(t.key),s=e(i?JSON.parse(i.raw_json):{});return n.prepare("INSERT INTO scope_settings(owner_key, raw_json) VALUES (?, ?) ON CONFLICT(owner_key) DO UPDATE SET raw_json=excluded.raw_json").run(t.key,JSON.stringify(s.next)),s.value})}function amn(t){let e=c8(t.store);xgt(e,t);let n=e.prepare("SELECT last_self_check, active_canvas FROM scope_bookkeeping WHERE owner_key = ?").get(t.key),i=Object.fromEntries(e.prepare("SELECT name, last_updated FROM scope_marketplaces WHERE owner_key = ?").all(t.key).map(a=>[a.name,a.last_updated===null?{}:{last_updated:a.last_updated}])),s=Object.fromEntries(e.prepare("SELECT name, last_updated, etag, checked_at FROM scope_plugins WHERE owner_key = ?").all(t.key).map(a=>[a.name,{...a.last_updated===null?{}:{last_updated:a.last_updated},...a.etag===null?{}:{etag:a.etag},...a.checked_at===null?{}:{checked_at:a.checked_at}}]));return{marketplaces:i,plugins:s,...n?.last_self_check===null||n===void 0?{}:{last_self_check:n.last_self_check},activeCanvas:n?.active_canvas??null}}function Dzr(t,e){let n=t==="user"?hM(e):void 0,i=n?JBe({store:n,key:"user",kind:"user",root:n.root}):hH(wgt(e,MB));return i&&i.plugins&&typeof i.plugins=="object"?i.plugins:{}}function Rzr(t,e,n){let i=Object.keys(e);return i.every(s=>n.has(s))?[]:i.filter(s=>!n.has(s)&&rmn(t,s))}function _be(t,e){let n=wgt(e,"plugins");if(!tgt(n))return[];let i=Dzr(t,e),s=cmn(t,n,i),a=Rzr(e,i,new Set(s.map(u=>u.name)));if(a.length===0)return s;for(let u of a)imn(e,u);return cmn(t,n,i)}function cmn(t,e,n){let i=[];for(let s of ngt(e)){let a=wgt(e,s),u=tmn(a);if(!u)continue;let p=n[s],f=typeof p?.version=="string"?p.version:u.version;i.push({name:s,scope:t,root:a,manifest:u,enabled:typeof p?.enabled=="boolean"?p.enabled:!0,sourceMarketplace:typeof p?.source_marketplace=="string"?p.source_marketplace:void 0,version:f})}return i}var Xmn=qu(Lgt(),1);import{chmodSync as Jmn,copyFileSync as dHr,existsSync as vH,mkdirSync as Kmn,readFileSync as fHr,readdirSync as mHr,statSync as hHr}from"node:fs";import{dirname as gHr,join as RR,relative as _Hr}from"node:path";var Hmn=qu(Lgt(),1);import{chmodSync as Umn,existsSync as a4e,fsyncSync as jmn,mkdirSync as cHr,openSync as Wmn,readFileSync as Qmn,renameSync as lHr,writeFileSync as qmn,closeSync as Gmn}from"node:fs";import{dirname as Vmn}from"node:path";var zmn={encoding:"utf-8",mode:384},uHr=3e4,pHr=5e3,BB=class{constructor(e,n=!1,i="{}"){this.path=e;this.durable=n;this.initialContent=i}path;durable;initialContent;readUnlocked(){return a4e(this.path)?Qmn(this.path,"utf-8"):void 0}ensureFile(){let e=Vmn(this.path);a4e(e)||cHr(e,{recursive:!0,mode:448}),a4e(this.path)||(qmn(this.path,this.initialContent,zmn),Umn(this.path,384))}async withLockAsync(e){this.ensureFile();let n,i,s=()=>{if(i)throw i};try{n=await Hmn.default.lock(this.path,{realpath:!1,retries:{retries:10,factor:2,minTimeout:100,maxTimeout:1e4,randomize:!0},stale:uHr,update:pHr,onCompromised:m=>{i=m}}),s();let a=a4e(this.path)?Qmn(this.path,"utf-8"):void 0,u=!1,p=m=>{if(u)throw new Error(`locked file was published twice: ${this.path}`);s();let b=`${this.path}.${process.pid}.${Date.now()}.tmp`;if(qmn(b,m,zmn),Umn(b,384),this.durable){let x=Wmn(b,"r");try{jmn(x)}finally{Gmn(x)}}if(lHr(b,this.path),this.durable){let x=Wmn(Vmn(this.path),"r");try{jmn(x)}finally{Gmn(x)}}u=!0},{result:f,next:_}=await e(a,s,p);return s(),_!==void 0&&p(_),s(),f}finally{if(n)try{await n()}catch{}}}};function c4e(t){return JSON.parse(fHr(t,"utf8"))}function yHr(t){return t.some(vH)}function bHr(t,e){let n=RR(t,".legacy-scoped-state");Kmn(n,{recursive:!0,mode:448}),Jmn(n,448);for(let i of e)if(vH(i)&&hHr(i).isFile()){let s=_Hr(t,i);if(s===""||s.startsWith(".."))throw new Error(`legacy state is outside its owning root: ${i}`);let a=RR(n,s);Kmn(gHr(a),{recursive:!0,mode:448}),dHr(i,a),Jmn(a,384)}}function AHr(t,e){let n=RR(t,FB),i=Xmn.default.lockSync(n,{realpath:!1,retries:0,stale:3e4,update:1e4});try{return e()}finally{i()}}function Zmn(t){let e=t.kind==="user"?hM(t.root):t.kind==="project"?Rie(t.root):zj(t.root);if(mbe(e))return;if(t.kind==="provider")throw new Error("provider conversion requires convertLegacyProviderStore() under coordinated shared-agent-dir activation");let n=pgt(e),i=()=>{mbe(e)||(fgt(e,s=>{QBe(s,t.kind);let a=t.kind==="user"?"user":"project";lgt(s,a,e.root),t.kind==="user"?vHr(s,e.root):Bgt(s,a,RR(e.root,FB))}),yHr(n)&&bHr(e.root,n))};t.kind==="project"?AHr(e.root,i):i()}function Ymn(t,e,n){if(!vH(n))return;let i=c4e(n);if(i===null||typeof i!="object"||Array.isArray(i))throw new Error(`legacy config is malformed: ${n}`);t.prepare("INSERT INTO scope_settings(owner_key,raw_json) VALUES(?,?)").run(e,JSON.stringify(i))}function Bgt(t,e,n){if(!vH(n))return;let i=c4e(n);if(i===null||typeof i!="object"||Array.isArray(i))throw new Error(`legacy state is malformed: ${n}`);let s=i;t.prepare("INSERT INTO scope_bookkeeping(owner_key,last_self_check,active_canvas) VALUES(?,?,?)").run(e,s.last_self_check??null,s.activeCanvas??null);let a=t.prepare("INSERT INTO scope_marketplaces(owner_key,name,last_updated) VALUES(?,?,?)");for(let[p,f]of Object.entries(s.marketplaces??{}))a.run(e,p,f.last_updated??null);let u=t.prepare("INSERT INTO scope_plugins(owner_key,name,last_updated,etag,checked_at) VALUES(?,?,?,?,?)");for(let[p,f]of Object.entries(s.plugins??{}))u.run(e,p,f.last_updated??null,f.etag??null,f.checked_at??null)}function vHr(t,e){Ymn(t,"user",RR(e,MB)),Bgt(t,"user",RR(e,FB));let n=RR(e,kie);if(vH(n))for(let s of mHr(n,{withFileTypes:!0})){if(!s.isDirectory()||!cgt.test(s.name))continue;let a=s.name,u=RR(n,a),p=RR(u,"profile.json");if(!vH(p))throw new Error(`legacy profile manifest is missing: ${p}`);let f=c4e(p);if(!f||typeof f!="object"||!Array.isArray(f.projects)||typeof f.name!="string"||typeof f.created_at!="string")throw new Error(`legacy profile manifest is malformed: ${p}`);t.prepare("INSERT INTO profiles(id,name,created_at,last_used_at,paused_at,home,default_kind,metadata_json) VALUES(?,?,?,?,?,?,?,?)").run(a,f.name,f.created_at,f.last_used_at??null,f.paused_at??null,f.home??null,f.default_kind??null,JSON.stringify(f.metadata??{})),t.prepare("INSERT INTO scope_owners(owner_key,kind,root,profile_id) VALUES(?,?,?,?)").run(`profile:${a}`,"profile",u,a);let _=t.prepare("INSERT INTO profile_projects(profile_id,path,position,memory) VALUES(?,?,?,?)");f.projects.forEach((m,b)=>_.run(a,m.path,b,m.memory)),Ymn(t,`profile:${a}`,RR(u,MB)),Bgt(t,`profile:${a}`,RR(u,FB))}let i=RR(e,"profile-defaults.json");if(vH(i)){let s=c4e(i);if(s===null||typeof s!="object"||Array.isArray(s))throw new Error(`legacy profile defaults are malformed: ${i}`);let a=t.prepare("INSERT INTO profile_defaults(directory,profile_id) VALUES(?,?)");for(let[u,p]of Object.entries(s)){if(typeof p!="string")throw new Error(`legacy profile default is malformed: ${i}`);a.run(u,p)}}}function vbe(t,e,n){let i=t.indexOf(e),s=i>=0?i:0;return t[(s+n+t.length)%t.length]}function $gt(t,e,n){let i=t.indexOf(e);return i>=0?t[(i+n+t.length)%t.length]:n>=0?t.find(s=>s>e)??t[0]:[...t].reverse().find(s=>s<e)??t[t.length-1]}function p8(t,e){return t==="true"?!0:t==="false"?!1:`${e} must be true or false`}function rhn(t,e){if(!/^\d+$/.test(t))return`${e} must be an integer >= 0`;let n=Number(t);return Number.isSafeInteger(n)?n:`${e} must be an integer >= 0`}function ehn(t,e){let n=rhn(t,e);return typeof n=="string"||n<1?`${e} must be an integer >= 1`:n}var thn=[!1,"notify","apply"],xHr=[0,1,6,12,24,48,72,168],wHr=[1,2,3,4,5,6,8,10,12],xbe="openai-codex";function nhn(t,e){let n=t.providerOptions[e];if(n!==void 0)return n;let i={};return t.providerOptions[e]=i,i}var SHr=[1,2,3,4,5,6],ihn={schema_version:{surface:"specialized",owner:"internal schema migration"},marketplaces:{surface:"specialized",owner:"Plugins and pkg market commands"},plugins:{surface:"specialized",owner:"Plugins tab and pkg plugin commands"},auto_update:{surface:"settings",settings:{crtr:{key:"auto_update.crtr",label:"crouter updates",description:"Notify about crouter releases, install them automatically, or turn checks off.",valueConstraint:"true|false|notify|apply; true stores notify",applies:"Applies on the next crouter command.",group:"updates",order:70,format:t=>t.auto_update.crtr===!1?"off":t.auto_update.crtr,cycle:(t,e)=>{t.auto_update.crtr=vbe(thn,t.auto_update.crtr,e)},setFromString:(t,e)=>{let n=e==="true"?"notify":e;return n!=="notify"&&n!=="apply"&&n!=="false"?"auto_update.crtr must be notify, apply, or false":(t.auto_update.crtr=n==="false"?!1:n,null)}},content:{key:"auto_update.content",label:"Content updates",description:"Notify about plugin and marketplace updates, apply them automatically, or turn checks off.",valueConstraint:"false|notify|apply",applies:"Applies on the next crouter command.",group:"updates",order:80,format:t=>t.auto_update.content===!1?"off":t.auto_update.content,cycle:(t,e)=>{t.auto_update.content=vbe(thn,t.auto_update.content,e)},setFromString:(t,e)=>e!=="notify"&&e!=="apply"&&e!=="false"?"auto_update.content must be notify, apply, or false":(t.auto_update.content=e==="false"?!1:e,null)},interval_hours:{key:"auto_update.interval_hours",label:"Update interval",description:"Minimum hours between automatic update checks. Zero checks on every command.",valueConstraint:"integer >= 0",applies:"Applies on the next crouter command.",group:"updates",order:90,format:t=>`${t.auto_update.interval_hours}h`,cycle:(t,e)=>{t.auto_update.interval_hours=$gt(xHr,t.auto_update.interval_hours,e)},setFromString:(t,e)=>{let n=rhn(e,"auto_update.interval_hours");return typeof n=="string"?n:(t.auto_update.interval_hours=n,null)}}}},max_panes_per_window:{surface:"settings",setting:{key:"max_panes_per_window",label:"Maximum panes",description:"Maximum human-review panes placed in one tmux window before using another window.",valueConstraint:"integer >= 1",applies:"Applies to the next pane placement.",group:"panes",order:20,format:t=>String(t.max_panes_per_window),cycle:(t,e)=>{t.max_panes_per_window=$gt(wHr,t.max_panes_per_window,e)},setFromString:(t,e)=>{let n=ehn(e,"max_panes_per_window");return typeof n=="string"?n:(t.max_panes_per_window=n,null)}}},auto_open_child_viewers:{surface:"settings",setting:{key:"auto_open_child_viewers",label:"Open child panes",description:"Open each managed child beside its watched parent. Off keeps new children running in the background.",valueConstraint:"true|false",applies:"Applies to the next managed child created; independent roots still open their attended viewer.",group:"panes",order:10,format:t=>t.auto_open_child_viewers?"on":"off",cycle:t=>{t.auto_open_child_viewers=!t.auto_open_child_viewers},setFromString:(t,e)=>{let n=p8(e,"auto_open_child_viewers");return typeof n=="string"?n:(t.auto_open_child_viewers=n,null)}}},brokerThresholds:{surface:"specialized",owner:"Broker limits tab"},lifecycle:{surface:"specialized",owner:"sys config set lifecycle.unattendedParkMs"},completion_bell:{surface:"settings",setting:{key:"completion_bell",label:"Completion bell",description:"Ring a short sound when the node in an attached viewer finishes a turn.",valueConstraint:"true|false",applies:"Applies on the next turn end.",group:"display",order:41,format:t=>t.completion_bell?"on":"off",cycle:t=>{t.completion_bell=!t.completion_bell},setFromString:(t,e)=>{let n=p8(e,"completion_bell");return typeof n=="string"?n:(t.completion_bell=n,null)}}},working_gerunds:{surface:"specialized",owner:"sys config set working_gerunds"},whip_mode:{surface:"settings",setting:{key:"whip_mode",label:"Whip mode",description:"Play the whip animation when you send a prompt and when a viewer opens for an agent with an initial prompt.",valueConstraint:"true|false",applies:"Applies on the next attach.",group:"display",order:39,format:t=>t.whip_mode?"on":"off",cycle:t=>{t.whip_mode=!t.whip_mode},setFromString:(t,e)=>{let n=p8(e,"whip_mode");return typeof n=="string"?n:(t.whip_mode=n,null)}}},page_surface:{surface:"settings",setting:{key:"page_surface",label:"Page human surface",description:"This host reads pages in a browser rather than a terminal. Agents are told the page module runs as written, HTML pages are offered, and document review and live display leave the command tree.",valueConstraint:"true|false",applies:"Applies when human command help is assembled.",group:"display",order:37,format:t=>t.page_surface?"on":"off",cycle:t=>{t.page_surface=!t.page_surface},setFromString:(t,e)=>{let n=p8(e,"page_surface");return typeof n=="string"?n:(t.page_surface=n,null)}}},whip_messages:{surface:"specialized",owner:"sys config set whip_messages"},whip_message_mode:{surface:"settings",setting:{key:"whip_message_mode",label:"Whip message",description:"What the whip action sends: a random line from whip_messages, or the fixed \u201CGo faster\u201D.",valueConstraint:uH.join("|"),applies:"Applies on the next attach.",group:"display",order:40,format:t=>t.whip_message_mode==="go-faster"?"go faster":"random",cycle:(t,e)=>{t.whip_message_mode=vbe(uH,t.whip_message_mode,e)},setFromString:(t,e)=>uH.includes(e)?(t.whip_message_mode=e,null):`whip_message_mode must be one of: ${uH.join("|")}`}},mouse_mode_default:{surface:"settings",setting:{key:"mouse_mode_default",label:"Default mouse mode",description:"Initial mouse wheel scrolling for each attached viewer.",valueConstraint:pH.join("|"),applies:"Applies on the next attach.",group:"display",order:38,format:t=>t.mouse_mode_default==="tmux"?"follow tmux":t.mouse_mode_default,cycle:(t,e)=>{t.mouse_mode_default=vbe(pH,t.mouse_mode_default,e)},setFromString:(t,e)=>pH.includes(e)?(t.mouse_mode_default=e,null):`mouse_mode_default must be one of: ${pH.join("|")}`}},live_cycles:{surface:"settings",setting:{key:"live_cycles",label:"Live cycles",description:"Trailing refresh cycles rendered at full fidelity; older cycles condense to text.",valueConstraint:"integer >= 1",applies:"Applies on the next attach.",group:"display",order:50,format:t=>String(t.live_cycles),cycle:(t,e)=>{t.live_cycles=$gt(SHr,t.live_cycles,e)},setFromString:(t,e)=>{let n=ehn(e,"live_cycles");return typeof n=="string"?n:(t.live_cycles=n,null)}}},condensed_history:{surface:"settings",setting:{key:"condensed_history",label:"Condensed history",description:"Messages retained from condensed cycles. Tool calls are never kept.",valueConstraint:dH.join("|"),applies:"Applies on the next attach.",group:"display",order:60,format:t=>t.condensed_history,cycle:(t,e)=>{t.condensed_history=vbe(dH,t.condensed_history,e)},setFromString:(t,e)=>dH.includes(e)?(t.condensed_history=e,null):`condensed_history must be one of: ${dH.join("|")}`}},bash_tool_purpose:{surface:"settings",setting:{key:"bash_tool_purpose",label:"Bash purpose field",description:"Expose the optional purpose label to agents in the bash tool schema. Off removes the field without disabling the bash valve.",valueConstraint:"true|false",applies:"Applies on the next node session.",group:"display",order:25,format:t=>t.bash_tool_purpose?"on":"off",cycle:t=>{t.bash_tool_purpose=!t.bash_tool_purpose},setFromString:(t,e)=>{let n=p8(e,"bash_tool_purpose");return typeof n=="string"?n:(t.bash_tool_purpose=n,null)}}},fold_finished_tools:{surface:"settings",setting:{key:"fold_finished_tools",label:"Fold finished tools",description:"Fold every settled tool call to its call line. Toggle live with /fold-tools.",valueConstraint:"true|false",applies:"Applies on the next attach.",group:"display",order:30,format:t=>t.fold_finished_tools?"on":"off",cycle:t=>{t.fold_finished_tools=!t.fold_finished_tools},setFromString:(t,e)=>{let n=p8(e,"fold_finished_tools");return typeof n=="string"?n:(t.fold_finished_tools=n,null)}}},summarize_tool_calls:{surface:"settings",setting:{key:"summarize_tool_calls",label:"Summarize tool calls",description:"Replace completed folded tool-call groups with a one-line broker summary when available.",valueConstraint:"true|false",applies:"Applies when the next visible message closes a tool-call group.",group:"display",order:35,format:t=>t.summarize_tool_calls?"on":"off",cycle:t=>{t.summarize_tool_calls=!t.summarize_tool_calls},setFromString:(t,e)=>{let n=p8(e,"summarize_tool_calls");return typeof n=="string"?n:(t.summarize_tool_calls=n,null)}}},detailed_tool_recaps:{surface:"settings",setting:{key:"detailed_tool_recaps",label:"Detailed tool recaps",description:"Show each memory read and edited file in folded tool recaps. Off shows a compact count line instead.",valueConstraint:"true|false",applies:"Applies on the next attach.",group:"display",order:36,format:t=>t.detailed_tool_recaps?"on":"off",cycle:t=>{t.detailed_tool_recaps=!t.detailed_tool_recaps},setFromString:(t,e)=>{let n=p8(e,"detailed_tool_recaps");return typeof n=="string"?n:(t.detailed_tool_recaps=n,null)}}},keybindings:{surface:"specialized",owner:"Keybindings tab"},tmux_passthrough:{surface:"specialized",owner:"Keybindings tab"},providerOptions:{surface:"settings",settings:{"openai-codex.fastMode":{key:`providerOptions.${xbe}.fastMode`,label:"Codex fast mode",description:"Serve Codex turns at the ChatGPT priority tier: about 1.5x faster generation for about 2x the credits. Displayed cost does not reflect the premium.",valueConstraint:"true|false",applies:"Applies on each node's next turn.",group:"providers",order:40,format:t=>t.providerOptions[xbe]?.fastMode?"on":"off",cycle:t=>{let e=nhn(t,xbe);e.fastMode=!e.fastMode},setFromString:(t,e)=>{let n=p8(e,`providerOptions.${xbe}.fastMode`);return typeof n=="string"?n:(nhn(t,xbe).fastMode=n,null)}}}},modelLadders:{surface:"specialized",owner:"Models tab"},modelRoutes:{surface:"specialized",owner:"Models route declarations"},modelRouting:{surface:"specialized",owner:"Models route declarations"},kinds:{surface:"specialized",owner:"Models tab and kind registry"},page_components:{surface:"specialized",owner:"Page component catalog: product-registered page component kinds"},remoteCanvas:{surface:"specialized",owner:"canvas config commands"},spawnEnv:{surface:"specialized",owner:"spawn environment allow-list"},bin:{surface:"specialized",owner:"bare-binary contributions on every node PATH"},humanActions:{surface:"specialized",owner:"scope-configured human completion actions"}},EHr=Object.keys(ihn);function CHr(){let t=[];for(let e of Object.values(ihn))e.surface==="settings"&&("setting"in e?t.push(e.setting):t.push(...Object.values(e.settings)));return t.sort((e,n)=>e.order-n.order)}var dOs=CHr();var Ugt=["options","text","table","cards","chart"],THr=["page","step"],kHr=/^[a-z][a-z0-9-]{0,63}$/,IHr=new Set(Ugt),shn=[{kind:"page",tag:"Page",description:"the page itself: title, subtitle, and every step it contains",useWhen:"use as the single root element every page returns",builtin:!0,structural:!0},{kind:"step",tag:"Step",description:"one step inside a Page",useWhen:"use for each step the user sees and completes in sequence",builtin:!0,structural:!0},{kind:"options",tag:"UserQuestion",description:"known alternatives with single or multiple selection",useWhen:"use when the user picks among known alternatives, optionally with freetext",builtin:!0,structural:!1},{kind:"text",tag:"UserText",description:"writing surface whose answer is the text the user hands back",useWhen:"use when you need prose from the user \u2014 a value they write, or a draft they revise; prose they only read is a plain element",builtin:!0,structural:!1},{kind:"table",tag:"UserTable",description:"rows and columns with optional selection",useWhen:"use when structured records are easiest to compare in rows and columns",builtin:!0,structural:!1},{kind:"cards",tag:"UserCards",description:"visual records with optional selection",useWhen:"use when the user compares or picks richer items than a compact option list can carry",builtin:!0,structural:!1},{kind:"chart",tag:"Chart",description:"line, bar, or area data visualization",useWhen:"use when shape, trend, or magnitude matters more than exact tabular values",builtin:!0,structural:!1}];function wbe(t){return t.split("-").map(e=>e===""?"":`${e[0].toUpperCase()}${e.slice(1)}`).join("")}var jgt=Object.fromEntries(shn.filter(t=>!t.structural).map(t=>[t.tag,t.kind])),l4e=new Set(shn.map(t=>t.tag)),Wgt=new Set(["Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","CardAction","Badge","Button","Separator","Progress","Alert","AlertTitle","AlertDescription","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","Tabs","TabsList","TabsTrigger","TabsContent","Accordion","AccordionItem","AccordionTrigger","AccordionContent"]);function Uie(t){try{let e=JSON.stringify(t);return e===void 0?String(t):e}catch{return String(t)}}function $ie(t,e,n,i){if(t!==void 0){if(typeof t!="string"||t.trim()==="")throw new Error(`${n}[${i}].${e} must be a non-empty string; received ${Uie(t)}`);return t.trim()}}function Qgt(t,e="page_components"){if(t===void 0)return[];if(!Array.isArray(t))throw new Error(`${e} must be an array; received ${Uie(t)}`);let n=new Set,i=new Set;return t.map((s,a)=>{let u;if(typeof s=="string")u={kind:s.trim()};else if(s!==null&&typeof s=="object"&&!Array.isArray(s)){let _=s,m=Object.keys(_).filter(b=>!["kind","description","useWhen","doc","display"].includes(b));if(m.length>0)throw new Error(`${e}[${a}] has unknown field(s): ${m.join(", ")}`);if(typeof _.kind!="string")throw new Error(`${e}[${a}].kind must be a string; offending entry: ${Uie(s)}`);if(_.display!==void 0&&typeof _.display!="boolean")throw new Error(`${e}[${a}].display must be a boolean; offending entry: ${Uie(s)}`);u={kind:_.kind.trim(),...$ie(_.description,"description",e,a)===void 0?{}:{description:$ie(_.description,"description",e,a)},...$ie(_.useWhen,"useWhen",e,a)===void 0?{}:{useWhen:$ie(_.useWhen,"useWhen",e,a)},...$ie(_.doc,"doc",e,a)===void 0?{}:{doc:$ie(_.doc,"doc",e,a)},..._.display===!0?{display:!0}:{}}}else throw new Error(`${e}[${a}] must be a string or component object; offending entry: ${Uie(s)}`);let p=u.kind;if(!kHr.test(p))throw new Error(`${e}[${a}] has invalid page kind ${Uie(p)}; expected /^[a-z][a-z0-9-]{0,63}$/`);if(IHr.has(p)||THr.includes(p))throw new Error(`${e}[${a}] collides with built-in page kind "${p}"`);if(n.has(p))throw new Error(`${e}[${a}] duplicates page kind "${p}"`);let f=wbe(p);if(l4e.has(f))throw new Error(`${e}[${a}] kind "${p}" derives JSX tag "${f}", which collides with a built-in page component`);if(i.has(f))throw new Error(`${e}[${a}] kind "${p}" derives JSX tag "${f}", which duplicates another product page component`);return n.add(p),i.add(f),u})}function ohn(t){let e=new Map,n=new Map,i=[];for(let s of t)for(let a of s.components){let u=e.get(a.kind);if(u!==void 0)throw new Error(`page component kind "${a.kind}" is registered by both ${u} and ${s.origin}`);let p=wbe(a.kind),f=n.get(p);if(f!==void 0)throw new Error(`page component kind "${a.kind}" (${s.origin}) derives JSX tag "${p}", which duplicates kind "${f.kind}" from ${f.origin}`);e.set(a.kind,s.origin),n.set(p,{kind:a.kind,origin:s.origin}),i.push(a)}return i}function ahn(t,e){return e.find(n=>n.kind===t)}function phn(t){return RHr(t,MB)}function NHr(t,e){return fbe(DHr(t)),FC(`${t}.lock`,()=>e(t),{timeoutError:()=>new Error(`timed out waiting for config lock: ${t}`)})}function Ggt(t){let e=Vj(t),n=Vj(GP());if(e===n)return{store:hM(n),key:"user",kind:"user",root:n};if(PHr(e)===".crouter")return Zmn({kind:"project",root:e}),{store:Rie(e),key:"project",kind:"project",root:e};for(let i of qBe()){let s=Vj(ggt(i.profileId));if(e===s)return{store:hM(n),key:`profile:${i.profileId}`,kind:"profile",root:s,profileId:i.profileId}}throw new Error(`settings root is not a recognized owner: ${t}`)}function dhn(t){let e=Ggt(t);return e.kind==="project"?hH(phn(e.root)):JBe(e)}function OHr(t,e){let n=Ggt(t);return n.kind==="project"?NHr(phn(n.root),i=>{let s=e(hH(i)??{});return egt(i,s.next),s.value}):omn(n,i=>e(i))}function kk(t){let e=l8(t);return e?MHr(e):NBe()}function MHr(t){let e=dhn(t);return e?sJr(e):NBe()}function fhn(t){let e=l8(t);return e?amn(Ggt(e)):ofn()}function Vgt(t,e){let n=_gt(t);return OHr(n,i=>{let s=e(i);return{value:s,next:s}})}function FHr(t){if(t===null||typeof t!="object"||Array.isArray(t))return{};let e={};for(let[n,i]of Object.entries(t))Array.isArray(i)&&i.every(s=>typeof s=="string")&&(e[n]=[...i]);return e}var LHr=new Set(qP.filter(lbe).map(t=>t.id));function jie(t){return Array.isArray(t)?[...new Set(t.filter(e=>typeof e=="string"&&lH.has(e)&&LHr.has(e)))]:[]}function BHr(t,e=zht()){let n=e;if(t===null||typeof t!="object")return n;let i=t,s={anthropic:{...n.anthropic},openai:{...n.openai},...n.defaultProvider!==void 0?{defaultProvider:n.defaultProvider}:{}};(i.defaultProvider==="anthropic"||i.defaultProvider==="openai")&&(s.defaultProvider=i.defaultProvider);for(let a of["anthropic","openai"]){let u=i[a];if(!(u===null||typeof u!="object"))for(let[p,f]of Object.entries(u))(p==="ultra"||p==="strong"||p==="medium"||p==="light")&&typeof f=="string"&&(s[a][p]=f)}return s}function mhn(t){return t==="ultra"||t==="strong"||t==="medium"||t==="light"}var $Hr=["ultra","strong","medium","light"];function qgt(){return Object.create(null)}function u4e(t,e,n){Object.defineProperty(t,e,{value:n,writable:!0,enumerable:!0,configurable:!0})}function UHr(t){let e=qgt();for(let[n,i]of Object.entries(t??{}))u4e(e,n,i);return e}function Sbe(t,e){a8({level:"warn",event:"config.model_routes.invalid",fields:{route_id:t,rule:e}})}function jHr(t,e={}){let n=UHr(e);if(t===null||typeof t!="object"||Array.isArray(t))return n;for(let[i,s]of Object.entries(t)){if(i.trim()===""){Sbe(i,"route id must be a non-empty string");continue}if(s===null||typeof s!="object"||Array.isArray(s)){Sbe(i,"route must be an object");continue}let a=s,u=n[i],p={...u},f;for(let _ of["family","credentialSource","providerId"]){let m=a[_];if(m!==void 0){if(typeof m!="string"||m.trim()===""){f=`${_} must be a non-empty string`;break}p[_]=m}}if(f===void 0&&a.models!==void 0)if(a.models===null||typeof a.models!="object"||Array.isArray(a.models))f="models must be an object";else{let _={...u?.models};for(let[m,b]of Object.entries(a.models)){if(!mhn(m)){f=`models.${m} is not a model strength`;break}if(typeof b!="string"||b.trim()===""){f=`models.${m} must be a non-empty provider/id ref`;break}let x=b.indexOf("/");if(x<=0||x===b.length-1){f=`models.${m} must be provider/id`;break}_[m]=b}p.models=_}if(f===void 0&&p.models!==void 0&&p.providerId!==void 0){for(let[_,m]of Object.entries(p.models))if(m.slice(0,m.indexOf("/"))!==p.providerId){f=`models.${_} provider prefix must equal providerId`;break}}if(f!==void 0){Sbe(i,f);continue}u4e(n,i,p)}return n}function WHr(t){let e=qgt(),n=qgt();for(let[i,s]of Object.entries(t)){if(s.family===void 0||s.credentialSource===void 0||s.providerId===void 0||s.models===void 0){Sbe(i,"route must include family, credentialSource, providerId, and models");continue}let a=$Hr.filter(u=>s.models[u]===void 0);if(a.length>0){Sbe(i,`incomplete route; missing strengths: ${a.join(", ")}`),u4e(n,i,{family:s.family,credentialSource:s.credentialSource,providerId:s.providerId,models:s.models});continue}u4e(e,i,{family:s.family,credentialSource:s.credentialSource,providerId:s.providerId,models:s.models})}return{complete:e,legacy:n}}function QHr(t,e){if(t===void 0||t===null||typeof t!="object"||Array.isArray(t))return e;let n=t,i=a=>Array.isArray(a)&&a.every(u=>typeof u=="string"&&u.trim()!=="")?[...a]:void 0,s=Array.isArray(n.strengthFallback)&&n.strengthFallback.every(a=>mhn(a))?[...n.strengthFallback]:void 0;return{...i(n.credentialSourceOrder)!==void 0?{credentialSourceOrder:i(n.credentialSourceOrder)}:{},...i(n.familyOrder)!==void 0?{familyOrder:i(n.familyOrder)}:{},...s!==void 0?{strengthFallback:s}:{}}}function qHr(t){return t!==""&&t.replace(/\*/g,"")===""}function GHr(t,e=[]){let n=t,i=Array.isArray(n?.allow)?n.allow.filter(s=>typeof s=="string"):[];for(let s of i)if(qHr(s))throw new Error(`spawnEnv.allow: "${s}" matches every env var name (inherit-all) \u2014 this is exactly the leak the spawn-env boundary closes. Name the specific vars/prefixes you actually need instead (e.g. "AWS_*", "GIT_ASKPASS").`);return{allow:[...new Set([...e,...i])]}}function VHr(t,e={}){let n={};for(let[i,s]of Object.entries(e))n[i]={...s};if(t!==null&&typeof t=="object")for(let[i,s]of Object.entries(t)){if(s===null||typeof s!="object")continue;let a={...n[i]},u=s.fastMode;typeof u=="boolean"&&(a.fastMode=u),n[i]=a}return n}var chn=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,zHr=new Set(["crtr","crtrd"]);function HHr(t,e){if(e==="bin"&&zHr.has(t))return`${e}.${t} is reserved by crouter \u2014 pick another bare command name`;if(!chn.test(t))return`${e}.${t} is not a safe bare command name (expected ${chn.source})`}function JHr(t){if(t===null||typeof t!="object"||Array.isArray(t))return{};let e={};for(let[n,i]of Object.entries(t))HHr(n,"bin")===void 0&&(typeof i!="string"||i.trim()===""||(e[n]=i));return e}var lhn=/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;function KHr(t){if(t===null||typeof t!="object"||Array.isArray(t))return[{name:"humanActions",reason:"humanActions must be a JSON object mapping action names to {argv, cwd}",block:!0}];let e=[];for(let[n,i]of Object.entries(t)){let s=[];if(lhn.test(n)||s.push(`action name must match ${lhn.source}`),i===null||typeof i!="object"||Array.isArray(i))s.push("action must be an object with argv and cwd");else{let a=i,u=Object.keys(a).filter(p=>p!=="argv"&&p!=="cwd");u.length>0&&s.push(`action has unsupported field${u.length===1?"":"s"}: ${u.join(", ")}`),(!Array.isArray(a.argv)||a.argv.length===0||!a.argv.every(p=>typeof p=="string"&&p.length>0))&&s.push("argv must be a non-empty array of non-empty strings"),(typeof a.cwd!="string"||a.cwd.length===0)&&s.push("cwd is required and must be a non-empty string")}s.length>0&&e.push({name:n,reason:s.join("; ")})}return e}function YHr(t){if(t===null||typeof t!="object"||Array.isArray(t))return{};let e=new Set(KHr(t).map(i=>i.name)),n={};for(let[i,s]of Object.entries(t)){if(e.has(i))continue;let a=s;n[i]={argv:[...a.argv],cwd:a.cwd}}return n}function XHr(t){if(t===null||typeof t!="object")return null;let e=t,n={};typeof e.whenToUse=="string"&&e.whenToUse.trim()!==""&&(n.whenToUse=e.whenToUse),typeof e.model=="string"&&e.model.trim()!==""&&(n.model=e.model),typeof e.orchestratorModel=="string"&&e.orchestratorModel.trim()!==""&&(n.orchestratorModel=e.orchestratorModel);let i=s=>Array.isArray(s)&&s.every(a=>typeof a=="string");return i(e.tools)&&(n.tools=e.tools),i(e.extensions)&&(n.extensions=e.extensions),i(e.availableTo)&&(n.availableTo=e.availableTo),Object.keys(n).length>0?n:null}function ZHr(t,e=Vht()){let n={...e};if(t!==null&&typeof t=="object")for(let[i,s]of Object.entries(t)){let a=XHr(s);if(a===null)continue;let u=n[i];u!==void 0?n[i]={...u,...a}:a.whenToUse!==void 0&&(n[i]=a)}return n}function p4e(){let t=[{origin:"config.json",components:kk("user").page_components}],e=l8("user");if(e!==null){let n=_be("user",e).filter(i=>i.enabled&&i.manifest.page_components!==void 0).sort((i,s)=>i.name.localeCompare(s.name));for(let i of n){let s=`plugin "${i.name}" page_components`;t.push({origin:`plugin "${i.name}"`,components:Qgt(i.manifest.page_components,s)})}}return ohn(t)}function eJr(t){if(t===null||typeof t!="object")return null;let e=t;if(typeof e.previewEndpoint!="string"||e.previewEndpoint.trim()===""||typeof e.relayTokenRef!="string"||e.relayTokenRef.trim()==="")return null;let n={previewEndpoint:e.previewEndpoint,relayTokenRef:e.relayTokenRef};return typeof e.cpOrigin=="string"&&e.cpOrigin.trim()!==""&&(n.cpOrigin=e.cpOrigin),n}function tJr(t,e=Ght()){let n={...e.targets};if(t!==null&&typeof t=="object"){let i=t;if(i.targets!==null&&typeof i.targets=="object")for(let[s,a]of Object.entries(i.targets)){let u=eJr(a);u!==null&&(n[s]=u)}}return{targets:n}}function uhn(t,e){return t===!0?"notify":t===!1?!1:t==="notify"||t==="apply"?t:e}function Ebe(t,e){return typeof t=="number"&&Number.isSafeInteger(t)&&t>=1?t:e}function nJr(t,e){let n=t!==null&&typeof t=="object"?t:{},i=Ebe(n.warning,e.warning),s=Ebe(n.automaticReviveCap,e.automaticReviveCap);return i<=s?{warning:i,automaticReviveCap:s}:{...e}}function rJr(t,e){return{unattendedParkMs:Ebe((t!==null&&typeof t=="object"?t:{}).unattendedParkMs,e.unattendedParkMs)}}function iJr(t){if(!Array.isArray(t))return[...RBe];let e=t.filter(n=>typeof n=="string"&&n.trim()!=="").map(n=>n.trim());return e.length>0?e:[...RBe]}function sJr(t){let e=NBe(),n=e.schema_version,i=t.marketplaces===void 0?{}:t.marketplaces,s=t.plugins===void 0?{}:t.plugins,a=t.auto_update,u=a&&typeof a.interval_hours=="number"?a.interval_hours:void 0,p=u!==void 0&&Number.isFinite(u)&&u>=0?u:e.auto_update.interval_hours,f={crtr:uhn(a?.crtr,e.auto_update.crtr),content:uhn(a?.content,e.auto_update.content),interval_hours:p},_=t.max_panes_per_window,m=Ebe(_,e.max_panes_per_window),b=typeof t.auto_open_child_viewers=="boolean"?t.auto_open_child_viewers:e.auto_open_child_viewers,x=nJr(t.brokerThresholds,e.brokerThresholds),k=rJr(t.lifecycle,e.lifecycle),I=typeof t.completion_bell=="boolean"?t.completion_bell:e.completion_bell,C=t.working_gerunds===void 0?[...e.working_gerunds]:nfn(t.working_gerunds),P=typeof t.whip_mode=="boolean"?t.whip_mode:e.whip_mode,R=Qgt(t.page_components),F=typeof t.page_surface=="boolean"?t.page_surface:e.page_surface,L=iJr(t.whip_messages),U=uH.includes(t.whip_message_mode)?t.whip_message_mode:e.whip_message_mode,Y=pH.includes(t.mouse_mode_default)?t.mouse_mode_default:e.mouse_mode_default,V=Ebe(t.live_cycles,e.live_cycles),z=dH.includes(t.condensed_history)?t.condensed_history:e.condensed_history,te=typeof t.bash_tool_purpose=="boolean"?t.bash_tool_purpose:e.bash_tool_purpose,ne=typeof t.fold_finished_tools=="boolean"?t.fold_finished_tools:e.fold_finished_tools,he=typeof t.summarize_tool_calls=="boolean"?t.summarize_tool_calls:e.summarize_tool_calls,De=typeof t.detailed_tool_recaps=="boolean"?t.detailed_tool_recaps:e.detailed_tool_recaps,We=FHr(t.keybindings),Oe=jie(t.tmux_passthrough),ze=BHr(t.modelLadders),wt=VHr(t.providerOptions,e.providerOptions),yt=WHr(jHr(t.modelRoutes)),Re=yt.complete,je=QHr(t.modelRouting,void 0),ct=ZHr(t.kinds),Qt=tJr(t.remoteCanvas),Xt=GHr(t.spawnEnv,e.spawnEnv?.allow),Cn=JHr(t.bin),bn=YHr(t.humanActions);return{bin:Cn,humanActions:bn,schema_version:n,marketplaces:i,plugins:s,auto_update:f,max_panes_per_window:m,auto_open_child_viewers:b,brokerThresholds:x,lifecycle:k,completion_bell:I,working_gerunds:C,whip_mode:P,page_components:R,page_surface:F,whip_messages:L,whip_message_mode:U,mouse_mode_default:Y,live_cycles:V,condensed_history:z,bash_tool_purpose:te,fold_finished_tools:ne,summarize_tool_calls:he,detailed_tool_recaps:De,keybindings:We,tmux_passthrough:Oe,modelLadders:ze,providerOptions:wt,...Object.keys(Re).length>0?{modelRoutes:Re}:{},...Object.keys(yt.legacy).length>0?{legacyModelRoutes:yt.legacy}:{},...je!==void 0?{modelRouting:je}:{},kinds:ct,remoteCanvas:Qt,spawnEnv:Xt}}function oJr(t){return dhn(t)}function hhn(t){let e=l8(t);return e?oJr(e):null}var aJr=["ctrl","alt","shift"],cJr=new Set(["ctrl","alt","shift","meta"]),lJr=new Set(["enter","escape","tab","backspace","delete","space","up","down","left","right","pageup","pagedown","home","end"]),uJr={return:"enter",esc:"escape"},WS=class extends Error{constructor(e){super(e),this.name="GestureSyntaxError"}};function pJr(t){let e=t.match(/^((?:[CMS]-)+)(.+)$/i);return e===null?t:`${e[1].split("-").filter(Boolean).map(i=>i.toUpperCase()==="C"?"ctrl":i.toUpperCase()==="M"?"alt":"shift").join("+")}+${e[2]}`}function Kgt(t){let e=pJr(t.trim());if(e==="")throw new WS("a stroke cannot be empty");let n,i;if(e==="+")n="+",i=[];else if(e.endsWith("++"))n="+",i=e.slice(0,-2).split("+");else{let f=e.split("+");if(f.some(_=>_===""))throw new WS(`invalid stroke "${t}"`);n=f.pop(),i=f}let s=i.map(f=>f.toLowerCase());if(s.some(f=>!cJr.has(f)))throw new WS(`unsupported modifier in "${t}"`);let a=s.map(f=>f==="meta"?"alt":f);if(new Set(a).size!==a.length)throw new WS(`duplicate modifier in "${t}"`);let u=uJr[n.toLowerCase()]??n;if(u.length===1&&u>="A"&&u<="Z"?(u=u.toLowerCase(),a.includes("shift")||a.push("shift")):u.length!==1&&(u=u.toLowerCase()),!(u.length===1&&u.charCodeAt(0)>=32&&u.charCodeAt(0)<=126)&&!lJr.has(u))throw new WS(`unsupported key "${n}"`);return[...aJr.filter(f=>a.includes(f)),u].join("+")}function Ygt(t,e){let n=t.trim().split(/\s+>\s+/);if(n.length>2)throw new WS("a gesture may contain at most two strokes");let i=n.map(Kgt);if(i.length===2&&e?.inputKind!=="tmux-sequence")throw new WS("two-stroke sequences are supported only by tmux sequence actions");if(e?.inputKind==="tmux-sequence"&&i.length!==2)throw new WS("this action requires a two-stroke tmux sequence");if(e?.inputKind==="tmux-menu-selector"){if(i.length!==1)throw new WS("a menu selector must be one stroke");let a=i[0].split("+"),u=a.at(-1),p=a.slice(0,-1);if(u.length!==1&&u!=="space"||p.some(f=>f!=="shift"))throw new WS("a menu selector must be one printable character")}if(e?.inputKind==="tmux-global-action"){if(i.length!==1)throw new WS("a global menu shortcut must be one stroke");let s=i[0].split("+").slice(0,-1);if(!s.includes("ctrl")&&!s.includes("alt"))throw new WS("a global menu shortcut must include Ctrl or Alt")}return i.join(" > ")}function dJr(t,e){if(!Array.isArray(t))throw new WS("the override must be an array of gesture strings");let n=[];for(let i of t){if(typeof i!="string")throw new WS("every override entry must be a gesture string");let s=Ygt(i,e);n.includes(s)||n.push(s)}return Object.freeze(n)}function fJr(t,e){return t.contexts.some(n=>e.contexts.includes(n))}function zgt(t){return t.contexts.includes("tmux.root")}function ghn(t){return!zgt(t)&&t.inputKind!=="tmux-menu-selector"&&t.inputKind!=="tmux-sequence"}function Wie(t){return t.split(" > ")[0]}function mJr(t,e,n,i){let s=e.includes(" > "),a=i.includes(" > ");if(fJr(t,n))return s&&a?e===i:s||a?Wie(e)===Wie(i):e===i;let u=zgt(t),p=zgt(n);return!u&&!p?!1:u&&p&&s&&a?e===i:u&&p?Wie(e)===Wie(i):u&&ghn(n)?Wie(e)===i:p&&ghn(t)?e===Wie(i):!1}function Hgt(t){return Object.freeze(t.defaults.map(e=>Ygt(e,t)))}var Jgt=class{#e;constructor(e){this.#e=new Map(e)}get size(){return this.#e.size}get(e){return this.#e.get(e)}has(e){return this.#e.has(e)}entries(){return this.#e.entries()}keys(){return this.#e.keys()}values(){return this.#e.values()}forEach(e,n){for(let[i,s]of this.#e)e.call(n,s,i,this)}[Symbol.iterator](){return this.#e[Symbol.iterator]()}};function Cbe(t,e,n,i,s){return Object.freeze({severity:"error",code:t,message:e,offendingValue:n,...i?{bindingId:i}:{},...s?{relatedBindingIds:Object.freeze([...s])}:{}})}function hJr(t){let e=[];for(let n=0;n<t.length;n+=1){let i=t[n];for(let s=n+1;s<t.length;s+=1){let a=t[s];for(let u of i.gestures){let p=a.gestures.find(f=>mJr(i.definition,u,a.definition,f));if(p!==void 0){e.push([i,a,u.includes(" > ")?u:p]);break}}}}return e}function gJr(t,e,n){return t.some(i=>i.definition.safety===n&&i.gestures.length>0&&i.definition.contexts.includes(e))}function _hn(t,e){for(;;){let n=new Set;for(let[i,s,a]of hJr(t)){if(i.source==="user"&&n.add(i),s.source==="user"&&n.add(s),i.source==="default"&&s.source==="default")throw new Error(`keybinding catalog default collision: ${i.definition.id} / ${s.definition.id} (${a})`);e.push(Cbe("collision",`${i.definition.id} and ${s.definition.id} both claim ${a} in overlapping contexts`,a,i.source==="user"?i.definition.id:s.definition.id,[i.definition.id,s.definition.id]))}if(n.size===0)return;for(let i of n)i.gestures=Hgt(i.definition),i.source="default"}}function yhn(t=void 0){let e=[],n={};t!==void 0&&(t===null||typeof t!="object"||Array.isArray(t)?e.push(Cbe("invalid-keybindings","keybindings must be an object keyed by catalog binding ID",t)):n=t);for(let[p,f]of Object.entries(n))lH.has(p)||e.push(Cbe("unknown-binding",`unknown keybinding ID: ${p}`,f,p));let i=qP.map(p=>{let f=Hgt(p);if(!Object.hasOwn(n,p.id))return{definition:p,gestures:f,source:"default"};let _=n[p.id];try{return{definition:p,gestures:dJr(_,p),source:"user",rawOverride:_}}catch(m){let b=m instanceof Error?m.message:String(m);return e.push(Cbe("invalid-override",`${p.id}: ${b}`,_,p.id)),{definition:p,gestures:f,source:"default"}}});_hn(i,e);for(let p of jht){if(gJr(i,p.context,p.capability))continue;let f=i.filter(_=>_.source==="user"&&_.definition.safety===p.capability&&_.definition.contexts.includes(p.context));e.push(Cbe("unreachable",`${p.context} must retain an enabled ${p.capability} binding`,f.map(_=>_.rawOverride),f[0]?.definition.id,f.map(_=>_.definition.id)));for(let _ of f)_.gestures=Hgt(_.definition),_.source="default"}_hn(i,e);let s=i.map(p=>{let f=Object.freeze({definition:p.definition,gestures:p.gestures,source:p.source});return[p.definition.id,f]}),a=new Jgt(s),u={bindings:a,diagnostics:Object.freeze(e),get(p){let f=a.get(p);if(f===void 0)throw new Error(`unknown crouter keybinding ID: ${p}`);return f},gestures(p){return this.get(p).gestures}};return Object.freeze(u)}function xH(){let t=hhn("user");return Object.freeze({bindings:yhn(t?.keybindings),tmuxPassthrough:Object.freeze(jie(t?.tmux_passthrough))})}function Tbe(){return xH().bindings}var _Jr={enter:"Enter",escape:"Esc",tab:"Tab",backspace:"Backspace",delete:"Delete",space:"Space",up:"Up",down:"Down",left:"Left",right:"Right",pageup:"PageUp",pagedown:"PageDown",home:"Home",end:"End"};function bhn(t){let e,n;if(t==="+")e="+",n=[];else if(t.endsWith("++"))e="+",n=t.slice(0,-2).split("+");else{let s=t.split("+");e=s.pop(),n=s}let i=n.map(s=>s[0].toUpperCase()+s.slice(1));return i.push(_Jr[e]??(e.length===1&&n.length>0?e.toUpperCase():e)),i.join("+")}function Yj(t){return t.split(" > ").map(bhn).join(" then ")}function QS(t,e){let n=t.gestures(e);return n.length===0?"Disabled":n.map(Yj).join(" / ")}function wH(t){if(t.length===2&&t[0]==="\x1B"&&/[A-Z]/.test(t[1]))return`\x1B[${t.charCodeAt(1)};4u`;let e=/^\x1b\[(\d+);3u$/.exec(t);if(e!==null){let n=Number(e[1]);if(n>=65&&n<=90)return`\x1B[${n};4u`}return t}function SH(t,e,n,i){return t.gestures(e).some(s=>!s.includes(" > ")&&i(n,s))}var yJr="crtr.tmux.inbox.toggle";function Ahn(t=Tbe()){let e=t.gestures(yJr);return e.length>0?e.map(Yj).join(" / "):null}function Qie(t){let e=Ahn(t);return e!==null?`${e} inbox`:"crtr human list"}var bJr="crtr.tmux.menu.open",AJr="crtr.tmux.menu.background-bash";function vJr(t){let e=t.split("+"),n=e.at(-1);return e.includes("shift")&&/[a-z]/.test(n)?n.toUpperCase():n==="space"?" ":n}function vhn(t=Tbe()){let e=t.gestures(bJr),n=t.gestures(AJr);return e.length===0||n.length===0?null:`${e.map(Yj).join(" / ")} ${vJr(n[0])}`}function d4e(t){let e=vhn(t);return e!==null?`${e} to background`:null}var $B=[{menuId:"crtr.tmux.menu.attach.detach",actionId:"crtr.attach.detach"},{menuId:"crtr.tmux.menu.attach.clear-or-detach",actionId:"crtr.attach.clear-or-detach"},{menuId:"crtr.tmux.menu.attach.graph.toggle",actionId:"crtr.attach.graph.toggle"},{menuId:"crtr.tmux.menu.attach.help.toggle",actionId:"crtr.attach.help.toggle"},{menuId:"crtr.tmux.menu.attach.inbox.toggle",actionId:"crtr.attach.inbox.toggle"},{menuId:"crtr.tmux.menu.attach.inbox-strip",actionId:"crtr.attach.inbox-strip"},{menuId:"crtr.tmux.menu.attach.model-ladder.next",actionId:"crtr.attach.model-ladder.next"},{menuId:"crtr.tmux.menu.attach.model-ladder.previous",actionId:"crtr.attach.model-ladder.previous"},{menuId:"crtr.tmux.menu.attach.command.inspect",actionId:"crtr.attach.command.inspect"},{menuId:"crtr.tmux.menu.attach.file-review",actionId:"crtr.attach.file-review"},{menuId:"crtr.tmux.menu.attach.profile-files",actionId:"crtr.attach.profile-files"},{menuId:"crtr.tmux.menu.attach.search",actionId:"crtr.attach.search"},{menuId:"crtr.tmux.menu.attach.whip",actionId:"crtr.attach.whip"}],xJr="\x1B_crtr;",wJr="\x1B\\",HOs=new Set($B.map(({actionId:t})=>t));function kbe(t){return`${xJr}${t}${wJr}`}function Xgt(t){let e;for(let{actionId:n}of $B){let i=kbe(n),s=t.indexOf(i);s>=0&&(e===void 0||s<e.index)&&(e={actionId:n,encoded:i,index:s})}if(e!==void 0)return{actionId:e.actionId,remaining:t.slice(0,e.index)+t.slice(e.index+e.encoded.length)}}function yd(t){return`'${t.replace(/'/g,"'\\''")}'`}function Zh(t){let e=Ehn("tmux",t,{encoding:"utf8"});return{ok:e.status===0,stdout:(e.stdout??"").trim(),stderr:(e.stderr??"").trim()}}function xhn(t,e){return Zh(t===void 0||t===""?e:["-S",t,...e])}function Ux(){return process.env.TMUX!==void 0&&process.env.TMUX!==""}function d8(){if(!Ux())return null;let t=Zh(["display-message","-p","#{session_name} #{window_id} #{pane_id}"]);if(!t.ok)return null;let[e,n,i]=t.stdout.split(" ");return{session:e,window:n,pane:i}}function e_t(t){let e=[];for(let[n,i]of Object.entries(t))e.push("-e",`${n}=${i}`);return e}function Ibe(t){let e=Zh(["new-window","-d","-a","-P","-F","#{window_id} #{pane_id}","-t",`${t.session}:`,"-n",t.name,"-c",t.cwd,...e_t(t.env),t.command]);if(!e.ok)return null;let[n,i]=e.stdout.split(" ");return n===void 0||n===""||i===void 0||i===""?null:{window:n,pane:i}}function qie(t,e){let n=Zh(["split-window","-d",...e.vertical===!0?[]:["-h"],...e.before===!0?["-b"]:[],...e.size!==void 0?["-l",String(e.size)]:[],"-P","-F","#{pane_id}","-t",t,"-c",e.cwd,...e_t(e.env),e.command]);return n.ok&&n.stdout!==""?n.stdout:null}function t_t(t,e){return Zh(["rename-window","-t",t,e]).ok}function Xj(t){return Zh(["kill-pane","-t",t]).ok}function n_t(t){let e=Zh(["display-message","-p","-t",t,"#{window_id}"]);return e.ok&&e.stdout!==""?e.stdout:null}function Zj(t){let e=Zh(["display-message","-p","-t",t,"#{session_name} #{window_id}"]);if(!e.ok)return null;let[n,i]=e.stdout.split(" ");return n===void 0||n===""||i===void 0||i===""?null:{session:n,window:i}}function EH(t){let e=Zh(["display-message","-p","-t",t,"#{pane_id}"]);return e.ok&&e.stdout===t}function f4e(t){let e=Zh(["display-message","-p","-t",t,"#{pane_id} #{pane_dead}"]);return e.ok&&e.stdout===`${t} 0`}function r_t(){let t=Zh(["list-panes","-a","-F","#{pane_id}"]);return t.ok?new Set(t.stdout.split(`
1734
1734
  `).filter(e=>e!=="")):null}function i_t(t){let e=Zh(["display-message","-p","-t",t,"#{pane_width} #{pane_height}"]);if(!e.ok)return null;let[n,i]=e.stdout.split(" "),s=Number.parseInt(n,10),a=Number.parseInt(i,10);return Number.isInteger(s)&&s>0&&Number.isInteger(a)&&a>0?{cols:s,rows:a}:null}function UB(t,e,n){return Zh(["set-option","-p","-t",t,e,n]).ok}function jB(t,e){let n=Zh(["show-options","-p","-t",t,"-q","-v",e]);return n.ok?n.stdout:void 0}var Pbe="@crtr_viewer_at",whn=0,Shn=Promise.resolve();function s_t(t){if(t==="")return;let e=Math.max(Date.now(),whn+1);whn=e,Shn=Shn.then(()=>new Promise(n=>{try{EJr("tmux",["set-option","-p","-t",t,Pbe,String(e)],()=>n())}catch{n()}}))}function CJr(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Zgt(t,e){let n=t.replace(/^"|"$/g,"");return new RegExp(`(?:^|\\s)surface\\s+attach\\s+to\\s+${CJr(e)}(?:\\s|$)`).test(n)}function TJr(){let t=Ehn("ps",["-ax","-o","pid=,ppid=,command="],{encoding:"utf8"});if(t.status!==0||typeof t.stdout!="string")return null;let e=new Map,n=new Map;for(let i of t.stdout.split(`
1735
1735
  `)){let s=/^\s*(\d+)\s+(\d+)\s+(.*)$/.exec(i);if(s===null)continue;let a=Number(s[1]),u=Number(s[2]);n.set(a,s[3]);let p=e.get(u)??[];p.push(a),e.set(u,p)}return{childrenOf:e,commandOf:n}}function kJr(t,e,n){let i=[e];for(;i.length>0;){let s=i.pop();if(Zgt(t.commandOf.get(s)??"",n))return!0;let a=t.childrenOf.get(s);a!==void 0&&i.push(...a)}return!1}function o_t(t){let e=xhn(t,["list-panes","-a","-F","#{pane_id} #{session_name} #{@crtr_node} #{@crtr_viewer_at}"]);if(!e.ok||e.stdout==="")return[];let n=[],i;for(let s of e.stdout.split(`