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
@@ -42,10 +42,18 @@ export const geminiAuthProvider = {
42
42
  },
43
43
  async stage(options) {
44
44
  const apiKey = resolveGeminiApiKey(options.runtime.env);
45
+ const sandboxPaths = createSandboxPaths(options.agentRoot, {
46
+ gemini: [".gemini"],
47
+ tmp: ["tmp"],
48
+ });
49
+ await ensureDirectories([...Object.values(sandboxPaths)]);
45
50
  if (apiKey) {
46
- return composeSandboxEnvResult(options.agentRoot, {
51
+ return composeSandboxEnvResult(sandboxPaths.home, {
47
52
  GEMINI_API_KEY: apiKey,
48
53
  GOOGLE_API_KEY: apiKey,
54
+ TMPDIR: sandboxPaths.tmp,
55
+ TEMP: sandboxPaths.tmp,
56
+ TMP: sandboxPaths.tmp,
49
57
  });
50
58
  }
51
59
  const homeDir = options.runtime.homeDir;
@@ -57,10 +65,6 @@ export const geminiAuthProvider = {
57
65
  const source = resolveChildPath(geminiHome, filename);
58
66
  await assertReadableFileOrThrow(source, (cause) => new GeminiAuthProviderError(GEMINI_LOGIN_HINT, { cause }));
59
67
  }
60
- const sandboxPaths = createSandboxPaths(options.agentRoot, {
61
- gemini: [".gemini"],
62
- });
63
- await ensureDirectories([...Object.values(sandboxPaths)]);
64
68
  const secretHandles = await stageRequiredFiles(geminiHome, sandboxPaths.gemini, sandboxPaths.home);
65
69
  try {
66
70
  await stageOptionalFiles(geminiHome, sandboxPaths.gemini, sandboxPaths.home);
@@ -70,7 +74,11 @@ export const geminiAuthProvider = {
70
74
  throw error;
71
75
  }
72
76
  registerSandboxSecrets(sandboxPaths.home, secretHandles);
73
- return composeSandboxEnvResult(sandboxPaths.home, {});
77
+ return composeSandboxEnvResult(sandboxPaths.home, {
78
+ TMPDIR: sandboxPaths.tmp,
79
+ TEMP: sandboxPaths.tmp,
80
+ TMP: sandboxPaths.tmp,
81
+ });
74
82
  },
75
83
  async teardown(options) {
76
84
  await teardownAuthProvider(options);
@@ -15,6 +15,7 @@ export interface StageOptions extends VerifyOptions {
15
15
  agentRoot: string;
16
16
  runId?: string;
17
17
  root?: string;
18
+ includeConfigToml?: boolean;
18
19
  }
19
20
  export interface StageResult {
20
21
  sandboxPath: string;
@@ -15,6 +15,5 @@ export declare function assertReadableFileOrThrow(path: string, createError: Err
15
15
  export declare function copyFileWithPermissions(source: string, destination: string, mode?: number): Promise<void>;
16
16
  export declare function writeFileWithPermissions(destination: string, data: string | NodeJS.ArrayBufferView, options?: Parameters<typeof writeFile>[2], mode?: number): Promise<void>;
17
17
  export declare function copyOptionalFileWithPermissions(source: string, destination: string, createError?: ErrorFactory): Promise<void>;
18
- export declare function copyOptionalDirectoryWithPermissions(source: string, destination: string, createError?: ErrorFactory, fileMode?: number, dirMode?: number): Promise<void>;
19
18
  export declare function composeSandboxEnvResult(sandboxPath: string, env: Record<string, string>): StageResult;
20
19
  export declare function teardownSandbox({ sandboxPath, }: TeardownOptions): Promise<void>;
@@ -1,5 +1,5 @@
1
1
  import { constants as fsConstants } from "node:fs";
2
- import { access, chmod, copyFile, mkdir, readdir, rm, stat, writeFile, } from "node:fs/promises";
2
+ import { access, chmod, copyFile, mkdir, rm, stat, writeFile, } from "node:fs/promises";
3
3
  import { isAbsolute, resolve as resolveNative } from "node:path";
4
4
  import { isMissing } from "../../utils/fs.js";
5
5
  import { SANDBOX_DIRNAME } from "../../workspace/structure.js";
@@ -86,54 +86,6 @@ export async function copyOptionalFileWithPermissions(source, destination, creat
86
86
  throw error;
87
87
  }
88
88
  }
89
- export async function copyOptionalDirectoryWithPermissions(source, destination, createError, fileMode = STAGED_FILE_MODE, dirMode = 0o700) {
90
- try {
91
- const sourceStats = await stat(source);
92
- if (!sourceStats.isDirectory()) {
93
- if (createError) {
94
- throw createError();
95
- }
96
- return;
97
- }
98
- }
99
- catch (error) {
100
- if (isMissing(error)) {
101
- return;
102
- }
103
- if (createError) {
104
- throw createError(error);
105
- }
106
- throw error;
107
- }
108
- try {
109
- await copyDirectoryRecursive(source, destination, fileMode, dirMode);
110
- }
111
- catch (error) {
112
- if (isMissing(error)) {
113
- return;
114
- }
115
- if (createError) {
116
- throw createError(error);
117
- }
118
- throw error;
119
- }
120
- }
121
- async function copyDirectoryRecursive(source, destination, fileMode, dirMode) {
122
- await mkdir(destination, { recursive: true, mode: dirMode });
123
- await chmod(destination, dirMode).catch(() => { });
124
- const entries = await readdir(source, { withFileTypes: true });
125
- for (const entry of entries) {
126
- const sourcePath = resolveChildPath(source, entry.name);
127
- const destinationPath = resolveChildPath(destination, entry.name);
128
- if (entry.isDirectory()) {
129
- await copyDirectoryRecursive(sourcePath, destinationPath, fileMode, dirMode);
130
- continue;
131
- }
132
- if (entry.isFile()) {
133
- await copyFileWithPermissions(sourcePath, destinationPath, fileMode);
134
- }
135
- }
136
- }
137
89
  export function composeSandboxEnvResult(sandboxPath, env) {
138
90
  return {
139
91
  sandboxPath,
package/dist/bin.js CHANGED
@@ -3,119 +3,416 @@ import { realpathSync } from "node:fs";
3
3
  import { resolve } from "node:path";
4
4
  import process from "node:process";
5
5
  import { fileURLToPath } from "node:url";
6
- import { Command, CommanderError } from "commander";
7
- import { createApplyCommand } from "./cli/apply.js";
8
- import { commanderAlreadyRendered } from "./cli/commander-utils.js";
9
- import { CliError, toCliError } from "./cli/errors.js";
10
- import { createInitCommand } from "./cli/init.js";
11
- import { createListCommand } from "./cli/list.js";
12
- import { writeCommandOutput } from "./cli/output.js";
13
- import { createPruneCommand } from "./cli/prune.js";
14
- import { createReviewCommand } from "./cli/review.js";
15
- import { createRunCommand } from "./cli/run.js";
16
- import { terminateActiveRun } from "./commands/run/lifecycle.js";
17
- import { flushAllRunRecordBuffers } from "./records/persistence.js";
18
- import { renderCliError } from "./render/utils/errors.js";
19
- import { toErrorMessage } from "./utils/errors.js";
20
- import { getVoratiqVersion } from "./utils/version.js";
21
6
  const SIGNAL_EXIT_CODES = {
7
+ SIGHUP: 129,
22
8
  SIGINT: 130,
23
9
  SIGTERM: 143,
24
10
  };
11
+ let activeJsonEnvelopeOperator;
12
+ let processGuardsInstalled = false;
25
13
  function installProcessGuards() {
26
- process.once("SIGINT", () => {
27
- void handleSignal("SIGINT");
28
- });
29
- process.once("SIGTERM", () => {
30
- void handleSignal("SIGTERM");
31
- });
32
- process.on("uncaughtException", (error) => {
33
- void terminateActiveRun("failed")
34
- .catch((teardownError) => {
35
- console.error(`[voratiq] Failed to teardown run after uncaught exception: ${toErrorMessage(teardownError)}`);
36
- })
37
- .finally(async () => {
38
- await flushPendingHistory();
39
- console.error(error);
40
- process.exit(1);
14
+ if (processGuardsInstalled) {
15
+ return;
16
+ }
17
+ processGuardsInstalled = true;
18
+ for (const signal of ["SIGHUP", "SIGINT", "SIGTERM"]) {
19
+ process.once(signal, () => {
20
+ void handleSignal(signal);
41
21
  });
22
+ }
23
+ process.on("uncaughtException", (error) => {
24
+ void handleFatalError("uncaught exception", error);
42
25
  });
43
26
  process.on("unhandledRejection", (reason) => {
44
- void terminateActiveRun("failed")
45
- .catch((teardownError) => {
46
- console.error(`[voratiq] Failed to teardown run after unhandled rejection: ${toErrorMessage(teardownError)}`);
47
- })
48
- .finally(async () => {
49
- await flushPendingHistory();
50
- console.error(reason);
51
- process.exit(1);
52
- });
27
+ void handleFatalError("unhandled rejection", reason);
53
28
  });
54
29
  }
30
+ async function handleFatalError(context, error) {
31
+ await terminateActiveSessionsSafe("failed", context);
32
+ await flushPendingHistory();
33
+ if (activeJsonEnvelopeOperator) {
34
+ const { buildFailedOperatorEnvelope, writeOperatorResultEnvelope } = await import("./cli/operator-envelope.js");
35
+ writeOperatorResultEnvelope(buildFailedOperatorEnvelope({
36
+ operator: activeJsonEnvelopeOperator,
37
+ error,
38
+ }), 1);
39
+ process.exit(1);
40
+ return;
41
+ }
42
+ const { CliError, toCliError } = await import("./cli/errors.js");
43
+ const { renderCliError } = await import("./render/utils/errors.js");
44
+ const normalized = toCliError(error);
45
+ const rendered = renderCliError(new CliError(normalized.headline, [`Context: ${context}.`, ...normalized.detailLines], normalized.hintLines));
46
+ console.error(rendered);
47
+ process.exit(1);
48
+ }
55
49
  async function handleSignal(signal) {
56
50
  const exitCode = SIGNAL_EXIT_CODES[signal] ?? 1;
57
- try {
58
- await terminateActiveRun("aborted");
59
- }
60
- catch (error) {
61
- console.error(`[voratiq] Failed to teardown run after ${signal}: ${toErrorMessage(error)}`);
51
+ const teardownError = await terminateActiveSessionsSafe("aborted", signal);
52
+ if (teardownError) {
62
53
  await flushPendingHistory();
63
54
  process.exit(1);
64
55
  return;
65
56
  }
66
57
  await flushPendingHistory();
58
+ if (activeJsonEnvelopeOperator) {
59
+ const { buildFailedOperatorEnvelope, writeOperatorResultEnvelope } = await import("./cli/operator-envelope.js");
60
+ writeOperatorResultEnvelope(buildFailedOperatorEnvelope({
61
+ operator: activeJsonEnvelopeOperator,
62
+ error: new Error(`Signal received: ${signal}`),
63
+ }), exitCode);
64
+ }
67
65
  process.exit(exitCode);
68
66
  }
69
67
  async function flushPendingHistory() {
70
68
  try {
69
+ const { flushAllSpecRecordBuffers } = await import("./domain/spec/persistence/adapter.js");
70
+ await flushAllSpecRecordBuffers();
71
+ }
72
+ catch (error) {
73
+ console.warn(`[voratiq] Failed to flush spec history buffers: ${error.message}`);
74
+ }
75
+ try {
76
+ const { flushAllRunRecordBuffers } = await import("./domain/run/persistence/adapter.js");
71
77
  await flushAllRunRecordBuffers();
72
78
  }
73
79
  catch (error) {
74
80
  console.warn(`[voratiq] Failed to flush run history buffers: ${error.message}`);
75
81
  }
82
+ try {
83
+ const { flushAllReductionRecordBuffers } = await import("./domain/reduce/persistence/adapter.js");
84
+ await flushAllReductionRecordBuffers();
85
+ }
86
+ catch (error) {
87
+ console.warn(`[voratiq] Failed to flush reduction history buffers: ${error.message}`);
88
+ }
89
+ try {
90
+ const { flushAllVerificationRecordBuffers } = await import("./domain/verify/persistence/adapter.js");
91
+ await flushAllVerificationRecordBuffers();
92
+ }
93
+ catch (error) {
94
+ console.warn(`[voratiq] Failed to flush verification history buffers: ${error.message}`);
95
+ }
96
+ try {
97
+ const { flushAllMessageRecordBuffers } = await import("./domain/message/persistence/adapter.js");
98
+ await flushAllMessageRecordBuffers();
99
+ }
100
+ catch (error) {
101
+ console.warn(`[voratiq] Failed to flush message history buffers: ${error.message}`);
102
+ }
103
+ try {
104
+ const { flushAllInteractiveSessionBuffers } = await import("./domain/interactive/persistence/adapter.js");
105
+ await flushAllInteractiveSessionBuffers();
106
+ }
107
+ catch (error) {
108
+ console.warn(`[voratiq] Failed to flush interactive history buffers: ${error.message}`);
109
+ }
110
+ }
111
+ async function terminateActiveRunSafe(status, context) {
112
+ try {
113
+ const { terminateActiveRun } = await import("./commands/run/lifecycle.js");
114
+ await terminateActiveRun(status);
115
+ return null;
116
+ }
117
+ catch (error) {
118
+ const { toErrorMessage } = await import("./utils/errors.js");
119
+ const normalizedError = error instanceof Error ? error : new Error(toErrorMessage(error));
120
+ console.error(`[voratiq] Failed to teardown run after ${context}: ${toErrorMessage(error)}`);
121
+ return normalizedError;
122
+ }
123
+ }
124
+ async function terminateActiveVerificationSafe(status, context) {
125
+ try {
126
+ const { terminateActiveVerification } = await import("./commands/verify/lifecycle.js");
127
+ await terminateActiveVerification(status);
128
+ return null;
129
+ }
130
+ catch (error) {
131
+ const { toErrorMessage } = await import("./utils/errors.js");
132
+ const normalizedError = error instanceof Error ? error : new Error(toErrorMessage(error));
133
+ console.error(`[voratiq] Failed to teardown verification after ${context}: ${toErrorMessage(error)}`);
134
+ return normalizedError;
135
+ }
136
+ }
137
+ async function terminateActiveInteractiveSafe(status, context) {
138
+ try {
139
+ const { terminateActiveInteractive } = await import("./commands/interactive/lifecycle.js");
140
+ await terminateActiveInteractive(status, context);
141
+ return null;
142
+ }
143
+ catch (error) {
144
+ const { toErrorMessage } = await import("./utils/errors.js");
145
+ const normalizedError = error instanceof Error ? error : new Error(toErrorMessage(error));
146
+ console.error(`[voratiq] Failed to teardown interactive session after ${context}: ${toErrorMessage(error)}`);
147
+ return normalizedError;
148
+ }
149
+ }
150
+ async function terminateActiveMessageSafe(status, context) {
151
+ try {
152
+ const { terminateActiveMessage } = await import("./commands/message/lifecycle.js");
153
+ await terminateActiveMessage(status);
154
+ return null;
155
+ }
156
+ catch (error) {
157
+ const { toErrorMessage } = await import("./utils/errors.js");
158
+ const normalizedError = error instanceof Error ? error : new Error(toErrorMessage(error));
159
+ console.error(`[voratiq] Failed to teardown message after ${context}: ${toErrorMessage(error)}`);
160
+ return normalizedError;
161
+ }
162
+ }
163
+ async function terminateActiveSessionsSafe(status, context) {
164
+ const runError = await terminateActiveRunSafe(status, context);
165
+ const verificationError = await terminateActiveVerificationSafe(status, context);
166
+ const interactiveError = await terminateActiveInteractiveSafe(status, context);
167
+ const messageError = await terminateActiveMessageSafe(status, context);
168
+ const errors = [
169
+ runError,
170
+ verificationError,
171
+ interactiveError,
172
+ messageError,
173
+ ].filter((error) => error instanceof Error);
174
+ if (errors.length > 1) {
175
+ return new AggregateError(errors, `Failed to teardown active sessions after ${context}`);
176
+ }
177
+ return errors[0] ?? null;
76
178
  }
77
- installProcessGuards();
78
179
  export async function runCli(argv = process.argv) {
180
+ installProcessGuards();
181
+ const { Command, CommanderError } = await import("commander");
79
182
  const program = new Command();
183
+ const effectiveArgv = argv;
184
+ const { resolveJsonEnvelopeOperator } = await import("./cli/operator-envelope.js");
185
+ const jsonEnvelopeOperator = resolveJsonEnvelopeOperator(effectiveArgv);
186
+ activeJsonEnvelopeOperator = jsonEnvelopeOperator;
187
+ const commandName = findCommandName(effectiveArgv);
188
+ const localVersion = (await import("./utils/version.js")).getVoratiqVersion();
80
189
  program
81
190
  .name("voratiq")
82
- .description("Voratiq CLI")
83
- .version(getVoratiqVersion(), "-v, --version", "print the Voratiq version")
191
+ .description("Agent ensembles to design, generate, and select the best code for every task.")
192
+ .enablePositionalOptions()
193
+ .version(localVersion, "-v, --version", "print the Voratiq version")
84
194
  .exitOverride()
85
195
  .showHelpAfterError()
86
196
  .helpCommand(false);
87
- program.addCommand(createInitCommand());
88
- program.addCommand(createListCommand());
89
- program.addCommand(createRunCommand());
90
- program.addCommand(createReviewCommand());
91
- program.addCommand(createApplyCommand());
92
- program.addCommand(createPruneCommand());
93
- if (argv.length <= 2) {
94
- writeCommandOutput({ body: program.helpInformation() });
95
- return;
197
+ if (jsonEnvelopeOperator) {
198
+ program.configureOutput({
199
+ writeOut: () => { },
200
+ writeErr: () => { },
201
+ outputError: () => { },
202
+ });
96
203
  }
204
+ const isMcpCommand = commandName === "mcp";
205
+ const updateHandle = isMcpCommand
206
+ ? undefined
207
+ : (await import("./update-check/checker.js")).startUpdateCheck(localVersion, {
208
+ isTty: Boolean(process.stdin.isTTY && process.stdout.isTTY),
209
+ env: process.env,
210
+ cachePath: (await import("./update-check/state-path.js")).resolveUpdateStatePath(process.env),
211
+ });
97
212
  try {
98
- await program.parseAsync(argv);
99
- }
100
- catch (error) {
101
- if (error instanceof CommanderError) {
102
- if (commanderAlreadyRendered(error)) {
103
- process.exitCode = error.exitCode ?? 0;
213
+ if (!isMcpCommand) {
214
+ // Show update prompt if a cached notice is available
215
+ const updateNotice = updateHandle?.peekNotice();
216
+ if (updateNotice) {
217
+ const { showUpdatePrompt } = await import("./update-check/prompt.js");
218
+ const { createConfirmationInteractor } = await import("./render/interactions/confirmation.js");
219
+ const { writeCommandOutput } = await import("./cli/output.js");
220
+ const interactor = createConfirmationInteractor();
221
+ try {
222
+ const result = await showUpdatePrompt(updateNotice, {
223
+ prompt: (opts) => interactor.prompt(opts),
224
+ write: (text) => process.stdout.write(text),
225
+ writeCommandOutput,
226
+ });
227
+ if (result.shouldExit) {
228
+ if (result.exitCode !== undefined && result.exitCode !== 0) {
229
+ process.exitCode = result.exitCode;
230
+ }
231
+ return;
232
+ }
233
+ }
234
+ finally {
235
+ interactor.close();
236
+ }
237
+ }
238
+ }
239
+ await registerCommands(program, effectiveArgv);
240
+ const { shouldStartRootLauncher } = await import("./cli/root-launcher.js");
241
+ if (shouldStartRootLauncher(effectiveArgv)) {
242
+ try {
243
+ const { runInteractiveRootLauncher } = await import("./cli/root-launcher.js");
244
+ const { createEntrypointVoratiqCliTarget } = await import("./utils/voratiq-cli-target.js");
245
+ await runInteractiveRootLauncher({
246
+ selfCliTarget: createEntrypointVoratiqCliTarget({
247
+ cliEntrypoint: effectiveArgv[1],
248
+ }),
249
+ });
250
+ }
251
+ catch (error) {
252
+ const { GitRepositoryError } = await import("./utils/errors.js");
253
+ if (error instanceof GitRepositoryError &&
254
+ (error.reason === "no_repository" ||
255
+ error.reason === "not_repository_root")) {
256
+ const { writeCommandOutput } = await import("./cli/output.js");
257
+ writeCommandOutput({ body: program.helpInformation() });
258
+ return;
259
+ }
260
+ const { toCliError } = await import("./cli/errors.js");
261
+ const { renderCliError } = await import("./render/utils/errors.js");
262
+ const { writeCommandOutput } = await import("./cli/output.js");
263
+ const cliError = toCliError(error);
264
+ writeCommandOutput({
265
+ body: renderCliError(cliError),
266
+ exitCode: 1,
267
+ });
268
+ }
269
+ return;
270
+ }
271
+ if (effectiveArgv.length <= 2) {
272
+ const { writeCommandOutput } = await import("./cli/output.js");
273
+ writeCommandOutput({ body: program.helpInformation() });
274
+ return;
275
+ }
276
+ try {
277
+ await program.parseAsync(effectiveArgv);
278
+ }
279
+ catch (error) {
280
+ if (error instanceof CommanderError) {
281
+ if (jsonEnvelopeOperator) {
282
+ const { buildFailedOperatorEnvelope, writeOperatorResultEnvelope } = await import("./cli/operator-envelope.js");
283
+ writeOperatorResultEnvelope(buildFailedOperatorEnvelope({
284
+ operator: jsonEnvelopeOperator,
285
+ error,
286
+ }), error.exitCode ?? 1);
287
+ return;
288
+ }
289
+ const { commanderAlreadyRendered } = await import("./cli/commander-utils.js");
290
+ if (commanderAlreadyRendered(error)) {
291
+ process.exitCode = error.exitCode ?? 0;
292
+ return;
293
+ }
294
+ const { CliError } = await import("./cli/errors.js");
295
+ const { renderCliError } = await import("./render/utils/errors.js");
296
+ const { toErrorMessage } = await import("./utils/errors.js");
297
+ const { writeCommandOutput } = await import("./cli/output.js");
298
+ writeCommandOutput({
299
+ body: renderCliError(new CliError(toErrorMessage(error))),
300
+ exitCode: error.exitCode ?? 1,
301
+ });
104
302
  return;
105
303
  }
304
+ if (jsonEnvelopeOperator) {
305
+ const { buildFailedOperatorEnvelope, writeOperatorResultEnvelope } = await import("./cli/operator-envelope.js");
306
+ writeOperatorResultEnvelope(buildFailedOperatorEnvelope({
307
+ operator: jsonEnvelopeOperator,
308
+ error,
309
+ }), 1);
310
+ return;
311
+ }
312
+ const { toCliError } = await import("./cli/errors.js");
313
+ const { renderCliError } = await import("./render/utils/errors.js");
314
+ const { writeCommandOutput } = await import("./cli/output.js");
315
+ const cliError = toCliError(error);
316
+ const body = renderCliError(cliError);
106
317
  writeCommandOutput({
107
- body: renderCliError(new CliError(toErrorMessage(error))),
108
- exitCode: error.exitCode ?? 1,
318
+ body,
319
+ exitCode: 1,
109
320
  });
110
- return;
111
321
  }
112
- const cliError = toCliError(error);
113
- const body = renderCliError(cliError);
114
- writeCommandOutput({
115
- body,
116
- exitCode: 1,
117
- });
118
322
  }
323
+ finally {
324
+ activeJsonEnvelopeOperator = undefined;
325
+ updateHandle?.finish();
326
+ }
327
+ }
328
+ async function registerCommands(program, argv) {
329
+ const commandName = findCommandName(argv);
330
+ const wantsHelp = argv.includes("--help") || argv.includes("-h");
331
+ const wantsVersion = argv.includes("--version") || argv.includes("-v");
332
+ const knownCommandNames = new Set([
333
+ "init",
334
+ "spec",
335
+ "run",
336
+ "reduce",
337
+ "verify",
338
+ "message",
339
+ "auto",
340
+ "apply",
341
+ "list",
342
+ "prune",
343
+ "mcp",
344
+ ]);
345
+ const loadAll = commandName === undefined ||
346
+ (wantsHelp && commandName === undefined) ||
347
+ (commandName !== undefined && !knownCommandNames.has(commandName));
348
+ if (commandName === undefined && wantsVersion && !wantsHelp) {
349
+ return;
350
+ }
351
+ if (loadAll) {
352
+ program.addCommand((await import("./cli/init.js")).createInitCommand());
353
+ program.addCommand((await import("./cli/spec.js")).createSpecCommand());
354
+ program.addCommand((await import("./cli/run.js")).createRunCommand());
355
+ program.addCommand((await import("./cli/reduce.js")).createReduceCommand());
356
+ program.addCommand((await import("./cli/verify.js")).createVerifyCommand());
357
+ program.addCommand((await import("./cli/message.js")).createMessageCommand());
358
+ program.addCommand((await import("./cli/auto.js")).createAutoCommand());
359
+ program.addCommand((await import("./cli/apply.js")).createApplyCommand());
360
+ program.addCommand((await import("./cli/list.js")).createListCommand());
361
+ program.addCommand((await import("./cli/prune.js")).createPruneCommand());
362
+ program.addCommand((await import("./cli/mcp.js")).createMcpCommand());
363
+ return;
364
+ }
365
+ switch (commandName) {
366
+ case "init":
367
+ program.addCommand((await import("./cli/init.js")).createInitCommand());
368
+ break;
369
+ case "spec":
370
+ program.addCommand((await import("./cli/spec.js")).createSpecCommand());
371
+ break;
372
+ case "run":
373
+ program.addCommand((await import("./cli/run.js")).createRunCommand());
374
+ break;
375
+ case "reduce":
376
+ program.addCommand((await import("./cli/reduce.js")).createReduceCommand());
377
+ break;
378
+ case "verify":
379
+ program.addCommand((await import("./cli/verify.js")).createVerifyCommand());
380
+ break;
381
+ case "message":
382
+ program.addCommand((await import("./cli/message.js")).createMessageCommand());
383
+ break;
384
+ case "auto":
385
+ program.addCommand((await import("./cli/auto.js")).createAutoCommand());
386
+ break;
387
+ case "apply":
388
+ program.addCommand((await import("./cli/apply.js")).createApplyCommand());
389
+ break;
390
+ case "list":
391
+ program.addCommand((await import("./cli/list.js")).createListCommand());
392
+ break;
393
+ case "prune":
394
+ program.addCommand((await import("./cli/prune.js")).createPruneCommand());
395
+ break;
396
+ case "mcp":
397
+ program.addCommand((await import("./cli/mcp.js")).createMcpCommand());
398
+ break;
399
+ }
400
+ }
401
+ function findCommandName(argv) {
402
+ for (let index = 2; index < argv.length; index += 1) {
403
+ const entry = argv[index];
404
+ if (!entry) {
405
+ continue;
406
+ }
407
+ if (entry === "--") {
408
+ return argv[index + 1];
409
+ }
410
+ if (entry.startsWith("-")) {
411
+ continue;
412
+ }
413
+ return entry;
414
+ }
415
+ return undefined;
119
416
  }
120
417
  function shouldAutorun() {
121
418
  if (process.env.VORATIQ_CLI_SKIP_AUTORUN === "1") {
@@ -139,5 +436,6 @@ function safeRealpath(path) {
139
436
  }
140
437
  }
141
438
  if (shouldAutorun()) {
439
+ installProcessGuards();
142
440
  void runCli();
143
441
  }
@@ -1,9 +1,13 @@
1
1
  import { Command } from "commander";
2
2
  import type { ApplyResult } from "../commands/apply/types.js";
3
+ import { type CommandOutputWriter } from "./output.js";
3
4
  export interface ApplyCommandOptions {
4
5
  runId: string;
5
6
  agentId: string;
6
7
  ignoreBaseMismatch?: boolean;
8
+ commit?: boolean;
9
+ json?: boolean;
10
+ writeOutput?: CommandOutputWriter;
7
11
  }
8
12
  export interface ApplyCommandResult {
9
13
  result: ApplyResult;