reeval 0.9.0 → 0.10.0

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 (318) hide show
  1. package/README.md +42 -30
  2. package/THIRD_PARTY_NOTICES.md +218 -11
  3. package/assets/package.json +1 -1
  4. package/assets/pnpm-lock.yaml +30 -30
  5. package/dist/adapter-DWlpOtRn.js +279 -0
  6. package/dist/adapter-DWlpOtRn.js.map +1 -0
  7. package/dist/{agent-6FefIhX7.js → agent-CURAwx_q.js} +6 -6
  8. package/dist/{agent-6FefIhX7.js.map → agent-CURAwx_q.js.map} +1 -1
  9. package/dist/{agent-WSmTaesf.js → agent-CaS_2Sce.js} +46 -15
  10. package/dist/agent-CaS_2Sce.js.map +1 -0
  11. package/dist/{analysis-DlGBDjTj.js → analysis-Bxub9LMT.js} +4 -4
  12. package/dist/{analysis-DlGBDjTj.js.map → analysis-Bxub9LMT.js.map} +1 -1
  13. package/dist/{assemble-BCZzTyR7.js → assemble-B9Alds-z.js} +69 -41
  14. package/dist/assemble-B9Alds-z.js.map +1 -0
  15. package/dist/assemble-J5MukZFY.js +1 -0
  16. package/dist/{client-Bbo9SPlK.js → assert-EUIoRdIt.js} +10 -113
  17. package/dist/assert-EUIoRdIt.js.map +1 -0
  18. package/dist/bridge/index.mjs +248 -55
  19. package/dist/{capture-Bp74Z6Fr.js → capture-CNb9SuU5.js} +145 -31
  20. package/dist/capture-CNb9SuU5.js.map +1 -0
  21. package/dist/capture-jquXZBKK.js +1 -0
  22. package/dist/{cli-CVrMh_qz.js → cli-D303Vj5N.js} +133 -115
  23. package/dist/cli-D303Vj5N.js.map +1 -0
  24. package/dist/{cli-spec-CKEYa8V2.js → cli-spec-BPZbQG2p.js} +36 -17
  25. package/dist/cli-spec-BPZbQG2p.js.map +1 -0
  26. package/dist/cli.js +4 -2
  27. package/dist/cli.js.map +1 -1
  28. package/dist/client-fcwgwOAD.js +106 -0
  29. package/dist/client-fcwgwOAD.js.map +1 -0
  30. package/dist/{command-CzIFp1JQ.js → command-BLfT7vnQ.js} +18 -17
  31. package/dist/command-BLfT7vnQ.js.map +1 -0
  32. package/dist/{command-C5xFPKHM.js → command-BT9a37ZR.js} +374 -72
  33. package/dist/command-BT9a37ZR.js.map +1 -0
  34. package/dist/{command-DUT5l13I.js → command-Bge8F7Ko.js} +316 -83
  35. package/dist/command-Bge8F7Ko.js.map +1 -0
  36. package/dist/command-BkFjijN2.js +1 -0
  37. package/dist/{command-BFP0hKEb.js → command-CMJtHKRa.js} +14 -14
  38. package/dist/{command-BFP0hKEb.js.map → command-CMJtHKRa.js.map} +1 -1
  39. package/dist/commands-1p-bIWhN.js +1 -0
  40. package/dist/{commands-CLmPBrTS.js → commands-BFx16WB8.js} +7 -7
  41. package/dist/commands-BFx16WB8.js.map +1 -0
  42. package/dist/config-DEgnUiU-.js +756 -0
  43. package/dist/config-DEgnUiU-.js.map +1 -0
  44. package/dist/{context-DbSMEVKs.js → context-C1mxXh80.js} +11 -3
  45. package/dist/context-C1mxXh80.js.map +1 -0
  46. package/dist/{db-CfQFwJtq.js → db-CdHizc4_.js} +455 -36
  47. package/dist/db-CdHizc4_.js.map +1 -0
  48. package/dist/db-Dm1cRJJP.js +2 -0
  49. package/dist/debug-D7bEv_UV.js +1 -0
  50. package/dist/{dist-CTzThfu_.js → dist-B8hJImYt.js} +17 -4
  51. package/dist/dist-B8hJImYt.js.map +1 -0
  52. package/dist/{docker-CRQGQbIt.js → docker-7b_2SaH7.js} +22 -21
  53. package/dist/docker-7b_2SaH7.js.map +1 -0
  54. package/dist/{docker-DV2GNgle.js → docker-sZrNrr82.js} +3 -3
  55. package/dist/docker-sZrNrr82.js.map +1 -0
  56. package/dist/docker-yauK-9X8.js +1 -0
  57. package/dist/{doctor-DlKycx5H.js → doctor-BYNok4UO.js} +262 -83
  58. package/dist/doctor-BYNok4UO.js.map +1 -0
  59. package/dist/{duration-JsJrIWXq.js → duration-CEOQww97.js} +2 -2
  60. package/dist/{duration-JsJrIWXq.js.map → duration-CEOQww97.js.map} +1 -1
  61. package/dist/{egress-BhzNh7Yi.js → egress-C4PZTSSe.js} +146 -14
  62. package/dist/egress-C4PZTSSe.js.map +1 -0
  63. package/dist/environment-DNjRk0nU.js +1133 -0
  64. package/dist/environment-DNjRk0nU.js.map +1 -0
  65. package/dist/{errors-yDAEwmZo.js → errors-B6BSMs03.js} +2 -2
  66. package/dist/errors-B6BSMs03.js.map +1 -0
  67. package/dist/{errors-C9w_ud7g.js → errors-r025B0Zb.js} +4 -4
  68. package/dist/errors-r025B0Zb.js.map +1 -0
  69. package/dist/evaluate-C1UVL21l.d.ts +92 -0
  70. package/dist/evaluate-D4zeRGBF.js +2351 -0
  71. package/dist/evaluate-D4zeRGBF.js.map +1 -0
  72. package/dist/files-BAt0i00X.js +1 -0
  73. package/dist/{files-CSzVADHn.js → files-BXUdY8tr.js} +9 -8
  74. package/dist/{files-CSzVADHn.js.map → files-BXUdY8tr.js.map} +1 -1
  75. package/dist/files-BhyltlDB.js +1 -0
  76. package/dist/files-Bk1mC3AN.js +43 -0
  77. package/dist/files-Bk1mC3AN.js.map +1 -0
  78. package/dist/{files-DJUFg-4e.js → files-DQmHE7pb.js} +5 -5
  79. package/dist/{files-DJUFg-4e.js.map → files-DQmHE7pb.js.map} +1 -1
  80. package/dist/files-ZZPqfAo6.js +1 -0
  81. package/dist/harness-B8QC9u0O.js +323 -0
  82. package/dist/harness-B8QC9u0O.js.map +1 -0
  83. package/dist/harness.d.ts +16 -30
  84. package/dist/harness.js +1 -2
  85. package/dist/{header-CALhmafp.js → header-hK-Z_Po9.js} +2 -2
  86. package/dist/{header-CALhmafp.js.map → header-hK-Z_Po9.js.map} +1 -1
  87. package/dist/{images-BMgdpMAX.js → images-0On0cztu.js} +114 -45
  88. package/dist/images-0On0cztu.js.map +1 -0
  89. package/dist/index.d.ts +9 -37
  90. package/dist/index.js +6 -2138
  91. package/dist/{init-BIdLF0F9.js → init-B77Rpcqc.js} +26 -8
  92. package/dist/init-B77Rpcqc.js.map +1 -0
  93. package/dist/init-BrOWin3W.js +1 -0
  94. package/dist/{invocations-CLaL8AuW.js → invocations-DbGfBAA_.js} +4 -4
  95. package/dist/{invocations-CLaL8AuW.js.map → invocations-DbGfBAA_.js.map} +1 -1
  96. package/dist/{judge-CeYPN8P_.js → judge-DW_GDOmB.js} +11 -19
  97. package/dist/{judge-CeYPN8P_.js.map → judge-DW_GDOmB.js.map} +1 -1
  98. package/dist/judge.d.ts +2 -2
  99. package/dist/judge.js +1 -1
  100. package/dist/{live-S0qODb6o.js → live-jlfszAbb.js} +9 -20
  101. package/dist/live-jlfszAbb.js.map +1 -0
  102. package/dist/matchers-Ddmc2z7H.js +118 -0
  103. package/dist/matchers-Ddmc2z7H.js.map +1 -0
  104. package/dist/{model-DEQo3FkZ.js → model-DaVCY3rb.js} +2 -2
  105. package/dist/{model-DEQo3FkZ.js.map → model-DaVCY3rb.js.map} +1 -1
  106. package/dist/model-NM3ID0uR.js +1 -0
  107. package/dist/{model-B1BZoZ9b.js → model-h_cDtcRr.js} +18 -17
  108. package/dist/model-h_cDtcRr.js.map +1 -0
  109. package/dist/model-nwWJvaUR.js +1 -0
  110. package/dist/{model-BOnlAPzs.js → model-oqcDplJG.js} +111 -19
  111. package/dist/model-oqcDplJG.js.map +1 -0
  112. package/dist/{node-Co7EXge0.js → node-B3ydHo6t.js} +10 -47
  113. package/dist/node-B3ydHo6t.js.map +1 -0
  114. package/dist/object-CLf2-tNq.js +9 -0
  115. package/dist/object-CLf2-tNq.js.map +1 -0
  116. package/dist/{opencode-providers-ByD85Q0l.js → opencode-providers-J9colP0-.js} +96 -21
  117. package/dist/opencode-providers-J9colP0-.js.map +1 -0
  118. package/dist/options-Bh2W63dK.js +1119 -0
  119. package/dist/options-Bh2W63dK.js.map +1 -0
  120. package/dist/{pairs-DDsjgm5F.js → pairs-CnInRu-G.js} +76 -2
  121. package/dist/{pairs-DDsjgm5F.js.map → pairs-CnInRu-G.js.map} +1 -1
  122. package/dist/{patch-bDV8YFW0.js → patch-Zac5aIRM.js} +6 -6
  123. package/dist/{patch-bDV8YFW0.js.map → patch-Zac5aIRM.js.map} +1 -1
  124. package/dist/{plan-DUydFc_1.js → plan-C9Cy27Ay.js} +24 -9
  125. package/dist/plan-C9Cy27Ay.js.map +1 -0
  126. package/dist/preflight-CPWpQeBI.js +1 -0
  127. package/dist/{preflight-BkoSxf4C.js → preflight-D7iFPKeK.js} +8 -7
  128. package/dist/preflight-D7iFPKeK.js.map +1 -0
  129. package/dist/prepare-BGjePFQl.js +2 -0
  130. package/dist/{prepare-CUAWHebF.js → prepare-doGxaAGR.js} +38 -30
  131. package/dist/prepare-doGxaAGR.js.map +1 -0
  132. package/dist/{provenance-D7HK3vzt.js → provenance-DmE9uPVt.js} +3 -3
  133. package/dist/{provenance-D7HK3vzt.js.map → provenance-DmE9uPVt.js.map} +1 -1
  134. package/dist/provider-DehR4CMN.js +1 -0
  135. package/dist/providers-gDMko8fl.js +1 -0
  136. package/dist/providers-tAOD1NQN.js +165 -0
  137. package/dist/providers-tAOD1NQN.js.map +1 -0
  138. package/dist/{query-BjBMLa-C.js → query-Bes9Kh6Y.js} +3 -3
  139. package/dist/{query-BjBMLa-C.js.map → query-Bes9Kh6Y.js.map} +1 -1
  140. package/dist/query-C_G_svLU.js +1 -0
  141. package/dist/questions-DjAwMxZ3.js +524 -0
  142. package/dist/questions-DjAwMxZ3.js.map +1 -0
  143. package/dist/{record-BRP9vZrj.js → record-BKmMvZ6O.js} +9 -1
  144. package/dist/{record-BRP9vZrj.js.map → record-BKmMvZ6O.js.map} +1 -1
  145. package/dist/remote-HDRt16ew.js +378 -0
  146. package/dist/remote-HDRt16ew.js.map +1 -0
  147. package/dist/{results-Di7m8dQ3.js → results-DuauQI3Z.js} +4 -4
  148. package/dist/{results-Di7m8dQ3.js.map → results-DuauQI3Z.js.map} +1 -1
  149. package/dist/{resume-SUz1GskV.js → resume-BRfa8E_s.js} +10 -10
  150. package/dist/{resume-SUz1GskV.js.map → resume-BRfa8E_s.js.map} +1 -1
  151. package/dist/{root-CvdRlRZX.js → root-DICDHCtp.js} +4 -4
  152. package/dist/{root-CvdRlRZX.js.map → root-DICDHCtp.js.map} +1 -1
  153. package/dist/{runtime-DdsfnRz_.js → runtime-PX_oXiCS.js} +23 -71
  154. package/dist/runtime-PX_oXiCS.js.map +1 -0
  155. package/dist/sandbox-D3A8oUb7.js +70 -0
  156. package/dist/sandbox-D3A8oUb7.js.map +1 -0
  157. package/dist/sandbox.d.ts +19 -6
  158. package/dist/sandbox.js +1 -2
  159. package/dist/server-C7sg1ndo.js +1 -0
  160. package/dist/{server-BNnXtmS8.js → server-XDleKaF_.js} +11 -11
  161. package/dist/server-XDleKaF_.js.map +1 -0
  162. package/dist/shared-DYpIb1BI.js +166 -0
  163. package/dist/shared-DYpIb1BI.js.map +1 -0
  164. package/dist/{source-Dof0NQBm.js → source-C8xumIWj.js} +2 -2
  165. package/dist/{source-Dof0NQBm.js.map → source-C8xumIWj.js.map} +1 -1
  166. package/dist/source-fGd0SaKP.js +1 -0
  167. package/dist/{src-8rRXy4u9.js → src-B7treWa8.js} +1538 -180
  168. package/dist/src-B7treWa8.js.map +1 -0
  169. package/dist/{src-C1E9HDWO.js → src-C7_1SqDP.js} +3 -3
  170. package/dist/{src-C1E9HDWO.js.map → src-C7_1SqDP.js.map} +1 -1
  171. package/dist/{src-DDNXsD9H.js → src-CF17Ug08.js} +5 -4
  172. package/dist/src-CF17Ug08.js.map +1 -0
  173. package/dist/{src-C_4Umgh2.js → src-CFp86GtV.js} +52 -51
  174. package/dist/src-CFp86GtV.js.map +1 -0
  175. package/dist/src-C_lPtowT.js +2 -0
  176. package/dist/src-DIL0jST0.js +368 -0
  177. package/dist/src-DIL0jST0.js.map +1 -0
  178. package/dist/src-DNnG4e4R.js +2 -0
  179. package/dist/src-DTbrY1hi.js +2 -0
  180. package/dist/src-DdyJEh2v.js +2 -0
  181. package/dist/src-Dj9PAroc.js +2 -0
  182. package/dist/src-Du8H85Qq.js +2 -0
  183. package/dist/src-DvCg0NBs.js +324 -0
  184. package/dist/src-DvCg0NBs.js.map +1 -0
  185. package/dist/{src-COgE7991.js → src-DvK0EIZx.js} +5 -5
  186. package/dist/{src-COgE7991.js.map → src-DvK0EIZx.js.map} +1 -1
  187. package/dist/{src-DVy58-zZ.js → src-FGXhkEkH.js} +5 -5
  188. package/dist/{src-DVy58-zZ.js.map → src-FGXhkEkH.js.map} +1 -1
  189. package/dist/src-jzagbuqH.js +2 -0
  190. package/dist/src-ofUaYbuY.js +3 -0
  191. package/dist/src-pJZOrYR9.js +1 -0
  192. package/dist/{src-D95O-Smv.js → src-u8_ixn_F.js} +15 -11
  193. package/dist/src-u8_ixn_F.js.map +1 -0
  194. package/dist/{state-CiXyLqg0.js → state-C__9swoG.js} +35 -23
  195. package/dist/state-C__9swoG.js.map +1 -0
  196. package/dist/state-CeR6oz0k.js +66 -0
  197. package/dist/state-CeR6oz0k.js.map +1 -0
  198. package/dist/state-CgjQo29K.js +1 -0
  199. package/dist/studio-app/assets/index-CwQN3f_h.css +2 -0
  200. package/dist/studio-app/assets/{index-CROH2NB3.js → index-DrQc2Yxd.js} +11 -11
  201. package/dist/studio-app/index.html +2 -2
  202. package/dist/{summary-BTksrIxn.js → summary-BLAVLySU.js} +150 -19
  203. package/dist/summary-BLAVLySU.js.map +1 -0
  204. package/dist/{summary-2OAWF2N7.js → summary-DgyjUh_l.js} +7 -7
  205. package/dist/{summary-2OAWF2N7.js.map → summary-DgyjUh_l.js.map} +1 -1
  206. package/dist/testing.d.ts +3 -2
  207. package/dist/testing.js +3 -2
  208. package/dist/{tool-target-BU1JnSE9.js → tool-target-D2mcYlSQ.js} +14 -7
  209. package/dist/tool-target-D2mcYlSQ.js.map +1 -0
  210. package/dist/{tools-B10Uj7OI.js → tools-GCyNYSc1.js} +6 -6
  211. package/dist/tools-GCyNYSc1.js.map +1 -0
  212. package/dist/transcript-BNNANU8A.js +64 -0
  213. package/dist/transcript-BNNANU8A.js.map +1 -0
  214. package/dist/{types-D8RLfkFP.d.ts → types-g17bRAzt.d.ts} +389 -42
  215. package/dist/{usage-DDF_6tkV.js → usage-CleNKkly.js} +4 -2
  216. package/dist/{usage-DDF_6tkV.js.map → usage-CleNKkly.js.map} +1 -1
  217. package/dist/view/index.d.ts +42 -8
  218. package/dist/view/index.js +6 -6
  219. package/dist/views-BW6oCDUQ.js +2 -0
  220. package/dist/{views-Dqa5ojfZ.js → views-BmQF4UCI.js} +13 -8
  221. package/dist/views-BmQF4UCI.js.map +1 -0
  222. package/dist/{worker-entry-BAikHl9F.js → worker-entry-yOchGYYv.js} +16 -229
  223. package/dist/worker-entry-yOchGYYv.js.map +1 -0
  224. package/dist/{workspace-C-TrNIUc.js → workspace-CgyHEM0l.js} +6 -6
  225. package/dist/{workspace-C-TrNIUc.js.map → workspace-CgyHEM0l.js.map} +1 -1
  226. package/dist/workspace-D8sSgpiy.js +1 -0
  227. package/package.json +12 -12
  228. package/dist/agent-WSmTaesf.js.map +0 -1
  229. package/dist/assemble-BCZzTyR7.js.map +0 -1
  230. package/dist/assemble-C5qq5yT2.js +0 -2
  231. package/dist/capture-Bp74Z6Fr.js.map +0 -1
  232. package/dist/capture-DS-cPyuE.js +0 -2
  233. package/dist/cli-CVrMh_qz.js.map +0 -1
  234. package/dist/cli-spec-CKEYa8V2.js.map +0 -1
  235. package/dist/client-Bbo9SPlK.js.map +0 -1
  236. package/dist/command-BrmXUC-W.js +0 -2
  237. package/dist/command-C5xFPKHM.js.map +0 -1
  238. package/dist/command-CzIFp1JQ.js.map +0 -1
  239. package/dist/command-DUT5l13I.js.map +0 -1
  240. package/dist/commands-CLmPBrTS.js.map +0 -1
  241. package/dist/commands-fI3G2Wnh.js +0 -2
  242. package/dist/config-CGvBeewH.js +0 -457
  243. package/dist/config-CGvBeewH.js.map +0 -1
  244. package/dist/context-DbSMEVKs.js.map +0 -1
  245. package/dist/db-CSSFtGcN.js +0 -3
  246. package/dist/db-CfQFwJtq.js.map +0 -1
  247. package/dist/debug-SEmW4w8f.js +0 -2
  248. package/dist/dist-CTzThfu_.js.map +0 -1
  249. package/dist/docker-CRQGQbIt.js.map +0 -1
  250. package/dist/docker-DV2GNgle.js.map +0 -1
  251. package/dist/docker-Df_YOxxB.js +0 -2
  252. package/dist/doctor-DlKycx5H.js.map +0 -1
  253. package/dist/egress-BhzNh7Yi.js.map +0 -1
  254. package/dist/environment-1jE-HhO-.js +0 -657
  255. package/dist/environment-1jE-HhO-.js.map +0 -1
  256. package/dist/errors-C9w_ud7g.js.map +0 -1
  257. package/dist/errors-yDAEwmZo.js.map +0 -1
  258. package/dist/fake-instructions-CUI33I_F.js +0 -32
  259. package/dist/fake-instructions-CUI33I_F.js.map +0 -1
  260. package/dist/files-AiEKuEZe.js +0 -2
  261. package/dist/files-BM78_nnF.js +0 -2
  262. package/dist/files-BMCvfB4X.js +0 -2
  263. package/dist/harness-CeCp2GSW.js +0 -171
  264. package/dist/harness-CeCp2GSW.js.map +0 -1
  265. package/dist/images-BMgdpMAX.js.map +0 -1
  266. package/dist/index.js.map +0 -1
  267. package/dist/init-B6vegaP_.js +0 -2
  268. package/dist/init-BIdLF0F9.js.map +0 -1
  269. package/dist/jiti-BcJHCtrb.js +0 -46
  270. package/dist/jiti-BcJHCtrb.js.map +0 -1
  271. package/dist/live-S0qODb6o.js.map +0 -1
  272. package/dist/model-B1BZoZ9b.js.map +0 -1
  273. package/dist/model-BOnlAPzs.js.map +0 -1
  274. package/dist/model-DWeg5J7z.js +0 -2
  275. package/dist/model-FXko2kl7.js +0 -2
  276. package/dist/node-Co7EXge0.js.map +0 -1
  277. package/dist/opencode-providers-ByD85Q0l.js.map +0 -1
  278. package/dist/options-CKqyPGxX.js +0 -739
  279. package/dist/options-CKqyPGxX.js.map +0 -1
  280. package/dist/plan-DUydFc_1.js.map +0 -1
  281. package/dist/preflight-BkoSxf4C.js.map +0 -1
  282. package/dist/preflight-D5LW7Oqi.js +0 -2
  283. package/dist/prepare-CUAWHebF.js.map +0 -1
  284. package/dist/prepare-oji2oO8W.js +0 -3
  285. package/dist/provider-BDbNOQhQ.js +0 -2
  286. package/dist/providers-B1DzMvmH.js +0 -107
  287. package/dist/providers-B1DzMvmH.js.map +0 -1
  288. package/dist/providers-CpEfNU1F.js +0 -2
  289. package/dist/query-oPO_XrTy.js +0 -2
  290. package/dist/questions-B8by4Bbt.js +0 -234
  291. package/dist/questions-B8by4Bbt.js.map +0 -1
  292. package/dist/runtime-DdsfnRz_.js.map +0 -1
  293. package/dist/sandbox-D5v-of6d.js +0 -139
  294. package/dist/sandbox-D5v-of6d.js.map +0 -1
  295. package/dist/server-BNnXtmS8.js.map +0 -1
  296. package/dist/server-BNwoKzlm.js +0 -2
  297. package/dist/source-Bk_0ZaEY.js +0 -2
  298. package/dist/src-8rRXy4u9.js.map +0 -1
  299. package/dist/src-BGWuWp6I.js +0 -3
  300. package/dist/src-BRt0O02i.js +0 -3
  301. package/dist/src-Bx2x1ekD.js +0 -3
  302. package/dist/src-C_4Umgh2.js.map +0 -1
  303. package/dist/src-D95O-Smv.js.map +0 -1
  304. package/dist/src-DDNXsD9H.js.map +0 -1
  305. package/dist/src-DLa-ESW0.js +0 -4
  306. package/dist/src-cN0aB-WR.js +0 -3
  307. package/dist/src-cdIVjC5b.js +0 -2
  308. package/dist/src-sIsDHWYq.js +0 -3
  309. package/dist/state-Bo5zg4da.js +0 -2
  310. package/dist/state-CiXyLqg0.js.map +0 -1
  311. package/dist/studio-app/assets/index-B9MCTfuu.css +0 -2
  312. package/dist/summary-BTksrIxn.js.map +0 -1
  313. package/dist/tool-target-BU1JnSE9.js.map +0 -1
  314. package/dist/tools-B10Uj7OI.js.map +0 -1
  315. package/dist/views-Cs2Oqayd.js +0 -3
  316. package/dist/views-Dqa5ojfZ.js.map +0 -1
  317. package/dist/worker-entry-BAikHl9F.js.map +0 -1
  318. package/dist/workspace-Do_SiWBs.js +0 -2
@@ -1,33 +1,34 @@
1
- import { n as UsageError } from "./errors-yDAEwmZo.js";
2
- import { t as parseDuration } from "./duration-JsJrIWXq.js";
1
+ import { n as isOneOf } from "./object-CLf2-tNq.js";
2
+ import { n as UsageError } from "./errors-B6BSMs03.js";
3
+ import { t as parseDuration } from "./duration-CEOQww97.js";
4
+ import { f as sandboxId, s as harnessId } from "./options-Bh2W63dK.js";
5
+ import { A as workspaceLabel, p as environmentSandbox } from "./environment-DNjRk0nU.js";
6
+ import { a as fromCwd, i as evalSlug, n as attemptKey, o as newRunId } from "./ids-Bp6ut7ZD.js";
7
+ import { a as configPathFor, c as findConfig, d as malformedCredentials, f as missingCredentials, h as selectProfile, i as configLabel, l as hostCapacity, m as resolveConcurrency, p as requireConfig, u as loadConfig } from "./config-DEgnUiU-.js";
3
8
  import { n as loadEnvFiles, t as inCI } from "./env-BQqj93gu.js";
4
9
  import { o as redactSecrets, s as registerSecret } from "./redact-DJ9JCShu.js";
5
- import { o as PACKAGE_VERSION } from "./root-CvdRlRZX.js";
6
- import { T as workspaceLabel, u as environmentSandbox } from "./environment-1jE-HhO-.js";
7
- import { a as fromCwd, i as evalSlug, n as attemptKey, o as newRunId } from "./ids-Bp6ut7ZD.js";
8
- import { I as LABEL, X as imageInfo } from "./src-8rRXy4u9.js";
9
- import { d as sandboxId, s as harnessId } from "./options-CKqyPGxX.js";
10
- import { a as configPathFor, c as findConfig, d as malformedCredentials, f as missingCredentials, h as selectProfile, i as configLabel, l as hostCapacity, m as resolveConcurrency, p as requireConfig, u as loadConfig } from "./config-CGvBeewH.js";
10
+ import { o as PACKAGE_VERSION } from "./root-DICDHCtp.js";
11
+ import { I as LABEL, X as imageInfo } from "./src-B7treWa8.js";
11
12
  import { s as debugTime } from "./debug-D24NOQH1.js";
12
13
  import { i as sandboxWarningLine, n as clip, r as formatDuration } from "./text-gEcKjAyp.js";
13
14
  import { t as PrepareError } from "./provider-CmAYTQQs.js";
14
- import { H as cellContrast, L as judgeRatesLabel, M as cellJudgeRates, N as cellUsage, P as collapsedJudgeLabel, _ as hasUngatedCells, b as isUngatedMiss, h as formatUsage, q as effortLabel, w as runOutcome } from "./model-BOnlAPzs.js";
15
+ import { B as judgeRatesLabel, H as summaryJudgeRates, I as collapsedJudgeLabel, P as cellUsage, T as runOutcome, Y as cellContrast, g as formatUsage, l as evalMarkOutcome, tt as effortLabel, v as hasUngatedCells, x as isUngatedMiss } from "./model-oqcDplJG.js";
15
16
  import { a as familyLiftLabel, i as familyHeadLabel, n as familyCases, o as familyRateLabel, r as familyEffortLabel, t as caseLabel } from "./family-D2b7WD10.js";
16
- import { a as sampleReasons } from "./pairs-DDsjgm5F.js";
17
- import { a as gateLabel, d as undiscriminating, f as undiscriminatingLabel, i as checksLabel, n as answersLabel, o as liftLabel } from "./summary-BTksrIxn.js";
18
- import { c as writeLiveProgress, i as prepareResume, o as resolveResume, r as loadPrevious, s as writeCurrent, t as completedKeysFor } from "./resume-SUz1GskV.js";
19
- import { n as FLAGS, o as helpText, r as GLOBAL, t as COMMANDS } from "./cli-spec-CKEYa8V2.js";
20
- import { i as runtimeInfo, n as gitInfo, r as runnerInfo, t as author } from "./provenance-D7HK3vzt.js";
17
+ import { n as headToHeadLines, s as sampleReasons } from "./pairs-CnInRu-G.js";
18
+ import { a as contrastLines, f as undiscriminating, i as checksLabel, n as answersLabel, o as gateLabel, p as undiscriminatingLabel, s as liftLabel } from "./summary-BLAVLySU.js";
19
+ import { c as writeLiveProgress, i as prepareResume, o as resolveResume, r as loadPrevious, s as writeCurrent, t as completedKeysFor } from "./resume-BRfa8E_s.js";
20
+ import { a as commandHelpText, n as FLAGS, r as GLOBAL, s as helpText, t as COMMANDS } from "./cli-spec-BPZbQG2p.js";
21
+ import { i as runtimeInfo, n as gitInfo, r as runnerInfo, t as author } from "./provenance-DmE9uPVt.js";
21
22
  import { t as budgetMarker } from "./budget-DBUrH4jX.js";
22
- import { n as prepareAll, o as writePrepared, r as prepareTargets, t as RunStopError } from "./preflight-BkoSxf4C.js";
23
- import { r as imageHarness } from "./prepare-CUAWHebF.js";
24
- import { n as createProviders } from "./providers-B1DzMvmH.js";
25
- import { a as redactArgv, r as commandOf, t as logInvocation } from "./invocations-CLaL8AuW.js";
23
+ import { n as prepareAll, o as writePrepared, r as prepareTargets, t as RunStopError } from "./preflight-D7iFPKeK.js";
24
+ import { n as imageHarness } from "./prepare-doGxaAGR.js";
25
+ import { r as createProviders, t as attemptImage } from "./providers-tAOD1NQN.js";
26
+ import { a as redactArgv, r as commandOf, t as logInvocation } from "./invocations-DbGfBAA_.js";
26
27
  import { n as stripAnsi, t as colors } from "./colors-QV9dFVhN.js";
27
28
  import { existsSync, mkdirSync, readdirSync, writeFileSync } from "node:fs";
28
29
  import { dirname, join } from "node:path";
29
- import { appendFile, readFile, rm } from "node:fs/promises";
30
30
  import { inspect } from "node:util";
31
+ import { appendFile, readFile, rm } from "node:fs/promises";
31
32
  import { detectAgent } from "std-env";
32
33
  import { Command, Option } from "commander";
33
34
  //#region src/cli-parse.ts
@@ -65,13 +66,13 @@ function parseCli(argv) {
65
66
  const subcommand = configure(command.command(subName), `reeval ${name} ${subName}`, sub.flags);
66
67
  subcommand.argument("[args...]").action(() => {
67
68
  const [stray] = Object.keys(valuesOf(command, spec.flags));
68
- if (stray) throw new UsageError(`--${stray} isn't an option of reeval ${name} ${subName}`);
69
+ if (stray) throw new UsageError(`--${stray} isn't an option of reeval ${name} ${subName}. Run reeval --help.`);
69
70
  parsed = done(program, subcommand, [name, subName], sub.flags, sub.positionals);
70
71
  });
71
72
  }
72
73
  }
73
74
  program.parse(argv, { from: "user" });
74
- if (!parsed) throw new UsageError("Run reeval --help.");
75
+ if (!parsed) throw new UsageError("reeval couldn't read that command line. Run reeval --help.");
75
76
  return parsed;
76
77
  }
77
78
  function configure(command, name, flags) {
@@ -124,11 +125,16 @@ function usageError(error, command) {
124
125
  const [flag = "", value] = arg.replace(/^--?/, "").split("=");
125
126
  const known = arg.startsWith("--") ? FLAGS[flag] : Object.entries(FLAGS).find(([, s]) => "short" in s && s.short === flag)?.[1];
126
127
  const long = arg.startsWith("--") ? flag : Object.entries(FLAGS).find(([, s]) => "short" in s && s.short === flag)?.[0];
127
- if (known && value !== void 0 && known.type === "boolean") return new UsageError(`Option '--${flag}' does not take an argument`);
128
+ if (known && value !== void 0 && known.type === "boolean") return new UsageError(`--${flag} doesn't take a value: pass --${flag} on its own.`);
128
129
  if (known) return new UsageError(`--${long} isn't an option of ${command}. Run reeval --help.`);
129
130
  const hint = rest.join(" ").replace(/^\(|\)$/g, "");
130
131
  return new UsageError(`Unknown option '${arg}'. ${hint ? `${hint} ` : ""}Run reeval --help.`);
131
132
  }
133
+ if (error.code === "commander.optionMissingArgument") {
134
+ const usage = /'([^']+)'/.exec(first)?.[1] ?? "";
135
+ const flag = usage.split(/[ ,]/).find((part) => part.startsWith("--")) ?? usage;
136
+ return new UsageError(`${flag} needs a value, e.g. ${usage}. Run reeval --help.`);
137
+ }
132
138
  return new UsageError(first.charAt(0).toUpperCase() + first.slice(1));
133
139
  }
134
140
  //#endregion
@@ -172,10 +178,10 @@ async function preflight(uses, options) {
172
178
  writePrepared(options.root, options.runId, outcomes);
173
179
  const images = [];
174
180
  for (const o of outcomes) {
175
- if (!o.ok || o.target.kind !== "docker") continue;
176
- const { ref, id, agentCli } = o.handle;
181
+ if (!o.ok || o.target.sandbox.kind !== "docker") continue;
182
+ const { ref, id, agentCli } = attemptImage(o.handle);
177
183
  if (images.some((i) => i.id === id)) continue;
178
- const info = await imageInfo(ref);
184
+ const info = await imageInfo(ref, o.target.sandbox.engine);
179
185
  images.push({
180
186
  ref,
181
187
  id,
@@ -417,8 +423,10 @@ function resultFor(entry, attempt, results) {
417
423
  function entryOutcome(e) {
418
424
  const outcomes = e.attempts.map(attemptOutcome);
419
425
  if (outcomes.length && outcomes.every((o) => o === "cancelled")) return "cancelled";
420
- return e.outcome;
426
+ return evalMarkOutcome(e);
421
427
  }
428
+ /** Every cell is `gate: 'none'`: the eval reports its attempts but nothing gates it. */
429
+ const allUngated = (e) => e.cells.length > 0 && e.cells.every((c) => c.gate === "none");
422
430
  const pct = (rate) => rate === null ? " – " : `${Math.round(rate * 100)}%`.padStart(4);
423
431
  function evalColumns(c, e) {
424
432
  const [attempt, ...more] = e.attempts;
@@ -427,7 +435,7 @@ function evalColumns(c, e) {
427
435
  if (more.length) {
428
436
  const pass = e.attempts.filter((a) => a.outcome === "pass").length;
429
437
  const counted = e.attempts.filter((a) => a.outcome === "pass" || a.outcome === "fail").length;
430
- const rate = hasUngatedCells(e.cells) ? ` · pass@1 ${pct(e.passRate).trim()} gated` : ` pass@1 ${pct(e.passRate)}`;
438
+ const rate = allUngated(e) ? " · not gated" : hasUngatedCells(e.cells) ? ` · pass@1 ${pct(e.passRate).trim()} gated` : ` pass@1 ${pct(e.passRate)}`;
431
439
  return c.dim(`${`${pass}/${counted}`.padStart(7)}${rate} ${e.attempts.length} attempts`);
432
440
  }
433
441
  if (attemptOutcome(attempt) === "cancelled") return c.yellow("cancelled");
@@ -460,7 +468,7 @@ function cellRows(c, e, indent) {
460
468
  const tokens = formatUsage(cellUsage(e, cell.key));
461
469
  const usage = tokens ? ` ${c.dim(tokens)}` : "";
462
470
  const rows = [`${indent}${c.dim(cell.key.padEnd(width))}${role} ${counts} pass@1 ${pct(cell.passRate)}${note}${infra}${usage}`];
463
- const rates = judgeRatesLabel(cellJudgeRates(e, cell.key));
471
+ const rates = judgeRatesLabel(summaryJudgeRates(e, cell));
464
472
  if (rates) rows.push(`${indent} ${c.dim(rates)}`);
465
473
  const effort = cellContrast(e, cell.key);
466
474
  if (effort) rows.push(`${indent} ${c.dim(`effort: ${effortLabel(effort)}`)}`);
@@ -470,11 +478,21 @@ function cellRows(c, e, indent) {
470
478
  return rows;
471
479
  });
472
480
  }
481
+ /** With two variants or more, each pair of arms on one harness: lift, checks and effort. */
482
+ function contrastRows(c, e, indent) {
483
+ const lines = contrastLines(e);
484
+ if (!lines.length) return [];
485
+ return [`${indent}${c.dim("contrasts (each pair of arms, same harness)")}`, ...lines.map((line) => `${indent} ${c.dim(line)}`)];
486
+ }
473
487
  /** One row per compare question: its win rates, or why it has none. They never gate. */
474
488
  function questionRows(c, e, indent) {
475
489
  return (e.answers ?? []).flatMap((a) => {
476
490
  const label = answersLabel(a);
477
- return [`${indent}${c.dim("question")} ${a.error !== void 0 ? c.yellow(label) : label}`, ...sampleReasons(a.votes).map((reason) => `${indent} ${c.dim(reason)}`)];
491
+ return [
492
+ `${indent}${c.dim("question")} ${a.error !== void 0 ? c.yellow(label) : label}`,
493
+ ...headToHeadLines(a.votes).map((line) => `${indent} ${line}`),
494
+ ...sampleReasons(a.votes).map((reason) => `${indent} ${c.dim(reason)}`)
495
+ ];
478
496
  });
479
497
  }
480
498
  /** A family's mark: its pooled gate's and its cases' worst. */
@@ -566,8 +584,9 @@ function tree(c, evals, families = []) {
566
584
  }
567
585
  if (!entry) return [` ${pad}${text}`];
568
586
  return [
569
- ` ${pad}${`${mark(c, entryOutcome(entry))} ${text}`}${fill} ${evalColumns(c, entry)}`,
587
+ ` ${pad}${`${entryOutcome(entry) === "pass" && allUngated(entry) && entry.attempts.some((a) => isUngatedMiss(entry, a)) ? MISS_MARK(c) : mark(c, entryOutcome(entry))} ${text}`}${fill} ${evalColumns(c, entry)}`,
570
588
  ...cellRows(c, entry, ` ${pad} `),
589
+ ...contrastRows(c, entry, ` ${pad} `),
571
590
  ...questionRows(c, entry, ` ${pad} `)
572
591
  ];
573
592
  });
@@ -828,6 +847,7 @@ var AgentRenderer = class {
828
847
  for (const error of e.unhandledErrors) this.#write(`ERROR ${error}`);
829
848
  for (const entry of e.record.evals) for (const a of entry.answers ?? []) {
830
849
  this.#write(`question ${entry.id}: ${answersLabel(a)}`);
850
+ for (const line of headToHeadLines(a.votes)) this.#write(` ${line}`);
831
851
  for (const reason of sampleReasons(a.votes)) this.#write(` ${reason}`);
832
852
  }
833
853
  for (const x of undiscriminating(e.record.evals)) this.#write(`check doesn't discriminate: ${undiscriminatingLabel(x)}`);
@@ -1113,13 +1133,13 @@ const CI_VARS = [
1113
1133
  const isCI = (env) => CI_VARS.some((name) => set(env, name));
1114
1134
  function pick(name, value, allowed) {
1115
1135
  if (value === void 0 || value === "") return void 0;
1116
- if (value === "auto" || allowed.includes(value)) return value;
1117
- throw new UsageError(`${name} must be one of ${[...allowed, "auto"].join(", ")}`);
1136
+ if (value === "auto" || isOneOf(allowed, value)) return value;
1137
+ throw new UsageError(`${name} is one of ${[...allowed, "auto"].join(", ")} (got ${value})`);
1118
1138
  }
1119
1139
  function parseHeartbeat(value) {
1120
1140
  if (!value) return 6e4;
1121
1141
  const match = /^(\d+(?:\.\d+)?)(ms|s|m)?$/.exec(value);
1122
- if (!match) throw new UsageError(`REEVAL_HEARTBEAT must be a duration like 30s or 0`);
1142
+ if (!match) throw new UsageError(`REEVAL_HEARTBEAT must be a duration like 30s, or 0 for none (got ${value})`);
1123
1143
  const unit = {
1124
1144
  ms: 1,
1125
1145
  s: 1e3,
@@ -1219,12 +1239,16 @@ async function run(argv) {
1219
1239
  return EXIT.ok;
1220
1240
  }
1221
1241
  const [command, ...filters] = positionals;
1242
+ if (values.help && command) {
1243
+ console.log(commandHelpText(version, positionals));
1244
+ return EXIT.ok;
1245
+ }
1222
1246
  if (values.help || !command) {
1223
1247
  console.log(HELP);
1224
1248
  return values.help ? EXIT.ok : EXIT.usage;
1225
1249
  }
1226
1250
  if (command === "init") {
1227
- const { initCommand } = await import("./init-B6vegaP_.js");
1251
+ const { initCommand } = await import("./init-BrOWin3W.js");
1228
1252
  return initCommand(values, filters, {
1229
1253
  out: (s) => console.log(s),
1230
1254
  input: process.stdin,
@@ -1233,7 +1257,7 @@ async function run(argv) {
1233
1257
  });
1234
1258
  }
1235
1259
  if (command === "doctor") {
1236
- const { doctorCommand } = await import("./doctor-DlKycx5H.js");
1260
+ const { doctorCommand } = await import("./doctor-BYNok4UO.js");
1237
1261
  return doctorCommand(values, {
1238
1262
  out: (s) => console.log(s),
1239
1263
  color: !!process.stdout.isTTY && !process.env.NO_COLOR,
@@ -1241,7 +1265,7 @@ async function run(argv) {
1241
1265
  });
1242
1266
  }
1243
1267
  if (command === "report") {
1244
- const { reportCommand } = await import("./command-CzIFp1JQ.js");
1268
+ const { reportCommand } = await import("./command-BLfT7vnQ.js");
1245
1269
  return reportCommand(values, filters, {
1246
1270
  out: (s) => console.log(s),
1247
1271
  err: (s) => console.error(dim(s)),
@@ -1256,7 +1280,7 @@ async function run(argv) {
1256
1280
  }
1257
1281
  if (command === "studio") {
1258
1282
  const config = await loadConfig(configPath, "studio");
1259
- const { studioCommand } = await import("./command-BFP0hKEb.js");
1283
+ const { studioCommand } = await import("./command-CMJtHKRa.js");
1260
1284
  return studioCommand({
1261
1285
  config,
1262
1286
  flags: values,
@@ -1267,7 +1291,7 @@ async function run(argv) {
1267
1291
  if (command === "mcp") {
1268
1292
  if (!values.http) console.log = console.info = console.debug = console.error;
1269
1293
  const config = await loadConfig(configPath, "mcp");
1270
- const { mcpCommand } = await import("./command-C5xFPKHM.js");
1294
+ const { mcpCommand } = await import("./command-BT9a37ZR.js");
1271
1295
  return mcpCommand({
1272
1296
  config,
1273
1297
  flags: values,
@@ -1276,7 +1300,7 @@ async function run(argv) {
1276
1300
  }
1277
1301
  if (command in HISTORY_COMMANDS) {
1278
1302
  const config = await loadConfig(configPath, command);
1279
- const commands = await import("./commands-fI3G2Wnh.js");
1303
+ const commands = await import("./commands-1p-bIWhN.js");
1280
1304
  const ctx = {
1281
1305
  config,
1282
1306
  flags: values,
@@ -1289,7 +1313,7 @@ async function run(argv) {
1289
1313
  case "compare": return commands.compareCommand(ctx, filters);
1290
1314
  case "checkout": return commands.checkoutCommand(ctx, filters);
1291
1315
  case "query": {
1292
- const { queryCommand } = await import("./query-oPO_XrTy.js");
1316
+ const { queryCommand } = await import("./query-C_G_svLU.js");
1293
1317
  return queryCommand({
1294
1318
  ...ctx,
1295
1319
  err: (s) => console.error(dim(s))
@@ -1297,7 +1321,7 @@ async function run(argv) {
1297
1321
  }
1298
1322
  case "analyze": {
1299
1323
  loadEnvFiles(configPath);
1300
- const { analyzeCommand } = await import("./command-BrmXUC-W.js");
1324
+ const { analyzeCommand } = await import("./command-BkFjijN2.js");
1301
1325
  return analyzeCommand({
1302
1326
  ...ctx,
1303
1327
  err: (s) => console.error(dim(s))
@@ -1330,16 +1354,19 @@ async function cleanCommand(flags, configPath) {
1330
1354
  keep = Number(flags.keep);
1331
1355
  if (!(Number.isInteger(keep) && keep >= 0)) throw new UsageError(`--keep must be a whole number (got ${flags.keep})`);
1332
1356
  }
1333
- const { debugRoot, pruneDebug } = await import("./files-BM78_nnF.js");
1334
- const { formatBytes } = await import("./debug-SEmW4w8f.js");
1357
+ const { debugRoot, pruneDebug } = await import("./files-BAt0i00X.js");
1358
+ const { formatBytes } = await import("./debug-D7bEv_UV.js");
1335
1359
  const { runs, bytes } = await pruneDebug(config.root, keep);
1336
1360
  const where = fromCwd(debugRoot(config.root)) || ".";
1337
1361
  console.log(runs.length ? `Removed debug data for ${runs.length} run${runs.length === 1 ? "" : "s"} (${formatBytes(bytes)}) from ${where}` : `No debug data to remove in ${where}`);
1338
1362
  if (flags.images) {
1339
- const { pruneImages } = await import("./src-cdIVjC5b.js");
1340
- const { requireDocker } = await import("./providers-CpEfNU1F.js");
1341
- await requireDocker();
1342
- const removed = await pruneImages();
1363
+ const { dockerAvailable, pruneImages } = await import("./src-pJZOrYR9.js");
1364
+ const { requireDocker } = await import("./providers-gDMko8fl.js");
1365
+ const engines = [];
1366
+ for (const engine of ["docker", "podman"]) if (await dockerAvailable(engine)) engines.push(engine);
1367
+ if (!engines.length) await requireDocker();
1368
+ let removed = 0;
1369
+ for (const engine of engines) removed += await pruneImages(engine);
1343
1370
  console.log(removed ? `Removed ${removed} image${removed === 1 ? "" : "s"} reeval built that nothing uses` : "No leftover images to remove");
1344
1371
  }
1345
1372
  return EXIT.ok;
@@ -1355,40 +1382,21 @@ function verbosityOf(flags) {
1355
1382
  * does. Needs a config, as `reeval run` does: there is no default image.
1356
1383
  */
1357
1384
  async function imageBuildCommand(flags, configPath, filters) {
1358
- const { buildImages, imagePlanLines, imageTargets } = await import("./images-BMgdpMAX.js");
1385
+ const { buildImages, imagePlanLines, imageTargets, plannedImageUses } = await import("./images-0On0cztu.js");
1359
1386
  const { runId, stagingDir, config, runs, tags, concurrency, profile } = await startRun(await prepareRun({
1360
1387
  ...flags,
1361
1388
  "dry-run": true
1362
1389
  }, configPath));
1363
1390
  const root = config.root;
1364
- const { runEngine } = await import("./node-Co7EXge0.js");
1365
- let planned = [];
1366
- await runEngine({
1367
- run: JSON.parse(JSON.stringify({
1368
- runId,
1369
- stagingDir,
1370
- config,
1371
- runs,
1372
- tags,
1373
- concurrency,
1374
- profile
1375
- })),
1376
- filters,
1377
- onPlan: async (collected) => {
1378
- if (collected.unmatched.length) throw unmatchedFilter(config, collected.unmatched);
1379
- planned = collected.planned.filter((p) => !p.attempt.plan.skip);
1380
- return false;
1381
- }
1382
- });
1383
- const targets = imageTargets(planned.length ? planned.map((p) => ({
1384
- id: p.id,
1385
- harness: p.attempt.harness,
1386
- sandbox: p.attempt.sandbox
1387
- })) : config.harness.map((harness) => ({
1388
- id: "",
1389
- harness,
1390
- sandbox: config.sandbox
1391
- })));
1391
+ const targets = imageTargets(await plannedImageUses({
1392
+ runId,
1393
+ stagingDir,
1394
+ config,
1395
+ runs,
1396
+ tags,
1397
+ concurrency,
1398
+ profile
1399
+ }, filters, (parts) => unmatchedFilter(config, parts)));
1392
1400
  if (targets.length === 0) {
1393
1401
  console.log("No eval runs in a Docker sandbox, so there are no images to build.");
1394
1402
  return EXIT.ok;
@@ -1397,7 +1405,7 @@ async function imageBuildCommand(flags, configPath, filters) {
1397
1405
  for (const line of await imagePlanLines(targets, root)) console.log(line);
1398
1406
  return EXIT.ok;
1399
1407
  }
1400
- const { PrepareError } = await import("./provider-BDbNOQhQ.js");
1408
+ const { PrepareError } = await import("./provider-DehR4CMN.js");
1401
1409
  let built;
1402
1410
  try {
1403
1411
  built = await buildImages(targets, root, {
@@ -1434,7 +1442,7 @@ async function runCommand(flags, configPath, filters) {
1434
1442
  if (githubOut) await appendFile(githubOut, `run-id=${ctx.runId}\n`).catch(() => {});
1435
1443
  const stepStart = process.env.GITHUB_STEP_SUMMARY;
1436
1444
  if (stepStart) await appendFile(stepStart, `run ${ctx.runId}\n`).catch(() => {});
1437
- const { engineVersions } = await import("./node-Co7EXge0.js");
1445
+ const { engineVersions } = await import("./node-B3ydHo6t.js");
1438
1446
  const renderer = createRenderer({
1439
1447
  out: setup.json ? { write: () => true } : process.stdout,
1440
1448
  output: setup.output,
@@ -1455,15 +1463,16 @@ async function runCommand(flags, configPath, filters) {
1455
1463
  }
1456
1464
  const { engineRun, plan, sandboxVersions, budgetReached, live, notes, questions } = executed;
1457
1465
  invocation.unhandledErrors = engineRun.unhandledErrors;
1458
- if ((interrupted || engineRun.cancelled) && plan?.sandboxes.some((s) => s.kind === "docker")) {
1459
- const { removeRunContainers } = await import("./docker-Df_YOxxB.js");
1460
- await removeRunContainers(ctx.runId);
1466
+ const engines = [...new Set(plan?.sandboxes.flatMap((s) => s.kind === "docker" ? [s.engine ?? "docker"] : []))];
1467
+ if ((interrupted || engineRun.cancelled) && engines.length) {
1468
+ const { removeRunContainers } = await import("./docker-yauK-9X8.js");
1469
+ await removeRunContainers(ctx.runId, engines);
1461
1470
  }
1462
1471
  if (notes) {
1463
1472
  const cancelled = interrupted || engineRun.cancelled;
1464
1473
  const written = await notes.finish(cancelled);
1465
1474
  if (!cancelled && written.length) {
1466
- const { notesLine } = await import("./agent-6FefIhX7.js");
1475
+ const { notesLine } = await import("./agent-CURAwx_q.js");
1467
1476
  const text = notesLine(ctx.config.root, ctx.runId, written);
1468
1477
  renderer.onEvent({
1469
1478
  type: "notice",
@@ -1480,8 +1489,8 @@ async function runCommand(flags, configPath, filters) {
1480
1489
  }
1481
1490
  const stopped = interrupted || engineRun.cancelled;
1482
1491
  const answers = questions && !stopped ? await questions.settle() : void 0;
1483
- const { lockfiles } = await import("./state-Bo5zg4da.js");
1484
- const { writeScratchRun } = await import("./results-Di7m8dQ3.js");
1492
+ const { lockfiles } = await import("./state-CgjQo29K.js");
1493
+ const { writeScratchRun } = await import("./results-DuauQI3Z.js");
1485
1494
  const run = await writeScratchRun({
1486
1495
  ctx,
1487
1496
  author: ctx.author,
@@ -1491,7 +1500,7 @@ async function runCommand(flags, configPath, filters) {
1491
1500
  interrupted: stopped,
1492
1501
  budgetReached: budgetReached(),
1493
1502
  plan,
1494
- es: version,
1503
+ reeval: version,
1495
1504
  runtime: runtimeInfo(),
1496
1505
  language: { name: "typescript" },
1497
1506
  enginePackages: engineVersions,
@@ -1506,8 +1515,8 @@ async function runCommand(flags, configPath, filters) {
1506
1515
  }, () => live?.stop());
1507
1516
  const { record } = run;
1508
1517
  if (notes && !stopped) {
1509
- const { summarizeRun } = await import("./agent-6FefIhX7.js");
1510
- const { resolveAnalysisModel } = await import("./model-FXko2kl7.js");
1518
+ const { summarizeRun } = await import("./agent-CURAwx_q.js");
1519
+ const { resolveAnalysisModel } = await import("./model-NM3ID0uR.js");
1511
1520
  const model = resolveAnalysisModel(ctx.config, "agent");
1512
1521
  const { level, text } = await summarizeRun(ctx.config, record.runId, model);
1513
1522
  renderer.onEvent({
@@ -1517,7 +1526,7 @@ async function runCommand(flags, configPath, filters) {
1517
1526
  text
1518
1527
  });
1519
1528
  }
1520
- const { pruneDebug } = await import("./files-BM78_nnF.js");
1529
+ const { pruneDebug } = await import("./files-BAt0i00X.js");
1521
1530
  await pruneDebug(ctx.config.root, ctx.config.debug.keep).catch(() => {});
1522
1531
  const summary = run.artifactDir ? join(run.artifactDir, "summary.md") : run.recordPath;
1523
1532
  renderer.onEvent({
@@ -1534,7 +1543,7 @@ async function runCommand(flags, configPath, filters) {
1534
1543
  const { config } = ctx;
1535
1544
  const mode = setup.record;
1536
1545
  if ((flags.record || mode === "always" || mode === "ci" && inCI()) && record.status !== "interrupted") {
1537
- const { record: recordCmd } = await import("./commands-fI3G2Wnh.js");
1546
+ const { record: recordCmd } = await import("./commands-1p-bIWhN.js");
1538
1547
  const allow = record.status === "budget" ? { "allow-incomplete": true } : {};
1539
1548
  console.log(await recordCmd(config, record.runId, {
1540
1549
  ...flags,
@@ -1572,9 +1581,10 @@ async function prepareRun(flags, configPath) {
1572
1581
  }
1573
1582
  const sandboxes = [environmentSandbox(config.environment, config.sandbox), ...profile?.defaults.environment ? [environmentSandbox(profile.defaults.environment, config.sandbox)] : []];
1574
1583
  const concurrency = await resolveConcurrency(config, flags.concurrency, async () => {
1575
- if (!sandboxes.some((s) => s.kind === "docker")) return hostCapacity();
1576
- const { dockerCapacity } = await import("./src-cdIVjC5b.js");
1577
- return await dockerCapacity() ?? hostCapacity();
1584
+ const container = sandboxes.find((s) => s.kind === "docker");
1585
+ if (!container) return hostCapacity();
1586
+ const { dockerCapacity } = await import("./src-pJZOrYR9.js");
1587
+ return await dockerCapacity(container.engine) ?? hostCapacity();
1578
1588
  });
1579
1589
  return {
1580
1590
  output,
@@ -1600,11 +1610,11 @@ async function prepareRun(flags, configPath) {
1600
1610
  async function startRun({ config, profile, runs, tags, concurrency, verbosity, configFile, resume, dryRun }) {
1601
1611
  const startedAt = /* @__PURE__ */ new Date();
1602
1612
  const git = await gitInfo(config.root, [config.history.dir]);
1603
- const { worktreePatch } = await import("./state-Bo5zg4da.js");
1613
+ const { worktreePatch } = await import("./state-CgjQo29K.js");
1604
1614
  const patch = git?.dirty ? await worktreePatch(config.root, [config.history.dir]) : null;
1605
1615
  const who = await author(config.root);
1606
- const { stagingDir, sweepStaging } = await import("./results-Di7m8dQ3.js");
1607
- const { scratchDir } = await import("./files-BMCvfB4X.js");
1616
+ const { stagingDir, sweepStaging } = await import("./results-DuauQI3Z.js");
1617
+ const { scratchDir } = await import("./files-ZZPqfAo6.js");
1608
1618
  const scratch = scratchDir(config.root);
1609
1619
  if (resume !== void 0) {
1610
1620
  const target = await resolveResume(config.root, resume || void 0);
@@ -1615,8 +1625,8 @@ async function startRun({ config, profile, runs, tags, concurrency, verbosity, c
1615
1625
  artifacts: target.previousArtifacts
1616
1626
  } : await loadPrevious(stagingDir(config.root, target.runId));
1617
1627
  if (!dryRun) try {
1618
- const { removeRunContainers } = await import("./docker-Df_YOxxB.js");
1619
- await removeRunContainers(target.runId);
1628
+ const { removeRunContainers } = await import("./docker-yauK-9X8.js");
1629
+ await removeRunContainers(target.runId, ["docker", "podman"]);
1620
1630
  } catch {}
1621
1631
  return {
1622
1632
  runId: target.runId,
@@ -1686,8 +1696,8 @@ async function executeRun(ctx, setup, filters, renderer) {
1686
1696
  configFile,
1687
1697
  completed: []
1688
1698
  }));
1689
- const { runEngine } = await import("./node-Co7EXge0.js");
1690
- const { buildPlan, checkAttemptBudget, planDocument, planLine, planTable } = await import("./plan-DUydFc_1.js");
1699
+ const { runEngine } = await import("./node-B3ydHo6t.js");
1700
+ const { buildPlan, checkAttemptBudget, planDocument, planLine, planTable } = await import("./plan-C9Cy27Ay.js");
1691
1701
  let plan;
1692
1702
  let sandboxVersions = { images: [] };
1693
1703
  let preflightStop;
@@ -1714,7 +1724,7 @@ async function executeRun(ctx, setup, filters, renderer) {
1714
1724
  } : p);
1715
1725
  toRun = skipped;
1716
1726
  for (const p of skipped) for (const name of p.attempt.secretVars) registerSecret(process.env[name]);
1717
- const models = skipped.some((p) => !p.attempt.plan.skip && p.attempt.plan.questions?.length) ? await import("./model-FXko2kl7.js") : void 0;
1727
+ const models = skipped.some((p) => !p.attempt.plan.skip && p.attempt.plan.questions?.length) ? await import("./model-NM3ID0uR.js") : void 0;
1718
1728
  plan = await buildPlan({
1719
1729
  planned: skipped,
1720
1730
  profile,
@@ -1730,7 +1740,7 @@ async function executeRun(ctx, setup, filters, renderer) {
1730
1740
  completed: completed.size
1731
1741
  };
1732
1742
  run.completed = [...completed];
1733
- const { imageStages, imageTargets } = await import("./images-BMgdpMAX.js");
1743
+ const { imageStages, imageTargets } = await import("./images-0On0cztu.js");
1734
1744
  const targets = imageTargets(skipped.filter((p) => !p.attempt.plan.skip).map((p) => ({
1735
1745
  id: p.id,
1736
1746
  harness: p.attempt.harness,
@@ -1751,10 +1761,16 @@ async function executeRun(ctx, setup, filters, renderer) {
1751
1761
  if (setup.dryRun) {
1752
1762
  const todos = excluded.filter((e) => e.mode === "todo").map((e) => e.id);
1753
1763
  lines.push(...planTable(plan, todos));
1754
- const { imageStatusLines } = await import("./images-BMgdpMAX.js");
1755
- const { dockerAvailable } = await import("./src-cdIVjC5b.js");
1756
- if (targets.length && await dockerAvailable()) lines.push(...await imageStatusLines(targets, config.root));
1757
- else if (targets.length) lines.push("images not checked: Docker is not running");
1764
+ const { imageStatusLines } = await import("./images-0On0cztu.js");
1765
+ const { dockerAvailable, engineSpec } = await import("./src-pJZOrYR9.js");
1766
+ const engines = [...new Set(targets.map((t) => t.sandbox.engine ?? "docker"))];
1767
+ const down = [];
1768
+ for (const engine of engines) if (!await dockerAvailable(engine)) down.push(engine);
1769
+ if (targets.length && !down.length) lines.push(...await imageStatusLines(targets, config.root));
1770
+ else if (targets.length) {
1771
+ const names = down.map((e) => engineSpec(e).name).join(" and ");
1772
+ lines.push(`images not checked: ${names} ${down.length === 1 ? "is" : "are"} not running`);
1773
+ }
1758
1774
  }
1759
1775
  lines.push(...plan.warnings.map((w) => `warning: ${w}`));
1760
1776
  lines.push(...plan.hints.map((h) => `hint: ${h}`));
@@ -1766,7 +1782,7 @@ async function executeRun(ctx, setup, filters, renderer) {
1766
1782
  });
1767
1783
  if (setup.dryRun) return false;
1768
1784
  checkAttemptBudget(plan, setup.force, config.file);
1769
- const analysis = config.analysis.agent ? await import("./model-FXko2kl7.js") : null;
1785
+ const analysis = config.analysis.agent ? await import("./model-NM3ID0uR.js") : null;
1770
1786
  analysis?.analysisModelName(config, "agent");
1771
1787
  const questionModels = /* @__PURE__ */ new Set();
1772
1788
  const asked = [];
@@ -1775,7 +1791,9 @@ async function executeRun(ctx, setup, filters, renderer) {
1775
1791
  const questions = (row.plan.questions ?? []).map((q) => ({
1776
1792
  question: q.question,
1777
1793
  model: models.questionModel(config, q, row.id),
1778
- ...q.across ? { across: q.across } : {}
1794
+ ...q.across ? { across: q.across } : {},
1795
+ ...q.state ? { state: q.state } : {},
1796
+ ...q.artifacts !== void 0 ? { artifacts: q.artifacts } : {}
1779
1797
  }));
1780
1798
  for (const q of questions) if (typeof q.model === "string") questionModels.add(q.model);
1781
1799
  if (questions.length) asked.push({
@@ -1796,7 +1814,7 @@ async function executeRun(ctx, setup, filters, renderer) {
1796
1814
  });
1797
1815
  if (malformed.length) throw new UsageError(`Credentials with whitespace or a line break in them: ${malformed.join(", ")}. A key copied from a wrapped terminal line picks these up; set it again as one line.`);
1798
1816
  if (analysis) {
1799
- const { startNotes } = await import("./agent-6FefIhX7.js");
1817
+ const { startNotes } = await import("./agent-CURAwx_q.js");
1800
1818
  notes = startNotes({
1801
1819
  config,
1802
1820
  model: analysis.resolveAnalysisModel(config, "agent"),
@@ -1812,7 +1830,7 @@ async function executeRun(ctx, setup, filters, renderer) {
1812
1830
  });
1813
1831
  }
1814
1832
  if (asked.length) {
1815
- const { questionRunner } = await import("./questions-B8by4Bbt.js");
1833
+ const { questionRunner } = await import("./questions-DjAwMxZ3.js");
1816
1834
  questions = questionRunner({
1817
1835
  evals: asked,
1818
1836
  stagingDir,
@@ -1829,7 +1847,7 @@ async function executeRun(ctx, setup, filters, renderer) {
1829
1847
  }
1830
1848
  });
1831
1849
  }
1832
- const { prepareWorkspaces, workspaceKey } = await import("./workspace-Do_SiWBs.js");
1850
+ const { prepareWorkspaces, workspaceKey } = await import("./workspace-D8sSgpiy.js");
1833
1851
  const live = skipped.filter((p) => !p.attempt.plan.skip);
1834
1852
  const outcomes = await prepareWorkspaces(live.flatMap(({ attempt: a }) => a.workspace ? [{
1835
1853
  workspace: a.workspace,
@@ -1977,14 +1995,14 @@ async function executeRun(ctx, setup, filters, renderer) {
1977
1995
  throw error;
1978
1996
  } finally {
1979
1997
  clearTimeout(budgetTimer);
1980
- const { removePrepared } = await import("./preflight-D5LW7Oqi.js");
1998
+ const { removePrepared } = await import("./preflight-CPWpQeBI.js");
1981
1999
  removePrepared(config.root, runId);
1982
- const { removePreparedWorkspaces } = await import("./workspace-Do_SiWBs.js");
2000
+ const { removePreparedWorkspaces } = await import("./workspace-D8sSgpiy.js");
1983
2001
  removePreparedWorkspaces(config.root, runId);
1984
2002
  }
1985
2003
  if (preflightStop) throw preflightStop;
1986
2004
  if (engineRun.noFiles || !engineRun.stopped && engineRun.evals.length === 0 && !interrupted) live?.remove();
1987
- if (engineRun.noFiles && !filters.length && !tags.length) throw new UsageError(`No eval files match ${config.include.join(", ")} (config.include) in ${config.root}. Name eval files to match it, or set include in ${config.file}.`);
2005
+ if (engineRun.noFiles && !filters.length && !tags.length) throw new UsageError(`No eval files in ${config.root} match include: ${config.include.join(", ")}. Name eval files to match it, or set include in ${config.file}.`);
1988
2006
  if (engineRun.noFiles || !engineRun.stopped && engineRun.evals.length === 0 && !interrupted) throw noMatch(config, filters, tags);
1989
2007
  return {
1990
2008
  engineRun,
@@ -2013,7 +2031,7 @@ function finish(code, error, kind) {
2013
2031
  const command = commandOf(argv);
2014
2032
  logInvocation(root, {
2015
2033
  at: new Date(startedAt).toISOString(),
2016
- es: version,
2034
+ reeval: version,
2017
2035
  argv: redactArgv(argv),
2018
2036
  command,
2019
2037
  exitCode: code,
@@ -2062,4 +2080,4 @@ run(process.argv.slice(2)).finally(() => {
2062
2080
  //#endregion
2063
2081
  export {};
2064
2082
 
2065
- //# sourceMappingURL=cli-CVrMh_qz.js.map
2083
+ //# sourceMappingURL=cli-D303Vj5N.js.map