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,22 +1,30 @@
1
+ import { getAgentDefaultId, getSupportedAgentDefaults, } from "../../configs/agents/defaults.js";
1
2
  import { readAgentsConfig } from "../../configs/agents/loader.js";
2
- import { renderAgentPromptPreface } from "../../render/transcripts/init.js";
3
3
  import { detectBinary } from "../../utils/binaries.js";
4
4
  import { isDefaultYamlTemplate, loadYamlConfig, persistYamlConfig, } from "../../utils/yaml.js";
5
5
  import { formatWorkspacePath, resolveWorkspacePath, VORATIQ_AGENTS_FILE, } from "../../workspace/structure.js";
6
- import { buildDefaultAgentsTemplate, DEFAULT_AGENT_DEFAULTS, sanitizeAgentIdFromModel, serializeAgentsConfigEntries, } from "../../workspace/templates.js";
6
+ import { buildDefaultAgentsTemplate, serializeAgentsConfigEntries, } from "../../workspace/templates.js";
7
7
  export const AGENTS_CONFIG_DISPLAY_PATH = formatWorkspacePath(VORATIQ_AGENTS_FILE);
8
- export async function configureAgents(root, options) {
8
+ export async function configureAgents(root, preset, options) {
9
+ void preset;
10
+ void options;
9
11
  const filePath = resolveWorkspacePath(root, VORATIQ_AGENTS_FILE);
10
12
  const defaultTemplate = buildDefaultAgentsTemplate();
11
13
  const loadResult = await loadYamlConfig(filePath, readAgentsConfig);
12
14
  const defaultStatus = isDefaultYamlTemplate(loadResult.snapshot, defaultTemplate);
13
15
  const configCreated = !loadResult.snapshot.exists;
14
- const canInteract = canConfirm(options);
15
- if (!canInteract || (!defaultStatus && loadResult.snapshot.exists)) {
16
- return buildAgentSummary(loadResult.config.agents, computeZeroDetections(loadResult.config.agents), configCreated, false);
16
+ const lifecycle = scanWorkspaceForAgentDefaults(loadResult.config, defaultStatus, getSupportedAgentDefaults());
17
+ const detectedProviders = collectDetectedProviders(lifecycle.templates);
18
+ if (!defaultStatus && loadResult.snapshot.exists) {
19
+ return buildAgentSummary({
20
+ entries: loadResult.config.agents,
21
+ zeroDetections: detectedProviders.length === 0,
22
+ detectedProviders,
23
+ providerEnablementPrompted: false,
24
+ configCreated,
25
+ configUpdated: false,
26
+ });
17
27
  }
18
- const lifecycle = scanWorkspaceForAgentDefaults(loadResult.config, defaultStatus);
19
- const configChanged = await applyAgentOperatorChoices(lifecycle, options);
20
28
  const snapshotResult = finalizeAgentConfigSnapshot(lifecycle);
21
29
  const updated = await persistYamlConfig({
22
30
  filePath,
@@ -25,32 +33,44 @@ export async function configureAgents(root, options) {
25
33
  defaultTemplate,
26
34
  isDefaultTemplate: defaultStatus,
27
35
  });
28
- return buildAgentSummary(snapshotResult.entries, lifecycle.zeroDetections, configCreated, updated || configChanged);
36
+ return buildAgentSummary({
37
+ entries: snapshotResult.entries,
38
+ zeroDetections: lifecycle.zeroDetections,
39
+ detectedProviders,
40
+ providerEnablementPrompted: false,
41
+ configCreated,
42
+ configUpdated: updated,
43
+ });
29
44
  }
30
- function scanWorkspaceForAgentDefaults(config, isDefaultTemplate) {
45
+ function scanWorkspaceForAgentDefaults(config, isDefaultTemplate, templates) {
31
46
  const templatesById = new Map();
32
47
  for (const entry of config.agents) {
33
48
  templatesById.set(entry.id, entry);
34
49
  }
35
50
  const templateStates = [];
36
51
  const templateIds = new Set();
37
- const templateEntries = DEFAULT_AGENT_DEFAULTS.map((template) => ({
52
+ const detectedBinaryByProvider = new Map();
53
+ const templateEntries = templates.map((template) => ({
38
54
  template,
39
- defaultId: sanitizeAgentIdFromModel(template.model),
55
+ templateId: getAgentDefaultId(template),
40
56
  }));
41
- for (const { template, defaultId } of templateEntries) {
42
- templateIds.add(defaultId);
57
+ for (const { template, templateId } of templateEntries) {
58
+ templateIds.add(templateId);
43
59
  const existing = isDefaultTemplate
44
60
  ? undefined
45
- : templatesById.get(defaultId);
46
- const detectedBinary = detectBinary(template.provider);
47
- const baseEntry = existing ?? buildEntryFromTemplate(template, defaultId);
61
+ : templatesById.get(templateId);
62
+ let detectedBinary = detectedBinaryByProvider.get(template.provider);
63
+ if (!detectedBinaryByProvider.has(template.provider)) {
64
+ detectedBinary = detectBinary(template.provider);
65
+ detectedBinaryByProvider.set(template.provider, detectedBinary);
66
+ }
67
+ const baseEntry = existing ?? buildEntryFromTemplate(template, templateId);
48
68
  const entry = cloneAgentEntry(baseEntry);
49
- entry.binary = detectedBinary ?? entry.binary ?? "";
69
+ entry.binary = detectedBinary ?? "";
50
70
  entry.enabled = entry.enabled !== false;
51
71
  templateStates.push({
72
+ templateId,
52
73
  template,
53
- existing,
54
74
  entry,
55
75
  detectedBinary,
56
76
  });
@@ -61,20 +81,23 @@ function scanWorkspaceForAgentDefaults(config, isDefaultTemplate) {
61
81
  userDefined.push(cloneAgentEntry(entry));
62
82
  }
63
83
  }
64
- const zeroDetections = templateStates.every((state) => !hasBinary(state.entry.binary));
84
+ const zeroDetections = templateStates.every((state) => !hasBinary(state.detectedBinary));
65
85
  return {
66
86
  templates: templateStates,
67
87
  userDefined,
68
88
  zeroDetections,
69
89
  };
70
90
  }
71
- function buildEntryFromTemplate(template, defaultId) {
91
+ function buildEntryFromTemplate(template, templateId) {
72
92
  return {
73
- id: defaultId,
93
+ id: templateId,
74
94
  provider: template.provider,
75
95
  model: template.model,
76
- enabled: false,
96
+ enabled: true,
77
97
  binary: "",
98
+ extraArgs: template.extraArgs && template.extraArgs.length > 0
99
+ ? [...template.extraArgs]
100
+ : undefined,
78
101
  };
79
102
  }
80
103
  function cloneAgentEntry(entry) {
@@ -89,43 +112,25 @@ function cloneAgentEntry(entry) {
89
112
  : undefined,
90
113
  };
91
114
  }
92
- async function applyAgentOperatorChoices(state, options) {
93
- const confirm = options.confirm;
94
- if (!confirm) {
95
- state.zeroDetections = state.templates.every((templateState) => !hasBinary(templateState.entry.binary));
96
- return false;
97
- }
98
- let firstPrompt = true;
99
- let changed = false;
100
- for (const templateState of state.templates) {
101
- const hasDetectedBinary = hasBinary(templateState.entry.binary);
102
- if (!hasDetectedBinary) {
103
- templateState.entry.enabled = false;
115
+ function collectDetectedProviders(templates) {
116
+ const rows = [];
117
+ const seenProviders = new Set();
118
+ for (const templateState of templates) {
119
+ const binary = templateState.detectedBinary?.trim();
120
+ if (!binary) {
104
121
  continue;
105
122
  }
106
- const initialEnabled = templateState.entry.enabled !== false;
107
- const defaultValue = templateState.existing !== undefined
108
- ? templateState.existing.enabled !== false
109
- : true;
110
- const prefaceLines = renderAgentPromptPreface({
111
- agentId: templateState.entry.id,
112
- binaryPath: templateState.entry.binary ?? "",
113
- detected: hasDetectedBinary,
114
- firstPrompt,
115
- });
116
- const shouldEnable = await confirm({
117
- message: "Enable?",
118
- defaultValue,
119
- prefaceLines,
120
- });
121
- if (shouldEnable !== initialEnabled) {
122
- changed = true;
123
+ const provider = templateState.template.provider;
124
+ if (seenProviders.has(provider)) {
125
+ continue;
123
126
  }
124
- templateState.entry.enabled = shouldEnable;
125
- firstPrompt = false;
127
+ seenProviders.add(provider);
128
+ rows.push({
129
+ provider,
130
+ binary,
131
+ });
126
132
  }
127
- state.zeroDetections = state.templates.every((templateState) => !hasBinary(templateState.entry.binary));
128
- return changed;
133
+ return rows;
129
134
  }
130
135
  function buildFinalAgentEntries(state) {
131
136
  const finalEntries = state.templates.map((templateState) => templateState.entry);
@@ -136,14 +141,18 @@ function finalizeAgentConfigSnapshot(state) {
136
141
  const serialized = serializeAgentsConfigEntries(entries);
137
142
  return { entries, serialized };
138
143
  }
139
- function buildAgentSummary(entries, zeroDetections, configCreated, configUpdated) {
144
+ function buildAgentSummary(options) {
145
+ const { entries, zeroDetections, detectedProviders, providerEnablementPrompted, configCreated, configUpdated, } = options;
140
146
  const enabledAgents = entries
141
147
  .filter((entry) => entry.enabled !== false)
142
148
  .map((entry) => entry.id);
143
149
  return {
144
150
  configPath: AGENTS_CONFIG_DISPLAY_PATH,
145
151
  enabledAgents,
152
+ agentCount: entries.length,
146
153
  zeroDetections,
154
+ detectedProviders: [...detectedProviders],
155
+ providerEnablementPrompted,
147
156
  configCreated,
148
157
  configUpdated,
149
158
  };
@@ -151,9 +160,3 @@ function buildAgentSummary(entries, zeroDetections, configCreated, configUpdated
151
160
  function hasBinary(binary) {
152
161
  return Boolean(binary && binary.trim().length > 0);
153
162
  }
154
- function computeZeroDetections(entries) {
155
- return !entries.some((entry) => hasBinary(entry.binary));
156
- }
157
- function canConfirm(options) {
158
- return Boolean(options.confirm);
159
- }
@@ -1,34 +1,53 @@
1
- import { writeCommandPreface } from "../../cli/output.js";
2
- import { buildInitializationPrompt } from "../../render/transcripts/init.js";
1
+ import { getAgentDefaultId, getAgentDefaultsForPreset, getSupportedAgentDefaults, } from "../../configs/agents/defaults.js";
2
+ import { readAgentsConfig } from "../../configs/agents/loader.js";
3
+ import { buildDefaultOrchestrationTemplate } from "../../configs/orchestration/bootstrap.js";
4
+ import { renderPresetPromptPreface } from "../../render/transcripts/init.js";
5
+ import { normalizeConfigText, readConfigSnapshot, writeConfigIfChanged, } from "../../utils/yaml.js";
3
6
  import { createWorkspace } from "../../workspace/setup.js";
4
- import { formatWorkspacePath, VORATIQ_SANDBOX_FILE, } from "../../workspace/structure.js";
7
+ import { formatWorkspacePath, resolveWorkspacePath, VORATIQ_AGENTS_FILE, VORATIQ_ORCHESTRATION_FILE, VORATIQ_SANDBOX_FILE, } from "../../workspace/structure.js";
8
+ import { listAgentPresetTemplates, serializeAgentsConfigEntries, } from "../../workspace/templates.js";
5
9
  import { configureAgents } from "./agents.js";
6
10
  import { configureEnvironment } from "./environment.js";
7
- import { configureEvals } from "./evals.js";
8
11
  export async function executeInitCommand(input) {
9
- const { root, interactive, confirm, prompt } = input;
12
+ const { root, preset, presetProvided, onPresetResolved, assumeYes, interactive, confirm, prompt, } = input;
13
+ const agentsConfigPath = resolveWorkspacePath(root, VORATIQ_AGENTS_FILE);
14
+ const agentsSnapshotBeforeInit = await readConfigSnapshot(agentsConfigPath);
15
+ const agentsConfigMissing = !agentsSnapshotBeforeInit.exists;
16
+ const orchestrationConfigPath = resolveWorkspacePath(root, VORATIQ_ORCHESTRATION_FILE);
17
+ const orchestrationSnapshotBeforeInit = await readConfigSnapshot(orchestrationConfigPath);
18
+ const orchestrationConfigMissing = !orchestrationSnapshotBeforeInit.exists;
19
+ const resolvedPreset = await resolveAgentPreset({
20
+ preset,
21
+ presetProvided,
22
+ interactive,
23
+ prompt,
24
+ agentsConfigMissing,
25
+ });
26
+ onPresetResolved?.(resolvedPreset);
10
27
  const workspaceResult = await createWorkspace(root);
11
- const initializationPrompt = buildInitializationPrompt();
12
- writeCommandPreface(initializationPrompt);
13
- const agentSummary = await configureAgents(root, {
28
+ await applyAgentPresetTemplate(root, resolvedPreset, {
29
+ presetProvided: Boolean(presetProvided),
30
+ agentsConfigMissing,
31
+ });
32
+ const agentSummary = await configureAgents(root, resolvedPreset, {
14
33
  interactive,
34
+ assumeYes,
15
35
  confirm,
16
36
  });
37
+ const orchestrationSummary = await reconcileOrchestrationConfig(root, {
38
+ orchestrationConfigMissing,
39
+ preset: resolvedPreset,
40
+ });
17
41
  const environmentSummary = await configureEnvironment(root, {
18
- interactive,
19
- confirm,
20
- prompt,
42
+ interactive: false,
21
43
  });
22
- const evalSummary = await configureEvals(root, {
23
- interactive,
24
- confirm,
25
- }, environmentSummary.config);
26
44
  const sandboxSummary = buildSandboxSummary(workspaceResult);
27
45
  return {
46
+ preset: resolvedPreset,
28
47
  workspaceResult,
29
48
  agentSummary,
49
+ orchestrationSummary,
30
50
  environmentSummary,
31
- evalSummary,
32
51
  sandboxSummary,
33
52
  };
34
53
  }
@@ -38,3 +57,268 @@ function buildSandboxSummary(workspaceResult) {
38
57
  const configCreated = normalizedCreated.includes(configPath);
39
58
  return { configPath, configCreated };
40
59
  }
60
+ async function reconcileOrchestrationConfig(root, options) {
61
+ const configPath = formatWorkspacePath(VORATIQ_ORCHESTRATION_FILE);
62
+ const { orchestrationConfigMissing, preset } = options;
63
+ if (!orchestrationConfigMissing) {
64
+ return { configPath, configCreated: false };
65
+ }
66
+ const agentsConfigPath = resolveWorkspacePath(root, VORATIQ_AGENTS_FILE);
67
+ const agentsSnapshot = await readConfigSnapshot(agentsConfigPath);
68
+ const agentsConfig = readAgentsConfig(agentsSnapshot.content);
69
+ const nextContent = buildDefaultOrchestrationTemplate(agentsConfig, preset);
70
+ const orchestrationConfigPath = resolveWorkspacePath(root, VORATIQ_ORCHESTRATION_FILE);
71
+ const orchestrationSnapshot = await readConfigSnapshot(orchestrationConfigPath);
72
+ const baseline = orchestrationSnapshot.exists
73
+ ? orchestrationSnapshot.normalized
74
+ : "__missing__";
75
+ await writeConfigIfChanged(orchestrationConfigPath, nextContent, baseline);
76
+ return { configPath, configCreated: true };
77
+ }
78
+ async function applyAgentPresetTemplate(root, preset, options) {
79
+ const { presetProvided, agentsConfigMissing } = options;
80
+ // Only switch managed presets when the operator explicitly requests it.
81
+ // The exception is the first run where the config is missing.
82
+ if (!agentsConfigMissing && !presetProvided) {
83
+ return;
84
+ }
85
+ const filePath = resolveWorkspacePath(root, VORATIQ_AGENTS_FILE);
86
+ const snapshot = await readConfigSnapshot(filePath);
87
+ const knownTemplates = listAgentPresetTemplates();
88
+ const knownNormalized = new Set(knownTemplates.map((descriptor) => normalizeConfigText(descriptor.template)));
89
+ const selected = knownTemplates.find((descriptor) => descriptor.preset === preset);
90
+ if (!selected) {
91
+ return;
92
+ }
93
+ const shouldConsiderApplying = !snapshot.exists || knownNormalized.has(snapshot.normalized);
94
+ if (shouldConsiderApplying) {
95
+ const baseline = snapshot.exists ? snapshot.normalized : "__missing__";
96
+ await writeConfigIfChanged(filePath, selected.template, baseline);
97
+ return;
98
+ }
99
+ if (!presetProvided) {
100
+ return;
101
+ }
102
+ // Fall back to semantic "managed" detection: allow switching between presets
103
+ // without requiring a byte-for-byte match on the template (binary / enabled
104
+ // often diverge after initialization).
105
+ const config = tryReadAgentsConfig(snapshot.content);
106
+ if (!config) {
107
+ return;
108
+ }
109
+ const managedCatalogEntries = retargetManagedCatalogEntries(config);
110
+ if (managedCatalogEntries) {
111
+ const serialized = serializeAgentsConfigEntries(managedCatalogEntries);
112
+ await writeConfigIfChanged(filePath, serialized, snapshot.normalized);
113
+ return;
114
+ }
115
+ const managedPreset = detectManagedAgentsPreset(config);
116
+ if (!managedPreset) {
117
+ return;
118
+ }
119
+ if (managedPreset === preset) {
120
+ return;
121
+ }
122
+ const updatedEntries = retargetManagedAgentEntries(config, managedPreset);
123
+ if (!updatedEntries) {
124
+ return;
125
+ }
126
+ const serialized = serializeAgentsConfigEntries(updatedEntries);
127
+ await writeConfigIfChanged(filePath, serialized, snapshot.normalized);
128
+ }
129
+ async function resolveAgentPreset(options) {
130
+ const { preset, presetProvided = false, interactive, prompt, agentsConfigMissing, } = options;
131
+ if (presetProvided) {
132
+ return preset;
133
+ }
134
+ if (!interactive || !prompt) {
135
+ return preset;
136
+ }
137
+ if (!agentsConfigMissing) {
138
+ return preset;
139
+ }
140
+ return promptForPresetSelection(prompt);
141
+ }
142
+ async function promptForPresetSelection(prompt) {
143
+ const choices = {
144
+ "1": "pro",
145
+ "2": "lite",
146
+ "3": "manual",
147
+ };
148
+ let firstPrompt = true;
149
+ for (;;) {
150
+ const response = await prompt({
151
+ message: "[1]",
152
+ prefaceLines: renderPresetPromptPreface(firstPrompt),
153
+ });
154
+ const trimmed = response.trim();
155
+ const normalized = trimmed.length === 0 ? "1" : trimmed;
156
+ const selected = choices[normalized];
157
+ if (selected) {
158
+ return selected;
159
+ }
160
+ process.stdout.write("Please choose 1, 2, or 3.\n");
161
+ firstPrompt = false;
162
+ }
163
+ }
164
+ function tryReadAgentsConfig(content) {
165
+ try {
166
+ return readAgentsConfig(content);
167
+ }
168
+ catch {
169
+ return undefined;
170
+ }
171
+ }
172
+ function buildCatalogRoster() {
173
+ return getSupportedAgentDefaults().map((agentDefault) => ({
174
+ id: getAgentDefaultId(agentDefault),
175
+ provider: agentDefault.provider,
176
+ model: agentDefault.model,
177
+ extraArgs: agentDefault.extraArgs && agentDefault.extraArgs.length > 0
178
+ ? [...agentDefault.extraArgs]
179
+ : undefined,
180
+ }));
181
+ }
182
+ function buildPresetRoster(preset) {
183
+ if (preset === "manual") {
184
+ return [];
185
+ }
186
+ return getAgentDefaultsForPreset(preset).map((agentDefault) => ({
187
+ id: getAgentDefaultId(agentDefault),
188
+ provider: agentDefault.provider,
189
+ model: agentDefault.model,
190
+ extraArgs: agentDefault.extraArgs && agentDefault.extraArgs.length > 0
191
+ ? [...agentDefault.extraArgs]
192
+ : undefined,
193
+ }));
194
+ }
195
+ function detectManagedAgentsPreset(config) {
196
+ const catalogSignatures = new Map();
197
+ for (const signature of buildCatalogRoster()) {
198
+ catalogSignatures.set(signature.id, signature);
199
+ }
200
+ const entriesById = new Map();
201
+ for (const entry of config.agents) {
202
+ if (entriesById.has(entry.id)) {
203
+ return undefined;
204
+ }
205
+ const catalogSignature = catalogSignatures.get(entry.id);
206
+ if (catalogSignature &&
207
+ (entry.provider !== catalogSignature.provider ||
208
+ entry.model !== catalogSignature.model)) {
209
+ return undefined;
210
+ }
211
+ entriesById.set(entry.id, entry);
212
+ }
213
+ const candidates = ["pro", "lite"];
214
+ for (const preset of candidates) {
215
+ const roster = buildPresetRoster(preset);
216
+ if (roster.length === 0) {
217
+ continue;
218
+ }
219
+ const rosterIds = new Set(roster.map((signature) => signature.id));
220
+ const hasCatalogEntriesOutsideRoster = config.agents.some((entry) => {
221
+ if (!catalogSignatures.has(entry.id)) {
222
+ return false;
223
+ }
224
+ return !rosterIds.has(entry.id);
225
+ });
226
+ if (hasCatalogEntriesOutsideRoster) {
227
+ continue;
228
+ }
229
+ let matches = true;
230
+ for (const signature of roster) {
231
+ const existing = entriesById.get(signature.id);
232
+ if (!existing ||
233
+ existing.provider !== signature.provider ||
234
+ existing.model !== signature.model) {
235
+ matches = false;
236
+ break;
237
+ }
238
+ }
239
+ if (matches) {
240
+ return preset;
241
+ }
242
+ }
243
+ return undefined;
244
+ }
245
+ function retargetManagedAgentEntries(config, fromPreset) {
246
+ const fromRoster = buildPresetRoster(fromPreset);
247
+ const fromIds = new Set(fromRoster.map((entry) => entry.id));
248
+ const priorManagedAgents = config.agents.filter((entry) => fromIds.has(entry.id));
249
+ const priorByProvider = new Map();
250
+ for (const entry of priorManagedAgents) {
251
+ if (!priorByProvider.has(entry.provider)) {
252
+ priorByProvider.set(entry.provider, entry);
253
+ }
254
+ }
255
+ const priorById = new Map(priorManagedAgents.map((entry) => [entry.id, entry]));
256
+ const userDefinedAgents = config.agents.filter((entry) => !fromIds.has(entry.id));
257
+ const targetRoster = buildCatalogRoster();
258
+ const targetIds = new Set(targetRoster.map((entry) => entry.id));
259
+ // Avoid overwriting agents that were user-defined under the previous preset.
260
+ for (const entry of userDefinedAgents) {
261
+ if (targetIds.has(entry.id)) {
262
+ return undefined;
263
+ }
264
+ }
265
+ const nextManagedAgents = targetRoster.map((signature) => {
266
+ const priorByIdentity = priorById.get(signature.id);
267
+ const prior = priorByProvider.get(signature.provider);
268
+ return {
269
+ id: signature.id,
270
+ provider: signature.provider,
271
+ model: signature.model,
272
+ enabled: priorByIdentity !== undefined
273
+ ? priorByIdentity.enabled !== false
274
+ : prior?.enabled !== false,
275
+ binary: prior?.binary ?? "",
276
+ extraArgs: prior?.id === signature.id
277
+ ? prior.extraArgs && prior.extraArgs.length > 0
278
+ ? [...prior.extraArgs]
279
+ : undefined
280
+ : signature.extraArgs && signature.extraArgs.length > 0
281
+ ? [...signature.extraArgs]
282
+ : undefined,
283
+ };
284
+ });
285
+ return [...nextManagedAgents, ...userDefinedAgents];
286
+ }
287
+ function retargetManagedCatalogEntries(config) {
288
+ const catalogRoster = buildCatalogRoster();
289
+ const catalogById = new Map(catalogRoster.map((signature) => [signature.id, signature]));
290
+ const catalogIds = new Set(catalogById.keys());
291
+ const entriesById = new Map();
292
+ for (const entry of config.agents) {
293
+ if (entriesById.has(entry.id)) {
294
+ return undefined;
295
+ }
296
+ entriesById.set(entry.id, entry);
297
+ }
298
+ for (const signature of catalogRoster) {
299
+ const existing = entriesById.get(signature.id);
300
+ if (!existing ||
301
+ existing.provider !== signature.provider ||
302
+ existing.model !== signature.model) {
303
+ return undefined;
304
+ }
305
+ }
306
+ const managedEntries = catalogRoster.map((signature) => {
307
+ const existing = entriesById.get(signature.id);
308
+ const binary = existing?.binary ?? "";
309
+ return {
310
+ id: signature.id,
311
+ provider: signature.provider,
312
+ model: signature.model,
313
+ enabled: existing?.enabled === false ? false : true,
314
+ binary,
315
+ extraArgs: existing?.extraArgs && existing.extraArgs.length > 0
316
+ ? [...existing.extraArgs]
317
+ : signature.extraArgs && signature.extraArgs.length > 0
318
+ ? [...signature.extraArgs]
319
+ : undefined,
320
+ };
321
+ });
322
+ const userDefinedEntries = config.agents.filter((entry) => !catalogIds.has(entry.id));
323
+ return [...managedEntries, ...userDefinedEntries];
324
+ }
@@ -1,32 +1,38 @@
1
1
  import type { EnvironmentConfig } from "../../configs/environment/types.js";
2
- import type { EvalSlug } from "../../configs/evals/types.js";
3
2
  import type { ConfirmationOptions, PromptOptions } from "../../render/interactions/confirmation.js";
3
+ import type { AgentPreset } from "../../workspace/templates.js";
4
4
  import type { CreateWorkspaceResult } from "../../workspace/types.js";
5
5
  export interface InitCommandInput {
6
6
  root: string;
7
+ preset: AgentPreset;
8
+ presetProvided?: boolean;
9
+ onPresetResolved?: (preset: AgentPreset) => void;
10
+ assumeYes?: boolean;
7
11
  interactive: boolean;
8
12
  confirm?: InitConfirmationHandler;
9
13
  prompt?: InitPromptHandler;
10
14
  }
11
15
  export interface InitCommandResult {
16
+ preset: AgentPreset;
12
17
  workspaceResult: CreateWorkspaceResult;
13
18
  agentSummary: AgentInitSummary;
14
- evalSummary: EvalInitSummary;
19
+ orchestrationSummary: OrchestrationInitSummary;
15
20
  environmentSummary: EnvironmentInitSummary;
16
21
  sandboxSummary: SandboxInitSummary;
17
22
  }
18
23
  export interface AgentInitSummary {
19
24
  configPath: string;
20
25
  enabledAgents: string[];
26
+ agentCount: number;
21
27
  zeroDetections: boolean;
28
+ detectedProviders: DetectedProviderSummary[];
29
+ providerEnablementPrompted: boolean;
22
30
  configCreated: boolean;
23
31
  configUpdated: boolean;
24
32
  }
25
- export interface EvalInitSummary {
26
- configPath: string;
27
- configuredEvals: EvalSlug[];
28
- configCreated: boolean;
29
- configUpdated: boolean;
33
+ export interface DetectedProviderSummary {
34
+ provider: string;
35
+ binary: string;
30
36
  }
31
37
  export interface EnvironmentInitSummary {
32
38
  configPath: string;
@@ -39,10 +45,15 @@ export interface SandboxInitSummary {
39
45
  configPath: string;
40
46
  configCreated: boolean;
41
47
  }
48
+ export interface OrchestrationInitSummary {
49
+ configPath: string;
50
+ configCreated: boolean;
51
+ }
42
52
  export type InitConfirmationHandler = (options: ConfirmationOptions) => Promise<boolean>;
43
53
  export type InitPromptHandler = (options: PromptOptions) => Promise<string>;
44
54
  export interface InitConfigureOptions {
45
55
  interactive: boolean;
56
+ assumeYes?: boolean;
46
57
  confirm?: InitConfirmationHandler;
47
58
  prompt?: InitPromptHandler;
48
59
  }
@@ -0,0 +1,15 @@
1
+ import type { ChildProcess } from "node:child_process";
2
+ import type { TeardownController } from "../../competition/shared/teardown.js";
3
+ import type { InteractiveSessionRecord } from "../../domain/interactive/model/types.js";
4
+ interface ActiveInteractiveContext {
5
+ root: string;
6
+ sessionId: string;
7
+ process?: ChildProcess;
8
+ completion?: Promise<InteractiveSessionRecord>;
9
+ teardown?: TeardownController;
10
+ }
11
+ export declare function registerActiveInteractive(context: ActiveInteractiveContext): void;
12
+ export declare function clearActiveInteractive(sessionId: string): void;
13
+ export declare function terminateActiveInteractive(status: "failed" | "aborted", reason?: string): Promise<void>;
14
+ export declare function finalizeActiveInteractive(sessionId: string): Promise<void>;
15
+ export {};