@wjarka/cezarion 0.15.1 → 0.16.0

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 (462) hide show
  1. package/README.md +167 -46
  2. package/dist/agent-config/catalog.d.ts +6 -2
  3. package/dist/agent-config/catalog.js +78 -3
  4. package/dist/agent-config/catalog.js.map +1 -1
  5. package/dist/agent-config/model-settings/shared.js +6 -3
  6. package/dist/agent-config/model-settings/shared.js.map +1 -1
  7. package/dist/agent-config/models.js +4 -0
  8. package/dist/agent-config/models.js.map +1 -1
  9. package/dist/agent-config/validate.js +6 -0
  10. package/dist/agent-config/validate.js.map +1 -1
  11. package/dist/artifacts/cli.js +10 -2
  12. package/dist/artifacts/cli.js.map +1 -1
  13. package/dist/automations/coordinator.d.ts +7 -0
  14. package/dist/automations/coordinator.js +22 -2
  15. package/dist/automations/coordinator.js.map +1 -1
  16. package/dist/automations/github-poller.d.ts +4 -4
  17. package/dist/automations/github-poller.js.map +1 -1
  18. package/dist/automations/schedule-runner.d.ts +130 -0
  19. package/dist/automations/schedule-runner.js +326 -0
  20. package/dist/automations/schedule-runner.js.map +1 -0
  21. package/dist/automations/scheduler.d.ts +38 -7
  22. package/dist/automations/scheduler.js +90 -22
  23. package/dist/automations/scheduler.js.map +1 -1
  24. package/dist/automations/store.d.ts +80 -3
  25. package/dist/automations/store.js +208 -16
  26. package/dist/automations/store.js.map +1 -1
  27. package/dist/automations/task-template.d.ts +42 -6
  28. package/dist/automations/task-template.js +152 -24
  29. package/dist/automations/task-template.js.map +1 -1
  30. package/dist/automations/types.d.ts +142 -6
  31. package/dist/automations/types.js +64 -6
  32. package/dist/automations/types.js.map +1 -1
  33. package/dist/autosave-holders.js +8 -12
  34. package/dist/autosave-holders.js.map +1 -1
  35. package/dist/ci-wait/client.d.ts +8 -1
  36. package/dist/ci-wait/client.js +43 -1
  37. package/dist/ci-wait/client.js.map +1 -1
  38. package/dist/ci-wait/controller.d.ts +83 -4
  39. package/dist/ci-wait/controller.js +76 -11
  40. package/dist/ci-wait/controller.js.map +1 -1
  41. package/dist/ci-wait/errors.d.ts +7 -1
  42. package/dist/ci-wait/errors.js +36 -0
  43. package/dist/ci-wait/errors.js.map +1 -1
  44. package/dist/ci-wait/github.d.ts +2 -0
  45. package/dist/ci-wait/github.js +3 -1
  46. package/dist/ci-wait/github.js.map +1 -1
  47. package/dist/ci-wait/mcp.d.ts +2 -98
  48. package/dist/ci-wait/mcp.js +11 -25
  49. package/dist/ci-wait/mcp.js.map +1 -1
  50. package/dist/ci-wait/supervisor.d.ts +2 -1
  51. package/dist/ci-wait/supervisor.js +2 -1
  52. package/dist/ci-wait/supervisor.js.map +1 -1
  53. package/dist/ci-wait/tools.d.ts +307 -0
  54. package/dist/ci-wait/tools.js +63 -0
  55. package/dist/ci-wait/tools.js.map +1 -0
  56. package/dist/config.d.ts +3 -0
  57. package/dist/config.js +7 -0
  58. package/dist/config.js.map +1 -1
  59. package/dist/contract/agent-config.d.ts +5 -0
  60. package/dist/contract/agent-profiles.d.ts +15 -0
  61. package/dist/contract/automation-schedule.d.ts +60 -0
  62. package/dist/contract/automations.d.ts +208 -36
  63. package/dist/contract/delegation.d.ts +96 -0
  64. package/dist/contract/discovery.d.ts +7 -0
  65. package/dist/contract/github.d.ts +1 -0
  66. package/dist/contract/health.d.ts +6 -0
  67. package/dist/contract/index.d.ts +3 -0
  68. package/dist/contract/index.js +1445 -745
  69. package/dist/contract/preview.d.ts +508 -0
  70. package/dist/contract/runs.d.ts +716 -15
  71. package/dist/contract/skills.d.ts +39 -0
  72. package/dist/contract/workflows.d.ts +6 -0
  73. package/dist/contract/workspace.d.ts +65 -0
  74. package/dist/contract/zoned-time.d.ts +35 -0
  75. package/dist/core/agent-env.d.ts +11 -0
  76. package/dist/core/agent-env.js +27 -5
  77. package/dist/core/agent-env.js.map +1 -1
  78. package/dist/core/agent-profiles.js +7 -0
  79. package/dist/core/agent-profiles.js.map +1 -1
  80. package/dist/core/agent-runner.d.ts +49 -1
  81. package/dist/core/agent-runner.js +2 -1
  82. package/dist/core/agent-runner.js.map +1 -1
  83. package/dist/core/backend-detect.d.ts +3 -2
  84. package/dist/core/backend-detect.js +27 -1
  85. package/dist/core/backend-detect.js.map +1 -1
  86. package/dist/core/claude-cli-runner.d.ts +1 -0
  87. package/dist/core/claude-cli-runner.js +69 -19
  88. package/dist/core/claude-cli-runner.js.map +1 -1
  89. package/dist/core/codex-app-server-runner.d.ts +1 -0
  90. package/dist/core/codex-app-server-runner.js +200 -25
  91. package/dist/core/codex-app-server-runner.js.map +1 -1
  92. package/dist/core/codex-app-server-transport.d.ts +7 -3
  93. package/dist/core/codex-app-server-transport.js +11 -9
  94. package/dist/core/codex-app-server-transport.js.map +1 -1
  95. package/dist/core/cursor-acp-runner.d.ts +1 -0
  96. package/dist/core/cursor-acp-runner.js +24 -9
  97. package/dist/core/cursor-acp-runner.js.map +1 -1
  98. package/dist/core/host-model-catalog.js +2 -0
  99. package/dist/core/host-model-catalog.js.map +1 -1
  100. package/dist/core/managed-session.js +2 -0
  101. package/dist/core/managed-session.js.map +1 -1
  102. package/dist/core/model-identity.js +2 -0
  103. package/dist/core/model-identity.js.map +1 -1
  104. package/dist/core/model-presets.js +3 -0
  105. package/dist/core/model-presets.js.map +1 -1
  106. package/dist/core/omp-model-catalog.d.ts +43 -0
  107. package/dist/core/omp-model-catalog.js +205 -0
  108. package/dist/core/omp-model-catalog.js.map +1 -0
  109. package/dist/core/omp-runner.d.ts +73 -0
  110. package/dist/core/omp-runner.js +990 -0
  111. package/dist/core/omp-runner.js.map +1 -0
  112. package/dist/core/omp-ui-mapper.d.ts +106 -0
  113. package/dist/core/omp-ui-mapper.js +882 -0
  114. package/dist/core/omp-ui-mapper.js.map +1 -0
  115. package/dist/core/opencode-server-runner.d.ts +18 -4
  116. package/dist/core/opencode-server-runner.js +337 -96
  117. package/dist/core/opencode-server-runner.js.map +1 -1
  118. package/dist/core/opencode-session-error.d.ts +11 -0
  119. package/dist/core/opencode-session-error.js +26 -0
  120. package/dist/core/opencode-session-error.js.map +1 -0
  121. package/dist/core/opencode-ui-mapper.js +4 -36
  122. package/dist/core/opencode-ui-mapper.js.map +1 -1
  123. package/dist/core/pi-runner.d.ts +1 -0
  124. package/dist/core/pi-runner.js +75 -12
  125. package/dist/core/pi-runner.js.map +1 -1
  126. package/dist/core/provider-auth.d.ts +9 -2
  127. package/dist/core/provider-auth.js +43 -6
  128. package/dist/core/provider-auth.js.map +1 -1
  129. package/dist/core/runner-factory.js +3 -0
  130. package/dist/core/runner-factory.js.map +1 -1
  131. package/dist/core/runner-model-catalog.js +1 -0
  132. package/dist/core/runner-model-catalog.js.map +1 -1
  133. package/dist/core/runner-stderr.d.ts +2 -0
  134. package/dist/core/runner-stderr.js +20 -0
  135. package/dist/core/runner-stderr.js.map +1 -0
  136. package/dist/core/session-process.d.ts +22 -0
  137. package/dist/core/session-process.js +202 -0
  138. package/dist/core/session-process.js.map +1 -0
  139. package/dist/core/ui-events.d.ts +1 -1
  140. package/dist/core/usage-limit.js +3 -60
  141. package/dist/core/usage-limit.js.map +1 -1
  142. package/dist/data-gitignore.d.ts +6 -0
  143. package/dist/data-gitignore.js +57 -0
  144. package/dist/data-gitignore.js.map +1 -0
  145. package/dist/delegation/capacity.d.ts +19 -0
  146. package/dist/delegation/capacity.js +34 -0
  147. package/dist/delegation/capacity.js.map +1 -0
  148. package/dist/delegation/cli.js +13 -4
  149. package/dist/delegation/cli.js.map +1 -1
  150. package/dist/delegation/conversations.d.ts +4 -2
  151. package/dist/delegation/conversations.js +8 -12
  152. package/dist/delegation/conversations.js.map +1 -1
  153. package/dist/delegation/credentials.d.ts +2 -0
  154. package/dist/delegation/credentials.js +10 -0
  155. package/dist/delegation/credentials.js.map +1 -1
  156. package/dist/delegation/destroy-observation.d.ts +42 -0
  157. package/dist/delegation/destroy-observation.js +115 -0
  158. package/dist/delegation/destroy-observation.js.map +1 -0
  159. package/dist/delegation/execution-identity.d.ts +6 -0
  160. package/dist/delegation/execution-identity.js +1 -1
  161. package/dist/delegation/execution-identity.js.map +1 -1
  162. package/dist/delegation/policy.d.ts +3 -2
  163. package/dist/delegation/policy.js +7 -5
  164. package/dist/delegation/policy.js.map +1 -1
  165. package/dist/delegation/process-liveness.d.ts +57 -20
  166. package/dist/delegation/process-liveness.js +114 -92
  167. package/dist/delegation/process-liveness.js.map +1 -1
  168. package/dist/delegation/provision.js +6 -6
  169. package/dist/delegation/provision.js.map +1 -1
  170. package/dist/delegation/results.js +4 -2
  171. package/dist/delegation/results.js.map +1 -1
  172. package/dist/delegation/retry-backoff.d.ts +23 -0
  173. package/dist/delegation/retry-backoff.js +18 -0
  174. package/dist/delegation/retry-backoff.js.map +1 -0
  175. package/dist/delegation/routes.d.ts +64 -58
  176. package/dist/delegation/scratch-cleanup.d.ts +29 -0
  177. package/dist/delegation/scratch-cleanup.js +143 -0
  178. package/dist/delegation/scratch-cleanup.js.map +1 -0
  179. package/dist/delegation/service.d.ts +20 -1
  180. package/dist/delegation/service.js +233 -70
  181. package/dist/delegation/service.js.map +1 -1
  182. package/dist/delegation/transport.d.ts +12 -6
  183. package/dist/delegation/workspace.d.ts +23 -4
  184. package/dist/delegation/workspace.js +147 -31
  185. package/dist/delegation/workspace.js.map +1 -1
  186. package/dist/git-worktree-lock-helper.js +8 -3
  187. package/dist/git-worktree-lock-helper.js.map +1 -1
  188. package/dist/git-worktree-lock.d.ts +6 -1
  189. package/dist/git-worktree-lock.js +10 -4
  190. package/dist/git-worktree-lock.js.map +1 -1
  191. package/dist/git-worktree-release.d.ts +20 -0
  192. package/dist/git-worktree-release.js +27 -0
  193. package/dist/git-worktree-release.js.map +1 -0
  194. package/dist/git-worktree.d.ts +8 -2
  195. package/dist/git-worktree.js +19 -2
  196. package/dist/git-worktree.js.map +1 -1
  197. package/dist/handoff.d.ts +2 -2
  198. package/dist/handoff.js +1 -1
  199. package/dist/index.js +109 -76
  200. package/dist/index.js.map +1 -1
  201. package/dist/paths.d.ts +1 -1
  202. package/dist/paths.js +5 -1
  203. package/dist/paths.js.map +1 -1
  204. package/dist/preview/cdp.d.ts +13 -0
  205. package/dist/preview/cdp.js +69 -0
  206. package/dist/preview/cdp.js.map +1 -0
  207. package/dist/preview/chromium.d.ts +75 -0
  208. package/dist/preview/chromium.js +394 -0
  209. package/dist/preview/chromium.js.map +1 -0
  210. package/dist/preview/dev-server.d.ts +68 -0
  211. package/dist/preview/dev-server.js +341 -0
  212. package/dist/preview/dev-server.js.map +1 -0
  213. package/dist/preview/host.d.ts +154 -0
  214. package/dist/preview/host.js +681 -0
  215. package/dist/preview/host.js.map +1 -0
  216. package/dist/preview/registration.d.ts +63 -0
  217. package/dist/preview/registration.js +109 -0
  218. package/dist/preview/registration.js.map +1 -0
  219. package/dist/preview/session.d.ts +73 -0
  220. package/dist/preview/session.js +347 -0
  221. package/dist/preview/session.js.map +1 -0
  222. package/dist/preview/url.d.ts +6 -0
  223. package/dist/preview/url.js +17 -0
  224. package/dist/preview/url.js.map +1 -0
  225. package/dist/runs/agent-tmpdir-removal.d.ts +15 -0
  226. package/dist/runs/agent-tmpdir-removal.js +60 -0
  227. package/dist/runs/agent-tmpdir-removal.js.map +1 -0
  228. package/dist/runs/agent-tmpdir.d.ts +12 -1
  229. package/dist/runs/agent-tmpdir.js +123 -34
  230. package/dist/runs/agent-tmpdir.js.map +1 -1
  231. package/dist/runs/delegation-state.d.ts +5 -1
  232. package/dist/runs/delegation-state.js +9 -0
  233. package/dist/runs/delegation-state.js.map +1 -1
  234. package/dist/runs/event-history.d.ts +4 -4
  235. package/dist/runs/event-history.js +97 -117
  236. package/dist/runs/event-history.js.map +1 -1
  237. package/dist/runs/history-compressor.d.ts +29 -0
  238. package/dist/runs/history-compressor.js +116 -0
  239. package/dist/runs/history-compressor.js.map +1 -0
  240. package/dist/runs/history-file.d.ts +36 -0
  241. package/dist/runs/history-file.js +463 -0
  242. package/dist/runs/history-file.js.map +1 -0
  243. package/dist/runs/human-ask-summary.js +18 -13
  244. package/dist/runs/human-ask-summary.js.map +1 -1
  245. package/dist/runs/legacy-index.d.ts +62 -0
  246. package/dist/runs/legacy-index.js +168 -0
  247. package/dist/runs/legacy-index.js.map +1 -0
  248. package/dist/runs/raw-record.d.ts +52 -0
  249. package/dist/runs/raw-record.js +145 -0
  250. package/dist/runs/raw-record.js.map +1 -0
  251. package/dist/runs/retention.d.ts +13 -6
  252. package/dist/runs/retention.js +42 -13
  253. package/dist/runs/retention.js.map +1 -1
  254. package/dist/runs/run-claims.d.ts +23 -0
  255. package/dist/runs/run-claims.js +24 -0
  256. package/dist/runs/run-claims.js.map +1 -0
  257. package/dist/runs/run-database.d.ts +385 -0
  258. package/dist/runs/run-database.js +930 -0
  259. package/dist/runs/run-database.js.map +1 -0
  260. package/dist/runs/run-index.d.ts +35 -9
  261. package/dist/runs/run-index.js +200 -25
  262. package/dist/runs/run-index.js.map +1 -1
  263. package/dist/runs/run-row.d.ts +44 -0
  264. package/dist/runs/run-row.js +84 -0
  265. package/dist/runs/run-row.js.map +1 -0
  266. package/dist/runs/run-search.d.ts +29 -0
  267. package/dist/runs/run-search.js +63 -0
  268. package/dist/runs/run-search.js.map +1 -0
  269. package/dist/runs/store-open-error.d.ts +24 -0
  270. package/dist/runs/store-open-error.js +61 -0
  271. package/dist/runs/store-open-error.js.map +1 -0
  272. package/dist/runs/store.d.ts +667 -32
  273. package/dist/runs/store.js +2153 -324
  274. package/dist/runs/store.js.map +1 -1
  275. package/dist/runs/transcript-facts.d.ts +77 -0
  276. package/dist/runs/transcript-facts.js +302 -0
  277. package/dist/runs/transcript-facts.js.map +1 -0
  278. package/dist/runs/webhook.js +5 -4
  279. package/dist/runs/webhook.js.map +1 -1
  280. package/dist/runs/worker-execution.d.ts +22 -0
  281. package/dist/runs/worker-execution.js +30 -0
  282. package/dist/runs/worker-execution.js.map +1 -0
  283. package/dist/server/capabilities.d.ts +1 -0
  284. package/dist/server/capabilities.js +2 -0
  285. package/dist/server/capabilities.js.map +1 -1
  286. package/dist/server/cockpit-ownership.d.ts +8 -0
  287. package/dist/server/cockpit-ownership.js +19 -0
  288. package/dist/server/cockpit-ownership.js.map +1 -1
  289. package/dist/server/forge/github.d.ts +1 -4
  290. package/dist/server/forge/github.js +47 -23
  291. package/dist/server/forge/github.js.map +1 -1
  292. package/dist/server/git.js +1 -1
  293. package/dist/server/git.js.map +1 -1
  294. package/dist/server/open-in-app.js +1 -0
  295. package/dist/server/open-in-app.js.map +1 -1
  296. package/dist/server/preview-socket.d.ts +36 -0
  297. package/dist/server/preview-socket.js +126 -0
  298. package/dist/server/preview-socket.js.map +1 -0
  299. package/dist/server/project-context.d.ts +31 -4
  300. package/dist/server/project-context.js +73 -9
  301. package/dist/server/project-context.js.map +1 -1
  302. package/dist/server/provider-action-gate.js +1 -0
  303. package/dist/server/provider-action-gate.js.map +1 -1
  304. package/dist/server/repo-branches.d.ts +4 -3
  305. package/dist/server/repo-branches.js +5 -4
  306. package/dist/server/repo-branches.js.map +1 -1
  307. package/dist/server/server.d.ts +4500 -2727
  308. package/dist/server/server.js +651 -202
  309. package/dist/server/server.js.map +1 -1
  310. package/dist/server/upgrade-router.d.ts +23 -0
  311. package/dist/server/upgrade-router.js +53 -0
  312. package/dist/server/upgrade-router.js.map +1 -0
  313. package/dist/server/validators.d.ts +6 -1
  314. package/dist/server/validators.js +4 -4
  315. package/dist/server/validators.js.map +1 -1
  316. package/dist/server/ws.d.ts +16 -16
  317. package/dist/server/ws.js +56 -54
  318. package/dist/server/ws.js.map +1 -1
  319. package/dist/skills-remote.d.ts +14 -0
  320. package/dist/skills-remote.js +91 -15
  321. package/dist/skills-remote.js.map +1 -1
  322. package/dist/task-cli/cli.js +40 -16
  323. package/dist/task-cli/cli.js.map +1 -1
  324. package/dist/task-cli/discovery.d.ts +4 -3
  325. package/dist/task-cli/discovery.js +4 -3
  326. package/dist/task-cli/discovery.js.map +1 -1
  327. package/dist/task-cli/http.d.ts +2 -0
  328. package/dist/task-cli/http.js +10 -4
  329. package/dist/task-cli/http.js.map +1 -1
  330. package/dist/task-cli/projections.d.ts +5 -2
  331. package/dist/task-cli/projections.js +13 -0
  332. package/dist/task-cli/projections.js.map +1 -1
  333. package/dist/task-cli/watch.d.ts +15 -2
  334. package/dist/task-cli/watch.js +31 -9
  335. package/dist/task-cli/watch.js.map +1 -1
  336. package/dist/ui-state.d.ts +4 -3
  337. package/dist/ui-state.js +8 -3
  338. package/dist/ui-state.js.map +1 -1
  339. package/dist/workflows/grouped-command.d.ts +31 -0
  340. package/dist/workflows/grouped-command.js +143 -0
  341. package/dist/workflows/grouped-command.js.map +1 -0
  342. package/dist/workflows/run.d.ts +223 -42
  343. package/dist/workflows/run.js +1316 -398
  344. package/dist/workflows/run.js.map +1 -1
  345. package/dist/workflows/types.d.ts +12 -0
  346. package/dist/workflows/types.js +20 -0
  347. package/dist/workflows/types.js.map +1 -1
  348. package/dist/workspace/agent-accounts.d.ts +5 -1
  349. package/dist/workspace/agent-accounts.js +1 -0
  350. package/dist/workspace/agent-accounts.js.map +1 -1
  351. package/dist/workspace/agent-profiles.js +1 -1
  352. package/dist/workspace/agent-profiles.js.map +1 -1
  353. package/dist/workspace/config.d.ts +3 -1
  354. package/dist/workspace/config.js +1 -0
  355. package/dist/workspace/config.js.map +1 -1
  356. package/dist/worktree-setup.d.ts +85 -0
  357. package/dist/worktree-setup.js +164 -0
  358. package/dist/worktree-setup.js.map +1 -0
  359. package/package.json +7 -5
  360. package/scripts/benchmark-run-store-fixture.ts +428 -0
  361. package/scripts/benchmark-run-store.ts +743 -0
  362. package/scripts/benchmark-stuck-destroys.ts +143 -0
  363. package/scripts/mock-autonomous.mjs +11 -0
  364. package/scripts/mock-ci-tool.mjs +20 -5
  365. package/scripts/mock-claude.mjs +110 -1
  366. package/scripts/mock-codex-app-server.mjs +117 -2
  367. package/scripts/mock-codex-coalesce-steer.mjs +59 -0
  368. package/scripts/mock-codex-reverse-steer.mjs +130 -0
  369. package/scripts/mock-cursor-acp.mjs +75 -1
  370. package/scripts/mock-omp-rpc.mjs +605 -0
  371. package/scripts/mock-opencode-serve.mjs +312 -22
  372. package/scripts/mock-pi-rpc.mjs +109 -3
  373. package/scripts/mock-runner-crash.mjs +42 -0
  374. package/scripts/mock-silent-tail.mjs +78 -0
  375. package/scripts/mock-turn-messages.mjs +5 -0
  376. package/scripts/omp-ci-wait.mjs +29 -0
  377. package/scripts/omp-restrict-delegation.yml +4 -0
  378. package/scripts/pi-ci-wait.mjs +12 -9
  379. package/scripts/seed-archive-profile.ts +3 -3
  380. package/web/dist/assets/agent-accounts-CFOBMVHc.js +1 -0
  381. package/web/dist/assets/alert-dialog-BrpNUwMt.js +1 -0
  382. package/web/dist/assets/app-window-CSHwDX9N.js +1 -0
  383. package/web/dist/assets/button-C_rd7CPp.js +43 -0
  384. package/web/dist/assets/compare-variants-D6WXhvXA.js +1 -0
  385. package/web/dist/assets/diff-DrEARXTV.js +3 -0
  386. package/web/dist/assets/diff-controls-B1-j7nFg.js +1 -0
  387. package/web/dist/assets/{diff-view-DPn6bQ5W.js → diff-view-DvGLjdTk.js} +3 -3
  388. package/web/dist/assets/dropdown-menu-BegOZFrj.js +1 -0
  389. package/web/dist/assets/format-DpNe3S0A.js +1 -0
  390. package/web/dist/assets/git-toolbar-Cw4ljmhB.js +1 -0
  391. package/web/dist/assets/github-CfV5sqL0.js +1 -0
  392. package/web/dist/assets/{image-preview-DJ8cgb1Z.js → image-preview-FOEfqpZP.js} +1 -1
  393. package/web/dist/assets/index-DgWWlOLy.js +13 -0
  394. package/web/dist/assets/index-fBFnuvxu.css +1 -0
  395. package/web/dist/assets/{nav-row-styles-3j64kH5s.js → nav-row-styles-vp2JbhuJ.js} +1 -1
  396. package/web/dist/assets/play-CmVAj_fu.js +1 -0
  397. package/web/dist/assets/popover-BohP6WTx.js +1 -0
  398. package/web/dist/assets/preview-pane-connected-qTA5KNoJ.js +3 -0
  399. package/web/dist/assets/preview-state-vuMviq6q.js +1 -0
  400. package/web/dist/assets/prompt-templates-Cubdut_C.js +15 -0
  401. package/web/dist/assets/repo-git-Cf4t5PD0.js +1 -0
  402. package/web/dist/assets/{run-diff-5-RRdcVz.js → run-diff-BpkUW37Z.js} +3 -3
  403. package/web/dist/assets/run-header-68WHf9wV.js +1 -0
  404. package/web/dist/assets/skills-DiVIgKeU.js +1 -0
  405. package/web/dist/assets/square-terminal-B6RYYieR.js +1 -0
  406. package/web/dist/assets/status-dot-CqTJHSP9.js +1 -0
  407. package/web/dist/assets/{tab-link-K0hjzEXR.js → tab-link-B07Hu4QX.js} +1 -1
  408. package/web/dist/assets/task-changes--lQF6EYf.js +1 -0
  409. package/web/dist/assets/task-commits-Cx0qy4DN.js +1 -0
  410. package/web/dist/assets/task-files-D50s-gKW.js +2 -0
  411. package/web/dist/assets/task-github-item-DaqmSwYT.js +1 -0
  412. package/web/dist/assets/task-thread-BPQ64lui.js +7 -0
  413. package/web/dist/assets/{task-thread-Bw_nQuTx.css → task-thread-zNE2Q9E-.css} +1 -1
  414. package/web/dist/assets/textarea-D20O4Pw0.js +1 -0
  415. package/web/dist/assets/thread-state-DWcFMrvb.js +4 -0
  416. package/web/dist/assets/use-hand-to-agent-state-BLIGmwbd.css +1 -0
  417. package/web/dist/assets/use-hand-to-agent-state-Cy9eyyfL.js +1 -0
  418. package/web/dist/assets/{utils-fzNfbPzA.js → utils-JsL3ZsJf.js} +1 -1
  419. package/web/dist/assets/workflows-jwG7uxqi.js +11 -0
  420. package/web/dist/assets/{zoomable-image-CDmZ_Rtl.js → zoomable-image-BJJ64KGc.js} +1 -1
  421. package/web/dist/cezarion-lockup-dark.svg +1 -13
  422. package/web/dist/cezarion-lockup-light.svg +1 -13
  423. package/web/dist/cezarion-mark-dark.svg +1 -12
  424. package/web/dist/cezarion-mark-light.svg +1 -12
  425. package/web/dist/index.html +16 -21
  426. package/web/dist/assets/agent-accounts-CU2ZDv24.js +0 -1
  427. package/web/dist/assets/alert-dialog-C-xYE_dg.js +0 -43
  428. package/web/dist/assets/chevron-right-BENZ-1ZN.js +0 -1
  429. package/web/dist/assets/collapsible-DD9J91Iv.js +0 -1
  430. package/web/dist/assets/compare-variants-5FmqpFSN.js +0 -1
  431. package/web/dist/assets/diff-controls-Bj0YrioE.js +0 -1
  432. package/web/dist/assets/diff-rE8rm75J2.js +0 -3
  433. package/web/dist/assets/diff-stat-BKDCSVfJ.js +0 -1
  434. package/web/dist/assets/dropdown-menu-Ch5BYQh_.js +0 -1
  435. package/web/dist/assets/format-dBiNDNVe.js +0 -1
  436. package/web/dist/assets/git-toolbar-ClVvf5iF.js +0 -1
  437. package/web/dist/assets/github-BkNOyour.css +0 -1
  438. package/web/dist/assets/github-DeZMeMwJ.js +0 -1
  439. package/web/dist/assets/github-item-detail-W5F6GVjF.js +0 -1
  440. package/web/dist/assets/github-sidebar-model-DcMu-IK2.js +0 -1
  441. package/web/dist/assets/highlighter-CdHqIwFr.js +0 -3
  442. package/web/dist/assets/index-CatemBEL.js +0 -8
  443. package/web/dist/assets/index-MvfD8bZJ.css +0 -1
  444. package/web/dist/assets/markdown-zdKeLIYA.js +0 -2
  445. package/web/dist/assets/mobile-run-bar-BCfmFi8V.js +0 -1
  446. package/web/dist/assets/prompt-templates-CBPp39IU.js +0 -15
  447. package/web/dist/assets/reference-chip-D6owncJT.js +0 -1
  448. package/web/dist/assets/repo-git-CtdkZFey.js +0 -1
  449. package/web/dist/assets/run-header-BcjoDi0W.js +0 -1
  450. package/web/dist/assets/sheet-ChnYVrp1.js +0 -1
  451. package/web/dist/assets/skills-C8YKp2vr.js +0 -1
  452. package/web/dist/assets/task-changes-BW8YdWG8.js +0 -1
  453. package/web/dist/assets/task-commits-q2kB2y6L.js +0 -1
  454. package/web/dist/assets/task-files-pPL6_3Cr.js +0 -2
  455. package/web/dist/assets/task-github-item-BXF5R52U.js +0 -1
  456. package/web/dist/assets/task-thread-DtkFL3EC.js +0 -10
  457. package/web/dist/assets/textarea-DxlkE-Yd.js +0 -1
  458. package/web/dist/assets/token-metrics-DIAjrPlM.js +0 -1
  459. package/web/dist/assets/use-desktop-CrDny2uG.js +0 -1
  460. package/web/dist/assets/use-submit-shortcut-KWJsC906.js +0 -1
  461. package/web/dist/assets/workflows-TmcPEj2K.js +0 -11
  462. /package/web/dist/assets/{lib-BQXq3kEf2.js → lib-BQXq3kEf.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-database.js","sourceRoot":"","sources":["../../src/runs/run-database.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,45 @@
1
- import { type RepoHandle, type RunRecord } from './store.ts';
1
+ import { type RunSummary } from '../contract/index.js';
2
+ import { type RepoHandle } from './store.ts';
3
+ /** A cold project's runs as list rows, and whether older archived roots were left out. */
4
+ export interface ColdRunIndex {
5
+ runs: RunSummary[];
6
+ truncated: boolean;
7
+ }
2
8
  /**
3
- * The READ-ONLY half of `runs.json`, for the workspace-level run index (`GET
9
+ * The READ-ONLY reader of a project's runs, for the workspace-level run index (`GET
4
10
  * /workspace/runs-index`) — the one place that must read a project's runs WITHOUT owning it.
5
11
  *
6
12
  * `RunStore.open` cannot be used here and the reason is the whole point of this module. Opening a
7
- * store `mkdir`s `<dataDir>/runs/`, and the caller that opens one goes on to build a
8
- * `ProjectContext` — which prunes orphan worktrees and calls `manager.recover()`, resuming
9
- * interrupted runs. Building the workspace index must never do any of that: answering "which
10
- * tasks exist" would restart agents across every registered project, and typing into a search box
11
- * would spend tokens. Cold projects are precisely the ones the index exists to reach, so
12
- * `contexts.peek()` (which returns nothing for them) is not an answer either.
13
+ * store `mkdir`s `<dataDir>/runs/`, migrates or imports `runs.db`, and the caller that opens one
14
+ * goes on to build a `ProjectContext` — which prunes orphan worktrees and calls
15
+ * `manager.recover()`, resuming interrupted runs. Building the workspace index must never do any
16
+ * of that: answering "which tasks exist" would restart agents across every registered project,
17
+ * and typing into a search box would spend tokens. Cold projects are precisely the ones the index
18
+ * exists to reach, so `contexts.peek()` (which returns nothing for them) is not an answer either.
19
+ *
20
+ * Once a project's `runs.db` has completed its import it is the only source: `runs.json` beside it
21
+ * is frozen history (#779). The rows — with `archivedWindow`, the run lists' window (#864): every
22
+ * unarchived run plus the newest archived roots — come from the stored summary column, read
23
+ * through a read-only connection that creates no directory or database and runs no migration.
24
+ * Before that, the legacy `runs.json` is parsed read-only, exactly as it always was. A database
25
+ * that exists but cannot be read contributes nothing — never the stale `runs.json` beside it.
13
26
  *
14
27
  * What this does share with the store is the schema and `reconcileLoadedRun`, so a `running` row
15
28
  * left behind by a crashed process reads as interrupted here exactly as it would once the project
16
29
  * were opened for real. A second, subtly different parse of that field would show a task as
17
30
  * running in the palette and failed the moment you clicked it.
18
31
  */
19
- export declare function readRunIndexFromDisk(dataDir: string, handle?: RepoHandle | null): RunRecord[];
32
+ export declare function readRunIndexFromDisk(dataDir: string, options?: {
33
+ handle?: RepoHandle | null;
34
+ archivedWindow?: number;
35
+ roots?: boolean;
36
+ }): ColdRunIndex;
37
+ /**
38
+ * A cold project's ROOT runs, archived or not, that match `query` (`matchesRunQuery`), newest
39
+ * first: at most `limit`, and whether more matched. The workspace search behind ⌘K (#864), with
40
+ * the same side-effect-free contract as `readRunIndexFromDisk`.
41
+ */
42
+ export declare function searchRunIndexFromDisk(dataDir: string, query: string, options: {
43
+ handle?: RepoHandle | null;
44
+ limit: number;
45
+ }): ColdRunIndex;
@@ -1,50 +1,225 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- import { reconcileLoadedRun, rescopeRun, parseRunRecords } from './store.js';
3
+ import { runSummarySchema, toRunSummary } from '../contract/index.js';
4
+ import { RUNS_DB_FILE, RUNS_IMPORT_COMPLETE_KEY, RunDatabase } from './run-database.js';
5
+ import { decodeRunRecord, LEGACY_INDEX_FILE, reconcileLoadedRun, rescopeRun, parseRunRecords } from './store.js';
4
6
  import { refreshHumanAskSummary } from './human-ask-summary.js';
7
+ import { matchesRunQuery, sqlPrefilterTokens } from './run-search.js';
8
+ const EMPTY = { runs: [], truncated: false };
9
+ /** Projects whose unreadable rows this process has already reported: ⌘K reads the index on every
10
+ * keystroke's request, and one warning per project is enough. */
11
+ const reportedUnreadable = new Set();
5
12
  /**
6
- * The READ-ONLY half of `runs.json`, for the workspace-level run index (`GET
13
+ * The READ-ONLY reader of a project's runs, for the workspace-level run index (`GET
7
14
  * /workspace/runs-index`) — the one place that must read a project's runs WITHOUT owning it.
8
15
  *
9
16
  * `RunStore.open` cannot be used here and the reason is the whole point of this module. Opening a
10
- * store `mkdir`s `<dataDir>/runs/`, and the caller that opens one goes on to build a
11
- * `ProjectContext` — which prunes orphan worktrees and calls `manager.recover()`, resuming
12
- * interrupted runs. Building the workspace index must never do any of that: answering "which
13
- * tasks exist" would restart agents across every registered project, and typing into a search box
14
- * would spend tokens. Cold projects are precisely the ones the index exists to reach, so
15
- * `contexts.peek()` (which returns nothing for them) is not an answer either.
17
+ * store `mkdir`s `<dataDir>/runs/`, migrates or imports `runs.db`, and the caller that opens one
18
+ * goes on to build a `ProjectContext` — which prunes orphan worktrees and calls
19
+ * `manager.recover()`, resuming interrupted runs. Building the workspace index must never do any
20
+ * of that: answering "which tasks exist" would restart agents across every registered project,
21
+ * and typing into a search box would spend tokens. Cold projects are precisely the ones the index
22
+ * exists to reach, so `contexts.peek()` (which returns nothing for them) is not an answer either.
23
+ *
24
+ * Once a project's `runs.db` has completed its import it is the only source: `runs.json` beside it
25
+ * is frozen history (#779). The rows — with `archivedWindow`, the run lists' window (#864): every
26
+ * unarchived run plus the newest archived roots — come from the stored summary column, read
27
+ * through a read-only connection that creates no directory or database and runs no migration.
28
+ * Before that, the legacy `runs.json` is parsed read-only, exactly as it always was. A database
29
+ * that exists but cannot be read contributes nothing — never the stale `runs.json` beside it.
16
30
  *
17
31
  * What this does share with the store is the schema and `reconcileLoadedRun`, so a `running` row
18
32
  * left behind by a crashed process reads as interrupted here exactly as it would once the project
19
33
  * were opened for real. A second, subtly different parse of that field would show a task as
20
34
  * running in the palette and failed the moment you clicked it.
21
35
  */
22
- export function readRunIndexFromDisk(dataDir, handle) {
23
- const indexPath = join(dataDir, 'runs.json');
36
+ export function readRunIndexFromDisk(dataDir, options = {}) {
37
+ return readCold(dataDir, EMPTY, (db) => readDatabase(db, dataDir, options), () => readLegacyIndex(dataDir, options));
38
+ }
39
+ /**
40
+ * A cold project's ROOT runs, archived or not, that match `query` (`matchesRunQuery`), newest
41
+ * first: at most `limit`, and whether more matched. The workspace search behind ⌘K (#864), with
42
+ * the same side-effect-free contract as `readRunIndexFromDisk`.
43
+ */
44
+ export function searchRunIndexFromDisk(dataDir, query, options) {
45
+ return readCold(dataDir, EMPTY, (db) => searchDatabase(db, dataDir, query, options), () => {
46
+ const { runs } = readLegacyIndex(dataDir, options);
47
+ return firstMatches(runs.filter((run) => run.delegation?.role !== 'worker'), query, options.limit);
48
+ });
49
+ }
50
+ /** The source rule both readers share: an imported `runs.db` is the only source, a `runs.db` that
51
+ * cannot be read contributes `empty`, and before the import the legacy `runs.json` is read. */
52
+ function readCold(dataDir, empty, fromDatabase, fromLegacy) {
53
+ let db;
54
+ try {
55
+ db = RunDatabase.openReadOnly(join(dataDir, RUNS_DB_FILE));
56
+ }
57
+ catch {
58
+ return empty;
59
+ }
60
+ if (db) {
61
+ try {
62
+ if (db.getMeta(RUNS_IMPORT_COMPLETE_KEY) !== undefined)
63
+ return fromDatabase(db);
64
+ }
65
+ catch {
66
+ return empty;
67
+ }
68
+ finally {
69
+ db.close();
70
+ }
71
+ }
72
+ return fromLegacy();
73
+ }
74
+ /** The newest `limit` of `runs` that match, and whether another one did. */
75
+ function firstMatches(runs, query, limit) {
76
+ const matched = [];
77
+ for (const run of runs) {
78
+ if (!matchesRunQuery(run, query))
79
+ continue;
80
+ if (matched.length === limit)
81
+ return { runs: matched, truncated: true };
82
+ matched.push(run);
83
+ }
84
+ return { runs: matched, truncated: false };
85
+ }
86
+ /** `runs` (newest first) with archived roots past `archivedWindow` cut, and whether any were. */
87
+ function applyWindow(runs, archivedWindow) {
88
+ if (archivedWindow === undefined)
89
+ return { runs, truncated: false };
90
+ let archived = 0;
91
+ const kept = runs.filter((run) => !run.archived || ++archived <= archivedWindow);
92
+ return { runs: kept, truncated: archived > archivedWindow };
93
+ }
94
+ function readDatabase(db, dataDir, { handle, archivedWindow, roots }) {
95
+ // One archived root past the window is how "there are older ones" is known without counting.
96
+ const rows = archivedWindow === undefined ? db.listSummaries() : db.listWindowSummaries(archivedWindow + 1, { roots });
97
+ return applyWindow(projectRows(db, rows, dataDir, handle), archivedWindow);
98
+ }
99
+ function searchDatabase(db, dataDir, query, { handle, limit }) {
100
+ // Match on the stored summary first, so only candidates pay for a decode; each candidate is
101
+ // projected and matched again as it is read, because reading it cold can drop a foreign
102
+ // reference it matched on. The scan stops at one match past the limit counted AFTER that, so
103
+ // dropped candidates can never use up the cap and hide an older real match (#864 review).
104
+ const matched = [];
105
+ db.visitRootSummaries(sqlPrefilterTokens(query), (row) => {
106
+ const summary = parseSummary(row.summary);
107
+ if (summary !== undefined && !matchesRunQuery(summary, query))
108
+ return true;
109
+ const [projected] = projectRows(db, [row], dataDir, handle);
110
+ if (projected && matchesRunQuery(projected, query))
111
+ matched.push(projected);
112
+ return matched.length <= limit;
113
+ });
114
+ return matched.length > limit ? { runs: matched.slice(0, limit), truncated: true } : { runs: matched, truncated: false };
115
+ }
116
+ /** Rows as list rows: the stored summary when reading cold cannot change it, else the decoded
117
+ * record projected as the store would. A row that decodes to nothing is left out. */
118
+ function projectRows(db, rows, dataDir, handle) {
119
+ const summaries = rows.map((row) => parseSummary(row.summary));
120
+ const decode = rows.filter((row, i) => {
121
+ const summary = summaries[i];
122
+ return summary === undefined || needsRecord(summary, handle);
123
+ });
124
+ const records = new Map(db.getMany(decode.map((row) => row.id)).map((row) => [row.id, decodeRunRecord(row.data)]));
125
+ const runs = [];
126
+ let unreadable = 0;
127
+ rows.forEach((row, i) => {
128
+ const summary = summaries[i];
129
+ if (summary !== undefined && !needsRecord(summary, handle)) {
130
+ runs.push(summary);
131
+ return;
132
+ }
133
+ // A row that decodes to nothing is one the store leaves out of its list rows too.
134
+ const record = records.get(row.id);
135
+ if (record)
136
+ runs.push(coldSummary(record, dataDir, handle));
137
+ else
138
+ unreadable++;
139
+ });
140
+ if (unreadable > 0 && !reportedUnreadable.has(dataDir)) {
141
+ reportedUnreadable.add(dataDir);
142
+ console.warn(`[cez] ${unreadable} run(s) in ${join(dataDir, RUNS_DB_FILE)} could not be read; they are left out of the run index and left in the database untouched.`);
143
+ }
144
+ return runs;
145
+ }
146
+ function parseSummary(text) {
147
+ try {
148
+ const parsed = runSummarySchema.safeParse(JSON.parse(text));
149
+ return parsed.success ? parsed.data : undefined;
150
+ }
151
+ catch {
152
+ return undefined;
153
+ }
154
+ }
155
+ /**
156
+ * Whether reading this run cold could change its stored summary: the questions
157
+ * `reconcileLoadedRun`, `rescopeRun` and the ask refresh would answer, asked of the summary. Only
158
+ * these runs pay for decoding their full record; every other row is served as stored.
159
+ *
160
+ * One case is invisible from here: a finished run that still carries an accepted Stop (`stopping`
161
+ * is not in the summary) would read as cancelled once its record were decoded. The writer clears
162
+ * `stopping` as the run settles, so that takes a crash inside that window.
163
+ */
164
+ function needsRecord(summary, handle) {
165
+ // A live-looking run reads as interrupted (or cancelled, after an accepted Stop).
166
+ if (summary.status === 'queued' || summary.status === 'running' || summary.status === 'waiting')
167
+ return true;
168
+ // Monitoring state, and a usage-limit resume on anything but a failed run, are cleared.
169
+ if (summary.activity !== undefined)
170
+ return true;
171
+ if (summary.autoResumeAt !== undefined && summary.status !== 'failed')
172
+ return true;
173
+ // A referenced PR that an older cezar's created-PR declaration erased is restored.
174
+ if (summary.referencedPullRequestUrl === undefined && summary.markerRefs?.pr !== undefined)
175
+ return true;
176
+ // A foreign reference the prompt does not corroborate is dropped; the prompt is in the record.
177
+ if (handle && (summary.referencedPullRequestUrl !== undefined || summary.referencedIssueUrl !== undefined))
178
+ return true;
179
+ // A root waiting on workers has its pending human question re-read from the transcript.
180
+ return summary.delegation?.role === 'root' && summary.delegation.wait !== undefined;
181
+ }
182
+ function readLegacyIndex(dataDir, { handle, archivedWindow, roots }) {
183
+ const indexPath = join(dataDir, LEGACY_INDEX_FILE);
24
184
  if (!existsSync(indexPath))
25
- return [];
185
+ return EMPTY;
26
186
  try {
27
187
  const raw = JSON.parse(readFileSync(indexPath, 'utf8'));
28
- const parsed = parseRunRecords(raw);
29
- if (!parsed.success)
30
- return [];
31
- // `reconcileLoadedRun` mutates, which is safe here in a way it is not in the store: these
32
- // records were just parsed into fresh objects that nothing else holds a reference to.
33
- // Never `keepLive` — this reader has no RunManager, so there is nothing to recover into.
34
- return parsed.data.map((run) => {
35
- if (run.delegation?.role === 'root' && (run.status === 'waiting' || run.delegation.wait !== undefined)) {
36
- refreshHumanAskSummary(run, dataDir);
37
- }
38
- reconcileLoadedRun(run);
39
- rescopeRun(run, handle);
40
- return run;
188
+ if (!Array.isArray(raw))
189
+ return EMPTY;
190
+ // A record that does not parse costs that record only, exactly as its import will (store.ts).
191
+ const records = raw.flatMap((entry) => {
192
+ const parsed = parseRunRecords([entry]);
193
+ return parsed.success ? parsed.data : [];
41
194
  });
195
+ // The window leaves archived workers out, as `RunDatabase.listWindowSummaries` does, and
196
+ // with `roots` every worker.
197
+ const listed = archivedWindow === undefined
198
+ ? records
199
+ : records.filter((run) => run.delegation?.role !== 'worker' || (!run.archived && !roots));
200
+ // Reconciling never moves `createdAt` or `archived`, so the window is cut before projecting.
201
+ const newest = listed.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
202
+ const { runs: kept, truncated } = applyWindow(newest, archivedWindow);
203
+ return { runs: kept.map((run) => coldSummary(run, dataDir, handle)), truncated };
42
204
  }
43
205
  catch {
44
206
  // Corrupt or unreadable index. A project that cannot be read contributes nothing to the
45
207
  // index rather than failing the whole workspace's search — the same degrade-quietly rule
46
208
  // the rest of the registry follows.
47
- return [];
209
+ return EMPTY;
210
+ }
211
+ }
212
+ /**
213
+ * One record read cold, as its list row. `reconcileLoadedRun` mutates, which is safe here in a way
214
+ * it is not in the store: the record was just parsed into a fresh object nothing else holds.
215
+ * Never `keepLive` — this reader has no RunManager, so there is nothing to recover into.
216
+ */
217
+ function coldSummary(run, dataDir, handle) {
218
+ if (run.delegation?.role === 'root' && (run.status === 'waiting' || run.delegation.wait !== undefined)) {
219
+ refreshHumanAskSummary(run, dataDir);
48
220
  }
221
+ reconcileLoadedRun(run);
222
+ rescopeRun(run, handle);
223
+ return toRunSummary(run);
49
224
  }
50
225
  //# sourceMappingURL=run-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-index.js","sourceRoot":"","sources":["../../src/runs/run-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,eAAe,EAAmC,MAAM,YAAY,CAAC;AAC9G,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,MAA0B;IAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAC/B,0FAA0F;QAC1F,sFAAsF;QACtF,yFAAyF;QACzF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7B,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;gBACvG,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACvC,CAAC;YACD,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACxB,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,wFAAwF;QACxF,yFAAyF;QACzF,oCAAoC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"run-index.js","sourceRoot":"","sources":["../../src/runs/run-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { RunRowInput } from './run-database.ts';
2
+ import type { RunRecord } from './store.ts';
3
+ /** Status-only live predicate: queued, running or waiting. */
4
+ export declare function isLiveStatus(status: string): boolean;
5
+ /**
6
+ * Whether this record says the run is still in motion (#779, Amendment 2 item 5): what puts a
7
+ * row in the `live` column, so `RunStore.open` loads and recovers it, and what keeps a record in
8
+ * the store's memory. True when any of these holds:
9
+ * - its status is queued, running or waiting;
10
+ * - a wake is pending: a monitoring check (`monitoringWakeAt`), a usage-limit resume
11
+ * (`autoResumeAt`) or a CI wait (`ciWait`);
12
+ * - it waits on its delegation family: a parent on its workers, or a worker on its parent;
13
+ * - an owned worker's destroy has not completed (its retry is pending);
14
+ * - a root's Finish has not settled (`finishRequestedAt`). A waiting root is live anyway; a
15
+ * cancelled one is a snapshot older controllers left, which only the delegation sweep repairs
16
+ * (`commitRootFinishCancellation`), and until it does, Continue refuses the root and its workers;
17
+ * - an accepted Stop has not settled yet (`stopping`), or a monitoring `activity` is still on it.
18
+ * `reconcileLoadedRun` rewrites both, so open loads those rows and the next save persists the
19
+ * normalized record and its summary.
20
+ *
21
+ * Only what the record itself says. The store adds what a record cannot know: the runs a
22
+ * RunManager pins, and their delegation families (see `RunStore`'s held set).
23
+ *
24
+ * The `live` column is computed when a row is written and never recomputed on read. Once a
25
+ * release has shipped `runs.db`, changing this predicate needs a migration (`MIGRATIONS` in
26
+ * run-database.ts) that recomputes `live` for every row; without one, a row keeps the old answer
27
+ * until it is next written, and a run the new predicate calls live is never loaded or recovered.
28
+ */
29
+ export declare function isLiveRecord(run: RunRecord): boolean;
30
+ /**
31
+ * The one place a run record becomes a database row (#779): the complete record as `data`, its
32
+ * `toRunSummary()` projection as `summary` (the projection every list route reads, so a summary
33
+ * has exactly one owner — Amendment 2 of the #779 plan), and the columns the store queries
34
+ * without decoding either. Every column is computed here, in the same upsert as `data`, so a row
35
+ * never disagrees with its own columns.
36
+ *
37
+ * `summary` carries everything derivable from the record. The live `usage` sample the list routes
38
+ * attach is not: it describes a process, not the run, and is never persisted.
39
+ *
40
+ * `data` defaults to the record itself. The store passes the record merged with what its stored
41
+ * JSON held beyond the schema (`encodeRawRecord`, raw-record.ts), and the import passes the
42
+ * record's original JSON, so a field this cezar does not know is never lost by a write.
43
+ */
44
+ export declare function encodeRunRow(run: RunRecord, data?: string): RunRowInput;
@@ -0,0 +1,84 @@
1
+ import { toRunSummary } from '../contract/index.js';
2
+ const LIVE_STATUSES = new Set(['queued', 'running', 'waiting']);
3
+ /** Status-only live predicate: queued, running or waiting. */
4
+ export function isLiveStatus(status) {
5
+ return LIVE_STATUSES.has(status);
6
+ }
7
+ /**
8
+ * Whether this record says the run is still in motion (#779, Amendment 2 item 5): what puts a
9
+ * row in the `live` column, so `RunStore.open` loads and recovers it, and what keeps a record in
10
+ * the store's memory. True when any of these holds:
11
+ * - its status is queued, running or waiting;
12
+ * - a wake is pending: a monitoring check (`monitoringWakeAt`), a usage-limit resume
13
+ * (`autoResumeAt`) or a CI wait (`ciWait`);
14
+ * - it waits on its delegation family: a parent on its workers, or a worker on its parent;
15
+ * - an owned worker's destroy has not completed (its retry is pending);
16
+ * - a root's Finish has not settled (`finishRequestedAt`). A waiting root is live anyway; a
17
+ * cancelled one is a snapshot older controllers left, which only the delegation sweep repairs
18
+ * (`commitRootFinishCancellation`), and until it does, Continue refuses the root and its workers;
19
+ * - an accepted Stop has not settled yet (`stopping`), or a monitoring `activity` is still on it.
20
+ * `reconcileLoadedRun` rewrites both, so open loads those rows and the next save persists the
21
+ * normalized record and its summary.
22
+ *
23
+ * Only what the record itself says. The store adds what a record cannot know: the runs a
24
+ * RunManager pins, and their delegation families (see `RunStore`'s held set).
25
+ *
26
+ * The `live` column is computed when a row is written and never recomputed on read. Once a
27
+ * release has shipped `runs.db`, changing this predicate needs a migration (`MIGRATIONS` in
28
+ * run-database.ts) that recomputes `live` for every row; without one, a row keeps the old answer
29
+ * until it is next written, and a run the new predicate calls live is never loaded or recovered.
30
+ */
31
+ export function isLiveRecord(run) {
32
+ if (LIVE_STATUSES.has(run.status))
33
+ return true;
34
+ if (run.monitoringWakeAt !== undefined || run.autoResumeAt !== undefined || run.ciWait !== undefined)
35
+ return true;
36
+ if (run.delegation && run.delegation.role !== 'invalid' && run.delegation.wait !== undefined)
37
+ return true;
38
+ if (run.delegation?.role === 'worker' && run.delegation.destroy !== undefined && run.delegation.destroy.phase !== 'complete')
39
+ return true;
40
+ if (run.delegation?.role === 'root' && run.delegation.finishRequestedAt !== undefined)
41
+ return true;
42
+ return run.stopping !== undefined || run.activity !== undefined;
43
+ }
44
+ /**
45
+ * The one place a run record becomes a database row (#779): the complete record as `data`, its
46
+ * `toRunSummary()` projection as `summary` (the projection every list route reads, so a summary
47
+ * has exactly one owner — Amendment 2 of the #779 plan), and the columns the store queries
48
+ * without decoding either. Every column is computed here, in the same upsert as `data`, so a row
49
+ * never disagrees with its own columns.
50
+ *
51
+ * `summary` carries everything derivable from the record. The live `usage` sample the list routes
52
+ * attach is not: it describes a process, not the run, and is never persisted.
53
+ *
54
+ * `data` defaults to the record itself. The store passes the record merged with what its stored
55
+ * JSON held beyond the schema (`encodeRawRecord`, raw-record.ts), and the import passes the
56
+ * record's original JSON, so a field this cezar does not know is never lost by a write.
57
+ */
58
+ export function encodeRunRow(run, data = JSON.stringify(run)) {
59
+ const worker = run.delegation?.role === 'worker' ? run.delegation : undefined;
60
+ return {
61
+ id: run.id,
62
+ createdAt: run.createdAt,
63
+ finishedAt: run.finishedAt ?? null,
64
+ status: run.status,
65
+ archived: run.archived,
66
+ live: isLiveRecord(run),
67
+ parentRunId: worker ? worker.parentRunId : null,
68
+ clientRequestId: run.clientRequestId ?? null,
69
+ groupId: run.groupId ?? null,
70
+ // Materialized only: retention reclaims the directory and keeps the path on the record.
71
+ worktreePath: run.worktreePath !== undefined && run.worktreeReclaimedAt === undefined ? run.worktreePath : null,
72
+ branch: ownedBranch(run, worker?.workspace.branch),
73
+ baseBranch: run.baseBranch ?? null,
74
+ data,
75
+ summary: JSON.stringify(toRunSummary(run)),
76
+ };
77
+ }
78
+ /** The branch a run owns: its own, else the one an owned worker was planned with, else the task
79
+ * branch its worktree implies (`branchFor` in git-worktree.ts, which this module must not import:
80
+ * tests replace that module wholesale). */
81
+ function ownedBranch(run, plannedWorkerBranch) {
82
+ return run.branch ?? plannedWorkerBranch ?? (run.worktreePath !== undefined ? `cez/${run.id.slice(0, 8)}` : null);
83
+ }
84
+ //# sourceMappingURL=run-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-row.js","sourceRoot":"","sources":["../../src/runs/run-row.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * The one rule for "does this run match what was typed" (#864): the archived-runs page, the store's
3
+ * search and the cold reader's search all ask it, so a run found in one place is found in all.
4
+ *
5
+ * Every whitespace-separated token must match. A token matches a substring of the run's text
6
+ * fields. A number — with a leading `#` stripped — matches the prose fields as a substring, the
7
+ * id as a prefix, and the reference numbers EXACTLY, never digits inside a URL: `86` finding
8
+ * #864 would turn every short query into noise.
9
+ *
10
+ * Pure and dependency-free on purpose: the cold reader imports it, and the cold reader must stay
11
+ * cheap to load.
12
+ */
13
+ import type { RunSummary } from '../contract/index.js';
14
+ /** The shortest query the search routes accept. One character matches nearly every run. */
15
+ export declare const MIN_SEARCH_QUERY_LENGTH = 2;
16
+ /** The `#N` in a forge URL — `…/pull/774` → 774. Null when the tail is not a number, so a URL
17
+ * shape we do not recognise invalidates nothing rather than inventing a key. */
18
+ export declare function refNumberFromUrl(url: string): number | null;
19
+ /** The query as lowercased, whitespace-split tokens, empties dropped. */
20
+ export declare function searchTokens(query: string): string[];
21
+ /**
22
+ * The tokens SQL may narrow rows with, as `instr(lower(summary), ?) > 0` over the stored summary
23
+ * JSON. Only tokens that read the same there: ASCII, since SQLite's `lower()` folds ASCII alone,
24
+ * and without `"` or `\`, which JSON escapes. Leaving a token out only widens the prefilter;
25
+ * `matchesRunQuery` still checks it.
26
+ */
27
+ export declare function sqlPrefilterTokens(query: string): string[];
28
+ /** Whether every token of `query` matches `run`. A blank query matches nothing. */
29
+ export declare function matchesRunQuery(run: RunSummary, query: string): boolean;
@@ -0,0 +1,63 @@
1
+ /** The shortest query the search routes accept. One character matches nearly every run. */
2
+ export const MIN_SEARCH_QUERY_LENGTH = 2;
3
+ /** The `#N` in a forge URL — `…/pull/774` → 774. Null when the tail is not a number, so a URL
4
+ * shape we do not recognise invalidates nothing rather than inventing a key. */
5
+ export function refNumberFromUrl(url) {
6
+ const last = /\/(\d+)\/?$/.exec(url.trim());
7
+ const parsed = last ? Number(last[1]) : Number.NaN;
8
+ return Number.isInteger(parsed) && parsed > 0 ? parsed : null;
9
+ }
10
+ /** The query as lowercased, whitespace-split tokens, empties dropped. */
11
+ export function searchTokens(query) {
12
+ return query.trim().toLowerCase().split(/\s+/).filter((token) => token !== '');
13
+ }
14
+ /**
15
+ * The tokens SQL may narrow rows with, as `instr(lower(summary), ?) > 0` over the stored summary
16
+ * JSON. Only tokens that read the same there: ASCII, since SQLite's `lower()` folds ASCII alone,
17
+ * and without `"` or `\`, which JSON escapes. Leaving a token out only widens the prefilter;
18
+ * `matchesRunQuery` still checks it.
19
+ */
20
+ export function sqlPrefilterTokens(query) {
21
+ return searchTokens(query)
22
+ .map((token) => token.replace(/^#/, ''))
23
+ .filter((token) => token !== '' && /^[\x20-\x7e]+$/.test(token) && !/["\\]/.test(token));
24
+ }
25
+ function referenceNumbers(run) {
26
+ const numbers = new Set();
27
+ for (const url of [run.pullRequestUrl, run.referencedPullRequestUrl, run.referencedIssueUrl]) {
28
+ const number = url ? refNumberFromUrl(url) : null;
29
+ if (number !== null)
30
+ numbers.add(String(number));
31
+ }
32
+ for (const number of [run.prNumber, run.issueNumber, run.markerRefs?.pr, run.markerRefs?.issue]) {
33
+ if (typeof number === 'number' && Number.isInteger(number) && number > 0)
34
+ numbers.add(String(number));
35
+ }
36
+ return numbers;
37
+ }
38
+ /** Whether every token of `query` matches `run`. A blank query matches nothing. */
39
+ export function matchesRunQuery(run, query) {
40
+ const tokens = searchTokens(query);
41
+ if (tokens.length === 0)
42
+ return false;
43
+ // The fields a person reads. A number typed is a reference or part of a title, never a digit
44
+ // run inside a URL or a uuid: `86` must not find #864 through `…/issues/864` (#864 review).
45
+ const prose = [run.title, run.titleSummary, run.branch, run.workflow, run.workflowLabel]
46
+ .filter((field) => typeof field === 'string').map((field) => field.toLowerCase());
47
+ const urls = [run.pullRequestUrl, run.referencedPullRequestUrl, run.referencedIssueUrl]
48
+ .filter((field) => typeof field === 'string').map((field) => field.toLowerCase());
49
+ const id = run.id.toLowerCase();
50
+ let numbers;
51
+ return tokens.every((token) => {
52
+ if (prose.some((field) => field.includes(token)))
53
+ return true;
54
+ const bare = token.replace(/^#/, '');
55
+ if (/^\d+$/.test(bare)) {
56
+ numbers ??= referenceNumbers(run);
57
+ // A pasted id starts with digits as often as letters, so a number may still be its prefix.
58
+ return numbers.has(String(Number(bare))) || id.startsWith(bare);
59
+ }
60
+ return id.includes(token) || urls.some((field) => field.includes(token));
61
+ });
62
+ }
63
+ //# sourceMappingURL=run-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-search.js","sourceRoot":"","sources":["../../src/runs/run-search.ts"],"names":[],"mappings":"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"}