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
@@ -1,12 +1,6 @@
1
1
  import { z } from "zod";
2
2
  export declare const RUN_STATUS_VALUES: readonly ["queued", "running", "succeeded", "failed", "errored", "aborted", "pruned"];
3
3
  export type RunStatus = (typeof RUN_STATUS_VALUES)[number];
4
- export declare const AGENT_STATUS_VALUES: readonly ["queued", "running", "succeeded", "failed", "errored", "skipped", "aborted"];
5
- export type AgentStatus = (typeof AGENT_STATUS_VALUES)[number];
6
- export declare const EVAL_STATUS_VALUES: readonly ["succeeded", "failed", "errored", "skipped"];
7
- export type EvalStatus = (typeof EVAL_STATUS_VALUES)[number];
8
- export declare const APPLY_STATUS_VALUES: readonly ["succeeded", "failed"];
9
- export type ApplyStatus = (typeof APPLY_STATUS_VALUES)[number];
10
4
  export declare const runStatusSchema: z.ZodEnum<{
11
5
  queued: "queued";
12
6
  running: "running";
@@ -16,6 +10,30 @@ export declare const runStatusSchema: z.ZodEnum<{
16
10
  aborted: "aborted";
17
11
  pruned: "pruned";
18
12
  }>;
13
+ /**
14
+ * Derive the terminal run status from agent outcomes.
15
+ * Returns "succeeded" when at least one agent succeeds; otherwise "failed".
16
+ */
17
+ export declare function deriveRunStatusFromAgents(agentStatuses: readonly AgentStatus[]): RunStatus;
18
+ /**
19
+ * Map a terminal run status to a deterministic process exit code.
20
+ * Throws when invoked with a non-terminal status to avoid contradictory pairs.
21
+ */
22
+ export declare function mapRunStatusToExitCode(status: RunStatus): number;
23
+ /**
24
+ * Run statuses that indicate the run has finished execution.
25
+ */
26
+ export declare const TERMINAL_RUN_STATUSES: readonly RunStatus[];
27
+ /**
28
+ * Run statuses that indicate the run is queued or executing.
29
+ */
30
+ export declare const IN_PROGRESS_RUN_STATUSES: readonly RunStatus[];
31
+ /**
32
+ * Run statuses that allow forced termination (e.g., abort or fail).
33
+ */
34
+ export declare const TERMINABLE_RUN_STATUSES: readonly RunStatus[];
35
+ export declare const AGENT_STATUS_VALUES: readonly ["queued", "running", "succeeded", "failed", "errored", "skipped", "aborted"];
36
+ export type AgentStatus = (typeof AGENT_STATUS_VALUES)[number];
19
37
  export declare const agentStatusSchema: z.ZodEnum<{
20
38
  queued: "queued";
21
39
  running: "running";
@@ -25,13 +43,95 @@ export declare const agentStatusSchema: z.ZodEnum<{
25
43
  aborted: "aborted";
26
44
  skipped: "skipped";
27
45
  }>;
28
- export declare const evalStatusSchema: z.ZodEnum<{
46
+ /**
47
+ * Agent statuses that indicate the agent has finished execution.
48
+ */
49
+ export declare const TERMINAL_AGENT_STATUSES: readonly AgentStatus[];
50
+ /**
51
+ * Agent statuses that indicate the agent is still running or waiting.
52
+ */
53
+ export declare const IN_PROGRESS_AGENT_STATUSES: readonly AgentStatus[];
54
+ export declare const CHECK_STATUS_VALUES: readonly ["succeeded", "failed", "errored", "skipped"];
55
+ export type CheckStatus = (typeof CHECK_STATUS_VALUES)[number];
56
+ export declare const checkStatusSchema: z.ZodEnum<{
29
57
  succeeded: "succeeded";
30
58
  failed: "failed";
31
59
  errored: "errored";
32
60
  skipped: "skipped";
33
61
  }>;
34
- export declare const applyStatusEnum: z.ZodEnum<{
62
+ export declare const APPLY_STATUS_VALUES: readonly ["succeeded", "failed"];
63
+ export type ApplyStatus = (typeof APPLY_STATUS_VALUES)[number];
64
+ export declare const applyStatusSchema: z.ZodEnum<{
65
+ succeeded: "succeeded";
66
+ failed: "failed";
67
+ }>;
68
+ export declare const VERIFICATION_STATUS_VALUES: readonly ["queued", "running", "succeeded", "failed", "aborted"];
69
+ export type VerificationStatus = (typeof VERIFICATION_STATUS_VALUES)[number];
70
+ export declare const verificationStatusSchema: z.ZodEnum<{
71
+ queued: "queued";
72
+ running: "running";
73
+ succeeded: "succeeded";
74
+ failed: "failed";
75
+ aborted: "aborted";
76
+ }>;
77
+ export declare const TERMINAL_VERIFICATION_STATUSES: readonly VerificationStatus[];
78
+ export declare const IN_PROGRESS_VERIFICATION_STATUSES: readonly VerificationStatus[];
79
+ export declare const REDUCTION_STATUS_VALUES: readonly ["queued", "running", "succeeded", "failed", "aborted"];
80
+ export type ReductionStatus = (typeof REDUCTION_STATUS_VALUES)[number];
81
+ export declare const reductionStatusSchema: z.ZodEnum<{
82
+ queued: "queued";
83
+ running: "running";
84
+ succeeded: "succeeded";
85
+ failed: "failed";
86
+ aborted: "aborted";
87
+ }>;
88
+ /**
89
+ * Reduction statuses that indicate the reduction session has finished.
90
+ */
91
+ export declare const TERMINAL_REDUCTION_STATUSES: readonly ReductionStatus[];
92
+ export declare const IN_PROGRESS_REDUCTION_STATUSES: readonly ReductionStatus[];
93
+ export declare const MESSAGE_STATUS_VALUES: readonly ["queued", "running", "succeeded", "failed", "aborted"];
94
+ export type MessageStatus = (typeof MESSAGE_STATUS_VALUES)[number];
95
+ export declare const messageStatusSchema: z.ZodEnum<{
96
+ queued: "queued";
97
+ running: "running";
98
+ succeeded: "succeeded";
99
+ failed: "failed";
100
+ aborted: "aborted";
101
+ }>;
102
+ export declare const TERMINAL_MESSAGE_STATUSES: readonly MessageStatus[];
103
+ export declare const IN_PROGRESS_MESSAGE_STATUSES: readonly MessageStatus[];
104
+ export declare const MESSAGE_RECIPIENT_STATUS_VALUES: readonly ["queued", "running", "succeeded", "failed", "aborted"];
105
+ export type MessageRecipientStatus = (typeof MESSAGE_RECIPIENT_STATUS_VALUES)[number];
106
+ export declare const messageRecipientStatusSchema: z.ZodEnum<{
107
+ queued: "queued";
108
+ running: "running";
109
+ succeeded: "succeeded";
110
+ failed: "failed";
111
+ aborted: "aborted";
112
+ }>;
113
+ export declare const TERMINAL_MESSAGE_RECIPIENT_STATUSES: readonly MessageRecipientStatus[];
114
+ export declare const SPEC_RECORD_STATUS_VALUES: readonly ["running", "succeeded", "aborted", "failed"];
115
+ export type SpecRecordStatus = (typeof SPEC_RECORD_STATUS_VALUES)[number];
116
+ export declare const specRecordStatusSchema: z.ZodEnum<{
117
+ running: "running";
118
+ succeeded: "succeeded";
119
+ failed: "failed";
120
+ aborted: "aborted";
121
+ }>;
122
+ /**
123
+ * Spec record statuses that indicate the spec session has finished.
124
+ */
125
+ export declare const TERMINAL_SPEC_STATUSES: readonly SpecRecordStatus[];
126
+ export declare const SPEC_AGENT_STATUS_VALUES: readonly ["queued", "running", "succeeded", "failed"];
127
+ export type SpecAgentStatus = (typeof SPEC_AGENT_STATUS_VALUES)[number];
128
+ export declare const specAgentStatusSchema: z.ZodEnum<{
129
+ queued: "queued";
130
+ running: "running";
35
131
  succeeded: "succeeded";
36
132
  failed: "failed";
37
133
  }>;
134
+ /**
135
+ * Spec agent statuses that indicate the agent has finished execution.
136
+ */
137
+ export declare const TERMINAL_SPEC_AGENT_STATUSES: readonly SpecAgentStatus[];
@@ -8,6 +8,56 @@ export const RUN_STATUS_VALUES = [
8
8
  "aborted",
9
9
  "pruned",
10
10
  ];
11
+ export const runStatusSchema = z.enum(RUN_STATUS_VALUES);
12
+ /**
13
+ * Derive the terminal run status from agent outcomes.
14
+ * Returns "succeeded" when at least one agent succeeds; otherwise "failed".
15
+ */
16
+ export function deriveRunStatusFromAgents(agentStatuses) {
17
+ const hasAgentSuccess = agentStatuses.some((status) => status === "succeeded");
18
+ return hasAgentSuccess ? "succeeded" : "failed";
19
+ }
20
+ /**
21
+ * Map a terminal run status to a deterministic process exit code.
22
+ * Throws when invoked with a non-terminal status to avoid contradictory pairs.
23
+ */
24
+ export function mapRunStatusToExitCode(status) {
25
+ switch (status) {
26
+ case "succeeded":
27
+ return 0;
28
+ case "failed":
29
+ return 1;
30
+ case "errored":
31
+ return 2;
32
+ case "aborted":
33
+ return 3;
34
+ default:
35
+ throw new Error(`Cannot map non-terminal run status \`${status}\` to an exit code.`);
36
+ }
37
+ }
38
+ /**
39
+ * Run statuses that indicate the run has finished execution.
40
+ */
41
+ export const TERMINAL_RUN_STATUSES = [
42
+ "succeeded",
43
+ "failed",
44
+ "errored",
45
+ "aborted",
46
+ ];
47
+ /**
48
+ * Run statuses that indicate the run is queued or executing.
49
+ */
50
+ export const IN_PROGRESS_RUN_STATUSES = [
51
+ "queued",
52
+ "running",
53
+ ];
54
+ /**
55
+ * Run statuses that allow forced termination (e.g., abort or fail).
56
+ */
57
+ export const TERMINABLE_RUN_STATUSES = [
58
+ "failed",
59
+ "aborted",
60
+ ];
11
61
  export const AGENT_STATUS_VALUES = [
12
62
  "queued",
13
63
  "running",
@@ -17,14 +67,123 @@ export const AGENT_STATUS_VALUES = [
17
67
  "skipped",
18
68
  "aborted",
19
69
  ];
20
- export const EVAL_STATUS_VALUES = [
70
+ export const agentStatusSchema = z.enum(AGENT_STATUS_VALUES);
71
+ /**
72
+ * Agent statuses that indicate the agent has finished execution.
73
+ */
74
+ export const TERMINAL_AGENT_STATUSES = [
75
+ "succeeded",
76
+ "failed",
77
+ "errored",
78
+ "skipped",
79
+ "aborted",
80
+ ];
81
+ /**
82
+ * Agent statuses that indicate the agent is still running or waiting.
83
+ */
84
+ export const IN_PROGRESS_AGENT_STATUSES = [
85
+ "queued",
86
+ "running",
87
+ ];
88
+ export const CHECK_STATUS_VALUES = [
21
89
  "succeeded",
22
90
  "failed",
23
91
  "errored",
24
92
  "skipped",
25
93
  ];
94
+ export const checkStatusSchema = z.enum(CHECK_STATUS_VALUES);
26
95
  export const APPLY_STATUS_VALUES = ["succeeded", "failed"];
27
- export const runStatusSchema = z.enum(RUN_STATUS_VALUES);
28
- export const agentStatusSchema = z.enum(AGENT_STATUS_VALUES);
29
- export const evalStatusSchema = z.enum(EVAL_STATUS_VALUES);
30
- export const applyStatusEnum = z.enum(APPLY_STATUS_VALUES);
96
+ export const applyStatusSchema = z.enum(APPLY_STATUS_VALUES);
97
+ export const VERIFICATION_STATUS_VALUES = [
98
+ "queued",
99
+ "running",
100
+ "succeeded",
101
+ "failed",
102
+ "aborted",
103
+ ];
104
+ export const verificationStatusSchema = z.enum(VERIFICATION_STATUS_VALUES);
105
+ export const TERMINAL_VERIFICATION_STATUSES = [
106
+ "succeeded",
107
+ "failed",
108
+ "aborted",
109
+ ];
110
+ export const IN_PROGRESS_VERIFICATION_STATUSES = ["queued", "running"];
111
+ export const REDUCTION_STATUS_VALUES = [
112
+ "queued",
113
+ "running",
114
+ "succeeded",
115
+ "failed",
116
+ "aborted",
117
+ ];
118
+ export const reductionStatusSchema = z.enum(REDUCTION_STATUS_VALUES);
119
+ /**
120
+ * Reduction statuses that indicate the reduction session has finished.
121
+ */
122
+ export const TERMINAL_REDUCTION_STATUSES = [
123
+ "succeeded",
124
+ "failed",
125
+ "aborted",
126
+ ];
127
+ export const IN_PROGRESS_REDUCTION_STATUSES = [
128
+ "queued",
129
+ "running",
130
+ ];
131
+ export const MESSAGE_STATUS_VALUES = [
132
+ "queued",
133
+ "running",
134
+ "succeeded",
135
+ "failed",
136
+ "aborted",
137
+ ];
138
+ export const messageStatusSchema = z.enum(MESSAGE_STATUS_VALUES);
139
+ export const TERMINAL_MESSAGE_STATUSES = [
140
+ "succeeded",
141
+ "failed",
142
+ "aborted",
143
+ ];
144
+ export const IN_PROGRESS_MESSAGE_STATUSES = [
145
+ "queued",
146
+ "running",
147
+ ];
148
+ export const MESSAGE_RECIPIENT_STATUS_VALUES = [
149
+ "queued",
150
+ "running",
151
+ "succeeded",
152
+ "failed",
153
+ "aborted",
154
+ ];
155
+ export const messageRecipientStatusSchema = z.enum(MESSAGE_RECIPIENT_STATUS_VALUES);
156
+ export const TERMINAL_MESSAGE_RECIPIENT_STATUSES = [
157
+ "succeeded",
158
+ "failed",
159
+ "aborted",
160
+ ];
161
+ export const SPEC_RECORD_STATUS_VALUES = [
162
+ "running",
163
+ "succeeded",
164
+ "aborted",
165
+ "failed",
166
+ ];
167
+ export const specRecordStatusSchema = z.enum(SPEC_RECORD_STATUS_VALUES);
168
+ /**
169
+ * Spec record statuses that indicate the spec session has finished.
170
+ */
171
+ export const TERMINAL_SPEC_STATUSES = [
172
+ "succeeded",
173
+ "aborted",
174
+ "failed",
175
+ ];
176
+ export const SPEC_AGENT_STATUS_VALUES = [
177
+ "queued",
178
+ "running",
179
+ "succeeded",
180
+ "failed",
181
+ ];
182
+ export const specAgentStatusSchema = z.enum(SPEC_AGENT_STATUS_VALUES);
183
+ /**
184
+ * Spec agent statuses that indicate the agent has finished execution.
185
+ */
186
+ export const TERMINAL_SPEC_AGENT_STATUSES = [
187
+ "succeeded",
188
+ "failed",
189
+ ];
@@ -0,0 +1,24 @@
1
+ export interface StartOptions {
2
+ isTty: boolean;
3
+ env: NodeJS.ProcessEnv;
4
+ cachePath: string;
5
+ now?: () => Date;
6
+ fetchImpl?: typeof fetch;
7
+ }
8
+ export interface UpdateHandle {
9
+ peekNotice(): string | undefined;
10
+ finish(): void;
11
+ }
12
+ interface CacheState {
13
+ lastCheckedAt: string;
14
+ latestVersion: string;
15
+ }
16
+ export declare function readCache(cachePath: string): CacheState | undefined;
17
+ export declare function writeCache(cachePath: string, state: CacheState): void;
18
+ /**
19
+ * Start the update check. Returns undefined when trigger rules fail
20
+ * (non-TTY or CI). Otherwise returns a handle that can peek at cached
21
+ * notices and perform background bookkeeping via finish().
22
+ */
23
+ export declare function startUpdateCheck(localVersion: string, opts: StartOptions): UpdateHandle | undefined;
24
+ export {};
@@ -0,0 +1,130 @@
1
+ import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { dirname } from "node:path";
3
+ import { isNewerVersion } from "./semver.js";
4
+ const REGISTRY_URL = "https://registry.npmjs.org/voratiq/latest";
5
+ const FETCH_TIMEOUT_MS = 1500;
6
+ const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
7
+ export function readCache(cachePath) {
8
+ try {
9
+ const raw = readFileSync(cachePath, "utf-8");
10
+ const parsed = JSON.parse(raw);
11
+ if (typeof parsed.lastCheckedAt === "string" &&
12
+ typeof parsed.latestVersion === "string") {
13
+ return {
14
+ lastCheckedAt: parsed.lastCheckedAt,
15
+ latestVersion: parsed.latestVersion,
16
+ };
17
+ }
18
+ }
19
+ catch {
20
+ // Missing file, parse error, etc. - all non-actionable.
21
+ }
22
+ return undefined;
23
+ }
24
+ export function writeCache(cachePath, state) {
25
+ try {
26
+ mkdirSync(dirname(cachePath), { recursive: true });
27
+ writeFileSync(cachePath, JSON.stringify(state, null, 2) + "\n", "utf-8");
28
+ }
29
+ catch {
30
+ // Write failure is non-actionable.
31
+ }
32
+ }
33
+ function isCiEnvironment(env) {
34
+ const raw = env.CI;
35
+ if (raw === undefined) {
36
+ return false;
37
+ }
38
+ const normalized = raw.trim().toLowerCase();
39
+ return normalized !== "" && normalized !== "0" && normalized !== "false";
40
+ }
41
+ function isCacheFresh(cache, now) {
42
+ try {
43
+ const checkedAt = new Date(cache.lastCheckedAt);
44
+ return now.getTime() - checkedAt.getTime() < CHECK_INTERVAL_MS;
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ }
50
+ function buildNotice(localVersion, latestVersion) {
51
+ return `Update available: Voratiq ${localVersion} -> ${latestVersion}`;
52
+ }
53
+ async function fetchLatestVersion(fetchImpl) {
54
+ try {
55
+ const controller = new AbortController();
56
+ const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
57
+ if (typeof timer === "object" && "unref" in timer) {
58
+ timer.unref();
59
+ }
60
+ const response = await fetchImpl(REGISTRY_URL, {
61
+ signal: controller.signal,
62
+ });
63
+ clearTimeout(timer);
64
+ if (!response.ok) {
65
+ return undefined;
66
+ }
67
+ const body = (await response.json());
68
+ if (typeof body.version === "string" && body.version.length > 0) {
69
+ return body.version;
70
+ }
71
+ }
72
+ catch {
73
+ // Network error, timeout, invalid JSON - all silent.
74
+ }
75
+ return undefined;
76
+ }
77
+ /**
78
+ * Start the update check. Returns undefined when trigger rules fail
79
+ * (non-TTY or CI). Otherwise returns a handle that can peek at cached
80
+ * notices and perform background bookkeeping via finish().
81
+ */
82
+ export function startUpdateCheck(localVersion, opts) {
83
+ // Trigger rules: skip in non-TTY or CI environments
84
+ if (!opts.isTty) {
85
+ return undefined;
86
+ }
87
+ if (isCiEnvironment(opts.env)) {
88
+ return undefined;
89
+ }
90
+ const now = opts.now ?? (() => new Date());
91
+ const fetchFn = opts.fetchImpl ?? fetch;
92
+ const { cachePath } = opts;
93
+ // Read cache synchronously at startup
94
+ const cache = readCache(cachePath);
95
+ // Start background refresh if cache is stale or missing
96
+ if (!cache || !isCacheFresh(cache, now())) {
97
+ fetchLatestVersion(fetchFn)
98
+ .then((version) => {
99
+ if (version) {
100
+ writeCache(cachePath, {
101
+ lastCheckedAt: now().toISOString(),
102
+ latestVersion: version,
103
+ });
104
+ }
105
+ })
106
+ .catch(() => {
107
+ // Network error, timeout - silent.
108
+ });
109
+ }
110
+ let consumed = false;
111
+ return {
112
+ peekNotice() {
113
+ if (consumed) {
114
+ return undefined;
115
+ }
116
+ if (!cache) {
117
+ return undefined;
118
+ }
119
+ if (!isNewerVersion(localVersion, cache.latestVersion)) {
120
+ return undefined;
121
+ }
122
+ consumed = true;
123
+ return buildNotice(localVersion, cache.latestVersion);
124
+ },
125
+ finish() {
126
+ // Bookkeeping only - no output. The background fetch promise
127
+ // resolves on its own; this is a hook for future cleanup.
128
+ },
129
+ };
130
+ }
@@ -0,0 +1,25 @@
1
+ import type { CommandOutputWriter } from "../cli/output.js";
2
+ export interface UpdatePromptHandler {
3
+ (options: {
4
+ message: string;
5
+ prefaceLines?: string[];
6
+ }): Promise<string>;
7
+ }
8
+ export interface UpdatePromptWriter {
9
+ (text: string): void;
10
+ }
11
+ export interface UpdatePromptDeps {
12
+ prompt: UpdatePromptHandler;
13
+ write: UpdatePromptWriter;
14
+ writeCommandOutput?: CommandOutputWriter;
15
+ execCommand?: (command: string, args: readonly string[]) => void;
16
+ }
17
+ export interface UpdatePromptResult {
18
+ shouldExit: boolean;
19
+ exitCode?: number;
20
+ }
21
+ /**
22
+ * Show the interactive update prompt and handle user choice.
23
+ * Returns an object indicating whether the process should exit and with what code.
24
+ */
25
+ export declare function showUpdatePrompt(notice: string, deps: UpdatePromptDeps): Promise<UpdatePromptResult>;
@@ -0,0 +1,62 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { renderUpdateProgressLines, renderUpdatePromptPreface, } from "../render/transcripts/update-check.js";
3
+ import { colorize } from "../utils/colors.js";
4
+ const UPDATE_COMMAND = "npm";
5
+ const UPDATE_ARGS = ["install", "-g", "voratiq@latest"];
6
+ /**
7
+ * Show the interactive update prompt and handle user choice.
8
+ * Returns an object indicating whether the process should exit and with what code.
9
+ */
10
+ export async function showUpdatePrompt(notice, deps) {
11
+ const { prompt, write, writeCommandOutput, execCommand = defaultExecCommand, } = deps;
12
+ let firstPrompt = true;
13
+ for (;;) {
14
+ const response = await prompt({
15
+ message: "[1]",
16
+ prefaceLines: firstPrompt
17
+ ? renderUpdatePromptPreface(notice, firstPrompt)
18
+ : undefined,
19
+ });
20
+ const trimmed = response.trim();
21
+ const normalized = trimmed.length === 0 ? "1" : trimmed;
22
+ if (normalized === "1") {
23
+ write(`${renderUpdateProgressLines().join("\n")}\n`);
24
+ try {
25
+ execCommand(UPDATE_COMMAND, UPDATE_ARGS);
26
+ }
27
+ catch {
28
+ writeStatusLine("Update failed.", "red", write, writeCommandOutput);
29
+ return { shouldExit: true, exitCode: 1 };
30
+ }
31
+ writeStatusLine("Updated. Rerun your command.", "green", write, writeCommandOutput);
32
+ return { shouldExit: true, exitCode: 0 };
33
+ }
34
+ if (normalized === "2") {
35
+ return { shouldExit: false };
36
+ }
37
+ write("Choose 1 or 2.\n");
38
+ firstPrompt = false;
39
+ }
40
+ }
41
+ function writeStatusLine(message, color, fallbackWrite, writeCommandOutput) {
42
+ const rendered = colorize(message, color);
43
+ if (writeCommandOutput) {
44
+ writeCommandOutput({ body: rendered });
45
+ return;
46
+ }
47
+ fallbackWrite("\n");
48
+ fallbackWrite(rendered);
49
+ fallbackWrite("\n");
50
+ }
51
+ function defaultExecCommand(command, args) {
52
+ const result = spawnSync(command, args, { stdio: "inherit" });
53
+ if (result.error) {
54
+ throw result.error;
55
+ }
56
+ if (typeof result.status === "number" && result.status !== 0) {
57
+ throw new Error(`Update command exited with status ${result.status}`);
58
+ }
59
+ if (result.signal) {
60
+ throw new Error(`Update command terminated with signal ${result.signal}`);
61
+ }
62
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Lightweight semver comparison for update-check.
3
+ * Ignores prerelease/build metadata per MVP spec.
4
+ */
5
+ interface ParsedVersion {
6
+ major: number;
7
+ minor: number;
8
+ patch: number;
9
+ }
10
+ export declare function parseSemver(version: string): ParsedVersion | undefined;
11
+ /**
12
+ * Returns true when `candidate` is strictly newer than `current`.
13
+ * Prerelease/build metadata is stripped before comparison.
14
+ * Returns false for invalid version strings.
15
+ */
16
+ export declare function isNewerVersion(current: string, candidate: string): boolean;
17
+ export {};
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Lightweight semver comparison for update-check.
3
+ * Ignores prerelease/build metadata per MVP spec.
4
+ */
5
+ export function parseSemver(version) {
6
+ // Strip leading 'v' if present, then strip prerelease/build metadata
7
+ const cleaned = version.startsWith("v") ? version.slice(1) : version;
8
+ const coreMatch = /^(\d+)\.(\d+)\.(\d+)/.exec(cleaned);
9
+ if (!coreMatch) {
10
+ return undefined;
11
+ }
12
+ return {
13
+ major: Number(coreMatch[1]),
14
+ minor: Number(coreMatch[2]),
15
+ patch: Number(coreMatch[3]),
16
+ };
17
+ }
18
+ /**
19
+ * Returns true when `candidate` is strictly newer than `current`.
20
+ * Prerelease/build metadata is stripped before comparison.
21
+ * Returns false for invalid version strings.
22
+ */
23
+ export function isNewerVersion(current, candidate) {
24
+ const a = parseSemver(current);
25
+ const b = parseSemver(candidate);
26
+ if (!a || !b) {
27
+ return false;
28
+ }
29
+ if (b.major !== a.major) {
30
+ return b.major > a.major;
31
+ }
32
+ if (b.minor !== a.minor) {
33
+ return b.minor > a.minor;
34
+ }
35
+ return b.patch > a.patch;
36
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Resolve the path to the update-check cache file.
3
+ *
4
+ * macOS/Linux:
5
+ * $XDG_STATE_HOME/voratiq/update-state.json (when XDG_STATE_HOME is set)
6
+ * ~/.local/state/voratiq/update-state.json (fallback)
7
+ */
8
+ export declare function resolveUpdateStatePath(env?: NodeJS.ProcessEnv): string;
@@ -0,0 +1,18 @@
1
+ import { homedir } from "node:os";
2
+ import { join } from "node:path";
3
+ const CACHE_FILENAME = "update-state.json";
4
+ const APP_DIR = "voratiq";
5
+ /**
6
+ * Resolve the path to the update-check cache file.
7
+ *
8
+ * macOS/Linux:
9
+ * $XDG_STATE_HOME/voratiq/update-state.json (when XDG_STATE_HOME is set)
10
+ * ~/.local/state/voratiq/update-state.json (fallback)
11
+ */
12
+ export function resolveUpdateStatePath(env = process.env) {
13
+ const xdgState = env.XDG_STATE_HOME;
14
+ const base = xdgState && xdgState.length > 0
15
+ ? xdgState
16
+ : join(homedir(), ".local", "state");
17
+ return join(base, APP_DIR, CACHE_FILENAME);
18
+ }
@@ -1,12 +1,18 @@
1
- import { spawnSync } from "node:child_process";
1
+ import { accessSync, constants as fsConstants } from "node:fs";
2
+ import { delimiter, join } from "node:path";
2
3
  export function detectBinary(command) {
3
- const result = spawnSync("bash", ["-lc", `command -v ${command}`], {
4
- encoding: "utf8",
5
- });
6
- if (result.status === 0) {
7
- const path = result.stdout.trim();
8
- if (path.length > 0) {
9
- return path;
4
+ const pathEntries = (process.env.PATH ?? "")
5
+ .split(delimiter)
6
+ .map((entry) => entry.trim())
7
+ .filter((entry) => entry.length > 0);
8
+ for (const entry of pathEntries) {
9
+ const candidate = join(entry, command);
10
+ try {
11
+ accessSync(candidate, fsConstants.X_OK);
12
+ return candidate;
13
+ }
14
+ catch {
15
+ continue;
10
16
  }
11
17
  }
12
18
  return undefined;