reeval 0.2.0 → 0.4.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 (224) hide show
  1. package/THIRD_PARTY_NOTICES.md +9 -9
  2. package/assets/package.json +1 -1
  3. package/assets/pnpm-lock.yaml +84 -33
  4. package/dist/agent-C9dLMCM7.js +334 -0
  5. package/dist/agent-C9dLMCM7.js.map +1 -0
  6. package/dist/{agent-D-6z0Z3F.js → agent-M70OWyfG.js} +5 -5
  7. package/dist/{agent-D-6z0Z3F.js.map → agent-M70OWyfG.js.map} +1 -1
  8. package/dist/analysis-CxSCt1YY.js.map +1 -1
  9. package/dist/{assemble-DtouO0iQ.js → assemble-BmVT26kf.js} +25 -17
  10. package/dist/assemble-BmVT26kf.js.map +1 -0
  11. package/dist/assemble-DZiN1p_E.js +2 -0
  12. package/dist/{attempt-BdRQ9jKX.js → attempt-CGPV3BZY.js} +2 -2
  13. package/dist/{attempt-BdRQ9jKX.js.map → attempt-CGPV3BZY.js.map} +1 -1
  14. package/dist/bridge/index.mjs +1620 -1793
  15. package/dist/bridge/package.json +2 -2
  16. package/dist/bridge/pnpm-lock.yaml +75 -75
  17. package/dist/bridge/pnpm-workspace.yaml +1 -1
  18. package/dist/{cli-CGuUdOPK.js → cli-BdxFLEIc.js} +166 -55
  19. package/dist/cli-BdxFLEIc.js.map +1 -0
  20. package/dist/{cli-spec-DKAu09Gi.js → cli-spec-DUeyuSIQ.js} +11 -4
  21. package/dist/cli-spec-DUeyuSIQ.js.map +1 -0
  22. package/dist/cli.js +2 -2
  23. package/dist/{command-CCuYRGsI.js → command-BtcBitmY.js} +12 -12
  24. package/dist/{command-CCuYRGsI.js.map → command-BtcBitmY.js.map} +1 -1
  25. package/dist/{command-BekzrvZI.js → command-ByqQ-v-j.js} +13 -13
  26. package/dist/{command-BekzrvZI.js.map → command-ByqQ-v-j.js.map} +1 -1
  27. package/dist/{command-CLKuXn6Z.js → command-CIsO5xdR.js} +11 -9
  28. package/dist/command-CIsO5xdR.js.map +1 -0
  29. package/dist/{command-CEm8PZ1N.js → command-CQiFfn-C.js} +169 -280
  30. package/dist/command-CQiFfn-C.js.map +1 -0
  31. package/dist/command-DllipyoK.js +2 -0
  32. package/dist/{commands-CF8mOfiu.js → commands-CPrrZ2mI.js} +29 -13
  33. package/dist/commands-CPrrZ2mI.js.map +1 -0
  34. package/dist/{commands-A4udfyKZ.js → commands-D3Dxgh60.js} +1 -1
  35. package/dist/{config-DqJvSqYo.js → config-B93Csktg.js} +43 -15
  36. package/dist/{config-DqJvSqYo.js.map → config-B93Csktg.js.map} +1 -1
  37. package/dist/db-DIE0bsNO.js +2 -0
  38. package/dist/{db-DxDzMhtB.js → db-SpvY8l1g.js} +4 -4
  39. package/dist/{db-DxDzMhtB.js.map → db-SpvY8l1g.js.map} +1 -1
  40. package/dist/{dist-BZXYHN2X.js → dist-C2k9IvL3.js} +107 -55
  41. package/dist/dist-C2k9IvL3.js.map +1 -0
  42. package/dist/{docker-Buu3a60z.js → docker-Bv1ZC6V7.js} +1 -1
  43. package/dist/{docker-DQDZWXF9.js → docker-C2YwD_dh.js} +3 -3
  44. package/dist/{docker-DQDZWXF9.js.map → docker-C2YwD_dh.js.map} +1 -1
  45. package/dist/{docker-w0CSdQq0.js → docker-uNaAGE2C.js} +5 -5
  46. package/dist/{docker-w0CSdQq0.js.map → docker-uNaAGE2C.js.map} +1 -1
  47. package/dist/{doctor-Bs1_pG9_.js → doctor-COH-levb.js} +88 -20
  48. package/dist/doctor-COH-levb.js.map +1 -0
  49. package/dist/{egress-QJMzVtbw.js → egress-C7Obb71D.js} +35 -19
  50. package/dist/egress-C7Obb71D.js.map +1 -0
  51. package/dist/{environment-9WHSWLxH.js → environment-lDFQY2BF.js} +116 -4
  52. package/dist/environment-lDFQY2BF.js.map +1 -0
  53. package/dist/{files-D2-qn_Dl.js → files-BO9P6msM.js} +114 -14
  54. package/dist/files-BO9P6msM.js.map +1 -0
  55. package/dist/files-BRWmQJ-9.js +2 -0
  56. package/dist/files-Bwr8UW4b.js +2 -0
  57. package/dist/{files-bF2fPuT9.js → files-CMoTBEul.js} +40 -7
  58. package/dist/files-CMoTBEul.js.map +1 -0
  59. package/dist/{git-D6hMeieS.js → git-LJp55bkf.js} +3 -3
  60. package/dist/{git-D6hMeieS.js.map → git-LJp55bkf.js.map} +1 -1
  61. package/dist/{harness-ls5aX1UO.js → harness-BbMShUC-.js} +4 -4
  62. package/dist/{harness-ls5aX1UO.js.map → harness-BbMShUC-.js.map} +1 -1
  63. package/dist/harness.d.ts +2 -2
  64. package/dist/harness.js +1 -1
  65. package/dist/{header-DzFDoMCI.js → header-sPQ9Lq2S.js} +2 -2
  66. package/dist/{header-DzFDoMCI.js.map → header-sPQ9Lq2S.js.map} +1 -1
  67. package/dist/{images-2m2U-UQc.js → images-Pph_XJ68.js} +6 -6
  68. package/dist/{images-2m2U-UQc.js.map → images-Pph_XJ68.js.map} +1 -1
  69. package/dist/index.d.ts +11 -4
  70. package/dist/index.js +173 -65
  71. package/dist/index.js.map +1 -1
  72. package/dist/{init-CH9UY7Bt.js → init-BcYpzHXs.js} +10 -10
  73. package/dist/{init-CH9UY7Bt.js.map → init-BcYpzHXs.js.map} +1 -1
  74. package/dist/init-YS5qBRwV.js +2 -0
  75. package/dist/{invocations-rXktgSAn.js → invocations-DHC946b-.js} +4 -4
  76. package/dist/{invocations-rXktgSAn.js.map → invocations-DHC946b-.js.map} +1 -1
  77. package/dist/{jiti-BOLXpKyG.js → jiti-DWsGEgxD.js} +4 -4
  78. package/dist/{jiti-BOLXpKyG.js.map → jiti-DWsGEgxD.js.map} +1 -1
  79. package/dist/{judge-D8Uf4dA9.js → judge-D6wqgTDp.js} +17 -4
  80. package/dist/judge-D6wqgTDp.js.map +1 -0
  81. package/dist/judge.d.ts +12 -8
  82. package/dist/judge.js +13 -5
  83. package/dist/judge.js.map +1 -1
  84. package/dist/{live-Bs3LReMV.js → live-DZkCtmNP.js} +2 -2
  85. package/dist/{live-Bs3LReMV.js.map → live-DZkCtmNP.js.map} +1 -1
  86. package/dist/{matchers-DyLvm7EG.js → matchers-DbFPZQgA.js} +9 -4
  87. package/dist/{matchers-DyLvm7EG.js.map → matchers-DbFPZQgA.js.map} +1 -1
  88. package/dist/model-CJ6USX6C.js +2 -0
  89. package/dist/model-CNoc8t2Y.js +2 -0
  90. package/dist/model-DUZtNaYR.js +228 -0
  91. package/dist/model-DUZtNaYR.js.map +1 -0
  92. package/dist/{model-CDL98xue.js → model-ORtLm2UB.js} +41 -3
  93. package/dist/{model-CDL98xue.js.map → model-ORtLm2UB.js.map} +1 -1
  94. package/dist/{model-BdO79gWz.js → model-f0wprGPm.js} +3 -3
  95. package/dist/{model-BdO79gWz.js.map → model-f0wprGPm.js.map} +1 -1
  96. package/dist/{node-kG64XxdE.js → node-OXPxBD2N.js} +3 -3
  97. package/dist/{node-kG64XxdE.js.map → node-OXPxBD2N.js.map} +1 -1
  98. package/dist/{opencode-providers-DZuD_oYt.js → opencode-providers-DJVocFOU.js} +31 -3
  99. package/dist/opencode-providers-DJVocFOU.js.map +1 -0
  100. package/dist/{options-k25fjaER.js → options-Ftb2gE01.js} +85 -26
  101. package/dist/options-Ftb2gE01.js.map +1 -0
  102. package/dist/patch-BxqggH-T.js +118 -0
  103. package/dist/patch-BxqggH-T.js.map +1 -0
  104. package/dist/{plan-gwk6dJ8c.js → plan-BkhLKrsN.js} +23 -6
  105. package/dist/plan-BkhLKrsN.js.map +1 -0
  106. package/dist/{preflight-B6hfAXhh.js → preflight-CuvY0o3B.js} +3 -3
  107. package/dist/{preflight-B6hfAXhh.js.map → preflight-CuvY0o3B.js.map} +1 -1
  108. package/dist/{preflight-D2Hce5Jp.js → preflight-D3cJETui.js} +1 -1
  109. package/dist/{prepare-NuWsT11j.js → prepare-BI9j2-H-.js} +5 -5
  110. package/dist/{prepare-NuWsT11j.js.map → prepare-BI9j2-H-.js.map} +1 -1
  111. package/dist/{prepare-C3fefNnV.js → prepare-CVuTk5F9.js} +2 -2
  112. package/dist/{provenance-Dfb8YY5Y.js → provenance-6n49wska.js} +22 -4
  113. package/dist/provenance-6n49wska.js.map +1 -0
  114. package/dist/{providers-Bfx5Mnk9.js → providers-BFapaM2D.js} +3 -3
  115. package/dist/{providers-Bfx5Mnk9.js.map → providers-BFapaM2D.js.map} +1 -1
  116. package/dist/{providers-BMIGzPPG.js → providers-Cay8pI0y.js} +1 -1
  117. package/dist/query-Br77sQYj.js +2 -0
  118. package/dist/{query-CFATHZmV.js → query-CnstTDt8.js} +2 -2
  119. package/dist/{query-CFATHZmV.js.map → query-CnstTDt8.js.map} +1 -1
  120. package/dist/questions-Cm321-Mo.js +325 -0
  121. package/dist/questions-Cm321-Mo.js.map +1 -0
  122. package/dist/{record-DQ8wzyco.js → record-CbuQH4l1.js} +7 -3
  123. package/dist/record-CbuQH4l1.js.map +1 -0
  124. package/dist/{redact-C4fL_bZP.js → redact-DJ9JCShu.js} +99 -28
  125. package/dist/redact-DJ9JCShu.js.map +1 -0
  126. package/dist/{results-BtvBJAp-.js → results-D9GgBYw5.js} +4 -4
  127. package/dist/{results-BtvBJAp-.js.map → results-D9GgBYw5.js.map} +1 -1
  128. package/dist/{root-CFDjpWuc.js → root-Zeokqt3-.js} +2 -2
  129. package/dist/{root-CFDjpWuc.js.map → root-Zeokqt3-.js.map} +1 -1
  130. package/dist/{sandbox-BJPWuQE9.js → sandbox-CO__l-i1.js} +3 -3
  131. package/dist/{sandbox-BJPWuQE9.js.map → sandbox-CO__l-i1.js.map} +1 -1
  132. package/dist/sandbox.d.ts +2 -2
  133. package/dist/sandbox.js +1 -1
  134. package/dist/server-D5Zq3I5N.js +2 -0
  135. package/dist/{server-5DWmKKfV.js → server-DsmIrBzi.js} +12 -10
  136. package/dist/{server-5DWmKKfV.js.map → server-DsmIrBzi.js.map} +1 -1
  137. package/dist/source-BgqURlel.js +2 -0
  138. package/dist/{source-Bsfa3LZH.js → source-DJ1c8jwe.js} +2 -2
  139. package/dist/{source-Bsfa3LZH.js.map → source-DJ1c8jwe.js.map} +1 -1
  140. package/dist/{src-DXx_29pq.js → src-B1OT_Zhf.js} +46 -46
  141. package/dist/{src-DXx_29pq.js.map → src-B1OT_Zhf.js.map} +1 -1
  142. package/dist/{src-BQyMiWri.js → src-BAiYD4eC.js} +48 -7
  143. package/dist/{src-BQyMiWri.js.map → src-BAiYD4eC.js.map} +1 -1
  144. package/dist/{src-N7E_mfcZ.js → src-BC5FFzE8.js} +1 -1
  145. package/dist/src-Bi2Y3EkE.js +3 -0
  146. package/dist/{src-D8KYzxBX.js → src-BmBFlEIe.js} +12 -7
  147. package/dist/{src-D8KYzxBX.js.map → src-BmBFlEIe.js.map} +1 -1
  148. package/dist/src-C8WNyopo.js +3 -0
  149. package/dist/src-CYz-TreZ.js +3 -0
  150. package/dist/src-C_91Ln3Z.js +4 -0
  151. package/dist/{src-Cmp-7YrD.js → src-DWk0e7ix.js} +5 -5
  152. package/dist/{src-Cmp-7YrD.js.map → src-DWk0e7ix.js.map} +1 -1
  153. package/dist/{src-AEwxd1UP.js → src-DfEAlC9s.js} +4 -4
  154. package/dist/{src-AEwxd1UP.js.map → src-DfEAlC9s.js.map} +1 -1
  155. package/dist/{src-DwwiVLqv.js → src-V-iU5X9S.js} +24 -21
  156. package/dist/{src-DwwiVLqv.js.map → src-V-iU5X9S.js.map} +1 -1
  157. package/dist/{src-C-LHyTSV.js → src-gPJFzHcK.js} +1 -1
  158. package/dist/src-gVzsO4_f.js +3 -0
  159. package/dist/{state-DZ7eqb1F.js → state-DFbJrVi3.js} +15 -15
  160. package/dist/{state-DZ7eqb1F.js.map → state-DFbJrVi3.js.map} +1 -1
  161. package/dist/state-Joc2b4qk.js +2 -0
  162. package/dist/studio-app/assets/index-B1Pf3LAT.css +2 -0
  163. package/dist/studio-app/assets/index-BhorHbrj.js +58 -0
  164. package/dist/studio-app/index.html +2 -2
  165. package/dist/{summary-D7Ttky0z.js → summary-CEMYhzXm.js} +33 -5
  166. package/dist/summary-CEMYhzXm.js.map +1 -0
  167. package/dist/summary-WR5qLj_z.js +192 -0
  168. package/dist/summary-WR5qLj_z.js.map +1 -0
  169. package/dist/tools-DN-cJcfi.js +249 -0
  170. package/dist/tools-DN-cJcfi.js.map +1 -0
  171. package/dist/{types-CYJldf5N.d.ts → types-B_CqVrOS.d.ts} +210 -30
  172. package/dist/view/index.d.ts +63 -1
  173. package/dist/view/index.js +5 -5
  174. package/dist/{views-BrHOv6wg.js → views-DNbUdW9d.js} +4 -4
  175. package/dist/{views-BrHOv6wg.js.map → views-DNbUdW9d.js.map} +1 -1
  176. package/dist/views-DnYbVkKg.js +3 -0
  177. package/dist/{worker-entry-DnYkANPG.js → worker-entry-CJmG4hhE.js} +3 -3
  178. package/dist/{worker-entry-DnYkANPG.js.map → worker-entry-CJmG4hhE.js.map} +1 -1
  179. package/dist/{workspace-BVgNhC9h.js → workspace-CmSp2MXO.js} +1 -1
  180. package/dist/{workspace-uPapQj16.js → workspace-QtlJtRut.js} +5 -5
  181. package/dist/{workspace-uPapQj16.js.map → workspace-QtlJtRut.js.map} +1 -1
  182. package/docker/Dockerfile +2 -0
  183. package/docker/reeval-path.sh +21 -0
  184. package/package.json +13 -12
  185. package/dist/assemble-Dm4gD1TU.js +0 -2
  186. package/dist/assemble-DtouO0iQ.js.map +0 -1
  187. package/dist/cli-CGuUdOPK.js.map +0 -1
  188. package/dist/cli-spec-DKAu09Gi.js.map +0 -1
  189. package/dist/command-CEm8PZ1N.js.map +0 -1
  190. package/dist/command-CLKuXn6Z.js.map +0 -1
  191. package/dist/commands-CF8mOfiu.js.map +0 -1
  192. package/dist/db-Cjj2ZsfQ.js +0 -2
  193. package/dist/dist-BZXYHN2X.js.map +0 -1
  194. package/dist/doctor-Bs1_pG9_.js.map +0 -1
  195. package/dist/egress-QJMzVtbw.js.map +0 -1
  196. package/dist/environment-9WHSWLxH.js.map +0 -1
  197. package/dist/files--6CEUXm7.js +0 -2
  198. package/dist/files-Bd25OAQH.js +0 -2
  199. package/dist/files-D2-qn_Dl.js.map +0 -1
  200. package/dist/files-bF2fPuT9.js.map +0 -1
  201. package/dist/init-DJuxvYCW.js +0 -2
  202. package/dist/judge-D8Uf4dA9.js.map +0 -1
  203. package/dist/model-v-0_Ik7S.js +0 -2
  204. package/dist/opencode-providers-DZuD_oYt.js.map +0 -1
  205. package/dist/options-k25fjaER.js.map +0 -1
  206. package/dist/patch-BkKje4cp.js +0 -69
  207. package/dist/patch-BkKje4cp.js.map +0 -1
  208. package/dist/plan-gwk6dJ8c.js.map +0 -1
  209. package/dist/provenance-Dfb8YY5Y.js.map +0 -1
  210. package/dist/query-DR4m6CXf.js +0 -2
  211. package/dist/record-DQ8wzyco.js.map +0 -1
  212. package/dist/redact-C4fL_bZP.js.map +0 -1
  213. package/dist/server-buV3adNS.js +0 -2
  214. package/dist/source-BXzrmof5.js +0 -2
  215. package/dist/src-55j1zNHH.js +0 -3
  216. package/dist/src-BDwSuyIo.js +0 -3
  217. package/dist/src-DEgff9Z7.js +0 -4
  218. package/dist/src-W9g-y5X5.js +0 -3
  219. package/dist/src-daS0wKH2.js +0 -3
  220. package/dist/state-Cyw3QTsN.js +0 -2
  221. package/dist/studio-app/assets/index-Da1XDzx8.js +0 -58
  222. package/dist/studio-app/assets/index-xwzWdcE_.css +0 -2
  223. package/dist/summary-D7Ttky0z.js.map +0 -1
  224. package/dist/views-CwCWLWqo.js +0 -3
@@ -91,7 +91,10 @@ type GitInfo = {
91
91
  diffHash: string | null;
92
92
  /** Those changes as `worktree.patch` in the artifact dir; apply on `sha` to reproduce. */
93
93
  worktreePatch: FileRef | null;
94
- /** Why a dirty run has no `worktree.patch`, e.g. too large or artifacts: 'none'. */
94
+ /**
95
+ * Why a dirty run has no `worktree.patch`: too large, artifacts: 'none', or it looked like it held
96
+ * a secret (then where, and which rule, never the value).
97
+ */
95
98
  worktreePatchNote: string | null;
96
99
  commitTime: string;
97
100
  shallow: boolean;
@@ -174,7 +177,7 @@ type AttemptRecord = {
174
177
  * The models the harness's own API calls were served by, as the egress gateway saw them: named
175
178
  * in the request (e.g. `gemini-3.8-flash` for the id `gemini-3.8-flash-low`, plus any the agent
176
179
  * uses on the side) or, for Codex, in the response, with its effort
177
- * (`gpt-5.4-mini-2026-03-17[effort=medium]`); null when neither names one (Cursor) or nothing
180
+ * (`gpt-5.6-luna[effort=medium]`); null when neither names one (Cursor) or nothing
178
181
  * recorded them.
179
182
  */
180
183
  servedModels: string[] | null;
@@ -255,6 +258,11 @@ type EvalEntry = {
255
258
  passRate: number | null;
256
259
  cells: CellRecord[];
257
260
  attempts: AttemptRecord[];
261
+ /**
262
+ * The compare's questions, answered after its attempts by pairwise votes, one per question;
263
+ * unset without any. They annotate: `outcome` and `passRate` never depend on them.
264
+ */
265
+ answers?: CompareAnswer[];
258
266
  };
259
267
  /** A variant cell's pass rate against the control's, on the same harness and sandbox. */
260
268
  type Lift = {
@@ -423,7 +431,24 @@ type RunRecord = {
423
431
  /** What ran and graded the agents: the machine, images, harnesses and judge. */
424
432
  type Stack = {
425
433
  es: string;
434
+ /** `process.versions.node`: under Bun or Deno, the Node version they're compatible with. */
426
435
  node: string;
436
+ /**
437
+ * The runtime reeval ran on, `node`, `bun`, `deno` or another, and its own version. Absent in
438
+ * runs recorded before it, which ran on Node.
439
+ */
440
+ runtime?: {
441
+ name: string;
442
+ version: string;
443
+ };
444
+ /**
445
+ * The language the evals are written in, `typescript` for `*.eval.ts`, and the version of its
446
+ * toolchain when the runner reports one. Absent in runs recorded before it.
447
+ */
448
+ language?: {
449
+ name: string;
450
+ version?: string;
451
+ };
427
452
  os: string;
428
453
  arch: string;
429
454
  /** Every image an attempt started from. `id` is content-addressed; `repoDigests` only exist once pushed. */
@@ -449,8 +474,12 @@ type Stack = {
449
474
  */
450
475
  resolvedModels: string[];
451
476
  }>;
477
+ /**
478
+ * The run's judge: the config's, with what the profile's `judge` and `defaults.judge` set over it.
479
+ * `config.judgeModel` and `config.threshold` name the same one.
480
+ */
452
481
  judge: {
453
- /** The config's default model; groups, evals and calls may use others (see each verdict). */
482
+ /** Its model; groups, evals and calls may use others (see each verdict). */
454
483
  model: string | null;
455
484
  /** Model ids the provider reported serving, across every judge call in the run. */
456
485
  resolvedModels: string[];
@@ -611,7 +640,7 @@ type TokenUsage = {
611
640
  cacheWrite: number;
612
641
  reasoning: number | null;
613
642
  };
614
- /** One agent turn. Immutable once `t.send()` resolves. */
643
+ /** One agent turn. Immutable once `c.send()` resolves. */
615
644
  /** A turn as data, as a record or another language's runner carries it: `Turn` without its methods. */
616
645
  type TurnData = {
617
646
  prompt: string;
@@ -639,17 +668,22 @@ type TurnData = {
639
668
  diff: Diff;
640
669
  };
641
670
  type Turn = TurnData & {
642
- /** Runs in the eval's sandbox. Same as `t.exec`. */
671
+ /** Runs in the eval's sandbox. Same as `c.exec`. */
643
672
  exec(command: string): Promise<ExecResult>;
644
673
  readFile(path: string): Promise<string | null>;
645
674
  };
646
675
  type JSONValue = null | boolean | number | string | JSONValue[] | {
647
676
  [key: string]: JSONValue;
648
677
  };
649
- /** A canned judge for tests and dry runs; see `fakeJudge()` in `reeval/judge`. */
678
+ /**
679
+ * A canned judge for tests and dry runs; see `fakeJudge()` in `reeval/judge`. `score` as a
680
+ * function of the state the judge would see works per group, eval or call, not in the config.
681
+ */
650
682
  type FakeJudgeModel = {
651
683
  kind: 'fake-judge';
652
- score: number;
684
+ score: number | ((state: {
685
+ [key: string]: JSONValue;
686
+ }) => number);
653
687
  };
654
688
  /**
655
689
  * `'provider/model'` (e.g. `'typesafe-ai/jev-1.13.0'`, `'google/gemini-3.8-flash'`), an AI SDK
@@ -666,6 +700,13 @@ type JudgeOptions = {
666
700
  providerOptions?: Record<string, Record<string, JSONValue>>;
667
701
  /** The most judge calls to this model's provider at once, across the run. */
668
702
  maxConcurrent?: number;
703
+ /**
704
+ * Which changed files the judge's diff shows: gitignore-style patterns over workspace paths,
705
+ * where the last matching pattern wins and a `!` pattern excludes. Default: every changed file.
706
+ */
707
+ include?: string[];
708
+ /** Workspace files the judge sees whole, as they are now, whether or not the agent changed them. */
709
+ files?: string[];
669
710
  };
670
711
  type JudgeCallOptions = JudgeOptions & {
671
712
  /** What to grade instead of the latest turn: another turn, or a value used as the output. */
@@ -681,19 +722,28 @@ type Verdict = {
681
722
  /** The model id the provider says served the call, when it reports one. */
682
723
  resolvedModel?: string;
683
724
  };
684
- type EvalContext = {
725
+ /**
726
+ * What `c.judge()` returns when the call failed (the provider's error, after any retries): the attempt fails as a judge error once the eval's body has finished,
727
+ * so the judges and checks after it still run.
728
+ */
729
+ type JudgeFailure = Omit<Verdict, 'verdict' | 'score' | 'resolvedModel'> & {
730
+ verdict: 'error';
731
+ score: null;
732
+ error: string;
733
+ };
734
+ type AttemptContext = {
685
735
  /** Sends the next turn of this eval's agent session, starting the sandbox on first use. */
686
736
  send(prompt: string): Promise<Turn>;
687
737
  /** Asks the judge a yes/no question about the latest turn (or `options.on`). */
688
- judge(question: string, options?: JudgeCallOptions): Promise<Verdict>;
738
+ judge(question: string, options?: JudgeCallOptions): Promise<Verdict | JudgeFailure>;
689
739
  exec(command: string): Promise<ExecResult>;
690
740
  /** Workspace-relative, or `~/` for the home directory; `null` when there's no such file. */
691
741
  readFile(path: string): Promise<string | null>;
692
742
  /**
693
743
  * Starts the sandbox and the agent session without a turn, for checks on what the environment
694
- * set up. `t.send()` starts them too; calling both starts them once.
744
+ * set up. `c.send()` starts them too; calling both starts them once.
695
745
  */
696
- sandbox(): Promise<Pick<EvalContext, 'exec' | 'readFile'>>;
746
+ sandbox(): Promise<Pick<AttemptContext, 'exec' | 'readFile'>>;
697
747
  /** Every turn so far, oldest first. */
698
748
  readonly turns: readonly Turn[];
699
749
  /** Aborted on timeout or Ctrl-C. */
@@ -705,7 +755,7 @@ type EvalContext = {
705
755
  n: number;
706
756
  };
707
757
  };
708
- type EvalFn = (t: EvalContext) => Promise<void>;
758
+ type EvalFn = (c: AttemptContext) => Promise<void>;
709
759
  type FakeHarnessDescriptor = {
710
760
  kind: 'fake';
711
761
  /** Cell id; defaults to `fake`. */
@@ -743,7 +793,7 @@ type FakeHarnessDescriptor = {
743
793
  /** Chance (0–1) that an attempt writes no files and says so, for flaky pass rates. */
744
794
  flakeRate?: number;
745
795
  /**
746
- * Real sandbox actions, one list per `t.send` (the last list repeats), run in order before
796
+ * Real sandbox actions, one list per `c.send` (the last list repeats), run in order before
747
797
  * `files`. `exec` runs as the agent: with the sandbox's own variables, none of the checks'.
748
798
  */
749
799
  script?: FakeScriptStep[][];
@@ -876,7 +926,8 @@ type GooseHarnessDescriptor = {
876
926
  };
877
927
  /**
878
928
  * pi through `@reeval/harness-pi` (`pi --mode json` in the sandbox), made by `pi()`. It runs
879
- * Google models on a Gemini API key and reports each model call's tokens. It has no MCP client.
929
+ * Google models on a Gemini API key and reports each model call's tokens. It takes stdio and
930
+ * HTTP MCP servers, not SSE ones.
880
931
  */
881
932
  type PiHarnessDescriptor = {
882
933
  kind: 'pi';
@@ -898,7 +949,7 @@ type PiHarnessDescriptor = {
898
949
  */
899
950
  type CodexHarnessDescriptor = {
900
951
  kind: 'codex';
901
- /** An OpenAI model id Codex runs on the Responses API, e.g. `gpt-5.4-mini`. */
952
+ /** An OpenAI model id Codex runs on the Responses API, e.g. `gpt-5.6-luna`. */
902
953
  model: string;
903
954
  /** Cell id; defaults to `codex:<model>`. */
904
955
  id?: string;
@@ -940,7 +991,7 @@ type DockerSandboxDescriptor = {
940
991
  maxConcurrent?: number;
941
992
  /**
942
993
  * Run the agent, setup steps and checks as root, with the capabilities `apt-get` needs, instead
943
- * of the unprivileged `es` user. For evals that install system packages at run time.
994
+ * of the unprivileged `reeval` user. For evals that install system packages at run time.
944
995
  */
945
996
  root?: boolean;
946
997
  /** Linux capabilities to add back, e.g. `['NET_RAW']`; every other one is dropped. */
@@ -963,7 +1014,7 @@ type Secret = {
963
1014
  from?: string;
964
1015
  /** When the host variable is unset, skip it (the record says so) instead of failing. */
965
1016
  optional?: boolean;
966
- /** `agent` (default): the container's environment. `checks`: only `t.exec` and `setup` steps. */
1017
+ /** `agent` (default): the container's environment. `checks`: only `c.exec` and `setup` steps. */
967
1018
  to?: 'agent' | 'checks';
968
1019
  /**
969
1020
  * Brokers the secret: the sandbox gets a per-attempt placeholder, and the Docker egress gateway
@@ -993,6 +1044,21 @@ type HostFile = {
993
1044
  kind: 'file';
994
1045
  path: string;
995
1046
  };
1047
+ /** Options for the `directory` helper. */
1048
+ type DirectoryOptions = {
1049
+ /** A workspace-relative directory (or `~/…`) to place the files under, e.g. `'app'`. */
1050
+ into?: string;
1051
+ /**
1052
+ * Ordered gitignore-style patterns over paths relative to the directory. A plain pattern
1053
+ * includes and a `!pattern` excludes; the last one that matches a file decides. With no plain
1054
+ * pattern, every file starts included. Matched with picomatch (`*`, `?`, `**`, `[…]`, `{a,b}`):
1055
+ * a pattern with a `/` in it (other than at the end) is anchored to the directory, one without
1056
+ * matches a name at any depth, and a trailing `/` matches a directory and everything in it.
1057
+ */
1058
+ glob?: string[];
1059
+ /** `false` walks into `DEFAULT_DIRECTORY_IGNORES` too. `.git` is always skipped. */
1060
+ defaultIgnores?: boolean;
1061
+ };
996
1062
  type McpServer = {
997
1063
  kind: 'mcp';
998
1064
  transport: 'stdio';
@@ -1125,6 +1191,11 @@ type EnvironmentHelpers = {
1125
1191
  mcp: McpHelper;
1126
1192
  /** A host file, relative to the file that calls it (or an absolute path or `URL`). */
1127
1193
  file: (path: string | URL) => HostFile;
1194
+ /**
1195
+ * Every file in a host directory, as `files` entries: workspace-relative paths mapped to the
1196
+ * same sources `file()` returns, so spreading and overriding work. Walked when it's called.
1197
+ */
1198
+ directory: (path: string | URL, options?: DirectoryOptions) => Record<string, HostFile>;
1128
1199
  /** A git repository for `workspace`: a URL, `github:owner/repo`, or a local path. */
1129
1200
  git: GitHelper;
1130
1201
  };
@@ -1210,8 +1281,11 @@ type CompareGate = 'variants' | 'all' | 'none';
1210
1281
  * `false` is not a value here: a profile turns compare off with `limit.compare`.
1211
1282
  */
1212
1283
  type CompareOptions<E = Environment> = {
1213
- /** The control. Not layered under the variants, and not the eval's `environment`. */
1214
- baseline: E;
1284
+ /**
1285
+ * The control. Not layered under the variants. Without it, the control is the environment the
1286
+ * eval would otherwise run in (the cascaded `environment`), else an empty one named `baseline`.
1287
+ */
1288
+ baseline?: E;
1215
1289
  /** Other environments, each planned and run as itself. */
1216
1290
  variants: E[];
1217
1291
  /** Which cells decide pass/fail: `variants` (default), `all`, or `none` (report only). */
@@ -1220,6 +1294,57 @@ type CompareOptions<E = Environment> = {
1220
1294
  minLift?: number;
1221
1295
  /** Harnesses (ids or descriptors) to compare on; the others run the control only. */
1222
1296
  harness?: Array<string | HarnessDescriptor>;
1297
+ /**
1298
+ * Asked of pairs of attempts after the run, always a list. They annotate the compare with
1299
+ * win rates and never change pass, fail or the exit code.
1300
+ */
1301
+ questions?: CompareQuestion[];
1302
+ };
1303
+ /**
1304
+ * A question for pairwise judgement: its text, or the text and the `'provider/model'` that
1305
+ * answers it. Without a model, `analysis.model` answers, else the judge's when it's a language model.
1306
+ */
1307
+ type CompareQuestion = string | {
1308
+ question: string;
1309
+ model?: string;
1310
+ };
1311
+ /** Which pairs a vote is over: two arms on one harness, or two harnesses on one arm. */
1312
+ type CompareCut = 'within' | 'across';
1313
+ /** One judgement of one pair of attempts, in one order. */
1314
+ type PairVote = {
1315
+ question: string;
1316
+ cut: CompareCut;
1317
+ /** Set on a within-harness pair: the harness both arms ran on. */
1318
+ harness?: string;
1319
+ /** Set on a cross-harness pair: the arm (environment) both harnesses ran. */
1320
+ arm?: string;
1321
+ /** The run number both attempts share, from 1. */
1322
+ run: number;
1323
+ /** The two sides by name: arms within a harness, harness ids across. */
1324
+ a: string;
1325
+ b: string;
1326
+ /** `a`, `b` or `'tie'`, mapped back from the blinded labels. */
1327
+ winner: string | 'tie';
1328
+ /** True for the repeat that showed `b` first. */
1329
+ swapped: boolean;
1330
+ };
1331
+ /** A compare question's answer: every vote, and each side's wins over decided votes per cut. */
1332
+ type CompareAnswer = {
1333
+ question: string;
1334
+ /** `'provider/model'`, or `fake` for `fakeAnalysis()`. */
1335
+ model: string;
1336
+ /** The model id the provider says served the calls, when it reports one. */
1337
+ resolvedModel?: string;
1338
+ votes: PairVote[];
1339
+ /** Wins over decided pairs, per named side, per cut. */
1340
+ rates: Array<{
1341
+ cut: CompareCut;
1342
+ name: string;
1343
+ wins: number;
1344
+ n: number;
1345
+ }>;
1346
+ /** Why some or all of its votes are missing: the model call failed. Outcomes never change. */
1347
+ error?: string;
1223
1348
  };
1224
1349
  type PinnableKey = 'harness' | 'runs' | 'compare';
1225
1350
  /**
@@ -1257,18 +1382,27 @@ type EvalOptionFields = {
1257
1382
  pin?: PinnableKey[];
1258
1383
  };
1259
1384
  /**
1260
- * One or the other. `compare: false` is not an option here: a profile's `limit.compare: false`
1261
- * strips variants. A parent `environment` and a child that only sets `compare` are two objects,
1262
- * so that cascade is allowed; the inherited environment is not applied.
1385
+ * `compare: false` is not an option here: a profile's `limit.compare: false` strips variants.
1386
+ * A compare with a `baseline` names every arm, so the cascaded `environment` is not applied, and
1387
+ * the same object can't set both. Without a `baseline`, the cascaded `environment` (this object's
1388
+ * own, or an inherited one) is the control.
1263
1389
  */
1264
1390
  type EnvironmentOrCompare<E> = {
1265
- /** What this group or eval runs in. Not together with `compare`. */
1391
+ /** What this group or eval runs in, and the control of a compare without a `baseline`. */
1266
1392
  environment?: E;
1267
1393
  compare?: never;
1268
1394
  } | {
1269
- /** Forbidden beside `compare`. The compare object names every arm. */
1395
+ /** Forbidden beside `compare.baseline`, which names the control. */
1270
1396
  environment?: never;
1271
- compare: CompareSpec<E>;
1397
+ compare: CompareSpec<E> & {
1398
+ baseline: E;
1399
+ };
1400
+ } | {
1401
+ /** The control: the compare has no `baseline`. */
1402
+ environment?: E;
1403
+ compare: CompareSpec<E> & {
1404
+ baseline?: undefined;
1405
+ };
1272
1406
  };
1273
1407
  type EvalOptions = EvalOptionFields & EnvironmentOrCompare<Environment>;
1274
1408
  type GroupOptions = EvalOptions;
@@ -1320,16 +1454,56 @@ type Profile = {
1320
1454
  /** Tag filters for this profile, like `--tag` (`'!slow'` excludes). */
1321
1455
  tags?: string[];
1322
1456
  };
1457
+ /** What a fake note is written from: the eval, the harness, and what its tools returned. */
1458
+ type FakeNoteInput = {
1459
+ eval: string;
1460
+ harness: string;
1461
+ attempts: Array<{
1462
+ id: string;
1463
+ outcome: string;
1464
+ }>;
1465
+ /** Each failed attempt the fake opened beside a passing one, and the step where they diverged. */
1466
+ compared: Array<{
1467
+ failed: string;
1468
+ passed: string;
1469
+ divergedAt: number | null;
1470
+ }>;
1471
+ };
1323
1472
  /** A canned analysis for tests; see `fakeAnalysis()` in `reeval/judge`. */
1324
1473
  type FakeAnalysisModel = {
1325
1474
  kind: 'fake-analysis';
1326
1475
  /** The model's structured answer, or a function of the digest it was given. */
1327
- output: unknown | ((digest: unknown) => unknown);
1476
+ output?: unknown | ((digest: unknown) => unknown);
1477
+ /** `analysis.agent`'s note on each eval and harness: text, a function of its tools' results, or an error to throw. */
1478
+ note?: string | ((input: FakeNoteInput) => string) | {
1479
+ error: string;
1480
+ };
1481
+ /**
1482
+ * How it answers compare questions: a fixed pick, a function of the blinded pair, or
1483
+ * `{ error }` to fail every call. Default `'tie'`.
1484
+ */
1485
+ vote?: FakeVote | ((pair: BlindPair) => FakeVote) | {
1486
+ error: string;
1487
+ };
1488
+ };
1489
+ /** A blinded label's pick: the attempt shown first (`A`), second (`B`), or neither. */
1490
+ type FakeVote = 'A' | 'B' | 'tie';
1491
+ /** What a compare question's model is shown: the prompt, and the two diffs in slot order. */
1492
+ type BlindPair = {
1493
+ question: string;
1494
+ prompt: string;
1495
+ a: string;
1496
+ b: string;
1328
1497
  };
1329
1498
  /** `reeval analyze`: a language model (not an evaluation model) and what matters in this project. */
1330
1499
  type AnalysisConfig = {
1331
1500
  /** `'provider/model'`, e.g. `'google/gemini-3.8-flash'`; default: the judge's, if it's one. */
1332
1501
  model?: string | FakeAnalysisModel;
1502
+ /**
1503
+ * `reeval run` writes a note on each eval and harness once its attempts finish, with the analysis
1504
+ * model (default false: one call per eval and harness, every run).
1505
+ */
1506
+ agent?: boolean;
1333
1507
  /** Added to the prompt, e.g. "Fewer tool calls count as a win. The skill under test is reeval-good." */
1334
1508
  instructions?: string;
1335
1509
  /** The digest's cap; evidence is dropped, lowest priority first, to fit (default 20000). */
@@ -1420,7 +1594,8 @@ type PhaseTimings = {
1420
1594
  type CellRole = 'control' | 'variant';
1421
1595
  /**
1422
1596
  * One cell of an eval: a harness and an environment (`-` for none) on the eval's sandbox. With
1423
- * `compare`, the control is `baseline` and each variant is that environment on its own.
1597
+ * `compare`, the control is `baseline` (or the cascaded environment, or an empty `baseline`) and
1598
+ * each variant is that environment on its own.
1424
1599
  */
1425
1600
  type Cell = {
1426
1601
  key: string;
@@ -1543,9 +1718,14 @@ type StartRetry = {
1543
1718
  /** Which environment ran as the control, so the studio can show it. */
1544
1719
  type EvalCompareMeta = {
1545
1720
  baseline: string;
1721
+ /**
1722
+ * Set when `compare.baseline` was omitted: the control is the eval's cascaded `environment`, or
1723
+ * an empty environment named `baseline` when there was none.
1724
+ */
1725
+ from?: 'environment' | 'empty';
1546
1726
  };
1547
1727
  /**
1548
- * A sandbox with more privilege than the default `es` user: `docker({ root: true })`, or
1728
+ * A sandbox with more privilege than the default `reeval` user: `docker({ root: true })`, or
1549
1729
  * `docker({ capabilities })`. One per level that set such a sandbox, however many evals inherit it.
1550
1730
  */
1551
1731
  type SandboxWarning = {
@@ -1562,5 +1742,5 @@ type SandboxWarning = {
1562
1742
  message: string;
1563
1743
  };
1564
1744
  //#endregion
1565
- export { SandboxWarning as $, FakeJudgeModel as A, contrastEffort as At, HostFile as B, EsConfig as C, EffortSample as Ct, ExecResult as D, cellContrast as Dt, EvalOptions as E, VERDICT_TEXT as Et, HarnessData as F, effortSummary as Ft, OpenCodeHarnessDescriptor as G, JudgeModel as H, HarnessDescriptor as I, effortVerdict as It, PinnableKey as J, Outcome as K, HarnessEdit as L, formatCount as Lt, FakeScriptStep as M, effortLabel as Mt, GooseHarnessDescriptor as N, effortOf as Nt, FakeAnalysisModel as O, cellEffort as Ot, GroupOptions as P, effortSample as Pt, SandboxDescriptor as Q, HarnessOption as R, formatRatio as Rt, EnvironmentSpec as S, EffortContrast as St, EvalFn as T, Spread as Tt, JudgeOptions as U, JudgeCallOptions as V, McpServer as W, ProfileDefaults as X, Profile as Y, ProfileLimit as Z, EgressRecord as _, JudgementRecord as _t, Cell as a, TranscriptEvent as at, EnvironmentHelpers as b, CellEffort as bt, CodexHarnessDescriptor as c, TurnStatus as ct, ConfigJudgeOptions as d, AttemptRecord as dt, Secret as et, CursorHarnessDescriptor as f, CellRecord as ft, EgressPolicy as g, HistoryEntry as gt, Duration as h, HistoryCell as ht, Budget as i, TokenUsage as it, FakeSandboxDescriptor as j, effortChangeLabel as jt, FakeHarnessDescriptor as k, cellSamples as kt, CompareOptions as l, Verdict as lt, DockerSandboxDescriptor as m, FileRef as mt, AnalysisConfig as n, SetupStep as nt, CellRole as o, Turn as ot, Diff as p, EvalEntry as pt, PiHarnessDescriptor as q, AntigravityHarnessDescriptor as r, SkillSource as rt, ClaudeCodeHarnessDescriptor as s, TurnData as st, AgentHarnessDescriptor as t, SecretTemplate as tt, ConfigHelpers as u, WebEventType as ut, EnvVars as v, RunRecord as vt, EvalContext as w, EffortVerdict as wt, EnvironmentInput as x, EFFORT_ALPHA as xt, Environment as y, StackSummary as yt, HistoryConfig as z, formatSeconds as zt };
1566
- //# sourceMappingURL=types-CYJldf5N.d.ts.map
1745
+ export { OpenCodeHarnessDescriptor as $, EvalFn as A, EFFORT_ALPHA as At, GooseHarnessDescriptor as B, effortChangeLabel as Bt, EgressRecord as C, FileRef as Ct, EnvironmentInput as D, RunRecord as Dt, EnvironmentHelpers as E, JudgementRecord as Et, FakeJudgeModel as F, VERDICT_TEXT as Ft, HarnessOption as G, effortVerdict as Gt, HarnessData as H, effortOf as Ht, FakeNoteInput as I, cellContrast as It, JudgeCallOptions as J, formatSeconds as Jt, HistoryConfig as K, formatCount as Kt, FakeSandboxDescriptor as L, cellEffort as Lt, ExecResult as M, EffortSample as Mt, FakeAnalysisModel as N, EffortVerdict as Nt, EnvironmentSpec as O, StackSummary as Ot, FakeHarnessDescriptor as P, Spread as Pt, McpServer as Q, FakeScriptStep as R, cellSamples as Rt, EgressPolicy as S, EvalEntry as St, Environment as T, HistoryEntry as Tt, HarnessDescriptor as U, effortSample as Ut, GroupOptions as V, effortLabel as Vt, HarnessEdit as W, effortSummary as Wt, JudgeModel as X, JudgeFailure as Y, JudgeOptions as Z, CursorHarnessDescriptor as _, TurnStatus as _t, BlindPair as a, ProfileDefaults as at, DockerSandboxDescriptor as b, AttemptRecord as bt, CellRole as c, SandboxWarning as ct, CompareAnswer as d, SetupStep as dt, Outcome as et, CompareCut as f, SkillSource as ft, ConfigJudgeOptions as g, TurnData as gt, ConfigHelpers as h, Turn as ht, AttemptContext as i, Profile as it, EvalOptions as j, EffortContrast as jt, EsConfig as k, CellEffort as kt, ClaudeCodeHarnessDescriptor as l, Secret as lt, CompareQuestion as m, TranscriptEvent as mt, AnalysisConfig as n, PiHarnessDescriptor as nt, Budget as o, ProfileLimit as ot, CompareOptions as p, TokenUsage as pt, HostFile as q, formatRatio as qt, AntigravityHarnessDescriptor as r, PinnableKey as rt, Cell as s, SandboxDescriptor as st, AgentHarnessDescriptor as t, PairVote as tt, CodexHarnessDescriptor as u, SecretTemplate as ut, Diff as v, Verdict as vt, EnvVars as w, HistoryCell as wt, Duration as x, CellRecord as xt, DirectoryOptions as y, WebEventType as yt, FakeVote as z, contrastEffort as zt };
1746
+ //# sourceMappingURL=types-B_CqVrOS.d.ts.map
@@ -1,4 +1,4 @@
1
- import { $ as SandboxWarning, At as contrastEffort, Ct as EffortSample, Dt as cellContrast, Et as VERDICT_TEXT, Ft as effortSummary, It as effortVerdict, K as Outcome, Lt as formatCount, Mt as effortLabel, Nt as effortOf, Ot as cellEffort, Pt as effortSample, Rt as formatRatio, St as EffortContrast, Tt as Spread, _t as JudgementRecord, at as TranscriptEvent, bt as CellEffort, ct as TurnStatus, dt as AttemptRecord, ft as CellRecord, gt as HistoryEntry, ht as HistoryCell, it as TokenUsage, jt as effortChangeLabel, kt as cellSamples, mt as FileRef, pt as EvalEntry, vt as RunRecord, wt as EffortVerdict, xt as EFFORT_ALPHA, yt as StackSummary, zt as formatSeconds } from "../types-CYJldf5N.js";
1
+ import { At as EFFORT_ALPHA, Bt as effortChangeLabel, Ct as FileRef, Dt as RunRecord, Et as JudgementRecord, Ft as VERDICT_TEXT, Gt as effortVerdict, Ht as effortOf, It as cellContrast, Jt as formatSeconds, Kt as formatCount, Lt as cellEffort, Mt as EffortSample, Nt as EffortVerdict, Ot as StackSummary, Pt as Spread, Rt as cellSamples, St as EvalEntry, Tt as HistoryEntry, Ut as effortSample, Vt as effortLabel, Wt as effortSummary, _t as TurnStatus, bt as AttemptRecord, ct as SandboxWarning, et as Outcome, jt as EffortContrast, kt as CellEffort, mt as TranscriptEvent, pt as TokenUsage, qt as formatRatio, wt as HistoryCell, xt as CellRecord, zt as contrastEffort } from "../types-B_CqVrOS.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
4
  export declare const ANALYSIS_PROMPT_VERSION = "analysis-v2";
@@ -102,6 +102,36 @@ export type AnalysisDoc = {
102
102
  }>;
103
103
  /** Each cited fact or evidence id, summarised in one line. */
104
104
  cited: Record<string, string>;
105
+ /**
106
+ * Why `analysis.agent`'s run summary failed; its `analysis` is then empty. `reeval analyze` treats
107
+ * a cached one as a miss and calls the model again.
108
+ */
109
+ error?: string;
110
+ };
111
+ /**
112
+ * `analysis.agent`'s note on one eval and harness of a run, written once that harness's attempts
113
+ * finish: `.reeval/analysis/<runId>/notes/<eval slug>__<harness slug>.json`.
114
+ */
115
+ export type AnalysisNote = {
116
+ kind: 'reeval-analysis-note';
117
+ schemaVersion: 1;
118
+ runId: string;
119
+ evalId: string;
120
+ /** The harness id, as in the cell key. */
121
+ harness: string;
122
+ model: string;
123
+ resolvedModel: string | null;
124
+ createdAt: string;
125
+ /** The attempt ids (`<cell key>#<n>`) the note covers. */
126
+ attempts: string[];
127
+ /** Empty when the call failed. */
128
+ text: string;
129
+ /** Why the call failed; the run's outcomes don't change. */
130
+ error?: string;
131
+ usage: {
132
+ inputTokens: number | null;
133
+ outputTokens: number | null;
134
+ };
105
135
  };
106
136
  /** One analysis file the studio can show: saved in the run's folder, or in the local cache. */
107
137
  export type AnalysisEntry = {
@@ -112,6 +142,8 @@ export type AnalysisEntry = {
112
142
  export type AnalysisIndex = {
113
143
  runId: string;
114
144
  entries: AnalysisEntry[];
145
+ /** `analysis.agent`'s notes on the run, by eval and harness; absent when there are none. */
146
+ notes?: AnalysisNote[];
115
147
  };
116
148
  export declare const analysisDataPath: (runId: string) => string;
117
149
  /** Newest first, saved before cached at the same time. */
@@ -383,6 +415,13 @@ export declare const formatPercent: (rate: number | null) => string;
383
415
  * the configured model, then the variant the harness says it resolved.
384
416
  */
385
417
  export declare function harnessLabel(h: RunRecord['stack']['harnesses'][number]): string;
418
+ /**
419
+ * The runtime reeval ran on, as `node 22.14.0`, or `bun 1.4.2 (node 26.3.0)` with the Node version
420
+ * it's compatible with. A run recorded before `stack.runtime` ran on Node.
421
+ */
422
+ export declare function runtimeLabel(stack: Pick<RunRecord['stack'], 'node' | 'runtime'>): string;
423
+ /** The evals' language as `typescript evals` or `dart 3.13.5 evals`; null when not recorded. */
424
+ export declare function languageLabel(stack: Pick<RunRecord['stack'], 'language'>): string | null;
386
425
  /** Harness-reported tokens as `127k in (98k cached) · 776 out`; null when none were reported. */
387
426
  export declare function formatUsage(usage: TokenUsage | null | undefined): string | null;
388
427
  export declare const shortSha: (sha: string | null | undefined) => string;
@@ -475,6 +514,29 @@ export type CellRow = {
475
514
  };
476
515
  /** One row per cell: controls and variants, with each variant's recorded lift. */
477
516
  export declare function cellRows(e: EvalEntry): CellRow[];
517
+ /** One side's wins over the decided votes it was in; `rate` is null when none decided. */
518
+ export type AnswerRate = {
519
+ name: string;
520
+ wins: number;
521
+ n: number;
522
+ rate: number | null;
523
+ };
524
+ export type AnswerRow = {
525
+ question: string;
526
+ /** The model that answered: as served, when the provider said, else as configured. */
527
+ model: string;
528
+ votes: number;
529
+ ties: number;
530
+ /** Arms against each other on one harness, then harnesses against each other on one arm. */
531
+ within: AnswerRate[];
532
+ across: AnswerRate[];
533
+ /** Why some or all of its votes are missing: the model call failed. */
534
+ error: string | null;
535
+ /** No votes and no error: no pair had both sides pass their checks. */
536
+ noPairs: boolean;
537
+ };
538
+ /** One row per compare question, with each cut's win rates in the record's order. */
539
+ export declare function answerRows(e: Pick<EvalEntry, 'answers'>): AnswerRow[];
478
540
  /** Whether an eval needs the cells table: several cells, or several runs of one. */
479
541
  export declare const isMatrix: (e: Pick<EvalEntry, 'cells'>) => boolean;
480
542
  export type EvalHistoryPoint = {
@@ -1,8 +1,8 @@
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-CBvm6pap.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
3
  import { a as sortAnalyses, i as isSuperseded, n as DIGEST_VERSION, r as analysisDataPath, t as ANALYSIS_PROMPT_VERSION } from "../analysis-CxSCt1YY.js";
4
- import { A as cellSamples, B as formatSeconds, C as splitEvalId, D as VERDICT_TEXT, E as EFFORT_ALPHA, F as effortSample, G as whyChanged, H as compare, I as effortSummary, L as effortVerdict, M as effortChangeLabel, N as effortLabel, O as cellContrast, P as effortOf, R as formatCount, S as shortSha, T as transcriptItems, U as sourceChanges, V as cellsChanged, W as stackChanges, _ as isMatrix, a as compareView, b as runOutcome, c as evalTree, d as formatDuration, f as formatPercent, g as indexFiles, h as hasUngatedCells, i as cellRows, j as contrastEffort, k as cellEffort, l as findAttempt, m as harnessLabel, n as activityLabel, o as defaultAttempt, p as formatUsage, r as buildIndex, s as evalHistory, t as COMPARE_ORDER, u as findEval, v as isUngatedMiss, w as splitPatch, x as runRows, y as parseTranscript, z as formatRatio } from "../model-CDL98xue.js";
5
- import { t as runHeader } from "../header-DzFDoMCI.js";
6
- import { o as readableRecord, r as readableAnalysis, s as readableTranscriptLine, t as NewerSchemaError } from "../record-DQ8wzyco.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-Bs3LReMV.js";
8
- export { ANALYSIS_PROMPT_VERSION, COMPARE_ORDER, DEBUG_LOG, DEBUG_PHASES, DIGEST_VERSION, EFFORT_ALPHA, FINISHED, LIVE_FILE, LIVE_SCHEMA_VERSION, NewerSchemaError, REQUESTS_FILE, RUN_ID, TRACE_FILE, VERDICT_TEXT, activityLabel, analysisDataPath, artifactPath, artifactType, buildIndex, cellContrast, cellEffort, cellRows, cellSamples, cellsChanged, compare, compareView, contrastEffort, debugApiPath, debugLogLine, debugTime, defaultAttempt, effortChangeLabel, effortLabel, effortOf, effortSample, effortSummary, effortVerdict, evalHistory, evalTree, findAttempt, findEval, formatBytes, formatCount, formatDuration, formatPercent, formatRatio, formatSeconds, formatUsage, harnessLabel, hasUngatedCells, indexFiles, isFinished, isMatrix, isSuperseded, isUngatedMiss, liveApiPath, liveCounts, liveTranscriptPath, manifestPath, parseDataPath, parseDebugLog, parseNdjson, parseTranscript, readableAnalysis, readableLiveProgress, readableRecord, readableTranscriptLine, recordPath, requestLine, runHeader, runOutcome, runRows, shardOf, shardPath, shortSha, sortAnalyses, sourceChanges, splitEvalId, splitPatch, stackChanges, studioPath, traceApiPath, transcriptItems, whyChanged };
4
+ import { A as VERDICT_TEXT, B as effortVerdict, C as runRows, D as splitPatch, E as splitEvalId, F as effortChangeLabel, G as compare, H as formatRatio, I as effortLabel, J as whyChanged, K as sourceChanges, L as effortOf, M as cellEffort, N as cellSamples, O as transcriptItems, P as contrastEffort, R as effortSample, S as runOutcome, T as shortSha, U as formatSeconds, V as formatCount, W as cellsChanged, _ as indexFiles, a as cellRows, b as languageLabel, c as evalHistory, d as findEval, f as formatDuration, g as hasUngatedCells, h as harnessLabel, i as buildIndex, j as cellContrast, k as EFFORT_ALPHA, l as evalTree, m as formatUsage, n as activityLabel, o as compareView, p as formatPercent, q as stackChanges, r as answerRows, s as defaultAttempt, t as COMPARE_ORDER, u as findAttempt, v as isMatrix, w as runtimeLabel, x as parseTranscript, y as isUngatedMiss, z as effortSummary } from "../model-ORtLm2UB.js";
5
+ import { t as runHeader } from "../header-sPQ9Lq2S.js";
6
+ import { c as readableTranscriptLine, r as readableAnalysis, s as readableRecord, t as NewerSchemaError } from "../record-CbuQH4l1.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-DZkCtmNP.js";
8
+ export { ANALYSIS_PROMPT_VERSION, COMPARE_ORDER, DEBUG_LOG, DEBUG_PHASES, DIGEST_VERSION, EFFORT_ALPHA, FINISHED, LIVE_FILE, LIVE_SCHEMA_VERSION, NewerSchemaError, REQUESTS_FILE, RUN_ID, TRACE_FILE, VERDICT_TEXT, activityLabel, analysisDataPath, answerRows, artifactPath, artifactType, buildIndex, cellContrast, cellEffort, cellRows, cellSamples, cellsChanged, compare, compareView, contrastEffort, debugApiPath, debugLogLine, debugTime, defaultAttempt, effortChangeLabel, effortLabel, effortOf, effortSample, effortSummary, effortVerdict, evalHistory, evalTree, findAttempt, findEval, formatBytes, formatCount, formatDuration, formatPercent, formatRatio, formatSeconds, formatUsage, harnessLabel, hasUngatedCells, indexFiles, isFinished, isMatrix, isSuperseded, isUngatedMiss, languageLabel, liveApiPath, liveCounts, liveTranscriptPath, manifestPath, parseDataPath, parseDebugLog, parseNdjson, parseTranscript, readableAnalysis, readableLiveProgress, readableRecord, readableTranscriptLine, recordPath, requestLine, runHeader, runOutcome, runRows, runtimeLabel, shardOf, shardPath, shortSha, sortAnalyses, sourceChanges, splitEvalId, splitPatch, stackChanges, studioPath, traceApiPath, transcriptItems, whyChanged };
@@ -1,7 +1,7 @@
1
1
  import { r as formatDuration } from "./text-gEcKjAyp.js";
2
- import { M as effortChangeLabel, V as cellsChanged, W as stackChanges } from "./model-CDL98xue.js";
3
- import { o as warnings } from "./state-DZ7eqb1F.js";
4
- import { c as summaryCounts, n as cellCounts, o as repeatsVerdict, s as stateRows, t as OUTCOME_MARK } from "./summary-D7Ttky0z.js";
2
+ import { F as effortChangeLabel, W as cellsChanged, q as stackChanges } from "./model-ORtLm2UB.js";
3
+ import { o as warnings } from "./state-DFbJrVi3.js";
4
+ import { c as stateRows, l as summaryCounts, r as cellCounts, s as repeatsVerdict, t as OUTCOME_MARK } from "./summary-CEMYhzXm.js";
5
5
  //#region src/history/views.ts
6
6
  var RefError = class extends Error {
7
7
  name = "RefError";
@@ -217,4 +217,4 @@ function formatShow(run) {
217
217
  //#endregion
218
218
  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
219
 
220
- //# sourceMappingURL=views-BrHOv6wg.js.map
220
+ //# sourceMappingURL=views-DNbUdW9d.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"views-BrHOv6wg.js","names":[],"sources":["../src/history/views.ts"],"mappings":"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"}
1
+ {"version":3,"file":"views-DNbUdW9d.js","names":[],"sources":["../src/history/views.ts"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import "./model-ORtLm2UB.js";
2
+ import { c as resolveRun } from "./views-DNbUdW9d.js";
3
+ export { resolveRun };
@@ -1,7 +1,7 @@
1
1
  import { t as UsageError } from "./errors-CSxfJ4qu.js";
2
2
  import { c as relativeFile } from "./ids-Bp6ut7ZD.js";
3
- import { t as esJiti } from "./jiti-BOLXpKyG.js";
4
- import { d as attemptExpectError, f as createExpect, g as withAttemptExpect, h as unawaitedError, i as useSchedulerChannel, m as extendExpect, n as matchers, r as acquire, u as useEngine } from "./matchers-DyLvm7EG.js";
3
+ import { t as esJiti } from "./jiti-DWsGEgxD.js";
4
+ import { d as attemptExpectError, f as createExpect, g as withAttemptExpect, h as unawaitedError, i as useSchedulerChannel, m as extendExpect, n as matchers, r as acquire, u as useEngine } from "./matchers-DbFPZQgA.js";
5
5
  import { t as budgetMarker } from "./budget-DBUrH4jX.js";
6
6
  import { t as codeFrame } from "./errors-C9w_ud7g.js";
7
7
  import { existsSync, readFileSync } from "node:fs";
@@ -503,4 +503,4 @@ process.on("uncaughtException", (error) => worker.unhandled(error));
503
503
  //#endregion
504
504
  export {};
505
505
 
506
- //# sourceMappingURL=worker-entry-DnYkANPG.js.map
506
+ //# sourceMappingURL=worker-entry-CJmG4hhE.js.map