voratiq 0.1.0-beta.2 → 0.1.0-beta.21

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 (527) hide show
  1. package/README.md +41 -29
  2. package/dist/agents/launch/chat.d.ts +23 -0
  3. package/dist/agents/launch/chat.js +44 -0
  4. package/dist/agents/launch/environment.d.ts +8 -0
  5. package/dist/{commands/run/agents/workspace-prep.js → agents/launch/environment.js} +5 -27
  6. package/dist/agents/launch/prompt.d.ts +6 -0
  7. package/dist/agents/launch/prompt.js +12 -0
  8. package/dist/agents/launch/provider-state.d.ts +39 -0
  9. package/dist/agents/launch/provider-state.js +103 -0
  10. package/dist/agents/runtime/auth.d.ts +27 -0
  11. package/dist/agents/runtime/auth.js +72 -0
  12. package/dist/agents/runtime/chat.d.ts +5 -0
  13. package/dist/agents/runtime/chat.js +7 -0
  14. package/dist/agents/runtime/errors.d.ts +27 -0
  15. package/dist/agents/runtime/errors.js +51 -0
  16. package/dist/{commands/run/agents → agents/runtime}/failures.d.ts +0 -1
  17. package/dist/agents/runtime/failures.js +136 -0
  18. package/dist/agents/runtime/harness.d.ts +2 -0
  19. package/dist/agents/runtime/harness.js +119 -0
  20. package/dist/{commands/run/agents/sandbox-launcher.d.ts → agents/runtime/launcher.d.ts} +18 -6
  21. package/dist/{commands/run/agents/sandbox-launcher.js → agents/runtime/launcher.js} +17 -39
  22. package/dist/{commands/run/agents/workspace-prep.d.ts → agents/runtime/manifest.d.ts} +6 -6
  23. package/dist/agents/runtime/manifest.js +34 -0
  24. package/dist/agents/runtime/policy.d.ts +32 -0
  25. package/dist/agents/runtime/policy.js +240 -0
  26. package/dist/agents/runtime/registry.d.ts +4 -0
  27. package/dist/agents/runtime/registry.js +54 -0
  28. package/dist/{commands/run → agents/runtime}/sandbox.d.ts +8 -2
  29. package/dist/{commands/run → agents/runtime}/sandbox.js +28 -67
  30. package/dist/agents/runtime/shim/run-agent-shim.d.ts +1 -0
  31. package/dist/agents/runtime/shim/run-agent-shim.js +276 -0
  32. package/dist/agents/runtime/types.d.ts +91 -0
  33. package/dist/{commands/run/agents → agents/runtime}/watchdog.d.ts +4 -3
  34. package/dist/{commands/run/agents → agents/runtime}/watchdog.js +155 -26
  35. package/dist/auth/providers/codex.js +7 -2
  36. package/dist/auth/providers/gemini.js +14 -6
  37. package/dist/auth/providers/types.d.ts +1 -0
  38. package/dist/auth/providers/utils.d.ts +0 -1
  39. package/dist/auth/providers/utils.js +1 -49
  40. package/dist/bin.js +369 -71
  41. package/dist/cli/apply.d.ts +4 -0
  42. package/dist/cli/apply.js +28 -9
  43. package/dist/cli/auto.d.ts +32 -0
  44. package/dist/cli/auto.js +232 -0
  45. package/dist/cli/contract.d.ts +328 -0
  46. package/dist/cli/contract.js +480 -0
  47. package/dist/cli/errors.d.ts +3 -0
  48. package/dist/cli/errors.js +21 -3
  49. package/dist/cli/init.d.ts +5 -0
  50. package/dist/cli/init.js +34 -6
  51. package/dist/cli/list.d.ts +6 -4
  52. package/dist/cli/list.js +39 -16
  53. package/dist/cli/mcp.d.ts +2 -0
  54. package/dist/cli/mcp.js +16 -0
  55. package/dist/cli/message.d.ts +28 -0
  56. package/dist/cli/message.js +147 -0
  57. package/dist/cli/operator-envelope.d.ts +180 -0
  58. package/dist/cli/operator-envelope.js +425 -0
  59. package/dist/cli/output.d.ts +15 -1
  60. package/dist/cli/output.js +153 -5
  61. package/dist/cli/prune.d.ts +7 -3
  62. package/dist/cli/prune.js +57 -12
  63. package/dist/cli/reduce.d.ts +29 -0
  64. package/dist/cli/reduce.js +211 -0
  65. package/dist/cli/root-launcher.d.ts +4 -0
  66. package/dist/cli/root-launcher.js +15 -0
  67. package/dist/cli/run.d.ts +27 -1
  68. package/dist/cli/run.js +108 -16
  69. package/dist/cli/spec.d.ts +31 -0
  70. package/dist/cli/spec.js +180 -0
  71. package/dist/cli/verify.d.ts +35 -0
  72. package/dist/cli/verify.js +297 -0
  73. package/dist/commands/apply/command.d.ts +2 -0
  74. package/dist/commands/apply/command.js +145 -6
  75. package/dist/commands/apply/errors.d.ts +43 -4
  76. package/dist/commands/apply/errors.js +100 -22
  77. package/dist/commands/apply/types.d.ts +2 -1
  78. package/dist/commands/auto/command.d.ts +145 -0
  79. package/dist/commands/auto/command.js +433 -0
  80. package/dist/commands/auto/errors.d.ts +19 -0
  81. package/dist/commands/auto/errors.js +19 -0
  82. package/dist/commands/auto/validation.d.ts +14 -0
  83. package/dist/commands/auto/validation.js +90 -0
  84. package/dist/commands/fetch.d.ts +2 -2
  85. package/dist/commands/fetch.js +4 -4
  86. package/dist/commands/init/agents.d.ts +2 -1
  87. package/dist/commands/init/agents.js +66 -63
  88. package/dist/commands/init/command.js +300 -16
  89. package/dist/commands/init/types.d.ts +18 -7
  90. package/dist/commands/interactive/lifecycle.d.ts +15 -0
  91. package/dist/commands/interactive/lifecycle.js +141 -0
  92. package/dist/commands/list/command.d.ts +10 -3
  93. package/dist/commands/list/command.js +597 -40
  94. package/dist/commands/message/command.d.ts +23 -0
  95. package/dist/commands/message/command.js +215 -0
  96. package/dist/commands/message/errors.d.ts +9 -0
  97. package/dist/commands/message/errors.js +20 -0
  98. package/dist/commands/message/lifecycle.d.ts +14 -0
  99. package/dist/commands/message/lifecycle.js +128 -0
  100. package/dist/commands/prune/command.d.ts +2 -1
  101. package/dist/commands/prune/command.js +61 -10
  102. package/dist/commands/prune/errors.d.ts +1 -1
  103. package/dist/commands/prune/errors.js +5 -5
  104. package/dist/commands/prune/types.d.ts +21 -0
  105. package/dist/commands/reduce/command.d.ts +26 -0
  106. package/dist/commands/reduce/command.js +145 -0
  107. package/dist/commands/reduce/errors.d.ts +17 -0
  108. package/dist/commands/reduce/errors.js +32 -0
  109. package/dist/commands/reduce/targets.d.ts +11 -0
  110. package/dist/commands/reduce/targets.js +271 -0
  111. package/dist/commands/root-launcher/command.d.ts +31 -0
  112. package/dist/commands/root-launcher/command.js +233 -0
  113. package/dist/commands/run/command.d.ts +6 -1
  114. package/dist/commands/run/command.js +70 -40
  115. package/dist/commands/run/lifecycle.d.ts +7 -5
  116. package/dist/commands/run/lifecycle.js +45 -23
  117. package/dist/commands/run/record-init.d.ts +4 -1
  118. package/dist/commands/run/record-init.js +5 -2
  119. package/dist/commands/run/shim/run-agent-shim.d.ts +2 -1
  120. package/dist/commands/run/shim/run-agent-shim.js +4 -219
  121. package/dist/commands/run/validation.d.ts +2 -3
  122. package/dist/commands/run/validation.js +54 -25
  123. package/dist/commands/shared/max-parallel.d.ts +5 -0
  124. package/dist/commands/shared/max-parallel.js +15 -0
  125. package/dist/commands/shared/preview.d.ts +10 -0
  126. package/dist/commands/shared/preview.js +60 -0
  127. package/dist/commands/shared/resolve-reduction-competitors.d.ts +15 -0
  128. package/dist/commands/shared/resolve-reduction-competitors.js +13 -0
  129. package/dist/commands/shared/resolve-stage-competitors.d.ts +19 -0
  130. package/dist/commands/shared/resolve-stage-competitors.js +171 -0
  131. package/dist/commands/shared/session-id.d.ts +1 -0
  132. package/dist/commands/shared/session-id.js +1 -0
  133. package/dist/commands/spec/command.d.ts +22 -0
  134. package/dist/commands/spec/command.js +330 -0
  135. package/dist/commands/spec/errors.d.ts +11 -0
  136. package/dist/commands/spec/errors.js +23 -0
  137. package/dist/commands/verify/agents.d.ts +8 -0
  138. package/dist/commands/verify/agents.js +29 -0
  139. package/dist/commands/verify/command.d.ts +23 -0
  140. package/dist/commands/verify/command.js +168 -0
  141. package/dist/commands/verify/lifecycle.d.ts +14 -0
  142. package/dist/commands/verify/lifecycle.js +229 -0
  143. package/dist/commands/verify/max-parallel.d.ts +7 -0
  144. package/dist/commands/verify/max-parallel.js +15 -0
  145. package/dist/commands/verify/targets.d.ts +18 -0
  146. package/dist/commands/verify/targets.js +420 -0
  147. package/dist/competition/command-adapter.d.ts +35 -0
  148. package/dist/competition/command-adapter.js +20 -0
  149. package/dist/competition/core.d.ts +41 -0
  150. package/dist/competition/core.js +181 -0
  151. package/dist/competition/shared/extra-context.d.ts +14 -0
  152. package/dist/competition/shared/extra-context.js +100 -0
  153. package/dist/competition/shared/preflight.d.ts +11 -0
  154. package/dist/competition/shared/preflight.js +39 -0
  155. package/dist/competition/shared/prompt-helpers.d.ts +16 -0
  156. package/dist/competition/shared/prompt-helpers.js +27 -0
  157. package/dist/competition/shared/prune.d.ts +1 -0
  158. package/dist/competition/shared/prune.js +4 -0
  159. package/dist/competition/shared/sandbox-policy.d.ts +9 -0
  160. package/dist/competition/shared/sandbox-policy.js +7 -0
  161. package/dist/competition/shared/teardown.d.ts +36 -0
  162. package/dist/competition/shared/teardown.js +101 -0
  163. package/dist/configs/agents/defaults.d.ts +31 -2
  164. package/dist/configs/agents/defaults.js +346 -30
  165. package/dist/configs/agents/errors.js +14 -11
  166. package/dist/configs/agents/loader.d.ts +11 -1
  167. package/dist/configs/agents/loader.js +71 -4
  168. package/dist/configs/agents/types.js +2 -2
  169. package/dist/configs/environment/detect.js +9 -4
  170. package/dist/configs/environment/errors.js +4 -4
  171. package/dist/configs/environment/loader.d.ts +1 -1
  172. package/dist/configs/environment/loader.js +3 -3
  173. package/dist/configs/orchestration/bootstrap.d.ts +16 -0
  174. package/dist/configs/orchestration/bootstrap.js +122 -0
  175. package/dist/configs/orchestration/errors.d.ts +15 -0
  176. package/dist/configs/orchestration/errors.js +28 -0
  177. package/dist/configs/orchestration/loader.d.ts +9 -0
  178. package/dist/configs/orchestration/loader.js +148 -0
  179. package/dist/configs/orchestration/types.d.ts +102 -0
  180. package/dist/configs/orchestration/types.js +65 -0
  181. package/dist/configs/sandbox/defaults.js +14 -4
  182. package/dist/configs/sandbox/errors.d.ts +1 -1
  183. package/dist/configs/sandbox/errors.js +1 -1
  184. package/dist/configs/sandbox/loader.js +6 -4
  185. package/dist/configs/sandbox/schemas.js +4 -2
  186. package/dist/configs/settings/loader.d.ts +7 -0
  187. package/dist/configs/settings/loader.js +81 -0
  188. package/dist/configs/settings/types.d.ts +47 -0
  189. package/dist/configs/settings/types.js +23 -0
  190. package/dist/configs/verification/errors.d.ts +11 -0
  191. package/dist/configs/verification/errors.js +21 -0
  192. package/dist/configs/verification/loader.d.ts +8 -0
  193. package/dist/configs/verification/loader.js +43 -0
  194. package/dist/configs/verification/methods.d.ts +35 -0
  195. package/dist/configs/verification/methods.js +41 -0
  196. package/dist/configs/verification/programmatic-defaults.d.ts +10 -0
  197. package/dist/configs/verification/programmatic-defaults.js +42 -0
  198. package/dist/configs/verification/programmatic-detect.d.ts +10 -0
  199. package/dist/configs/{evals/detect.js → verification/programmatic-detect.js} +22 -33
  200. package/dist/configs/verification/types.d.ts +49 -0
  201. package/dist/configs/verification/types.js +45 -0
  202. package/dist/contracts/list.d.ts +207 -0
  203. package/dist/contracts/list.js +154 -0
  204. package/dist/domain/interactive/model/types.d.ts +104 -0
  205. package/dist/domain/interactive/model/types.js +83 -0
  206. package/dist/domain/interactive/persistence/adapter.d.ts +39 -0
  207. package/dist/domain/interactive/persistence/adapter.js +144 -0
  208. package/dist/domain/interactive/prompt.d.ts +3 -0
  209. package/dist/domain/interactive/prompt.js +7 -0
  210. package/dist/domain/message/competition/adapter.d.ts +36 -0
  211. package/dist/domain/message/competition/adapter.js +197 -0
  212. package/dist/domain/message/competition/prompt.d.ts +8 -0
  213. package/dist/domain/message/competition/prompt.js +29 -0
  214. package/dist/domain/message/model/mutators.d.ts +17 -0
  215. package/dist/domain/message/model/mutators.js +107 -0
  216. package/dist/domain/message/model/types.d.ts +100 -0
  217. package/dist/domain/message/model/types.js +87 -0
  218. package/dist/domain/message/persistence/adapter.d.ts +43 -0
  219. package/dist/domain/message/persistence/adapter.js +124 -0
  220. package/dist/domain/reduce/competition/adapter.d.ts +42 -0
  221. package/dist/domain/reduce/competition/adapter.js +826 -0
  222. package/dist/domain/reduce/competition/output-validation.d.ts +4 -0
  223. package/dist/domain/reduce/competition/output-validation.js +18 -0
  224. package/dist/domain/reduce/competition/prompt.d.ts +10 -0
  225. package/dist/domain/reduce/competition/prompt.js +96 -0
  226. package/dist/domain/reduce/competition/reduction.d.ts +9 -0
  227. package/dist/domain/reduce/competition/reduction.js +32 -0
  228. package/dist/domain/reduce/model/types.d.ts +122 -0
  229. package/dist/domain/reduce/model/types.js +84 -0
  230. package/dist/domain/reduce/persistence/adapter.d.ts +43 -0
  231. package/dist/domain/reduce/persistence/adapter.js +126 -0
  232. package/dist/domain/run/competition/adapter.d.ts +30 -0
  233. package/dist/domain/run/competition/adapter.js +39 -0
  234. package/dist/domain/run/competition/agent-execution.d.ts +20 -0
  235. package/dist/domain/run/competition/agent-execution.js +45 -0
  236. package/dist/domain/run/competition/agent-preparation.d.ts +12 -0
  237. package/dist/domain/run/competition/agent-preparation.js +24 -0
  238. package/dist/domain/run/competition/agents/artifacts.d.ts +17 -0
  239. package/dist/domain/run/competition/agents/artifacts.js +173 -0
  240. package/dist/{commands/run → domain/run/competition}/agents/lifecycle.d.ts +3 -3
  241. package/dist/{commands/run → domain/run/competition}/agents/lifecycle.js +84 -64
  242. package/dist/domain/run/competition/agents/post-processing.d.ts +12 -0
  243. package/dist/domain/run/competition/agents/post-processing.js +4 -0
  244. package/dist/domain/run/competition/agents/preparation.js +64 -0
  245. package/dist/{commands/run → domain/run/competition}/agents/run-context.d.ts +9 -16
  246. package/dist/{commands/run → domain/run/competition}/agents/run-context.js +22 -70
  247. package/dist/{commands/run → domain/run/competition}/agents/types.d.ts +10 -13
  248. package/dist/domain/run/competition/agents/workspace.d.ts +21 -0
  249. package/dist/domain/run/competition/agents/workspace.js +47 -0
  250. package/dist/{commands/run → domain/run/competition}/errors.d.ts +8 -1
  251. package/dist/{commands/run → domain/run/competition}/errors.js +39 -9
  252. package/dist/{commands/run → domain/run/competition}/phases.d.ts +1 -2
  253. package/dist/domain/run/competition/phases.js +1 -0
  254. package/dist/domain/run/competition/prompt.d.ts +7 -0
  255. package/dist/domain/run/competition/prompt.js +27 -0
  256. package/dist/{commands/run → domain/run/competition}/reports.d.ts +5 -3
  257. package/dist/{commands/run → domain/run/competition}/reports.js +7 -19
  258. package/dist/domain/run/competition/termination-state.d.ts +4 -0
  259. package/dist/domain/run/competition/termination-state.js +12 -0
  260. package/dist/{records → domain/run/model}/enhanced.d.ts +6 -7
  261. package/dist/{records → domain/run/model}/enhanced.js +11 -11
  262. package/dist/{records → domain/run/model}/errors.d.ts +1 -1
  263. package/dist/{records → domain/run/model}/errors.js +5 -5
  264. package/dist/{records → domain/run/model}/mutators.d.ts +4 -3
  265. package/dist/{records → domain/run/model}/mutators.js +58 -36
  266. package/dist/domain/run/model/types.d.ts +376 -0
  267. package/dist/domain/run/model/types.js +192 -0
  268. package/dist/{records/persistence.d.ts → domain/run/persistence/adapter.d.ts} +9 -3
  269. package/dist/domain/run/persistence/adapter.js +340 -0
  270. package/dist/domain/run/persistence/error-mapping.d.ts +2 -0
  271. package/dist/domain/run/persistence/error-mapping.js +17 -0
  272. package/dist/domain/shared/lifecycle.d.ts +54 -0
  273. package/dist/domain/shared/lifecycle.js +165 -0
  274. package/dist/domain/shared/token-usage.d.ts +21 -0
  275. package/dist/domain/shared/token-usage.js +38 -0
  276. package/dist/domain/spec/competition/adapter.d.ts +31 -0
  277. package/dist/domain/spec/competition/adapter.js +196 -0
  278. package/dist/domain/spec/competition/prompt.d.ts +11 -0
  279. package/dist/domain/spec/competition/prompt.js +44 -0
  280. package/dist/domain/spec/model/output.d.ts +13 -0
  281. package/dist/domain/spec/model/output.js +36 -0
  282. package/dist/domain/spec/model/types.d.ts +98 -0
  283. package/dist/domain/spec/model/types.js +84 -0
  284. package/dist/domain/spec/persistence/adapter.d.ts +51 -0
  285. package/dist/domain/spec/persistence/adapter.js +140 -0
  286. package/dist/domain/verify/blinding/aliases.d.ts +7 -0
  287. package/dist/domain/verify/blinding/aliases.js +23 -0
  288. package/dist/domain/verify/competition/adapter.d.ts +54 -0
  289. package/dist/domain/verify/competition/adapter.js +444 -0
  290. package/dist/domain/verify/competition/artifacts.d.ts +6 -0
  291. package/dist/domain/verify/competition/artifacts.js +7 -0
  292. package/dist/domain/verify/competition/blinding.d.ts +24 -0
  293. package/dist/domain/verify/competition/blinding.js +109 -0
  294. package/dist/domain/verify/competition/finalize.d.ts +11 -0
  295. package/dist/domain/verify/competition/finalize.js +65 -0
  296. package/dist/domain/verify/competition/programmatic.d.ts +15 -0
  297. package/dist/domain/verify/competition/programmatic.js +352 -0
  298. package/dist/domain/verify/competition/prompt.d.ts +19 -0
  299. package/dist/domain/verify/competition/prompt.js +63 -0
  300. package/dist/domain/verify/competition/rubric.d.ts +23 -0
  301. package/dist/domain/verify/competition/rubric.js +77 -0
  302. package/dist/domain/verify/competition/shared-layout.d.ts +121 -0
  303. package/dist/domain/verify/competition/shared-layout.js +365 -0
  304. package/dist/domain/verify/competition/target.d.ts +47 -0
  305. package/dist/domain/verify/competition/target.js +1 -0
  306. package/dist/domain/verify/model/mutators.d.ts +16 -0
  307. package/dist/domain/verify/model/mutators.js +126 -0
  308. package/dist/domain/verify/model/types.d.ts +408 -0
  309. package/dist/domain/verify/model/types.js +289 -0
  310. package/dist/domain/verify/persistence/adapter.d.ts +43 -0
  311. package/dist/domain/verify/persistence/adapter.js +126 -0
  312. package/dist/domain/verify/programmatic/runner.d.ts +22 -0
  313. package/dist/domain/verify/programmatic/runner.js +209 -0
  314. package/dist/domain/verify/rubric-result.d.ts +28 -0
  315. package/dist/domain/verify/rubric-result.js +121 -0
  316. package/dist/extra-context/contract.d.ts +17 -0
  317. package/dist/extra-context/contract.js +60 -0
  318. package/dist/interactive/index.d.ts +2 -0
  319. package/dist/interactive/index.js +1 -0
  320. package/dist/interactive/providers/launch.d.ts +23 -0
  321. package/dist/interactive/providers/launch.js +203 -0
  322. package/dist/interactive/providers/mcp.d.ts +13 -0
  323. package/dist/interactive/providers/mcp.js +547 -0
  324. package/dist/interactive/providers/shared.d.ts +2 -0
  325. package/dist/interactive/providers/shared.js +1 -0
  326. package/dist/interactive/providers.d.ts +3 -0
  327. package/dist/interactive/providers.js +3 -0
  328. package/dist/interactive/records.d.ts +2 -0
  329. package/dist/interactive/records.js +1 -0
  330. package/dist/interactive/substrate.d.ts +21 -0
  331. package/dist/interactive/substrate.js +522 -0
  332. package/dist/interactive/types.d.ts +101 -0
  333. package/dist/interactive/types.js +1 -0
  334. package/dist/mcp/server.d.ts +88 -0
  335. package/dist/mcp/server.js +790 -0
  336. package/dist/persistence/error-mapping.d.ts +19 -0
  337. package/dist/persistence/error-mapping.js +44 -0
  338. package/dist/persistence/errors.d.ts +26 -0
  339. package/dist/persistence/errors.js +49 -0
  340. package/dist/persistence/extra-context.d.ts +9 -0
  341. package/dist/persistence/extra-context.js +60 -0
  342. package/dist/{records → persistence}/history-lock.js +2 -2
  343. package/dist/persistence/record-path-schema.d.ts +3 -0
  344. package/dist/persistence/record-path-schema.js +16 -0
  345. package/dist/persistence/session-store.d.ts +92 -0
  346. package/dist/persistence/session-store.js +412 -0
  347. package/dist/policy/auto.d.ts +13 -0
  348. package/dist/policy/auto.js +22 -0
  349. package/dist/policy/index.d.ts +5 -0
  350. package/dist/policy/index.js +5 -0
  351. package/dist/policy/resolution.d.ts +6 -0
  352. package/dist/policy/resolution.js +23 -0
  353. package/dist/policy/result.d.ts +53 -0
  354. package/dist/policy/result.js +15 -0
  355. package/dist/policy/selector.d.ts +11 -0
  356. package/dist/policy/selector.js +57 -0
  357. package/dist/policy/verification.d.ts +77 -0
  358. package/dist/policy/verification.js +365 -0
  359. package/dist/policy/verifier-selection.d.ts +13 -0
  360. package/dist/policy/verifier-selection.js +78 -0
  361. package/dist/preflight/branch.d.ts +9 -0
  362. package/dist/preflight/branch.js +48 -0
  363. package/dist/preflight/errors.d.ts +3 -0
  364. package/dist/preflight/errors.js +10 -3
  365. package/dist/preflight/index.d.ts +13 -0
  366. package/dist/preflight/index.js +43 -8
  367. package/dist/render/interactions/confirmation.js +4 -2
  368. package/dist/render/transcripts/apply.js +9 -10
  369. package/dist/render/transcripts/auto.d.ts +27 -0
  370. package/dist/render/transcripts/auto.js +21 -0
  371. package/dist/render/transcripts/init.d.ts +4 -15
  372. package/dist/render/transcripts/init.js +71 -72
  373. package/dist/render/transcripts/list.d.ts +10 -1
  374. package/dist/render/transcripts/list.js +121 -15
  375. package/dist/render/transcripts/message.d.ts +72 -0
  376. package/dist/render/transcripts/message.js +362 -0
  377. package/dist/render/transcripts/prune.d.ts +7 -2
  378. package/dist/render/transcripts/prune.js +64 -17
  379. package/dist/render/transcripts/reduce.d.ts +74 -0
  380. package/dist/render/transcripts/reduce.js +395 -0
  381. package/dist/render/transcripts/root-launcher.d.ts +19 -0
  382. package/dist/render/transcripts/root-launcher.js +40 -0
  383. package/dist/render/transcripts/run.d.ts +35 -6
  384. package/dist/render/transcripts/run.js +241 -165
  385. package/dist/render/transcripts/shared.d.ts +2 -0
  386. package/dist/render/transcripts/shared.js +11 -4
  387. package/dist/render/transcripts/spec.d.ts +74 -0
  388. package/dist/render/transcripts/spec.js +394 -0
  389. package/dist/render/transcripts/stage-progress.d.ts +22 -0
  390. package/dist/render/transcripts/stage-progress.js +6 -0
  391. package/dist/render/transcripts/update-check.d.ts +2 -0
  392. package/dist/render/transcripts/update-check.js +22 -0
  393. package/dist/render/transcripts/verify.d.ts +74 -0
  394. package/dist/render/transcripts/verify.js +409 -0
  395. package/dist/render/utils/agents.d.ts +10 -9
  396. package/dist/render/utils/agents.js +30 -82
  397. package/dist/render/utils/badges.d.ts +3 -20
  398. package/dist/render/utils/badges.js +3 -36
  399. package/dist/render/utils/duration.d.ts +12 -0
  400. package/dist/render/utils/duration.js +37 -0
  401. package/dist/render/utils/interactive-frame.d.ts +6 -0
  402. package/dist/render/utils/interactive-frame.js +38 -0
  403. package/dist/render/utils/records.js +4 -4
  404. package/dist/render/utils/runs.d.ts +3 -9
  405. package/dist/render/utils/runs.js +16 -48
  406. package/dist/render/utils/stage-output.d.ts +20 -0
  407. package/dist/render/utils/stage-output.js +44 -0
  408. package/dist/render/utils/timezone.d.ts +2 -0
  409. package/dist/render/utils/timezone.js +42 -0
  410. package/dist/render/utils/transcript-shell.d.ts +66 -0
  411. package/dist/render/utils/transcript-shell.js +155 -0
  412. package/dist/render/utils/transcript.d.ts +7 -1
  413. package/dist/render/utils/transcript.js +12 -2
  414. package/dist/render/utils/wrap.d.ts +1 -0
  415. package/dist/render/utils/wrap.js +20 -0
  416. package/dist/status/colors.d.ts +2 -3
  417. package/dist/status/colors.js +3 -3
  418. package/dist/status/index.d.ts +108 -8
  419. package/dist/status/index.js +164 -5
  420. package/dist/update-check/checker.d.ts +24 -0
  421. package/dist/update-check/checker.js +130 -0
  422. package/dist/update-check/prompt.d.ts +25 -0
  423. package/dist/update-check/prompt.js +62 -0
  424. package/dist/update-check/semver.d.ts +17 -0
  425. package/dist/update-check/semver.js +36 -0
  426. package/dist/update-check/state-path.d.ts +8 -0
  427. package/dist/update-check/state-path.js +18 -0
  428. package/dist/utils/binaries.js +14 -8
  429. package/dist/utils/errors.d.ts +3 -1
  430. package/dist/utils/errors.js +3 -1
  431. package/dist/utils/git.d.ts +10 -0
  432. package/dist/utils/git.js +15 -3
  433. package/dist/utils/output.d.ts +5 -1
  434. package/dist/utils/output.js +4 -2
  435. package/dist/utils/process.d.ts +2 -1
  436. package/dist/utils/process.js +7 -3
  437. package/dist/utils/session-id.d.ts +1 -0
  438. package/dist/utils/session-id.js +22 -0
  439. package/dist/utils/slug.d.ts +2 -0
  440. package/dist/utils/slug.js +15 -0
  441. package/dist/utils/voratiq-cli-target.d.ts +9 -0
  442. package/dist/utils/voratiq-cli-target.js +58 -0
  443. package/dist/workspace/agents.d.ts +13 -16
  444. package/dist/workspace/agents.js +22 -147
  445. package/dist/workspace/chat/artifacts.d.ts +9 -0
  446. package/dist/workspace/chat/artifacts.js +82 -12
  447. package/dist/workspace/chat/native-usage.d.ts +13 -0
  448. package/dist/workspace/chat/native-usage.js +60 -0
  449. package/dist/workspace/chat/sources.d.ts +9 -5
  450. package/dist/workspace/chat/sources.js +89 -23
  451. package/dist/workspace/chat/token-usage-result.d.ts +23 -0
  452. package/dist/workspace/chat/token-usage-result.js +7 -0
  453. package/dist/workspace/chat/usage-extractor.d.ts +30 -0
  454. package/dist/workspace/chat/usage-extractor.js +461 -0
  455. package/dist/workspace/chat/usage-mappings.d.ts +20 -0
  456. package/dist/workspace/chat/usage-mappings.js +136 -0
  457. package/dist/workspace/credential-guard.js +1 -1
  458. package/dist/workspace/dependencies.js +4 -4
  459. package/dist/workspace/errors.d.ts +5 -0
  460. package/dist/workspace/errors.js +13 -3
  461. package/dist/workspace/layout.d.ts +17 -6
  462. package/dist/workspace/layout.js +51 -32
  463. package/dist/workspace/promotion.d.ts +32 -0
  464. package/dist/workspace/promotion.js +34 -0
  465. package/dist/workspace/prune.d.ts +1 -1
  466. package/dist/workspace/run.d.ts +1 -3
  467. package/dist/workspace/run.js +6 -15
  468. package/dist/workspace/setup.d.ts +8 -0
  469. package/dist/workspace/setup.js +359 -56
  470. package/dist/workspace/shim.js +1 -1
  471. package/dist/workspace/structure.d.ts +91 -26
  472. package/dist/workspace/structure.js +227 -43
  473. package/dist/workspace/templates.d.ts +9 -3
  474. package/dist/workspace/templates.js +26 -15
  475. package/dist/workspace/verification-defaults.d.ts +12 -0
  476. package/dist/workspace/verification-defaults.js +1017 -0
  477. package/package.json +30 -24
  478. package/dist/cli/review.d.ts +0 -12
  479. package/dist/cli/review.js +0 -33
  480. package/dist/commands/errors.d.ts +0 -4
  481. package/dist/commands/errors.js +0 -7
  482. package/dist/commands/init/evals.d.ts +0 -4
  483. package/dist/commands/init/evals.js +0 -219
  484. package/dist/commands/review/command.d.ts +0 -10
  485. package/dist/commands/review/command.js +0 -26
  486. package/dist/commands/run/agent-execution.d.ts +0 -19
  487. package/dist/commands/run/agent-execution.js +0 -63
  488. package/dist/commands/run/agents/auth-stage.d.ts +0 -23
  489. package/dist/commands/run/agents/auth-stage.js +0 -108
  490. package/dist/commands/run/agents/chat-preserver.d.ts +0 -9
  491. package/dist/commands/run/agents/chat-preserver.js +0 -35
  492. package/dist/commands/run/agents/eval-runner.d.ts +0 -19
  493. package/dist/commands/run/agents/eval-runner.js +0 -27
  494. package/dist/commands/run/agents/failures.js +0 -32
  495. package/dist/commands/run/agents/preparation.js +0 -123
  496. package/dist/commands/run/agents.d.ts +0 -14
  497. package/dist/commands/run/agents.js +0 -47
  498. package/dist/commands/run/prompts.d.ts +0 -4
  499. package/dist/commands/run/prompts.js +0 -16
  500. package/dist/commands/run/sandbox-registry.d.ts +0 -4
  501. package/dist/commands/run/sandbox-registry.js +0 -54
  502. package/dist/configs/evals/defaults.d.ts +0 -8
  503. package/dist/configs/evals/defaults.js +0 -28
  504. package/dist/configs/evals/detect.d.ts +0 -10
  505. package/dist/configs/evals/errors.d.ts +0 -16
  506. package/dist/configs/evals/errors.js +0 -29
  507. package/dist/configs/evals/loader.d.ts +0 -9
  508. package/dist/configs/evals/loader.js +0 -46
  509. package/dist/configs/evals/types.d.ts +0 -42
  510. package/dist/configs/evals/types.js +0 -74
  511. package/dist/evals/runner.d.ts +0 -16
  512. package/dist/evals/runner.js +0 -132
  513. package/dist/records/persistence.js +0 -469
  514. package/dist/records/types.d.ts +0 -255
  515. package/dist/records/types.js +0 -160
  516. package/dist/render/transcripts/review.d.ts +0 -2
  517. package/dist/render/transcripts/review.js +0 -36
  518. /package/dist/{commands/run → agents/runtime}/shim/agent-manifest.d.ts +0 -0
  519. /package/dist/{commands/run → agents/runtime}/shim/agent-manifest.js +0 -0
  520. /package/dist/{commands/run → agents/runtime/shim}/argv.d.ts +0 -0
  521. /package/dist/{commands/run → agents/runtime/shim}/argv.js +0 -0
  522. /package/dist/{commands/run/agents → agents/runtime}/types.js +0 -0
  523. /package/dist/{commands/run → domain/run/competition}/agents/preparation.d.ts +0 -0
  524. /package/dist/{commands/run/phases.js → domain/run/competition/agents/types.js} +0 -0
  525. /package/dist/{commands/run → domain/run/model}/id.d.ts +0 -0
  526. /package/dist/{commands/run → domain/run/model}/id.js +0 -0
  527. /package/dist/{records → persistence}/history-lock.d.ts +0 -0
package/dist/cli/prune.js CHANGED
@@ -1,14 +1,30 @@
1
- import { Command } from "commander";
2
- import { executePruneCommand } from "../commands/prune/command.js";
1
+ import { Command, Option } from "commander";
2
+ import { executePruneAllCommand, executePruneCommand, } from "../commands/prune/command.js";
3
3
  import { resolveCliContext } from "../preflight/index.js";
4
- import { renderPruneTranscript } from "../render/transcripts/prune.js";
4
+ import { renderPruneAllTranscript, renderPruneTranscript, } from "../render/transcripts/prune.js";
5
5
  import { createConfirmationWorkflow } from "./confirmation.js";
6
- import { NonInteractiveShellError } from "./errors.js";
6
+ import { parseExternalPruneExecutionInput, parsePruneCommandSelection, } from "./contract.js";
7
+ import { CliError, NonInteractiveShellError } from "./errors.js";
8
+ import { buildPruneOperatorEnvelope, writeOperatorResultEnvelope, } from "./operator-envelope.js";
7
9
  import { writeCommandOutput } from "./output.js";
8
10
  export async function runPruneCommand(options) {
9
11
  const { runId } = options;
12
+ const all = Boolean(options.all);
10
13
  const purge = Boolean(options.purge);
11
14
  const assumeYes = Boolean(options.yes);
15
+ if (options.json && !assumeYes) {
16
+ try {
17
+ parseExternalPruneExecutionInput({
18
+ scope: runId ? "run" : "all",
19
+ ...(runId ? { runId } : {}),
20
+ purge: purge || undefined,
21
+ confirmed: assumeYes,
22
+ });
23
+ }
24
+ catch {
25
+ throw new CliError("JSON-mode prune requires explicit confirmation.", [], ["Re-run with `--yes` to confirm the prune."]);
26
+ }
27
+ }
12
28
  const { root, workspacePaths } = await resolveCliContext();
13
29
  const confirmation = createConfirmationWorkflow({
14
30
  assumeYes,
@@ -17,6 +33,20 @@ export async function runPruneCommand(options) {
17
33
  },
18
34
  });
19
35
  try {
36
+ if (all) {
37
+ const result = await executePruneAllCommand({
38
+ root,
39
+ runsDir: workspacePaths.runsDir,
40
+ runsFilePath: workspacePaths.runsFile,
41
+ confirm: confirmation.confirm,
42
+ purge,
43
+ });
44
+ const body = renderPruneAllTranscript(result);
45
+ return { result, body };
46
+ }
47
+ if (!runId) {
48
+ throw new CliError("Missing prune target.", [], ["Provide a run id with `--run <run-id>`."]);
49
+ }
20
50
  const result = await executePruneCommand({
21
51
  root,
22
52
  runsDir: workspacePaths.runsDir,
@@ -34,18 +64,33 @@ export async function runPruneCommand(options) {
34
64
  }
35
65
  export function createPruneCommand() {
36
66
  return new Command("prune")
37
- .description("Remove artifacts for a recorded run")
38
- .requiredOption("--run <run-id>", "Identifier of the run to delete")
67
+ .description("Remove run workspaces and mark runs as pruned")
68
+ .addOption(new Option("--run <run-id>", "Run ID to prune").conflicts("all"))
69
+ .addOption(new Option("--all", "Prune all non-pruned runs").conflicts("run"))
39
70
  .option("--purge", "Delete all associated configs and artifacts")
40
- .option("-y, --yes", "Assume yes for all prompts")
41
- .addHelpText("after", "\nThis command removes agent workspaces, deletes agent branches, and marks runs as pruned. \nPass --purge to also delete all associated configs and artifacts.")
71
+ .option("-y, --yes", "Skip interactive confirmations")
72
+ .option("--json", "Emit a machine-readable result envelope")
42
73
  .allowExcessArguments(false)
43
- .action(async (options) => {
74
+ .action(async (options, command) => {
75
+ const selection = parsePruneCommandSelection(options, command);
44
76
  const result = await runPruneCommand({
45
- runId: options.run,
46
- purge: Boolean(options.purge),
47
- yes: Boolean(options.yes),
77
+ runId: selection.runId,
78
+ all: selection.all,
79
+ purge: Boolean(selection.purge),
80
+ yes: Boolean(selection.yes),
81
+ json: Boolean(options.json),
82
+ writeOutput: writeCommandOutput,
48
83
  });
84
+ if (options.json) {
85
+ writeOperatorResultEnvelope(buildPruneOperatorEnvelope({
86
+ status: result.result.status,
87
+ ...("runId" in result.result ? { runId: result.result.runId } : {}),
88
+ ...("runPath" in result.result && result.result.runPath
89
+ ? { runPath: result.result.runPath }
90
+ : {}),
91
+ }), result.exitCode);
92
+ return;
93
+ }
49
94
  writeCommandOutput({
50
95
  body: result.body,
51
96
  exitCode: result.exitCode,
@@ -0,0 +1,29 @@
1
+ import { Command } from "commander";
2
+ import type { ReductionRecord, ReductionTarget } from "../domain/reduce/model/types.js";
3
+ import type { CommandOutputWriter } from "./output.js";
4
+ export interface ReduceCommandOptions {
5
+ target: ReductionTarget;
6
+ agentIds?: string[];
7
+ agentOverrideFlag?: string;
8
+ profile?: string;
9
+ maxParallel?: number;
10
+ extraContext?: string[];
11
+ json?: boolean;
12
+ suppressHint?: boolean;
13
+ writeOutput?: CommandOutputWriter;
14
+ stdout?: Pick<NodeJS.WriteStream, "write"> & {
15
+ isTTY?: boolean;
16
+ };
17
+ stderr?: Pick<NodeJS.WriteStream, "write"> & {
18
+ isTTY?: boolean;
19
+ };
20
+ }
21
+ export interface ReduceCommandResult {
22
+ reductionId: string;
23
+ status: ReductionRecord["status"];
24
+ target: ReductionTarget;
25
+ body: string;
26
+ exitCode?: number;
27
+ }
28
+ export declare function runReduceCommand(options: ReduceCommandOptions): Promise<ReduceCommandResult>;
29
+ export declare function createReduceCommand(): Command;
@@ -0,0 +1,211 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { Command, Option } from "commander";
3
+ import { checkPlatformSupport } from "../agents/runtime/sandbox.js";
4
+ import { executeReduceCommand } from "../commands/reduce/command.js";
5
+ import { buildMarkdownPreviewLines, extractMarkdownSection, } from "../commands/shared/preview.js";
6
+ import { resolveExtraContextFiles } from "../competition/shared/extra-context.js";
7
+ import { readReductionArtifact, } from "../domain/reduce/competition/reduction.js";
8
+ import { readReductionRecords } from "../domain/reduce/persistence/adapter.js";
9
+ import { ensureSandboxDependencies, resolveCliContext, } from "../preflight/index.js";
10
+ import { createReduceRenderer, formatReduceElapsed, formatReducerDuration, renderReduceTranscript, } from "../render/transcripts/reduce.js";
11
+ import { createStageStartLineEmitter } from "../render/utils/stage-output.js";
12
+ import { normalizePathForDisplay, relativeToRoot, resolvePath, } from "../utils/path.js";
13
+ import { parsePositiveInteger } from "../utils/validators.js";
14
+ import { resolveWorkspacePath, VORATIQ_MESSAGE_FILE, VORATIQ_REDUCTION_FILE, VORATIQ_VERIFICATION_FILE, } from "../workspace/structure.js";
15
+ import { parseReduceExecutionCommandOptions } from "./contract.js";
16
+ import { buildReduceOperatorEnvelope, createSilentCliWriter, writeOperatorResultEnvelope, } from "./operator-envelope.js";
17
+ import { writeCommandOutput } from "./output.js";
18
+ export async function runReduceCommand(options) {
19
+ const { target, agentIds, agentOverrideFlag, profile, maxParallel, extraContext, json = false, suppressHint, writeOutput, stdout, stderr, } = options;
20
+ const effectiveWriteOutput = json
21
+ ? undefined
22
+ : (writeOutput ?? writeCommandOutput);
23
+ const rendererStdout = json ? createSilentCliWriter() : stdout;
24
+ const rendererStderr = json ? createSilentCliWriter() : stderr;
25
+ const { root, workspacePaths } = await resolveCliContext();
26
+ checkPlatformSupport();
27
+ ensureSandboxDependencies();
28
+ const extraContextFiles = await resolveExtraContextFiles({
29
+ root,
30
+ paths: extraContext,
31
+ });
32
+ const startLine = createStageStartLineEmitter((message) => {
33
+ effectiveWriteOutput?.({
34
+ alerts: [{ severity: "info", message }],
35
+ });
36
+ });
37
+ if (effectiveWriteOutput) {
38
+ startLine.emit("Reducing artifacts…");
39
+ }
40
+ const renderer = createReduceRenderer({
41
+ stdout: rendererStdout,
42
+ stderr: rendererStderr,
43
+ });
44
+ const execution = await executeReduceCommand({
45
+ root,
46
+ specsFilePath: workspacePaths.specsFile,
47
+ runsFilePath: workspacePaths.runsFile,
48
+ reductionsFilePath: workspacePaths.reductionsFile ?? resolveReductionIndexPath(root),
49
+ messagesFilePath: workspacePaths.messagesFile ??
50
+ resolveWorkspacePath(root, VORATIQ_MESSAGE_FILE),
51
+ verificationsFilePath: workspacePaths.verificationsFile ??
52
+ resolveWorkspacePath(root, VORATIQ_VERIFICATION_FILE),
53
+ target,
54
+ agentIds,
55
+ agentOverrideFlag,
56
+ profileName: profile,
57
+ maxParallel,
58
+ extraContextFiles,
59
+ renderer,
60
+ });
61
+ const record = await readReductionSessionRecord({
62
+ root,
63
+ reductionsFilePath: workspacePaths.reductionsFile ?? resolveReductionIndexPath(root),
64
+ reductionId: execution.reductionId,
65
+ });
66
+ if (!record) {
67
+ throw new Error(`Reduction session \`${execution.reductionId}\` record not found after execution.`);
68
+ }
69
+ const reducers = await Promise.all(record.reducers.map(async (reducer) => {
70
+ const duration = formatReducerDuration({
71
+ status: reducer.status,
72
+ startedAt: reducer.startedAt,
73
+ completedAt: reducer.completedAt,
74
+ });
75
+ let previewLines;
76
+ if (reducer.status === "succeeded") {
77
+ try {
78
+ const reductionData = await readReductionArtifact(resolvePath(root, reducer.dataPath ??
79
+ reducer.outputPath.replace(/reduction\.md$/u, "reduction.json")));
80
+ previewLines = buildMarkdownPreviewLines(formatReductionSnippet(reductionData));
81
+ }
82
+ catch {
83
+ try {
84
+ const markdown = await readFile(resolvePath(root, reducer.outputPath), "utf8");
85
+ const synthesisSection = extractMarkdownSection(markdown, {
86
+ heading: "Synthesis",
87
+ level: 2,
88
+ }) ??
89
+ extractMarkdownSection(markdown, {
90
+ heading: "Reduction",
91
+ level: 2,
92
+ }) ??
93
+ markdown.trim();
94
+ previewLines = buildMarkdownPreviewLines(synthesisSection);
95
+ }
96
+ catch {
97
+ previewLines = undefined;
98
+ }
99
+ }
100
+ }
101
+ return {
102
+ reducerAgentId: reducer.agentId,
103
+ status: reducer.status,
104
+ duration,
105
+ outputPath: reducer.outputPath,
106
+ dataPath: reducer.dataPath,
107
+ previewLines,
108
+ errorLine: reducer.error ?? undefined,
109
+ };
110
+ }));
111
+ const body = renderReduceTranscript({
112
+ reductionId: execution.reductionId,
113
+ createdAt: record.createdAt,
114
+ elapsed: formatReduceElapsed({
115
+ status: record.status,
116
+ startedAt: record.startedAt,
117
+ completedAt: record.completedAt,
118
+ }) ?? "—",
119
+ workspacePath: normalizePathForDisplay(relativeToRoot(root, resolvePath(root, `.voratiq/reduce/sessions/${execution.reductionId}`))),
120
+ status: record.status,
121
+ reducers,
122
+ suppressHint,
123
+ isTty: stdout?.isTTY ?? process.stdout.isTTY,
124
+ includeSummarySection: !(stdout?.isTTY ?? process.stdout.isTTY),
125
+ });
126
+ return {
127
+ reductionId: execution.reductionId,
128
+ status: record.status,
129
+ target: record.target,
130
+ body,
131
+ exitCode: record.status === "succeeded" ? 0 : 1,
132
+ };
133
+ }
134
+ function formatReductionSnippet(reduction) {
135
+ const lines = ["## Reduction", `**Summary**: ${reduction.summary}`];
136
+ if (reduction.directives.length > 0) {
137
+ lines.push("", "**Directives**:");
138
+ for (const directive of reduction.directives) {
139
+ lines.push(`- ${directive}`);
140
+ }
141
+ }
142
+ if (reduction.risks.length > 0) {
143
+ lines.push("", "**Risks**:");
144
+ for (const risk of reduction.risks) {
145
+ lines.push(`- ${risk}`);
146
+ }
147
+ }
148
+ return lines.join("\n");
149
+ }
150
+ function collectAgentOption(value, previous) {
151
+ return [...previous, value];
152
+ }
153
+ function collectExtraContextOption(value, previous) {
154
+ return [...previous, value];
155
+ }
156
+ function parseMaxParallelOption(value) {
157
+ return parsePositiveInteger(value, "Expected positive integer after --max-parallel", "--max-parallel must be greater than 0");
158
+ }
159
+ export function createReduceCommand() {
160
+ return new Command("reduce")
161
+ .description("Reduce artifact sets into a summarized form")
162
+ .addOption(new Option("--spec <spec-id>", "Spec to reduce"))
163
+ .addOption(new Option("--run <run-id>", "Run to reduce"))
164
+ .addOption(new Option("--reduce <reduce-id>", "Reduction to reduce"))
165
+ .addOption(new Option("--verify <verify-id>", "Verification to reduce"))
166
+ .addOption(new Option("--message <message-id>", "Message session to reduce"))
167
+ .addOption(new Option("--agent <agent-id>", "Set reducers directly (repeatable; order preserved)")
168
+ .default([], "")
169
+ .argParser(collectAgentOption))
170
+ .option("--profile <name>", 'Orchestration profile (default: "default")')
171
+ .option("--max-parallel <count>", "Max concurrent reducers (default: all)", parseMaxParallelOption)
172
+ .addOption(new Option("--extra-context <path>", "Stage an extra context file into each reducer workspace (repeatable)")
173
+ .default([], "")
174
+ .argParser(collectExtraContextOption))
175
+ .option("--json", "Emit a machine-readable result envelope")
176
+ .allowExcessArguments(false)
177
+ .action(async (options, command) => {
178
+ const input = parseReduceExecutionCommandOptions(options, command);
179
+ const result = await runReduceCommand({
180
+ target: input.target,
181
+ agentIds: input.agentIds,
182
+ profile: input.profile,
183
+ maxParallel: input.maxParallel,
184
+ extraContext: input.extraContext,
185
+ json: Boolean(options.json),
186
+ writeOutput: options.json ? undefined : writeCommandOutput,
187
+ });
188
+ if (options.json) {
189
+ writeOperatorResultEnvelope(buildReduceOperatorEnvelope({
190
+ reductionId: result.reductionId,
191
+ target: result.target,
192
+ status: result.status,
193
+ }), result.exitCode);
194
+ return;
195
+ }
196
+ writeCommandOutput({ body: result.body, exitCode: result.exitCode });
197
+ });
198
+ }
199
+ async function readReductionSessionRecord(options) {
200
+ const { root, reductionsFilePath, reductionId } = options;
201
+ const records = await readReductionRecords({
202
+ root,
203
+ reductionsFilePath,
204
+ limit: 1,
205
+ predicate: (record) => record.sessionId === reductionId,
206
+ });
207
+ return records[0];
208
+ }
209
+ function resolveReductionIndexPath(root) {
210
+ return resolvePath(root, `.voratiq/${VORATIQ_REDUCTION_FILE}`);
211
+ }
@@ -0,0 +1,4 @@
1
+ import type { RootLauncherCommandOptions } from "../commands/root-launcher/command.js";
2
+ export type { RootLauncherCommandOptions as RootLauncherOptions } from "../commands/root-launcher/command.js";
3
+ export declare function shouldStartRootLauncher(argv: readonly string[], detectInteractive?: () => boolean): boolean;
4
+ export declare function runInteractiveRootLauncher(options?: RootLauncherCommandOptions): Promise<void>;
@@ -0,0 +1,15 @@
1
+ import { runRootLauncherCommand } from "../commands/root-launcher/command.js";
2
+ import { isInteractiveShell } from "../utils/terminal.js";
3
+ import { createConfirmationWorkflow } from "./confirmation.js";
4
+ export function shouldStartRootLauncher(argv, detectInteractive = () => isInteractiveShell()) {
5
+ return argv.length <= 2 && detectInteractive();
6
+ }
7
+ export async function runInteractiveRootLauncher(options = {
8
+ createWorkflow: (workflowOptions) => createConfirmationWorkflow(workflowOptions),
9
+ }) {
10
+ await runRootLauncherCommand({
11
+ ...options,
12
+ createWorkflow: options.createWorkflow ??
13
+ ((workflowOptions) => createConfirmationWorkflow(workflowOptions)),
14
+ });
15
+ }
package/dist/cli/run.d.ts CHANGED
@@ -1,8 +1,25 @@
1
1
  import { Command } from "commander";
2
- import type { RunReport } from "../records/types.js";
2
+ import type { RunReport } from "../domain/run/model/types.js";
3
+ import type { CommandOutputWriter } from "./output.js";
3
4
  export interface RunCommandOptions {
4
5
  specPath: string;
6
+ agentIds?: string[];
7
+ agentOverrideFlag?: string;
8
+ profile?: string;
5
9
  maxParallel?: number;
10
+ branch?: boolean;
11
+ extraContext?: string[];
12
+ json?: boolean;
13
+ suppressHint?: boolean;
14
+ suppressLeadingBlankLine?: boolean;
15
+ suppressTrailingBlankLine?: boolean;
16
+ stdout?: Pick<NodeJS.WriteStream, "write"> & {
17
+ isTTY?: boolean;
18
+ };
19
+ stderr?: Pick<NodeJS.WriteStream, "write"> & {
20
+ isTTY?: boolean;
21
+ };
22
+ writeOutput?: CommandOutputWriter;
6
23
  }
7
24
  export interface RunCommandResult {
8
25
  report: RunReport;
@@ -10,4 +27,13 @@ export interface RunCommandResult {
10
27
  exitCode?: number;
11
28
  }
12
29
  export declare function runRunCommand(options: RunCommandOptions): Promise<RunCommandResult>;
30
+ /**
31
+ * Derives a branch name from a spec file path by extracting the basename without extension.
32
+ *
33
+ * Examples:
34
+ * - `specs/separate-verification-outcomes.md` → `separate-verification-outcomes`
35
+ * - `specs/foo/bar.md` → `bar`
36
+ * - `my-feature.md` → `my-feature`
37
+ */
38
+ export declare function deriveBranchNameFromSpecPath(specPath: string): string;
13
39
  export declare function createRunCommand(): Command;
package/dist/cli/run.js CHANGED
@@ -1,48 +1,140 @@
1
- import { Command } from "commander";
1
+ import { basename } from "node:path";
2
+ import { Command, Option } from "commander";
3
+ import { checkPlatformSupport } from "../agents/runtime/sandbox.js";
2
4
  import { executeRunCommand } from "../commands/run/command.js";
3
- import { checkPlatformSupport } from "../commands/run/sandbox.js";
5
+ import { resolveExtraContextFiles } from "../competition/shared/extra-context.js";
6
+ import { checkoutOrCreateBranch } from "../preflight/branch.js";
4
7
  import { ensureCleanWorkingTree, ensureSandboxDependencies, ensureSpecPath, resolveCliContext, } from "../preflight/index.js";
5
8
  import { createRunRenderer } from "../render/transcripts/run.js";
9
+ import { renderWorkspaceAutoInitializedNotice } from "../render/transcripts/shared.js";
10
+ import { createStageStartLineEmitter } from "../render/utils/stage-output.js";
11
+ import { mapRunStatusToExitCode } from "../status/index.js";
6
12
  import { parsePositiveInteger } from "../utils/validators.js";
13
+ import { parseRunExecutionCommandOptions } from "./contract.js";
14
+ import { buildRunOperatorEnvelope, createSilentCliWriter, writeOperatorResultEnvelope, } from "./operator-envelope.js";
7
15
  import { writeCommandOutput } from "./output.js";
8
16
  export async function runRunCommand(options) {
9
- const { specPath, maxParallel } = options;
10
- const { root, workspacePaths } = await resolveCliContext();
17
+ const { specPath, agentIds, agentOverrideFlag, profile, maxParallel, branch, extraContext, json = false, suppressHint, suppressLeadingBlankLine, suppressTrailingBlankLine, stdout, stderr, writeOutput, } = options;
18
+ const effectiveWriteOutput = json
19
+ ? undefined
20
+ : (writeOutput ?? writeCommandOutput);
21
+ const rendererStdout = json ? createSilentCliWriter() : stdout;
22
+ const rendererStderr = json ? createSilentCliWriter() : stderr;
23
+ const { root, workspacePaths, workspaceAutoInitialized } = await resolveCliContext({
24
+ workspaceAutoInitMode: "when-missing",
25
+ });
26
+ const workspaceNotice = workspaceAutoInitialized
27
+ ? renderWorkspaceAutoInitializedNotice()
28
+ : undefined;
29
+ if (workspaceNotice && effectiveWriteOutput) {
30
+ effectiveWriteOutput({
31
+ alerts: [{ severity: "info", message: workspaceNotice }],
32
+ leadingNewline: false,
33
+ });
34
+ }
11
35
  checkPlatformSupport();
12
36
  ensureSandboxDependencies();
13
37
  await ensureCleanWorkingTree(root);
14
38
  const { absolutePath, displayPath } = await ensureSpecPath(specPath, root);
15
- const renderer = createRunRenderer();
39
+ const extraContextFiles = await resolveExtraContextFiles({
40
+ root,
41
+ paths: extraContext,
42
+ });
43
+ if (branch) {
44
+ const branchName = deriveBranchNameFromSpecPath(displayPath);
45
+ await checkoutOrCreateBranch(root, branchName);
46
+ }
47
+ if (effectiveWriteOutput) {
48
+ const startLine = createStageStartLineEmitter((message) => {
49
+ effectiveWriteOutput({
50
+ alerts: [{ severity: "info", message }],
51
+ });
52
+ });
53
+ startLine.emit("Executing run…");
54
+ }
55
+ const renderer = createRunRenderer({
56
+ stdout: rendererStdout,
57
+ stderr: rendererStderr,
58
+ suppressLeadingBlankLine,
59
+ suppressTrailingBlankLine,
60
+ });
16
61
  const report = await executeRunCommand({
17
62
  root,
18
63
  runsFilePath: workspacePaths.runsFile,
19
64
  specAbsolutePath: absolutePath,
20
65
  specDisplayPath: displayPath,
66
+ agentIds,
67
+ agentOverrideFlag,
68
+ profileName: profile,
21
69
  maxParallel,
70
+ extraContextFiles,
22
71
  renderer,
23
72
  });
24
- const body = renderer.complete(report);
25
- // Unlike other commands, `run` signals a degraded outcome via exit code 1
26
- // when any agent or eval fails. All other CLI commands either throw on error
27
- // or return a clean success with exit code 0, so keep this deviation explicit.
28
- const exitCode = report.hadAgentFailure || report.hadEvalFailure ? 1 : undefined;
73
+ const body = renderer.complete(report, { suppressHint });
74
+ const exitCode = mapRunStatusToExitCode(report.status);
29
75
  return { report, body, exitCode };
30
76
  }
77
+ /**
78
+ * Derives a branch name from a spec file path by extracting the basename without extension.
79
+ *
80
+ * Examples:
81
+ * - `specs/separate-verification-outcomes.md` → `separate-verification-outcomes`
82
+ * - `specs/foo/bar.md` → `bar`
83
+ * - `my-feature.md` → `my-feature`
84
+ */
85
+ export function deriveBranchNameFromSpecPath(specPath) {
86
+ const base = basename(specPath);
87
+ const lastDotIndex = base.lastIndexOf(".");
88
+ if (lastDotIndex <= 0) {
89
+ return base;
90
+ }
91
+ return base.slice(0, lastDotIndex);
92
+ }
93
+ function collectAgentOption(value, previous) {
94
+ return [...previous, value];
95
+ }
96
+ function collectExtraContextOption(value, previous) {
97
+ return [...previous, value];
98
+ }
31
99
  function parseMaxParallelOption(value) {
32
100
  return parsePositiveInteger(value, "Expected positive integer after --max-parallel", "--max-parallel must be greater than 0");
33
101
  }
34
102
  export function createRunCommand() {
35
103
  return new Command("run")
36
- .description("Execute configured agents against a spec")
37
- .requiredOption("--spec <path>", "Path to the specification to execute")
38
- .option("--max-parallel <count>", "Maximum number of agents to run concurrently", parseMaxParallelOption)
104
+ .description("Execute agents against a spec")
105
+ .requiredOption("--spec <path>", "Path to the spec file")
106
+ .addOption(new Option("--agent <agent-id>", "Set agents directly (repeatable; order preserved)")
107
+ .default([], "")
108
+ .argParser(collectAgentOption))
109
+ .option("--profile <name>", 'Orchestration profile (default: "default")')
110
+ .option("--max-parallel <count>", "Max concurrent agents (default: all)", parseMaxParallelOption)
111
+ .option("--branch", "Create or checkout a branch named after the spec")
112
+ .addOption(new Option("--extra-context <path>", "Stage an extra context file into each agent workspace (repeatable)")
113
+ .default([], "")
114
+ .argParser(collectExtraContextOption))
115
+ .option("--json", "Emit a machine-readable result envelope")
39
116
  .allowExcessArguments(false)
40
- .action(async (options) => {
117
+ .action(async (options, command) => {
118
+ const input = parseRunExecutionCommandOptions(options, command);
41
119
  const runOptions = {
42
- specPath: options.spec,
43
- maxParallel: options.maxParallel,
120
+ specPath: input.specPath,
121
+ agentIds: input.agentIds,
122
+ profile: input.profile,
123
+ maxParallel: input.maxParallel,
124
+ branch: input.branch,
125
+ extraContext: input.extraContext,
126
+ json: Boolean(options.json),
127
+ writeOutput: options.json ? undefined : writeCommandOutput,
44
128
  };
45
129
  const result = await runRunCommand(runOptions);
130
+ if (options.json) {
131
+ writeOperatorResultEnvelope(buildRunOperatorEnvelope({
132
+ runId: result.report.runId,
133
+ specPath: result.report.spec.path,
134
+ status: result.report.status,
135
+ }), result.exitCode);
136
+ return;
137
+ }
46
138
  writeCommandOutput({
47
139
  body: result.body,
48
140
  exitCode: result.exitCode,
@@ -0,0 +1,31 @@
1
+ import { Command } from "commander";
2
+ import { type CommandOutputWriter } from "./output.js";
3
+ export interface SpecCommandOptions {
4
+ description: string;
5
+ agentIds?: string[];
6
+ profile?: string;
7
+ maxParallel?: number;
8
+ title?: string;
9
+ extraContext?: string[];
10
+ json?: boolean;
11
+ suppressHint?: boolean;
12
+ suppressLeadingBlankLine?: boolean;
13
+ suppressTrailingBlankLine?: boolean;
14
+ stdout?: Pick<NodeJS.WriteStream, "write"> & {
15
+ isTTY?: boolean;
16
+ };
17
+ stderr?: Pick<NodeJS.WriteStream, "write"> & {
18
+ isTTY?: boolean;
19
+ };
20
+ writeOutput?: CommandOutputWriter;
21
+ }
22
+ export interface SpecCommandResult {
23
+ body: string;
24
+ sessionId?: string;
25
+ generatedSpecPaths: string[];
26
+ /** Derived convenience path only when exactly one spec artifact was generated. */
27
+ specPath?: string;
28
+ sessionPath?: string;
29
+ }
30
+ export declare function runSpecCommand(options: SpecCommandOptions): Promise<SpecCommandResult>;
31
+ export declare function createSpecCommand(): Command;