reeval 0.8.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 (326) hide show
  1. package/README.md +52 -40
  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-B72lZ6w5.js → agent-CURAwx_q.js} +6 -6
  8. package/dist/{agent-B72lZ6w5.js.map → agent-CURAwx_q.js.map} +1 -1
  9. package/dist/{agent-Cfj1wD4D.js → agent-CaS_2Sce.js} +92 -26
  10. package/dist/agent-CaS_2Sce.js.map +1 -0
  11. package/dist/{analysis-BTNnKh1w.js → analysis-Bxub9LMT.js} +4 -4
  12. package/dist/{analysis-BTNnKh1w.js.map → analysis-Bxub9LMT.js.map} +1 -1
  13. package/dist/{assemble-BbFVjHeS.js → assemble-B9Alds-z.js} +290 -30
  14. package/dist/assemble-B9Alds-z.js.map +1 -0
  15. package/dist/assemble-J5MukZFY.js +1 -0
  16. package/dist/{client-CwzU9CiW.js → assert-EUIoRdIt.js} +38 -112
  17. package/dist/assert-EUIoRdIt.js.map +1 -0
  18. package/dist/bridge/index.mjs +248 -55
  19. package/dist/{capture-BXhBfmsM.js → capture-CNb9SuU5.js} +204 -39
  20. package/dist/capture-CNb9SuU5.js.map +1 -0
  21. package/dist/capture-jquXZBKK.js +1 -0
  22. package/dist/{cli-BMjTKY-D.js → cli-D303Vj5N.js} +257 -146
  23. package/dist/cli-D303Vj5N.js.map +1 -0
  24. package/dist/{cli-spec-DSvKsOK4.js → cli-spec-BPZbQG2p.js} +38 -19
  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-JPGNzFsA.js → command-BLfT7vnQ.js} +19 -18
  31. package/dist/command-BLfT7vnQ.js.map +1 -0
  32. package/dist/{command-BK4kOgkH.js → command-BT9a37ZR.js} +381 -78
  33. package/dist/command-BT9a37ZR.js.map +1 -0
  34. package/dist/{command-BqJtFiPy.js → command-Bge8F7Ko.js} +384 -101
  35. package/dist/command-Bge8F7Ko.js.map +1 -0
  36. package/dist/command-BkFjijN2.js +1 -0
  37. package/dist/{command-BdstSEHu.js → command-CMJtHKRa.js} +14 -14
  38. package/dist/{command-BdstSEHu.js.map → command-CMJtHKRa.js.map} +1 -1
  39. package/dist/commands-1p-bIWhN.js +1 -0
  40. package/dist/{commands-B618jg3C.js → commands-BFx16WB8.js} +8 -8
  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-CvUv7DUb.js → context-C1mxXh80.js} +11 -7
  45. package/dist/context-C1mxXh80.js.map +1 -0
  46. package/dist/{db-DFbtGIYy.js → db-CdHizc4_.js} +582 -53
  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-2qns7hJ2.js → docker-7b_2SaH7.js} +35 -22
  53. package/dist/docker-7b_2SaH7.js.map +1 -0
  54. package/dist/{docker-IFRW8K5f.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-B6oYTPoR.js → doctor-BYNok4UO.js} +263 -84
  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-IUKdeayc.js → egress-C4PZTSSe.js} +147 -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/family-D2b7WD10.js +67 -0
  73. package/dist/family-D2b7WD10.js.map +1 -0
  74. package/dist/files-BAt0i00X.js +1 -0
  75. package/dist/{files-CMSUXAEg.js → files-BXUdY8tr.js} +10 -9
  76. package/dist/{files-CMSUXAEg.js.map → files-BXUdY8tr.js.map} +1 -1
  77. package/dist/files-BhyltlDB.js +1 -0
  78. package/dist/files-Bk1mC3AN.js +43 -0
  79. package/dist/files-Bk1mC3AN.js.map +1 -0
  80. package/dist/{files-B6aVVGrk.js → files-DQmHE7pb.js} +5 -5
  81. package/dist/{files-B6aVVGrk.js.map → files-DQmHE7pb.js.map} +1 -1
  82. package/dist/files-ZZPqfAo6.js +1 -0
  83. package/dist/{git-EmdFJ4DY.js → git-DfG-YJ1u.js} +2 -2
  84. package/dist/{git-EmdFJ4DY.js.map → git-DfG-YJ1u.js.map} +1 -1
  85. package/dist/harness-B8QC9u0O.js +323 -0
  86. package/dist/harness-B8QC9u0O.js.map +1 -0
  87. package/dist/harness.d.ts +19 -31
  88. package/dist/harness.js +1 -2
  89. package/dist/{header-_F0EWob3.js → header-hK-Z_Po9.js} +10 -3
  90. package/dist/{header-_F0EWob3.js.map → header-hK-Z_Po9.js.map} +1 -1
  91. package/dist/{images-CscddrJU.js → images-0On0cztu.js} +114 -45
  92. package/dist/images-0On0cztu.js.map +1 -0
  93. package/dist/index.d.ts +10 -26
  94. package/dist/index.js +6 -2108
  95. package/dist/{init-NQfIvi-0.js → init-B77Rpcqc.js} +26 -8
  96. package/dist/init-B77Rpcqc.js.map +1 -0
  97. package/dist/init-BrOWin3W.js +1 -0
  98. package/dist/{invocations-nPvrlZPj.js → invocations-DbGfBAA_.js} +4 -4
  99. package/dist/{invocations-nPvrlZPj.js.map → invocations-DbGfBAA_.js.map} +1 -1
  100. package/dist/{judge-CeYPN8P_.js → judge-DW_GDOmB.js} +11 -19
  101. package/dist/{judge-CeYPN8P_.js.map → judge-DW_GDOmB.js.map} +1 -1
  102. package/dist/judge.d.ts +2 -2
  103. package/dist/judge.js +1 -1
  104. package/dist/{live-S0qODb6o.js → live-jlfszAbb.js} +9 -20
  105. package/dist/live-jlfszAbb.js.map +1 -0
  106. package/dist/matchers-Ddmc2z7H.js +118 -0
  107. package/dist/matchers-Ddmc2z7H.js.map +1 -0
  108. package/dist/{model-DEQo3FkZ.js → model-DaVCY3rb.js} +2 -2
  109. package/dist/{model-DEQo3FkZ.js.map → model-DaVCY3rb.js.map} +1 -1
  110. package/dist/model-NM3ID0uR.js +1 -0
  111. package/dist/{model-Cl507trk.js → model-h_cDtcRr.js} +19 -18
  112. package/dist/model-h_cDtcRr.js.map +1 -0
  113. package/dist/model-nwWJvaUR.js +1 -0
  114. package/dist/{model-BndnmcLm.js → model-oqcDplJG.js} +271 -34
  115. package/dist/model-oqcDplJG.js.map +1 -0
  116. package/dist/{node-Co7EXge0.js → node-B3ydHo6t.js} +10 -47
  117. package/dist/node-B3ydHo6t.js.map +1 -0
  118. package/dist/object-CLf2-tNq.js +9 -0
  119. package/dist/object-CLf2-tNq.js.map +1 -0
  120. package/dist/{opencode-providers-ByD85Q0l.js → opencode-providers-J9colP0-.js} +96 -21
  121. package/dist/opencode-providers-J9colP0-.js.map +1 -0
  122. package/dist/options-Bh2W63dK.js +1119 -0
  123. package/dist/options-Bh2W63dK.js.map +1 -0
  124. package/dist/{pairs-DDsjgm5F.js → pairs-CnInRu-G.js} +76 -2
  125. package/dist/{pairs-DDsjgm5F.js.map → pairs-CnInRu-G.js.map} +1 -1
  126. package/dist/{patch-CGCVipPu.js → patch-Zac5aIRM.js} +6 -6
  127. package/dist/{patch-CGCVipPu.js.map → patch-Zac5aIRM.js.map} +1 -1
  128. package/dist/{plan-PPc4-6xd.js → plan-C9Cy27Ay.js} +75 -32
  129. package/dist/plan-C9Cy27Ay.js.map +1 -0
  130. package/dist/preflight-CPWpQeBI.js +1 -0
  131. package/dist/{preflight-CddycK92.js → preflight-D7iFPKeK.js} +8 -7
  132. package/dist/preflight-D7iFPKeK.js.map +1 -0
  133. package/dist/prepare-BGjePFQl.js +2 -0
  134. package/dist/{prepare-CsP-057p.js → prepare-doGxaAGR.js} +38 -30
  135. package/dist/prepare-doGxaAGR.js.map +1 -0
  136. package/dist/process-CSVO_jsc.js +119 -0
  137. package/dist/process-CSVO_jsc.js.map +1 -0
  138. package/dist/{provenance-CsX6PHDR.js → provenance-DmE9uPVt.js} +4 -4
  139. package/dist/{provenance-CsX6PHDR.js.map → provenance-DmE9uPVt.js.map} +1 -1
  140. package/dist/provider-DehR4CMN.js +1 -0
  141. package/dist/providers-gDMko8fl.js +1 -0
  142. package/dist/providers-tAOD1NQN.js +165 -0
  143. package/dist/providers-tAOD1NQN.js.map +1 -0
  144. package/dist/{query-BUcwCYsI.js → query-Bes9Kh6Y.js} +3 -3
  145. package/dist/{query-BUcwCYsI.js.map → query-Bes9Kh6Y.js.map} +1 -1
  146. package/dist/query-C_G_svLU.js +1 -0
  147. package/dist/questions-DjAwMxZ3.js +524 -0
  148. package/dist/questions-DjAwMxZ3.js.map +1 -0
  149. package/dist/{record-BRP9vZrj.js → record-BKmMvZ6O.js} +9 -1
  150. package/dist/{record-BRP9vZrj.js.map → record-BKmMvZ6O.js.map} +1 -1
  151. package/dist/remote-HDRt16ew.js +378 -0
  152. package/dist/remote-HDRt16ew.js.map +1 -0
  153. package/dist/{results-BcSHWbgB.js → results-DuauQI3Z.js} +4 -4
  154. package/dist/{results-BcSHWbgB.js.map → results-DuauQI3Z.js.map} +1 -1
  155. package/dist/{resume-DZ9AmfPv.js → resume-BRfa8E_s.js} +10 -10
  156. package/dist/{resume-DZ9AmfPv.js.map → resume-BRfa8E_s.js.map} +1 -1
  157. package/dist/{root-CvdRlRZX.js → root-DICDHCtp.js} +4 -4
  158. package/dist/{root-CvdRlRZX.js.map → root-DICDHCtp.js.map} +1 -1
  159. package/dist/{runtime-Dfb2r-cS.js → runtime-PX_oXiCS.js} +105 -11
  160. package/dist/runtime-PX_oXiCS.js.map +1 -0
  161. package/dist/sandbox-D3A8oUb7.js +70 -0
  162. package/dist/sandbox-D3A8oUb7.js.map +1 -0
  163. package/dist/sandbox.d.ts +22 -8
  164. package/dist/sandbox.js +1 -2
  165. package/dist/server-C7sg1ndo.js +1 -0
  166. package/dist/{server-Da60oe4b.js → server-XDleKaF_.js} +11 -11
  167. package/dist/server-XDleKaF_.js.map +1 -0
  168. package/dist/shared-DYpIb1BI.js +166 -0
  169. package/dist/shared-DYpIb1BI.js.map +1 -0
  170. package/dist/{source-BVOnL3sn.js → source-C8xumIWj.js} +2 -2
  171. package/dist/{source-BVOnL3sn.js.map → source-C8xumIWj.js.map} +1 -1
  172. package/dist/source-fGd0SaKP.js +1 -0
  173. package/dist/{src-TdJuDYqB.js → src-B7treWa8.js} +1597 -292
  174. package/dist/src-B7treWa8.js.map +1 -0
  175. package/dist/{src-C1E9HDWO.js → src-C7_1SqDP.js} +3 -3
  176. package/dist/{src-C1E9HDWO.js.map → src-C7_1SqDP.js.map} +1 -1
  177. package/dist/{src-DDNXsD9H.js → src-CF17Ug08.js} +5 -4
  178. package/dist/src-CF17Ug08.js.map +1 -0
  179. package/dist/{src-D_cXqmnI.js → src-CFp86GtV.js} +60 -60
  180. package/dist/src-CFp86GtV.js.map +1 -0
  181. package/dist/src-C_lPtowT.js +2 -0
  182. package/dist/src-DIL0jST0.js +368 -0
  183. package/dist/src-DIL0jST0.js.map +1 -0
  184. package/dist/src-DNnG4e4R.js +2 -0
  185. package/dist/src-DTbrY1hi.js +2 -0
  186. package/dist/src-DdyJEh2v.js +2 -0
  187. package/dist/src-Dj9PAroc.js +2 -0
  188. package/dist/src-Du8H85Qq.js +2 -0
  189. package/dist/src-DvCg0NBs.js +324 -0
  190. package/dist/src-DvCg0NBs.js.map +1 -0
  191. package/dist/{src-CxTC5kNI.js → src-DvK0EIZx.js} +8 -10
  192. package/dist/{src-CxTC5kNI.js.map → src-DvK0EIZx.js.map} +1 -1
  193. package/dist/{src-DVy58-zZ.js → src-FGXhkEkH.js} +5 -5
  194. package/dist/{src-DVy58-zZ.js.map → src-FGXhkEkH.js.map} +1 -1
  195. package/dist/src-jzagbuqH.js +2 -0
  196. package/dist/src-ofUaYbuY.js +3 -0
  197. package/dist/src-pJZOrYR9.js +1 -0
  198. package/dist/{src-D95O-Smv.js → src-u8_ixn_F.js} +15 -11
  199. package/dist/src-u8_ixn_F.js.map +1 -0
  200. package/dist/{state-B72h_jEw.js → state-C__9swoG.js} +36 -24
  201. package/dist/state-C__9swoG.js.map +1 -0
  202. package/dist/state-CeR6oz0k.js +66 -0
  203. package/dist/state-CeR6oz0k.js.map +1 -0
  204. package/dist/state-CgjQo29K.js +1 -0
  205. package/dist/studio-app/assets/index-CwQN3f_h.css +2 -0
  206. package/dist/studio-app/assets/{index-Bgr-efZm.js → index-DrQc2Yxd.js} +12 -12
  207. package/dist/studio-app/index.html +2 -2
  208. package/dist/{summary-k3mhWWXv.js → summary-BLAVLySU.js} +202 -17
  209. package/dist/summary-BLAVLySU.js.map +1 -0
  210. package/dist/{summary-CJdxaRdM.js → summary-DgyjUh_l.js} +7 -7
  211. package/dist/{summary-CJdxaRdM.js.map → summary-DgyjUh_l.js.map} +1 -1
  212. package/dist/testing.d.ts +3 -2
  213. package/dist/testing.js +3 -2
  214. package/dist/{tool-target-BU1JnSE9.js → tool-target-D2mcYlSQ.js} +14 -7
  215. package/dist/tool-target-D2mcYlSQ.js.map +1 -0
  216. package/dist/{tools-D0gF2QoV.js → tools-GCyNYSc1.js} +7 -7
  217. package/dist/tools-GCyNYSc1.js.map +1 -0
  218. package/dist/transcript-BNNANU8A.js +64 -0
  219. package/dist/transcript-BNNANU8A.js.map +1 -0
  220. package/dist/types-C5vI3g1C.js.map +1 -1
  221. package/dist/{types-_LOFdPUf.d.ts → types-g17bRAzt.d.ts} +578 -49
  222. package/dist/{usage-DDF_6tkV.js → usage-CleNKkly.js} +4 -2
  223. package/dist/{usage-DDF_6tkV.js.map → usage-CleNKkly.js.map} +1 -1
  224. package/dist/view/index.d.ts +83 -17
  225. package/dist/view/index.js +7 -6
  226. package/dist/views-BW6oCDUQ.js +2 -0
  227. package/dist/{views-DZ1YDqey.js → views-BmQF4UCI.js} +13 -8
  228. package/dist/views-BmQF4UCI.js.map +1 -0
  229. package/dist/{worker-entry-DXeyWY-m.js → worker-entry-yOchGYYv.js} +16 -225
  230. package/dist/worker-entry-yOchGYYv.js.map +1 -0
  231. package/dist/{workspace-DpXdrslo.js → workspace-CgyHEM0l.js} +7 -7
  232. package/dist/{workspace-DpXdrslo.js.map → workspace-CgyHEM0l.js.map} +1 -1
  233. package/dist/workspace-D8sSgpiy.js +1 -0
  234. package/docker/Dockerfile +7 -5
  235. package/package.json +12 -12
  236. package/dist/agent-Cfj1wD4D.js.map +0 -1
  237. package/dist/assemble-BbFVjHeS.js.map +0 -1
  238. package/dist/assemble-CXiTVyHD.js +0 -2
  239. package/dist/capture-BXhBfmsM.js.map +0 -1
  240. package/dist/capture-N7r3yeak.js +0 -2
  241. package/dist/cli-BMjTKY-D.js.map +0 -1
  242. package/dist/cli-spec-DSvKsOK4.js.map +0 -1
  243. package/dist/client-CwzU9CiW.js.map +0 -1
  244. package/dist/command-BK4kOgkH.js.map +0 -1
  245. package/dist/command-BqJtFiPy.js.map +0 -1
  246. package/dist/command-CTVGuH8y.js +0 -2
  247. package/dist/command-JPGNzFsA.js.map +0 -1
  248. package/dist/commands-B618jg3C.js.map +0 -1
  249. package/dist/commands-Duo2ur3r.js +0 -2
  250. package/dist/config-B-E0xRkf.js +0 -447
  251. package/dist/config-B-E0xRkf.js.map +0 -1
  252. package/dist/context-CvUv7DUb.js.map +0 -1
  253. package/dist/db-CnoUy-FZ.js +0 -3
  254. package/dist/db-DFbtGIYy.js.map +0 -1
  255. package/dist/debug-SEmW4w8f.js +0 -2
  256. package/dist/dist-CTzThfu_.js.map +0 -1
  257. package/dist/docker-2qns7hJ2.js.map +0 -1
  258. package/dist/docker-D6t23fZl.js +0 -2
  259. package/dist/docker-IFRW8K5f.js.map +0 -1
  260. package/dist/doctor-B6oYTPoR.js.map +0 -1
  261. package/dist/egress-IUKdeayc.js.map +0 -1
  262. package/dist/environment-DiCljXMD.js +0 -657
  263. package/dist/environment-DiCljXMD.js.map +0 -1
  264. package/dist/errors-C9w_ud7g.js.map +0 -1
  265. package/dist/errors-yDAEwmZo.js.map +0 -1
  266. package/dist/fake-instructions-CUI33I_F.js +0 -32
  267. package/dist/fake-instructions-CUI33I_F.js.map +0 -1
  268. package/dist/files-BM78_nnF.js +0 -2
  269. package/dist/files-BpYgF2z0.js +0 -2
  270. package/dist/files-YCCVaTQC.js +0 -2
  271. package/dist/harness-iqWeJQMM.js +0 -154
  272. package/dist/harness-iqWeJQMM.js.map +0 -1
  273. package/dist/images-CscddrJU.js.map +0 -1
  274. package/dist/index.js.map +0 -1
  275. package/dist/init-DBHyi92L.js +0 -2
  276. package/dist/init-NQfIvi-0.js.map +0 -1
  277. package/dist/jiti-BcJHCtrb.js +0 -46
  278. package/dist/jiti-BcJHCtrb.js.map +0 -1
  279. package/dist/live-S0qODb6o.js.map +0 -1
  280. package/dist/model-BbLGRtOs.js +0 -2
  281. package/dist/model-BndnmcLm.js.map +0 -1
  282. package/dist/model-Cl507trk.js.map +0 -1
  283. package/dist/model-DMOraCcm.js +0 -2
  284. package/dist/node-Co7EXge0.js.map +0 -1
  285. package/dist/opencode-providers-ByD85Q0l.js.map +0 -1
  286. package/dist/options-DPUlm4FI.js +0 -735
  287. package/dist/options-DPUlm4FI.js.map +0 -1
  288. package/dist/plan-PPc4-6xd.js.map +0 -1
  289. package/dist/preflight-CddycK92.js.map +0 -1
  290. package/dist/preflight-Zumy0adT.js +0 -2
  291. package/dist/prepare-CKdMoC7e.js +0 -3
  292. package/dist/prepare-CsP-057p.js.map +0 -1
  293. package/dist/provider-BDbNOQhQ.js +0 -2
  294. package/dist/providers-DkwiLKDS.js +0 -107
  295. package/dist/providers-DkwiLKDS.js.map +0 -1
  296. package/dist/providers-yXZZcPfx.js +0 -2
  297. package/dist/query-noGbekGF.js +0 -2
  298. package/dist/questions-BEPj98fZ.js +0 -234
  299. package/dist/questions-BEPj98fZ.js.map +0 -1
  300. package/dist/runtime-Dfb2r-cS.js.map +0 -1
  301. package/dist/sandbox--ZXuscAZ.js +0 -134
  302. package/dist/sandbox--ZXuscAZ.js.map +0 -1
  303. package/dist/server-Da60oe4b.js.map +0 -1
  304. package/dist/server-DiGR4JxK.js +0 -2
  305. package/dist/source-Dqu0jKwx.js +0 -2
  306. package/dist/src-BHNiP-5A.js +0 -4
  307. package/dist/src-BT4dB5CO.js +0 -2
  308. package/dist/src-BT5pwco0.js +0 -3
  309. package/dist/src-BrMbt1B2.js +0 -3
  310. package/dist/src-D13vpMh0.js +0 -3
  311. package/dist/src-D95O-Smv.js.map +0 -1
  312. package/dist/src-DDNXsD9H.js.map +0 -1
  313. package/dist/src-D_cXqmnI.js.map +0 -1
  314. package/dist/src-DdRlaiRc.js +0 -3
  315. package/dist/src-TdJuDYqB.js.map +0 -1
  316. package/dist/src-xczuQbE6.js +0 -3
  317. package/dist/state-B72h_jEw.js.map +0 -1
  318. package/dist/state-Bf_Vq_pV.js +0 -2
  319. package/dist/studio-app/assets/index-CUx6GoL5.css +0 -2
  320. package/dist/summary-k3mhWWXv.js.map +0 -1
  321. package/dist/tool-target-BU1JnSE9.js.map +0 -1
  322. package/dist/tools-D0gF2QoV.js.map +0 -1
  323. package/dist/views-DZ1YDqey.js.map +0 -1
  324. package/dist/views-Ds0GXWtX.js +0 -3
  325. package/dist/worker-entry-DXeyWY-m.js.map +0 -1
  326. package/dist/workspace-DzNL-3iO.js +0 -2
@@ -20,7 +20,9 @@ const sumUsage = (usages) => {
20
20
  const promptTokens = (u) => u.input + u.cacheRead + u.cacheWrite;
21
21
  /** Prompt side, output, and reasoning when the harness reported it. No USD. */
22
22
  const totalTokens = (u) => promptTokens(u) + u.output + (u.reasoning ?? 0);
23
+ /** A token count as people read it: `9,512`, `430k`, `1,094k`. */
24
+ const formatTokens = (n) => n >= 1e4 ? `${Math.round(n / 1e3).toLocaleString("en-US")}k` : Math.round(n).toLocaleString("en-US");
23
25
  //#endregion
24
- export { totalTokens as i, promptTokens as n, sumUsage as r, addUsage as t };
26
+ export { totalTokens as a, sumUsage as i, formatTokens as n, promptTokens as r, addUsage as t };
25
27
 
26
- //# sourceMappingURL=usage-DDF_6tkV.js.map
28
+ //# sourceMappingURL=usage-CleNKkly.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage-DDF_6tkV.js","names":[],"sources":["../src/usage.ts"],"mappings":";;AAGA,SAAgB,SAAS,GAAsB,GAAyC;CACtF,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,KAAK;CAC1B,OAAO;EACL,OAAO,EAAE,QAAQ,EAAE;EACnB,QAAQ,EAAE,SAAS,EAAE;EACrB,WAAW,EAAE,YAAY,EAAE;EAC3B,YAAY,EAAE,aAAa,EAAE;EAC7B,WACE,EAAE,cAAc,QAAQ,EAAE,cAAc,OAAO,QAAQ,EAAE,aAAa,MAAM,EAAE,aAAa;CAC/F;AACF;;AAGA,MAAa,YAAY,WAAuE;CAC9F,IAAI,QAA2B;CAC/B,KAAK,MAAM,KAAK,QAAQ,QAAQ,SAAS,OAAO,KAAK,IAAI;CACzD,OAAO;AACT;;AAGA,MAAa,gBAAgB,MAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE;;AAGzE,MAAa,eAAe,MAAkB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa"}
1
+ {"version":3,"file":"usage-CleNKkly.js","names":[],"sources":["../src/usage.ts"],"mappings":";;AAGA,SAAgB,SAAS,GAAsB,GAAyC;CACtF,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,KAAK;CAC1B,OAAO;EACL,OAAO,EAAE,QAAQ,EAAE;EACnB,QAAQ,EAAE,SAAS,EAAE;EACrB,WAAW,EAAE,YAAY,EAAE;EAC3B,YAAY,EAAE,aAAa,EAAE;EAC7B,WACE,EAAE,cAAc,QAAQ,EAAE,cAAc,OAAO,QAAQ,EAAE,aAAa,MAAM,EAAE,aAAa;CAC/F;AACF;;AAGA,MAAa,YAAY,WAAuE;CAC9F,IAAI,QAA2B;CAC/B,KAAK,MAAM,KAAK,QAAQ,QAAQ,SAAS,OAAO,KAAK,IAAI;CACzD,OAAO;AACT;;AAGA,MAAa,gBAAgB,MAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE;;AAGzE,MAAa,eAAe,MAAkB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa;;AAG3F,MAAa,gBAAgB,MAC3B,KAAK,MACD,GAAG,KAAK,MAAM,IAAI,GAAI,CAAC,CAAC,eAAe,OAAO,EAAE,KAChD,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,OAAO"}
@@ -1,9 +1,9 @@
1
- import { $t as TOKENS_UNREPORTED, Bt as FileRef, Dt as TokenUsage, Gt as RunRecord, Ht as HistoryEntry, It as ArtifactRef, Jt as EFFORT_ALPHA, Kt as StackSummary, Lt as AttemptRecord, Ot as TranscriptEvent, Qt as Spread, Rt as CellRecord, Ut as JudgementRecord, Vt as HistoryCell, Wt as Lift, Xt as EffortSample, Yt as EffortContrast, Zt as EffortVerdict, an as effortChangeLabel, cn as effortSample, dn as formatCount, en as VERDICT_TEXT, fn as formatRatio, ft as Outcome, in as contrastEffort, jt as TurnStatus, ln as effortSummary, mn as tokenValues, nn as cellEffort, on as effortLabel, pn as formatSeconds, qt as CellEffort, rn as cellSamples, sn as effortOf, tn as cellContrast, un as effortVerdict, xt as SandboxWarning, zt as EvalEntry } from "../types-_LOFdPUf.js";
1
+ import { $t as RunRecord, Cn as formatCount, En as tokenValues, Et as SandboxWarning, Gt as FamilyLift, Ht as AttemptRecord, It as TurnStatus, Jt as FileRef, Kt as FamilyRate, Mt as TokenUsage, Nt as TranscriptEvent, Qt as Lift, Sn as effortVerdict, Tn as formatSeconds, Ut as CellRecord, Vt as ArtifactRef, Wt as EvalEntry, Xt as HistoryEntry, Yt as HistoryCell, Zt as JudgementRecord, _n as effortChangeLabel, an as EffortContrast, bn as effortSample, cn as EffortVerdict, dn as VERDICT_TEXT, en as StackSummary, fn as cellContrast, gn as directional, gt as Outcome, hn as contrastEffort, in as EFFORT_MIN_RUNS, ln as Spread, mn as cellSamples, nn as DIRECTIONAL_MIN, on as EffortMetric, pn as cellEffort, qt as FamilyRecord, rn as EFFORT_ALPHA, sn as EffortSample, tn as CellEffort, un as TOKENS_UNREPORTED, vn as effortLabel, wn as formatRatio, xn as effortSummary, yn as effortOf } from "../types-g17bRAzt.js";
2
2
  //#region src/view/analysis.d.ts
3
3
  /** Bumped when the system prompt or output schema changes: an older analysis is superseded. */
4
- export declare const ANALYSIS_PROMPT_VERSION = "analysis-v9";
4
+ export declare const ANALYSIS_PROMPT_VERSION = "analysis-v10";
5
5
  /** Bumped when the digest's shape or selection rules change. */
6
- export declare const DIGEST_VERSION = 7;
6
+ export declare const DIGEST_VERSION = 10;
7
7
  export type Confidence = 'high' | 'medium' | 'low';
8
8
  export type AnalysisClaim = {
9
9
  text: string;
@@ -15,7 +15,7 @@ export type AnalysisClaim = {
15
15
  /** Numbers in the text that no cited fact or evidence contains. */
16
16
  unverifiedNumbers?: string[];
17
17
  };
18
- export type AnomalyKind = 'es-bug' | 'eval-design' | 'judge' | 'noise' | 'other';
18
+ export type AnomalyKind = 'reeval-bug' | 'eval-design' | 'judge' | 'noise' | 'other';
19
19
  export type AnalysisAnomaly = {
20
20
  text: string;
21
21
  kind: AnomalyKind;
@@ -23,7 +23,7 @@ export type AnalysisAnomaly = {
23
23
  /** Numbers in the text that no cited fact or evidence contains. */
24
24
  unverifiedNumbers?: string[];
25
25
  };
26
- export type ActionKind = 'skill' | 'docs' | 'eval' | 'judge' | 'es' | 'harness';
26
+ export type ActionKind = 'skill' | 'docs' | 'eval' | 'judge' | 'reeval' | 'harness';
27
27
  export type Level = 'high' | 'medium' | 'low';
28
28
  export type AnalysisAction = {
29
29
  title: string;
@@ -70,7 +70,7 @@ export type AnalysisScope = {
70
70
  evals: string | null;
71
71
  };
72
72
  export type AnalysisDoc = {
73
- kind: 'es-analysis';
73
+ kind: 'reeval-analysis';
74
74
  schemaVersion: 1;
75
75
  scope: AnalysisScope;
76
76
  /** The run the analysis belongs to: the scope's head. */
@@ -298,6 +298,29 @@ export declare function formatBytes(n: number): string;
298
298
  */
299
299
  export declare function requestLine(r: Omit<DebugRequest, 'at'>): string;
300
300
  //#endregion
301
+ //#region src/view/family.d.ts
302
+ /** `pass@1 2/3 · 67% (95% 21…94)`, or `pass@1 67% over 3 cases (95% 30…100)` at several runs. */
303
+ export declare function familyRateLabel(rate: FamilyRate): string;
304
+ /**
305
+ * `pass@1 88% vs 20% lift +68 pts (95% +40…+82, paired, 18 vs 1 discordant, p <0.001)`. At
306
+ * one attempt a case, the counts are the discordant pairs; at several, the paired cases.
307
+ */
308
+ export declare function familyLiftLabel(lift: FamilyLift): string;
309
+ /**
310
+ * `tools ×0.41 per case (fewer, signed-rank p 0.002) · agent time ×0.80 per case (noise, …)`;
311
+ * a metric whose control median is 0 has no ratio and is left out.
312
+ */
313
+ export declare function familyEffortLabel(lift: FamilyLift): string | null;
314
+ /** `25 cases · paired` with a compare, and `3 of 25 cases` when a filter left some out. */
315
+ export declare function familyHeadLabel(family: FamilyRecord): string;
316
+ /**
317
+ * A case's short label: its name less the template's literal text before the first placeholder
318
+ * and after the last, so `fixes $id` labels `fixes GH-101` as `GH-101`.
319
+ */
320
+ export declare function caseLabel(template: string, name: string): string;
321
+ /** The family's cases in list order. */
322
+ export declare const familyCases: (family: Pick<FamilyRecord, 'id'>, evals: readonly EvalEntry[]) => EvalEntry[];
323
+ //#endregion
301
324
  //#region src/view/header.d.ts
302
325
  /** The derived header of one run: what listings, indexes and comparisons need without the record. */
303
326
  export declare function runHeader(record: RunRecord, recorded: boolean): HistoryEntry;
@@ -321,7 +344,10 @@ export declare function uniqueJudgeLabels(items: readonly {
321
344
  }[]): Map<string, string>;
322
345
  export type JudgeKeyRate = {
323
346
  key: string;
347
+ /** The `expect` label when the judge had one, else a short name from its question. */
324
348
  label: string;
349
+ /** Named by an `expect` label, so the cell's checks carry it too. */
350
+ labelled: boolean;
325
351
  question: string;
326
352
  pass: number;
327
353
  counted: number;
@@ -330,6 +356,11 @@ export type JudgeKeyRate = {
330
356
  };
331
357
  /** Per-key pass/counted for one cell's counted attempts, with lift on a variant when both sides qualify. */
332
358
  export declare function cellJudgeRates(e: Pick<EvalEntry, 'attempts' | 'cells'>, cellKey: string): JudgeKeyRate[];
359
+ /**
360
+ * The judge rates a cell's summary line adds to its checks: a labelled judge whose label is one
361
+ * of the cell's checks against its control is already there.
362
+ */
363
+ export declare function summaryJudgeRates(e: Pick<EvalEntry, 'attempts' | 'cells'>, cell: Pick<CellRecord, 'key' | 'checks'>): JudgeKeyRate[];
333
364
  /** `login 4/5 · checkout 0/5`, with `(+80 pts)` on a key that has lift. */
334
365
  export declare function judgeRatesLabel(rates: readonly JudgeKeyRate[]): string;
335
366
  export type CollapsedJudge = {
@@ -346,8 +377,27 @@ export declare function collapsedJudges(judgements: readonly JudgementRecord[]):
346
377
  };
347
378
  /** `fail 0.78/0.80`, or `fail 0.33/0.80 · 3 judges` when there are many. */
348
379
  export declare function collapsedJudgeLabel(judgements: readonly JudgementRecord[]): string | null;
380
+ /**
381
+ * Each judgement's `expect` label, by position: the attempt's `toPass` assertions (less those on a
382
+ * failed judge call, which recorded no judgement) in call order, when they are exactly as many as
383
+ * its judgements. `check` is that assertion's label, the key of its check; a judgement no label
384
+ * reaches is named by its question.
385
+ */
386
+ export declare function labelledJudgements(a: Pick<AttemptRecord, 'judgements' | 'assertions'>): Array<{
387
+ judgement: JudgementRecord;
388
+ label: string;
389
+ labelled: boolean;
390
+ check?: string;
391
+ }>;
349
392
  /** Sum of counted attempts' usage; null when none of them reported any. */
350
393
  export declare function cellUsage(e: Pick<EvalEntry, 'attempts'>, cellKey: string): TokenUsage | null;
394
+ /**
395
+ * Each `c.exec` check's `expect` label, by position: the attempt's `toSucceed` assertions in call
396
+ * order, when they are exactly as many as its checks; undefined where no label reaches.
397
+ */
398
+ export declare function checkLabels(a: Pick<AttemptRecord, 'checks' | 'assertions'>): Array<string | undefined>;
399
+ /** A check's command on one line: the first non-empty line, clipped; its log has the rest. */
400
+ export declare function commandLine(command: string, max?: number): string;
351
401
  //#endregion
352
402
  //#region src/view/live.d.ts
353
403
  /** The progress file's name inside the run's staging directory. */
@@ -436,7 +486,7 @@ export type IndexManifest = {
436
486
  };
437
487
  export type StudioInfo = {
438
488
  mode: 'live' | 'static';
439
- es: string;
489
+ reeval: string;
440
490
  project: string;
441
491
  generatedAt: string;
442
492
  /** `debug`: local debug data (`.reeval/debug`) can be read; never in a static build. */
@@ -463,7 +513,7 @@ export declare function formatDuration(ms: number | null | undefined): string;
463
513
  export declare const formatPercent: (rate: number | null) => string;
464
514
  /**
465
515
  * A harness of the run's stack as `cursor (model composer-2.5, served composer-2.5[fast=true])`:
466
- * the configured model, then the variant the harness says it resolved.
516
+ * the configured model and reasoning effort, then what the harness says it resolved.
467
517
  */
468
518
  export declare function harnessLabel(h: RunRecord['stack']['harnesses'][number]): string;
469
519
  /**
@@ -490,6 +540,9 @@ export declare function runOutcome(run: {
490
540
  evals: ReadonlyArray<{
491
541
  outcome: Outcome;
492
542
  }>;
543
+ families?: ReadonlyArray<{
544
+ outcome: 'pass' | 'fail';
545
+ }>;
493
546
  }): Outcome;
494
547
  /** Distinct judge labels that failed on a counted attempt, in first-seen order. */
495
548
  export declare function failedJudgeLabels(record: Pick<RunRecord, 'evals'>): string[];
@@ -503,6 +556,8 @@ export type RunRow = {
503
556
  passed: number;
504
557
  /** Attempts that reached a verdict or errored; skips excluded. */
505
558
  total: number;
559
+ /** Passes and fails, the denominator of the run's pass@1. */
560
+ counted: number;
506
561
  /** Stack changes in the cells it shares with earlier runs, and in the judge since the previous complete run. */
507
562
  drift: StackChange[];
508
563
  /** Evals with a cell whose fingerprint changed since the last run that had that cell. */
@@ -547,12 +602,15 @@ export type CellRow = {
547
602
  gated: boolean;
548
603
  gate: CellRecord['gate'];
549
604
  overrides: string[];
605
+ /** The reasoning effort the harness factory asked for; null when it left it unset. */
606
+ reasoningEffort: string | null;
550
607
  runs: number;
551
608
  pass: number;
552
609
  fail: number;
553
610
  infraError: number;
554
611
  skipped: number;
555
- passRate: number | null;
612
+ /** pass@1: passes over passes and fails. */
613
+ passAt1: number | null;
556
614
  outcome: Outcome;
557
615
  /** A variant's lift over its control, in whole points (from the record), else null. */
558
616
  lift: number | null;
@@ -598,6 +656,8 @@ export type AnswerRow = {
598
656
  noPairs: boolean;
599
657
  /** Distinct vote reasons, in vote order, at most three. */
600
658
  reasons: string[];
659
+ /** `questions/<n>.json` under the run's directory: what the model was sent; null when not kept. */
660
+ input: string | null;
601
661
  };
602
662
  /** One row per compare question, with each cut's win rates in the record's order. */
603
663
  export declare function answerRows(e: Pick<EvalEntry, 'answers'>): AnswerRow[];
@@ -606,7 +666,8 @@ export declare const isMatrix: (e: Pick<EvalEntry, 'cells'>) => boolean;
606
666
  export type EvalHistoryPoint = {
607
667
  run: HistoryEntry;
608
668
  outcome: Outcome;
609
- passRate: number | null;
669
+ /** pass@1 over the gated cells' attempts. */
670
+ passAt1: number | null;
610
671
  cells: HistoryCell[];
611
672
  /** A cell's fingerprint differs from the last run that had that cell. */
612
673
  changed: boolean;
@@ -619,9 +680,9 @@ export type CompareViewRow = {
619
680
  status: CompareStatus;
620
681
  base: Outcome | null;
621
682
  head: Outcome | null;
622
- basePassRate: number | null;
623
- headPassRate: number | null;
624
- /** See `CompareRow`: then the pass rates are over the cells both runs have too. */
683
+ basePassAt1: number | null;
684
+ headPassAt1: number | null;
685
+ /** See `CompareRow`: then pass@1 is over the cells both runs have too. */
625
686
  cells?: CompareRow['cells'];
626
687
  changes?: string[];
627
688
  /** Mean judge score per run; null without judgements or without the record. */
@@ -633,8 +694,8 @@ export type CompareViewRow = {
633
694
  export declare const COMPARE_ORDER: CompareStatus[];
634
695
  /**
635
696
  * Whether some of an eval's cells aren't gated (`gate: 'none'`, e.g. controls under
636
- * `compare.gate: 'variants'`). Its pass rate then covers fewer attempts than its pass count, so
637
- * the eval line labels the rate `gated`: `2/4 · 100% gated`.
697
+ * `compare.gate: 'variants'`). Its pass@1 then covers fewer attempts than its pass count, so
698
+ * the eval line labels it `gated`: `2/4 · pass@1 100% gated`.
638
699
  */
639
700
  export declare const hasUngatedCells: (cells: readonly Pick<HistoryCell, 'gate'>[]) => boolean;
640
701
  /**
@@ -644,7 +705,12 @@ export declare const hasUngatedCells: (cells: readonly Pick<HistoryCell, 'gate'>
644
705
  export declare const isUngatedMiss: (e: {
645
706
  cells: readonly Pick<HistoryCell, 'key' | 'gate'>[];
646
707
  }, a: Pick<AttemptRecord, 'cell' | 'outcome' | 'error'>) => boolean;
647
- /** `reeval compare`'s classification, plus pass rates and judge-score deltas from the records. */
708
+ /**
709
+ * The outcome an eval's mark shows. A pass needs a counted (passed or failed) attempt and no infra
710
+ * error: a gate that lets those through, such as `gate: 'none'`, still shows `!`, not `✓`.
711
+ */
712
+ export declare function evalMarkOutcome(e: Pick<EvalEntry, 'outcome' | 'attempts'>): Outcome;
713
+ /** `reeval compare`'s classification, plus pass@1 and judge-score deltas from the records. */
648
714
  export declare function compareView(base: HistoryEntry, head: HistoryEntry, records?: {
649
715
  base?: RunRecord;
650
716
  head?: RunRecord;
@@ -767,5 +833,5 @@ export declare const readableTranscriptLine: (line: TranscriptLine) => Transcrip
767
833
  /** An analysis document as every reader sees it; one from a newer reeval throws. */
768
834
  export declare const readableAnalysis: (doc: AnalysisDoc, what?: string) => AnalysisDoc;
769
835
  //#endregion
770
- export { type ArtifactRef, type AttemptRecord, CellEffort, type CellRecord, EFFORT_ALPHA, EffortContrast, EffortSample, EffortVerdict, type EvalEntry, type FileRef, type HistoryCell, type HistoryEntry, type JudgementRecord, type Outcome, type RunRecord, type SandboxWarning, Spread, type StackSummary, TOKENS_UNREPORTED, type TranscriptEvent, VERDICT_TEXT, cellContrast, cellEffort, cellSamples, contrastEffort, effortChangeLabel, effortLabel, effortOf, effortSample, effortSummary, effortVerdict, formatCount, formatRatio, formatSeconds, tokenValues };
836
+ export { type ArtifactRef, type AttemptRecord, CellEffort, type CellRecord, DIRECTIONAL_MIN, EFFORT_ALPHA, EFFORT_MIN_RUNS, EffortContrast, EffortMetric, EffortSample, EffortVerdict, type EvalEntry, type FamilyLift, type FamilyRate, type FamilyRecord, type FileRef, type HistoryCell, type HistoryEntry, type JudgementRecord, type Outcome, type RunRecord, type SandboxWarning, Spread, type StackSummary, TOKENS_UNREPORTED, type TranscriptEvent, VERDICT_TEXT, cellContrast, cellEffort, cellSamples, contrastEffort, directional, effortChangeLabel, effortLabel, effortOf, effortSample, effortSummary, effortVerdict, formatCount, formatRatio, formatSeconds, tokenValues };
771
837
  //# sourceMappingURL=index.d.ts.map
@@ -1,8 +1,9 @@
1
1
  import { a as parseDataPath, c as shardPath, i as manifestPath, l as studioPath, n as artifactPath, o as recordPath, r as artifactType, s as shardOf, t as RUN_ID } from "../paths-BmR-7tx3.js";
2
2
  import { a as debugApiPath, c as formatBytes, d as requestLine, f as traceApiPath, i as TRACE_FILE, l as parseDebugLog, n as DEBUG_PHASES, o as debugLogLine, r as REQUESTS_FILE, s as debugTime, t as DEBUG_LOG, u as parseNdjson } from "../debug-D24NOQH1.js";
3
- import { a as pinnedAnalysis, i as isSuperseded, n as DIGEST_VERSION, o as sortAnalyses, r as analysisDataPath, t as ANALYSIS_PROMPT_VERSION } from "../analysis-BTNnKh1w.js";
4
- import { $ as formatRatio, A as transcriptItems, B as TOKENS_UNREPORTED, C as runLead, D as shortSha, E as runtimeLabel, F as collapsedJudges, G as contrastEffort, H as cellContrast, I as judgeLabel, J as effortOf, K as effortChangeLabel, L as judgeRatesLabel, M as cellJudgeRates, N as cellUsage, O as splitEvalId, P as collapsedJudgeLabel, Q as formatCount, R as uniqueJudgeLabels, S as parseTranscript, T as runRows, U as cellEffort, V as VERDICT_TEXT, W as cellSamples, X as effortSummary, Y as effortSample, Z as effortVerdict, _ as hasUngatedCells, a as cellRows, at as cellsChanged, b as isUngatedMiss, c as evalHistory, ct as stackChanges, d as findAttempt, et as formatSeconds, f as findEval, g as harnessLabel, h as formatUsage, i as buildIndex, j as LIFT_MIN_COUNTED, k as splitPatch, l as evalTree, lt as whyChanged, m as formatPercent, n as activityLabel, o as compareView, ot as compare, p as formatDuration, q as effortLabel, r as answerRows, s as defaultAttempt, st as sourceChanges, t as COMPARE_ORDER, tt as tokenValues, u as failedJudgeLabels, v as indexFiles, w as runOutcome, x as languageLabel, y as isMatrix, z as EFFORT_ALPHA } from "../model-BndnmcLm.js";
5
- import { t as runHeader } from "../header-_F0EWob3.js";
6
- import { c as readableTranscriptLine, r as readableAnalysis, s as readableRecord, t as NewerSchemaError } from "../record-BRP9vZrj.js";
7
- import { a as liveApiPath, c as readableLiveProgress, i as isFinished, n as LIVE_FILE, o as liveCounts, r as LIVE_SCHEMA_VERSION, s as liveTranscriptPath, t as FINISHED } from "../live-S0qODb6o.js";
8
- export { ANALYSIS_PROMPT_VERSION, COMPARE_ORDER, DEBUG_LOG, DEBUG_PHASES, DIGEST_VERSION, EFFORT_ALPHA, FINISHED, LIFT_MIN_COUNTED, LIVE_FILE, LIVE_SCHEMA_VERSION, NewerSchemaError, REQUESTS_FILE, RUN_ID, TOKENS_UNREPORTED, TRACE_FILE, VERDICT_TEXT, activityLabel, analysisDataPath, answerRows, artifactPath, artifactType, buildIndex, cellContrast, cellEffort, cellJudgeRates, cellRows, cellSamples, cellUsage, cellsChanged, collapsedJudgeLabel, collapsedJudges, compare, compareView, contrastEffort, debugApiPath, debugLogLine, debugTime, defaultAttempt, effortChangeLabel, effortLabel, effortOf, effortSample, effortSummary, effortVerdict, evalHistory, evalTree, failedJudgeLabels, findAttempt, findEval, formatBytes, formatCount, formatDuration, formatPercent, formatRatio, formatSeconds, formatUsage, harnessLabel, hasUngatedCells, indexFiles, isFinished, isMatrix, isSuperseded, isUngatedMiss, judgeLabel, judgeRatesLabel, languageLabel, liveApiPath, liveCounts, liveTranscriptPath, manifestPath, parseDataPath, parseDebugLog, parseNdjson, parseTranscript, pinnedAnalysis, readableAnalysis, readableLiveProgress, readableRecord, readableTranscriptLine, recordPath, requestLine, runHeader, runLead, runOutcome, runRows, runtimeLabel, shardOf, shardPath, shortSha, sortAnalyses, sourceChanges, splitEvalId, splitPatch, stackChanges, studioPath, tokenValues, traceApiPath, transcriptItems, uniqueJudgeLabels, whyChanged };
3
+ import { a as pinnedAnalysis, i as isSuperseded, n as DIGEST_VERSION, o as sortAnalyses, r as analysisDataPath, t as ANALYSIS_PROMPT_VERSION } from "../analysis-Bxub9LMT.js";
4
+ import { $ as directional, A as splitPatch, B as judgeRatesLabel, C as parseTranscript, D as runtimeLabel, E as runRows, F as checkLabels, G as EFFORT_ALPHA, H as summaryJudgeRates, I as collapsedJudgeLabel, J as VERDICT_TEXT, K as EFFORT_MIN_RUNS, L as collapsedJudges, M as LIFT_MIN_COUNTED, N as cellJudgeRates, O as shortSha, P as cellUsage, Q as contrastEffort, R as commandLine, S as languageLabel, St as whyChanged, T as runOutcome, U as uniqueJudgeLabels, V as labelledJudgements, W as DIRECTIONAL_MIN, X as cellEffort, Y as cellContrast, Z as cellSamples, _ as harnessLabel, a as cellRows, at as effortVerdict, b as isMatrix, bt as sourceChanges, c as evalHistory, ct as formatSeconds, d as failedJudgeLabels, et as effortChangeLabel, f as findAttempt, g as formatUsage, h as formatPercent, i as buildIndex, it as effortSummary, j as transcriptItems, k as splitEvalId, l as evalMarkOutcome, lt as tokenValues, m as formatDuration, n as activityLabel, nt as effortOf, o as compareView, ot as formatCount, p as findEval, q as TOKENS_UNREPORTED, r as answerRows, rt as effortSample, s as defaultAttempt, st as formatRatio, t as COMPARE_ORDER, tt as effortLabel, u as evalTree, v as hasUngatedCells, vt as cellsChanged, w as runLead, x as isUngatedMiss, xt as stackChanges, y as indexFiles, yt as compare, z as judgeLabel } from "../model-oqcDplJG.js";
5
+ import { a as familyLiftLabel, i as familyHeadLabel, n as familyCases, o as familyRateLabel, r as familyEffortLabel, t as caseLabel } from "../family-D2b7WD10.js";
6
+ import { t as runHeader } from "../header-hK-Z_Po9.js";
7
+ import { c as readableTranscriptLine, r as readableAnalysis, s as readableRecord, t as NewerSchemaError } from "../record-BKmMvZ6O.js";
8
+ import { a as liveApiPath, c as readableLiveProgress, i as isFinished, n as LIVE_FILE, o as liveCounts, r as LIVE_SCHEMA_VERSION, s as liveTranscriptPath, t as FINISHED } from "../live-jlfszAbb.js";
9
+ export { ANALYSIS_PROMPT_VERSION, COMPARE_ORDER, DEBUG_LOG, DEBUG_PHASES, DIGEST_VERSION, DIRECTIONAL_MIN, EFFORT_ALPHA, EFFORT_MIN_RUNS, FINISHED, LIFT_MIN_COUNTED, LIVE_FILE, LIVE_SCHEMA_VERSION, NewerSchemaError, REQUESTS_FILE, RUN_ID, TOKENS_UNREPORTED, TRACE_FILE, VERDICT_TEXT, activityLabel, analysisDataPath, answerRows, artifactPath, artifactType, buildIndex, caseLabel, cellContrast, cellEffort, cellJudgeRates, cellRows, cellSamples, cellUsage, cellsChanged, checkLabels, collapsedJudgeLabel, collapsedJudges, commandLine, compare, compareView, contrastEffort, debugApiPath, debugLogLine, debugTime, defaultAttempt, directional, effortChangeLabel, effortLabel, effortOf, effortSample, effortSummary, effortVerdict, evalHistory, evalMarkOutcome, evalTree, failedJudgeLabels, familyCases, familyEffortLabel, familyHeadLabel, familyLiftLabel, familyRateLabel, findAttempt, findEval, formatBytes, formatCount, formatDuration, formatPercent, formatRatio, formatSeconds, formatUsage, harnessLabel, hasUngatedCells, indexFiles, isFinished, isMatrix, isSuperseded, isUngatedMiss, judgeLabel, judgeRatesLabel, labelledJudgements, languageLabel, liveApiPath, liveCounts, liveTranscriptPath, manifestPath, parseDataPath, parseDebugLog, parseNdjson, parseTranscript, pinnedAnalysis, readableAnalysis, readableLiveProgress, readableRecord, readableTranscriptLine, recordPath, requestLine, runHeader, runLead, runOutcome, runRows, runtimeLabel, shardOf, shardPath, shortSha, sortAnalyses, sourceChanges, splitEvalId, splitPatch, stackChanges, studioPath, summaryJudgeRates, tokenValues, traceApiPath, transcriptItems, uniqueJudgeLabels, whyChanged };
@@ -0,0 +1,2 @@
1
+ import "./model-oqcDplJG.js";
2
+ export { c as resolveRun } from "./views-BmQF4UCI.js";
@@ -1,7 +1,7 @@
1
1
  import { r as formatDuration } from "./text-gEcKjAyp.js";
2
- import { K as effortChangeLabel, at as cellsChanged, ct as stackChanges } from "./model-BndnmcLm.js";
3
- import { o as warnings } from "./state-B72h_jEw.js";
4
- import { c as stateRows, l as summaryCounts, r as cellCounts, s as repeatsVerdict, t as OUTCOME_MARK } from "./summary-k3mhWWXv.js";
2
+ import { V as labelledJudgements, et as effortChangeLabel, vt as cellsChanged, xt as stackChanges } from "./model-oqcDplJG.js";
3
+ import { o as warnings } from "./state-C__9swoG.js";
4
+ import { a as contrastLines, d as summaryCounts, l as repeatsVerdict, r as cellCounts, t as OUTCOME_MARK, u as stateRows } from "./summary-BLAVLySU.js";
5
5
  //#region src/history/views.ts
6
6
  var RefError = class extends Error {
7
7
  name = "RefError";
@@ -15,20 +15,20 @@ function resolveRun(entries, ref = "latest") {
15
15
  const back = /^latest(?:~(\d+))?$/.exec(ref);
16
16
  if (back) {
17
17
  const entry = entries[entries.length - 1 - Number(back[1] ?? 0)];
18
- if (!entry) throw new RefError(`There are only ${entries.length} runs`);
18
+ if (!entry) throw new RefError(`There ${entries.length === 1 ? "is only 1 run" : `are only ${entries.length} runs`}, so ${ref} names none. reeval history lists them.`);
19
19
  return entry;
20
20
  }
21
21
  const exact = entries.find((e) => e.runId === ref);
22
22
  if (exact) return exact;
23
23
  const byId = entries.filter((e) => e.runId.startsWith(ref));
24
24
  if (byId.length === 1 && byId[0]) return byId[0];
25
- if (byId.length > 1) throw new RefError(`"${ref}" matches ${byId.length} runs; use more of the id`);
25
+ if (byId.length > 1) throw new RefError(`"${ref}" matches ${byId.length} runs: use more of the id`);
26
26
  if (/^[0-9a-f]{4,40}$/i.test(ref)) {
27
27
  const atSha = entries.filter((e) => e.git?.sha.startsWith(ref.toLowerCase()));
28
28
  const newest = atSha[atSha.length - 1];
29
29
  if (newest) return newest;
30
30
  }
31
- throw new RefError(`No run matches "${ref}"`);
31
+ throw new RefError(`No run matches "${ref}". Pass latest, latest~N, a run id or a git SHA; reeval history lists them.`);
32
32
  }
33
33
  /**
34
34
  * The run to compare `head` against: a complete, earlier run on the first commit of `ancestry` that
@@ -205,10 +205,15 @@ function formatShow(run) {
205
205
  const single = e.attempts.length === 1;
206
206
  const first = e.attempts[0];
207
207
  lines.push(` ${OUTCOME_MARK[e.outcome]} ${e.id}${single && first ? ` ${formatDuration(first.durationMs)}` : ` ${cellCounts(e)}`}`);
208
+ const contrasts = contrastLines(e);
209
+ if (contrasts.length) {
210
+ lines.push(" contrasts (each pair of arms, same harness)");
211
+ for (const line of contrasts) lines.push(` ${line}`);
212
+ }
208
213
  for (const t of e.attempts) {
209
214
  const indent = single ? " " : " ";
210
215
  if (!single) lines.push(` ${OUTCOME_MARK[t.outcome]} ${t.id} ${formatDuration(t.durationMs)}`);
211
- for (const j of t.judgements) lines.push(`${indent}judge ${j.verdict} ${j.score.toFixed(2)} (≥ ${j.threshold}) ${j.question}`);
216
+ for (const { judgement: j, label, labelled } of labelledJudgements(t)) lines.push(`${indent}judge ${j.verdict} ${j.score.toFixed(2)} (≥ ${j.threshold}) ${labelled ? `${label}: ` : ""}${j.question}`);
212
217
  if (t.error && !repeatsVerdict(t)) lines.push(`${indent}${t.error.kind}: ${t.error.message.split("\n")[0]}`);
213
218
  }
214
219
  }
@@ -217,4 +222,4 @@ function formatShow(run) {
217
222
  //#endregion
218
223
  export { formatShow as a, resolveRun as c, formatNoBaseline as i, unreachable as l, formatCompare as n, history as o, formatHistory as r, pickBaseline as s, RefError as t };
219
224
 
220
- //# sourceMappingURL=views-DZ1YDqey.js.map
225
+ //# sourceMappingURL=views-BmQF4UCI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"views-BmQF4UCI.js","names":[],"sources":["../src/history/views.ts"],"mappings":";;;;;AA6BA,IAAa,WAAb,cAA8B,MAAM;CAClC,OAAgB;AAClB;;;;;AAMA,SAAgB,WAAW,SAAyB,MAAM,UAAwB;CAChF,IAAI,QAAQ,WAAW,GAAG,MAAM,IAAI,SAAS,8BAA8B;CAC3E,MAAM,OAAO,sBAAsB,KAAK,GAAG;CAC3C,IAAI,MAAM;EACR,MAAM,QAAQ,QAAQ,QAAQ,SAAS,IAAI,OAAO,KAAK,MAAM,CAAC;EAC9D,IAAI,CAAC,OACH,MAAM,IAAI,SACR,SAAS,QAAQ,WAAW,IAAI,kBAAkB,YAAY,QAAQ,OAAO,OAAO,OAAO,IAAI,wCACjG;EAEF,OAAO;CACT;CACA,MAAM,QAAQ,QAAQ,MAAM,MAAM,EAAE,UAAU,GAAG;CACjD,IAAI,OAAO,OAAO;CAClB,MAAM,OAAO,QAAQ,QAAQ,MAAM,EAAE,MAAM,WAAW,GAAG,CAAC;CAC1D,IAAI,KAAK,WAAW,KAAK,KAAK,IAAI,OAAO,KAAK;CAC9C,IAAI,KAAK,SAAS,GAChB,MAAM,IAAI,SAAS,IAAI,IAAI,YAAY,KAAK,OAAO,0BAA0B;CAC/E,IAAI,oBAAoB,KAAK,GAAG,GAAG;EACjC,MAAM,QAAQ,QAAQ,QAAQ,MAAM,EAAE,KAAK,IAAI,WAAW,IAAI,YAAY,CAAC,CAAC;EAC5E,MAAM,SAAS,MAAM,MAAM,SAAS;EACpC,IAAI,QAAQ,OAAO;CACrB;CACA,MAAM,IAAI,SACR,mBAAmB,IAAI,4EACzB;AACF;;;;;;;;AASA,SAAgB,aACd,SACA,MACA,UACqB;CACrB,MAAM,UAAU,QAAQ,QAAQ,MAAM,EAAE,QAAQ,KAAK,SAAS,EAAE,WAAW,UAAU;CACrF,IAAI,YAAY,SAAS,SAAS,GAAG;EACnC,MAAM,OAAO,IAAI,IAAI,SAAS,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EACvD,IAAI,OAA4B;EAChC,IAAI,WAAW,OAAO;EACtB,KAAK,MAAM,KAAK,SAAS;GACvB,MAAM,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,IAAI,GAAG,IAAI,KAAA;GACxC,IAAI,MAAM,KAAA,MAAc,IAAI,YAAa,MAAM,YAAY,QAAQ,EAAE,QAAQ,KAAK,QAAS;IACzF,OAAO;IACP,WAAW;GACb;EACF;EACA,IAAI,MAAM,OAAO;CACnB;CACA,OAAO,QAAQ,QAAQ,SAAS,MAAM;AACxC;AAEA,MAAM,YAAY,MAAqB,EAAE,MAAM,EAAE,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI;AAkBvE,MAAa,eAAe,OAAqB,UAC/C,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,IAAI,MAAM,IAAI,GAAG;AAEpD,SAAgB,QACd,SACA,UAAqE,CAAC,GACtE;CACA,MAAM,OAAO,QAAQ,MAAM,EAAE,QAAQ,SAAS,GAAG;CACjD,MAAM,MAAgB,CAAC;CACvB,KAAK,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,GAClC,KAAK,MAAM,KAAK,IAAI,OAAO,IAAI,CAAC,IAAI,SAAS,EAAE,EAAE,GAAG,IAAI,KAAK,EAAE,EAAE;CAEnE,MAAM,SAAS,QAAQ,QAAQ,YAAY;CAiB3C,OAAO;EAAE;EAAM,MAhBY,IACxB,QAAQ,OAAO,CAAC,UAAU,GAAG,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,CAC5D,KAAK,OAAO;GACX,MAAM,MAAkB;IAAE;IAAI,UAAU,CAAC;IAAG,OAAO,CAAC;IAAG,MAAM;IAAG,SAAS;GAAE;GAC3E,MAAM,uBAAO,IAAI,IAAoB;GACrC,KAAK,SAAS,KAAK,MAAM;IACvB,MAAM,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,OAAO,EAAE;IAC3C,IAAI,SAAS,KAAK,GAAG,WAAW,IAAI;IACpC,IAAI,CAAC,GAAG;IACR,IAAI,aAAa,MAAM,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,KAAK,CAAC;IACrD,IAAI,EAAE,YAAY,UAAU,EAAE,YAAY,QAAQ,IAAI;IACtD,IAAI,EAAE,YAAY,QAAQ,IAAI;GAChC,CAAC;GACD,OAAO;EACT,CAEgB;EAAG,UADJ,KAAK,QAAQ,MAAM,YAAY,GAAG,QAAQ,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,KAC5D;CAAE;AAChC;AAEA,SAAgB,cAAc,EAAE,MAAM,MAAM,YAAgD;CAC1F,IAAI,KAAK,WAAW,GAClB,OAAO;CACT,MAAM,QAAQ,KAAK;CACnB,MAAM,OAAO,KAAK,KAAK,SAAS;CAChC,MAAM,QAAQ,CACZ,GAAG,KAAK,OAAO,MAAM,KAAK,WAAW,IAAI,KAAK,IAAI,qBAAqB,MAAM,MAAM,IAAI,SAAS,KAAK,EAAE,MAAM,KAAK,MAAM,IAAI,SAAS,IAAI,EAAE,IAC3I,EACF;CACA,MAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,KAAK,MAAM,EAAE,SAAS,SAAS,EAAE,MAAM,MAAM,GAAG,CAAC;CAChF,KAAK,MAAM,OAAO,MAAM;EACtB,MAAM,QAAQ,IAAI,SACf,KAAK,GAAG,MAAM,GAAG,IAAI,MAAM,SAAS,CAAC,IAAI,MAAM,KAAK,IAAI,aAAa,KAAK,KAAK,CAAC,CAChF,KAAK,EAAE;EACV,MAAM,OAAO,IAAI,UAAU,GAAG,IAAI,KAAK,GAAG,IAAI,YAAY;EAC1D,MAAM,KAAK,KAAK,MAAM,OAAO,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,EAAE,IAAI,IAAI,IAAI;CACvE;CACA,MAAM,KAAK,IAAI,8EAA8E;CAC7F,IAAI,SAAS,SAAS,GACpB,MAAM,KACJ,IACA,GAAG,SAAS,OAAO,MAAM,SAAS,WAAW,IAAI,SAAS,SAAS,4EACnE,GAAG,SAAS,KAAK,OAAO,KAAK,IAAI,CACnC;CAEF,OAAO,MAAM,KAAK,IAAI;AACxB;AAEA,MAAM,eAA8C;CAClD,WAAW;CACX,OAAO;CACP,MAAM;CACN,OAAO;CACP,OAAO;CACP,SAAS;CACT,OAAO;AACT;;;;;AAMA,MAAM,OAAO,MACX;CACE,EAAE,SAAS,SAAS,KAAK,EAAE,QAAQ,KAAK,IAAI,MAAM;CAClD,EAAE,OAAO,MAAM,SAAS,mBAAmB,EAAE,MAAM,MAAM,KAAK,IAAI,MAAM;CACxE,EAAE,OAAO,QAAQ,SAAS,qBAAqB,EAAE,MAAM,QAAQ,KAAK,IAAI,MAAM;AAChF,CAAC,CAAC,KAAK,EAAE;AAEX,MAAM,QAAyB;CAAC;CAAa;CAAS;CAAS;CAAS;CAAS;CAAW;AAAM;AAElG,MAAM,eAAe,GAAiB,UACpC,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,IAAI,EAAE,WAAW,KAAK,mBAAmB,YAAY,GAAG,KAAK,IAAI,mCAAmC,GAAG;AAElI,SAAgB,cACd,MACA,MACA,MACA,IACA,QAAsB,MACtB;CACA,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,MAAM,QAAQ,EAAE,MAAM,IAAI,MAAM,QAAQ,EAAE,MAAM,CAAC;CACzF,MAAM,QAAQ,MAAuB,IAAI,aAAa,KAAK;CAC3D,MAAM,SAAS,MAAqB,KAAK,QAAQ,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;CACvE,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,eAAe,MAAM,OAAO,EAAE,WAAW,MAAM,OAAO,EAAE,oBAAoB,MAAM,MAAM,EAAE;CAC9H,MAAM,UAAU,aAAa,MAAM,IAAI;CACvC,MAAM,aAAa,QAAQ,KAAK,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI;CACnF,MAAM,OAAO,MAAc,EAAE,QAAQ,OAAO,KAAK;CACjD,MAAM,QAAQ,OAAO,SAAS,OAAO,EAAE,WAAW,CAAC,EAAA,CAAG,KAAK,OAAO;EAAE,KAAK;EAAG,MAAM;CAAE,EAAE,CAAC;CACvF,IAAI,IACF,OAAO;EACL,eAAe,KAAK,MAAM,MAAM,KAAK;EACrC;EACA,QAAQ,YAAY,MAAM,KAAK,EAAE,UAAU,YAAY,MAAM,KAAK,EAAE,IAAI,MAAM;EAC9E;EACA,GAAI,QAAQ,SAAS,CAAC,sBAAsB,WAAW,IAAI,EAAE,IAAI,CAAC;EAClE;EACA;EACA,GAAG,OAAO,KACP,MACC,KAAK,IAAI,EAAE,EAAE,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,aAAa,EAAE,UAAU,IAAI,CAAC,EAAE,GAC5F;EACA;EACA,GAAI,MAAM,SACN;GACE;GACA;GACA,GAAG,MAAM,KACN,EAAE,KAAK,WACN,KAAK,IAAI,IAAI,EAAE,EAAE,KAAK,IAAI,KAAK,GAAG,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,aAAa,IAAI,EAAE,GACtF;GACA;EACF,IACA,CAAC;CACP,CAAC,CAAC,KAAK,IAAI;CAEb,OAAO;EACL,QAAQ,YAAY,MAAM,KAAK,EAAE,UAAU,YAAY,MAAM,KAAK;EAClE;EACA,GAAI,QAAQ,SAAS,CAAC,kBAAkB,YAAY,IAAI,CAAC;EACzD;EACA,GAAG,OAAO,SAAS,MAAM,CACvB,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,KAC1F,IAAI,EAAE,WAAW,CAAC,EAAA,CAAG,KAClB,MACC,SAAS,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,KAAK,OAAO,QAAQ,WAAW,CAAC,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,KAAK,GAC9H,CACF,CAAC;CACH,CAAC,CAAC,KAAK,IAAI;AACb;;AAGA,SAAgB,iBAAiB,MAAoB,MAAoB,IAAqB;CAC5F,MAAM,UAAU,KAAK,QAAQ,MAAM,EAAE,SAAS,MAAM,CAAC,CAAC;CACtD,MAAM,OAAO,sCAAsC,KAAK,MAAM,0BAA0B,UAAU,SAAS,QAAQ,OAAO,YAAY,IAAI,MAAM,OAAO,GAAG;CAC1J,MAAM,QAAQ,MAAuB,IAAI,aAAa,KAAK;CAC3D,IAAI,IACF,OAAO;EACL,eAAe,KAAK;EACpB;EACA;EACA;EACA;EACA;EACA,GAAG,KAAK,KAAK,MAAM,KAAK,EAAE,GAAG,QAAQ,OAAO,KAAK,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,GAAG;EACxE;CACF,CAAC,CAAC,KAAK,IAAI;CAEb,OAAO;EAAC;EAAM;EAAI,GAAG,KAAK,KAAK,MAAM,KAAK,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI;CAAC,CAAC,CAAC,KAAK,IAAI;AACpF;AAEA,MAAM,aAAa,MACjB,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,cAAc,WAAW,OAAO;AAChG,MAAM,UAAU,MAAc,GAAG,KAAK,IAAI,MAAM,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,GAAG;AAClF,MAAM,cAAc,MAAmB,GAAG,UAAU,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI;AAC3F,MAAM,gBAAgB,MACpB,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,kBAAkB,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,IAAI;AAErF,SAAgB,WAAW,KAAwB;CACjD,MAAM,OAAO,UAAU,GAAG;CAC1B,MAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;CACrD,MAAM,QAAQ;EACZ,OAAO,IAAI,MAAM,IAAI,cAAc,IAAI,OAAO,IAAI,IAAI,WAAW,gBAAgB,oBAAoB;EACrG,aAAa,IAAI,UAAU,KAAK,eAAe,IAAI,UAAU,EAAE,gBAAgB,IAAI;EACnF;EACA,GAAG,KAAK,KAAK,CAAC,GAAG,OAAO,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,GAAG;EACpD,GAAG,SAAS,GAAG,CAAC,CAAC,KAAK,MAAM,OAAO,GAAG;EACtC;CACF;CACA,KAAK,MAAM,KAAK,IAAI,OAAO;EACzB,MAAM,SAAS,EAAE,SAAS,WAAW;EACrC,MAAM,QAAQ,EAAE,SAAS;EACzB,MAAM,KACJ,KAAK,aAAa,EAAE,SAAS,GAAG,EAAE,KAAK,UAAU,QAAQ,KAAK,eAAe,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC,KACtH;EACA,MAAM,YAAY,cAAc,CAAC;EACjC,IAAI,UAAU,QAAQ;GACpB,MAAM,KAAK,mDAAmD;GAC9D,KAAK,MAAM,QAAQ,WAAW,MAAM,KAAK,WAAW,MAAM;EAC5D;EACA,KAAK,MAAM,KAAK,EAAE,UAAU;GAC1B,MAAM,SAAS,SAAS,WAAW;GACnC,IAAI,CAAC,QACH,MAAM,KAAK,SAAS,aAAa,EAAE,SAAS,GAAG,EAAE,GAAG,IAAI,eAAe,EAAE,UAAU,GAAG;GAExF,KAAK,MAAM,EAAE,WAAW,GAAG,OAAO,cAAc,mBAAmB,CAAC,GAClE,MAAM,KACJ,GAAG,OAAO,QAAQ,EAAE,QAAQ,GAAG,EAAE,MAAM,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,KAAK,WAAW,GAAG,MAAM,MAAM,KAAK,EAAE,UAC5G;GAEF,IAAI,EAAE,SAAS,CAAC,eAAe,CAAC,GAC9B,MAAM,KAAK,GAAG,SAAS,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,QAAQ,MAAM,IAAI,CAAC,CAAC,IAAI;EAE5E;CACF;CACA,OAAO,MAAM,KAAK,IAAI;AACxB"}
@@ -1,86 +1,16 @@
1
- import { a as calledMcp, c as edited, d as searched, l as fetched, n as useSchedulerChannel, o as calledSkill, s as calledTool, t as acquire, u as ran } from "./client-CwzU9CiW.js";
2
- import { n as UsageError, t as TimeoutError } from "./errors-yDAEwmZo.js";
3
- import { c as relativeFile } from "./ids-Bp6ut7ZD.js";
4
- import { t as esJiti } from "./jiti-BcJHCtrb.js";
5
- import { a as useEngine, d as withAttemptExpect, l as extendExpect, o as attemptExpectError, s as createExpect, u as unawaitedError } from "./runtime-Dfb2r-cS.js";
1
+ import { n as UsageError, t as TimeoutError } from "./errors-B6BSMs03.js";
2
+ import { i as originalStack, t as adapterForFile } from "./adapter-DWlpOtRn.js";
3
+ import { a as useEngine, c as createExpect, f as rawAssertions, m as withAttemptExpect, p as unawaitedError, s as attemptExpectError, u as extendExpect } from "./runtime-PX_oXiCS.js";
4
+ import { n as useSchedulerChannel, t as acquire } from "./client-fcwgwOAD.js";
6
5
  import { t as budgetMarker } from "./budget-DBUrH4jX.js";
7
- import { t as codeFrame } from "./errors-C9w_ud7g.js";
8
- import { existsSync, readFileSync } from "node:fs";
9
- import { dirname } from "node:path";
6
+ import { n as evalMatchers } from "./matchers-Ddmc2z7H.js";
7
+ import { existsSync } from "node:fs";
8
+ import { format } from "node:util";
10
9
  import { AsyncLocalStorage } from "node:async_hooks";
11
- import { format, stripVTControlCharacters } from "node:util";
12
- import { DecodedMap, getOriginalPosition } from "@vitest/utils/source-map";
13
- import { getTsconfig } from "get-tsconfig";
14
10
  import { processError } from "@vitest/utils/error";
15
- //#region src/matchers.ts
16
- /** The last `lines` lines, and at most `chars` characters of them: one line can be megabytes. */
17
- const tail = (s, lines = 20, chars = 2e3) => {
18
- const last = s.trimEnd().split("\n").slice(-lines).join("\n");
19
- return last.length <= chars ? last : `[… ${last.length - chars} earlier characters]${last.slice(-chars)}`;
20
- };
21
- const hasFiles = (value) => typeof value === "object" && value !== null && typeof value.readFile === "function";
22
- const matchers = {
23
- async toHaveFile(actual, path, pattern) {
24
- if (!hasFiles(actual)) throw new TypeError("toHaveFile() expects a turn from c.send(), or c");
25
- const content = await actual.readFile(path);
26
- if (content === null) return {
27
- pass: false,
28
- message: () => `expected file ${path} to exist`
29
- };
30
- if (pattern === void 0) return {
31
- pass: true,
32
- message: () => `expected no file at ${path}`
33
- };
34
- const pass = typeof pattern === "string" ? content.includes(pattern) : pattern.test(content);
35
- return {
36
- pass,
37
- message: () => `expected ${path} ${pass ? "not " : ""}to match ${pattern}\n--- ${path} ---\n${tail(content)}`
38
- };
39
- },
40
- async toSucceed(actual) {
41
- const r = await actual;
42
- if (typeof r?.exitCode !== "number") throw new TypeError("toSucceed() expects run.exec(...)");
43
- return {
44
- pass: r.exitCode === 0,
45
- message: () => r.exitCode === 0 ? "expected command to fail" : `expected command to succeed, exit code ${r.exitCode}\n--- stderr ---\n${tail(r.stderr)}\n--- stdout ---\n${tail(r.stdout)}`
46
- };
47
- },
48
- toHaveSearched(actual, query) {
49
- return searched(actual, query);
50
- },
51
- toHaveFetched(actual, url) {
52
- return fetched(actual, url);
53
- },
54
- toHaveCalledSkill(actual, name) {
55
- return calledSkill(actual, name);
56
- },
57
- toHaveCalledMcp(actual, server, tool, input) {
58
- return calledMcp(actual, server, tool, input);
59
- },
60
- toHaveCalledTool(actual, name, input) {
61
- return calledTool(actual, name, input);
62
- },
63
- toHaveRun(actual, command) {
64
- return ran(actual, command);
65
- },
66
- toHaveEdited(actual, path) {
67
- return edited(actual, path);
68
- },
69
- toPass(actual) {
70
- const failure = actual;
71
- if (failure?.verdict === "error" && typeof failure.error === "string") return {
72
- pass: !!this?.isNot,
73
- message: () => `judge failed for "${failure.question}" (${failure.model}): ${failure.error}`
74
- };
75
- const v = actual;
76
- if (typeof v?.score !== "number") throw new TypeError("toPass() expects a c.judge() verdict");
77
- const score = v.score.toFixed(2);
78
- return {
79
- pass: v.verdict === "pass",
80
- message: () => v.verdict === "pass" ? `expected judge to fail: score ${score} ≥ ${v.threshold} for "${v.question}"` : `judge score ${score} is below ${v.threshold} for "${v.question}" (${v.model})`
81
- };
82
- }
83
- };
11
+ //#region src/language-runner/load.ts
12
+ /** Loads an eval file through its language adapter while the worker is collecting. */
13
+ const loadEvalModule = (file, root) => adapterForFile(file).load(file, root);
84
14
  //#endregion
85
15
  //#region src/engine/collector.ts
86
16
  let collecting;
@@ -181,147 +111,6 @@ function markAll(suite, mode) {
181
111
  }
182
112
  }
183
113
  //#endregion
184
- //#region src/engine/loader.ts
185
- var TsconfigError = class extends Error {
186
- name = "TsconfigError";
187
- };
188
- /** Each file jiti transformed: its source map, and how far jiti's wrapper shifts line 1. */
189
- const transformed = /* @__PURE__ */ new Map();
190
- const INLINE_MAP = /\/\/# sourceMappingURL=data:application\/json;(?:charset=utf-8;)?base64,([A-Za-z0-9+/=]+)\s*$/;
191
- /** Imports `file` and whatever it imports. */
192
- async function loadEvalFile(file, root) {
193
- checkTsconfig(dirname(file), root);
194
- const options = {
195
- moduleCache: true,
196
- fsCache: false,
197
- sourceMaps: true
198
- };
199
- const base = await esJiti(file, options);
200
- const jiti = await esJiti(file, {
201
- ...options,
202
- transform: (opts) => {
203
- const code = base.transform(opts);
204
- const inline = INLINE_MAP.exec(code);
205
- if (opts.filename && inline?.[1]) {
206
- const map = JSON.parse(Buffer.from(inline[1], "base64").toString("utf8"));
207
- const shift = `(${opts.async ? "async " : ""}function (exports, require, module, __filename, __dirname, jitiImport, jitiESMResolve) { `.length;
208
- transformed.set(opts.filename, {
209
- map: new DecodedMap(map, opts.filename),
210
- shift
211
- });
212
- }
213
- return { code };
214
- }
215
- });
216
- try {
217
- return await jiti.import(file);
218
- } catch (error) {
219
- throw syntaxError(error, root) ?? missingModule(error);
220
- }
221
- }
222
- /** jiti's `Cannot find module 'x'` plus a require stack, as `… imported from <file>`. */
223
- function missingModule(error) {
224
- const e = error;
225
- if (e?.code !== "MODULE_NOT_FOUND") return error;
226
- const parts = /^(Cannot find module '[^']+')\nRequire stack:\n- (.+)/.exec(e.message);
227
- if (parts) e.message = `${parts[1]} imported from ${parts[2]}`;
228
- return error;
229
- }
230
- /**
231
- * jiti reports a parse error as a plain Error, `ParseError: <reason>` then ` <file>:<line>:<col>`
232
- * (col 0-based): a SyntaxError again, naming the file and position, with a code frame.
233
- */
234
- function syntaxError(error, root) {
235
- const parsed = /^ParseError: (.*?)\s*\n\s*(.+):(\d+):(\d+)$/.exec(error?.message ?? "");
236
- if (!parsed) return void 0;
237
- const [, said, file, line, column] = parsed;
238
- const reason = said.replace(/^(?:[A-Za-z]:)?[\\/]\S*?: /, "");
239
- const at = {
240
- line: Number(line),
241
- column: Number(column) + 1
242
- };
243
- let frame = "";
244
- try {
245
- frame = stripVTControlCharacters(codeFrame(readFileSync(file, "utf8"), 0, at, 200));
246
- } catch {}
247
- return /* @__PURE__ */ new SyntaxError(`${reason} (${relativeFile(root, file)}:${at.line}:${at.column})${frame ? `\n${frame}` : ""}`);
248
- }
249
- /** `stack` with positions in transformed files mapped back to their sources. */
250
- function originalStack(stack) {
251
- return stack.replace(/^(\s+at (?:.*\()?)(.+?):(\d+):(\d+)(\)?)$/gm, (whole, before, file, line, column, after) => {
252
- const loaded = transformed.get(file);
253
- const at0 = Number(column) - 1 - (line === "1" ? loaded?.shift ?? 0 : 0);
254
- if (!loaded || at0 < 0) return whole;
255
- const at = getOriginalPosition(loaded.map, {
256
- line: Number(line),
257
- column: at0
258
- });
259
- if (!at) return whole;
260
- const original = at.line;
261
- return `${before}${file}:${original}:${callee(file, original, at.column) + 1}${after}`;
262
- });
263
- }
264
- /**
265
- * Where V8 would put a call's position without the transform: jiti calls an imported function as
266
- * `(0, _module.fn)()`, which V8 reports at the `(`, where a plain `fn()` reports at `fn`.
267
- */
268
- function callee(file, line, column) {
269
- const text = readFileSync(file, "utf8").split(/\r?\n/)[line - 1] ?? "";
270
- if (text[column] !== "(") return column;
271
- let start = column;
272
- while (start > 0 && /[\w$]/.test(text[start - 1])) start--;
273
- return start;
274
- }
275
- /** Fails when the nearest tsconfig.json isn't valid JSON with comments, or extends a missing file. */
276
- function checkTsconfig(dir, root) {
277
- let found;
278
- try {
279
- found = getTsconfig(dir);
280
- } catch (error) {
281
- const message = error.message;
282
- const missing = /^File '(.+)' not found\.$/.exec(message);
283
- throw new TsconfigError(missing ? `Failed to load tsconfig '${missing[1]}': Tsconfig not found` : `Failed to load tsconfig: ${message}`);
284
- }
285
- if (!found) return;
286
- try {
287
- JSON.parse(stripJsonComments(readFileSync(found.path, "utf8")));
288
- } catch (error) {
289
- throw new TsconfigError(`Failed to load tsconfig '${relativeFile(root, found.path)}': ${error.message}`);
290
- }
291
- }
292
- /** JSON with comments and trailing commas (tsconfig's dialect) as plain JSON. */
293
- function stripJsonComments(text) {
294
- return scan(scan(text, (rest) => {
295
- if (rest.startsWith("//")) {
296
- const end = rest.indexOf("\n");
297
- return [end < 0 ? rest.length : end, ""];
298
- }
299
- if (rest.startsWith("/*")) {
300
- const end = rest.indexOf("*/", 2);
301
- return [end < 0 ? rest.length : end + 2, " "];
302
- }
303
- }), (rest) => /^,\s*[}\]]/.test(rest) ? [1, " "] : void 0);
304
- }
305
- /** Rewrites `text` outside its strings: `at` says how much to replace here, and with what. */
306
- function scan(text, at) {
307
- let out = "";
308
- for (let i = 0; i < text.length;) {
309
- if (text[i] === "\"") {
310
- let end = i + 1;
311
- while (end < text.length && text[end] !== "\"") end += text[end] === "\\" ? 2 : 1;
312
- out += text.slice(i, end + 1);
313
- i = end + 1;
314
- continue;
315
- }
316
- const hit = at(text.slice(i));
317
- if (hit) {
318
- out += hit[1];
319
- i += hit[0];
320
- } else out += text[i++];
321
- }
322
- return out;
323
- }
324
- //#endregion
325
114
  //#region src/engine/run.ts
326
115
  /** An error as it crosses to the main process: its diff computed, then plain data. */
327
116
  function serializeError(error) {
@@ -413,7 +202,9 @@ async function runTest(test, { file, stagingDir, signal, reporter }, bodies) {
413
202
  },
414
203
  progress: (progress) => reporter.progress(index, progress),
415
204
  debug: (line) => reporter.debug(index, line),
416
- unawaited: async () => await unawaitedError(pending) ?? attemptExpectError(own, task)
205
+ unawaited: () => unawaitedError(pending),
206
+ expectError: () => attemptExpectError(own),
207
+ assertions: () => rawAssertions(task)
417
208
  })));
418
209
  bodies.add(body);
419
210
  const release = () => lease?.release();
@@ -515,10 +306,10 @@ function startWorker(channel) {
515
306
  getRunContext: () => run,
516
307
  collectingFile
517
308
  });
518
- extendExpect(matchers);
309
+ extendExpect(evalMatchers);
519
310
  routeConsole(reporter);
520
311
  try {
521
- const tests = await collect(file, () => loadEvalFile(file, run.config.root));
312
+ const tests = await collect(file, () => loadEvalModule(file, run.config.root));
522
313
  channel.send({
523
314
  t: "collected",
524
315
  tests: tests.map(({ index, name, groups, mode, options }) => ({
@@ -574,4 +365,4 @@ process.on("uncaughtException", (error) => worker.unhandled(error));
574
365
  //#endregion
575
366
  export {};
576
367
 
577
- //# sourceMappingURL=worker-entry-DXeyWY-m.js.map
368
+ //# sourceMappingURL=worker-entry-yOchGYYv.js.map