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,3 +1,4 @@
1
+ import { basename } from "node:path";
1
2
  import process from "node:process";
2
3
  import { assertTestHookRegistrationEnabled } from "../../testing/test-hooks.js";
3
4
  import { relativeToRoot } from "../../utils/path.js";
@@ -27,12 +28,13 @@ const sandboxConfigLoader = createConfigLoader({
27
28
  resolveFilePath: (root, options) => resolveSandboxFilePath(root, options),
28
29
  selectReadFile: (options) => options.readFile,
29
30
  handleMissing: ({ root, filePath }) => {
30
- throw new SandboxConfigurationError(`Missing sandbox configuration at ${relativeToRoot(root, filePath)}.`);
31
+ throw new SandboxConfigurationError(`Missing \`${basename(relativeToRoot(root, filePath))}\`.`);
31
32
  },
32
33
  prepareContent: (content, { root, filePath }) => {
33
34
  const trimmed = content.trim();
34
35
  if (trimmed.length === 0) {
35
- throw new SandboxConfigurationError(`${DEFAULT_SANDBOX_ERROR_CONTEXT}: ${relativeToRoot(root, filePath)} is empty.`);
36
+ const displayPath = basename(relativeToRoot(root, filePath));
37
+ throw new SandboxConfigurationError(`${DEFAULT_SANDBOX_ERROR_CONTEXT}: \`${displayPath}\` is empty.`);
36
38
  }
37
39
  return trimmed;
38
40
  },
@@ -123,7 +125,7 @@ export function loadSandboxProviderConfig(options, providerIdOverride) {
123
125
  const config = loadSandboxConfiguration(options);
124
126
  const providerConfig = config.providers[resolvedProviderId];
125
127
  if (!providerConfig) {
126
- throw new SandboxConfigurationError(`${DEFAULT_SANDBOX_ERROR_CONTEXT}: Unsupported sandbox provider "${resolvedProviderId}" in ${config.displayPath}.`);
128
+ throw new SandboxConfigurationError(`${DEFAULT_SANDBOX_ERROR_CONTEXT}: Unsupported sandbox provider \`${resolvedProviderId}\` in \`${basename(config.displayPath)}\`.`);
127
129
  }
128
130
  return {
129
131
  providerId: providerConfig.providerId,
@@ -172,7 +174,7 @@ function validateProviderOverrides(providerOverrides, displayPath) {
172
174
  const supportedProviders = new Set(listSandboxProviderIds());
173
175
  for (const providerId of Object.keys(providerOverrides)) {
174
176
  if (!supportedProviders.has(providerId)) {
175
- throw new SandboxConfigurationError(`${DEFAULT_SANDBOX_ERROR_CONTEXT}: Unknown provider "${providerId}" in ${displayPath}.`);
177
+ throw new SandboxConfigurationError(`${DEFAULT_SANDBOX_ERROR_CONTEXT}: Unknown provider \`${providerId}\` in \`${basename(displayPath)}\`.`);
176
178
  }
177
179
  }
178
180
  }
@@ -1,3 +1,4 @@
1
+ import { basename } from "node:path";
1
2
  import { z } from "zod";
2
3
  import { relativeToRoot } from "../../utils/path.js";
3
4
  import { DEFAULT_SANDBOX_ERROR_CONTEXT, SandboxConfigurationError, } from "./errors.js";
@@ -73,9 +74,10 @@ export function validateSandboxOverrides(document, root, filePath) {
73
74
  const issue = error.issues[0];
74
75
  const path = issue?.path?.join(".") ?? "";
75
76
  const detail = issue?.message ?? "Invalid configuration";
77
+ const displayPath = basename(relativeToRoot(root, filePath));
76
78
  const scopedDetail = path.length > 0
77
- ? `${DEFAULT_SANDBOX_ERROR_CONTEXT}: ${relativeToRoot(root, filePath)} (${path}): ${detail}.`
78
- : `${DEFAULT_SANDBOX_ERROR_CONTEXT}: ${relativeToRoot(root, filePath)}: ${detail}.`;
79
+ ? `${DEFAULT_SANDBOX_ERROR_CONTEXT}: \`${displayPath}\` (\`${path}\`): ${detail}.`
80
+ : `${DEFAULT_SANDBOX_ERROR_CONTEXT}: \`${displayPath}\`: ${detail}.`;
79
81
  throw new SandboxConfigurationError(scopedDetail);
80
82
  }
81
83
  throw error;
@@ -0,0 +1,7 @@
1
+ import { type RepoSettings } from "./types.js";
2
+ export interface LoadRepoSettingsOptions {
3
+ root?: string;
4
+ filePath?: string;
5
+ readFile?: (path: string) => string;
6
+ }
7
+ export declare function loadRepoSettings(options?: LoadRepoSettingsOptions): RepoSettings;
@@ -0,0 +1,81 @@
1
+ import process from "node:process";
2
+ import { parseYamlDocument } from "../../utils/yaml-reader.js";
3
+ import { resolveWorkspacePath } from "../../workspace/structure.js";
4
+ import { createConfigLoader } from "../shared/loader-factory.js";
5
+ import { repoSettingsSchema } from "./types.js";
6
+ const SETTINGS_CONFIG_FILENAME = "settings.yaml";
7
+ const DEFAULT_SETTINGS = {
8
+ bounded: {
9
+ codex: {
10
+ globalConfigPolicy: "ignore",
11
+ },
12
+ },
13
+ mcp: {
14
+ codex: "ask",
15
+ claude: "ask",
16
+ gemini: "ask",
17
+ },
18
+ };
19
+ function cloneSettings(settings) {
20
+ return {
21
+ bounded: {
22
+ codex: {
23
+ globalConfigPolicy: settings.bounded.codex.globalConfigPolicy,
24
+ },
25
+ },
26
+ mcp: {
27
+ codex: settings.mcp.codex,
28
+ claude: settings.mcp.claude,
29
+ gemini: settings.mcp.gemini,
30
+ },
31
+ };
32
+ }
33
+ const repoSettingsLoader = createConfigLoader({
34
+ resolveFilePath: (root, options) => options.filePath ?? resolveWorkspacePath(root, SETTINGS_CONFIG_FILENAME),
35
+ selectReadFile: (options) => options.readFile,
36
+ handleMissing: () => cloneSettings(DEFAULT_SETTINGS),
37
+ parse: (content, context) => {
38
+ const parsed = parseSettingsYaml(content, context);
39
+ const { bounded, mcp } = parsed;
40
+ return {
41
+ bounded: {
42
+ codex: {
43
+ globalConfigPolicy: bounded?.codex?.globalConfigPolicy ??
44
+ DEFAULT_SETTINGS.bounded.codex.globalConfigPolicy,
45
+ },
46
+ },
47
+ mcp: {
48
+ codex: mcp?.codex ?? "ask",
49
+ claude: mcp?.claude ?? "ask",
50
+ gemini: mcp?.gemini ?? "ask",
51
+ },
52
+ };
53
+ },
54
+ });
55
+ export function loadRepoSettings(options = {}) {
56
+ const root = options.root ?? process.cwd();
57
+ return repoSettingsLoader({ ...options, root });
58
+ }
59
+ function parseSettingsYaml(content, context) {
60
+ let document;
61
+ try {
62
+ document = parseYamlDocument(content, {
63
+ formatError: (detail) => {
64
+ const reason = detail.reason ?? detail.message ?? "Unknown YAML error";
65
+ return new Error(reason);
66
+ },
67
+ emptyValue: {},
68
+ });
69
+ }
70
+ catch (error) {
71
+ const message = error instanceof Error ? error.message : "Unknown YAML error";
72
+ throw new Error(`Invalid settings file at ${context.filePath}: ${message.replace(/\s+/gu, " ").trim()}`);
73
+ }
74
+ const result = repoSettingsSchema.safeParse(document);
75
+ if (!result.success) {
76
+ const issue = result.error.issues[0];
77
+ const detail = issue?.message ? issue.message : "Invalid settings value";
78
+ throw new Error(`Invalid settings file at ${context.filePath}: ${detail}`);
79
+ }
80
+ return result.data;
81
+ }
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+ export declare const codexGlobalConfigPolicySchema: z.ZodEnum<{
3
+ apply: "apply";
4
+ ignore: "ignore";
5
+ }>;
6
+ export declare const mcpPreferenceSchema: z.ZodEnum<{
7
+ never: "never";
8
+ ask: "ask";
9
+ }>;
10
+ export type CodexGlobalConfigPolicy = z.infer<typeof codexGlobalConfigPolicySchema>;
11
+ export type McpPreference = z.infer<typeof mcpPreferenceSchema>;
12
+ export interface RepoSettings {
13
+ bounded: {
14
+ codex: {
15
+ globalConfigPolicy: CodexGlobalConfigPolicy;
16
+ };
17
+ };
18
+ mcp: {
19
+ codex: McpPreference;
20
+ claude: McpPreference;
21
+ gemini: McpPreference;
22
+ };
23
+ }
24
+ export declare const repoSettingsSchema: z.ZodObject<{
25
+ bounded: z.ZodOptional<z.ZodObject<{
26
+ codex: z.ZodOptional<z.ZodObject<{
27
+ globalConfigPolicy: z.ZodOptional<z.ZodEnum<{
28
+ apply: "apply";
29
+ ignore: "ignore";
30
+ }>>;
31
+ }, z.core.$strip>>;
32
+ }, z.core.$strip>>;
33
+ mcp: z.ZodOptional<z.ZodObject<{
34
+ codex: z.ZodOptional<z.ZodEnum<{
35
+ never: "never";
36
+ ask: "ask";
37
+ }>>;
38
+ claude: z.ZodOptional<z.ZodEnum<{
39
+ never: "never";
40
+ ask: "ask";
41
+ }>>;
42
+ gemini: z.ZodOptional<z.ZodEnum<{
43
+ never: "never";
44
+ ask: "ask";
45
+ }>>;
46
+ }, z.core.$strip>>;
47
+ }, z.core.$loose>;
@@ -0,0 +1,23 @@
1
+ import { z } from "zod";
2
+ export const codexGlobalConfigPolicySchema = z.enum(["ignore", "apply"]);
3
+ export const mcpPreferenceSchema = z.enum(["ask", "never"]);
4
+ export const repoSettingsSchema = z
5
+ .object({
6
+ bounded: z
7
+ .object({
8
+ codex: z
9
+ .object({
10
+ globalConfigPolicy: codexGlobalConfigPolicySchema.optional(),
11
+ })
12
+ .optional(),
13
+ })
14
+ .optional(),
15
+ mcp: z
16
+ .object({
17
+ codex: mcpPreferenceSchema.optional(),
18
+ claude: mcpPreferenceSchema.optional(),
19
+ gemini: mcpPreferenceSchema.optional(),
20
+ })
21
+ .optional(),
22
+ })
23
+ .passthrough();
@@ -0,0 +1,11 @@
1
+ export declare const DEFAULT_VERIFICATION_ERROR_CONTEXT: "Verification config `.voratiq/verification.yaml`";
2
+ export declare class VerificationConfigError extends Error {
3
+ constructor(message: string);
4
+ }
5
+ export declare class MissingVerificationConfigError extends VerificationConfigError {
6
+ readonly filePath: string;
7
+ constructor(filePath: string);
8
+ }
9
+ export declare class VerificationYamlParseError extends VerificationConfigError {
10
+ constructor(message: string);
11
+ }
@@ -0,0 +1,21 @@
1
+ export const DEFAULT_VERIFICATION_ERROR_CONTEXT = "Verification config `.voratiq/verification.yaml`";
2
+ export class VerificationConfigError extends Error {
3
+ constructor(message) {
4
+ super(message);
5
+ this.name = "VerificationConfigError";
6
+ }
7
+ }
8
+ export class MissingVerificationConfigError extends VerificationConfigError {
9
+ filePath;
10
+ constructor(filePath) {
11
+ super(`${DEFAULT_VERIFICATION_ERROR_CONTEXT} not found: ${filePath}`);
12
+ this.name = "MissingVerificationConfigError";
13
+ this.filePath = filePath;
14
+ }
15
+ }
16
+ export class VerificationYamlParseError extends VerificationConfigError {
17
+ constructor(message) {
18
+ super(message);
19
+ this.name = "VerificationYamlParseError";
20
+ }
21
+ }
@@ -0,0 +1,8 @@
1
+ import { type VerificationConfig } from "./types.js";
2
+ export declare function readVerificationConfig(content: string): VerificationConfig;
3
+ export interface LoadVerificationConfigOptions {
4
+ root?: string;
5
+ filePath?: string;
6
+ readFile?: (path: string) => string;
7
+ }
8
+ export declare function loadVerificationConfig(options?: LoadVerificationConfigOptions): VerificationConfig;
@@ -0,0 +1,43 @@
1
+ import { ZodError } from "zod";
2
+ import { parseYamlDocument, } from "../../utils/yaml-reader.js";
3
+ import { resolveWorkspacePath, VORATIQ_VERIFICATION_CONFIG_FILE, } from "../../workspace/structure.js";
4
+ import { createConfigLoader } from "../shared/loader-factory.js";
5
+ import { formatYamlErrorMessage } from "../shared/yaml-error-formatter.js";
6
+ import { DEFAULT_VERIFICATION_ERROR_CONTEXT, MissingVerificationConfigError, VerificationConfigError, VerificationYamlParseError, } from "./errors.js";
7
+ import { verificationConfigSchema } from "./types.js";
8
+ export function readVerificationConfig(content) {
9
+ const parsed = parseYamlDocument(content, {
10
+ formatError: formatVerificationYamlError,
11
+ });
12
+ try {
13
+ return verificationConfigSchema.parse(parsed);
14
+ }
15
+ catch (error) {
16
+ if (error instanceof ZodError) {
17
+ const detail = error.issues
18
+ .map((issue) => issue.message)
19
+ .join("; ")
20
+ .trim();
21
+ throw new VerificationConfigError(`${DEFAULT_VERIFICATION_ERROR_CONTEXT}: ${detail || "invalid mapping"}`);
22
+ }
23
+ throw error;
24
+ }
25
+ }
26
+ function formatVerificationYamlError(detail) {
27
+ const message = formatYamlErrorMessage(detail, {
28
+ context: DEFAULT_VERIFICATION_ERROR_CONTEXT,
29
+ });
30
+ return new VerificationYamlParseError(message);
31
+ }
32
+ const loadVerificationConfigInternal = createConfigLoader({
33
+ resolveFilePath: (root, options) => options.filePath ??
34
+ resolveWorkspacePath(root, VORATIQ_VERIFICATION_CONFIG_FILE),
35
+ selectReadFile: (options) => options.readFile,
36
+ handleMissing: ({ filePath }) => {
37
+ throw new MissingVerificationConfigError(filePath);
38
+ },
39
+ parse: (content) => readVerificationConfig(content),
40
+ });
41
+ export function loadVerificationConfig(options = {}) {
42
+ return loadVerificationConfigInternal(options);
43
+ }
@@ -0,0 +1,35 @@
1
+ import { z } from "zod";
2
+ import { CHECK_STATUS_VALUES, type CheckStatus } from "../../status/index.js";
3
+ export declare const programmaticSlugSchema: z.ZodString;
4
+ export type ProgrammaticSlug = z.infer<typeof programmaticSlugSchema>;
5
+ export declare const programmaticStatusSchema: z.ZodEnum<{
6
+ succeeded: "succeeded";
7
+ failed: "failed";
8
+ errored: "errored";
9
+ skipped: "skipped";
10
+ }>;
11
+ export type ProgrammaticStatus = (typeof CHECK_STATUS_VALUES)[number];
12
+ export declare const programmaticCommandSchema: z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodNull, z.ZodUndefined]>, z.ZodTransform<string | undefined, string | null | undefined>>;
13
+ export interface ProgrammaticCommandEntry {
14
+ slug: ProgrammaticSlug;
15
+ command?: string;
16
+ }
17
+ export declare const rubricTemplateSchema: z.ZodString;
18
+ export type RubricTemplate = z.infer<typeof rubricTemplateSchema>;
19
+ export declare const programmaticCheckResultSchema: z.ZodObject<{
20
+ slug: z.ZodString;
21
+ status: z.ZodEnum<{
22
+ succeeded: "succeeded";
23
+ failed: "failed";
24
+ errored: "errored";
25
+ skipped: "skipped";
26
+ }>;
27
+ command: z.ZodOptional<z.ZodString>;
28
+ exitCode: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
29
+ logPath: z.ZodOptional<z.ZodString>;
30
+ error: z.ZodOptional<z.ZodString>;
31
+ }, z.core.$strip>;
32
+ export type ProgrammaticCheckResult = z.infer<typeof programmaticCheckResultSchema>;
33
+ export declare function normalizeProgrammaticCommand(command: string | undefined): string | undefined;
34
+ export declare function sanitizeSlugForFilename(slug: string): string;
35
+ export type { CheckStatus };
@@ -0,0 +1,41 @@
1
+ import { z } from "zod";
2
+ import { checkStatusSchema, } from "../../status/index.js";
3
+ const PROGRAMMATIC_SLUG_PATTERN = /^[a-z0-9]+(?:[.-][a-z0-9]+)*$/u;
4
+ const RUBRIC_TEMPLATE_PATTERN = /^[a-z0-9]+(?:[./-][a-z0-9]+)*$/u;
5
+ export const programmaticSlugSchema = z
6
+ .string()
7
+ .min(1, "programmatic slug is required")
8
+ .regex(PROGRAMMATIC_SLUG_PATTERN, "programmatic slug must contain only lowercase letters, numbers, dots, or hyphens");
9
+ export const programmaticStatusSchema = checkStatusSchema;
10
+ export const programmaticCommandSchema = z
11
+ .union([z.string(), z.null(), z.undefined()])
12
+ .transform((value) => {
13
+ if (value === null || value === undefined) {
14
+ return undefined;
15
+ }
16
+ const trimmed = value.trim();
17
+ return trimmed.length > 0 ? trimmed : undefined;
18
+ });
19
+ export const rubricTemplateSchema = z
20
+ .string()
21
+ .trim()
22
+ .min(1, "rubric template is required")
23
+ .regex(RUBRIC_TEMPLATE_PATTERN, "rubric template must contain only lowercase letters, numbers, dots, slashes, or hyphens");
24
+ export const programmaticCheckResultSchema = z.object({
25
+ slug: programmaticSlugSchema,
26
+ status: programmaticStatusSchema,
27
+ command: z.string().optional(),
28
+ exitCode: z.number().nullable().optional(),
29
+ logPath: z.string().optional(),
30
+ error: z.string().optional(),
31
+ });
32
+ export function normalizeProgrammaticCommand(command) {
33
+ if (command === undefined) {
34
+ return undefined;
35
+ }
36
+ const trimmed = command.trim();
37
+ return trimmed.length > 0 ? trimmed : undefined;
38
+ }
39
+ export function sanitizeSlugForFilename(slug) {
40
+ return slug.replace(/[^a-z0-9.-]/gu, "-");
41
+ }
@@ -0,0 +1,10 @@
1
+ import type { ProgrammaticSlug } from "./methods.js";
2
+ import { type ProgrammaticSuggestion } from "./programmatic-detect.js";
3
+ export interface ProgrammaticDefault {
4
+ readonly slug: string;
5
+ readonly command?: string;
6
+ }
7
+ export declare const DEFAULT_PROGRAMMATIC_TEMPLATE_HEADER: readonly string[];
8
+ export declare const DEFAULT_PROGRAMMATIC_DEFAULTS: readonly ProgrammaticDefault[];
9
+ export declare function combineSuggestedProgrammaticCommands(suggestions: readonly ProgrammaticSuggestion[]): Map<ProgrammaticSlug, string | undefined>;
10
+ export declare function listDetectedProgrammaticDefaults(suggestions: readonly ProgrammaticSuggestion[]): ProgrammaticDefault[];
@@ -0,0 +1,42 @@
1
+ import { CANONICAL_PROGRAMMATIC_SLUGS, } from "./programmatic-detect.js";
2
+ export const DEFAULT_PROGRAMMATIC_TEMPLATE_HEADER = [
3
+ "# Repo-level verification config.",
4
+ "# Configure only the stages and methods you use.",
5
+ "# `run.programmatic` commands execute in candidate workspaces after a run finishes.",
6
+ "# Leave any command blank (or delete it entirely) to skip that check.",
7
+ "",
8
+ ];
9
+ export const DEFAULT_PROGRAMMATIC_DEFAULTS = [
10
+ { slug: "format" },
11
+ { slug: "lint" },
12
+ { slug: "typecheck" },
13
+ { slug: "tests" },
14
+ ];
15
+ export function combineSuggestedProgrammaticCommands(suggestions) {
16
+ const combined = new Map();
17
+ for (const suggestion of suggestions) {
18
+ for (const [slug, command] of suggestion.commands) {
19
+ const commands = combined.get(slug);
20
+ if (!commands) {
21
+ combined.set(slug, [command]);
22
+ continue;
23
+ }
24
+ if (!commands.includes(command)) {
25
+ commands.push(command);
26
+ }
27
+ }
28
+ }
29
+ const resolved = new Map();
30
+ for (const slug of CANONICAL_PROGRAMMATIC_SLUGS) {
31
+ const commands = combined.get(slug);
32
+ resolved.set(slug, commands && commands.length > 0 ? commands.join(" && ") : undefined);
33
+ }
34
+ return resolved;
35
+ }
36
+ export function listDetectedProgrammaticDefaults(suggestions) {
37
+ const commands = combineSuggestedProgrammaticCommands(suggestions);
38
+ return CANONICAL_PROGRAMMATIC_SLUGS.map((slug) => ({
39
+ slug,
40
+ command: commands.get(slug),
41
+ }));
42
+ }
@@ -0,0 +1,10 @@
1
+ import { type EnvironmentConfig } from "../environment/types.js";
2
+ import type { ProgrammaticSlug } from "./methods.js";
3
+ export declare const CANONICAL_PROGRAMMATIC_SLUGS: ProgrammaticSlug[];
4
+ export interface ProgrammaticSuggestion {
5
+ source: "node" | "python";
6
+ commands: Map<ProgrammaticSlug, string>;
7
+ notes: string[];
8
+ warnings: string[];
9
+ }
10
+ export declare function detectProgrammaticSuggestions(root: string, environment: EnvironmentConfig): Promise<ProgrammaticSuggestion[]>;
@@ -2,25 +2,25 @@ import { readFile } from "node:fs/promises";
2
2
  import { pathExists } from "../../utils/fs.js";
3
3
  import { resolvePath } from "../../utils/path.js";
4
4
  import { getPythonEnvironmentPath, isNodeEnvironmentDisabled, isPythonEnvironmentDisabled, } from "../environment/types.js";
5
- export const CANONICAL_EVAL_SLUGS = [
5
+ export const CANONICAL_PROGRAMMATIC_SLUGS = [
6
6
  "format",
7
7
  "lint",
8
8
  "typecheck",
9
9
  "tests",
10
10
  ];
11
- export async function detectEvalSuggestions(root, environment) {
11
+ export async function detectProgrammaticSuggestions(root, environment) {
12
12
  const suggestions = [];
13
- const nodeSuggestion = await detectNodeEvalSuggestion(root, environment);
13
+ const nodeSuggestion = await detectNodeSuggestion(root, environment);
14
14
  if (nodeSuggestion) {
15
15
  suggestions.push(nodeSuggestion);
16
16
  }
17
- const pythonSuggestion = await detectPythonEvalSuggestion(root, environment);
17
+ const pythonSuggestion = await detectPythonSuggestion(root, environment);
18
18
  if (pythonSuggestion) {
19
19
  suggestions.push(pythonSuggestion);
20
20
  }
21
21
  return suggestions;
22
22
  }
23
- async function detectNodeEvalSuggestion(root, environment) {
23
+ async function detectNodeSuggestion(root, environment) {
24
24
  if (isNodeEnvironmentDisabled(environment)) {
25
25
  return undefined;
26
26
  }
@@ -77,7 +77,7 @@ async function detectNodeEvalSuggestion(root, environment) {
77
77
  warnings,
78
78
  };
79
79
  }
80
- async function detectPythonEvalSuggestion(root, environment) {
80
+ async function detectPythonSuggestion(root, environment) {
81
81
  if (isPythonEnvironmentDisabled(environment)) {
82
82
  return undefined;
83
83
  }
@@ -185,40 +185,29 @@ async function readPythonDependencies(root) {
185
185
  return result;
186
186
  }
187
187
  function extractPyprojectDependencies(content, result) {
188
- const lines = content.split(/\r?\n/);
189
- for (const line of lines) {
190
- const normalized = line.toLowerCase();
191
- if (normalized.includes("ruff")) {
192
- result.add("ruff");
193
- }
194
- if (normalized.includes("pytest")) {
195
- result.add("pytest");
196
- }
197
- if (normalized.includes("pyright")) {
198
- result.add("pyright");
199
- }
188
+ const patterns = [
189
+ /^\s*dependencies\s*=\s*\[/imu,
190
+ /^\s*\[project.optional-dependencies\]\s*$/imu,
191
+ ];
192
+ if (!patterns.some((pattern) => pattern.test(content))) {
193
+ return;
194
+ }
195
+ for (const match of content.matchAll(/"([A-Za-z0-9_.-]+)\\b[^"]*"/gu)) {
196
+ result.add(match[1].toLowerCase());
200
197
  }
201
198
  }
202
199
  function extractRequirementDependencies(content, result) {
203
- const lines = content.split(/\r?\n/);
204
- for (const line of lines) {
200
+ for (const line of content.split("\n")) {
205
201
  const trimmed = line.trim();
206
- if (trimmed.length === 0 || trimmed.startsWith("#")) {
202
+ if (!trimmed || trimmed.startsWith("#")) {
207
203
  continue;
208
204
  }
209
- const normalized = trimmed.toLowerCase();
210
- if (normalized.startsWith("ruff")) {
211
- result.add("ruff");
212
- }
213
- if (normalized.startsWith("pytest")) {
214
- result.add("pytest");
215
- }
216
- if (normalized.startsWith("pyright")) {
217
- result.add("pyright");
205
+ const match = trimmed.match(/^([A-Za-z0-9_.-]+)/u);
206
+ if (match?.[1]) {
207
+ result.add(match[1].toLowerCase());
218
208
  }
219
209
  }
220
210
  }
221
- function hasDependency(packageJson, name) {
222
- const { dependencies = {}, devDependencies = {} } = packageJson;
223
- return Boolean(dependencies[name] ?? devDependencies[name]);
211
+ function hasDependency(pkg, name) {
212
+ return Boolean(pkg.dependencies?.[name] ?? pkg.devDependencies?.[name]);
224
213
  }
@@ -0,0 +1,49 @@
1
+ import { z } from "zod";
2
+ export declare const verificationRubricEntrySchema: z.ZodObject<{
3
+ template: z.ZodString;
4
+ }, z.core.$strict>;
5
+ export type VerificationRubricEntry = z.infer<typeof verificationRubricEntrySchema>;
6
+ declare const verificationRubricOnlyStageConfigSchema: z.ZodObject<{
7
+ rubric: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
8
+ template: z.ZodString;
9
+ }, z.core.$strict>>>>;
10
+ }, z.core.$strict>;
11
+ declare const verificationRunStageConfigSchema: z.ZodObject<{
12
+ programmatic: z.ZodDefault<z.ZodOptional<z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodNull, z.ZodUndefined]>, z.ZodTransform<string | undefined, string | null | undefined>>>, z.ZodTransform<{
13
+ slug: string;
14
+ command?: string;
15
+ }[], Record<string, string | undefined>>>>>;
16
+ rubric: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
17
+ template: z.ZodString;
18
+ }, z.core.$strict>>>>;
19
+ }, z.core.$strict>;
20
+ export type VerificationRubricOnlyStageConfig = z.infer<typeof verificationRubricOnlyStageConfigSchema>;
21
+ export type VerificationRunStageConfig = z.infer<typeof verificationRunStageConfigSchema>;
22
+ export declare const verificationConfigSchema: z.ZodObject<{
23
+ spec: z.ZodDefault<z.ZodOptional<z.ZodObject<{
24
+ rubric: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
25
+ template: z.ZodString;
26
+ }, z.core.$strict>>>>;
27
+ }, z.core.$strict>>>;
28
+ run: z.ZodDefault<z.ZodOptional<z.ZodObject<{
29
+ programmatic: z.ZodDefault<z.ZodOptional<z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodNull, z.ZodUndefined]>, z.ZodTransform<string | undefined, string | null | undefined>>>, z.ZodTransform<{
30
+ slug: string;
31
+ command?: string;
32
+ }[], Record<string, string | undefined>>>>>;
33
+ rubric: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
34
+ template: z.ZodString;
35
+ }, z.core.$strict>>>>;
36
+ }, z.core.$strict>>>;
37
+ reduce: z.ZodDefault<z.ZodOptional<z.ZodObject<{
38
+ rubric: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
39
+ template: z.ZodString;
40
+ }, z.core.$strict>>>>;
41
+ }, z.core.$strict>>>;
42
+ message: z.ZodDefault<z.ZodOptional<z.ZodObject<{
43
+ rubric: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
44
+ template: z.ZodString;
45
+ }, z.core.$strict>>>>;
46
+ }, z.core.$strict>>>;
47
+ }, z.core.$strict>;
48
+ export type VerificationConfig = z.infer<typeof verificationConfigSchema>;
49
+ export {};
@@ -0,0 +1,45 @@
1
+ import { z } from "zod";
2
+ import { programmaticCommandSchema, programmaticSlugSchema, } from "./methods.js";
3
+ export const verificationRubricEntrySchema = z
4
+ .object({
5
+ template: z.string().trim().min(1),
6
+ })
7
+ .strict();
8
+ const verificationProgrammaticMapSchema = z
9
+ .record(z.string(), programmaticCommandSchema)
10
+ .transform((value) => {
11
+ const entries = [];
12
+ for (const [rawSlug, rawCommand] of Object.entries(value)) {
13
+ const slug = programmaticSlugSchema.parse(rawSlug.trim());
14
+ const command = rawCommand ?? undefined;
15
+ entries.push({ slug, ...(command ? { command } : {}) });
16
+ }
17
+ return entries;
18
+ });
19
+ const verificationRubricOnlyStageConfigSchema = z
20
+ .object({
21
+ rubric: z.array(verificationRubricEntrySchema).optional().default([]),
22
+ })
23
+ .strict();
24
+ const verificationRunStageConfigSchema = z
25
+ .object({
26
+ programmatic: verificationProgrammaticMapSchema.optional().default([]),
27
+ rubric: z.array(verificationRubricEntrySchema).optional().default([]),
28
+ })
29
+ .strict();
30
+ export const verificationConfigSchema = z
31
+ .object({
32
+ spec: verificationRubricOnlyStageConfigSchema
33
+ .optional()
34
+ .default({ rubric: [] }),
35
+ run: verificationRunStageConfigSchema
36
+ .optional()
37
+ .default({ programmatic: [], rubric: [] }),
38
+ reduce: verificationRubricOnlyStageConfigSchema
39
+ .optional()
40
+ .default({ rubric: [] }),
41
+ message: verificationRubricOnlyStageConfigSchema
42
+ .optional()
43
+ .default({ rubric: [] }),
44
+ })
45
+ .strict();