@north-light/cli 0.3.561 → 0.3.562

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 (573) hide show
  1. package/dist/api/client.d.ts +27 -4
  2. package/dist/api/client.js +3 -3
  3. package/dist/api/contract.d.ts +1 -1
  4. package/dist/api/contract.js +1 -1
  5. package/dist/api/dto/bash-jobs.d.ts +5 -1
  6. package/dist/api/dto/broker-ops.d.ts +25 -1
  7. package/dist/api/dto/charges.d.ts +9 -2
  8. package/dist/api/dto/delivery.d.ts +26 -2
  9. package/dist/api/dto/execution-start.d.ts +57 -0
  10. package/dist/api/dto/execution-start.js +0 -0
  11. package/dist/api/dto/modelauth.d.ts +5 -0
  12. package/dist/api/dto/node-records.d.ts +16 -0
  13. package/dist/api/dto/objects.d.ts +1 -1
  14. package/dist/api/dto/reports.d.ts +0 -3
  15. package/dist/api/dto/run-events.d.ts +7 -1
  16. package/dist/api/dto/settings.d.ts +55 -0
  17. package/dist/api/dto/settings.js +0 -0
  18. package/dist/api/index.d.ts +2 -0
  19. package/dist/api/index.js +1 -1
  20. package/dist/api/routes.d.ts +11 -0
  21. package/dist/api/routes.js +1 -1
  22. package/dist/builtin-memory/crouter-sdk/release-notes.md +4 -0
  23. package/dist/cli.js +7 -7
  24. package/dist/clients/attach/chrome/bash-jobs.d.ts +11 -1
  25. package/dist/clients/attach/chrome/bash-jobs.js +1 -1
  26. package/dist/clients/attach/chrome/canvas-panels.d.ts +1 -1
  27. package/dist/clients/attach/chrome/roster.js +6 -4
  28. package/dist/clients/attach/overlays/auth.js +2 -2
  29. package/dist/clients/attach/render/chat-view.js +1 -1
  30. package/dist/clients/attach/viewer.js +550 -567
  31. package/dist/commands/canvas-config.js +2 -2
  32. package/dist/commands/canvas-use.js +1 -1
  33. package/dist/commands/human.js +2 -2
  34. package/dist/commands/node/bash.js +3 -3
  35. package/dist/commands/node/create.js +2 -2
  36. package/dist/commands/person-settings.d.ts +1 -0
  37. package/dist/commands/person-settings.js +1 -0
  38. package/dist/commands/pkg/market-manage.d.ts +2 -2
  39. package/dist/commands/pkg/market-manage.js +1 -1
  40. package/dist/commands/pkg/plugin-manage.js +13 -13
  41. package/dist/commands/pkg/shared.js +1 -1
  42. package/dist/commands/profile/default.js +1 -1
  43. package/dist/commands/push.js +2 -3
  44. package/dist/commands/sys/config.js +1 -1
  45. package/dist/commands/sys/connect.js +1 -1
  46. package/dist/commands/sys/context/sysprompt.js +2 -2
  47. package/dist/commands/sys/doctor.js +1 -1
  48. package/dist/commands/sys/panels/broker-limits-panel.js +1 -1
  49. package/dist/commands/sys/panels/keybindings-panel.js +1 -1
  50. package/dist/commands/sys/panels/models-panel.d.ts +8 -2
  51. package/dist/commands/sys/panels/models-panel.js +1 -1
  52. package/dist/commands/sys/panels/prefs-panel.d.ts +1 -0
  53. package/dist/commands/sys/panels/prefs-panel.js +1 -1
  54. package/dist/commands/sys/panels/profiles-panel.js +1 -1
  55. package/dist/commands/sys/panels/provider-panel.d.ts +4 -0
  56. package/dist/commands/sys/panels/provider-panel.js +1 -1
  57. package/dist/commands/sys/provider-login.js +5 -5
  58. package/dist/commands/sys/setup-core.js +3 -3
  59. package/dist/commands/sys/setup-settings-runner.js +1 -1
  60. package/dist/commands/sys/spend.js +3 -3
  61. package/dist/commands/sys/update.js +1 -1
  62. package/dist/core/auth-file.d.ts +11 -19
  63. package/dist/core/auth-file.js +1 -2
  64. package/dist/core/auto-update.d.ts +1 -1
  65. package/dist/core/auto-update.js +4 -4
  66. package/dist/core/bash-jobs.d.ts +29 -71
  67. package/dist/core/bash-jobs.js +9 -10
  68. package/dist/core/blobs/directory.d.ts +3 -0
  69. package/dist/core/blobs/directory.js +1 -0
  70. package/dist/core/blobs/fault.d.ts +3 -0
  71. package/dist/core/blobs/fault.js +1 -0
  72. package/dist/core/blobs/index.d.ts +21 -0
  73. package/dist/core/blobs/index.js +1 -0
  74. package/dist/core/blobs/r2.d.ts +9 -0
  75. package/dist/core/blobs/r2.js +4 -0
  76. package/dist/core/bootstrap.d.ts +1 -1
  77. package/dist/core/bootstrap.js +2 -2
  78. package/dist/core/canvas/canvas.d.ts +9 -7
  79. package/dist/core/canvas/canvas.js +8 -8
  80. package/dist/core/canvas/crons.d.ts +3 -2
  81. package/dist/core/canvas/crons.js +3 -3
  82. package/dist/core/canvas/daemon-owner.d.ts +5 -0
  83. package/dist/core/canvas/daemon-owner.js +1 -1
  84. package/dist/core/canvas/db.d.ts +10 -9
  85. package/dist/core/canvas/db.js +4 -4
  86. package/dist/core/canvas/executions.d.ts +100 -4
  87. package/dist/core/canvas/executions.js +1 -1
  88. package/dist/core/canvas/export-sqlite.js +1 -1
  89. package/dist/core/canvas/focuses.d.ts +4 -0
  90. package/dist/core/canvas/focuses.js +1 -1
  91. package/dist/core/canvas/history.js +9 -9
  92. package/dist/core/canvas/managed-worktree-sweep-candidates.d.ts +2 -1
  93. package/dist/core/canvas/managed-worktree-sweep-candidates.js +3 -2
  94. package/dist/core/canvas/node-tokens.d.ts +1 -4
  95. package/dist/core/canvas/node-tokens.js +3 -3
  96. package/dist/core/canvas/paths.d.ts +0 -1
  97. package/dist/core/canvas/paths.js +1 -1
  98. package/dist/core/canvas/person-state.d.ts +26 -0
  99. package/dist/core/canvas/person-state.js +1 -0
  100. package/dist/core/canvas/person.d.ts +3 -10
  101. package/dist/core/canvas/person.js +7 -7
  102. package/dist/core/canvas/reconciler-leases.d.ts +12 -0
  103. package/dist/core/canvas/reconciler-leases.js +8 -0
  104. package/dist/core/canvas/recovery.d.ts +4 -0
  105. package/dist/core/canvas/recovery.js +1 -1
  106. package/dist/core/canvas/schema-pg/003-fleet-removals.sql +1 -1
  107. package/dist/core/canvas/schema-pg/005-fleet-blobs.sql +13 -0
  108. package/dist/core/canvas/schema-pg/006-job-rows.sql +20 -0
  109. package/dist/core/canvas/schema-pg/007-ledger-check.sql +117 -0
  110. package/dist/core/canvas/schema-version.d.ts +1 -1
  111. package/dist/core/canvas/schema-version.js +1 -1
  112. package/dist/core/canvas/sessions.d.ts +8 -11
  113. package/dist/core/canvas/sessions.js +1 -4
  114. package/dist/core/canvas/tree.d.ts +4 -2
  115. package/dist/core/canvas/tree.js +6 -6
  116. package/dist/core/canvas/types.d.ts +7 -0
  117. package/dist/core/command-hooks/transport/exec-lifecycle.js +1 -1
  118. package/dist/core/command-plugins/bundle.d.ts +1 -1
  119. package/dist/core/command-plugins/bundle.js +1 -1
  120. package/dist/core/command-plugins/compose.d.ts +1 -1
  121. package/dist/core/command-plugins/discovery.d.ts +0 -1
  122. package/dist/core/command-plugins/discovery.js +1 -1
  123. package/dist/core/command-plugins/help-addenda.js +1 -1
  124. package/dist/core/command-plugins/presence.d.ts +2 -0
  125. package/dist/core/command-plugins/presence.js +1 -1
  126. package/dist/core/config.d.ts +16 -15
  127. package/dist/core/config.js +1 -1
  128. package/dist/core/conversation-store/client-worker.js +1 -1
  129. package/dist/core/conversation-store/client.js +2 -2
  130. package/dist/core/conversation-store/index.d.ts +9 -11
  131. package/dist/core/conversation-store/index.js +1 -1
  132. package/dist/core/conversation-store/patch.js +1 -1
  133. package/dist/core/conversation-store/row-store.d.ts +14 -0
  134. package/dist/core/conversation-store/row-store.js +13 -0
  135. package/dist/core/directory/join.js +1 -1
  136. package/dist/core/env-name.d.ts +1 -0
  137. package/dist/core/env-name.js +1 -1
  138. package/dist/core/environment-recipe.d.ts +15 -0
  139. package/dist/core/environment-recipe.js +1 -0
  140. package/dist/core/environments.js +1 -1
  141. package/dist/core/events/emit.js +2 -2
  142. package/dist/core/events/run-event-chunks.d.ts +25 -0
  143. package/dist/core/events/run-event-chunks.js +5 -0
  144. package/dist/core/feed/messages.js +5 -5
  145. package/dist/core/grants/mirror.d.ts +15 -0
  146. package/dist/core/grants/mirror.js +15 -3
  147. package/dist/core/grants/on-sync.d.ts +9 -5
  148. package/dist/core/grants/on-sync.js +1 -1
  149. package/dist/core/grants/remove.d.ts +1 -6
  150. package/dist/core/grants/remove.js +1 -1
  151. package/dist/core/grants/sync.js +1 -1
  152. package/dist/core/grants/watch.d.ts +15 -9
  153. package/dist/core/grants/watch.js +1 -1
  154. package/dist/core/graph/custom.js +8 -8
  155. package/dist/core/graph/jobs.d.ts +83 -5
  156. package/dist/core/graph/jobs.js +11 -2
  157. package/dist/core/graph/kinds/job.js +2 -2
  158. package/dist/core/graph/names.js +7 -7
  159. package/dist/core/graph/objects.d.ts +5 -1
  160. package/dist/core/graph/objects.js +11 -11
  161. package/dist/core/graph/reader.d.ts +3 -0
  162. package/dist/core/graph/reader.js +3 -3
  163. package/dist/core/graph/repo-sync/identity.d.ts +3 -1
  164. package/dist/core/graph/repo-sync/identity.js +1 -1
  165. package/dist/core/graph/repo-sync/repos.d.ts +1 -1
  166. package/dist/core/graph/repo-sync/repos.js +2 -2
  167. package/dist/core/graph/repo-sync/sync.js +2 -2
  168. package/dist/core/installed-plugins.js +1 -1
  169. package/dist/core/keybindings/persistence.d.ts +1 -1
  170. package/dist/core/keybindings/persistence.js +1 -1
  171. package/dist/core/layout-migrate/loose-keys.d.ts +1 -1
  172. package/dist/core/layout-migrate/loose-keys.js +1 -1
  173. package/dist/core/ledger/account.d.ts +12 -0
  174. package/dist/core/ledger/account.js +2 -0
  175. package/dist/core/ledger/charges.d.ts +2 -2
  176. package/dist/core/ledger/charges.js +1 -1
  177. package/dist/core/ledger/check.d.ts +5 -1
  178. package/dist/core/ledger/check.js +1 -7
  179. package/dist/core/ledger/chunks.d.ts +8 -0
  180. package/dist/core/ledger/chunks.js +2 -0
  181. package/dist/core/ledger/index.d.ts +2 -1
  182. package/dist/core/ledger/index.js +1 -1
  183. package/dist/core/ledger/infra-allowance.d.ts +9 -0
  184. package/dist/core/ledger/infra-allowance.js +1 -0
  185. package/dist/core/ledger/limits.js +3 -3
  186. package/dist/core/ledger/payer.d.ts +1 -1
  187. package/dist/core/ledger/payer.js +1 -1
  188. package/dist/core/ledger/read.d.ts +14 -4
  189. package/dist/core/ledger/read.js +2 -3
  190. package/dist/core/ledger/totals.d.ts +5 -16
  191. package/dist/core/ledger/totals.js +4 -4
  192. package/dist/core/ledger/types.d.ts +12 -3
  193. package/dist/core/llm/run.js +2 -2
  194. package/dist/core/managed-providers.d.ts +72 -0
  195. package/dist/core/managed-providers.js +1 -0
  196. package/dist/core/model-auth/api-credential-store.d.ts +10 -0
  197. package/dist/core/model-auth/api-credential-store.js +1 -0
  198. package/dist/core/model-auth/daemon-login.d.ts +1 -1
  199. package/dist/core/model-auth/daemon-login.js +1 -1
  200. package/dist/core/model-auth/flows.d.ts +5 -4
  201. package/dist/core/model-auth/flows.js +1 -1
  202. package/dist/core/model-auth/handoff-jti.d.ts +3 -4
  203. package/dist/core/model-auth/handoff-jti.js +1 -1
  204. package/dist/core/model-auth/readiness.js +1 -1
  205. package/dist/core/model-config.d.ts +1 -1
  206. package/dist/core/model-config.js +1 -1
  207. package/dist/core/model-routes-pool.d.ts +14 -0
  208. package/dist/core/model-routes-pool.js +1 -0
  209. package/dist/core/model-routes.d.ts +11 -16
  210. package/dist/core/model-routes.js +1 -1
  211. package/dist/core/peer/ingest.d.ts +2 -0
  212. package/dist/core/peer/ingest.js +1 -1
  213. package/dist/core/peer/stubs.d.ts +8 -0
  214. package/dist/core/peer/stubs.js +1 -1
  215. package/dist/core/permissions/evaluator.d.ts +7 -2
  216. package/dist/core/permissions/evaluator.js +2 -2
  217. package/dist/core/plugin-env.js +1 -1
  218. package/dist/core/pool-credential-store.d.ts +2 -5
  219. package/dist/core/pool-credential-store.js +1 -1
  220. package/dist/core/profiles/app-env-store.d.ts +5 -5
  221. package/dist/core/profiles/app-env-store.js +1 -2
  222. package/dist/core/profiles/default-binding.d.ts +5 -5
  223. package/dist/core/profiles/default-binding.js +1 -1
  224. package/dist/core/profiles/env-store.d.ts +10 -21
  225. package/dist/core/profiles/env-store.js +1 -2
  226. package/dist/core/profiles/manifest.d.ts +14 -18
  227. package/dist/core/profiles/manifest.js +1 -1
  228. package/dist/core/profiles/relocate.js +1 -1
  229. package/dist/core/profiles/select.js +21 -21
  230. package/dist/core/provider-credential.d.ts +1 -1
  231. package/dist/core/provider-credential.js +1 -1
  232. package/dist/core/provider-management.d.ts +3 -4
  233. package/dist/core/provider-management.js +1 -1
  234. package/dist/core/providers/bundles.js +2 -2
  235. package/dist/core/providers/call.d.ts +3 -34
  236. package/dist/core/providers/description.d.ts +34 -0
  237. package/dist/core/providers/description.js +0 -0
  238. package/dist/core/providers/token-cache.d.ts +14 -14
  239. package/dist/core/providers/token-cache.js +1 -1
  240. package/dist/core/review/companion.js +1 -1
  241. package/dist/core/runs/activity.d.ts +1 -1
  242. package/dist/core/runs/activity.js +1 -1
  243. package/dist/core/runs/events.d.ts +7 -5
  244. package/dist/core/runs/events.js +2 -6
  245. package/dist/core/runs/operations.d.ts +1 -1
  246. package/dist/core/runs/operations.js +6 -6
  247. package/dist/core/runtime/bearings.js +1 -1
  248. package/dist/core/runtime/broker/attachments-fetch.d.ts +5 -0
  249. package/dist/core/runtime/broker/attachments-fetch.js +1 -0
  250. package/dist/core/runtime/broker/bash-job-launch.d.ts +4 -2
  251. package/dist/core/runtime/broker/bash-job-launch.js +1 -1
  252. package/dist/core/runtime/broker/boot-state.d.ts +9 -0
  253. package/dist/core/runtime/broker/boot-state.js +1 -0
  254. package/dist/core/runtime/broker/cli-relay.d.ts +2 -1
  255. package/dist/core/runtime/broker/cli-relay.js +1 -1
  256. package/dist/core/runtime/broker/client-registry.d.ts +3 -3
  257. package/dist/core/runtime/broker/daemon-ops.d.ts +10 -1
  258. package/dist/core/runtime/broker/daemon-ops.js +1 -1
  259. package/dist/core/runtime/broker/fault-retry.d.ts +2 -0
  260. package/dist/core/runtime/broker/fault-retry.js +1 -1
  261. package/dist/core/runtime/broker/frame-engine-control.js +1 -1
  262. package/dist/core/runtime/broker/held-deferred-inbox.d.ts +3 -0
  263. package/dist/core/runtime/broker/held-deferred-inbox.js +1 -1
  264. package/dist/core/runtime/broker/job-reporter.d.ts +18 -0
  265. package/dist/core/runtime/broker/job-reporter.js +2 -0
  266. package/dist/core/runtime/broker/model-adapter.d.ts +3 -0
  267. package/dist/core/runtime/broker/model-adapter.js +3 -2
  268. package/dist/core/runtime/broker/signal-stream.js +1 -1
  269. package/dist/core/runtime/broker/spilled-body.d.ts +5 -0
  270. package/dist/core/runtime/broker/spilled-body.js +1 -0
  271. package/dist/core/runtime/broker/summaries-post.d.ts +5 -0
  272. package/dist/core/runtime/broker/summaries-post.js +1 -0
  273. package/dist/core/runtime/broker/tool-groups.d.ts +3 -0
  274. package/dist/core/runtime/broker/tool-groups.js +1 -1
  275. package/dist/core/runtime/broker/turn-replies.d.ts +1 -0
  276. package/dist/core/runtime/broker/turn-replies.js +1 -1
  277. package/dist/core/runtime/broker-persona-guidance.js +2 -2
  278. package/dist/core/runtime/broker.js +1 -1
  279. package/dist/core/runtime/deliver-live.js +1 -1
  280. package/dist/core/runtime/first-boot-rows.d.ts +8 -0
  281. package/dist/core/runtime/first-boot-rows.js +2 -0
  282. package/dist/core/runtime/fleet.d.ts +13 -12
  283. package/dist/core/runtime/front-door-login.js +1 -1
  284. package/dist/core/runtime/front-door.js +6 -6
  285. package/dist/core/runtime/headless-pi.js +1 -1
  286. package/dist/core/runtime/host.d.ts +14 -3
  287. package/dist/core/runtime/host.js +3 -3
  288. package/dist/core/runtime/invocation.d.ts +6 -0
  289. package/dist/core/runtime/kickoff.d.ts +2 -14
  290. package/dist/core/runtime/kickoff.js +17 -19
  291. package/dist/core/runtime/launch-config-worker.js +1 -1
  292. package/dist/core/runtime/launch.js +2 -2
  293. package/dist/core/runtime/model-registry.js +1 -1
  294. package/dist/core/runtime/node-read.d.ts +4 -6
  295. package/dist/core/runtime/node-read.js +3 -3
  296. package/dist/core/runtime/nodes.js +1 -1
  297. package/dist/core/runtime/outcome-document.d.ts +0 -1
  298. package/dist/core/runtime/outcome-document.js +1 -1
  299. package/dist/core/runtime/output-result.d.ts +15 -0
  300. package/dist/core/runtime/output-result.js +5 -0
  301. package/dist/core/runtime/placement.d.ts +17 -1
  302. package/dist/core/runtime/placement.js +1 -1
  303. package/dist/core/runtime/provider-credential-gate.d.ts +6 -2
  304. package/dist/core/runtime/provider-credential-gate.js +2 -2
  305. package/dist/core/runtime/recovery-hold.d.ts +21 -2
  306. package/dist/core/runtime/recovery-hold.js +2 -1
  307. package/dist/core/runtime/recycle.js +1 -1
  308. package/dist/core/runtime/reset.js +1 -1
  309. package/dist/core/runtime/revive.d.ts +2 -2
  310. package/dist/core/runtime/revive.js +2 -2
  311. package/dist/core/runtime/runner/blaxel/client.d.ts +81 -0
  312. package/dist/core/runtime/runner/blaxel/client.js +1 -0
  313. package/dist/core/runtime/runner/blaxel/image-build.d.ts +74 -0
  314. package/dist/core/runtime/runner/blaxel/image-build.js +5 -0
  315. package/dist/core/runtime/runner/blaxel/runner.d.ts +41 -0
  316. package/dist/core/runtime/runner/blaxel/runner.js +3 -0
  317. package/dist/core/runtime/runner/index.d.ts +8 -0
  318. package/dist/core/runtime/runner/index.js +1 -0
  319. package/dist/core/runtime/runner/process.d.ts +11 -0
  320. package/dist/core/runtime/runner/process.js +1 -0
  321. package/dist/core/runtime/runner/types.d.ts +95 -0
  322. package/dist/core/runtime/runner/types.js +0 -0
  323. package/dist/core/runtime/situational-context.d.ts +3 -6
  324. package/dist/core/runtime/situational-context.js +2 -2
  325. package/dist/core/runtime/situational-live.js +1 -1
  326. package/dist/core/runtime/spawn-env-rows.d.ts +5 -0
  327. package/dist/core/runtime/spawn-env-rows.js +1 -0
  328. package/dist/core/runtime/spawn-env.d.ts +4 -18
  329. package/dist/core/runtime/spawn-env.js +1 -1
  330. package/dist/core/runtime/spawn.js +2 -2
  331. package/dist/core/runtime/stop-guard.d.ts +1 -1
  332. package/dist/core/runtime/stop-guard.js +2 -8
  333. package/dist/core/runtime/structured-output.d.ts +0 -67
  334. package/dist/core/runtime/structured-output.js +3 -8
  335. package/dist/core/runtime/tmux-driver.d.ts +8 -0
  336. package/dist/core/runtime/tmux-driver.js +6 -6
  337. package/dist/core/runtime/view-socket.d.ts +20 -0
  338. package/dist/core/runtime/view-socket.js +3 -1
  339. package/dist/core/runtime/warm-pool.d.ts +13 -1
  340. package/dist/core/runtime/warm-pool.js +1 -1
  341. package/dist/core/scoped-state/legacy-profiles.d.ts +11 -0
  342. package/dist/core/scoped-state/legacy-profiles.js +1 -0
  343. package/dist/core/scoped-state/materialized-plugins.d.ts +18 -0
  344. package/dist/core/scoped-state/materialized-plugins.js +1 -0
  345. package/dist/core/scoped-state/migrate.d.ts +8 -1
  346. package/dist/core/scoped-state/migrate.js +3 -3
  347. package/dist/core/scoped-state/person-rows.d.ts +10 -0
  348. package/dist/core/scoped-state/person-rows.js +6 -0
  349. package/dist/core/scoped-state/person-store.d.ts +72 -0
  350. package/dist/core/scoped-state/person-store.js +1 -0
  351. package/dist/core/secrets/blaxel-launch.d.ts +24 -0
  352. package/dist/core/secrets/blaxel-launch.js +4 -0
  353. package/dist/core/secrets/blaxel-register.d.ts +2 -0
  354. package/dist/core/secrets/blaxel-register.js +1 -0
  355. package/dist/core/secrets/env-rows.d.ts +17 -0
  356. package/dist/core/secrets/env-rows.js +4 -0
  357. package/dist/core/secrets/environment-owner.d.ts +8 -0
  358. package/dist/core/secrets/environment-owner.js +1 -0
  359. package/dist/core/secrets/environment-secrets.d.ts +14 -0
  360. package/dist/core/secrets/environment-secrets.js +1 -0
  361. package/dist/core/secrets/index.d.ts +2 -0
  362. package/dist/core/secrets/index.js +1 -0
  363. package/dist/core/secrets/key.d.ts +3 -0
  364. package/dist/core/secrets/key.js +2 -0
  365. package/dist/core/secrets/seal.d.ts +18 -0
  366. package/dist/core/secrets/seal.js +1 -0
  367. package/dist/core/spaces/mounts.d.ts +1 -1
  368. package/dist/core/spaces/mounts.js +1 -1
  369. package/dist/core/spaces/process.d.ts +1 -1
  370. package/dist/core/spaces/stop.d.ts +7 -5
  371. package/dist/core/spaces/stop.js +2 -2
  372. package/dist/core/spaces/users.d.ts +2 -1
  373. package/dist/core/spaces/users.js +1 -1
  374. package/dist/core/storage/attachments.d.ts +11 -8
  375. package/dist/core/storage/attachments.js +1 -1
  376. package/dist/core/storage/tables.d.ts +4 -0
  377. package/dist/core/storage/tables.js +3 -3
  378. package/dist/core/subscription-state.d.ts +34 -72
  379. package/dist/core/subscription-state.js +1 -4
  380. package/dist/core/substrate/delivery/plan.js +1 -1
  381. package/dist/core/user-settings.js +1 -1
  382. package/dist/daemon/api/app-listener.js +10 -10
  383. package/dist/daemon/api/auth/person-bearer.d.ts +14 -0
  384. package/dist/daemon/api/auth/person-bearer.js +1 -0
  385. package/dist/daemon/api/bridge.js +4 -4
  386. package/dist/daemon/api/document-listener.js +3 -3
  387. package/dist/daemon/api/environment-of.d.ts +18 -0
  388. package/dist/daemon/api/environment-of.js +5 -0
  389. package/dist/daemon/api/handlers/analytics.js +1 -1
  390. package/dist/daemon/api/handlers/app-profiles.d.ts +2 -2
  391. package/dist/daemon/api/handlers/app-profiles.js +1 -1
  392. package/dist/daemon/api/handlers/bash-jobs.js +1 -1
  393. package/dist/daemon/api/handlers/bash.js +1 -1
  394. package/dist/daemon/api/handlers/broker-ops.d.ts +3 -0
  395. package/dist/daemon/api/handlers/broker-ops.js +1 -1
  396. package/dist/daemon/api/handlers/broker-recovery.js +1 -1
  397. package/dist/daemon/api/handlers/broker-signals.d.ts +0 -3
  398. package/dist/daemon/api/handlers/broker-signals.js +2 -2
  399. package/dist/daemon/api/handlers/canvas.js +4 -4
  400. package/dist/daemon/api/handlers/charges.d.ts +1 -1
  401. package/dist/daemon/api/handlers/charges.js +1 -1
  402. package/dist/daemon/api/handlers/conversations.d.ts +2 -0
  403. package/dist/daemon/api/handlers/conversations.js +3 -0
  404. package/dist/daemon/api/handlers/crons.js +1 -1
  405. package/dist/daemon/api/handlers/daemon.js +1 -1
  406. package/dist/daemon/api/handlers/delivery.d.ts +1 -1
  407. package/dist/daemon/api/handlers/delivery.js +1 -1
  408. package/dist/daemon/api/handlers/docs.js +1 -1
  409. package/dist/daemon/api/handlers/exec.js +1 -1
  410. package/dist/daemon/api/handlers/execution-start.d.ts +2 -0
  411. package/dist/daemon/api/handlers/execution-start.js +2 -0
  412. package/dist/daemon/api/handlers/files.js +1 -1
  413. package/dist/daemon/api/handlers/git-credential.d.ts +11 -0
  414. package/dist/daemon/api/handlers/git-credential.js +1 -0
  415. package/dist/daemon/api/handlers/hook-exec.d.ts +1 -1
  416. package/dist/daemon/api/handlers/hook-exec.js +1 -1
  417. package/dist/daemon/api/handlers/human-requests.js +1 -1
  418. package/dist/daemon/api/handlers/inbox.js +1 -1
  419. package/dist/daemon/api/handlers/messages.js +1 -1
  420. package/dist/daemon/api/handlers/model-config.js +1 -1
  421. package/dist/daemon/api/handlers/modelauth.d.ts +1 -1
  422. package/dist/daemon/api/handlers/modelauth.js +1 -1
  423. package/dist/daemon/api/handlers/node-events.d.ts +6 -0
  424. package/dist/daemon/api/handlers/node-events.js +3 -3
  425. package/dist/daemon/api/handlers/node-outcomes.js +1 -1
  426. package/dist/daemon/api/handlers/node-records.js +3 -2
  427. package/dist/daemon/api/handlers/nodes.js +1 -1
  428. package/dist/daemon/api/handlers/objects.js +3 -3
  429. package/dist/daemon/api/handlers/profiles.js +1 -1
  430. package/dist/daemon/api/handlers/providers.js +1 -1
  431. package/dist/daemon/api/handlers/reports.js +9 -13
  432. package/dist/daemon/api/handlers/reviews.js +1 -1
  433. package/dist/daemon/api/handlers/runs.js +1 -1
  434. package/dist/daemon/api/handlers/settings.d.ts +2 -0
  435. package/dist/daemon/api/handlers/settings.js +1 -0
  436. package/dist/daemon/api/handlers/structured-requests.js +1 -1
  437. package/dist/daemon/api/handlers/vendor-status.d.ts +1 -1
  438. package/dist/daemon/api/handlers/vendor-status.js +1 -1
  439. package/dist/daemon/api/handlers/worktree.js +1 -1
  440. package/dist/daemon/api/map.d.ts +2 -2
  441. package/dist/daemon/api/map.js +2 -2
  442. package/dist/daemon/api/operations.js +1 -1
  443. package/dist/daemon/api/reader.d.ts +8 -1
  444. package/dist/daemon/api/reader.js +1 -1
  445. package/dist/daemon/api/router.d.ts +4 -2
  446. package/dist/daemon/api/router.js +1 -1
  447. package/dist/daemon/api/server.d.ts +15 -3
  448. package/dist/daemon/api/server.js +1 -1
  449. package/dist/daemon/api/vendor-signin.d.ts +2 -1
  450. package/dist/daemon/api/vendor-signin.js +19 -19
  451. package/dist/daemon/api/viewer-presence.d.ts +20 -6
  452. package/dist/daemon/api/viewer-presence.js +2 -1
  453. package/dist/daemon/broker-signals/bus.d.ts +48 -11
  454. package/dist/daemon/broker-signals/bus.js +1 -1
  455. package/dist/daemon/cron/armed-context.js +1 -1
  456. package/dist/daemon/cron/lease-recovery.js +1 -1
  457. package/dist/daemon/cron/live-runs.d.ts +6 -0
  458. package/dist/daemon/cron/live-runs.js +1 -1
  459. package/dist/daemon/cron/run-socket.js +1 -1
  460. package/dist/daemon/cron-run.js +2 -2
  461. package/dist/daemon/crtrd-cli.js +1 -1
  462. package/dist/daemon/crtrd.d.ts +10 -0
  463. package/dist/daemon/crtrd.js +18 -17
  464. package/dist/daemon/delivery/run-delivery.d.ts +1 -1
  465. package/dist/daemon/delivery/run-delivery.js +1 -1
  466. package/dist/daemon/due-sources.d.ts +1 -1
  467. package/dist/daemon/due-sources.js +1 -1
  468. package/dist/daemon/due.js +7 -6
  469. package/dist/daemon/fleet.d.ts +6 -6
  470. package/dist/daemon/fleet.js +9 -9
  471. package/dist/daemon/park-activity.d.ts +2 -1
  472. package/dist/daemon/park-activity.js +1 -1
  473. package/dist/daemon/park-pending.d.ts +20 -13
  474. package/dist/daemon/park-pending.js +3 -1
  475. package/dist/daemon/profile-delete.js +1 -1
  476. package/dist/daemon/reconcilers/bash-deadline.d.ts +15 -10
  477. package/dist/daemon/reconcilers/bash-deadline.js +1 -3
  478. package/dist/daemon/reconcilers/broker-supervision.d.ts +13 -3
  479. package/dist/daemon/reconcilers/broker-supervision.js +4 -4
  480. package/dist/daemon/reconcilers/cron-lane.d.ts +0 -1
  481. package/dist/daemon/reconcilers/cron-lane.js +1 -1
  482. package/dist/daemon/reconcilers/fault-retry-backstop.d.ts +2 -9
  483. package/dist/daemon/reconcilers/fault-retry-backstop.js +1 -1
  484. package/dist/daemon/reconcilers/grant-effects.d.ts +8 -0
  485. package/dist/daemon/reconcilers/grant-effects.js +1 -0
  486. package/dist/daemon/reconcilers/grove-instance-sweep.d.ts +1 -3
  487. package/dist/daemon/reconcilers/grove-instance-sweep.js +1 -1
  488. package/dist/daemon/reconcilers/ledger-r2.d.ts +27 -0
  489. package/dist/daemon/reconcilers/ledger-r2.js +7 -0
  490. package/dist/daemon/reconcilers/ledger-sandbox.d.ts +55 -0
  491. package/dist/daemon/reconcilers/ledger-sandbox.js +9 -0
  492. package/dist/daemon/reconcilers/ledger-storage.d.ts +22 -0
  493. package/dist/daemon/reconcilers/ledger-storage.js +5 -0
  494. package/dist/daemon/reconcilers/live-obligation.d.ts +3 -2
  495. package/dist/daemon/reconcilers/live-obligation.js +1 -1
  496. package/dist/daemon/reconcilers/managed-worktree-sweep.d.ts +0 -5
  497. package/dist/daemon/reconcilers/managed-worktree-sweep.js +1 -1
  498. package/dist/daemon/reconcilers/node-deadline.d.ts +2 -1
  499. package/dist/daemon/reconcilers/node-deadline.js +1 -1
  500. package/dist/daemon/reconcilers/node-lifecycle/freeze-lane.d.ts +1 -2
  501. package/dist/daemon/reconcilers/node-lifecycle/freeze-lane.js +1 -1
  502. package/dist/daemon/reconcilers/node-lifecycle/remote-wake.d.ts +31 -0
  503. package/dist/daemon/reconcilers/node-lifecycle/remote-wake.js +1 -0
  504. package/dist/daemon/reconcilers/node-lifecycle/requested-stops.d.ts +5 -0
  505. package/dist/daemon/reconcilers/node-lifecycle/requested-stops.js +2 -0
  506. package/dist/daemon/reconcilers/node-lifecycle/tick.js +1 -1
  507. package/dist/daemon/reconcilers/pending-review-submit.js +1 -1
  508. package/dist/daemon/reconcilers/recipe-image.d.ts +49 -0
  509. package/dist/daemon/reconcilers/recipe-image.js +7 -0
  510. package/dist/daemon/reconcilers/row-claim.d.ts +19 -0
  511. package/dist/daemon/reconcilers/row-claim.js +2 -0
  512. package/dist/daemon/reconcilers/storage-due-work.d.ts +18 -3
  513. package/dist/daemon/reconcilers/storage-due-work.js +2 -1
  514. package/dist/daemon/reconcilers/storage-maintenance.d.ts +5 -13
  515. package/dist/daemon/reconcilers/storage-maintenance.js +1 -1
  516. package/dist/daemon/reconcilers/structured-request-lane.js +1 -1
  517. package/dist/daemon/reconcilers/throttled-lane.d.ts +11 -0
  518. package/dist/daemon/reconcilers/throttled-lane.js +1 -0
  519. package/dist/daemon/review/finish.js +1 -1
  520. package/dist/daemon/run-notices.d.ts +3 -0
  521. package/dist/daemon/run-notices.js +1 -1
  522. package/dist/daemon/runs/append-section.d.ts +4 -1
  523. package/dist/daemon/runs/append-section.js +2 -2
  524. package/dist/daemon/runs/observer.d.ts +3 -2
  525. package/dist/daemon/runs/observer.js +3 -2
  526. package/dist/daemon/runs/view-transport.d.ts +19 -0
  527. package/dist/daemon/runs/view-transport.js +1 -0
  528. package/dist/daemon/structured-requests/boot.d.ts +2 -1
  529. package/dist/daemon/structured-requests/boot.js +1 -1
  530. package/dist/daemon/structured-requests/effects.d.ts +4 -3
  531. package/dist/daemon/structured-requests/effects.js +1 -1
  532. package/dist/daemon/structured-requests/notifier.d.ts +2 -0
  533. package/dist/daemon/structured-requests/notifier.js +1 -1
  534. package/dist/daemon/structured-requests/sidecar.d.ts +4 -3
  535. package/dist/daemon/structured-requests/sidecar.js +1 -1
  536. package/dist/launcher/validate.js +1 -1
  537. package/dist/migrations/004-canvas-documents/index.js +2 -2
  538. package/dist/pi-extensions/broker-local.d.ts +3 -3
  539. package/dist/pi-extensions/broker-local.js +1 -2
  540. package/dist/pi-extensions/canvas-bash-valve.js +6 -6
  541. package/dist/pi-extensions/canvas-context-intro.js +2 -2
  542. package/dist/pi-extensions/canvas-elapsed.js +2 -2
  543. package/dist/pi-extensions/canvas-goal-capture.js +1 -1
  544. package/dist/pi-extensions/canvas-inbox-watcher.js +2 -2
  545. package/dist/pi-extensions/canvas-review-boundary.d.ts +11 -1
  546. package/dist/pi-extensions/canvas-review-boundary.js +3 -3
  547. package/dist/pi-extensions/canvas-stophook.js +1 -1
  548. package/dist/pi-extensions/canvas-structured-output.d.ts +5 -3
  549. package/dist/pi-extensions/canvas-structured-output.js +6 -11
  550. package/dist/pi-extensions/canvas-tool-guide.d.ts +9 -2
  551. package/dist/pi-extensions/canvas-tool-guide.js +6 -6
  552. package/dist/shared/inbox-entry-body.js +7 -7
  553. package/dist/types.d.ts +12 -0
  554. package/docs/sdk/release-notes.md +4 -0
  555. package/package.json +7 -4
  556. package/packages/crouter-identity/package.json +1 -1
  557. package/runtime.lock.json +13 -13
  558. package/scripts/git-credential-crtr +33 -0
  559. package/scripts/sandbox-bootstrap.sh +54 -0
  560. package/scripts/sandbox-start.mjs +320 -0
  561. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.d.ts +0 -78
  562. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.js +0 -1179
  563. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.ts +0 -1406
  564. package/dist/core/conversation-store/file-store.d.ts +0 -37
  565. package/dist/core/conversation-store/file-store.js +0 -9
  566. package/dist/core/conversation-store/listener.d.ts +0 -4
  567. package/dist/core/conversation-store/listener.js +0 -8
  568. package/dist/core/scoped-state/profiles.d.ts +0 -27
  569. package/dist/core/scoped-state/profiles.js +0 -1
  570. package/dist/core/scoped-state/providers.d.ts +0 -24
  571. package/dist/core/scoped-state/providers.js +0 -1
  572. package/dist/core/scoped-state/settings.d.ts +0 -28
  573. package/dist/core/scoped-state/settings.js +0 -1
@@ -1,37 +0,0 @@
1
- import { type SessionEntry, type SessionHeader } from '@earendil-works/pi-coding-agent';
2
- import { type ConversationStore } from './index.js';
3
- /** What one write does to a conversation. A create names its node; an append or replace
4
- * goes to the conversation's current owner. */
5
- export type ConversationWrite = {
6
- kind: 'create';
7
- nodeId: string;
8
- path: string;
9
- sourceId?: string;
10
- entries: SessionEntry[];
11
- } | {
12
- kind: 'append';
13
- entries: SessionEntry[];
14
- } | {
15
- kind: 'replace';
16
- };
17
- /** One coherent write: the canvas step, `write()` (returns the new file size), then commit. */
18
- export type AppendSection = (conversationId: string, change: ConversationWrite, write: () => number) => Promise<void>;
19
- /** The canvas side of the store: the write section, and each conversation's current owner. */
20
- export interface ConversationCanvas {
21
- appendSection: AppendSection;
22
- owners(): Promise<Map<string, string>>;
23
- createPath?(nodeId: string, header: SessionHeader): Promise<string>;
24
- pathFor?(id: string): Promise<string | undefined>;
25
- repair?(id: string, path: string): Promise<void>;
26
- abortCreate?(id: string): Promise<void>;
27
- delete?(id: string): Promise<void>;
28
- }
29
- export declare function sessionDirectory(root: string, cwd: string): string;
30
- export declare function createFileStore(root: string, canvas: ConversationCanvas): ConversationStore & {
31
- recover(rows: Array<{
32
- session_id: string;
33
- node_id: string;
34
- transcript_path: string | null;
35
- }>): void;
36
- repair(id: string): void;
37
- };
@@ -1,9 +0,0 @@
1
- var G=Object.defineProperty;var u=(l,o)=>G(l,"name",{value:o,configurable:!0});import{randomUUID as J}from"node:crypto";import{closeSync as v,createReadStream as K,existsSync as $,fsyncSync as M,mkdirSync as L,openSync as z,readFileSync as C,readSync as k,renameSync as Q,rmSync as T,statSync as S,unlinkSync as O,writeFileSync as j}from"node:fs";import{createInterface as V}from"node:readline";import{dirname as X,join as F,relative as Y,resolve as b}from"node:path";import{SessionManager as Z}from"@earendil-works/pi-coding-agent";import{ConversationNotFoundError as I}from"./index.js";function E(l){const o=[];for(const w of l.split(`
2
- `))if(w.trim())try{o.push(JSON.parse(w))}catch{}return o}u(E,"parseLines");function ee(l){const o=z(l,"r");try{const w=Buffer.allocUnsafe(4096);let f="";for(;;){const h=k(o,w,0,w.length,null);f+=w.toString("utf8",0,h);let d=f.indexOf(`
3
- `);for(;d!==-1||h===0;){const m=d===-1?f:f.slice(0,d),[y]=E(m);if(y!==void 0)return y;if(d===-1)return;f=f.slice(d+1),d=f.indexOf(`
4
- `)}}}finally{v(o)}}u(ee,"firstLine");function te(l,o){const w=z(l,"r");try{const f=Buffer.alloc(1);return k(w,f,0,1,o-1),f[0]}finally{v(w)}}u(te,"lastByte");function P(l,o){return[l,...o].map(w=>`${JSON.stringify(w)}
5
- `).join("")}u(P,"lines");function W(l,o){const w=`--${b(o).replace(/^[/\\]/,"").replace(/[/\\:]/g,"-")}--`;return F(l,w)}u(W,"sessionDirectory");function A(l){return`${l.timestamp.replace(/[:.]/g,"-")}_${l.id}.jsonl`}u(A,"fileName");function fe(l,o){const{appendSection:w}=o,f=new Map,h=new Map;L(l,{recursive:!0,mode:448});const d=new Set;async function m(t){if(d.has(t))return;const e=await y(t);if(await o.repair?.(t,e),!$(e)){f.delete(t),h.delete(t);return}d.add(t)}u(m,"repair");async function y(t){const e=f.get(t)??await o.pathFor?.(t);if(!e)throw new I(t);return f.set(t,e),e}u(y,"pathFor");async function x(t){await m(t);const e=await y(t),r=E(C(e,"utf8")),n=r.shift();if(n?.type!=="session"||n.id!==t)throw new Error(`invalid conversation: ${t}`);return{header:n,entries:r,path:e}}u(x,"read");function B(t,e){const r=ee(e);return r?.type==="session"&&r.id===t?r:void 0}u(B,"validHeader");async function N(t){const e=await y(t),r=B(t,e);if(!r)throw new Error(`invalid conversation: ${t}`);return{header:r,path:e}}u(N,"headerOf");async function H(t,e){await m(t);const{header:r,path:n}=await N(t),c=S(n).size;if(c<=e.head+e.tail)return await x(t);const i=z(n,"r");try{const a=u((R,_)=>{if(_<=0)return[];const U=Buffer.allocUnsafe(_),q=k(i,U,0,_,R);return U.subarray(0,q).toString("utf8").split(`
6
- `)},"slice"),s=a(0,e.head),p=a(c-e.tail,e.tail);s.pop(),p.shift();const g=E(s.join(`
7
- `));return g[0]?.type==="session"&&g.shift(),{header:r,entries:g,tail:E(p.join(`
8
- `)),path:n}}finally{v(i)}}u(H,"readWindow");async function D(t,e,r,n,c){if(f.has(e.id))throw new Error(`conversation already exists: ${e.id}`);const i=Y(l,n);if(i.startsWith("..")||i===""||b(n)===b(l))throw new Error("conversation path outside store root");if(L(X(n),{recursive:!0,mode:448}),$(n))throw new Error(`conversation file already exists: ${n}`);let a=!1;try{const s=u(()=>{const p=z(n,"wx",384);a=!0;try{return j(p,P(e,r)),M(p),a=!1,S(n).size}finally{v(p)}},"write");return t===void 0?s():await w(e.id,{kind:"create",nodeId:t,path:n,entries:r,...c?{sourceId:c}:{}},s),f.set(e.id,n),e.id}catch(s){throw a||!$(n)?($(n)&&O(n),await o.abortCreate?.(e.id)):f.set(e.id,n),s}}return u(D,"createAt"),{recover(t){for(const e of t){if(!e.transcript_path)continue;const r=f.get(e.session_id);if(r&&r!==e.transcript_path)throw new Error(`conflicting conversation paths: ${e.session_id}`);f.set(e.session_id,e.transcript_path)}},repair:m,async readLines(t){await m(t);const e=await y(t),r=V({input:K(e),crlfDelay:1/0});return{path:e,lines:r}},async create(t,e,r,n){return await D(t,e,r,await o.createPath?.(t,e)??n??F(W(l,e.cwd),A(e)))},async append(t,e,r){if(e.length===0)return;await m(t);const n=await y(t);if(r?.dedupe){const i=new Set((await x(t)).entries.map(a=>a.id));if(e=e.filter(a=>!i.has(a.id)),e.length===0)return}const c=S(n).size;if(c>0&&te(n,c)!==10)throw new Error(`incomplete conversation tail: ${t}`);try{await w(t,{kind:"append",entries:e},()=>{const i=z(n,"a");try{return j(i,e.map(a=>`${JSON.stringify(a)}
9
- `).join("")),M(i),S(n).size}finally{v(i)}})}catch(i){throw d.delete(t),i}},async replace(t,e,r){await m(t);const n=await y(t);if(e.id!==t)throw new Error("replacement header id differs from conversation id");const c=C(n),i=u(s=>{const p=`${n}.${J()}.tmp`;try{j(p,s,{flag:"wx",mode:384});const g=z(p,"r");try{M(g)}finally{v(g)}Q(p,n)}finally{$(p)&&O(p)}},"swap");let a=!1;try{await w(t,{kind:"replace"},()=>(i(P(e,r)),a=!0,S(n).size))}catch(s){throw a&&i(c),s}finally{h.delete(t)}},async read(t,e){return e?await H(t,e):await x(t)},async header(t){await m(t);const{header:e,path:r}=await N(t),n=S(r);return{header:e,path:r,mtime:n.mtimeMs,size:n.size}},async fork(t,e,r,n){const c=await x(t);let i=c.entries;if(r!==void 0){const p=Z.inMemory(c.header.cwd,void 0,[c.header,...i]);p.createBranchedSession(r),i=p.getEntries()}const a=new Date().toISOString(),s={...c.header,id:J(),timestamp:a,cwd:n??c.header.cwd,parentSession:c.path};return await D(e,s,i,e&&o.createPath?await o.createPath(e,s):F(W(l,s.cwd),A(s)),t)},async list(t){const e=[],r=await o.owners();for(const n of new Set([...f.keys(),...r.keys()])){const c=r.get(n);if(t!==void 0&&c!==t||(await m(n),!f.has(n)))continue;const i=await y(n),a=S(i);let s=h.get(n);(!s||s.mtime!==a.mtimeMs||s.size!==a.size)&&(s={mtime:a.mtimeMs,size:a.size,header:B(n,i)},h.set(n,s)),s.header&&e.push({conversation_id:n,...c?{node_id:c}:{},header:s.header,mtime:a.mtimeMs,size:a.size,path:i})}return e.sort((n,c)=>c.mtime-n.mtime)},async delete(t,e){e===void 0?O(await y(t)):T(e,{force:!0}),await o.delete?.(t),f.delete(t),d.delete(t),h.delete(t)}}}u(fe,"createFileStore");export{fe as createFileStore,W as sessionDirectory};
@@ -1,4 +0,0 @@
1
- import { type ConversationStore } from './index.js';
2
- export declare function listenConversationStore(address: string, store: ConversationStore): Promise<{
3
- close(): Promise<void>;
4
- }>;
@@ -1,8 +0,0 @@
1
- var O=Object.defineProperty;var v=(o,n)=>O(o,"name",{value:n,configurable:!0});import{createServer as _}from"node:http";import{chmodSync as k,existsSync as N,unlinkSync as T}from"node:fs";import{isConversationNotFound as b}from"./index.js";import{resolveNodeToken as j}from"../canvas/node-tokens.js";import{conversationOwner as H}from"../canvas/sessions.js";import{peerUid as J}from"../../native/linux.js";async function x(o){const n=[];for await(const s of o)n.push(Buffer.from(s));return JSON.parse(Buffer.concat(n).toString("utf8"))}v(x,"body");function l(o,n,s){o.writeHead(n,{"content-type":"application/json"}),o.end(JSON.stringify(s))}v(l,"json");async function P(o,n,s){if(!n.readLines){const f=await n.read(s);o.writeHead(200,{"content-type":"application/x-ndjson","x-conversation-path":f.path}),o.end([f.header,...f.entries].map(d=>JSON.stringify(d)).join(`
2
- `)+`
3
- `);return}const{path:a,lines:e}=await n.readLines(s);let r=!1,c=0;for await(const f of e){if(!f.trim())continue;let d;try{d=JSON.parse(f)}catch{continue}if(!r){if(d.type!=="session"||d.id!==s)throw new Error(`invalid conversation: ${s}`);o.writeHead(200,{"content-type":"application/x-ndjson","x-conversation-path":a}),r=!0}const S=JSON.stringify(d)+`
4
- `;c+=Buffer.byteLength(S),c>=256*1024?(c=0,await new Promise((p,u)=>o.write(S,w=>w?u(w):p()))):o.write(S)}if(!r)throw new Error(`invalid conversation: ${s}`);o.end()}v(P,"fullRead");async function C(o,n){const s=_(async(a,e)=>{try{const r=a.headers.authorization,c=typeof r=="string"&&r.startsWith("Bearer ")?await j(r.slice(7)):null,f=new URL(a.url??"/","http://store"),d=f.pathname.split("/").filter(Boolean);if(r===void 0&&process.platform!=="linux"&&a.method==="GET"&&d[0]==="conversations"&&(d.length===1||d.length===2||d.length===3&&d[2]==="header")){const t=d[1];if(!t)l(e,200,{conversations:await n.list(f.searchParams.get("node_id")??void 0)});else if(d[2]==="header")l(e,200,await n.header(t));else{const y=f.searchParams.get("head"),h=f.searchParams.get("tail");if(y===null||h===null)await P(e,n,t);else{const g=await n.read(t,{head:Number(y),tail:Number(h)});e.writeHead(200,{"content-type":"application/x-ndjson","x-conversation-path":g.path,...g.tail?{"x-conversation-tail":String(1+g.entries.length)}:{}}),e.end([g.header,...g.entries,...g.tail??[]].map(E=>JSON.stringify(E)).join(`
5
- `)+`
6
- `)}}return}if(!c){l(e,401,{error:"unauthorized"});return}if(process.platform==="linux"){let t;try{t=J(a.socket)}catch{l(e,401,{error:"unauthorized"});return}if(t!==c.uid){l(e,401,{error:"unauthorized"});return}}const p=v(async t=>await H(t)===c.node,"owns"),u=v(()=>l(e,404,{error:"not_found"}),"notFound"),w=new URL(a.url??"/","http://store"),m=w.pathname.split("/").filter(Boolean);if(m[0]!=="conversations"){l(e,404,{error:"not_found"});return}const i=m[1];if(!i&&a.method==="POST"){const t=await x(a);if(t.node_id!==c.node){u();return}l(e,201,{conversation_id:await n.create(t.node_id,t.header,t.entries,t.path)})}else if(!i&&a.method==="GET"){if(w.searchParams.has("node_id")&&w.searchParams.get("node_id")!==c.node){u();return}l(e,200,{conversations:await n.list(c.node)})}else if(i&&m[2]==="entries"&&a.method==="POST"){if(!await p(i)){u();return}const t=await x(a);await n.append(i,t.entries,t.dedupe===!0?{dedupe:!0}:void 0),e.writeHead(204).end()}else if(i&&m[2]==="header"&&a.method==="GET"){if(!await p(i)){u();return}l(e,200,await n.header(i))}else if(i&&m[2]==="fork"&&a.method==="POST"){if(!await p(i)){u();return}const t=await x(a);if(t.node_id!==c.node){u();return}l(e,201,{conversation_id:await n.fork(i,c.node,t.leaf_id,t.cwd)})}else if(i&&m.length===2&&a.method==="GET"){if(!await p(i)){u();return}const t=w.searchParams.get("head"),y=w.searchParams.get("tail");if(t===null||y===null)await P(e,n,i);else{const h=await n.read(i,{head:Number(t),tail:Number(y)});e.writeHead(200,{"content-type":"application/x-ndjson","x-conversation-path":h.path,...h.tail?{"x-conversation-tail":String(1+h.entries.length)}:{}}),e.end([h.header,...h.entries,...h.tail??[]].map(g=>JSON.stringify(g)).join(`
7
- `)+`
8
- `)}}else if(i&&m.length===2&&a.method==="PUT"){if(!await p(i)){u();return}const t=await x(a);await n.replace(i,t.header,t.entries),e.writeHead(204).end()}else if(i&&m.length===2&&a.method==="DELETE"){if(!await p(i)){u();return}await n.delete(i),e.writeHead(204).end()}else l(e,404,{error:"not_found"})}catch(r){const c=r instanceof Error?r.message:String(r);e.headersSent?e.destroy(r instanceof Error?r:new Error(c)):l(e,b(r)?404:500,{error:c})}});if(N(o)&&T(o),await new Promise((a,e)=>{s.once("error",e),s.listen(o,()=>{s.off("error",e),a()})}),typeof s.address()!="string")throw s.close(),new Error(`store listener must bind a unix socket: ${JSON.stringify(s.address())}`);return k(o,process.platform==="linux"&&N("/run/crtr/launcher.sock")?438:384),{close:v(()=>new Promise((a,e)=>s.close(r=>r?e(r):a())),"close")}}v(C,"listenConversationStore");export{C as listenConversationStore};
@@ -1,27 +0,0 @@
1
- import type { ProfileManifest } from '../../types.js';
2
- export type StoredProfile = {
3
- profileId: string;
4
- manifest: ProfileManifest;
5
- };
6
- export declare function listStoredProfiles(root: string): StoredProfile[];
7
- export declare function getStoredProfile(root: string, id: string): StoredProfile | null;
8
- /** Pause gates need only this column; do not hydrate projects or JSON manifests. */
9
- export declare function profilePaused(root: string, id: string): boolean;
10
- export declare function pausedProfileIds(root: string): Set<string>;
11
- export declare function insertStoredProfile(root: string, profile: StoredProfile): void;
12
- export declare function updateStoredProfile(root: string, id: string, mutate: (current: ProfileManifest) => ProfileManifest): StoredProfile | null;
13
- export declare function deleteStoredProfile(root: string, id: string): boolean;
14
- export declare function rewriteLocalProfileGrantees(root: string): void;
15
- export declare function readStoredDefaults(root: string): Record<string, string>;
16
- export declare function mutateStoredDefaults(root: string, mutate: (current: Record<string, string>) => Record<string, string>): Record<string, string>;
17
- /** Pre-canvas per-project memory caps (`none|name|preview`) the canvas import has not converted yet. */
18
- export declare function listLegacyProjectCaps(root: string): Array<{
19
- profileId: string;
20
- path: string;
21
- memory: string;
22
- }>;
23
- /** Store each converted profile's delivery limits and delete every legacy cap row, in one write. */
24
- export declare function commitConvertedProjectCaps(root: string, limits: ReadonlyArray<{
25
- profileId: string;
26
- deliveryLimits: Record<string, string>;
27
- }>): void;
@@ -1 +0,0 @@
1
- var c=Object.defineProperty;var o=(t,e)=>c(t,"name",{value:e,configurable:!0});import{prepared as n}from"../sqlite-statements.js";import{canonicalRoot as m,userStore as S}from"./paths.js";import{profileSpace as R}from"../layout.js";import{openScopedStore as p,withScopedWrite as f}from"./db.js";import{LEGACY_LOCAL_PERSON as O}from"../canvas/legacy-person.js";function s(t){return S(t)}o(s,"store");function T(t,e){return{profileId:t.id,manifest:{schema_version:1,name:t.name,projects:e,paused_at:t.paused_at,...t.default_kind===null?{}:{default_kind:t.default_kind},...t.grantee===null?{}:{grantee:t.grantee},...t.environment_id===null?{}:{environment_id:t.environment_id},...t.delivery_limits_json==="{}"?{}:{delivery_limits:JSON.parse(t.delivery_limits_json)},...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}}}o(T,"rowToProfile");function _(t,e){const r=n(t,"SELECT id, name, created_at, last_used_at, paused_at, default_kind, grantee, metadata_json, delivery_limits_json, environment_id FROM profiles WHERE id=?").get(e);if(!r)return null;const i=n(t,"SELECT path FROM profile_projects WHERE profile_id=? ORDER BY position").all(e);return T(r,i)}o(_,"get");function v(t){const e=p(s(t));return n(e,"SELECT id FROM profiles ORDER BY rowid").all().map(({id:i})=>_(e,i)).filter(Boolean)}o(v,"listStoredProfiles");function k(t,e){return _(p(s(t)),e)}o(k,"getStoredProfile");function h(t,e){return n(p(s(t)),"SELECT paused_at FROM profiles WHERE id=?").get(e)?.paused_at!=null}o(h,"profilePaused");function D(t){const e=n(p(s(t)),"SELECT id FROM profiles WHERE paused_at IS NOT NULL").all();return new Set(e.map(r=>r.id))}o(D,"pausedProfileIds");function F(t,e){f(s(t),r=>{n(r,"INSERT INTO profiles(id,name,created_at,last_used_at,paused_at,default_kind,grantee,metadata_json,delivery_limits_json,environment_id) VALUES(?,?,?,?,?,?,?,?,?,?)").run(e.profileId,e.manifest.name,e.manifest.created_at,e.manifest.last_used_at,e.manifest.paused_at,e.manifest.default_kind??null,e.manifest.grantee??null,JSON.stringify(e.manifest.metadata??{}),JSON.stringify(e.manifest.delivery_limits??{}),e.manifest.environment_id??null),n(r,"INSERT INTO scope_owners(owner_key,kind,root,profile_id) VALUES(?,?,?,?)").run(`profile:${e.profileId}`,"profile",m(R(e.manifest.grantee??"app:terminal",e.profileId).dir),e.profileId);const i=n(r,"INSERT INTO profile_projects(profile_id,path,position) VALUES(?,?,?)");e.manifest.projects.forEach((l,a)=>i.run(e.profileId,l.path,a))})}o(F,"insertStoredProfile");function M(t,e,r){return f(s(t),i=>{const l=_(i,e);if(!l)return null;const a=r(l.manifest);n(i,"UPDATE profiles SET name=?, last_used_at=?, paused_at=?, default_kind=?, grantee=?, metadata_json=?, delivery_limits_json=?, environment_id=? WHERE id=?").run(a.name,a.last_used_at,a.paused_at,a.default_kind??null,a.grantee??null,JSON.stringify(a.metadata??{}),JSON.stringify(a.delivery_limits??{}),a.environment_id??null,e),n(i,"DELETE FROM profile_projects WHERE profile_id=?").run(e);const d=n(i,"INSERT INTO profile_projects(profile_id,path,position) VALUES(?,?,?)");return a.projects.forEach((u,E)=>d.run(e,u.path,E)),{profileId:e,manifest:a}})}o(M,"updateStoredProfile");function P(t,e){return f(s(t),r=>{if(!_(r,e))return!1;const i=`profile:${e}`;return n(r,"DELETE FROM scope_settings WHERE owner_key=?").run(i),n(r,"DELETE FROM scope_bookkeeping WHERE owner_key=?").run(i),n(r,"DELETE FROM scope_marketplaces WHERE owner_key=?").run(i),n(r,"DELETE FROM scope_plugins WHERE owner_key=?").run(i),n(r,"DELETE FROM scope_owners WHERE owner_key=?").run(i),n(r,"DELETE FROM profiles WHERE id=?").run(e),!0})}o(P,"deleteStoredProfile");function W(t){f(s(t),e=>{n(e,"UPDATE profiles SET grantee = 'app:terminal' WHERE grantee = ?").run(O)})}o(W,"rewriteLocalProfileGrantees");function x(t){const e=p(s(t));return Object.fromEntries(n(e,"SELECT directory,profile_id FROM profile_defaults").all().map(r=>[r.directory,r.profile_id]))}o(x,"readStoredDefaults");function H(t,e){return f(s(t),r=>{const i=Object.fromEntries(n(r,"SELECT directory,profile_id FROM profile_defaults").all().map(d=>[d.directory,d.profile_id])),l=e(i);n(r,"DELETE FROM profile_defaults").run();const a=n(r,"INSERT INTO profile_defaults(directory,profile_id) VALUES(?,?)");for(const[d,u]of Object.entries(l))a.run(d,u);return l})}o(H,"mutateStoredDefaults");function C(t){return n(p(s(t)),"SELECT profile_id, path, memory FROM legacy_project_caps ORDER BY profile_id, path").all().map(e=>({profileId:e.profile_id,path:e.path,memory:e.memory}))}o(C,"listLegacyProjectCaps");function A(t,e){f(s(t),r=>{const i=n(r,"UPDATE profiles SET delivery_limits_json=? WHERE id=?");for(const l of e)if(i.run(JSON.stringify(l.deliveryLimits),l.profileId).changes!==1)throw new Error(`no stored profile ${l.profileId}`);n(r,"DELETE FROM legacy_project_caps").run()})}o(A,"commitConvertedProjectCaps");export{A as commitConvertedProjectCaps,P as deleteStoredProfile,k as getStoredProfile,F as insertStoredProfile,C as listLegacyProjectCaps,v as listStoredProfiles,H as mutateStoredDefaults,D as pausedProfileIds,h as profilePaused,x as readStoredDefaults,W as rewriteLocalProfileGrantees,M as updateStoredProfile};
@@ -1,24 +0,0 @@
1
- import type { DatabaseSync } from 'node:sqlite';
2
- export type ProviderRow = {
3
- providerId: string;
4
- id: string;
5
- label: string;
6
- labelKey: string;
7
- position: number;
8
- lastAttemptAt: number;
9
- lastRateLimitedAt: number;
10
- rateLimitedUntil: number;
11
- authFailure?: 'invalid_grant';
12
- };
13
- /** One model family's cooldown on one account (`managed_account_model_cooldowns`). */
14
- export type ProviderModelCooldown = {
15
- family: string;
16
- rateLimitedUntil: number;
17
- lastRateLimitedAt: number;
18
- };
19
- export declare function providerRows(agentDir: string, providerId: string): ProviderRow[];
20
- export declare function providerRowByReference(db: DatabaseSync, providerId: string, ref: string): ProviderRow | undefined;
21
- export declare function providerModelCooldowns(db: DatabaseSync, providerId: string): Map<string, ProviderModelCooldown[]>;
22
- export declare function providerModelCooldownsFor(agentDir: string, providerId: string): Map<string, ProviderModelCooldown[]>;
23
- export declare function providerWrite<T>(agentDir: string, run: (db: DatabaseSync) => T): T;
24
- export declare function providerRevision(agentDir: string): number;
@@ -1 +0,0 @@
1
- var u=Object.defineProperty;var o=(t,e)=>u(t,"name",{value:e,configurable:!0});import{prepared as l}from"../sqlite-statements.js";import{openScopedStore as d,withScopedWrite as c}from"./db.js";import{providerStore as a}from"./paths.js";function _(t){return{providerId:t.provider_id,id:t.id,label:t.label,labelKey:t.label_key,position:t.position,lastAttemptAt:t.last_attempt_at,lastRateLimitedAt:t.last_rate_limited_at,rateLimitedUntil:t.rate_limited_until,...t.auth_failure?{authFailure:t.auth_failure}:{}}}o(_,"map");const p="provider_id,id,label,label_key,position,last_attempt_at,last_rate_limited_at,rate_limited_until,auth_failure";function S(t,e){return d(a(t)).prepare(`SELECT ${p} FROM managed_accounts WHERE provider_id=? ORDER BY position`).all(e).map(_)}o(S,"providerRows");function g(t,e,r){const i=r.trim().toLowerCase(),n=Number.parseInt(i,10),s=Number.isFinite(n)&&String(n)===i&&n>=1?t.prepare(`SELECT ${p} FROM managed_accounts WHERE provider_id=? AND position=?`).get(e,n-1):t.prepare(`SELECT ${p} FROM managed_accounts WHERE provider_id=? AND label_key=?`).get(e,i);return s?_(s):void 0}o(g,"providerRowByReference");function m(t,e){const r=new Map;for(const i of l(t,"SELECT account_id,family,rate_limited_until,last_rate_limited_at FROM managed_account_model_cooldowns WHERE provider_id=? ORDER BY family").all(e)){const n=r.get(i.account_id)??[];n.push({family:i.family,rateLimitedUntil:i.rate_limited_until,lastRateLimitedAt:i.last_rate_limited_at}),r.set(i.account_id,n)}return r}o(m,"providerModelCooldowns");function L(t,e){return m(d(a(t)),e)}o(L,"providerModelCooldownsFor");function b(t,e){return c(a(t),r=>{const i=e(r);return l(r,"UPDATE provider_revision SET revision=revision+1 WHERE singleton=1").run(),i})}o(b,"providerWrite");function y(t){const e=d(a(t));return l(e,"SELECT revision FROM provider_revision WHERE singleton=1").get().revision}o(y,"providerRevision");export{m as providerModelCooldowns,L as providerModelCooldownsFor,y as providerRevision,g as providerRowByReference,S as providerRows,b as providerWrite};
@@ -1,28 +0,0 @@
1
- import type { ScopeState } from '../../types.js';
2
- import type { ScopedStore } from './paths.js';
3
- export type SettingsOwner = {
4
- store: ScopedStore;
5
- key: string;
6
- kind: 'user' | 'profile' | 'project';
7
- root: string;
8
- profileId?: string;
9
- };
10
- export declare class SettingsRevisionConflictError extends Error {
11
- constructor();
12
- }
13
- export declare function readRawSettingsWithRevision(owner: SettingsOwner): {
14
- settings: Record<string, unknown> | null;
15
- revision: string;
16
- };
17
- export declare function readRawSettings(owner: SettingsOwner): Record<string, unknown> | null;
18
- export declare function replaceRawSettings(owner: SettingsOwner, next: Record<string, unknown>, ifRevision: string, validate: (settings: Record<string, unknown>) => void): {
19
- revision: string;
20
- changed: boolean;
21
- };
22
- export declare function writeRawSettings(owner: SettingsOwner, raw: Record<string, unknown>): void;
23
- export declare function mutateRawSettings<T>(owner: SettingsOwner, mutate: (current: Record<string, unknown>) => {
24
- value: T;
25
- next: Record<string, unknown>;
26
- }): T;
27
- export declare function readBookkeeping(owner: SettingsOwner): ScopeState;
28
- export declare function writeBookkeeping(owner: SettingsOwner, state: ScopeState): void;
@@ -1 +0,0 @@
1
- var k=Object.defineProperty;var a=(e,t)=>k(e,"name",{value:t,configurable:!0});import{prepared as r}from"../sqlite-statements.js";import{createHash as E}from"node:crypto";import{openScopedStore as p,withScopedWrite as _}from"./db.js";function l(e,t,n){const o=r(e,"SELECT kind, root, profile_id FROM scope_owners WHERE owner_key = ?").get(t.key);if(!o)throw new Error(`scoped SQL owner is missing: ${t.key}`);if(o.kind!==t.kind||(t.profileId??null)!==o.profile_id)throw new Error(`scoped SQL owner does not match its root: ${t.key}`);if(o.root===t.root)return;if(!(t.kind==="profile"&&t.profileId!==void 0)&&(t.kind!=="project"||t.store.kind!=="project"||t.store.root!==t.root))throw new Error(`scoped SQL owner does not match its root: ${t.key}`);n==="write"&&r(e,"UPDATE scope_owners SET root = ? WHERE owner_key = ?").run(t.root,t.key)}a(l,"ensureOwner");function u(e){return e===void 0?"absent":E("sha256").update(e.raw_json).digest("hex")}a(u,"revisionFor");function d(e,t){return r(e,"SELECT raw_json FROM scope_settings WHERE owner_key = ?").get(t.key)}a(d,"readRawSettingsRow");class f extends Error{static{a(this,"SettingsRevisionConflictError")}constructor(){super("settings changed since the supplied revision"),this.name="SettingsRevisionConflictError"}}function g(e){const t=p(e.store);l(t,e,"read");const n=d(t,e);return{revision:u(n),settings:n===void 0?null:JSON.parse(n.raw_json)}}a(g,"readRawSettingsWithRevision");function R(e){return g(e).settings}a(R,"readRawSettings");function h(e,t,n,o){return _(e.store,i=>{l(i,e,"write");const s=d(i,e);if(n!==u(s))throw new f;o(t);const c=JSON.stringify(t);return s?.raw_json===c?{revision:u(s),changed:!1}:(r(i,"INSERT INTO scope_settings(owner_key, raw_json) VALUES (?, ?) ON CONFLICT(owner_key) DO UPDATE SET raw_json=excluded.raw_json").run(e.key,c),{revision:u({raw_json:c}),changed:!0})})}a(h,"replaceRawSettings");function m(e,t){_(e.store,n=>{l(n,e,"write"),r(n,"INSERT INTO scope_settings(owner_key, raw_json) VALUES (?, ?) ON CONFLICT(owner_key) DO UPDATE SET raw_json=excluded.raw_json").run(e.key,JSON.stringify(t))})}a(m,"writeRawSettings");function v(e,t){return _(e.store,n=>{l(n,e,"write");const o=r(n,"SELECT raw_json FROM scope_settings WHERE owner_key = ?").get(e.key),i=t(o?JSON.parse(o.raw_json):{});return r(n,"INSERT INTO scope_settings(owner_key, raw_json) VALUES (?, ?) ON CONFLICT(owner_key) DO UPDATE SET raw_json=excluded.raw_json").run(e.key,JSON.stringify(i.next)),i.value})}a(v,"mutateRawSettings");function w(e){const t=p(e.store);l(t,e,"read");const n=r(t,"SELECT last_self_check, active_canvas FROM scope_bookkeeping WHERE owner_key = ?").get(e.key),o=Object.fromEntries(r(t,"SELECT name, last_updated FROM scope_marketplaces WHERE owner_key = ?").all(e.key).map(s=>[s.name,s.last_updated===null?{}:{last_updated:s.last_updated}])),i=Object.fromEntries(r(t,"SELECT name, last_updated, etag, checked_at FROM scope_plugins WHERE owner_key = ?").all(e.key).map(s=>[s.name,{...s.last_updated===null?{}:{last_updated:s.last_updated},...s.etag===null?{}:{etag:s.etag},...s.checked_at===null?{}:{checked_at:s.checked_at}}]));return{marketplaces:o,plugins:i,...n?.last_self_check===null||n===void 0?{}:{last_self_check:n.last_self_check},activeCanvas:n?.active_canvas??null}}a(w,"readBookkeeping");function N(e,t){_(e.store,n=>{l(n,e,"write"),r(n,"INSERT INTO scope_bookkeeping(owner_key, last_self_check, active_canvas) VALUES (?, ?, ?) ON CONFLICT(owner_key) DO UPDATE SET last_self_check=excluded.last_self_check, active_canvas=excluded.active_canvas").run(e.key,t.last_self_check??null,t.activeCanvas??null),r(n,"DELETE FROM scope_marketplaces WHERE owner_key = ?").run(e.key),r(n,"DELETE FROM scope_plugins WHERE owner_key = ?").run(e.key);const o=r(n,"INSERT INTO scope_marketplaces(owner_key, name, last_updated) VALUES (?, ?, ?)");for(const[s,c]of Object.entries(t.marketplaces))o.run(e.key,s,c.last_updated??null);const i=r(n,"INSERT INTO scope_plugins(owner_key, name, last_updated, etag, checked_at) VALUES (?, ?, ?, ?, ?)");for(const[s,c]of Object.entries(t.plugins))i.run(e.key,s,c.last_updated??null,c.etag??null,c.checked_at??null)})}a(N,"writeBookkeeping");export{f as SettingsRevisionConflictError,v as mutateRawSettings,w as readBookkeeping,R as readRawSettings,g as readRawSettingsWithRevision,h as replaceRawSettings,N as writeBookkeeping,m as writeRawSettings};