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
@@ -0,0 +1,15 @@
1
+ import type { EnvironmentConfig } from "../../../configs/environment/types.js";
2
+ import type { VerificationConfig } from "../../../configs/verification/types.js";
3
+ import type { VerifyProgressRenderer } from "../../../render/transcripts/verify.js";
4
+ import type { VerificationRecordMutators } from "../model/mutators.js";
5
+ import type { VerificationRecord } from "../model/types.js";
6
+ import type { ResolvedVerificationTarget } from "./target.js";
7
+ export declare function executeAndPersistProgrammaticMethod(options: {
8
+ root: string;
9
+ verificationId: string;
10
+ resolvedTarget: ResolvedVerificationTarget;
11
+ verificationConfig: VerificationConfig;
12
+ environment: EnvironmentConfig;
13
+ mutators: VerificationRecordMutators;
14
+ renderer?: VerifyProgressRenderer;
15
+ }): Promise<VerificationRecord["methods"][number] | undefined>;
@@ -0,0 +1,352 @@
1
+ import { mkdir, mkdtemp, readFile, rm } from "node:fs/promises";
2
+ import { dirname, join, resolve } from "node:path";
3
+ import { runPreparedWithLimit } from "../../../competition/core.js";
4
+ import { emitStageProgressEvent } from "../../../render/transcripts/stage-progress.js";
5
+ import { toErrorMessage } from "../../../utils/errors.js";
6
+ import { pathExists } from "../../../utils/fs.js";
7
+ import { createDetachedWorktree, getGitStderr, removeWorktree, runGitCommand, } from "../../../utils/git.js";
8
+ import { buildAgentWorkspacePaths } from "../../../workspace/layout.js";
9
+ import { getVerificationProgrammaticResultPath, VORATIQ_VERIFICATION_DIR, } from "../../../workspace/structure.js";
10
+ import { executeProgrammaticChecks } from "../programmatic/runner.js";
11
+ import { writeVerificationArtifact } from "./artifacts.js";
12
+ const PROGRAMMATIC_CANDIDATE_MAX_PARALLEL = 2;
13
+ export async function executeAndPersistProgrammaticMethod(options) {
14
+ const { root, verificationId, resolvedTarget, verificationConfig, environment, mutators, renderer, } = options;
15
+ const methodPlan = resolveProgrammaticMethodPlan({
16
+ resolvedTarget,
17
+ verificationConfig,
18
+ });
19
+ if (methodPlan.kind === "none") {
20
+ return undefined;
21
+ }
22
+ const startedAt = new Date().toISOString();
23
+ const artifactPath = getVerificationProgrammaticResultPath(verificationId);
24
+ const methodScope = "runRecord" in resolvedTarget
25
+ ? { kind: "run" }
26
+ : { kind: "target" };
27
+ await mutators.recordMethodSnapshot({
28
+ method: "programmatic",
29
+ slug: "programmatic",
30
+ scope: methodScope,
31
+ status: "running",
32
+ startedAt,
33
+ });
34
+ emitStageProgressEvent(renderer, {
35
+ type: "stage.candidate",
36
+ stage: "verify",
37
+ candidate: {
38
+ methodKey: "programmatic",
39
+ verifierLabel: "programmatic",
40
+ status: "running",
41
+ startedAt,
42
+ artifactPath,
43
+ },
44
+ });
45
+ try {
46
+ if (methodPlan.kind === "run" && "runRecord" in resolvedTarget) {
47
+ const candidates = await runPreparedWithLimit({
48
+ prepared: resolvedTarget.target.candidateIds,
49
+ maxParallel: PROGRAMMATIC_CANDIDATE_MAX_PARALLEL,
50
+ executePrepared: async (candidateId) => await executeProgrammaticChecksForRunCandidate({
51
+ root,
52
+ verificationId,
53
+ artifactPath,
54
+ candidateId,
55
+ checks: methodPlan.checks,
56
+ runId: resolvedTarget.target.sessionId,
57
+ runRecord: resolvedTarget.runRecord,
58
+ baseRevisionSha: resolvedTarget.baseRevisionSha,
59
+ environment,
60
+ }),
61
+ });
62
+ await writeVerificationArtifact({
63
+ root,
64
+ artifactPath,
65
+ artifact: {
66
+ method: "programmatic",
67
+ generatedAt: new Date().toISOString(),
68
+ target: resolvedTarget.target,
69
+ scope: "run",
70
+ candidates,
71
+ },
72
+ });
73
+ const completedRef = {
74
+ method: "programmatic",
75
+ slug: "programmatic",
76
+ scope: methodScope,
77
+ status: "succeeded",
78
+ artifactPath,
79
+ startedAt,
80
+ completedAt: new Date().toISOString(),
81
+ };
82
+ await mutators.recordMethodSnapshot(completedRef);
83
+ emitStageProgressEvent(renderer, {
84
+ type: "stage.candidate",
85
+ stage: "verify",
86
+ candidate: {
87
+ methodKey: "programmatic",
88
+ verifierLabel: "programmatic",
89
+ status: "succeeded",
90
+ startedAt,
91
+ completedAt: completedRef.completedAt,
92
+ artifactPath,
93
+ },
94
+ });
95
+ return completedRef;
96
+ }
97
+ throw new Error(`Programmatic verification is only supported for run targets; \`${resolvedTarget.target.kind}\` targets must use rubric verification.`);
98
+ }
99
+ catch (error) {
100
+ const completedAt = new Date().toISOString();
101
+ const errorMessage = toErrorMessage(error);
102
+ await writeFailureProgrammaticArtifact({
103
+ root,
104
+ artifactPath,
105
+ resolvedTarget,
106
+ generatedAt: completedAt,
107
+ error: errorMessage,
108
+ });
109
+ const failedRef = {
110
+ method: "programmatic",
111
+ slug: "programmatic",
112
+ scope: methodScope,
113
+ status: "failed",
114
+ artifactPath,
115
+ startedAt,
116
+ completedAt,
117
+ error: errorMessage,
118
+ };
119
+ await mutators.recordMethodSnapshot(failedRef);
120
+ emitStageProgressEvent(renderer, {
121
+ type: "stage.candidate",
122
+ stage: "verify",
123
+ candidate: {
124
+ methodKey: "programmatic",
125
+ verifierLabel: "programmatic",
126
+ status: "failed",
127
+ startedAt,
128
+ completedAt,
129
+ artifactPath,
130
+ },
131
+ });
132
+ return failedRef;
133
+ }
134
+ }
135
+ async function executeProgrammaticChecksForRunCandidate(options) {
136
+ const { root, verificationId, artifactPath, candidateId, checks, runId, runRecord, baseRevisionSha, environment, } = options;
137
+ const paths = buildAgentWorkspacePaths({
138
+ root,
139
+ runId,
140
+ agentId: candidateId,
141
+ });
142
+ const runAgentRecord = runRecord.agents.find((agent) => agent.agentId === candidateId);
143
+ if (!runAgentRecord) {
144
+ throw new Error(`Run \`${runId}\` is missing candidate metadata for \`${candidateId}\`.`);
145
+ }
146
+ const workspace = await resolveProgrammaticCandidateWorkspace({
147
+ root,
148
+ verificationId,
149
+ candidateId,
150
+ paths,
151
+ runId,
152
+ baseRevisionSha,
153
+ diffCaptured: runAgentRecord.artifacts?.diffCaptured ?? false,
154
+ });
155
+ try {
156
+ const logsDirectory = resolve(root, dirname(artifactPath), candidateId);
157
+ const outcome = await executeProgrammaticChecks({
158
+ checks,
159
+ cwd: workspace.cwd,
160
+ root,
161
+ logsDirectory,
162
+ environment,
163
+ envDirectoryGuard: {
164
+ trustedAbsoluteRoots: workspace.trustedAbsoluteRoots,
165
+ includeHomeForPythonStack: true,
166
+ failOnDirectoryPreparationError: true,
167
+ },
168
+ });
169
+ return {
170
+ candidateId,
171
+ results: outcome.results,
172
+ };
173
+ }
174
+ finally {
175
+ await workspace.cleanup();
176
+ }
177
+ }
178
+ async function resolveProgrammaticCandidateWorkspace(options) {
179
+ const { root, verificationId, candidateId, paths, runId, baseRevisionSha, diffCaptured, } = options;
180
+ if (await pathExists(paths.workspacePath)) {
181
+ return {
182
+ cwd: paths.workspacePath,
183
+ trustedAbsoluteRoots: [
184
+ paths.workspacePath,
185
+ paths.agentRoot,
186
+ paths.sandboxHomePath,
187
+ ],
188
+ cleanup: async () => { },
189
+ };
190
+ }
191
+ const reconstructionRoot = resolve(root, ".voratiq", VORATIQ_VERIFICATION_DIR, "sessions", verificationId, "programmatic", "reconstructed");
192
+ await mkdir(reconstructionRoot, { recursive: true });
193
+ const candidateRoot = await mkdtemp(join(reconstructionRoot, `${candidateId}-`));
194
+ const reconstructedWorkspacePath = resolve(candidateRoot, "workspace");
195
+ let worktreeCreated = false;
196
+ try {
197
+ try {
198
+ await createDetachedWorktree({
199
+ root,
200
+ worktreePath: reconstructedWorkspacePath,
201
+ baseRevision: baseRevisionSha,
202
+ });
203
+ }
204
+ catch (error) {
205
+ throw new Error(`Failed to reconstruct temporary verification workspace for run \`${runId}\` candidate \`${candidateId}\` at base \`${baseRevisionSha}\`: ${toErrorMessage(error)}`);
206
+ }
207
+ worktreeCreated = true;
208
+ if (diffCaptured) {
209
+ const diffAbsolutePath = resolve(paths.artifactsPath, "diff.patch");
210
+ if (!(await pathExists(diffAbsolutePath))) {
211
+ throw new Error(`Run \`${runId}\` candidate \`${candidateId}\` is missing required durable diff artifact \`${diffAbsolutePath}\`.`);
212
+ }
213
+ const diffContent = await readFile(diffAbsolutePath, "utf8");
214
+ if (diffContent.trim().length > 0) {
215
+ await applyDurableCandidatePatch({
216
+ runId,
217
+ candidateId,
218
+ workspacePath: reconstructedWorkspacePath,
219
+ diffAbsolutePath,
220
+ });
221
+ }
222
+ }
223
+ }
224
+ catch (error) {
225
+ if (worktreeCreated) {
226
+ await removeWorktree({
227
+ root,
228
+ worktreePath: reconstructedWorkspacePath,
229
+ }).catch(() => { });
230
+ }
231
+ await rm(candidateRoot, { recursive: true, force: true }).catch(() => { });
232
+ throw error;
233
+ }
234
+ return {
235
+ cwd: reconstructedWorkspacePath,
236
+ trustedAbsoluteRoots: [
237
+ reconstructedWorkspacePath,
238
+ paths.agentRoot,
239
+ paths.sandboxHomePath,
240
+ ],
241
+ cleanup: async () => {
242
+ await removeWorktree({
243
+ root,
244
+ worktreePath: reconstructedWorkspacePath,
245
+ }).catch(() => { });
246
+ await rm(candidateRoot, { recursive: true, force: true }).catch(() => { });
247
+ },
248
+ };
249
+ }
250
+ async function applyDurableCandidatePatch(options) {
251
+ const { runId, candidateId, workspacePath, diffAbsolutePath } = options;
252
+ try {
253
+ await runGitCommand(["apply", "--whitespace=nowarn", "--", diffAbsolutePath], {
254
+ cwd: workspacePath,
255
+ });
256
+ }
257
+ catch (error) {
258
+ const detail = getGitStderr(error) ?? toErrorMessage(error);
259
+ throw new Error(`Failed to apply retained diff for run \`${runId}\` candidate \`${candidateId}\`: ${detail}`);
260
+ }
261
+ }
262
+ function resolveProgrammaticMethodPlan(options) {
263
+ const { resolvedTarget, verificationConfig } = options;
264
+ if (resolvedTarget.target.kind === "run") {
265
+ const checks = verificationConfig.run.programmatic.reduce((plan, entry) => {
266
+ const command = entry.command?.trim();
267
+ if (command) {
268
+ plan.push({ slug: entry.slug, command });
269
+ }
270
+ return plan;
271
+ }, []);
272
+ if (checks.length === 0) {
273
+ return { kind: "none" };
274
+ }
275
+ return {
276
+ kind: "run",
277
+ checks,
278
+ };
279
+ }
280
+ if (resolvedTarget.target.kind === "message") {
281
+ return { kind: "none" };
282
+ }
283
+ const configuredChecks = extractUnsupportedProgrammaticChecks(resolvedTarget.target.kind === "spec"
284
+ ? verificationConfig.spec
285
+ : verificationConfig.reduce);
286
+ if (configuredChecks.length === 0) {
287
+ return { kind: "none" };
288
+ }
289
+ const checks = configuredChecks.reduce((plan, entry) => {
290
+ const command = entry.command?.trim();
291
+ if (command) {
292
+ plan.push({ slug: entry.slug, command });
293
+ }
294
+ return plan;
295
+ }, []);
296
+ if (checks.length === 0) {
297
+ return { kind: "none" };
298
+ }
299
+ return {
300
+ kind: "unsupported",
301
+ targetKind: resolvedTarget.target.kind,
302
+ checks,
303
+ };
304
+ }
305
+ function extractUnsupportedProgrammaticChecks(stageConfig) {
306
+ const rawEntries = Reflect.get(stageConfig, "programmatic");
307
+ if (!Array.isArray(rawEntries)) {
308
+ return [];
309
+ }
310
+ return rawEntries.flatMap((entry) => {
311
+ if (!entry || typeof entry !== "object") {
312
+ return [];
313
+ }
314
+ const slugValue = Reflect.get(entry, "slug");
315
+ const commandValue = Reflect.get(entry, "command");
316
+ const slug = typeof slugValue === "string" ? slugValue : undefined;
317
+ const command = typeof commandValue === "string" ? commandValue : undefined;
318
+ return slug ? [{ slug, ...(command ? { command } : {}) }] : [];
319
+ });
320
+ }
321
+ async function writeFailureProgrammaticArtifact(options) {
322
+ const { root, artifactPath, resolvedTarget, generatedAt, error } = options;
323
+ if ("runRecord" in resolvedTarget) {
324
+ await writeVerificationArtifact({
325
+ root,
326
+ artifactPath,
327
+ artifact: {
328
+ method: "programmatic",
329
+ generatedAt,
330
+ status: "failed",
331
+ error,
332
+ target: resolvedTarget.target,
333
+ scope: "run",
334
+ candidates: [],
335
+ },
336
+ });
337
+ return;
338
+ }
339
+ await writeVerificationArtifact({
340
+ root,
341
+ artifactPath,
342
+ artifact: {
343
+ method: "programmatic",
344
+ generatedAt,
345
+ status: "failed",
346
+ error,
347
+ target: resolvedTarget.target,
348
+ scope: "target",
349
+ results: [],
350
+ },
351
+ });
352
+ }
@@ -0,0 +1,19 @@
1
+ import type { ResolvedExtraContextFile } from "../../../competition/shared/extra-context.js";
2
+ import type { VerificationTarget } from "../model/types.js";
3
+ import type { StagedVerificationInputs } from "./shared-layout.js";
4
+ export interface RubricTemplateContents {
5
+ template: string;
6
+ prompt: string;
7
+ rubric: string;
8
+ schema: string;
9
+ }
10
+ export declare function loadRubricTemplate(options: {
11
+ root: string;
12
+ template: string;
13
+ }): Promise<RubricTemplateContents>;
14
+ export declare function buildRubricPrompt(options: {
15
+ template: RubricTemplateContents;
16
+ target: VerificationTarget;
17
+ staged: StagedVerificationInputs;
18
+ extraContextFiles: readonly ResolvedExtraContextFile[];
19
+ }): string;
@@ -0,0 +1,63 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { resolve } from "node:path";
3
+ import { appendConstraints, appendOutputRequirements, buildWorkspaceArtifactRequirements, } from "../../../competition/shared/prompt-helpers.js";
4
+ import { toExtraContextContextSubpath } from "../../../extra-context/contract.js";
5
+ import { VORATIQ_VERIFICATION_DIR } from "../../../workspace/structure.js";
6
+ export async function loadRubricTemplate(options) {
7
+ const { root, template } = options;
8
+ const base = resolve(root, ".voratiq", VORATIQ_VERIFICATION_DIR, "templates", template);
9
+ const [prompt, rubric, schema] = await Promise.all([
10
+ readFile(resolve(base, "prompt.md"), "utf8"),
11
+ readFile(resolve(base, "rubric.md"), "utf8"),
12
+ readFile(resolve(base, "schema.yaml"), "utf8"),
13
+ ]);
14
+ return { template, prompt, rubric, schema };
15
+ }
16
+ export function buildRubricPrompt(options) {
17
+ const { template, target, staged, extraContextFiles } = options;
18
+ const lines = [];
19
+ lines.push(`# Verifier Template: ${template.template}`, "", template.prompt.trimEnd(), "", template.rubric.trimEnd(), "", "## Inputs");
20
+ if (staged.kind === "spec") {
21
+ lines.push(`- Base repository snapshot (read-only): \`${staged.referenceRepoPath}/\``, `- Original description: \`${staged.descriptionPath}\``, "- Drafts:", ...staged.candidates.map((candidate) => {
22
+ const parts = [`spec: \`${candidate.specPath}\``];
23
+ if (candidate.specDataPath) {
24
+ parts.push(`metadata: \`${candidate.specDataPath}\``);
25
+ }
26
+ return ` - ${candidate.alias} (${parts.join(", ")})`;
27
+ }));
28
+ }
29
+ else if (staged.kind === "run") {
30
+ lines.push(`- Base repository snapshot (read-only): \`${staged.referenceRepoPath}/\``, `- Selected spec: \`${staged.specPath}\``, "- Candidates:", ...staged.candidates.map((candidate) => {
31
+ const parts = [];
32
+ if (candidate.diffPath)
33
+ parts.push(`diff: \`${candidate.diffPath}\``);
34
+ if (candidate.summaryPath) {
35
+ parts.push(`summary: \`${candidate.summaryPath}\``);
36
+ }
37
+ const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
38
+ return ` - ${candidate.alias}${suffix}`;
39
+ }));
40
+ }
41
+ else if (staged.kind === "message") {
42
+ lines.push(`- Original message prompt: \`${staged.promptPath}\``, "- Candidate responses:", ...staged.candidates.map((candidate) => ` - ${candidate.alias}: \`${candidate.responsePath}\``));
43
+ }
44
+ else if (staged.kind === "reduce-no-reference") {
45
+ lines.push(`- No repository snapshot is available for this reduction target because its lineage reaches message session \`${staged.referenceRepoUnavailable.messageSessionId}\` without a durable base revision.`, "- Reduction candidates:", ...staged.candidates.map((candidate) => ` - ${candidate.alias}: \`${candidate.reductionPath}\``));
46
+ }
47
+ else {
48
+ lines.push(`- Base repository snapshot (read-only): \`${staged.referenceRepoPath}/\``, "- Reduction candidates:", ...staged.candidates.map((candidate) => ` - ${candidate.alias}: \`${candidate.reductionPath}\``));
49
+ }
50
+ lines.push("", "## Output schema", "Return JSON matching this YAML schema exactly:", "", "```yaml", template.schema.trimEnd(), "```");
51
+ appendConstraints(lines);
52
+ appendOutputRequirements(lines, buildWorkspaceArtifactRequirements([
53
+ {
54
+ instruction: "Save the structured rubric result as JSON",
55
+ path: "result.json",
56
+ },
57
+ ]));
58
+ lines.push("", "Target metadata:", `- kind: ${target.kind}`, `- sessionId: ${target.sessionId}`);
59
+ if (extraContextFiles.length > 0) {
60
+ lines.push("", "Extra context files:", ...extraContextFiles.map((file) => `- \`context/${toExtraContextContextSubpath(file.stagedRelativePath)}\` (source: \`${file.displayPath}\`)`), "- Treat these files as supplemental context for this invocation.");
61
+ }
62
+ return `${lines.join("\n")}\n`;
63
+ }
@@ -0,0 +1,23 @@
1
+ import type { ResolvedExtraContextFile } from "../../../competition/shared/extra-context.js";
2
+ import type { TeardownController } from "../../../competition/shared/teardown.js";
3
+ import type { AgentDefinition } from "../../../configs/agents/types.js";
4
+ import type { EnvironmentConfig } from "../../../configs/environment/types.js";
5
+ import type { VerificationConfig } from "../../../configs/verification/types.js";
6
+ import type { VerifyProgressRenderer } from "../../../render/transcripts/verify.js";
7
+ import type { VerificationRecordMutators } from "../model/mutators.js";
8
+ import type { VerificationRecord } from "../model/types.js";
9
+ import type { ResolvedVerificationTarget } from "./target.js";
10
+ export declare function executeAndPersistRubricMethods(options: {
11
+ root: string;
12
+ verificationId: string;
13
+ resolvedTarget: ResolvedVerificationTarget;
14
+ verificationConfig: VerificationConfig;
15
+ verifierAgents: readonly AgentDefinition[];
16
+ aliasMap?: Record<string, string>;
17
+ environment: EnvironmentConfig;
18
+ extraContextFiles: readonly ResolvedExtraContextFile[];
19
+ maxParallel: number;
20
+ teardown: TeardownController;
21
+ mutators: VerificationRecordMutators;
22
+ renderer?: VerifyProgressRenderer;
23
+ }): Promise<VerificationRecord["methods"]>;
@@ -0,0 +1,77 @@
1
+ import { executeCompetitionWithAdapter } from "../../../competition/command-adapter.js";
2
+ import { createVerifyCompetitionAdapter, } from "./adapter.js";
3
+ import { loadRubricTemplate } from "./prompt.js";
4
+ import { prepareSharedVerificationInputs } from "./shared-layout.js";
5
+ export async function executeAndPersistRubricMethods(options) {
6
+ const { root, verificationId, resolvedTarget, verificationConfig, verifierAgents, aliasMap, environment, extraContextFiles, maxParallel, teardown, mutators, renderer, } = options;
7
+ const rubricTemplates = resolvedTarget.target.kind === "spec"
8
+ ? verificationConfig.spec.rubric
9
+ : resolvedTarget.target.kind === "run"
10
+ ? verificationConfig.run.rubric
11
+ : resolvedTarget.target.kind === "reduce"
12
+ ? verificationConfig.reduce.rubric
13
+ : verificationConfig.message.rubric;
14
+ if (resolvedTarget.target.kind === "message" &&
15
+ rubricTemplates.length === 0) {
16
+ throw new Error("Message verification requires at least one configured rubric template under `message.rubric` in `.voratiq/verification.yaml`.");
17
+ }
18
+ if (rubricTemplates.length === 0 || verifierAgents.length === 0) {
19
+ return [];
20
+ }
21
+ const sharedInputs = await prepareSharedVerificationInputs({
22
+ root,
23
+ verificationId,
24
+ resolvedTarget,
25
+ environment,
26
+ aliasMap,
27
+ });
28
+ for (const worktreePath of sharedInputs.worktreesToRemove) {
29
+ teardown.addWorktree({
30
+ root,
31
+ worktreePath,
32
+ label: "detached reference worktree",
33
+ });
34
+ }
35
+ teardown.addPath(sharedInputs.sharedRootAbsolute, "shared verification inputs");
36
+ const loadedTemplates = await Promise.all(rubricTemplates.map(async (rubric) => ({
37
+ rubric,
38
+ template: await loadRubricTemplate({
39
+ root,
40
+ template: rubric.template,
41
+ }),
42
+ })));
43
+ const candidates = loadedTemplates.flatMap(({ template }) => verifierAgents.map((agent) => ({
44
+ agent,
45
+ template,
46
+ })));
47
+ const executions = await executeCompetitionWithAdapter({
48
+ candidates,
49
+ maxParallel,
50
+ adapter: createVerifyCompetitionAdapter({
51
+ root,
52
+ verificationId,
53
+ resolvedTarget,
54
+ aliasMap,
55
+ environment,
56
+ extraContextFiles,
57
+ sharedInputs,
58
+ teardown,
59
+ mutators,
60
+ renderer,
61
+ }),
62
+ });
63
+ return executions.map((execution) => ({
64
+ method: "rubric",
65
+ template: execution.template,
66
+ verifierId: execution.verifierId,
67
+ scope: resolvedTarget.target.kind === "run"
68
+ ? { kind: "run" }
69
+ : { kind: "target" },
70
+ status: execution.status,
71
+ artifactPath: execution.artifactPath,
72
+ startedAt: execution.startedAt,
73
+ completedAt: execution.completedAt,
74
+ tokenUsage: execution.tokenUsage,
75
+ ...(execution.status === "failed" ? { error: execution.error } : {}),
76
+ }));
77
+ }
@@ -0,0 +1,121 @@
1
+ import type { EnvironmentConfig } from "../../../configs/environment/types.js";
2
+ import { type AgentWorkspacePaths } from "../../../workspace/layout.js";
3
+ import type { ResolvedVerificationTarget } from "./target.js";
4
+ export type SharedVerificationInputs = {
5
+ kind: "spec";
6
+ sharedRootAbsolute: string;
7
+ sharedInputsAbsolute: string;
8
+ referenceRepoAbsolute: string;
9
+ worktreesToRemove: readonly string[];
10
+ candidates: readonly {
11
+ alias: string;
12
+ hasSpecData: boolean;
13
+ }[];
14
+ } | {
15
+ kind: "run";
16
+ sharedRootAbsolute: string;
17
+ sharedInputsAbsolute: string;
18
+ referenceRepoAbsolute: string;
19
+ worktreesToRemove: readonly string[];
20
+ candidates: readonly {
21
+ alias: string;
22
+ hasDiff: boolean;
23
+ hasSummary: boolean;
24
+ }[];
25
+ } | {
26
+ kind: "reduce";
27
+ sharedRootAbsolute: string;
28
+ sharedInputsAbsolute: string;
29
+ referenceRepoAbsolute: string;
30
+ worktreesToRemove: readonly string[];
31
+ candidates: readonly {
32
+ alias: string;
33
+ }[];
34
+ } | {
35
+ kind: "reduce-no-reference";
36
+ sharedRootAbsolute: string;
37
+ sharedInputsAbsolute: string;
38
+ worktreesToRemove: readonly string[];
39
+ referenceRepoUnavailable: {
40
+ reason: "message-lineage";
41
+ messageSessionId: string;
42
+ };
43
+ candidates: readonly {
44
+ alias: string;
45
+ }[];
46
+ } | {
47
+ kind: "message";
48
+ sharedRootAbsolute: string;
49
+ sharedInputsAbsolute: string;
50
+ worktreesToRemove: readonly string[];
51
+ promptAbsolute: string;
52
+ candidates: readonly {
53
+ alias: string;
54
+ }[];
55
+ };
56
+ export type StagedVerificationInputs = {
57
+ kind: "spec";
58
+ referenceRepoPath: string;
59
+ descriptionPath: string;
60
+ candidates: readonly {
61
+ alias: string;
62
+ specPath: string;
63
+ specDataPath?: string;
64
+ }[];
65
+ } | {
66
+ kind: "run";
67
+ referenceRepoPath: string;
68
+ specPath: string;
69
+ candidates: readonly {
70
+ alias: string;
71
+ diffPath?: string;
72
+ summaryPath?: string;
73
+ }[];
74
+ } | {
75
+ kind: "reduce";
76
+ referenceRepoPath: string;
77
+ candidates: readonly {
78
+ alias: string;
79
+ reductionPath: string;
80
+ }[];
81
+ } | {
82
+ kind: "reduce-no-reference";
83
+ referenceRepoUnavailable: {
84
+ reason: "message-lineage";
85
+ messageSessionId: string;
86
+ };
87
+ candidates: readonly {
88
+ alias: string;
89
+ reductionPath: string;
90
+ }[];
91
+ } | {
92
+ kind: "message";
93
+ promptPath: string;
94
+ candidates: readonly {
95
+ alias: string;
96
+ responsePath: string;
97
+ }[];
98
+ };
99
+ export declare function prepareSharedVerificationInputs(options: {
100
+ root: string;
101
+ verificationId: string;
102
+ resolvedTarget: ResolvedVerificationTarget;
103
+ environment: EnvironmentConfig;
104
+ aliasMap?: Record<string, string>;
105
+ }): Promise<SharedVerificationInputs>;
106
+ export declare function cleanupSharedVerificationInputs(options: {
107
+ root: string;
108
+ sharedInputs: SharedVerificationInputs;
109
+ }): Promise<void>;
110
+ export declare function buildStagedVerificationInputs(options: {
111
+ workspacePaths: AgentWorkspacePaths;
112
+ sharedInputs: SharedVerificationInputs;
113
+ }): StagedVerificationInputs;
114
+ export declare function sharedInputsUseReferenceRepo(sharedInputs: SharedVerificationInputs): sharedInputs is Extract<SharedVerificationInputs, {
115
+ kind: "spec" | "run" | "reduce";
116
+ }>;
117
+ export declare function attachVerifierWorkspaceMounts(options: {
118
+ workspacePath: string;
119
+ contextPath: string;
120
+ sharedInputs: SharedVerificationInputs;
121
+ }): Promise<void>;