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,26 +1,61 @@
1
1
  import { isAbsolute, resolve } from "node:path";
2
- import { ensureFileExists } from "../utils/fs.js";
2
+ import { executeInitCommand } from "../commands/init/command.js";
3
+ import { ensureFileExists, pathExists } from "../utils/fs.js";
3
4
  import { assertGitRepository, runGitCommand, } from "../utils/git.js";
4
5
  import { relativeToRoot } from "../utils/path.js";
5
6
  import { collectMissingSandboxDependencies, formatSandboxDependencyList, } from "../workspace/sandbox-requirements.js";
6
- import { validateWorkspace } from "../workspace/setup.js";
7
- import { resolveWorkspacePath, VORATIQ_RUNS_DIR, VORATIQ_RUNS_FILE, } from "../workspace/structure.js";
7
+ import { repairWorkspaceStructure, validateWorkspace, } from "../workspace/setup.js";
8
+ import { resolveWorkspacePath, VORATIQ_MESSAGE_DIR, VORATIQ_MESSAGE_FILE, VORATIQ_REDUCTION_DIR, VORATIQ_REDUCTION_FILE, VORATIQ_RUN_DIR, VORATIQ_RUN_FILE, VORATIQ_SPEC_DIR, VORATIQ_SPEC_FILE, VORATIQ_VERIFICATION_DIR, VORATIQ_VERIFICATION_FILE, } from "../workspace/structure.js";
8
9
  import { DirtyWorkingTreeError, SandboxDependenciesError, SpecNotFoundError, } from "./errors.js";
9
10
  export async function resolveCliContext(options = {}) {
10
- const { requireWorkspace = true } = options;
11
+ const { requireWorkspace = true, workspaceAutoInitMode = "never", restoreShippedVerificationTemplates = true, } = options;
11
12
  const root = process.cwd();
12
13
  await assertGitRepository(root);
14
+ const workspaceDir = resolveWorkspacePath(root);
15
+ const initialWorkspaceExists = await pathExists(workspaceDir);
16
+ let workspaceAutoInitialized = false;
17
+ let workspaceAutoRepaired = false;
13
18
  if (requireWorkspace) {
19
+ let workspaceMissing = !initialWorkspaceExists;
20
+ if (workspaceAutoInitMode === "when-missing" && workspaceMissing) {
21
+ await executeInitCommand({
22
+ root,
23
+ preset: "pro",
24
+ presetProvided: false,
25
+ assumeYes: true,
26
+ interactive: false,
27
+ });
28
+ workspaceAutoInitialized = true;
29
+ workspaceMissing = false;
30
+ }
31
+ if (!workspaceMissing) {
32
+ const repairResult = await repairWorkspaceStructure(root, {
33
+ restoreShippedVerificationTemplates,
34
+ });
35
+ workspaceAutoRepaired = repairResult.repaired;
36
+ }
14
37
  await validateWorkspace(root);
15
38
  }
16
- const workspaceDir = resolveWorkspacePath(root);
17
39
  const workspacePaths = {
18
40
  root,
19
41
  workspaceDir,
20
- runsDir: resolveWorkspacePath(root, VORATIQ_RUNS_DIR),
21
- runsFile: resolveWorkspacePath(root, VORATIQ_RUNS_FILE),
42
+ runsDir: resolveWorkspacePath(root, VORATIQ_RUN_DIR),
43
+ runsFile: resolveWorkspacePath(root, VORATIQ_RUN_FILE),
44
+ reductionsDir: resolveWorkspacePath(root, VORATIQ_REDUCTION_DIR),
45
+ reductionsFile: resolveWorkspacePath(root, VORATIQ_REDUCTION_FILE),
46
+ messagesDir: resolveWorkspacePath(root, VORATIQ_MESSAGE_DIR),
47
+ messagesFile: resolveWorkspacePath(root, VORATIQ_MESSAGE_FILE),
48
+ specsDir: resolveWorkspacePath(root, VORATIQ_SPEC_DIR),
49
+ specsFile: resolveWorkspacePath(root, VORATIQ_SPEC_FILE),
50
+ verificationsDir: resolveWorkspacePath(root, VORATIQ_VERIFICATION_DIR),
51
+ verificationsFile: resolveWorkspacePath(root, VORATIQ_VERIFICATION_FILE),
52
+ };
53
+ return {
54
+ root,
55
+ workspacePaths,
56
+ workspaceAutoInitialized,
57
+ workspaceAutoRepaired,
22
58
  };
23
- return { root, workspacePaths };
24
59
  }
25
60
  export async function ensureSpecPath(specPath, root) {
26
61
  const absolutePath = isAbsolute(specPath)
@@ -20,7 +20,7 @@ export function createConfirmationInteractor(options = {}) {
20
20
  process.stdout.write(`${line}\n`);
21
21
  }
22
22
  }
23
- const suffix = defaultValue ? "(Y/n)" : "(y/N)";
23
+ const suffix = defaultValue ? "[Y/n]" : "[y/N]";
24
24
  for (;;) {
25
25
  const response = await readlineInterface.question(`${message} ${suffix}: `);
26
26
  const normalized = response.trim().toLowerCase();
@@ -50,7 +50,9 @@ export function createConfirmationInteractor(options = {}) {
50
50
  }
51
51
  }
52
52
  const suffix = defaultValue && defaultValue.length > 0 ? ` [${defaultValue}]` : "";
53
- const response = await readlineInterface.question(`${message}${suffix}: `);
53
+ const isInlinePrompt = message.trim() === ">";
54
+ const promptLabel = isInlinePrompt ? "> " : `${message}${suffix}: `;
55
+ const response = await readlineInterface.question(promptLabel);
54
56
  if (response.trim().length === 0) {
55
57
  return defaultValue ?? "";
56
58
  }
@@ -1,6 +1,6 @@
1
1
  import { colorize } from "../../utils/colors.js";
2
2
  import { formatRunWorkspaceRelative } from "../../workspace/layout.js";
3
- import { buildAgentArtifactPaths, buildAgentEvalViews, getAgentDirectoryPath, getAgentManifestPath, } from "../../workspace/structure.js";
3
+ import { buildAgentArtifactPaths, getAgentDirectoryPath, getAgentManifestPath, } from "../../workspace/structure.js";
4
4
  import { formatRunTimestamp } from "../utils/records.js";
5
5
  import { renderTranscriptWithMetadata } from "./shared.js";
6
6
  export function renderApplyTranscript(result) {
@@ -22,31 +22,30 @@ export function renderApplyTranscript(result) {
22
22
  baseDirectory: getAgentDirectoryPath(result.runId, agent.agentId),
23
23
  runtimeManifestPath: getAgentManifestPath(result.runId, agent.agentId),
24
24
  assets,
25
- evals: buildAgentEvalViews({
26
- runId: result.runId,
27
- agentId: agent.agentId,
28
- evals: agent.evals,
29
- }),
30
25
  };
31
26
  const warnings = result.ignoredBaseMismatch
32
27
  ? [
33
28
  `${colorize("Warning:", "yellow")} Applied despite base mismatch (\`--ignore-base-mismatch\`).`,
34
29
  ]
35
30
  : undefined;
31
+ const applyMessage = result.appliedCommitSha
32
+ ? `Diff applied to working tree (commit: ${result.appliedCommitSha}).`
33
+ : "Diff applied to working tree.";
34
+ const afterAgentsLines = [colorize(applyMessage, "green")];
36
35
  return renderTranscriptWithMetadata({
37
36
  metadata: {
38
37
  runId: result.runId,
39
38
  status: result.status,
40
- specPath: result.specPath,
41
39
  workspacePath: formatRunWorkspaceRelative(result.runId),
42
40
  createdAt: formatRunTimestamp(result.createdAt),
43
- baseRevisionSha: result.baseRevisionSha,
44
41
  },
45
42
  agents: [agentDisplay],
46
43
  warnings,
47
- afterAgents: [[colorize("Diff applied to working tree.", "green")]],
44
+ afterAgents: [afterAgentsLines],
48
45
  hint: {
49
- message: "Review changes (e.g., `git status`) and run tests before committing.",
46
+ message: result.appliedCommitSha
47
+ ? "Review the commit and run tests."
48
+ : "Review changes and run tests.",
50
49
  },
51
50
  });
52
51
  }
@@ -0,0 +1,27 @@
1
+ import type { AutoTerminalStatus } from "../../domain/run/model/types.js";
2
+ import type { RunStatus } from "../../status/index.js";
3
+ export type AutoPhaseStatus = "succeeded" | "failed" | "skipped";
4
+ export interface AutoPhaseSummary {
5
+ status: AutoPhaseStatus;
6
+ durationMs?: number;
7
+ detail?: string;
8
+ }
9
+ export interface AutoSummaryInput {
10
+ status: AutoTerminalStatus;
11
+ totalDurationMs: number;
12
+ spec: AutoPhaseSummary & {
13
+ specPath?: string;
14
+ };
15
+ run: AutoPhaseSummary & {
16
+ runId?: string;
17
+ runStatus?: RunStatus;
18
+ createdAt?: string;
19
+ specPath?: string;
20
+ baseRevisionSha?: string;
21
+ };
22
+ verify: AutoPhaseSummary;
23
+ apply?: AutoPhaseSummary & {
24
+ agentId?: string;
25
+ };
26
+ }
27
+ export declare function renderAutoSummaryTranscript(input: AutoSummaryInput): string;
@@ -0,0 +1,21 @@
1
+ import { getRunStatusStyle } from "../../status/colors.js";
2
+ import { colorize } from "../../utils/colors.js";
3
+ import { formatDurationLabel } from "../utils/duration.js";
4
+ import { renderTranscript } from "../utils/transcript.js";
5
+ export function renderAutoSummaryTranscript(input) {
6
+ const totalDuration = formatDurationLabel(input.totalDurationMs) ?? "—";
7
+ const statusLabel = input.status === "action_required"
8
+ ? "ACTION_REQUIRED"
9
+ : input.status === "succeeded"
10
+ ? "SUCCEEDED"
11
+ : "FAILED";
12
+ const statusStyle = input.status === "action_required"
13
+ ? { cli: "yellow" }
14
+ : getRunStatusStyle((input.status === "succeeded"
15
+ ? "succeeded"
16
+ : "failed"));
17
+ const lines = [
18
+ `Auto ${colorize(statusLabel, statusStyle.cli)} (${totalDuration})`,
19
+ ];
20
+ return renderTranscript({ sections: [lines] });
21
+ }
@@ -1,18 +1,7 @@
1
1
  import type { InitCommandResult } from "../../commands/init/types.js";
2
- import type { EvalSlug } from "../../configs/evals/types.js";
3
- export declare function buildInitializationPrompt(): string;
4
- interface AgentPromptRenderOptions {
5
- agentId: string;
6
- binaryPath?: string;
7
- detected: boolean;
8
- firstPrompt: boolean;
2
+ export declare function renderPresetPromptPreface(firstPrompt: boolean): string[];
3
+ interface RenderInitTranscriptOptions {
4
+ includeConfigurationHeading?: boolean;
9
5
  }
10
- export declare function renderAgentPromptPreface({ agentId, binaryPath, detected, firstPrompt, }: AgentPromptRenderOptions): string[];
11
- interface EvalCommandPromptRenderOptions {
12
- commandName: EvalSlug;
13
- commandText: string;
14
- firstPrompt: boolean;
15
- }
16
- export declare function renderEvalCommandPreface({ commandName, commandText, firstPrompt, }: EvalCommandPromptRenderOptions): string[];
17
- export declare function renderInitTranscript({ agentSummary, environmentSummary, evalSummary, sandboxSummary, }: InitCommandResult): string;
6
+ export declare function renderInitTranscript({ preset, agentSummary, orchestrationSummary, environmentSummary, sandboxSummary, }: InitCommandResult, options?: RenderInitTranscriptOptions): string;
18
7
  export {};
@@ -1,84 +1,83 @@
1
+ import { getAgentDefaultsForPreset } from "../../configs/agents/defaults.js";
1
2
  import { colorize } from "../../utils/colors.js";
2
- import { renderTranscript } from "../utils/transcript.js";
3
- export function buildInitializationPrompt() {
4
- return "Initializing Voratiq…";
5
- }
6
- export function renderAgentPromptPreface({ agentId, binaryPath, detected, firstPrompt, }) {
7
- const lines = [];
8
- if (firstPrompt) {
9
- lines.push("");
10
- lines.push("Configuring agents…");
11
- lines.push("");
12
- }
13
- if (detected && binaryPath) {
14
- lines.push(`\`${agentId}\` binary detected: \`${binaryPath}\``);
15
- }
16
- else {
17
- lines.push(`\`${agentId}\` binary not detected. Keeping disabled.`);
18
- }
19
- return lines;
20
- }
21
- export function renderEvalCommandPreface({ commandName, commandText, firstPrompt, }) {
22
- const lines = [];
23
- if (firstPrompt) {
24
- lines.push("");
25
- lines.push("Configuring evals…");
26
- lines.push("");
27
- }
28
- lines.push(`\`${commandName}\` command detected: \`${commandText}\``);
29
- return lines;
30
- }
31
- export function renderInitTranscript({ agentSummary, environmentSummary, evalSummary, sandboxSummary, }) {
32
- const sections = [];
33
- sections.push(buildAgentsSection(agentSummary));
34
- sections.push(buildEnvironmentSection(environmentSummary));
35
- sections.push(buildEvalsSection(evalSummary));
36
- sections.push(buildSandboxSection(sandboxSummary));
37
- sections.push([buildWorkspaceInitializedSection()]);
38
- return renderTranscript({
3
+ import { formatWorkspacePath, VORATIQ_VERIFICATION_CONFIG_FILE, } from "../../workspace/structure.js";
4
+ import { renderTable } from "../utils/table.js";
5
+ import { renderBlocks, renderTranscript } from "../utils/transcript.js";
6
+ import { wrapWords } from "../utils/wrap.js";
7
+ const INIT_NOTE_MAX_WIDTH = 79;
8
+ export function renderPresetPromptPreface(firstPrompt) {
9
+ const sections = [
10
+ [
11
+ "Which workspace preset would you like?",
12
+ " [1] Pro (flagship)",
13
+ " [2] Lite (faster/cheaper)",
14
+ " [3] Manual (configure yourself)",
15
+ ],
16
+ ];
17
+ return renderBlocks({
39
18
  sections,
40
- hint: {
41
- message: "To begin a run:\n voratiq run --spec <path>",
42
- },
19
+ leadingBlankLine: firstPrompt,
43
20
  });
44
21
  }
45
- function buildAgentsSection(summary) {
46
- const lines = [];
47
- if (summary.zeroDetections && summary.enabledAgents.length === 0) {
48
- lines.push("No agents configured, unable to find agent binaries.");
49
- lines.push(`To modify agent setup manually, edit \`${summary.configPath}\`.`);
50
- return lines;
22
+ export function renderInitTranscript({ preset, agentSummary, orchestrationSummary, environmentSummary, sandboxSummary, }, options = {}) {
23
+ const { includeConfigurationHeading = true } = options;
24
+ const sections = [];
25
+ if (includeConfigurationHeading) {
26
+ sections.push(["Configuring workspace…"]);
51
27
  }
52
- lines.push(`Agents configured (${formatEnabled(summary.enabledAgents)}).`);
53
- lines.push(`To modify, edit \`${summary.configPath}\`.`);
54
- return lines;
55
- }
56
- function buildEnvironmentSection(summary) {
57
- const lines = [];
58
- const details = summary.detectedEntries.length > 0
59
- ? summary.detectedEntries.join(", ")
60
- : "none";
61
- lines.push(`Environment configured (${details}).`);
62
- lines.push(`To modify, edit \`${summary.configPath}\`.`);
63
- return lines;
64
- }
65
- function buildEvalsSection(summary) {
66
- const lines = [];
67
- if (summary.configuredEvals.length === 0) {
68
- lines.push("No evals configured, unable to detect project tooling yet.");
69
- lines.push(`To modify eval setup manually, edit \`${summary.configPath}\`.`);
70
- return lines;
28
+ sections.push(buildConfigurationSummaryTable({
29
+ orchestrationPath: orchestrationSummary.configPath,
30
+ agentsPath: agentSummary.configPath,
31
+ verificationPath: formatWorkspacePath(VORATIQ_VERIFICATION_CONFIG_FILE),
32
+ environmentPath: environmentSummary.configPath,
33
+ sandboxPath: sandboxSummary.configPath,
34
+ }));
35
+ const conditionalNote = resolveConditionalInitNote({
36
+ preset,
37
+ agentSummary,
38
+ });
39
+ if (conditionalNote) {
40
+ sections.push(wrapWords(conditionalNote, INIT_NOTE_MAX_WIDTH).map((line) => colorize(line, "yellow")));
71
41
  }
72
- lines.push(`Evals configured (${formatEnabled(summary.configuredEvals)}).`);
73
- lines.push(`To modify, edit \`${summary.configPath}\`.`);
74
- return lines;
42
+ sections.push([
43
+ "Configuration docs:",
44
+ " https://github.com/voratiq/voratiq/tree/main/docs/configs",
45
+ ]);
46
+ sections.push([buildWorkspaceInitializedSection()]);
47
+ sections.push(["Run end-to-end:", ' voratiq auto --description "<task>"']);
48
+ return renderTranscript({ sections });
75
49
  }
76
- function buildSandboxSection(summary) {
77
- return ["Sandbox configured.", `To modify, edit \`${summary.configPath}\`.`];
50
+ function buildConfigurationSummaryTable(paths) {
51
+ return renderTable({
52
+ columns: [
53
+ { header: "CONFIGURATION", accessor: (row) => row.configuration },
54
+ { header: "FILE", accessor: (row) => row.path },
55
+ ],
56
+ rows: [
57
+ { configuration: "agents", path: paths.agentsPath },
58
+ { configuration: "orchestration", path: paths.orchestrationPath },
59
+ { configuration: "verification", path: paths.verificationPath },
60
+ { configuration: "environment", path: paths.environmentPath },
61
+ { configuration: "sandbox", path: paths.sandboxPath },
62
+ ],
63
+ });
78
64
  }
79
65
  function buildWorkspaceInitializedSection() {
80
66
  return colorize("Voratiq initialized.", "green");
81
67
  }
82
- function formatEnabled(values) {
83
- return values.length > 0 ? values.join(", ") : "none";
68
+ function resolveConditionalInitNote({ preset, agentSummary, }) {
69
+ if (agentSummary.zeroDetections) {
70
+ return "No agent CLIs detected on PATH. Install providers, then update `agents.yaml`.";
71
+ }
72
+ if (preset === "manual") {
73
+ return "Manual preset leaves stages empty. Add agents to `orchestration.yaml`.";
74
+ }
75
+ const presetProviders = new Set(getAgentDefaultsForPreset(preset).map((agentDefault) => agentDefault.provider));
76
+ const detectedProviders = new Set(agentSummary.detectedProviders.map((summary) => summary.provider));
77
+ for (const presetProvider of presetProviders) {
78
+ if (!detectedProviders.has(presetProvider)) {
79
+ return "Some providers not found on PATH. Only detected providers were configured. Install missing ones, then update `agents.yaml`.";
80
+ }
81
+ }
82
+ return undefined;
84
83
  }
@@ -1,3 +1,12 @@
1
- import type { RunRecord } from "../../records/types.js";
1
+ import type { MessageRecord } from "../../domain/message/model/types.js";
2
+ import type { ReductionRecord } from "../../domain/reduce/model/types.js";
3
+ import type { RunRecord } from "../../domain/run/model/types.js";
4
+ import type { SpecRecord } from "../../domain/spec/model/types.js";
5
+ import type { VerificationRecord } from "../../domain/verify/model/types.js";
2
6
  export declare function renderRunList(records: readonly RunRecord[]): string;
3
7
  export declare function renderListTranscript(records: readonly RunRecord[]): string;
8
+ export declare function renderSpecList(records: readonly SpecRecord[]): string;
9
+ export declare function renderReduceList(records: readonly ReductionRecord[]): string;
10
+ export declare function renderMessageList(records: readonly MessageRecord[]): string;
11
+ export declare function renderVerifyList(records: readonly VerificationRecord[]): string;
12
+ export declare function renderListTableTranscript(tableOutput: string): string;
@@ -1,44 +1,150 @@
1
1
  import { formatRunTimestamp } from "../utils/records.js";
2
2
  import { renderTable } from "../utils/table.js";
3
3
  import { renderTranscript } from "../utils/transcript.js";
4
+ const DASH = "—";
5
+ const SPEC_DESCRIPTION_PREVIEW_LENGTH = 32;
6
+ const MESSAGE_PROMPT_PREVIEW_LENGTH = 32;
4
7
  export function renderRunList(records) {
5
8
  const rows = records.map((record) => ({
6
9
  run: record.runId,
7
- status: record.status.toUpperCase(),
8
10
  spec: record.spec.path,
11
+ status: record.status.toUpperCase(),
9
12
  created: formatRunTimestamp(record.createdAt),
10
13
  }));
11
14
  const columns = [
12
15
  { header: "RUN", accessor: (row) => row.run },
16
+ { header: "SPEC", accessor: (row) => row.spec },
13
17
  {
14
18
  header: "STATUS",
15
19
  accessor: (row) => row.status,
16
20
  },
17
- { header: "SPEC", accessor: (row) => row.spec },
18
21
  {
19
22
  header: "CREATED",
20
23
  accessor: (row) => row.created,
21
24
  },
22
25
  ];
23
- const lines = renderTable({
24
- columns,
25
- rows,
26
- });
27
- return lines.join("\n");
26
+ return renderTable({ columns, rows }).join("\n");
28
27
  }
29
28
  export function renderListTranscript(records) {
30
29
  if (records.length === 0) {
31
30
  return "";
32
31
  }
33
32
  const tableOutput = renderRunList(records);
33
+ return renderListTableTranscript(tableOutput);
34
+ }
35
+ export function renderSpecList(records) {
36
+ return renderTable({
37
+ columns: [
38
+ {
39
+ header: "SPEC",
40
+ accessor: (record) => record.sessionId,
41
+ },
42
+ {
43
+ header: "DESCRIPTION",
44
+ accessor: (record) => truncatePreview(record.description, SPEC_DESCRIPTION_PREVIEW_LENGTH),
45
+ },
46
+ {
47
+ header: "STATUS",
48
+ accessor: (record) => record.status.toUpperCase(),
49
+ },
50
+ {
51
+ header: "CREATED",
52
+ accessor: (record) => formatRunTimestamp(record.createdAt),
53
+ },
54
+ ],
55
+ rows: records,
56
+ }).join("\n");
57
+ }
58
+ export function renderReduceList(records) {
59
+ return renderTable({
60
+ columns: [
61
+ {
62
+ header: "REDUCE",
63
+ accessor: (record) => record.sessionId,
64
+ },
65
+ {
66
+ header: "TARGET",
67
+ accessor: (record) => `${record.target.type}:${record.target.id}`,
68
+ },
69
+ {
70
+ header: "STATUS",
71
+ accessor: (record) => record.status.toUpperCase(),
72
+ },
73
+ {
74
+ header: "CREATED",
75
+ accessor: (record) => formatRunTimestamp(record.createdAt),
76
+ },
77
+ ],
78
+ rows: records,
79
+ }).join("\n");
80
+ }
81
+ export function renderMessageList(records) {
82
+ return renderTable({
83
+ columns: [
84
+ {
85
+ header: "MESSAGE",
86
+ accessor: (record) => record.sessionId,
87
+ },
88
+ {
89
+ header: "PROMPT",
90
+ accessor: (record) => truncatePreview(record.prompt, MESSAGE_PROMPT_PREVIEW_LENGTH),
91
+ },
92
+ {
93
+ header: "STATUS",
94
+ accessor: (record) => record.status.toUpperCase(),
95
+ },
96
+ {
97
+ header: "CREATED",
98
+ accessor: (record) => formatRunTimestamp(record.createdAt),
99
+ },
100
+ ],
101
+ rows: records,
102
+ }).join("\n");
103
+ }
104
+ export function renderVerifyList(records) {
105
+ return renderTable({
106
+ columns: [
107
+ {
108
+ header: "VERIFY",
109
+ accessor: (record) => record.sessionId,
110
+ },
111
+ {
112
+ header: "TARGET",
113
+ accessor: (record) => `${record.target.kind}:${record.target.sessionId}`,
114
+ },
115
+ {
116
+ header: "STATUS",
117
+ accessor: (record) => record.status.toUpperCase(),
118
+ },
119
+ {
120
+ header: "CREATED",
121
+ accessor: (record) => formatRunTimestamp(record.createdAt),
122
+ },
123
+ ],
124
+ rows: records,
125
+ }).join("\n");
126
+ }
127
+ export function renderListTableTranscript(tableOutput) {
128
+ if (tableOutput.trim().length === 0) {
129
+ return "";
130
+ }
34
131
  const sections = [];
35
- if (tableOutput.trim().length > 0) {
36
- sections.push(tableOutput.split("\n"));
132
+ sections.push(tableOutput.split("\n"));
133
+ return renderTranscript({ sections });
134
+ }
135
+ function truncatePreview(value, maxLength) {
136
+ if (!value) {
137
+ return DASH;
37
138
  }
38
- return renderTranscript({
39
- sections,
40
- hint: {
41
- message: "To review a run in more detail:\n voratiq review --run <run-id>",
42
- },
43
- });
139
+ const normalized = value.replace(/\s+/g, " ").trim();
140
+ if (normalized.length === 0) {
141
+ return DASH;
142
+ }
143
+ if (normalized.length <= maxLength) {
144
+ return normalized;
145
+ }
146
+ if (maxLength <= 3) {
147
+ return normalized.slice(0, maxLength);
148
+ }
149
+ return `${normalized.slice(0, maxLength - 3).trimEnd()}...`;
44
150
  }
@@ -0,0 +1,72 @@
1
+ import type { ExtractedTokenUsage } from "../../domain/run/model/types.js";
2
+ import type { TokenUsageResult } from "../../workspace/chat/token-usage-result.js";
3
+ type CliWriter = Pick<NodeJS.WriteStream, "write"> & {
4
+ isTTY?: boolean;
5
+ columns?: number;
6
+ };
7
+ export interface MessageProgressContext {
8
+ messageId: string;
9
+ createdAt: string;
10
+ startedAt?: string;
11
+ completedAt?: string;
12
+ workspacePath: string;
13
+ status: "queued" | "running" | "succeeded" | "failed" | "aborted";
14
+ }
15
+ export interface MessageProgressRecipientRecord {
16
+ agentId: string;
17
+ status: "queued" | "running" | "succeeded" | "failed" | "aborted";
18
+ startedAt?: string;
19
+ completedAt?: string;
20
+ outputPath?: string;
21
+ tokenUsage?: ExtractedTokenUsage;
22
+ tokenUsageResult?: TokenUsageResult;
23
+ error?: string | null;
24
+ }
25
+ export interface MessageProgressRenderer {
26
+ begin(context?: MessageProgressContext): void;
27
+ update(record: MessageProgressRecipientRecord): void;
28
+ complete(status?: MessageProgressContext["status"], lifecycle?: {
29
+ startedAt?: string;
30
+ completedAt?: string;
31
+ }): void;
32
+ }
33
+ export interface MessageTranscriptRecipientBlock {
34
+ agentId: string;
35
+ status: "queued" | "running" | "succeeded" | "failed" | "aborted";
36
+ duration: string;
37
+ outputPath?: string;
38
+ previewLines?: readonly string[];
39
+ errorLine?: string;
40
+ }
41
+ export interface MessageTranscriptOptions {
42
+ messageId: string;
43
+ createdAt: string;
44
+ elapsed: string;
45
+ workspacePath: string;
46
+ status: "queued" | "running" | "succeeded" | "failed" | "aborted";
47
+ recipients: readonly MessageTranscriptRecipientBlock[];
48
+ isTty?: boolean;
49
+ includeSummarySection?: boolean;
50
+ }
51
+ interface MessageRendererOptions {
52
+ stdout?: CliWriter;
53
+ stderr?: CliWriter;
54
+ now?: () => number;
55
+ suppressLeadingBlankLine?: boolean;
56
+ suppressTrailingBlankLine?: boolean;
57
+ }
58
+ export declare function createMessageRenderer(options?: MessageRendererOptions): MessageProgressRenderer;
59
+ export declare function renderMessageTranscript(options: MessageTranscriptOptions): string;
60
+ export declare function formatMessageElapsed(input: {
61
+ status: MessageProgressContext["status"];
62
+ startedAt?: string;
63
+ completedAt?: string;
64
+ now?: number;
65
+ }): string | undefined;
66
+ export declare function formatMessageRecipientDuration(input: {
67
+ status: MessageProgressRecipientRecord["status"];
68
+ startedAt?: string;
69
+ completedAt?: string;
70
+ now?: number;
71
+ }): string | undefined;
72
+ export {};