reeval 0.6.3 → 0.8.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 (226) hide show
  1. package/README.md +265 -0
  2. package/THIRD_PARTY_NOTICES.md +5 -5
  3. package/assets/package.json +1 -1
  4. package/assets/pnpm-lock.yaml +30 -307
  5. package/dist/{agent-DKuFnZPM.js → agent-B72lZ6w5.js} +6 -6
  6. package/dist/{agent-DKuFnZPM.js.map → agent-B72lZ6w5.js.map} +1 -1
  7. package/dist/{agent-oirN_8IS.js → agent-Cfj1wD4D.js} +5 -5
  8. package/dist/{agent-oirN_8IS.js.map → agent-Cfj1wD4D.js.map} +1 -1
  9. package/dist/{analysis-BV3TCznv.js → analysis-BTNnKh1w.js} +4 -4
  10. package/dist/{analysis-BV3TCznv.js.map → analysis-BTNnKh1w.js.map} +1 -1
  11. package/dist/{assemble-DYCDgbTq.js → assemble-BbFVjHeS.js} +125 -14
  12. package/dist/assemble-BbFVjHeS.js.map +1 -0
  13. package/dist/assemble-CXiTVyHD.js +2 -0
  14. package/dist/bridge/index.mjs +66 -7
  15. package/dist/bridge/package.json +3 -3
  16. package/dist/bridge/pnpm-lock.yaml +84 -89
  17. package/dist/capture-BXhBfmsM.js +1206 -0
  18. package/dist/capture-BXhBfmsM.js.map +1 -0
  19. package/dist/capture-N7r3yeak.js +2 -0
  20. package/dist/{cli-BIhzl_v_.js → cli-BMjTKY-D.js} +151 -193
  21. package/dist/cli-BMjTKY-D.js.map +1 -0
  22. package/dist/{cli-spec-DUeyuSIQ.js → cli-spec-DSvKsOK4.js} +25 -11
  23. package/dist/cli-spec-DSvKsOK4.js.map +1 -0
  24. package/dist/cli.js +2 -2
  25. package/dist/client-CwzU9CiW.js +256 -0
  26. package/dist/client-CwzU9CiW.js.map +1 -0
  27. package/dist/{command-B8tcwUJk.js → command-BK4kOgkH.js} +15 -15
  28. package/dist/{command-B8tcwUJk.js.map → command-BK4kOgkH.js.map} +1 -1
  29. package/dist/{command-fJpZK205.js → command-BdstSEHu.js} +7 -7
  30. package/dist/{command-fJpZK205.js.map → command-BdstSEHu.js.map} +1 -1
  31. package/dist/{command-DuJBqcwu.js → command-BqJtFiPy.js} +153 -36
  32. package/dist/command-BqJtFiPy.js.map +1 -0
  33. package/dist/command-CTVGuH8y.js +2 -0
  34. package/dist/{command-KoOJ0ntD.js → command-JPGNzFsA.js} +9 -9
  35. package/dist/{command-KoOJ0ntD.js.map → command-JPGNzFsA.js.map} +1 -1
  36. package/dist/{commands-CHdTfPB6.js → commands-B618jg3C.js} +6 -6
  37. package/dist/{commands-CHdTfPB6.js.map → commands-B618jg3C.js.map} +1 -1
  38. package/dist/{commands-DE604ldB.js → commands-Duo2ur3r.js} +1 -1
  39. package/dist/{config-7-gXOgQf.js → config-B-E0xRkf.js} +4 -4
  40. package/dist/{config-7-gXOgQf.js.map → config-B-E0xRkf.js.map} +1 -1
  41. package/dist/db-CnoUy-FZ.js +3 -0
  42. package/dist/{db-DvkzBhM6.js → db-DFbtGIYy.js} +84 -37
  43. package/dist/db-DFbtGIYy.js.map +1 -0
  44. package/dist/{dist-DsZNsoD3.js → dist-CTzThfu_.js} +3 -3
  45. package/dist/{dist-DsZNsoD3.js.map → dist-CTzThfu_.js.map} +1 -1
  46. package/dist/{docker-BBOMThRi.js → docker-2qns7hJ2.js} +4 -4
  47. package/dist/{docker-BBOMThRi.js.map → docker-2qns7hJ2.js.map} +1 -1
  48. package/dist/{docker-CiNVc7di.js → docker-D6t23fZl.js} +1 -1
  49. package/dist/{docker-CzFiN2AZ.js → docker-IFRW8K5f.js} +2 -2
  50. package/dist/{docker-CzFiN2AZ.js.map → docker-IFRW8K5f.js.map} +1 -1
  51. package/dist/{doctor-C06kYs2r.js → doctor-B6oYTPoR.js} +11 -11
  52. package/dist/{doctor-C06kYs2r.js.map → doctor-B6oYTPoR.js.map} +1 -1
  53. package/dist/{egress-De64jpeQ.js → egress-IUKdeayc.js} +17 -10
  54. package/dist/egress-IUKdeayc.js.map +1 -0
  55. package/dist/fake-instructions-CUI33I_F.js +32 -0
  56. package/dist/fake-instructions-CUI33I_F.js.map +1 -0
  57. package/dist/{files-BqIF7iu4.js → files-B6aVVGrk.js} +3 -3
  58. package/dist/{files-BqIF7iu4.js.map → files-B6aVVGrk.js.map} +1 -1
  59. package/dist/files-BpYgF2z0.js +2 -0
  60. package/dist/{files-Cq99wif-.js → files-CMSUXAEg.js} +16 -5
  61. package/dist/{files-Cq99wif-.js.map → files-CMSUXAEg.js.map} +1 -1
  62. package/dist/files-YCCVaTQC.js +2 -0
  63. package/dist/{git-Dnl-kXgD.js → git-EmdFJ4DY.js} +2 -2
  64. package/dist/{git-Dnl-kXgD.js.map → git-EmdFJ4DY.js.map} +1 -1
  65. package/dist/{harness-3QUEWx8G.js → harness-iqWeJQMM.js} +35 -12
  66. package/dist/harness-iqWeJQMM.js.map +1 -0
  67. package/dist/harness.d.ts +22 -11
  68. package/dist/harness.js +1 -1
  69. package/dist/{header-IE-uIvX0.js → header-_F0EWob3.js} +2 -2
  70. package/dist/{header-IE-uIvX0.js.map → header-_F0EWob3.js.map} +1 -1
  71. package/dist/{images-B8Mp_VXZ.js → images-CscddrJU.js} +6 -6
  72. package/dist/{images-B8Mp_VXZ.js.map → images-CscddrJU.js.map} +1 -1
  73. package/dist/index.d.ts +13 -8
  74. package/dist/index.js +99 -24
  75. package/dist/index.js.map +1 -1
  76. package/dist/init-DBHyi92L.js +2 -0
  77. package/dist/{init-B8mw86E6.js → init-NQfIvi-0.js} +4 -4
  78. package/dist/{init-B8mw86E6.js.map → init-NQfIvi-0.js.map} +1 -1
  79. package/dist/{invocations-DHC946b-.js → invocations-nPvrlZPj.js} +3 -3
  80. package/dist/{invocations-DHC946b-.js.map → invocations-nPvrlZPj.js.map} +1 -1
  81. package/dist/{judge-7WjNdU9z.js → judge-CeYPN8P_.js} +2 -2
  82. package/dist/{judge-7WjNdU9z.js.map → judge-CeYPN8P_.js.map} +1 -1
  83. package/dist/judge.d.ts +5 -4
  84. package/dist/judge.js +4 -3
  85. package/dist/judge.js.map +1 -1
  86. package/dist/{live-DZkCtmNP.js → live-S0qODb6o.js} +2 -2
  87. package/dist/{live-DZkCtmNP.js.map → live-S0qODb6o.js.map} +1 -1
  88. package/dist/model-BbLGRtOs.js +2 -0
  89. package/dist/{model-CtrJdFi6.js → model-BndnmcLm.js} +241 -26
  90. package/dist/model-BndnmcLm.js.map +1 -0
  91. package/dist/{model-Cp6NoAT3.js → model-Cl507trk.js} +8 -7
  92. package/dist/model-Cl507trk.js.map +1 -0
  93. package/dist/{model-Bv8uUZ07.js → model-DEQo3FkZ.js} +6 -6
  94. package/dist/model-DEQo3FkZ.js.map +1 -0
  95. package/dist/{model-BeoRxCcJ.js → model-DMOraCcm.js} +1 -1
  96. package/dist/{opencode-providers-DjlA5fuC.js → opencode-providers-ByD85Q0l.js} +21 -7
  97. package/dist/{opencode-providers-DjlA5fuC.js.map → opencode-providers-ByD85Q0l.js.map} +1 -1
  98. package/dist/{options-CWYB613o.js → options-DPUlm4FI.js} +152 -29
  99. package/dist/options-DPUlm4FI.js.map +1 -0
  100. package/dist/pairs-DDsjgm5F.js +149 -0
  101. package/dist/pairs-DDsjgm5F.js.map +1 -0
  102. package/dist/{plan-CsPE24pp.js → plan-PPc4-6xd.js} +35 -18
  103. package/dist/plan-PPc4-6xd.js.map +1 -0
  104. package/dist/{preflight-r0DgibQV.js → preflight-CddycK92.js} +3 -3
  105. package/dist/{preflight-r0DgibQV.js.map → preflight-CddycK92.js.map} +1 -1
  106. package/dist/{preflight-DKZjb7ZH.js → preflight-Zumy0adT.js} +1 -1
  107. package/dist/{prepare-DOkvAa9D.js → prepare-CKdMoC7e.js} +2 -2
  108. package/dist/{prepare-CTLg3nuk.js → prepare-CsP-057p.js} +4 -4
  109. package/dist/{prepare-CTLg3nuk.js.map → prepare-CsP-057p.js.map} +1 -1
  110. package/dist/{provenance--cVNo80L.js → provenance-CsX6PHDR.js} +2 -2
  111. package/dist/{provenance--cVNo80L.js.map → provenance-CsX6PHDR.js.map} +1 -1
  112. package/dist/{providers-DNLQzVnc.js → providers-DkwiLKDS.js} +3 -3
  113. package/dist/{providers-DNLQzVnc.js.map → providers-DkwiLKDS.js.map} +1 -1
  114. package/dist/{providers-B2cSfewm.js → providers-yXZZcPfx.js} +1 -1
  115. package/dist/{query-DTtIZaua.js → query-BUcwCYsI.js} +2 -2
  116. package/dist/{query-DTtIZaua.js.map → query-BUcwCYsI.js.map} +1 -1
  117. package/dist/query-noGbekGF.js +2 -0
  118. package/dist/{questions-ZdT3JDyQ.js → questions-BEPj98fZ.js} +27 -118
  119. package/dist/questions-BEPj98fZ.js.map +1 -0
  120. package/dist/{record-CbuQH4l1.js → record-BRP9vZrj.js} +21 -1
  121. package/dist/record-BRP9vZrj.js.map +1 -0
  122. package/dist/results-BcSHWbgB.js +52 -0
  123. package/dist/results-BcSHWbgB.js.map +1 -0
  124. package/dist/resume-DZ9AmfPv.js +406 -0
  125. package/dist/resume-DZ9AmfPv.js.map +1 -0
  126. package/dist/{matchers-Bp-OH1vj.js → runtime-Dfb2r-cS.js} +2 -179
  127. package/dist/runtime-Dfb2r-cS.js.map +1 -0
  128. package/dist/sandbox.d.ts +1 -1
  129. package/dist/{server-BFlKK2j6.js → server-Da60oe4b.js} +9 -9
  130. package/dist/{server-BFlKK2j6.js.map → server-Da60oe4b.js.map} +1 -1
  131. package/dist/server-DiGR4JxK.js +2 -0
  132. package/dist/{source-B2ASbTdc.js → source-BVOnL3sn.js} +2 -2
  133. package/dist/{source-B2ASbTdc.js.map → source-BVOnL3sn.js.map} +1 -1
  134. package/dist/source-Dqu0jKwx.js +2 -0
  135. package/dist/src-BHNiP-5A.js +4 -0
  136. package/dist/{src-CDiGyoDt.js → src-BT4dB5CO.js} +1 -1
  137. package/dist/src-BT5pwco0.js +3 -0
  138. package/dist/src-BrMbt1B2.js +3 -0
  139. package/dist/{src-s-VffoYK.js → src-C1E9HDWO.js} +5 -3
  140. package/dist/{src-s-VffoYK.js.map → src-C1E9HDWO.js.map} +1 -1
  141. package/dist/{src-CqsERnCZ.js → src-CxTC5kNI.js} +10 -6
  142. package/dist/{src-CqsERnCZ.js.map → src-CxTC5kNI.js.map} +1 -1
  143. package/dist/src-D13vpMh0.js +3 -0
  144. package/dist/{src-DxFJrMUA.js → src-D95O-Smv.js} +12 -7
  145. package/dist/{src-DxFJrMUA.js.map → src-D95O-Smv.js.map} +1 -1
  146. package/dist/{src-CVoCJjEe.js → src-DDNXsD9H.js} +29 -5
  147. package/dist/{src-CVoCJjEe.js.map → src-DDNXsD9H.js.map} +1 -1
  148. package/dist/{src-DSE0FWaU.js → src-DVy58-zZ.js} +2 -2
  149. package/dist/{src-DSE0FWaU.js.map → src-DVy58-zZ.js.map} +1 -1
  150. package/dist/{src-BHFNhTTQ.js → src-D_cXqmnI.js} +59 -49
  151. package/dist/{src-BHFNhTTQ.js.map → src-D_cXqmnI.js.map} +1 -1
  152. package/dist/src-DdRlaiRc.js +3 -0
  153. package/dist/{src-zOeHvrzR.js → src-TdJuDYqB.js} +13 -13
  154. package/dist/{src-zOeHvrzR.js.map → src-TdJuDYqB.js.map} +1 -1
  155. package/dist/src-xczuQbE6.js +3 -0
  156. package/dist/{state-DBKcUJ2u.js → state-B72h_jEw.js} +14 -14
  157. package/dist/{state-DBKcUJ2u.js.map → state-B72h_jEw.js.map} +1 -1
  158. package/dist/state-Bf_Vq_pV.js +2 -0
  159. package/dist/studio-app/assets/{index-WQPq5K3E.js → index-Bgr-efZm.js} +9 -9
  160. package/dist/studio-app/index.html +1 -1
  161. package/dist/{summary-BBABbon9.js → summary-CJdxaRdM.js} +7 -7
  162. package/dist/{summary-BBABbon9.js.map → summary-CJdxaRdM.js.map} +1 -1
  163. package/dist/{summary-CahgSiVt.js → summary-k3mhWWXv.js} +8 -4
  164. package/dist/summary-k3mhWWXv.js.map +1 -0
  165. package/dist/testing.d.ts +14 -0
  166. package/dist/testing.js +2 -0
  167. package/dist/tool-target-BU1JnSE9.js +34 -0
  168. package/dist/tool-target-BU1JnSE9.js.map +1 -0
  169. package/dist/{tools-53YHomyk.js → tools-D0gF2QoV.js} +3 -3
  170. package/dist/{tools-53YHomyk.js.map → tools-D0gF2QoV.js.map} +1 -1
  171. package/dist/{types-CoAfC-_k.d.ts → types-_LOFdPUf.d.ts} +266 -36
  172. package/dist/{usage-DsYUqIUM.js → usage-DDF_6tkV.js} +4 -2
  173. package/dist/{usage-DsYUqIUM.js.map → usage-DDF_6tkV.js.map} +1 -1
  174. package/dist/view/index.d.ts +19 -6
  175. package/dist/view/index.js +6 -6
  176. package/dist/{views-Drl2OXuj.js → views-DZ1YDqey.js} +4 -4
  177. package/dist/{views-Drl2OXuj.js.map → views-DZ1YDqey.js.map} +1 -1
  178. package/dist/views-Ds0GXWtX.js +3 -0
  179. package/dist/{worker-entry-mCctDzig.js → worker-entry-DXeyWY-m.js} +73 -2
  180. package/dist/worker-entry-DXeyWY-m.js.map +1 -0
  181. package/dist/{workspace-BT4jd04k.js → workspace-DpXdrslo.js} +3 -3
  182. package/dist/{workspace-BT4jd04k.js.map → workspace-DpXdrslo.js.map} +1 -1
  183. package/dist/{workspace-U6M1gKzo.js → workspace-DzNL-3iO.js} +1 -1
  184. package/package.json +14 -8
  185. package/dist/assemble-DYCDgbTq.js.map +0 -1
  186. package/dist/assemble-DykFydSU.js +0 -2
  187. package/dist/capture-CisAmy-G.js +0 -587
  188. package/dist/capture-CisAmy-G.js.map +0 -1
  189. package/dist/capture-DquyqAHC.js +0 -2
  190. package/dist/cli-BIhzl_v_.js.map +0 -1
  191. package/dist/cli-spec-DUeyuSIQ.js.map +0 -1
  192. package/dist/command-CwuwuKJD.js +0 -2
  193. package/dist/command-DuJBqcwu.js.map +0 -1
  194. package/dist/db-BVE1kZ2w.js +0 -2
  195. package/dist/db-DvkzBhM6.js.map +0 -1
  196. package/dist/egress-De64jpeQ.js.map +0 -1
  197. package/dist/files-Cs8tbYQY.js +0 -2
  198. package/dist/files-wUtoO5aA.js +0 -2
  199. package/dist/harness-3QUEWx8G.js.map +0 -1
  200. package/dist/init-DDEpamaf.js +0 -2
  201. package/dist/matchers-Bp-OH1vj.js.map +0 -1
  202. package/dist/model-Bv8uUZ07.js.map +0 -1
  203. package/dist/model-C_B5JrhL.js +0 -2
  204. package/dist/model-Cp6NoAT3.js.map +0 -1
  205. package/dist/model-CtrJdFi6.js.map +0 -1
  206. package/dist/options-CWYB613o.js.map +0 -1
  207. package/dist/plan-CsPE24pp.js.map +0 -1
  208. package/dist/query-BWc_5Lhe.js +0 -2
  209. package/dist/questions-ZdT3JDyQ.js.map +0 -1
  210. package/dist/record-CbuQH4l1.js.map +0 -1
  211. package/dist/results-CrFs7_In.js +0 -37
  212. package/dist/results-CrFs7_In.js.map +0 -1
  213. package/dist/server-HRUHVcHc.js +0 -2
  214. package/dist/source-Co7h89WK.js +0 -2
  215. package/dist/src-BE19tji4.js +0 -3
  216. package/dist/src-Bo8GFUXg.js +0 -3
  217. package/dist/src-BoziVhKa.js +0 -3
  218. package/dist/src-CFxHPwQA.js +0 -3
  219. package/dist/src-CPkDaNxp.js +0 -3
  220. package/dist/src-D-go5-qz.js +0 -4
  221. package/dist/state-BaHjYXr1.js +0 -2
  222. package/dist/stats-BNAHlNMD.js +0 -114
  223. package/dist/stats-BNAHlNMD.js.map +0 -1
  224. package/dist/summary-CahgSiVt.js.map +0 -1
  225. package/dist/views-BhGinAz_.js +0 -3
  226. package/dist/worker-entry-mCctDzig.js.map +0 -1
@@ -1,122 +1,25 @@
1
1
  import { o as redactSecrets } from "./redact-DJ9JCShu.js";
2
2
  import { s as recordFileName } from "./ids-Bp6ut7ZD.js";
3
- import { l as judgeRoute } from "./judge-7WjNdU9z.js";
3
+ import { l as judgeRoute } from "./judge-CeYPN8P_.js";
4
+ import { a as providerModel, i as isFake, r as cannedModel } from "./model-Cl507trk.js";
4
5
  import { r as patchForJudge } from "./patch-CGCVipPu.js";
5
- import { a as providerModel, i as isFake, r as cannedModel } from "./model-Cp6NoAT3.js";
6
+ import { c as voteReason, i as ratesOf, n as pairsOf, o as slots, s as voteOf, t as acrossOf } from "./pairs-DDsjgm5F.js";
6
7
  import { join } from "node:path";
7
8
  import { readFile } from "node:fs/promises";
8
- import { z } from "zod";
9
9
  import { Output, generateText } from "ai";
10
- //#region src/compare/pairs.ts
11
- /** The side a pair names: an arm within a harness, a harness across them. */
12
- const sideName = (cut, side) => cut === "within" ? side.arm : side.harness;
13
- /** Every two-element combination, in the order given. */
14
- function combinations(items) {
15
- const out = [];
16
- for (let i = 0; i < items.length; i++) for (let j = i + 1; j < items.length; j++) out.push([items[i], items[j]]);
17
- return out;
18
- }
19
- /** Distinct values in first-seen order. */
20
- const distinct = (values) => [...new Set(values)];
21
- /**
22
- * The pairs to judge. Within a harness, for each run, every two arms; across harnesses, for each
23
- * arm and run, every two harnesses. Attempts that failed their deterministic checks are left out
24
- * (they still count in the pass rate), so a pair missing a side isn't judged. The control arm
25
- * comes first, then arms and harnesses in the order they first appear.
26
- */
27
- function pairsOf(attempts) {
28
- const eligible = attempts.filter((a) => a.checksPassed);
29
- const find = (harness, arm, run) => eligible.find((a) => a.harness === harness && a.arm === arm && a.run === run);
30
- const harnesses = distinct(attempts.map((a) => a.harness));
31
- const arms = distinct([...attempts.filter((a) => a.control).map((a) => a.arm), ...attempts.map((a) => a.arm)]);
32
- const runs = [...new Set(attempts.map((a) => a.run))].sort((x, y) => x - y);
33
- const pairs = [];
34
- for (const harness of harnesses) for (const run of runs) for (const [x, y] of combinations(arms)) {
35
- const a = find(harness, x, run);
36
- const b = find(harness, y, run);
37
- if (a && b) pairs.push({
38
- cut: "within",
39
- harness,
40
- run,
41
- a,
42
- b
43
- });
44
- }
45
- for (const arm of arms) for (const run of runs) for (const [x, y] of combinations(harnesses)) {
46
- const a = find(x, arm, run);
47
- const b = find(y, arm, run);
48
- if (a && b) pairs.push({
49
- cut: "across",
50
- arm,
51
- run,
52
- a,
53
- b
54
- });
55
- }
56
- return pairs;
57
- }
58
- /** The two sides in the order the model sees them: `a` first, or `b` first when swapped. */
59
- const slots = (pair, swapped) => swapped ? [pair.b, pair.a] : [pair.a, pair.b];
60
- /** Maps a blinded pick (`A` is the first slot) back to the side's name. */
61
- function winnerOf(pair, swapped, pick) {
62
- if (pick === "tie") return "tie";
63
- const [first, second] = slots(pair, swapped);
64
- return sideName(pair.cut, pick === "A" ? first : second);
65
- }
66
- /** The vote a pick makes, with the pair's names. */
67
- function voteOf(question, pair, swapped, pick) {
68
- return {
69
- question,
70
- cut: pair.cut,
71
- ...pair.cut === "within" ? { harness: pair.harness } : { arm: pair.arm },
72
- run: pair.run,
73
- a: sideName(pair.cut, pair.a),
74
- b: sideName(pair.cut, pair.b),
75
- winner: winnerOf(pair, swapped, pick),
76
- swapped
77
- };
78
- }
79
- /**
80
- * Each side's wins over the decided votes it was in, per cut. A tie decides nothing, so it counts
81
- * for neither side; both orders of a pair count, since each is its own judgement.
82
- */
83
- function ratesOf(votes) {
84
- const rates = /* @__PURE__ */ new Map();
85
- const rate = (cut, name) => {
86
- const key = `${cut}\0${name}`;
87
- let found = rates.get(key);
88
- if (!found) {
89
- found = {
90
- cut,
91
- name,
92
- wins: 0,
93
- n: 0
94
- };
95
- rates.set(key, found);
96
- }
97
- return found;
98
- };
99
- for (const v of votes) {
100
- if (v.winner === "tie") continue;
101
- for (const name of [v.a, v.b]) {
102
- const r = rate(v.cut, name);
103
- r.n++;
104
- if (v.winner === name) r.wins++;
105
- }
106
- }
107
- const order = ["within", "across"];
108
- return [...rates.values()].sort((x, y) => order.indexOf(x.cut) - order.indexOf(y.cut));
109
- }
110
- //#endregion
10
+ import { z } from "zod";
111
11
  //#region src/compare/questions.ts
112
12
  const QUESTION_SYSTEM = `You compare two attempts by coding agents at the same task and answer one question about them.
113
13
  Each attempt is shown as the changes it made to the project, as a unified diff, labelled A or B. The labels are assigned at random: which attempt comes first says nothing about it.
114
- Judge only by the question, from the changes shown. Answer A or B for the attempt the question favours, or tie when the changes don't separate them on it.`;
115
- const voteSchema = z.object({ winner: z.enum([
116
- "A",
117
- "B",
118
- "tie"
119
- ]) });
14
+ Judge only by the question, from the changes shown. Answer A or B for the attempt the question favours, or tie when the changes don't separate them on it. Give a short reason for the pick.`;
15
+ const voteSchema = z.object({
16
+ winner: z.enum([
17
+ "A",
18
+ "B",
19
+ "tie"
20
+ ]),
21
+ reason: z.string().optional()
22
+ });
120
23
  /** Roughly four characters a token: each side gets half of `maxInputTokens`. */
121
24
  const CHARS_PER_TOKEN = 4;
122
25
  /** A diff as the model sees it: dependency and binary noise dropped, then cut to `chars`. */
@@ -167,9 +70,14 @@ function blindPair(question, pair, swapped, maxInputTokens) {
167
70
  }
168
71
  function fakeAnswer(fake, pair) {
169
72
  const vote = fake.vote ?? "tie";
170
- if (typeof vote === "object") return cannedModel({ error: vote.error });
73
+ if (typeof vote === "object" && "error" in vote) return cannedModel({ error: vote.error });
171
74
  const pick = typeof vote === "function" ? vote(pair) : vote;
172
- return cannedModel({ text: JSON.stringify({ winner: pick }) });
75
+ const winner = typeof pick === "string" ? pick : pick.winner;
76
+ const reason = typeof pick === "string" ? void 0 : pick.reason;
77
+ return cannedModel({ text: JSON.stringify({
78
+ winner,
79
+ ...reason !== void 0 ? { reason } : {}
80
+ }) });
173
81
  }
174
82
  async function ask(model, pair, maxOutputTokens, signal) {
175
83
  const result = await generateText({
@@ -188,9 +96,10 @@ async function ask(model, pair, maxOutputTokens, signal) {
188
96
  maxRetries: 3,
189
97
  ...signal ? { abortSignal: signal } : {}
190
98
  });
191
- const { winner } = result.output;
99
+ const { winner, reason } = result.output;
192
100
  return {
193
101
  pick: winner,
102
+ reason: voteReason(reason),
194
103
  resolvedModel: isFake(model) ? null : result.response?.modelId ?? null
195
104
  };
196
105
  }
@@ -224,9 +133,9 @@ async function answerQuestion(options) {
224
133
  if (error !== void 0) return null;
225
134
  const blind = blindPair(question, pair, swapped, options.maxInputTokens);
226
135
  try {
227
- const { pick, resolvedModel } = await ask(model, blind, options.maxOutputTokens, options.signal);
136
+ const { pick, reason, resolvedModel } = await ask(model, blind, options.maxOutputTokens, options.signal);
228
137
  if (resolvedModel) served.add(resolvedModel);
229
- return voteOf(question, pair, swapped, pick);
138
+ return voteOf(question, pair, swapped, pick, reason);
230
139
  } catch (e) {
231
140
  error ??= errorText(e);
232
141
  return null;
@@ -272,12 +181,12 @@ function questionRunner(options) {
272
181
  if (!e || started.has(id)) return;
273
182
  const attempts = ended.get(id) ?? [];
274
183
  const answers = (async () => {
275
- const pairs = pairsOf((await Promise.all(attempts.map(async (a) => stagedAttempt(a, await readStaged(options.stagingDir, a.key))))).filter((s) => s !== null).sort((x, y) => (x.id ?? "") < (y.id ?? "") ? -1 : 1));
184
+ const staged = (await Promise.all(attempts.map(async (a) => stagedAttempt(a, await readStaged(options.stagingDir, a.key))))).filter((s) => s !== null).sort((x, y) => (x.id ?? "") < (y.id ?? "") ? -1 : 1);
276
185
  return Promise.all(e.questions.map(async (q) => {
277
186
  const answer = await answerQuestion({
278
187
  question: q.question,
279
188
  model: q.model,
280
- pairs,
189
+ pairs: pairsOf(staged, acrossOf(q.across)),
281
190
  maxInputTokens: options.maxInputTokens,
282
191
  maxOutputTokens: options.maxOutputTokens,
283
192
  signal: controller.signal
@@ -322,4 +231,4 @@ function questionRunner(options) {
322
231
  //#endregion
323
232
  export { questionRunner };
324
233
 
325
- //# sourceMappingURL=questions-ZdT3JDyQ.js.map
234
+ //# sourceMappingURL=questions-BEPj98fZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"questions-BEPj98fZ.js","names":[],"sources":["../src/compare/questions.ts"],"mappings":";;;;;;;;;;;AAkCA,MAAa,kBAAkB;;;AAI/B,MAAM,aAAa,EAAE,OAAO;CAC1B,QAAQ,EAAE,KAAK;EAAC;EAAK;EAAK;CAAK,CAAC;CAChC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS;AAC9B,CAAC;;AAGD,MAAM,kBAAkB;;AAGxB,SAAS,UAAU,MAAc,OAAuB;CACtD,MAAM,QAAQ,cAAc,IAAI;CAChC,IAAI,CAAC,MAAM,KAAK,GAAG,OAAO;CAC1B,IAAI,MAAM,UAAU,OAAO,OAAO;CAClC,OAAO,GAAG,MAAM,MAAM,GAAG,KAAK,EAAE,yBAAyB,MAAM,MAAM,MAAM,OAAO;AACpF;;AAGA,SAAS,OAAO,OAAoB,QAAoC;CACtE,MAAM,IAAI,MAAM,WAAW,CAAC;CAC5B,MAAM,IAAI,OAAO,WAAW,CAAC;CAC7B,IAAI,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,MAAM,EAAE,EAAE,GAAG,OAAO;CAC/E,OAAO,EAAE,KAAK,MAAM;AACtB;;AAGA,SAAgB,UACd,UACA,MACA,SACA,gBACW;CACX,MAAM,CAAC,OAAO,UAAU,MAAM,MAAM,OAAO;CAC3C,MAAM,QAAQ,KAAK,MAAO,iBAAiB,kBAAmB,CAAC;CAC/D,MAAM,IAAI,UAAU,MAAM,MAAM,KAAK;CACrC,MAAM,IAAI,UAAU,OAAO,MAAM,KAAK;CACtC,MAAM,OAAO,OAAO,OAAO,MAAM;CACjC,MAAM,SAAS;EACb,aAAa;EACb,GAAI,OAAO;GAAC;GAAI;GAAsC;GAAU;GAAM;EAAS,IAAI,CAAC;EACpF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,CAAC,KAAK,IAAI;CACX,OAAO;EAAE;EAAU,QAAQ,cAAc,MAAM;EAAG;EAAG;CAAE;AACzD;AAIA,SAAS,WAAW,MAAyB,MAAiB;CAC5D,MAAM,OAAO,KAAK,QAAQ;CAC1B,IAAI,OAAO,SAAS,YAAY,WAAW,MAAM,OAAO,YAAY,EAAE,OAAO,KAAK,MAAM,CAAC;CACzF,MAAM,OAAO,OAAO,SAAS,aAAa,KAAK,IAAI,IAAI;CACvD,MAAM,SAAS,OAAO,SAAS,WAAW,OAAO,KAAK;CACtD,MAAM,SAAS,OAAO,SAAS,WAAW,KAAA,IAAY,KAAK;CAC3D,OAAO,YAAY,EACjB,MAAM,KAAK,UAAU;EAAE;EAAQ,GAAI,WAAW,KAAA,IAAY,EAAE,OAAO,IAAI,CAAC;CAAG,CAAC,EAC9E,CAAC;AACH;AAIA,eAAe,IACb,OACA,MACA,iBACA,QACe;CACf,MAAM,SAAS,MAAM,aAAa;EAChC,OAAO,OAAO,KAAK,IACf,WAAW,OAAO,IAAI,IACtB,MAAM,cAAc;GAAE,MAAM;GAAO,OAAO,WAAW,KAAK,CAAC,CAAC;EAAK,CAAC;EACtE,QAAQ;EACR,QAAQ,KAAK;EACb,QAAQ,OAAO,OAAO;GAAE,QAAQ;GAAY,MAAM;EAAO,CAAC;EAC1D,aAAa;EACb;EACA,YAAY;EACZ,GAAI,SAAS,EAAE,aAAa,OAAO,IAAI,CAAC;CAC1C,CAAC;CACD,MAAM,EAAE,QAAQ,WAAW,OAAO;CAClC,OAAO;EACL,MAAM;EACN,QAAQ,WAAW,MAAM;EACzB,eAAe,OAAO,KAAK,IAAI,OAAQ,OAAO,UAAU,WAAW;CACrE;AACF;;AAGA,eAAe,OAAa,OAAY,OAAe,MAA+B;CACpF,MAAM,MAAW,IAAI,MAAM,MAAM,MAAM;CACvC,IAAI,OAAO;CACX,MAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,OAAO,MAAM,MAAM,EAAE,GAAG,YAAY;EAC9E,OAAO,OAAO,MAAM,QAAQ;GAC1B,MAAM,IAAI;GACV,IAAI,KAAK,MAAM,KAAK,MAAM,EAAO;EACnC;CACF,CAAC;CACD,MAAM,QAAQ,IAAI,KAAK;CACvB,OAAO;AACT;AAaA,MAAM,aAAa,UACjB,eAAe,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAA,CAAG,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE;;;;;AAM7F,eAAsB,eAAe,SAAgD;CACnF,MAAM,EAAE,UAAU,OAAO,UAAU;CACnC,MAAM,QAAQ,MAAM,SAAS,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,aAAa;EAAE;EAAM;CAAQ,EAAE,CAAC;CACzF,MAAM,yBAAS,IAAI,IAAY;CAC/B,IAAI;CAkBJ,MAAM,QAAO,MAjBO,OAAO,OAAO,QAAQ,eAAe,GAAG,OAAO,EAAE,MAAM,cAAc;EACvF,IAAI,UAAU,KAAA,GAAW,OAAO;EAChC,MAAM,QAAQ,UAAU,UAAU,MAAM,SAAS,QAAQ,cAAc;EACvE,IAAI;GACF,MAAM,EAAE,MAAM,QAAQ,kBAAkB,MAAM,IAC5C,OACA,OACA,QAAQ,iBACR,QAAQ,MACV;GACA,IAAI,eAAe,OAAO,IAAI,aAAa;GAC3C,OAAO,OAAO,UAAU,MAAM,SAAS,MAAM,MAAM;EACrD,SAAS,GAAG;GACV,UAAU,UAAU,CAAC;GACrB,OAAO;EACT;CACF,CAAC,EAAA,CACkB,QAAQ,MAAqB,MAAM,IAAI;CAC1D,OAAO;EACL;EACA,OAAO,OAAO,KAAK,IAAI,SAAS;EAChC,GAAI,OAAO,OAAO,EAAE,eAAe,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC;EACtE,OAAO;EACP,OAAO,QAAQ,IAAI;EACnB,GAAI,UAAU,KAAA,IAAY,EAAE,MAAM,IAAI,CAAC;CACzC;AACF;;AAGA,SAAgB,cAAc,GAAe,QAA+C;CAC1F,MAAM,OAAO,EAAE,SAAS;CACxB,IAAI,CAAC,MAAM,OAAO;CAClB,MAAM,eACJ,WAAW,SACV,EAAE,UAAU,YAAa,EAAE,UAAU,YAAY,OAAO,OAAO,SAAS;CAC3E,OAAO;EACL,SAAS,KAAK;EACd,KAAK,KAAK;EACV,KAAK,EAAE,SAAS,KAAK;EACrB,MAAM,QAAQ,MAAM,SAAS;EAC7B;EACA,SAAS,KAAK,SAAS;EACvB,SAAS,QAAQ,MAAM,KAAK,MAAM,EAAE,MAAM,KAAK,CAAC;EAChD,IAAI,GAAG,KAAK,IAAI,GAAG,EAAE,SAAS,KAAK;CACrC;AACF;AAEA,MAAM,aAAa,OAAO,YAAoB,QAC5C,KAAK,MACH,MAAM,SAAS,KAAK,YAAY,SAAS,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,YAAY,MAAM,CAC3F;;;;;AAqBF,SAAgB,eAAe,SAAgC;CAC7D,MAAM,OAAO,IAAI,IAAI,QAAQ,MAAM,KAAK,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;CAC5D,MAAM,wBAAQ,IAAI,IAA0B;CAC5C,MAAM,0BAAU,IAAI,IAAsC;CAC1D,MAAM,aAAa,IAAI,gBAAgB;CAEvC,MAAM,SAAS,OAAe;EAC5B,MAAM,IAAI,KAAK,IAAI,EAAE;EACrB,IAAI,CAAC,KAAK,QAAQ,IAAI,EAAE,GAAG;EAC3B,MAAM,WAAW,MAAM,IAAI,EAAE,KAAK,CAAC;EACnC,MAAM,WAAW,YAAY;GAK3B,MAAM,UAAS,MAJK,QAAQ,IAC1B,SAAS,IAAI,OAAO,MAAM,cAAc,GAAG,MAAM,WAAW,QAAQ,YAAY,EAAE,GAAG,CAAC,CAAC,CACzF,EAAA,CAGG,QAAQ,MAAwB,MAAM,IAAI,CAAC,CAC3C,MAAM,GAAG,OAAQ,EAAE,MAAM,OAAO,EAAE,MAAM,MAAM,KAAK,CAAE;GACxD,OAAO,QAAQ,IACb,EAAE,UAAU,IAAI,OAAO,MAAM;IAC3B,MAAM,SAAS,MAAM,eAAe;KAClC,UAAU,EAAE;KACZ,OAAO,EAAE;KACT,OAAO,QAAQ,QAAQ,SAAS,EAAE,MAAM,CAAC;KACzC,gBAAgB,QAAQ;KACxB,iBAAiB,QAAQ;KACzB,QAAQ,WAAW;IACrB,CAAC;IACD,QAAQ,WAAW,IAAI,MAAM;IAC7B,OAAO;GACT,CAAC,CACH;EACF,EAAA,CAAG,CAAC,CAAC,OAAO,UACV,EAAE,UAAU,KAAK,MAAM;GACrB,MAAM,SAAwB;IAC5B,UAAU,EAAE;IACZ,OAAO,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE;IACpC,OAAO,CAAC;IACR,OAAO,CAAC;IACR,OAAO,UAAU,KAAK;GACxB;GACA,QAAQ,WAAW,IAAI,MAAM;GAC7B,OAAO;EACT,CAAC,CACH;EACA,QAAQ,IAAI,IAAI,OAAO;CACzB;CAEA,OAAO;EACL,UAAU,QAA0B;GAClC,MAAM,IAAI,KAAK,IAAI,OAAO,EAAE;GAC5B,IAAI,CAAC,GAAG;GACR,MAAM,OAAO,MAAM,IAAI,OAAO,EAAE,KAAK,CAAC;GACtC,KAAK,KAAK,MAAM;GAChB,MAAM,IAAI,OAAO,IAAI,IAAI;GACzB,IAAI,KAAK,UAAU,EAAE,IAAI,KAAK,UAAU,MAAM,OAAO,EAAE;EACzD;;EAEA,SAAe;GACb,WAAW,MAAM;EACnB;EACA,MAAM,SAAgD;GACpD,KAAK,MAAM,MAAM,KAAK,KAAK,GAAG,IAAI,MAAM,IAAI,EAAE,GAAG,MAAM,EAAE;GACzD,MAAM,sBAAM,IAAI,IAA6B;GAC7C,KAAK,MAAM,CAAC,IAAI,YAAY,SAAS,IAAI,IAAI,IAAI,MAAM,OAAO;GAC9D,OAAO;EACT;CACF;AACF"}
@@ -9,9 +9,29 @@ const READ_DEFAULTS = {
9
9
  path: "stack.harnesses[].resolvedModels",
10
10
  empty: () => []
11
11
  },
12
+ {
13
+ path: "stack.harnesses[].effort",
14
+ empty: () => null
15
+ },
16
+ {
17
+ path: "stack.harnesses[].resolvedEffort",
18
+ empty: () => []
19
+ },
12
20
  {
13
21
  path: "evals[].todo",
14
22
  empty: () => false
23
+ },
24
+ {
25
+ path: "evals[].cells[].effort",
26
+ empty: () => null
27
+ },
28
+ {
29
+ path: "evals[].attempts[].effort",
30
+ empty: () => null
31
+ },
32
+ {
33
+ path: "evals[].attempts[].servedEffort",
34
+ empty: () => null
15
35
  }
16
36
  ],
17
37
  "transcript-line": [],
@@ -100,4 +120,4 @@ const readableCliInvocation = (entry) => fillDefaults("cli-invocation", entry);
100
120
  //#endregion
101
121
  export { readableCliInvocation as a, readableTranscriptLine as c, readableAnalysisNote as i, fillDefaults as n, readableDebugRequest as o, readableAnalysis as r, readableRecord as s, NewerSchemaError as t };
102
122
 
103
- //# sourceMappingURL=record-CbuQH4l1.js.map
123
+ //# sourceMappingURL=record-BRP9vZrj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-BRP9vZrj.js","names":[],"sources":["../src/view/record.ts"],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { h as writeRun, p as scratchDir, s as readRecord } from "./files-CMSUXAEg.js";
2
+ import { o as renderSummary } from "./summary-k3mhWWXv.js";
3
+ import { n as assembleRun } from "./assemble-BbFVjHeS.js";
4
+ import { join } from "node:path";
5
+ import { readdir, rm, stat } from "node:fs/promises";
6
+ //#region src/results.ts
7
+ const STALE_STAGING_MS = 864e5;
8
+ /** Where workers write raw per-eval records before the run is assembled. */
9
+ const stagingDir = (root, runId) => join(root, ".reeval", "staging", runId);
10
+ /** Removes staging left behind by runs that were killed before they could clean up. */
11
+ async function sweepStaging(root, keep) {
12
+ const dir = join(root, ".reeval", "staging");
13
+ const entries = await readdir(dir).catch(() => []);
14
+ for (const name of entries) {
15
+ if (name === keep) continue;
16
+ if (await stat(join(dir, name)).then((s) => Date.now() - s.mtimeMs, () => 0) > STALE_STAGING_MS) await rm(join(dir, name), {
17
+ recursive: true,
18
+ force: true
19
+ });
20
+ }
21
+ }
22
+ /** Assembles the run into `.reeval/runs/`, with every artifact and a summary.md. */
23
+ async function writeScratchRun(input, landed) {
24
+ const { record, artifacts } = await assembleRun(input);
25
+ artifacts.set("summary.md", Buffer.from(renderSummary(record)));
26
+ const scratch = scratchDir(input.ctx.config.root);
27
+ const existing = join(scratch, `${record.runId}.json`);
28
+ try {
29
+ const old = await readRecord(existing);
30
+ if (old.status === "interrupted" || old.status === "budget") {
31
+ await rm(existing, { force: true });
32
+ await rm(join(scratch, record.runId), {
33
+ recursive: true,
34
+ force: true
35
+ });
36
+ }
37
+ } catch {}
38
+ const written = await writeRun(scratch, record, artifacts);
39
+ landed?.();
40
+ await rm(input.ctx.stagingDir, {
41
+ recursive: true,
42
+ force: true
43
+ });
44
+ return {
45
+ ...written,
46
+ record
47
+ };
48
+ }
49
+ //#endregion
50
+ export { stagingDir, sweepStaging, writeScratchRun };
51
+
52
+ //# sourceMappingURL=results-BcSHWbgB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results-BcSHWbgB.js","names":[],"sources":["../src/results.ts"],"mappings":";;;;;;AAOA,MAAM,mBAAmB;;AAGzB,MAAa,cAAc,MAAc,UAAkB,KAAK,MAAM,WAAW,WAAW,KAAK;;AAGjG,eAAsB,aAAa,MAAc,MAA8B;CAC7E,MAAM,MAAM,KAAK,MAAM,WAAW,SAAS;CAC3C,MAAM,UAAU,MAAM,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;CACjD,KAAK,MAAM,QAAQ,SAAS;EAC1B,IAAI,SAAS,MAAM;EAKnB,IAAI,MAJc,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MACrC,MAAM,KAAK,IAAI,IAAI,EAAE,eAChB,CACR,IACU,kBAAkB,MAAM,GAAG,KAAK,KAAK,IAAI,GAAG;GAAE,WAAW;GAAM,OAAO;EAAK,CAAC;CACxF;AACF;;AAGA,eAAsB,gBACpB,OACA,QAC6C;CAC7C,MAAM,EAAE,QAAQ,cAAc,MAAM,YAAY,KAAK;CACrD,UAAU,IAAI,cAAc,OAAO,KAAK,cAAc,MAAM,CAAC,CAAC;CAC9D,MAAM,UAAU,WAAW,MAAM,IAAI,OAAO,IAAI;CAChD,MAAM,WAAW,KAAK,SAAS,GAAG,OAAO,MAAM,MAAM;CACrD,IAAI;EACF,MAAM,MAAM,MAAM,WAAW,QAAQ;EACrC,IAAI,IAAI,WAAW,iBAAiB,IAAI,WAAW,UAAU;GAC3D,MAAM,GAAG,UAAU,EAAE,OAAO,KAAK,CAAC;GAClC,MAAM,GAAG,KAAK,SAAS,OAAO,KAAK,GAAG;IAAE,WAAW;IAAM,OAAO;GAAK,CAAC;EACxE;CACF,QAAQ,CAAC;CACT,MAAM,UAAU,MAAM,SAAS,SAAS,QAAQ,SAAS;CACzD,SAAS;CACT,MAAM,GAAG,MAAM,IAAI,YAAY;EAAE,WAAW;EAAM,OAAO;CAAK,CAAC;CAC/D,OAAO;EAAE,GAAG;EAAS;CAAO;AAC9B"}