@repo-os/repoos 0.5.70 → 0.5.72

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 (637) hide show
  1. package/dist/.build-info.json +2 -2
  2. package/dist/.build-stamp.json +1 -1
  3. package/dist/cli/api-route-parity.js +74 -29
  4. package/dist/cli/help.js +100 -13
  5. package/dist/cli/index.js +89 -5
  6. package/dist/cli/task-flags.js +27 -1
  7. package/dist/commands/bundle.d.ts +2 -0
  8. package/dist/commands/bundle.js +157 -0
  9. package/dist/commands/check.d.ts +24 -2
  10. package/dist/commands/check.js +167 -39
  11. package/dist/commands/checks.d.ts +1 -0
  12. package/dist/commands/checks.js +61 -0
  13. package/dist/commands/control-api.d.ts +13 -0
  14. package/dist/commands/control-api.js +669 -14
  15. package/dist/commands/driver.d.ts +2 -0
  16. package/dist/commands/driver.js +36 -1
  17. package/dist/commands/init.d.ts +1 -1
  18. package/dist/commands/init.js +28 -5
  19. package/dist/commands/migrate.d.ts +1 -0
  20. package/dist/commands/migrate.js +50 -0
  21. package/dist/commands/reminder.d.ts +2 -0
  22. package/dist/commands/reminder.js +66 -0
  23. package/dist/commands/runner-engineer.d.ts +31 -0
  24. package/dist/commands/runner-engineer.js +262 -0
  25. package/dist/commands/schedule.d.ts +16 -0
  26. package/dist/commands/schedule.js +423 -0
  27. package/dist/commands/screenshot-flag.d.ts +36 -0
  28. package/dist/commands/screenshot-flag.js +100 -0
  29. package/dist/commands/secrets.d.ts +5 -0
  30. package/dist/commands/secrets.js +114 -0
  31. package/dist/commands/secrets.test.d.ts +1 -0
  32. package/dist/commands/secrets.test.js +7 -0
  33. package/dist/commands/servers.d.ts +1 -0
  34. package/dist/commands/servers.js +81 -0
  35. package/dist/commands/shot.d.ts +55 -0
  36. package/dist/commands/shot.js +353 -70
  37. package/dist/commands/tasks.d.ts +4 -1
  38. package/dist/commands/tasks.js +329 -37
  39. package/dist/commands/ui-contrast-audit.d.ts +20 -0
  40. package/dist/commands/ui-contrast-audit.js +108 -42
  41. package/dist/commands/ui-harness.d.ts +35 -2
  42. package/dist/commands/ui-harness.js +67 -7
  43. package/dist/commands/ui-smoke.d.ts +9 -0
  44. package/dist/commands/ui-smoke.js +34 -23
  45. package/dist/core/activity-animation.d.ts +54 -0
  46. package/dist/core/activity-animation.js +148 -0
  47. package/dist/core/activity-animation.test.d.ts +1 -0
  48. package/dist/core/activity-animation.test.js +79 -0
  49. package/dist/core/agent-contract.js +41 -5
  50. package/dist/core/agent-run-health.js +5 -1
  51. package/dist/core/attachment-migration.d.ts +32 -0
  52. package/dist/core/attachment-migration.js +318 -0
  53. package/dist/core/attachment-migration.test.d.ts +1 -0
  54. package/dist/core/attachment-migration.test.js +210 -0
  55. package/dist/core/attachment-reference.d.ts +46 -0
  56. package/dist/core/attachment-reference.js +120 -0
  57. package/dist/core/attachment-reference.test.d.ts +1 -0
  58. package/dist/core/attachment-reference.test.js +66 -0
  59. package/dist/core/attachment-resilience.d.ts +25 -0
  60. package/dist/core/attachment-resilience.js +156 -0
  61. package/dist/core/attachment-resilience.test.d.ts +1 -0
  62. package/dist/core/attachment-resilience.test.js +108 -0
  63. package/dist/core/attachment-upload-state.d.ts +30 -0
  64. package/dist/core/attachment-upload-state.js +46 -0
  65. package/dist/core/attention.d.ts +2 -2
  66. package/dist/core/attention.js +4 -0
  67. package/dist/core/browser-offload.d.ts +11 -0
  68. package/dist/core/browser-offload.js +20 -0
  69. package/dist/core/budget-allowlist.d.ts +113 -0
  70. package/dist/core/budget-allowlist.js +336 -0
  71. package/dist/core/check-store.d.ts +47 -2
  72. package/dist/core/check-store.js +143 -12
  73. package/dist/core/close-out-failure.js +11 -2
  74. package/dist/core/concurrency-gate.d.ts +19 -0
  75. package/dist/core/concurrency-gate.js +62 -0
  76. package/dist/core/config.d.ts +41 -14
  77. package/dist/core/config.js +1372 -55
  78. package/dist/core/cross-process-slots.d.ts +42 -0
  79. package/dist/core/cross-process-slots.js +418 -0
  80. package/dist/core/cto-actions.d.ts +10 -0
  81. package/dist/core/cto-actions.js +30 -0
  82. package/dist/core/cto-idle-nudge.d.ts +99 -0
  83. package/dist/core/cto-idle-nudge.js +149 -0
  84. package/dist/core/db.d.ts +12 -0
  85. package/dist/core/db.js +44 -0
  86. package/dist/core/debug-tldr-key.d.ts +18 -0
  87. package/dist/core/debug-tldr-key.js +40 -0
  88. package/dist/core/debug-tldr-key.test.d.ts +1 -0
  89. package/dist/core/debug-tldr-key.test.js +120 -0
  90. package/dist/core/dev-failure.d.ts +63 -0
  91. package/dist/core/dev-failure.js +95 -0
  92. package/dist/core/dev-targets.d.ts +91 -1
  93. package/dist/core/dev-targets.js +565 -11
  94. package/dist/core/doctor.d.ts +41 -0
  95. package/dist/core/doctor.js +195 -3
  96. package/dist/core/driver-brief.d.ts +82 -0
  97. package/dist/core/driver-brief.js +38 -0
  98. package/dist/core/easter-eggs-bundle.d.ts +64 -0
  99. package/dist/core/easter-eggs-bundle.js +289 -0
  100. package/dist/core/engineer-checkpoint-commit.d.ts +8 -0
  101. package/dist/core/engineer-checkpoint-commit.js +12 -0
  102. package/dist/core/engineer-crash-recovery.d.ts +246 -0
  103. package/dist/core/engineer-crash-recovery.js +389 -0
  104. package/dist/core/frontmatter.d.ts +7 -0
  105. package/dist/core/frontmatter.js +31 -0
  106. package/dist/core/git.d.ts +94 -0
  107. package/dist/core/git.js +218 -0
  108. package/dist/core/global-engineers.d.ts +44 -0
  109. package/dist/core/global-engineers.js +42 -0
  110. package/dist/core/human-step-decision.d.ts +94 -0
  111. package/dist/core/human-step-decision.js +144 -0
  112. package/dist/core/human-step-override.d.ts +16 -0
  113. package/dist/core/human-step-override.js +34 -0
  114. package/dist/core/human-step-tags.d.ts +40 -0
  115. package/dist/core/human-step-tags.js +128 -0
  116. package/dist/core/input.js +6 -3
  117. package/dist/core/landable.d.ts +135 -0
  118. package/dist/core/landable.js +343 -0
  119. package/dist/core/local-gates.d.ts +17 -0
  120. package/dist/core/local-gates.js +154 -0
  121. package/dist/core/local-queue-marker.d.ts +13 -0
  122. package/dist/core/local-queue-marker.js +41 -0
  123. package/dist/core/memory-activity.d.ts +67 -0
  124. package/dist/core/memory-activity.js +215 -0
  125. package/dist/core/memory-pressure.d.ts +50 -0
  126. package/dist/core/memory-pressure.js +148 -0
  127. package/dist/core/model-routing/candidate-set.d.ts +40 -0
  128. package/dist/core/model-routing/candidate-set.js +44 -0
  129. package/dist/core/model-routing/candidates.d.ts +44 -0
  130. package/dist/core/model-routing/candidates.js +73 -0
  131. package/dist/core/model-routing/config.d.ts +66 -0
  132. package/dist/core/model-routing/config.js +122 -0
  133. package/dist/core/model-routing/decide.d.ts +87 -0
  134. package/dist/core/model-routing/decide.js +133 -0
  135. package/dist/core/model-routing/decision-store.d.ts +13 -0
  136. package/dist/core/model-routing/decision-store.js +62 -0
  137. package/dist/core/model-routing/decisions.d.ts +109 -0
  138. package/dist/core/model-routing/decisions.js +8 -0
  139. package/dist/core/model-routing/facts.d.ts +146 -0
  140. package/dist/core/model-routing/facts.js +305 -0
  141. package/dist/core/model-routing/handback.d.ts +76 -0
  142. package/dist/core/model-routing/handback.js +152 -0
  143. package/dist/core/model-routing/harness.d.ts +27 -0
  144. package/dist/core/model-routing/harness.js +60 -0
  145. package/dist/core/model-routing/policy.d.ts +115 -0
  146. package/dist/core/model-routing/policy.js +147 -0
  147. package/dist/core/model-routing/providers.d.ts +47 -0
  148. package/dist/core/model-routing/providers.js +146 -0
  149. package/dist/core/model-routing/runtime.d.ts +97 -0
  150. package/dist/core/model-routing/runtime.js +261 -0
  151. package/dist/core/model-routing/system-one.d.ts +19 -0
  152. package/dist/core/model-routing/system-one.js +144 -0
  153. package/dist/core/model-routing/types.d.ts +104 -0
  154. package/dist/core/model-routing/types.js +23 -0
  155. package/dist/core/models.js +2 -1
  156. package/dist/core/needs-input.js +6 -0
  157. package/dist/core/pressure-guard.d.ts +75 -0
  158. package/dist/core/pressure-guard.js +267 -0
  159. package/dist/core/project-environments.d.ts +43 -0
  160. package/dist/core/project-environments.js +339 -0
  161. package/dist/core/provider-usage-limit.d.ts +7 -0
  162. package/dist/core/provider-usage-limit.js +22 -0
  163. package/dist/core/providers/provider-keys.d.ts +15 -0
  164. package/dist/core/providers/provider-keys.js +19 -0
  165. package/dist/core/providers/spend.d.ts +18 -8
  166. package/dist/core/providers/spend.js +31 -5
  167. package/dist/core/queued-message-ui.d.ts +21 -0
  168. package/dist/core/queued-message-ui.js +27 -0
  169. package/dist/core/reminders.d.ts +35 -0
  170. package/dist/core/reminders.js +205 -0
  171. package/dist/core/remote-capture.d.ts +67 -0
  172. package/dist/core/remote-capture.js +76 -0
  173. package/dist/core/remote-hosts.js +3 -0
  174. package/dist/core/repoos-toml-branch-guard.d.ts +32 -0
  175. package/dist/core/repoos-toml-branch-guard.js +70 -0
  176. package/dist/core/repoos.d.ts +5 -0
  177. package/dist/core/repoos.js +39 -5
  178. package/dist/core/resource-limits.d.ts +47 -0
  179. package/dist/core/resource-limits.js +125 -0
  180. package/dist/core/review-evidence-gaps.d.ts +21 -0
  181. package/dist/core/review-evidence-gaps.js +82 -0
  182. package/dist/core/review-evidence-gaps.test.d.ts +1 -0
  183. package/dist/core/review-evidence-gaps.test.js +25 -0
  184. package/dist/core/review-findings.js +3 -3
  185. package/dist/core/review-passes.d.ts +1 -1
  186. package/dist/core/review-passes.js +7 -1
  187. package/dist/core/review-report-sections.d.ts +33 -2
  188. package/dist/core/review-report-sections.js +175 -3
  189. package/dist/core/review-verdict.d.ts +20 -0
  190. package/dist/core/review-verdict.js +74 -5
  191. package/dist/core/review-verdict.test.js +19 -1
  192. package/dist/core/review-verification-config.d.ts +36 -0
  193. package/dist/core/review-verification-config.js +36 -0
  194. package/dist/core/review-verification.d.ts +59 -1
  195. package/dist/core/review-verification.js +132 -19
  196. package/dist/core/review-verification.test.js +95 -0
  197. package/dist/core/runner-engineer-clis.d.ts +79 -0
  198. package/dist/core/runner-engineer-clis.js +298 -0
  199. package/dist/core/runner-health.d.ts +118 -0
  200. package/dist/core/runner-health.js +256 -0
  201. package/dist/core/runtime.d.ts +18 -0
  202. package/dist/core/runtime.js +58 -2
  203. package/dist/core/schedule-time.d.ts +53 -0
  204. package/dist/core/schedule-time.js +238 -0
  205. package/dist/core/schedule-time.test.d.ts +1 -0
  206. package/dist/core/schedule-time.test.js +44 -0
  207. package/dist/core/schedule.d.ts +73 -0
  208. package/dist/core/schedule.js +279 -0
  209. package/dist/core/server-registry.d.ts +90 -0
  210. package/dist/core/server-registry.js +354 -0
  211. package/dist/core/server-registry.test.d.ts +1 -0
  212. package/dist/core/server-registry.test.js +138 -0
  213. package/dist/core/shot-command.d.ts +72 -0
  214. package/dist/core/shot-command.js +278 -0
  215. package/dist/core/shot-fixtures.d.ts +30 -4
  216. package/dist/core/shot-fixtures.js +195 -4
  217. package/dist/core/shot-page.d.ts +56 -1
  218. package/dist/core/shot-page.js +179 -2
  219. package/dist/core/shot-plan.d.ts +234 -10
  220. package/dist/core/shot-plan.js +595 -56
  221. package/dist/core/shot-targets.d.ts +54 -2
  222. package/dist/core/shot-targets.js +164 -6
  223. package/dist/core/spawn-args.d.ts +9 -0
  224. package/dist/core/spawn-args.js +31 -0
  225. package/dist/core/storage/index.d.ts +8 -2
  226. package/dist/core/storage/index.js +8 -2
  227. package/dist/core/storage/neon-credentials.d.ts +92 -0
  228. package/dist/core/storage/neon-credentials.js +121 -0
  229. package/dist/core/storage/neon.d.ts +43 -0
  230. package/dist/core/storage/neon.js +309 -0
  231. package/dist/core/storage/neon.test.d.ts +1 -0
  232. package/dist/core/storage/neon.test.js +298 -0
  233. package/dist/core/storage/registry.js +12 -4
  234. package/dist/core/storage/sigv4.d.ts +85 -0
  235. package/dist/core/storage/sigv4.js +206 -0
  236. package/dist/core/storage/sigv4.test.d.ts +1 -0
  237. package/dist/core/storage/sigv4.test.js +110 -0
  238. package/dist/core/storage/sync-http.d.ts +23 -0
  239. package/dist/core/storage/sync-http.js +104 -0
  240. package/dist/core/storage/sync-http.test.d.ts +1 -0
  241. package/dist/core/storage/sync-http.test.js +87 -0
  242. package/dist/core/stories.d.ts +15 -3
  243. package/dist/core/stories.js +27 -7
  244. package/dist/core/story-definition-files.d.ts +3 -1
  245. package/dist/core/story-definition-files.js +31 -6
  246. package/dist/core/story-display.d.ts +13 -0
  247. package/dist/core/story-display.js +3 -1
  248. package/dist/core/task-body-diff.d.ts +34 -0
  249. package/dist/core/task-body-diff.js +195 -0
  250. package/dist/core/task-selection.js +5 -1
  251. package/dist/core/task-underspecified.d.ts +53 -6
  252. package/dist/core/task-underspecified.js +209 -25
  253. package/dist/core/task.d.ts +1 -0
  254. package/dist/core/task.js +42 -3
  255. package/dist/core/telegram-identity.d.ts +12 -0
  256. package/dist/core/telegram-identity.js +12 -0
  257. package/dist/core/toml-line.d.ts +32 -6
  258. package/dist/core/toml-line.js +333 -14
  259. package/dist/core/toml-validate.d.ts +8 -5
  260. package/dist/core/toml-validate.js +168 -23
  261. package/dist/core/tunnel.js +56 -13
  262. package/dist/core/types.d.ts +498 -3
  263. package/dist/core/types.js +4 -0
  264. package/dist/core/ui-verification-config.js +1 -0
  265. package/dist/core/worktree-gc.d.ts +2 -1
  266. package/dist/core/worktree-gc.js +53 -8
  267. package/dist/server/__tests__/task-transitions.test.d.ts +1 -0
  268. package/dist/server/__tests__/task-transitions.test.js +17 -0
  269. package/dist/server/agent-model-allowlist.d.ts +30 -0
  270. package/dist/server/agent-model-allowlist.js +46 -0
  271. package/dist/server/agents.d.ts +240 -4
  272. package/dist/server/agents.js +1120 -201
  273. package/dist/server/attachments.d.ts +8 -2
  274. package/dist/server/attachments.js +18 -17
  275. package/dist/server/attention-events.js +4 -1
  276. package/dist/server/attention-notify.d.ts +2 -0
  277. package/dist/server/attention-notify.js +23 -1
  278. package/dist/server/auto-engineering.js +2 -2
  279. package/dist/server/browser-capture-policy.d.ts +58 -0
  280. package/dist/server/browser-capture-policy.js +166 -0
  281. package/dist/server/bundle-upload.d.ts +123 -0
  282. package/dist/server/bundle-upload.js +419 -0
  283. package/dist/server/candidate-history.d.ts +22 -0
  284. package/dist/server/candidate-history.js +55 -0
  285. package/dist/server/close-out-lock.d.ts +4 -0
  286. package/dist/server/close-out-lock.js +26 -0
  287. package/dist/server/close-out-outcome-backfill.d.ts +20 -0
  288. package/dist/server/close-out-outcome-backfill.js +114 -0
  289. package/dist/server/close-out-outcome.d.ts +8 -0
  290. package/dist/server/close-out-outcome.js +39 -26
  291. package/dist/server/close-out-task-status.d.ts +6 -0
  292. package/dist/server/close-out-task-status.js +69 -0
  293. package/dist/server/cto-actions.d.ts +2 -0
  294. package/dist/server/cto-actions.js +4 -2
  295. package/dist/server/cto-monitor.d.ts +38 -5
  296. package/dist/server/cto-monitor.js +117 -29
  297. package/dist/server/cto.d.ts +31 -3
  298. package/dist/server/cto.js +70 -7
  299. package/dist/server/debug-tldr.d.ts +1 -4
  300. package/dist/server/debug-tldr.js +10 -14
  301. package/dist/server/deployments.d.ts +8 -0
  302. package/dist/server/deployments.js +38 -0
  303. package/dist/server/dev.d.ts +236 -8
  304. package/dist/server/dev.js +1208 -157
  305. package/dist/server/done.d.ts +12 -0
  306. package/dist/server/driver-brief.d.ts +5 -1
  307. package/dist/server/driver-brief.js +72 -0
  308. package/dist/server/engineer-crash-recovery.d.ts +77 -0
  309. package/dist/server/engineer-crash-recovery.js +403 -0
  310. package/dist/server/engineer-launch.d.ts +3 -0
  311. package/dist/server/engineer-launch.js +16 -3
  312. package/dist/server/engineer-remote-self-check.js +22 -6
  313. package/dist/server/evidence-current.d.ts +3 -0
  314. package/dist/server/evidence-current.js +32 -0
  315. package/dist/server/evidence-refresh-lock.d.ts +11 -0
  316. package/dist/server/evidence-refresh-lock.js +30 -0
  317. package/dist/server/freeform-runs.js +2 -1
  318. package/dist/server/handoff-request.js +6 -0
  319. package/dist/server/handoff.d.ts +10 -4
  320. package/dist/server/handoff.js +43 -12
  321. package/dist/server/human-step-decision.d.ts +39 -0
  322. package/dist/server/human-step-decision.js +64 -0
  323. package/dist/server/human-step-split.d.ts +16 -0
  324. package/dist/server/human-step-split.js +42 -0
  325. package/dist/server/integration-job.d.ts +11 -0
  326. package/dist/server/integration-job.js +21 -1
  327. package/dist/server/integration-orchestrator.d.ts +110 -2
  328. package/dist/server/integration-orchestrator.js +553 -50
  329. package/dist/server/integration-status.d.ts +37 -2
  330. package/dist/server/integration-status.js +47 -1
  331. package/dist/server/landable.d.ts +4 -0
  332. package/dist/server/landable.js +58 -0
  333. package/dist/server/live-index.d.ts +33 -0
  334. package/dist/server/live-index.js +34 -0
  335. package/dist/server/local-token.d.ts +11 -0
  336. package/dist/server/local-token.js +22 -0
  337. package/dist/server/model-routing-wiring.d.ts +162 -0
  338. package/dist/server/model-routing-wiring.js +571 -0
  339. package/dist/server/model-test.js +3 -1
  340. package/dist/server/needs-input-dismiss.js +11 -0
  341. package/dist/server/notifications/telegram-provider.js +19 -6
  342. package/dist/server/orphan-bookkeeping.d.ts +4 -0
  343. package/dist/server/orphan-bookkeeping.js +39 -0
  344. package/dist/server/orphan-engineers.d.ts +48 -0
  345. package/dist/server/orphan-engineers.js +177 -0
  346. package/dist/server/phantom-runner.d.ts +35 -0
  347. package/dist/server/phantom-runner.js +43 -0
  348. package/dist/server/pm-attachments.d.ts +1 -1
  349. package/dist/server/pm-attachments.js +5 -9
  350. package/dist/server/post-handoff-checkpoint-recovery.d.ts +52 -0
  351. package/dist/server/post-handoff-checkpoint-recovery.js +206 -0
  352. package/dist/server/pre-review-remote-gate.d.ts +23 -2
  353. package/dist/server/pre-review-remote-gate.js +36 -2
  354. package/dist/server/preview-config-isolation.d.ts +16 -0
  355. package/dist/server/preview-config-isolation.js +57 -0
  356. package/dist/server/preview.d.ts +93 -16
  357. package/dist/server/preview.js +314 -83
  358. package/dist/server/provider-usage-limit-probe.d.ts +11 -0
  359. package/dist/server/provider-usage-limit-probe.js +82 -0
  360. package/dist/server/release.d.ts +11 -0
  361. package/dist/server/release.js +166 -41
  362. package/dist/server/reminder-tick.d.ts +4 -0
  363. package/dist/server/reminder-tick.js +11 -0
  364. package/dist/server/remote-validation.d.ts +329 -35
  365. package/dist/server/remote-validation.js +839 -150
  366. package/dist/server/request-close-out.d.ts +21 -2
  367. package/dist/server/request-close-out.js +96 -17
  368. package/dist/server/requirements-notice.d.ts +49 -0
  369. package/dist/server/requirements-notice.js +33 -0
  370. package/dist/server/review-automation.d.ts +40 -0
  371. package/dist/server/review-automation.js +47 -0
  372. package/dist/server/review-guard.js +11 -0
  373. package/dist/server/review-tree-identity.d.ts +36 -0
  374. package/dist/server/review-tree-identity.js +51 -0
  375. package/dist/server/review-verification-gather.js +44 -15
  376. package/dist/server/review.d.ts +112 -3
  377. package/dist/server/review.js +707 -99
  378. package/dist/server/routes/agents.d.ts +1 -1
  379. package/dist/server/routes/agents.js +2 -2
  380. package/dist/server/routes/attention.js +11 -1
  381. package/dist/server/routes/check-runs.js +5 -1
  382. package/dist/server/routes/config.js +216 -53
  383. package/dist/server/routes/copy-inspector.d.ts +6 -4
  384. package/dist/server/routes/copy-inspector.js +28 -20
  385. package/dist/server/routes/debugger.js +3 -3
  386. package/dist/server/routes/deployments.js +14 -2
  387. package/dist/server/routes/dev.d.ts +23 -3
  388. package/dist/server/routes/dev.js +94 -8
  389. package/dist/server/routes/index.d.ts +4 -0
  390. package/dist/server/routes/index.js +4 -0
  391. package/dist/server/routes/info.js +10 -1
  392. package/dist/server/routes/model-providers.d.ts +2 -12
  393. package/dist/server/routes/model-providers.js +7 -20
  394. package/dist/server/routes/model-routing.d.ts +12 -0
  395. package/dist/server/routes/model-routing.js +32 -0
  396. package/dist/server/routes/project-environments.d.ts +11 -0
  397. package/dist/server/routes/project-environments.js +269 -0
  398. package/dist/server/routes/reminders.d.ts +7 -0
  399. package/dist/server/routes/reminders.js +43 -0
  400. package/dist/server/routes/resource-queues.d.ts +2 -0
  401. package/dist/server/routes/resource-queues.js +6 -0
  402. package/dist/server/routes/schedules.d.ts +7 -0
  403. package/dist/server/routes/schedules.js +227 -0
  404. package/dist/server/routes/stories.js +14 -3
  405. package/dist/server/routes/tasks.d.ts +110 -0
  406. package/dist/server/routes/tasks.js +1044 -104
  407. package/dist/server/routes/transcribe.d.ts +13 -0
  408. package/dist/server/routes/transcribe.js +34 -10
  409. package/dist/server/routes/types.d.ts +8 -0
  410. package/dist/server/schedule-auto-start.d.ts +17 -0
  411. package/dist/server/schedule-auto-start.js +80 -0
  412. package/dist/server/schedule-automation.d.ts +13 -0
  413. package/dist/server/schedule-automation.js +47 -0
  414. package/dist/server/schedule-runner.d.ts +53 -0
  415. package/dist/server/schedule-runner.js +142 -0
  416. package/dist/server/server.d.ts +7 -0
  417. package/dist/server/server.js +663 -39
  418. package/dist/server/shot-capture.d.ts +93 -5
  419. package/dist/server/shot-capture.js +565 -38
  420. package/dist/server/shot-context.d.ts +1 -1
  421. package/dist/server/shot-context.js +7 -2
  422. package/dist/server/shots.d.ts +15 -0
  423. package/dist/server/shots.js +107 -24
  424. package/dist/server/system.d.ts +54 -0
  425. package/dist/server/system.js +97 -4
  426. package/dist/server/task-check.d.ts +21 -0
  427. package/dist/server/task-check.js +74 -1
  428. package/dist/server/task-transitions.d.ts +11 -1
  429. package/dist/server/task-transitions.js +13 -0
  430. package/dist/server/task-underspecified-flag.d.ts +19 -21
  431. package/dist/server/task-underspecified-flag.js +207 -42
  432. package/dist/server/task-watchdog.d.ts +39 -1
  433. package/dist/server/task-watchdog.js +157 -23
  434. package/dist/server/telegram/agent-chat.d.ts +4 -1
  435. package/dist/server/telegram/agent-chat.js +2 -1
  436. package/dist/server/telegram/api.d.ts +23 -0
  437. package/dist/server/telegram/api.js +50 -0
  438. package/dist/server/telegram/attachments.d.ts +25 -0
  439. package/dist/server/telegram/attachments.js +96 -0
  440. package/dist/server/telegram/callbacks.d.ts +51 -0
  441. package/dist/server/telegram/callbacks.js +168 -0
  442. package/dist/server/telegram/commands.d.ts +6 -0
  443. package/dist/server/telegram/commands.js +13 -1
  444. package/dist/server/telegram/index.d.ts +11 -0
  445. package/dist/server/telegram/index.js +36 -7
  446. package/dist/server/telegram/intake.d.ts +1 -1
  447. package/dist/server/telegram/intake.js +4 -3
  448. package/dist/server/telegram/normalize.js +8 -0
  449. package/dist/server/telegram/provider.d.ts +9 -0
  450. package/dist/server/telegram/provider.js +22 -0
  451. package/dist/server/telegram/rate-limits.d.ts +4 -0
  452. package/dist/server/telegram/rate-limits.js +40 -0
  453. package/dist/server/telegram/task-actions.d.ts +105 -0
  454. package/dist/server/telegram/task-actions.js +600 -0
  455. package/dist/server/telegram/task-creation.d.ts +61 -0
  456. package/dist/server/telegram/task-creation.js +126 -0
  457. package/dist/server/telegram/task-draft.d.ts +37 -0
  458. package/dist/server/telegram/task-draft.js +158 -0
  459. package/dist/server/telegram/task-drafts-store.d.ts +35 -0
  460. package/dist/server/telegram/task-drafts-store.js +98 -0
  461. package/dist/server/telegram/types.d.ts +15 -0
  462. package/dist/server/ui-handoff-gate.d.ts +60 -3
  463. package/dist/server/ui-handoff-gate.js +442 -37
  464. package/dist/server/worktree-handoff-guard.d.ts +26 -0
  465. package/dist/server/worktree-handoff-guard.js +111 -5
  466. package/dist/server/write.d.ts +51 -0
  467. package/dist/server/write.js +200 -11
  468. package/dist/ui/assets/ActivityIndicator-B5HodJ00.js +1 -0
  469. package/dist/ui/assets/AgentModelControl-QTCh6q0D.js +1 -0
  470. package/dist/ui/assets/AgentModelModal-CspuUT0o.js +1 -0
  471. package/dist/ui/assets/AgentsView-CF9eoEKB.js +2 -0
  472. package/dist/ui/assets/AgentsView-CFpZ1qis.css +1 -0
  473. package/dist/ui/assets/ChatAgentModelChip-DpLVOBcw.js +1 -0
  474. package/dist/ui/assets/ChecksView-Bi2PwRf_.js +0 -0
  475. package/dist/ui/assets/ChecksView-RQNkokZ-.css +1 -0
  476. package/dist/ui/assets/ConfirmDialog-chiSYU9K.js +1 -0
  477. package/dist/ui/assets/{ContextView-Bi-Nmygy.css → ContextView-5__6cyLK.css} +1 -1
  478. package/dist/ui/assets/ContextView-BGAaRY81.js +4 -0
  479. package/dist/ui/assets/DashboardView-Cbdny84M.js +1 -0
  480. package/dist/ui/assets/DashboardView-Dyv6Uh6h.css +1 -0
  481. package/dist/ui/assets/DeleteConfirmDialog-dzS0cQvq.js +1 -0
  482. package/dist/ui/assets/DependencyChip-DTuPnGAW.js +1 -0
  483. package/dist/ui/assets/DeploymentsView-6FKJ6s90.js +1 -0
  484. package/dist/ui/assets/DeploymentsView-CQZl7_ws.css +1 -0
  485. package/dist/ui/assets/DevView-Byzsm59e.js +2 -0
  486. package/dist/ui/assets/DevView-kaYr12_o.css +1 -0
  487. package/dist/ui/assets/DiffView-DL-JM2sW.js +4 -0
  488. package/dist/ui/assets/FailedTestsList-ChES8eZe.css +1 -0
  489. package/dist/ui/assets/FailedTestsList-MD2C-o8g.js +1 -0
  490. package/dist/ui/assets/InputsView-M-BGmVO-.js +1 -0
  491. package/dist/ui/assets/InputsView-sgbtt2tl.css +1 -0
  492. package/dist/ui/assets/LoginView-9RLEbnO1.js +1 -0
  493. package/dist/ui/assets/ReleasesView-Bcato6xE.js +5 -0
  494. package/dist/ui/assets/ReleasesView-mnqYjYlB.css +1 -0
  495. package/dist/ui/assets/SecretsView-BEfCGd8b.js +1 -0
  496. package/dist/ui/assets/SettingsView-B45k3dvW.js +4 -0
  497. package/dist/ui/assets/SettingsView-BhZdEaQH.css +1 -0
  498. package/dist/ui/assets/StoriesView-CRfDACDY.js +1 -0
  499. package/dist/ui/assets/StoriesView-Cww0O1e8.css +1 -0
  500. package/dist/ui/assets/{VoiceDictate-CbJnmeNg.js → VoiceDictate-BbsR9VLP.js} +2 -2
  501. package/dist/ui/assets/WorkView-CkwU0pUJ.js +2 -0
  502. package/dist/ui/assets/WorkView-ikK0u-Hh.css +1 -0
  503. package/dist/ui/assets/{abnfDiagram-VCTEODGH-DrTaHBvQ.js → abnfDiagram-VCTEODGH-By54GWGY.js} +1 -1
  504. package/dist/ui/assets/{architectureDiagram-5GKGNRK7-4pbmksoa.js → architectureDiagram-5GKGNRK7-aGwvjyfs.js} +1 -1
  505. package/dist/ui/assets/{blockDiagram-I7D4REHJ-DotXLktk.js → blockDiagram-I7D4REHJ-BTkqwpwR.js} +1 -1
  506. package/dist/ui/assets/{button-Cg7Fwvfz.js → button-CVswidNR.js} +1 -1
  507. package/dist/ui/assets/{c4Diagram-7LVT6UL2-CX4XAag_.js → c4Diagram-7LVT6UL2-PEhZ5Zxv.js} +1 -1
  508. package/dist/ui/assets/channel-B6IgUbAR.js +1 -0
  509. package/dist/ui/assets/{check-setup-Bfqp1ySB.js → check-setup-Dw6kUOEA.js} +1 -1
  510. package/dist/ui/assets/checkbox-B3l459tM.js +1 -0
  511. package/dist/ui/assets/{chunk-2E4U76K2-DBwbHQrf.js → chunk-2E4U76K2-Bf1Hts2i.js} +1 -1
  512. package/dist/ui/assets/{chunk-4HAMMTFA-CC2YIavJ.js → chunk-4HAMMTFA-pFeawaib.js} +1 -1
  513. package/dist/ui/assets/{chunk-75Z2AOVW-GQ3dA3RS.js → chunk-75Z2AOVW-BQu_7S0V.js} +1 -1
  514. package/dist/ui/assets/{chunk-CLGD4ZFX-DJeOtdRW.js → chunk-CLGD4ZFX-Bnu_5NCV.js} +1 -1
  515. package/dist/ui/assets/{chunk-DU6HZSFF-Dth3AgVP.js → chunk-DU6HZSFF-DskCGbEH.js} +1 -1
  516. package/dist/ui/assets/{chunk-F27PBJKO-CUKJ_1GV.js → chunk-F27PBJKO-PuIdHClZ.js} +1 -1
  517. package/dist/ui/assets/{chunk-GMAD6QVW-DUokwNqt.js → chunk-GMAD6QVW-D_smfQa3.js} +1 -1
  518. package/dist/ui/assets/{chunk-GVQU2GXP--wyu3z_M.js → chunk-GVQU2GXP-CqgVnuOO.js} +1 -1
  519. package/dist/ui/assets/{chunk-IMKFNOWR-DKnHgEdS.js → chunk-IMKFNOWR-CopQCrZe.js} +1 -1
  520. package/dist/ui/assets/{chunk-L3NEJ4N5-vio-PK5r.js → chunk-L3NEJ4N5-F4EkaeVI.js} +1 -1
  521. package/dist/ui/assets/{chunk-OSK3NFVY-BF4uJ1Wv.js → chunk-OSK3NFVY-CCMTZoNY.js} +1 -1
  522. package/dist/ui/assets/{chunk-P2QGCYS3-B9OHNM4g.js → chunk-P2QGCYS3-B00Lfd7c.js} +1 -1
  523. package/dist/ui/assets/{chunk-POPQ4Y6H-DfPkV4K8.js → chunk-POPQ4Y6H-CQIWgAHL.js} +1 -1
  524. package/dist/ui/assets/{chunk-PWAF6VOD-C6pQpja9.js → chunk-PWAF6VOD-BcnJhGsv.js} +1 -1
  525. package/dist/ui/assets/{chunk-SHT3W25Y-D1FyTkkv.js → chunk-SHT3W25Y-BpIxkpSU.js} +1 -1
  526. package/dist/ui/assets/{chunk-SVP7TREG-DtQlvhPk.js → chunk-SVP7TREG-Dmck6rE1.js} +1 -1
  527. package/dist/ui/assets/{chunk-TICWLB2K-BpnCR3pz.js → chunk-TICWLB2K-BxunevbE.js} +1 -1
  528. package/dist/ui/assets/chunk-TLUHSLCS-D38ddkwI.js +2 -0
  529. package/dist/ui/assets/classDiagram-ZZMXUADV-BXMooEQ_.js +1 -0
  530. package/dist/ui/assets/classDiagram-v2-VYDZK3BY-BXMooEQ_.js +1 -0
  531. package/dist/ui/assets/{cynefinDiagram-5FMLGOSQ-D3SEdRnG.js → cynefinDiagram-5FMLGOSQ-B7s8hLnS.js} +1 -1
  532. package/dist/ui/assets/{dagre-GXQ25YYZ-C8gQG-lD.js → dagre-GXQ25YYZ-BsiZP7bu.js} +1 -1
  533. package/dist/ui/assets/{diagram-S7CK7UJ4-Czu_0uu0.js → diagram-S7CK7UJ4-DYS0daGv.js} +1 -1
  534. package/dist/ui/assets/{diagram-UQ7AKVKN-ViXph8nh.js → diagram-UQ7AKVKN-atbR7-CN.js} +1 -1
  535. package/dist/ui/assets/{diagram-VSXAHHWV-C6BtTSHW.js → diagram-VSXAHHWV-BV4vEvV7.js} +1 -1
  536. package/dist/ui/assets/{diagram-VX7I27RA-TbbO1fXg.js → diagram-VX7I27RA-DoT_FZ9m.js} +1 -1
  537. package/dist/ui/assets/{diagram-Z3DM3KII-BO9R4sQs.js → diagram-Z3DM3KII-C8VlaCDZ.js} +1 -1
  538. package/dist/ui/assets/{docs-CypCpmgt.js → docs-CHaszpiK.js} +1 -1
  539. package/dist/ui/assets/{ebnfDiagram-PWID7BFC-aKXt7bQt.js → ebnfDiagram-PWID7BFC-2wdmw_8a.js} +1 -1
  540. package/dist/ui/assets/{erDiagram-RLTQ6QDP-47HSz_yo.js → erDiagram-RLTQ6QDP-BmIILRDD.js} +1 -1
  541. package/dist/ui/assets/flowDiagram-HODETNUW-BTdR4n9y.js +1 -0
  542. package/dist/ui/assets/format-B31EJAKm.js +1 -0
  543. package/dist/ui/assets/{ganttDiagram-EL5Y4UJY-CLH5Zx6B.js → ganttDiagram-EL5Y4UJY-pDblzxNY.js} +1 -1
  544. package/dist/ui/assets/{gitGraphDiagram-WWUBYQGX-BOxdVoS7.js → gitGraphDiagram-WWUBYQGX-aSsmkP5x.js} +1 -1
  545. package/dist/ui/assets/index-CYOAZliD.css +1 -0
  546. package/dist/ui/assets/index-CaR0WyO4.js +65 -0
  547. package/dist/ui/assets/{infoDiagram-27XIBGKW-CuAZPnDi.js → infoDiagram-27XIBGKW-DpoCg5SP.js} +1 -1
  548. package/dist/ui/assets/input-CkicM4Lg.js +1 -0
  549. package/dist/ui/assets/{ishikawaDiagram-5VMMS53U-B7Eq3ePc.js → ishikawaDiagram-5VMMS53U-D83IVTR6.js} +1 -1
  550. package/dist/ui/assets/{journeyDiagram-3NMN7TZE-BhW2Sqpt.js → journeyDiagram-3NMN7TZE-BdbulXAl.js} +1 -1
  551. package/dist/ui/assets/{kanban-definition-UXKFOSKX-Cw_klMxM.js → kanban-definition-UXKFOSKX-DkYxTNou.js} +1 -1
  552. package/dist/ui/assets/{line-CX-sssw_.js → line-Bi1v3GiJ.js} +1 -1
  553. package/dist/ui/assets/{mermaid-parser.core-DU36LHRU.js → mermaid-parser.core-B8oJ7TIi.js} +1 -1
  554. package/dist/ui/assets/mermaid.core-Oh6zI2G3.js +11 -0
  555. package/dist/ui/assets/{mindmap-definition-YA3MSWOX-NMTZuXGJ.js → mindmap-definition-YA3MSWOX-xMOZZr65.js} +1 -1
  556. package/dist/ui/assets/{pegDiagram-XKGWAZYB-B9DqL68I.js → pegDiagram-XKGWAZYB-LmdNyxtK.js} +1 -1
  557. package/dist/ui/assets/{pieDiagram-E7YTZNPT-EPN4fJwb.js → pieDiagram-E7YTZNPT-DqYhqG2S.js} +1 -1
  558. package/dist/ui/assets/{quadrantDiagram-AXDQQJYC-B1vP5hUF.js → quadrantDiagram-AXDQQJYC-CdFzYVGb.js} +1 -1
  559. package/dist/ui/assets/{railroadDiagram-O6MQD6OU-q57-HBoV.js → railroadDiagram-O6MQD6OU-WbSaGk8Q.js} +1 -1
  560. package/dist/ui/assets/repo-ZlC_L2RY.js +40 -0
  561. package/dist/ui/assets/{requirementDiagram-BXWQKSXE-B1nzxnDE.js → requirementDiagram-BXWQKSXE-ChJursIs.js} +1 -1
  562. package/dist/ui/assets/{sankeyDiagram-P5KCCOFB-CvGzdKI2.js → sankeyDiagram-P5KCCOFB-DMwJskjJ.js} +1 -1
  563. package/dist/ui/assets/{sequenceDiagram-WJ2MYXX4-G73REJUS.js → sequenceDiagram-WJ2MYXX4-CRIMk1G8.js} +1 -1
  564. package/dist/ui/assets/{stateDiagram-D77RDMKH-CRW4gM0e.js → stateDiagram-D77RDMKH-BAJ_tTFH.js} +1 -1
  565. package/dist/ui/assets/stateDiagram-v2-MP3YSRHH-BtrfPBth.js +1 -0
  566. package/dist/ui/assets/{swimlanes-42K2YHIH-CE91Y-lT.js → swimlanes-42K2YHIH-bzJI-cgB.js} +1 -1
  567. package/dist/ui/assets/swimlanesDiagram-VR7AAH4N-D_J1s_is.js +8 -0
  568. package/dist/ui/assets/{switch-BYQwbwcZ.js → switch-52ZLyupr.js} +1 -1
  569. package/dist/ui/assets/text-insertion-sXVs8rKF.js +1 -0
  570. package/dist/ui/assets/{time-CD85vGC0.js → time-CKklpdEK.js} +1 -1
  571. package/dist/ui/assets/{timeline-definition-24CTP7MA-DVw_tCzX.js → timeline-definition-24CTP7MA-DccQ_k0z.js} +1 -1
  572. package/dist/ui/assets/title-DkMrmvNN.js +1 -0
  573. package/dist/ui/assets/ui-ChT4U8Dk.js +7 -0
  574. package/dist/ui/assets/useChatScroll-Cx8yub8t.js +1 -0
  575. package/dist/ui/assets/value-BxnuPYy1.js +1 -0
  576. package/dist/ui/assets/vendor-ui-DH65IucY.js +3 -0
  577. package/dist/ui/assets/vendor-vue-CQ0VGVRu.js +1 -0
  578. package/dist/ui/assets/{vennDiagram-4TSXK5OY-gBaTlcOW.js → vennDiagram-4TSXK5OY-BEIIY0mW.js} +1 -1
  579. package/dist/ui/assets/viewport-qtq5veg8.js +1 -0
  580. package/dist/ui/assets/{wardleyDiagram-VM6X3IG4-B9w0GtT1.js → wardleyDiagram-VM6X3IG4-BfbKpYDx.js} +1 -1
  581. package/dist/ui/assets/{xychartDiagram-S5SC5T6Z-D2o0fTLK.js → xychartDiagram-S5SC5T6Z-CyBgOiTl.js} +1 -1
  582. package/dist/ui/index.html +24 -23
  583. package/dist/ui/sw.js +2 -2
  584. package/package.json +1 -1
  585. package/dist/ui/assets/ActivityIndicator-BNDj8i9m.js +0 -1
  586. package/dist/ui/assets/AgentModelModal-qiRXdw6a.js +0 -1
  587. package/dist/ui/assets/AgentsView-YS1AZ1v2.js +0 -1
  588. package/dist/ui/assets/AgentsView-kKt4CrDo.css +0 -1
  589. package/dist/ui/assets/ChecksView-CVnvMKM-.css +0 -1
  590. package/dist/ui/assets/ChecksView-Ch8Ncat5.js +0 -0
  591. package/dist/ui/assets/ConfirmDialog-CcPmuMHQ.js +0 -1
  592. package/dist/ui/assets/ContextView-DGMk39_r.js +0 -4
  593. package/dist/ui/assets/DashboardView-B_9hD8tR.js +0 -1
  594. package/dist/ui/assets/DashboardView-DtXleA5o.css +0 -1
  595. package/dist/ui/assets/DeleteConfirmDialog-BLHJs3Sg.js +0 -1
  596. package/dist/ui/assets/DeploymentsView-BEhIaXyw.css +0 -1
  597. package/dist/ui/assets/DeploymentsView-CJBx2mcp.js +0 -1
  598. package/dist/ui/assets/DevView-CoL2KIaZ.css +0 -1
  599. package/dist/ui/assets/DevView-DZb2LbMn.js +0 -2
  600. package/dist/ui/assets/DiffView-DeZzB47D.js +0 -4
  601. package/dist/ui/assets/FailedTestsList-Bv1nfnwO.css +0 -1
  602. package/dist/ui/assets/FailedTestsList-CdlcNhbe.js +0 -1
  603. package/dist/ui/assets/InputsView-0b4Sjg0Q.js +0 -1
  604. package/dist/ui/assets/InputsView-CMTBgj3R.css +0 -1
  605. package/dist/ui/assets/LoginView-B2WAQcq0.js +0 -1
  606. package/dist/ui/assets/ReleasesView-B7yJdjLp.js +0 -5
  607. package/dist/ui/assets/ReleasesView-BCE0uCPM.css +0 -1
  608. package/dist/ui/assets/SearchOverlay-D44KxIbl.js +0 -1
  609. package/dist/ui/assets/SettingsView-BN-H2QBT.js +0 -4
  610. package/dist/ui/assets/SettingsView-CEWHEE4r.css +0 -1
  611. package/dist/ui/assets/StoriesView-C3GxoeML.css +0 -1
  612. package/dist/ui/assets/StoriesView-CnAlxgkT.js +0 -1
  613. package/dist/ui/assets/WorkView-B4J9uqPn.js +0 -2
  614. package/dist/ui/assets/WorkView-B4O1dgd8.css +0 -1
  615. package/dist/ui/assets/api-BXg3t-A6.js +0 -1
  616. package/dist/ui/assets/auth-DOfKWRWn.js +0 -1
  617. package/dist/ui/assets/card-h3OmE2_z.js +0 -1
  618. package/dist/ui/assets/channel-BrKb638S.js +0 -1
  619. package/dist/ui/assets/checkbox-CJdatFyS.js +0 -1
  620. package/dist/ui/assets/chunk-TLUHSLCS-BeK-nkSE.js +0 -2
  621. package/dist/ui/assets/classDiagram-ZZMXUADV-BO_a0cvs.js +0 -1
  622. package/dist/ui/assets/classDiagram-v2-VYDZK3BY-BO_a0cvs.js +0 -1
  623. package/dist/ui/assets/flowDiagram-HODETNUW-DPrFUvzg.js +0 -1
  624. package/dist/ui/assets/index-ChEmz2Dy.css +0 -1
  625. package/dist/ui/assets/index-DcF5KN6q.js +0 -57
  626. package/dist/ui/assets/input-Cg7deJC2.js +0 -1
  627. package/dist/ui/assets/mermaid.core-DKxErDRT.js +0 -11
  628. package/dist/ui/assets/repo-3D9Lh1aB.js +0 -2
  629. package/dist/ui/assets/screenshot-viewer-Zxr6licW.js +0 -1
  630. package/dist/ui/assets/stateDiagram-v2-MP3YSRHH-C8VGcrPt.js +0 -1
  631. package/dist/ui/assets/swimlanesDiagram-VR7AAH4N-CJy_fpiy.js +0 -8
  632. package/dist/ui/assets/title-CKCTFTPg.js +0 -1
  633. package/dist/ui/assets/useChatScroll-BiQjE1tB.js +0 -1
  634. package/dist/ui/assets/value-BsoQhhdg.js +0 -1
  635. package/dist/ui/assets/vendor-ui-D3ucVR3C.js +0 -3
  636. package/dist/ui/assets/vendor-vue-0d2wfih_.js +0 -1
  637. package/dist/ui/assets/viewport-BVLcUJ9I.js +0 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "hash": "131590b8131d68f048a4d4d6050b17a4912fd3b3967d60ed47aa4d04a93f235c",
3
- "version": "0.5.70",
2
+ "hash": "ee834f2f12cd8d2344f949543dceca527efe7c9f2ca47b51fd1a46709a3cd4e1",
3
+ "version": "0.5.72",
4
4
  "devUi": false
5
5
  }
@@ -1,3 +1,3 @@
1
1
  {
2
- "generatedAt": "2026-10-13T06:19:09.464Z"
2
+ "generatedAt": "2026-10-23T09:47:12.207Z"
3
3
  }
@@ -7,11 +7,20 @@
7
7
  */
8
8
  const exact = (method, pattern) => (r) => r.method === method && r.pattern === pattern;
9
9
  const re = (method, patternSource) => (r) => r.method === method && r.pattern === patternSource;
10
+ const under = (prefix) => (r) => r.pattern.startsWith(prefix) || r.pattern.replaceAll("\\/", "/").startsWith(`^${prefix}`);
10
11
  /** Routes implemented by the server-backed control CLI (#0723). */
11
12
  const CONTROL_API_MATCHERS = [
12
- re("POST", /^\/api\/tasks\/([^/]+)\/(start|pause|message|done)$/.source),
13
+ re("POST", /^\/api\/tasks\/([^/]+)\/(start|pause|message|done|sync|hotfix|abandon|reopen|archive|unarchive|split)$/
14
+ .source),
15
+ re("POST", /^\/api\/tasks\/([^/]+)\/done\/cancel$/.source),
16
+ // `repoos attention dismiss <id>` dismisses the task's needs-input event.
17
+ re("POST", /^\/api\/tasks\/([^/]+)\/needs-input\/dismiss$/.source),
18
+ re("POST", /^\/api\/tasks\/([^/]+)\/review\/again$/.source),
19
+ re("GET", /^\/api\/tasks\/([^/]+)\/landable$/.source),
13
20
  re("POST", /^\/api\/tasks\/([^/]+)\/preview$/.source),
14
21
  re("POST", /^\/api\/tasks\/([^/]+)\/preview\/stop$/.source),
22
+ // `repoos shot` single-entry capture through the browser-capture policy (#0874).
23
+ re("POST", /^\/api\/tasks\/([^/]+)\/shots\/capture$/.source),
15
24
  // `repoos dev …` (#0747): list/status/get and start/stop/restart.
16
25
  exact("GET", "/api/dev/targets"),
17
26
  re("GET", /^\/api\/dev\/targets\/([^/]+)$/.source),
@@ -24,63 +33,89 @@ const CONTROL_API_MATCHERS = [
24
33
  exact("GET", "/api/stats/board"),
25
34
  exact("GET", "/api/driver/brief"),
26
35
  exact("GET", "/api/events"),
36
+ exact("GET", "/api/integration-jobs"),
37
+ exact("GET", "/api/integration/pipeline"),
38
+ re("POST", /^\/api\/integration\/pipeline\/retry\/([^/]+)$/.source),
39
+ re("POST", /^\/api\/integration\/pipeline\/refresh-install\/([^/]+)$/.source),
27
40
  exact("POST", "/api/cto/heartbeat"),
28
41
  // `repoos review` → PATCH status=review; `repoos override` → PATCH overrides
29
42
  re("PATCH", /^\/api\/tasks\/([^/]+)$/.source),
43
+ re("POST", /^\/api\/tasks\/([^/]+)\/bundle$/.source),
30
44
  ];
31
45
  /** Routes covered by existing file-level CLI commands (not HTTP). */
32
46
  const FILE_CLI_MATCHERS = [
47
+ // `repoos secrets …` — project environment metadata and writes (values never returned).
48
+ re("GET", /^\/api\/project-environments\/([^/]+)\/secrets$/.source),
49
+ re("PUT", /^\/api\/project-environments\/([^/]+)\/secrets$/.source),
50
+ exact("GET", "/api/project-environment-bindings"),
51
+ exact("PUT", "/api/project-environment-bindings"),
33
52
  exact("GET", "/api/health"),
34
53
  exact("GET", "/api/tasks"),
35
54
  re("GET", /^\/api\/tasks\/([^/]+)$/.source),
36
55
  exact("POST", "/api/tasks"),
37
56
  re("DELETE", /^\/api\/tasks\/([^/]+)$/.source),
38
57
  exact("GET", "/api/check-plan"),
58
+ // `repoos schedule …` (#0093): task schedule definitions under schedules/.
59
+ exact("GET", "/api/reminders"),
60
+ exact("POST", "/api/reminders"),
61
+ re("PATCH", /^\/api\/reminders\/([^/]+)$/.source),
62
+ re("DELETE", /^\/api\/reminders\/([^/]+)$/.source),
63
+ re("POST", /^\/api\/reminders\/([^/]+)\/done$/.source),
64
+ re("POST", /^\/api\/reminders\/([^/]+)\/snooze$/.source),
65
+ exact("GET", "/api/schedules"),
66
+ exact("POST", "/api/schedules"),
67
+ exact("POST", "/api/schedules/preview"),
68
+ re("PATCH", /^\/api\/schedules\/([^/]+)$/.source),
69
+ re("DELETE", /^\/api\/schedules\/([^/]+)$/.source),
70
+ re("POST", /^\/api\/schedules\/([^/]+)\/run$/.source),
39
71
  ];
40
72
  /** UI-only, SSE/hub, auth, or internal routes — no CLI required. */
41
73
  const UI_ONLY_MATCHERS = [
42
- (r) => r.pattern.startsWith("/api/auth/"),
43
- (r) => r.pattern.startsWith("/api/hub/"),
44
- (r) => r.pattern.startsWith("/api/telegram/"),
74
+ under("/api/auth/"),
75
+ under("/api/hub/"),
76
+ under("/api/telegram/"),
45
77
  exact("GET", "/api/index"),
46
78
  exact("GET", "/api/board"),
47
79
  exact("GET", "/api/counts"),
48
80
  exact("GET", "/api/docs"),
49
- (r) => r.pattern.startsWith("/api/repo/"),
50
- (r) => r.pattern.startsWith("/api/inputs"),
51
- (r) => r.pattern.startsWith("/api/skills"),
52
- (r) => r.pattern.startsWith("/api/skill-registry"),
53
- (r) => r.pattern.startsWith("/api/stories"),
81
+ under("/api/repo/"),
82
+ under("/api/inputs"),
83
+ under("/api/skills"),
84
+ under("/api/skill-registry"),
85
+ under("/api/stories"),
54
86
  exact("GET", "/api/system"),
55
87
  exact("GET", "/api/system/logs"),
56
- (r) => r.pattern.startsWith("/api/support/"),
57
- (r) => r.pattern.startsWith("/api/tunnel/"),
58
- (r) => r.pattern.startsWith("/api/release"),
59
- (r) => r.pattern.startsWith("/api/deployments"),
60
- (r) => r.pattern.startsWith("/api/chat"),
61
- (r) => r.pattern.startsWith("/api/debugger"),
88
+ under("/api/support/"),
89
+ under("/api/tunnel/"),
90
+ under("/api/release"),
91
+ under("/api/deployments"),
92
+ under("/api/chat"),
93
+ under("/api/debugger"),
62
94
  re("GET", /^\/api\/tasks\/([^/]+)\/debugger$/.source),
63
95
  re("POST", /^\/api\/tasks\/([^/]+)\/debugger\/message$/.source),
64
96
  re("POST", /^\/api\/tasks\/([^/]+)\/debugger\/interrupt$/.source),
65
97
  re("POST", /^\/api\/tasks\/([^/]+)\/debugger\/send-to-engineer$/.source),
66
98
  re("POST", /^\/api\/tasks\/([^/]+)\/debugger\/send-to-pm$/.source),
67
99
  re("POST", /^\/api\/agents\/built-in\/([^/]+)\/run$/.source),
68
- (r) => r.pattern.startsWith("/api/cto"),
100
+ under("/api/cto"),
69
101
  exact("GET", "/api/stats/by-type"),
70
102
  exact("GET", "/api/stats/daily"),
71
103
  exact("POST", "/api/system/kill-process"),
104
+ // Control page worktree cleanup preview and apply action.
105
+ exact("GET", "/api/system/worktree-gc"),
106
+ exact("POST", "/api/system/worktree-gc"),
72
107
  exact("GET", "/api/system/run-tests"),
73
108
  exact("POST", "/api/system/run-tests"),
74
109
  exact("GET", "/api/attention"),
75
110
  exact("GET", "/api/decisions"),
76
111
  exact("GET", "/api/check-runs"),
77
- (r) => r.pattern.startsWith("/api/integration"),
112
+ exact("GET", "/api/local-check-slots"),
113
+ re("POST", /^\/api\/local-check-slots\/(\d+)\/release\/(\d+)$/.source),
114
+ exact("GET", "/api/resource-queues"),
78
115
  exact("GET", "/api/close-out/outcomes"),
79
116
  re("GET", /^\/api\/tasks\/([^/]+)\/integration-job$/.source),
80
- re("POST", /^\/api\/tasks\/([^/]+)\/done\/cancel$/.source),
81
117
  re("POST", /^\/api\/tasks\/([^/]+)\/worktree-handoff\/discard$/.source),
82
118
  re("GET", /^\/api\/tasks\/([^/]+)\/review$/.source),
83
- re("POST", /^\/api\/tasks\/([^/]+)\/review\/again$/.source),
84
119
  re("POST", /^\/api\/tasks\/([^/]+)\/review\/message$/.source),
85
120
  re("POST", /^\/api\/tasks\/([^/]+)\/pm\/message$/.source),
86
121
  re("POST", /^\/api\/tasks\/([^/]+)\/pm\/interrupt$/.source),
@@ -91,7 +126,7 @@ const UI_ONLY_MATCHERS = [
91
126
  re("GET", /^\/api\/tasks\/([^/]+)\/shots\/([^/]+)$/.source),
92
127
  re("DELETE", /^\/api\/tasks\/([^/]+)\/shots\/([^/]+)$/.source),
93
128
  re("GET", /^\/api\/tasks\/([^/]+)\/ui-verification$/.source),
94
- re("POST", /^\/api\/tasks\/([^/]+)\/needs-input\/dismiss$/.source),
129
+ re("POST", /^\/api\/tasks\/([^/]+)\/verify$/.source),
95
130
  re("POST", /^\/api\/tasks\/([^/]+)\/clear-worktree$/.source),
96
131
  re("GET", /^\/api\/tasks\/([^/]+)\/output$/.source),
97
132
  re("GET", /^\/api\/tasks\/([^/]+)\/logs$/.source),
@@ -106,20 +141,25 @@ const UI_ONLY_MATCHERS = [
106
141
  re("GET", /^\/api\/tasks\/([^/]+)\/remote-validation\/events$/.source),
107
142
  exact("GET", "/api/config/raw"),
108
143
  exact("PUT", "/api/config/raw"),
109
- (r) => r.pattern.startsWith("/api/dev/"),
110
- (r) => r.pattern.startsWith("/api/models"),
111
- (r) => r.pattern.startsWith("/api/playground"),
112
- (r) => r.pattern.startsWith("/api/model-providers"),
144
+ under("/api/dev/"),
145
+ under("/api/models"),
146
+ under("/api/playground"),
147
+ under("/api/model-providers"),
148
+ exact("GET", "/api/model-routing/status"),
149
+ exact("GET", "/api/model-routing/decisions"),
150
+ exact("POST", "/api/model-routing/probe"),
151
+ // Secrets page: list safe environment labels and create an empty source; no CLI flow exists.
152
+ exact("GET", "/api/project-environments"),
153
+ exact("POST", "/api/project-environments"),
113
154
  exact("GET", "/api/agents/queued"),
114
155
  exact("GET", "/api/agents/detect"),
115
156
  exact("GET", "/api/agents/detect/stream"),
116
157
  exact("POST", "/api/agents/updates"),
117
158
  re("GET", /^\/api\/agents\/([^/]+)\/logs$/.source),
118
- (r) => r.pattern.startsWith("/api/ntfy/"),
159
+ under("/api/ntfy/"),
119
160
  exact("POST", "/api/transcribe"),
120
- (r) => r.pattern.startsWith("/api/service/"),
161
+ under("/api/service/"),
121
162
  exact("POST", "/api/server/restart"),
122
- re("POST", /^\/api\/tasks\/([^/]+)\/(sync|hotfix|abandon|reopen|archive|unarchive)$/.source),
123
163
  exact("POST", "/api/tasks/freeform"),
124
164
  exact("POST", "/api/docs/create"),
125
165
  exact("POST", "/api/docs/freeform"),
@@ -127,10 +167,15 @@ const UI_ONLY_MATCHERS = [
127
167
  ];
128
168
  const ALL_MATCHERS = [...CONTROL_API_MATCHERS, ...FILE_CLI_MATCHERS, ...UI_ONLY_MATCHERS];
129
169
  export function isApiRouteCovered(route) {
130
- if (!route.pattern.startsWith("/api/"))
170
+ if (!isApiRoutePattern(route.pattern))
131
171
  return true;
132
172
  return ALL_MATCHERS.some((m) => m(route));
133
173
  }
174
+ function isApiRoutePattern(pattern) {
175
+ // Router.listRoutes() stores RegExp routes as their `.source`, which begins
176
+ // with `^\\/api\\/` rather than the literal request path.
177
+ return pattern.startsWith("/api/") || pattern.replaceAll("\\/", "/").startsWith("^/api/");
178
+ }
134
179
  export function uncoveredApiRoutes(routes) {
135
- return routes.filter((r) => r.pattern.startsWith("/api/") && !isApiRouteCovered(r));
180
+ return routes.filter((r) => isApiRoutePattern(r.pattern) && !isApiRouteCovered(r));
136
181
  }
package/dist/cli/help.js CHANGED
@@ -12,7 +12,14 @@ import { c } from "./colors.js";
12
12
  import { table, termWidth, visibleWidth, wrap } from "./layout.js";
13
13
  import { NEW_FLAG_HELP, UPDATE_FLAG_HELP, flagSummary, flagUsageTokens } from "./task-flags.js";
14
14
  /** Commands whose own argument parser already handles `--help`. */
15
- export const SELF_HELP_COMMANDS = new Set(["support", "tunnel", "shot", "uninstall"]);
15
+ export const SELF_HELP_COMMANDS = new Set([
16
+ "support",
17
+ "tunnel",
18
+ "shot",
19
+ "uninstall",
20
+ "override",
21
+ "bundle",
22
+ ]);
16
23
  const GROUPS = [
17
24
  {
18
25
  name: "Setup",
@@ -94,20 +101,51 @@ const GROUPS = [
94
101
  },
95
102
  {
96
103
  name: "review",
97
- usage: "review <id> [--wait] [--json] [--port N]",
104
+ usage: "review <id> [--wait] [--json] [--port N] · review cancel <id> · review again <id>",
98
105
  desc: "Request review synchronously (PATCH status=review; waits for handoff)",
99
106
  flags: "--wait · --json · --port",
100
107
  },
108
+ {
109
+ name: "review again",
110
+ usage: "review again <id> [--json] [--port N]",
111
+ desc: "Start a fresh review run on a task already in review (POST /api/tasks/:id/review/again)",
112
+ flags: "--json · --port",
113
+ },
114
+ {
115
+ name: "sync",
116
+ usage: "sync <id> [--json] [--port N]",
117
+ desc: "Merge main into the task branch (POST /api/tasks/:id/sync)",
118
+ flags: "--json · --port",
119
+ },
120
+ {
121
+ name: "verify",
122
+ usage: "verify <id> [--json] [--port N]",
123
+ desc: "Refresh task shots and UI verification at the current branch HEAD",
124
+ flags: "--json · --port",
125
+ },
101
126
  {
102
127
  name: "done",
103
- usage: "done <id> [--commit-dirty] [--wait] [--json] [--port N]",
104
- desc: "Move to done through the close-out pipeline (POST /api/tasks/:id/done)",
105
- flags: "--commit-dirty · --wait · --json · --port",
128
+ usage: "done <id> [--cancel] [--commit-dirty] [--wait] [--json] [--port N]",
129
+ desc: "Run or cancel the close-out pipeline (POST /api/tasks/:id/done)",
130
+ flags: "--cancel · --commit-dirty · --wait · --json · --port",
131
+ },
132
+ { name: "abort", usage: "abort <id> [--json] [--port N]", desc: "Alias for done --cancel" },
133
+ {
134
+ name: "api",
135
+ usage: "api <METHOD> /api/<path> [--json body] [--port N]",
136
+ desc: "Authenticated API escape hatch for routes without a dedicated command",
137
+ flags: "--json body · --port",
138
+ },
139
+ {
140
+ name: "landable",
141
+ usage: "landable <id> [--json] [--port N]",
142
+ desc: "Read-only landing pre-checks (verdict, lock, worktree, merge, scope, main) — exits non-zero when not landable (GET /api/tasks/:id/landable)",
143
+ flags: "--json · --port",
106
144
  },
107
145
  {
108
146
  name: "override",
109
147
  usage: "override <id> [--cli <name>] [--model <model>] [--json] [--port N]",
110
- desc: "Set per-task engineer overrides (PATCH /api/tasks/:id)",
148
+ desc: "Set per-task engineer overrides (PATCH /api/tasks/:id). --help prints the agent-driver budget allowlist",
111
149
  flags: "--cli · --model · --json · --port",
112
150
  },
113
151
  {
@@ -118,9 +156,9 @@ const GROUPS = [
118
156
  },
119
157
  {
120
158
  name: "dev",
121
- usage: "dev [list] · dev <name> start|stop|restart|status|logs [--json] [--port N]",
122
- desc: "Start, stop and inspect a declared dev target (GET/POST /api/dev/targets)",
123
- flags: "--json · --port",
159
+ usage: "dev [list] · dev <name> start|stop|restart|status|logs [--service <name>] [--json] [--port N]",
160
+ desc: "Start, stop and inspect a declared dev target, including its companion services (--service, #0843)",
161
+ flags: "--service · --json · --port",
124
162
  },
125
163
  {
126
164
  name: "config",
@@ -130,16 +168,28 @@ const GROUPS = [
130
168
  },
131
169
  {
132
170
  name: "runners",
133
- usage: "runners [--probe] [--json] [--port N]",
171
+ usage: "runners [check | setup <host> [--login <cli>]] [--probe] [--json] [--port N]",
134
172
  desc: "Remote validation runner status (and optional probe)",
135
173
  flags: "--probe · --json · --port",
136
174
  },
137
175
  {
138
- name: "agents",
139
- usage: "agents [--json] [--port N]",
140
- desc: "List running agents (GET /api/agents/running)",
176
+ name: "integration",
177
+ usage: "integration list|pipeline|get <id>|retry <id>|refresh-install <id> [--json] [--port N]",
178
+ desc: "Inspect and retry integration jobs",
179
+ flags: "--json · --port",
180
+ },
181
+ {
182
+ name: "attention",
183
+ usage: "attention list|dismiss <task-id> [--json] [--port N]",
184
+ desc: "List attention items or dismiss a task's needs-input notice",
141
185
  flags: "--json · --port",
142
186
  },
187
+ {
188
+ name: "agents",
189
+ usage: 'agents [list] · agents pause|resume <agent> [--model <model>] [--until <date>] [--reason "..."] [--json] [--port N]',
190
+ desc: "List running agents, or pause/resume an allowlist agent or model without removing it",
191
+ flags: "--model · --until · --reason · --json · --port",
192
+ },
143
193
  {
144
194
  name: "stats",
145
195
  usage: "stats [--json] [--port N]",
@@ -170,12 +220,24 @@ const GROUPS = [
170
220
  desc: "Edit a task's metadata or body",
171
221
  flags: flagSummary(UPDATE_FLAG_HELP),
172
222
  },
223
+ {
224
+ name: "bundle",
225
+ usage: 'bundle add <id> --title "…" --area … --fix "…" --source "…" [--test "…"] | bundle edit <id> <En> --section "…" --section-body <text|-> | bundle done|undo <id> <En>',
226
+ desc: "Edit one easter-eggs bundle item (POST /api/tasks/:id/bundle); task status unchanged",
227
+ flags: "--force · --json · --port",
228
+ },
173
229
  {
174
230
  name: "story",
175
231
  usage: 'story new "<name>" --body <text|-> | story list | story show <number|name> | story update <number|name> [--name …] [--body <text|->]',
176
232
  desc: "Create, list, show or update story definitions verbatim (no PM agent)",
177
233
  flags: "new/show/update: --body - · list/show: --json",
178
234
  },
235
+ {
236
+ name: "schedule",
237
+ usage: "schedule list | run <id> | enable|disable <id> | delete <id> --yes | new … | update <id> … | preview …",
238
+ desc: "Manage task schedules under schedules/ (Agents → Scheduled Tasks)",
239
+ flags: "new/update: --cadence --timezone --time-of-day --task-title --body - · list/preview: --json · delete: --yes",
240
+ },
179
241
  {
180
242
  name: "index",
181
243
  usage: "index [--json]",
@@ -188,6 +250,12 @@ const GROUPS = [
188
250
  desc: "Collect leaked task worktrees and branches",
189
251
  flags: "--yes · --dry-run",
190
252
  },
253
+ {
254
+ name: "migrate",
255
+ usage: "migrate [--dry-run]",
256
+ desc: "Move local attachment bytes to the configured cloud provider",
257
+ flags: "--dry-run",
258
+ },
191
259
  ],
192
260
  },
193
261
  {
@@ -216,12 +284,23 @@ const GROUPS = [
216
284
  desc: "Definition-of-done gate: runs the plan declared in repoos.toml",
217
285
  flags: "--profile <name> · --changed <ref> · --print-plan · --local-tests",
218
286
  },
287
+ {
288
+ name: "checks slots",
289
+ usage: "checks slots [--release SLOT --confirm PID]",
290
+ desc: "Inspect local check slot holders and queue; explicitly release a wedged holder",
291
+ flags: "--release SLOT · --confirm PID",
292
+ },
219
293
  {
220
294
  name: "doctor",
221
295
  usage: "doctor [--json] [--verbose] [--probe <cli>] [--binary <path>]",
222
296
  desc: "Readiness preflight: config, layout, tools, server and secrets",
223
297
  flags: "--json · --verbose · --probe <cli> · --binary <path>",
224
298
  },
299
+ {
300
+ name: "secrets",
301
+ usage: "secrets <list|add|replace|delete> <environment> [KEY] | bind <consumer> <environment> [KEY ...]",
302
+ desc: "Manage project environment values and explicit per-consumer key grants",
303
+ },
225
304
  {
226
305
  name: "certify",
227
306
  usage: "certify <cli> [--yes] [--json] [--force] [--binary <path>]",
@@ -251,6 +330,12 @@ const GROUPS = [
251
330
  desc: "Stop this repo's serve process (by its own lockfile)",
252
331
  flags: "--port N",
253
332
  },
333
+ {
334
+ name: "servers",
335
+ usage: "servers [--json] [--prune]",
336
+ desc: "List locally running RepoOS servers from ~/.repoos/servers",
337
+ flags: "--json · --prune",
338
+ },
254
339
  {
255
340
  name: "service",
256
341
  usage: "service <sub>",
@@ -293,6 +378,8 @@ const EXAMPLES = [
293
378
  },
294
379
  { cmd: "repoos story list", comment: "registered stories, with numbers" },
295
380
  { cmd: "repoos story show 0007", comment: "definition + member tasks and their statuses" },
381
+ { cmd: "repoos schedule list", comment: "recurring task templates under schedules/" },
382
+ { cmd: "repoos schedule run 0001", comment: "create a task from a schedule now" },
296
383
  { cmd: "repoos list ready" },
297
384
  { cmd: "repoos outline src/server/agents.ts", comment: "then read only the range you need" },
298
385
  { cmd: "repoos doctor", comment: "passing checks are hidden; --verbose shows all" },
package/dist/cli/index.js CHANGED
@@ -4,12 +4,17 @@
4
4
  * Dependency-free arg routing — no commander/yargs needed for Stage 1.
5
5
  */
6
6
  import { cmdInit } from "../commands/init.js";
7
- import { cmdList, cmdShow, cmdMv, cmdRm, cmdUpdate, cmdNew, cmdIndex, cmdNote, } from "../commands/tasks.js";
7
+ import { cmdSecrets } from "../commands/secrets.js";
8
+ import { cmdList, cmdShow, cmdMv, cmdRm, cmdUpdate, cmdNew, cmdIndex, cmdNote, cmdSplit, } from "../commands/tasks.js";
8
9
  import { cmdDocs, cmdNewDoc } from "../commands/docs.js";
9
10
  import { cmdStory } from "../commands/stories.js";
11
+ import { cmdSchedule } from "../commands/schedule.js";
12
+ import { cmdReminder } from "../commands/reminder.js";
10
13
  import { cmdGc } from "../commands/gc.js";
14
+ import { cmdMigrate } from "../commands/migrate.js";
11
15
  import { cmdOutline } from "../commands/outline.js";
12
16
  import { cmdCheck } from "../commands/check.js";
17
+ import { cmdChecks } from "../commands/checks.js";
13
18
  import { cmdShot } from "../commands/shot.js";
14
19
  import { cmdServe, serveProcessTitle, setServeProcessTitle } from "../commands/serve.js";
15
20
  import { cmdStop } from "../commands/stop.js";
@@ -21,12 +26,14 @@ import { cmdDoctor } from "../commands/doctor.js";
21
26
  import { cmdCertify } from "../commands/certify.js";
22
27
  import { cmdSupport } from "../commands/support.js";
23
28
  import { cmdService } from "../commands/service.js";
24
- import { cmdAgentsRunning, cmdConfig, cmdDone, cmdMessage, cmdOverride, cmdPause, cmdPreview, cmdDev, cmdReview, cmdRunners, cmdStart, cmdStats, cmdDecisions, } from "../commands/control-api.js";
29
+ import { cmdServers } from "../commands/servers.js";
30
+ import { cmdAgentsRunning, cmdConfig, cmdDone, cmdLandable, cmdMessage, cmdOverride, cmdPause, cmdPreview, cmdDev, cmdReview, cmdVerify, cmdRunners, cmdStart, cmdSync, cmdStats, cmdDecisions, cmdApi, cmdIntegration, cmdAttention, } from "../commands/control-api.js";
25
31
  import { cmdWatch } from "../commands/watch.js";
26
32
  import { cmdDriver } from "../commands/driver.js";
33
+ import { cmdBundle } from "../commands/bundle.js";
27
34
  import { checkBuild } from "../core/build.js";
28
35
  import { loadConfig } from "../core/config.js";
29
- import { reexecAfterStaleBuild, reexecUnderBunIfRequested } from "../core/runtime.js";
36
+ import { preferAppleGit, reexecAfterStaleBuild, reexecUnderBunIfRequested, } from "../core/runtime.js";
30
37
  import { c } from "./colors.js";
31
38
  import { commandUsage, printCommandHelp, printHelp, SELF_HELP_COMMANDS } from "./help.js";
32
39
  import { readVersion } from "../core/version.js";
@@ -57,6 +64,9 @@ function main() {
57
64
  if (reexecAfterStaleBuild()) {
58
65
  return;
59
66
  }
67
+ // Apple-signed git first on macOS: ad-hoc-signed git costs ~2x wall time in
68
+ // syspolicyd re-validation on every launch (see preferAppleGit).
69
+ preferAppleGit();
60
70
  // Name the managed project in `ps`/Activity Monitor for the long-lived serve
61
71
  // process (#0347). Done here — before the staleness check — so the one-time
62
72
  // Bun re-exec inside setServeProcessTitle can't re-print that warning, and
@@ -135,6 +145,12 @@ function main() {
135
145
  case "support":
136
146
  void cmdSupport(rest);
137
147
  break;
148
+ case "secrets":
149
+ void cmdSecrets(rest).then((code) => {
150
+ if (code !== 0)
151
+ process.exitCode = code;
152
+ });
153
+ break;
138
154
  case "show":
139
155
  case "cat":
140
156
  cmdShow(rest[0]);
@@ -163,9 +179,18 @@ function main() {
163
179
  case "update":
164
180
  cmdUpdate(rest);
165
181
  break;
182
+ case "split":
183
+ void cmdSplit(rest).then(() => { });
184
+ break;
185
+ case "bundle":
186
+ void cmdBundle(rest).then((code) => {
187
+ if (code !== 0)
188
+ process.exitCode = code;
189
+ });
190
+ break;
166
191
  case "new":
167
192
  case "add":
168
- cmdNew(rest);
193
+ void cmdNew(rest);
169
194
  break;
170
195
  case "new-doc":
171
196
  void cmdNewDoc(rest);
@@ -177,6 +202,15 @@ function main() {
177
202
  case "stories":
178
203
  cmdStory(rest);
179
204
  break;
205
+ case "reminder":
206
+ void cmdReminder(rest).then((code) => {
207
+ process.exitCode = code;
208
+ });
209
+ break;
210
+ case "schedule":
211
+ case "schedules":
212
+ cmdSchedule(rest);
213
+ break;
180
214
  case "index":
181
215
  case "reindex":
182
216
  cmdIndex(rest);
@@ -184,6 +218,9 @@ function main() {
184
218
  case "gc":
185
219
  cmdGc(rest);
186
220
  break;
221
+ case "migrate":
222
+ cmdMigrate(rest);
223
+ break;
187
224
  case "outline":
188
225
  cmdOutline(rest);
189
226
  break;
@@ -197,9 +234,15 @@ function main() {
197
234
  case "service":
198
235
  void cmdService(rest);
199
236
  break;
237
+ case "servers":
238
+ void cmdServers(rest);
239
+ break;
200
240
  case "check":
201
241
  void cmdCheck(rest);
202
242
  break;
243
+ case "checks":
244
+ cmdChecks(rest);
245
+ break;
203
246
  case "start":
204
247
  void cmdStart(rest).then((code) => {
205
248
  if (code !== 0)
@@ -212,6 +255,12 @@ function main() {
212
255
  process.exitCode = code;
213
256
  });
214
257
  break;
258
+ case "sync":
259
+ void cmdSync(rest).then((code) => {
260
+ if (code !== 0)
261
+ process.exitCode = code;
262
+ });
263
+ break;
215
264
  case "message":
216
265
  void cmdMessage(rest).then((code) => {
217
266
  if (code !== 0)
@@ -224,12 +273,42 @@ function main() {
224
273
  process.exitCode = code;
225
274
  });
226
275
  break;
276
+ case "integration":
277
+ void cmdIntegration(rest).then((code) => {
278
+ if (code !== 0)
279
+ process.exitCode = code;
280
+ });
281
+ break;
282
+ case "verify":
283
+ void cmdVerify(rest).then((code) => {
284
+ if (code !== 0)
285
+ process.exitCode = code;
286
+ });
287
+ break;
227
288
  case "done":
228
289
  void cmdDone(rest).then((code) => {
229
290
  if (code !== 0)
230
291
  process.exitCode = code;
231
292
  });
232
293
  break;
294
+ case "abort":
295
+ void cmdDone([...rest, "--cancel"]).then((code) => {
296
+ if (code !== 0)
297
+ process.exitCode = code;
298
+ });
299
+ break;
300
+ case "api":
301
+ void cmdApi(rest).then((code) => {
302
+ if (code !== 0)
303
+ process.exitCode = code;
304
+ });
305
+ break;
306
+ case "landable":
307
+ void cmdLandable(rest).then((code) => {
308
+ if (code !== 0)
309
+ process.exitCode = code;
310
+ });
311
+ break;
233
312
  case "override":
234
313
  void cmdOverride(rest).then((code) => {
235
314
  if (code !== 0)
@@ -273,12 +352,17 @@ function main() {
273
352
  });
274
353
  break;
275
354
  case "decisions":
276
- case "attention":
277
355
  void cmdDecisions(rest).then((code) => {
278
356
  if (code !== 0)
279
357
  process.exitCode = code;
280
358
  });
281
359
  break;
360
+ case "attention":
361
+ void cmdAttention(rest).then((code) => {
362
+ if (code !== 0)
363
+ process.exitCode = code;
364
+ });
365
+ break;
282
366
  case "watch":
283
367
  void cmdWatch(rest).then((code) => {
284
368
  if (code !== 0)
@@ -21,7 +21,9 @@ export const PRIORITY_USAGE = PRIORITIES.join("|");
21
21
  export const TYPE_USAGE = TASK_TYPES.join("|");
22
22
  /** Every flag `repoos new` accepts, in help order. */
23
23
  export const NEW_FLAG_HELP = {
24
- ai: { desc: "Assign the task to an AI engineer" },
24
+ ai: { desc: "Assign the task to an AI engineer (shorthand for --assigned-to ai)" },
25
+ human: { desc: "Assign the task to a human (shorthand for --assigned-to human)" },
26
+ "assigned-to": { value: "ai|human", desc: "Assignee" },
25
27
  type: { value: TYPE_USAGE, desc: "Task type" },
26
28
  area: { value: "web,core", desc: "Area(s), comma-separated" },
27
29
  story: { value: '"name"', desc: "Tag the task as part of a story (delivery slice)" },
@@ -32,7 +34,19 @@ export const NEW_FLAG_HELP = {
32
34
  hold: { value: "true|false", desc: "Hold the task out of auto-dispatch" },
33
35
  paths: { value: "a,b", desc: "Files the task touches, e.g. src/a.ts,src/b.ts" },
34
36
  body: { value: '"..."|-', desc: "Task body; `-` reads it from stdin" },
37
+ "human-step-override": {
38
+ value: '"reason"',
39
+ desc: "Clear a needs-human-step keyword match with a reason",
40
+ },
35
41
  shots: { value: '"<JSON list>"|-', desc: "Declare the ## Shots section (validated JSON)" },
42
+ screenshot: {
43
+ value: "path.png",
44
+ desc: "Attach a local image to ## Screenshots (repeatable)",
45
+ },
46
+ caption: {
47
+ value: '"..."',
48
+ desc: "Alt text for a --screenshot image (repeatable; pairs by position)",
49
+ },
36
50
  };
37
51
  /** Every flag `repoos update` accepts, in help order. */
38
52
  export const UPDATE_FLAG_HELP = {
@@ -45,6 +59,10 @@ export const UPDATE_FLAG_HELP = {
45
59
  body: { value: '"..."|-', desc: "Replace the body; `-` reads it from stdin" },
46
60
  branch: { value: "b", desc: "Branch name" },
47
61
  "assigned-to": { value: "ai|human", desc: "Assignee" },
62
+ "human-step-override": {
63
+ value: '"reason"',
64
+ desc: "Clear a needs-human-step keyword match with a reason",
65
+ },
48
66
  "needs-input": { value: "true|false", desc: "Flag the task as needing human input" },
49
67
  "needs-merge": { value: "true|false", desc: "Flag the task as needing a merge" },
50
68
  hold: { value: "true|false", desc: "Hold the task out of auto-dispatch" },
@@ -52,6 +70,14 @@ export const UPDATE_FLAG_HELP = {
52
70
  questions: { value: '"Q1\\nQ2"', desc: "Open questions for the human (newline or JSON list)" },
53
71
  "clear-questions": { desc: "Clear the recorded questions" },
54
72
  shots: { value: '"<JSON list>"|-', desc: "Declare the ## Shots section (validated JSON)" },
73
+ screenshot: {
74
+ value: "path.png",
75
+ desc: "Attach a local image to ## Screenshots (repeatable)",
76
+ },
77
+ caption: {
78
+ value: '"..."',
79
+ desc: "Alt text for a --screenshot image (repeatable; pairs by position)",
80
+ },
55
81
  section: { value: '"heading"', desc: "Replace/create one ## section (pair with --section-body)" },
56
82
  "section-body": { value: '"..."|-', desc: "Body for --section; `-` reads it from stdin" },
57
83
  force: { desc: "Allow a --body replace that drops spec headings" },