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,409 @@
1
+ import { getRunStatusStyle } from "../../status/colors.js";
2
+ import { TERMINAL_VERIFICATION_STATUSES } from "../../status/index.js";
3
+ import { formatRenderLifecycleDuration } from "../utils/duration.js";
4
+ import { createInteractiveFrameRenderer } from "../utils/interactive-frame.js";
5
+ import { buildStageFrameLines, buildStageFrameSections, } from "../utils/stage-output.js";
6
+ import { renderTable } from "../utils/table.js";
7
+ import { renderTranscript } from "../utils/transcript.js";
8
+ import { buildStandardSessionShellSection, formatTranscriptErrorLine, formatTranscriptStatusLabel, resolveTranscriptShellStyle, resolveTranscriptShellStyleFromWriter, } from "../utils/transcript-shell.js";
9
+ const DASH = "—";
10
+ function formatErrorDetail(error) {
11
+ if (error instanceof Error) {
12
+ return error.message;
13
+ }
14
+ if (typeof error === "string") {
15
+ return error;
16
+ }
17
+ if (error === null || error === undefined) {
18
+ return "unknown error";
19
+ }
20
+ if (typeof error === "number" ||
21
+ typeof error === "boolean" ||
22
+ typeof error === "bigint") {
23
+ return `${error}`;
24
+ }
25
+ if (typeof error === "symbol") {
26
+ return error.description ?? error.toString();
27
+ }
28
+ if (typeof error === "object") {
29
+ try {
30
+ const serialized = JSON.stringify(error);
31
+ if (serialized) {
32
+ return serialized;
33
+ }
34
+ }
35
+ catch {
36
+ // Ignore serialization errors and fall back.
37
+ }
38
+ }
39
+ return "unknown error";
40
+ }
41
+ function buildVerifyStageShell(options) {
42
+ return {
43
+ metadataLines: buildStandardSessionShellSection({
44
+ badgeText: options.verificationId,
45
+ badgeVariant: "verify",
46
+ status: {
47
+ value: options.status,
48
+ color: getRunStatusStyle(options.status).cli,
49
+ },
50
+ elapsed: options.elapsed,
51
+ createdAt: options.createdAt,
52
+ workspacePath: options.workspacePath,
53
+ style: options.style,
54
+ }),
55
+ statusTableLines: options.tableLines ?? [],
56
+ };
57
+ }
58
+ function buildVerifyMethodTable(rows) {
59
+ return renderTable({
60
+ columns: [
61
+ {
62
+ header: "AGENT",
63
+ accessor: (row) => row.agentLabel ?? DASH,
64
+ },
65
+ {
66
+ header: "VERIFIER",
67
+ accessor: (row) => row.verifierLabel,
68
+ },
69
+ {
70
+ header: "STATUS",
71
+ accessor: (row) => row.status,
72
+ },
73
+ {
74
+ header: "DURATION",
75
+ accessor: (row) => row.duration,
76
+ },
77
+ ],
78
+ rows,
79
+ });
80
+ }
81
+ function formatVerifierLabel(verifierLabel, status, style) {
82
+ void status;
83
+ void style;
84
+ return verifierLabel;
85
+ }
86
+ export function createVerifyRenderer(options = {}) {
87
+ const stdout = options.stdout ?? process.stdout;
88
+ const stderr = options.stderr ?? process.stderr;
89
+ const now = options.now ?? Date.now.bind(Date);
90
+ const suppressLeadingBlankLine = options.suppressLeadingBlankLine === true;
91
+ const suppressTrailingBlankLine = options.suppressTrailingBlankLine === true;
92
+ let context;
93
+ let disabled = false;
94
+ let warningLogged = false;
95
+ let refreshInterval;
96
+ let lastElapsedLabel = null;
97
+ const interactiveFrameRenderer = createInteractiveFrameRenderer(stdout);
98
+ const methodOrder = [];
99
+ const methodRecords = new Map();
100
+ function stopRefreshLoop() {
101
+ if (!refreshInterval) {
102
+ return;
103
+ }
104
+ clearInterval(refreshInterval);
105
+ refreshInterval = undefined;
106
+ }
107
+ function hasRunningMethods() {
108
+ for (const method of methodRecords.values()) {
109
+ if (method.status === "running") {
110
+ return true;
111
+ }
112
+ }
113
+ return false;
114
+ }
115
+ function syncRefreshLoop() {
116
+ if (!stdout.isTTY || disabled || !context || !hasRunningMethods()) {
117
+ stopRefreshLoop();
118
+ return;
119
+ }
120
+ if (refreshInterval) {
121
+ return;
122
+ }
123
+ refreshInterval = setInterval(() => {
124
+ guard(() => {
125
+ if (!stdout.isTTY || disabled || !context || !hasRunningMethods()) {
126
+ stopRefreshLoop();
127
+ return;
128
+ }
129
+ const nextElapsed = formatVerifyElapsed(context, now());
130
+ if (nextElapsed === lastElapsedLabel) {
131
+ return;
132
+ }
133
+ render();
134
+ });
135
+ }, 1000);
136
+ refreshInterval.unref?.();
137
+ }
138
+ function guard(action) {
139
+ if (disabled) {
140
+ return;
141
+ }
142
+ try {
143
+ action();
144
+ }
145
+ catch (error) {
146
+ disabled = true;
147
+ stopRefreshLoop();
148
+ if (!warningLogged) {
149
+ warningLogged = true;
150
+ stderr.write(`[voratiq] Progressive verify output disabled: ${formatErrorDetail(error)}\n`);
151
+ }
152
+ }
153
+ }
154
+ function safeParse(value) {
155
+ if (!value) {
156
+ return undefined;
157
+ }
158
+ const parsed = Date.parse(value);
159
+ return Number.isNaN(parsed) ? undefined : parsed;
160
+ }
161
+ function formatDuration(record) {
162
+ if (record.status === "running") {
163
+ return DASH;
164
+ }
165
+ return (formatRenderLifecycleDuration({
166
+ lifecycle: {
167
+ status: record.status,
168
+ startedAt: record.startedAt,
169
+ completedAt: record.completedAt,
170
+ },
171
+ terminalStatuses: TERMINAL_VERIFICATION_STATUSES,
172
+ now: now(),
173
+ }) ?? DASH);
174
+ }
175
+ function syncContextLifecycleFromMethods() {
176
+ if (!context) {
177
+ return;
178
+ }
179
+ let earliestStartedAt = safeParse(context.startedAt);
180
+ let latestCompletedAt = safeParse(context.completedAt);
181
+ for (const method of methodRecords.values()) {
182
+ const startedAt = safeParse(method.startedAt);
183
+ if (startedAt !== undefined &&
184
+ (earliestStartedAt === undefined || startedAt < earliestStartedAt)) {
185
+ earliestStartedAt = startedAt;
186
+ }
187
+ const completedAt = safeParse(method.completedAt);
188
+ if (completedAt !== undefined &&
189
+ (latestCompletedAt === undefined || completedAt > latestCompletedAt)) {
190
+ latestCompletedAt = completedAt;
191
+ }
192
+ }
193
+ context = {
194
+ ...context,
195
+ startedAt: earliestStartedAt === undefined
196
+ ? undefined
197
+ : new Date(earliestStartedAt).toISOString(),
198
+ completedAt: latestCompletedAt === undefined
199
+ ? undefined
200
+ : new Date(latestCompletedAt).toISOString(),
201
+ };
202
+ }
203
+ function buildMethodTable(style) {
204
+ if (methodRecords.size === 0) {
205
+ return [];
206
+ }
207
+ const resolvedStyle = resolveTranscriptShellStyle(style);
208
+ const rows = methodOrder
209
+ .filter((methodKey) => methodRecords.has(methodKey))
210
+ .map((methodKey) => {
211
+ const method = methodRecords.get(methodKey);
212
+ return {
213
+ verifierLabel: formatVerifierLabel(method.verifierLabel, method.status, resolvedStyle),
214
+ agentLabel: method.agentLabel,
215
+ status: formatTranscriptStatusLabel(method.status, getRunStatusStyle(method.status).cli, resolvedStyle),
216
+ duration: formatDuration(method),
217
+ artifactPath: method.artifactPath,
218
+ };
219
+ });
220
+ return buildVerifyMethodTable(rows);
221
+ }
222
+ function render() {
223
+ if (!context || disabled || !stdout.isTTY) {
224
+ return;
225
+ }
226
+ syncContextLifecycleFromMethods();
227
+ const style = resolveTranscriptShellStyleFromWriter(stdout, { forceTty: true });
228
+ const elapsed = formatVerifyElapsed(context, now());
229
+ lastElapsedLabel = elapsed ?? null;
230
+ const shell = buildVerifyStageShell({
231
+ verificationId: context.verificationId,
232
+ createdAt: context.createdAt,
233
+ elapsed: elapsed ?? DASH,
234
+ workspacePath: context.workspacePath,
235
+ status: context.status,
236
+ tableLines: buildMethodTable(style),
237
+ style,
238
+ });
239
+ const interactiveLines = buildStageFrameLines({
240
+ metadataLines: shell.metadataLines,
241
+ statusTableLines: shell.statusTableLines,
242
+ leadingBlankLine: !suppressLeadingBlankLine,
243
+ trailingBlankLine: !suppressTrailingBlankLine,
244
+ });
245
+ if (interactiveLines.length === 0) {
246
+ return;
247
+ }
248
+ interactiveFrameRenderer.render(interactiveLines);
249
+ }
250
+ function upsertMethod(record) {
251
+ if (!methodOrder.includes(record.methodKey)) {
252
+ methodOrder.push(record.methodKey);
253
+ }
254
+ const existing = methodRecords.get(record.methodKey);
255
+ methodRecords.set(record.methodKey, {
256
+ ...existing,
257
+ ...record,
258
+ startedAt: record.startedAt ?? existing?.startedAt,
259
+ completedAt: record.completedAt ?? existing?.completedAt,
260
+ artifactPath: record.artifactPath ?? existing?.artifactPath,
261
+ });
262
+ }
263
+ return {
264
+ onProgressEvent(event) {
265
+ guard(() => {
266
+ if (event.stage !== "verify") {
267
+ return;
268
+ }
269
+ if (event.type === "stage.begin") {
270
+ context = { ...event.context };
271
+ render();
272
+ syncRefreshLoop();
273
+ return;
274
+ }
275
+ if (event.type === "stage.candidate") {
276
+ upsertMethod(event.candidate);
277
+ render();
278
+ syncRefreshLoop();
279
+ return;
280
+ }
281
+ if (!context) {
282
+ return;
283
+ }
284
+ context = {
285
+ ...context,
286
+ status: event.status,
287
+ };
288
+ render();
289
+ syncRefreshLoop();
290
+ });
291
+ },
292
+ begin(nextContext) {
293
+ guard(() => {
294
+ if (!nextContext) {
295
+ render();
296
+ syncRefreshLoop();
297
+ return;
298
+ }
299
+ this.onProgressEvent({
300
+ type: "stage.begin",
301
+ stage: "verify",
302
+ context: nextContext,
303
+ });
304
+ });
305
+ },
306
+ update(record) {
307
+ this.onProgressEvent({
308
+ type: "stage.candidate",
309
+ stage: "verify",
310
+ candidate: record,
311
+ });
312
+ },
313
+ complete(status, lifecycle) {
314
+ stopRefreshLoop();
315
+ guard(() => {
316
+ if (context && lifecycle) {
317
+ context = {
318
+ ...context,
319
+ startedAt: lifecycle.startedAt ?? context.startedAt,
320
+ completedAt: lifecycle.completedAt ?? context.completedAt,
321
+ };
322
+ }
323
+ if (status) {
324
+ this.onProgressEvent({
325
+ type: "stage.status",
326
+ stage: "verify",
327
+ status,
328
+ });
329
+ }
330
+ else {
331
+ render();
332
+ }
333
+ disabled = true;
334
+ });
335
+ },
336
+ };
337
+ }
338
+ export function renderVerifyTranscript(options) {
339
+ const { verificationId, createdAt, elapsed, workspacePath, target, status, methods, suppressHint, warningMessage, hintMessage, isTty, includeSummarySection = true, } = options;
340
+ const style = { isTty };
341
+ const resolvedStyle = resolveTranscriptShellStyle(style);
342
+ const sections = [];
343
+ if (includeSummarySection) {
344
+ const metadataLines = buildVerifyStageShell({
345
+ verificationId,
346
+ createdAt,
347
+ elapsed,
348
+ workspacePath,
349
+ status,
350
+ tableLines: methods.length === 0
351
+ ? []
352
+ : buildVerifyMethodTable(methods.map((method) => ({
353
+ verifierLabel: formatVerifierLabel(method.verifierLabel, method.status, resolvedStyle),
354
+ agentLabel: method.agentLabel,
355
+ status: formatTranscriptStatusLabel(method.status, getRunStatusStyle(method.status).cli, resolvedStyle),
356
+ duration: method.duration,
357
+ artifactPath: method.artifactPath,
358
+ }))),
359
+ style,
360
+ });
361
+ sections.push(...buildStageFrameSections(metadataLines));
362
+ }
363
+ if (methods.length > 0) {
364
+ sections.push(["---"]);
365
+ }
366
+ if (target) {
367
+ sections.push([`Target: ${target.kind}:${target.sessionId}`]);
368
+ if (methods.length > 0) {
369
+ sections.push(["---"]);
370
+ }
371
+ }
372
+ methods.forEach((method, index) => {
373
+ const block = [`Agent: ${method.agentLabel ?? DASH}`];
374
+ block.push("", `Verifier: ${method.verifierLabel}`);
375
+ if (method.bodyLines && method.bodyLines.length > 0) {
376
+ block.push("", ...method.bodyLines);
377
+ }
378
+ if (method.errorLine) {
379
+ block.push("");
380
+ block.push(formatTranscriptErrorLine(method.errorLine, resolvedStyle));
381
+ }
382
+ block.push("", `Output: ${method.artifactPath ?? DASH}`);
383
+ if (index < methods.length - 1) {
384
+ block.push("", "---");
385
+ }
386
+ sections.push(block);
387
+ });
388
+ const footerParts = [
389
+ ...(warningMessage ? [warningMessage] : []),
390
+ ...(hintMessage && !suppressHint ? [hintMessage] : []),
391
+ ];
392
+ const hint = footerParts.length === 0
393
+ ? undefined
394
+ : {
395
+ message: `---\n\n${footerParts.join("\n\n---\n\n")}`,
396
+ };
397
+ return renderTranscript({ sections, hint });
398
+ }
399
+ export function formatVerifyElapsed(source, now) {
400
+ return formatRenderLifecycleDuration({
401
+ lifecycle: {
402
+ status: source.status,
403
+ startedAt: source.startedAt,
404
+ completedAt: source.completedAt,
405
+ },
406
+ terminalStatuses: TERMINAL_VERIFICATION_STATUSES,
407
+ now,
408
+ });
409
+ }
@@ -1,5 +1,6 @@
1
- import type { AgentEvalEnhanced, AgentInvocationEnhanced } from "../../records/enhanced.js";
2
- import type { AgentEvalView, AgentReport, AgentStatus } from "../../records/types.js";
1
+ import type { AgentInvocationEnhanced } from "../../domain/run/model/enhanced.js";
2
+ import type { AgentReport, AgentStatus } from "../../domain/run/model/types.js";
3
+ import type { TranscriptShellStyleOptions } from "./transcript-shell.js";
3
4
  type AgentHeaderSource = Pick<AgentInvocationEnhanced, "agentId" | "status" | "startedAt" | "completedAt"> | Pick<AgentReport, "agentId" | "status" | "startedAt" | "completedAt">;
4
5
  type AgentSectionSource = AgentHeaderSource & {
5
6
  diffStatistics?: string;
@@ -8,21 +9,21 @@ type AgentSectionSource = AgentHeaderSource & {
8
9
  baseDirectory?: string;
9
10
  runtimeManifestPath?: string;
10
11
  assets?: AgentInvocationEnhanced["assets"];
11
- evals?: (AgentEvalEnhanced | AgentEvalView)[];
12
12
  };
13
13
  export type AgentSectionInput = AgentSectionSource;
14
14
  type AgentMetadataRow = {
15
15
  label: string;
16
16
  value: string;
17
17
  };
18
- export declare function formatAgentStatusLabel(status: AgentStatus): string;
19
- export declare function buildAgentSectionHeader(agent: AgentHeaderSource): string;
18
+ export declare function formatAgentStatusLabelWithStyle(status: AgentStatus, style?: TranscriptShellStyleOptions): string;
19
+ export declare function formatAgentErrorLine(error: string, style?: TranscriptShellStyleOptions): string;
20
+ export declare function buildAgentSectionHeader(agent: AgentHeaderSource, style?: TranscriptShellStyleOptions): string;
20
21
  export declare function getAgentMetadata(agent: AgentSectionSource): AgentMetadataRow[];
21
22
  export declare function buildAgentMetadataSection(agent: AgentSectionSource): string[];
22
- export declare function buildAgentSection(agent: AgentSectionSource): string[];
23
+ export declare function buildAgentSectionWithStyle(agent: AgentSectionSource, style?: TranscriptShellStyleOptions): string[];
23
24
  export declare function buildAgentSectionArtifacts(agent: AgentSectionSource, agentRoot?: string): string[];
24
- export declare function buildAgentSectionEvals(agent: AgentSectionSource, agentRoot?: string): string[];
25
25
  export declare function buildAgentSectionRuntime(agent: AgentSectionSource, agentRoot?: string): string[];
26
- export declare function formatAgentDuration(agent: AgentHeaderSource): string | undefined;
27
- export declare function formatDurationLabel(durationMs: number): string | undefined;
26
+ export declare function formatAgentDuration(agent: AgentHeaderSource, options?: {
27
+ now?: number;
28
+ }): string | undefined;
28
29
  export {};
@@ -1,15 +1,21 @@
1
- import { getAgentStatusStyle, getEvalStatusStyle, } from "../../status/colors.js";
1
+ import { getAgentStatusStyle } from "../../status/colors.js";
2
+ import { TERMINAL_AGENT_STATUSES } from "../../status/index.js";
2
3
  import { colorize } from "../../utils/colors.js";
3
4
  import { formatAgentBadge } from "./badges.js";
5
+ import { formatRenderLifecycleDuration } from "./duration.js";
4
6
  import { renderTable } from "./table.js";
5
- export function formatAgentStatusLabel(status) {
6
- const statusColor = getAgentStatusStyle(status).cli;
7
- return colorize(status.toUpperCase(), statusColor);
7
+ import { formatTranscriptErrorLine, formatTranscriptStatusLabel, resolveTranscriptShellStyle, } from "./transcript-shell.js";
8
+ export function formatAgentStatusLabelWithStyle(status, style = {}) {
9
+ const resolved = resolveTranscriptShellStyle(style);
10
+ return formatTranscriptStatusLabel(status, getAgentStatusStyle(status).cli, resolved);
8
11
  }
9
- export function buildAgentSectionHeader(agent) {
10
- const agentLabel = formatAgentBadge(agent.agentId);
12
+ export function formatAgentErrorLine(error, style = {}) {
13
+ return formatTranscriptErrorLine(error, resolveTranscriptShellStyle(style));
14
+ }
15
+ export function buildAgentSectionHeader(agent, style = {}) {
16
+ const agentLabel = formatAgentBadge(agent.agentId, style);
11
17
  const status = agent.status;
12
- const statusLabel = formatAgentStatusLabel(status);
18
+ const statusLabel = formatAgentStatusLabelWithStyle(status, style);
13
19
  return ` ${agentLabel} ${statusLabel}`;
14
20
  }
15
21
  export function getAgentMetadata(agent) {
@@ -42,9 +48,10 @@ export function buildAgentMetadataSection(agent) {
42
48
  const [, ...bodyLines] = tableLines;
43
49
  return bodyLines;
44
50
  }
45
- export function buildAgentSection(agent) {
46
- const lines = [buildAgentSectionHeader(agent)];
51
+ export function buildAgentSectionWithStyle(agent, style = {}) {
52
+ const lines = [buildAgentSectionHeader(agent, style)];
47
53
  const agentRoot = getAgentRootPath(agent);
54
+ const resolvedStyle = resolveTranscriptShellStyle(style);
48
55
  const metadataLines = buildAgentMetadataSection(agent);
49
56
  if (metadataLines.length > 0) {
50
57
  lines.push("", ...indentLines(metadataLines));
@@ -54,15 +61,13 @@ export function buildAgentSection(agent) {
54
61
  lines.push("", ...indentLines(runtimeLines));
55
62
  }
56
63
  if (agent.warnings && agent.warnings.length > 0) {
57
- const warningLines = agent.warnings.map((warning) => colorize(`Warning: ${warning}`, "yellow"));
64
+ const warningLines = agent.warnings.map((warning) => resolvedStyle.isTty
65
+ ? colorize(`Warning: ${warning}`, "yellow")
66
+ : `Warning: ${warning}`);
58
67
  lines.push("", ...indentLines(warningLines));
59
68
  }
60
69
  if (agent.error) {
61
- lines.push("", ...indentLines([colorize(`Error: ${agent.error}`, "red")]));
62
- }
63
- const evalLines = buildAgentSectionEvals(agent, agentRoot);
64
- if (evalLines.length > 0) {
65
- lines.push("", ...indentLines(evalLines));
70
+ lines.push("", ...indentLines([formatAgentErrorLine(agent.error, style)]));
66
71
  }
67
72
  const artifactLines = buildAgentSectionArtifacts(agent, agentRoot);
68
73
  if (artifactLines.length > 0) {
@@ -101,33 +106,6 @@ export function buildAgentSectionArtifacts(agent, agentRoot) {
101
106
  });
102
107
  return tableLines;
103
108
  }
104
- export function buildAgentSectionEvals(agent, agentRoot) {
105
- const evalResults = agent.evals ?? [];
106
- const rows = evalResults.length === 0
107
- ? [
108
- {
109
- slug: "none",
110
- status: colorize("SKIPPED", getEvalStatusStyle("skipped").cli),
111
- log: "—",
112
- },
113
- ]
114
- : evalResults.map((evaluation) => ({
115
- slug: evaluation.slug,
116
- status: colorize(evaluation.status.toUpperCase(), getEvalStatusStyle(evaluation.status).cli),
117
- log: evaluation.logPath !== undefined
118
- ? relativizePath(evaluation.logPath, agentRoot)
119
- : "—",
120
- }));
121
- const tableLines = renderTable({
122
- columns: [
123
- { header: "EVAL", accessor: (row) => row.slug },
124
- { header: "STATUS", accessor: (row) => row.status },
125
- { header: "LOG", accessor: (row) => row.log },
126
- ],
127
- rows,
128
- });
129
- return tableLines;
130
- }
131
109
  export function buildAgentSectionRuntime(agent, agentRoot) {
132
110
  const rows = [];
133
111
  if (typeof agent.runtimeManifestPath === "string" &&
@@ -159,46 +137,16 @@ export function buildAgentSectionRuntime(agent, agentRoot) {
159
137
  });
160
138
  return tableLines;
161
139
  }
162
- export function formatAgentDuration(agent) {
163
- const startedAt = safeParse(agent.startedAt);
164
- const completedAt = safeParse(agent.completedAt);
165
- if (startedAt === undefined ||
166
- completedAt === undefined ||
167
- completedAt < startedAt) {
168
- return undefined;
169
- }
170
- const durationMs = completedAt - startedAt;
171
- return formatDurationLabel(durationMs);
172
- }
173
- function safeParse(timestamp) {
174
- if (!timestamp) {
175
- return undefined;
176
- }
177
- const parsed = Date.parse(timestamp);
178
- if (Number.isNaN(parsed)) {
179
- return undefined;
180
- }
181
- return parsed;
182
- }
183
- export function formatDurationLabel(durationMs) {
184
- if (!Number.isFinite(durationMs) || durationMs < 0) {
185
- return undefined;
186
- }
187
- const totalSeconds = Math.round(durationMs / 1000);
188
- const hours = Math.floor(totalSeconds / 3600);
189
- const minutes = Math.floor((totalSeconds % 3600) / 60);
190
- const seconds = totalSeconds % 60;
191
- const parts = [];
192
- if (hours > 0) {
193
- parts.push(`${hours}h`);
194
- }
195
- if (minutes > 0) {
196
- parts.push(`${minutes}m`);
197
- }
198
- if (seconds > 0 || parts.length === 0) {
199
- parts.push(`${seconds}s`);
200
- }
201
- return parts.join(" ");
140
+ export function formatAgentDuration(agent, options = {}) {
141
+ return formatRenderLifecycleDuration({
142
+ lifecycle: {
143
+ status: agent.status,
144
+ startedAt: agent.startedAt,
145
+ completedAt: agent.completedAt,
146
+ },
147
+ terminalStatuses: TERMINAL_AGENT_STATUSES,
148
+ now: options.now,
149
+ });
202
150
  }
203
151
  function getAgentRootPath(agent) {
204
152
  if (typeof agent.baseDirectory === "string") {
@@ -1,20 +1,3 @@
1
- type AnsiCode = string;
2
- export interface BadgeStyle {
3
- foreground?: AnsiCode;
4
- background?: AnsiCode;
5
- bold?: boolean;
6
- padding?: number;
7
- }
8
- export declare const BADGE_STYLES: {
9
- readonly run: {
10
- readonly foreground: "\u001B[38;2;0;0;0m";
11
- readonly background: "\u001B[48;2;164;203;153m";
12
- readonly bold: true;
13
- };
14
- readonly agent: {
15
- readonly bold: true;
16
- };
17
- };
18
- export declare function formatRunBadge(text: string): string;
19
- export declare function formatAgentBadge(text: string): string;
20
- export {};
1
+ import type { TranscriptShellStyleOptions } from "./transcript-shell.js";
2
+ export type BadgeRenderOptions = TranscriptShellStyleOptions;
3
+ export declare function formatAgentBadge(text: string, options?: BadgeRenderOptions): string;
@@ -1,37 +1,4 @@
1
- const ANSI_RESET = "\u001B[0m";
2
- const ANSI_BOLD = "\u001B[1m";
3
- const ESC = "\u001B[";
4
- const BRAND_COLOR = "164;203;153";
5
- export const BADGE_STYLES = {
6
- run: {
7
- foreground: `${ESC}38;2;0;0;0m`,
8
- background: `${ESC}48;2;${BRAND_COLOR}m`,
9
- bold: true,
10
- },
11
- agent: {
12
- bold: true,
13
- },
14
- };
15
- function applyBadgeStyle(text, style) {
16
- const padding = Math.max(0, style.padding ?? 0);
17
- const pad = padding === 0 ? "" : " ".repeat(padding);
18
- const padded = `${pad}${text}${pad}`;
19
- const parts = [];
20
- if (typeof style.background === "string" && style.background.length > 0) {
21
- parts.push(style.background);
22
- }
23
- if (typeof style.foreground === "string" && style.foreground.length > 0) {
24
- parts.push(style.foreground);
25
- }
26
- if (style.bold === true) {
27
- parts.push(ANSI_BOLD);
28
- }
29
- parts.push(padded, ANSI_RESET);
30
- return parts.join("");
31
- }
32
- export function formatRunBadge(text) {
33
- return applyBadgeStyle(text, BADGE_STYLES.run);
34
- }
35
- export function formatAgentBadge(text) {
36
- return applyBadgeStyle(text, BADGE_STYLES.agent);
1
+ import { formatTranscriptBadge, resolveTranscriptShellStyle, } from "./transcript-shell.js";
2
+ export function formatAgentBadge(text, options = {}) {
3
+ return formatTranscriptBadge(text, "agent", resolveTranscriptShellStyle(options));
37
4
  }
@@ -0,0 +1,12 @@
1
+ import { type LifecycleExecutionDurationInput } from "../../domain/shared/lifecycle.js";
2
+ export declare function resolveRenderLifecycleDurationMs<TStatus extends string>(options: {
3
+ lifecycle: LifecycleExecutionDurationInput<TStatus>;
4
+ terminalStatuses: readonly TStatus[];
5
+ now?: number;
6
+ }): number | undefined;
7
+ export declare function formatRenderLifecycleDuration<TStatus extends string>(options: {
8
+ lifecycle: LifecycleExecutionDurationInput<TStatus>;
9
+ terminalStatuses: readonly TStatus[];
10
+ now?: number;
11
+ }): string | undefined;
12
+ export declare function formatDurationLabel(durationMs: number): string | undefined;