reeval 0.11.0 → 0.13.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 (312) hide show
  1. package/README.md +115 -257
  2. package/assets/package.json +1 -1
  3. package/assets/pnpm-lock.yaml +41 -30
  4. package/bin/mcp-timer.cjs +224 -0
  5. package/dist/{adapter-Bwy3QxAK.js → adapter-IKKo4sZj.js} +4 -4
  6. package/dist/{adapter-Bwy3QxAK.js.map → adapter-IKKo4sZj.js.map} +1 -1
  7. package/dist/{agent-DpE80WPz.js → agent-ClE-g9VL.js} +22 -7
  8. package/dist/{agent-DpE80WPz.js.map → agent-ClE-g9VL.js.map} +1 -1
  9. package/dist/{analysis-Bxub9LMT.js → analysis-B0nOfAzA.js} +3 -3
  10. package/dist/{analysis-Bxub9LMT.js.map → analysis-B0nOfAzA.js.map} +1 -1
  11. package/dist/{assemble-D9GWr-HS.js → assemble-BO93VAk1.js} +22 -20
  12. package/dist/assemble-BO93VAk1.js.map +1 -0
  13. package/dist/assemble-VQxyoDxK.js +1 -0
  14. package/dist/{attempt-CGPV3BZY.js → attempt-jI0OWxlz.js} +2 -2
  15. package/dist/{attempt-CGPV3BZY.js.map → attempt-jI0OWxlz.js.map} +1 -1
  16. package/dist/bridge/index.mjs +2 -1
  17. package/dist/{capture-BQlGHiMC.js → capture-dn2hjSLj.js} +29 -21
  18. package/dist/{capture-BQlGHiMC.js.map → capture-dn2hjSLj.js.map} +1 -1
  19. package/dist/capture-nIJ-7kUE.js +1 -0
  20. package/dist/{cli-ClpPT8kn.js → cli-BCE1xlm4.js} +176 -120
  21. package/dist/cli-BCE1xlm4.js.map +1 -0
  22. package/dist/{cli-spec-qmEnQ25_.js → cli-spec-BXIBUlaK.js} +34 -15
  23. package/dist/cli-spec-BXIBUlaK.js.map +1 -0
  24. package/dist/cli.js +2 -2
  25. package/dist/{command-BlM0y8jN.js → command-Bh3yhN_b.js} +8 -8
  26. package/dist/{command-BlM0y8jN.js.map → command-Bh3yhN_b.js.map} +1 -1
  27. package/dist/command-C6vwmjS7.js +91 -0
  28. package/dist/command-C6vwmjS7.js.map +1 -0
  29. package/dist/{command-DbAe1Rzb.js → command-CANun0m0.js} +16 -19
  30. package/dist/command-CANun0m0.js.map +1 -0
  31. package/dist/command-CBaHukyl.js +335 -0
  32. package/dist/command-CBaHukyl.js.map +1 -0
  33. package/dist/{command-TgbzPizb.js → command-D_kEnYcX.js} +17 -16
  34. package/dist/command-D_kEnYcX.js.map +1 -0
  35. package/dist/commands-7tH3EsVu.js +666 -0
  36. package/dist/commands-7tH3EsVu.js.map +1 -0
  37. package/dist/{commands-CthqwkAn.js → commands-BKGzBMgb.js} +1 -1
  38. package/dist/{config-DrVSEVN0.js → config-D7TFvUpL.js} +40 -55
  39. package/dist/config-D7TFvUpL.js.map +1 -0
  40. package/dist/{context-C1mxXh80.js → context-Dgn48BqT.js} +13 -2
  41. package/dist/context-Dgn48BqT.js.map +1 -0
  42. package/dist/{contrasts-5zsj32gk.js → contrasts-B4nOhn0Z.js} +3 -3
  43. package/dist/{contrasts-5zsj32gk.js.map → contrasts-B4nOhn0Z.js.map} +1 -1
  44. package/dist/db-DJUuFoWQ.js +602 -0
  45. package/dist/db-DJUuFoWQ.js.map +1 -0
  46. package/dist/db-W9EFlXnn.js +2 -0
  47. package/dist/{dist-CuY4ehEk.js → dist-Dp_AJgYN.js} +3 -3
  48. package/dist/{dist-CuY4ehEk.js.map → dist-Dp_AJgYN.js.map} +1 -1
  49. package/dist/{docker-D1HZDS6q.js → docker-CQxucRPe.js} +16 -15
  50. package/dist/docker-CQxucRPe.js.map +1 -0
  51. package/dist/{docker-DNmMPOBb.js → docker-Dac6Zalz.js} +1 -1
  52. package/dist/{docker-DOvjji9I.js → docker-DuHcQidD.js} +3 -3
  53. package/dist/{docker-DOvjji9I.js.map → docker-DuHcQidD.js.map} +1 -1
  54. package/dist/{doctor-D2MbNO8L.js → doctor-De_QlOTM.js} +72 -38
  55. package/dist/doctor-De_QlOTM.js.map +1 -0
  56. package/dist/{egress-2-qzPvGi.js → egress-DEAvq8Fl.js} +453 -31
  57. package/dist/egress-DEAvq8Fl.js.map +1 -0
  58. package/dist/env-BQqj93gu.js +21 -0
  59. package/dist/env-BQqj93gu.js.map +1 -0
  60. package/dist/{environment-Cca6a4wB.js → environment-B4IuURK1.js} +247 -14
  61. package/dist/environment-B4IuURK1.js.map +1 -0
  62. package/dist/{evaluate-DMyaGQEj.d.ts → evaluate-C9-ritA5.d.ts} +2 -2
  63. package/dist/{evaluate-DKIl54Hb.js → evaluate-Djk1YPFL.js} +540 -560
  64. package/dist/evaluate-Djk1YPFL.js.map +1 -0
  65. package/dist/facts-Cfx1H70y.js +898 -0
  66. package/dist/facts-Cfx1H70y.js.map +1 -0
  67. package/dist/files-Bs6H3HiG.js +65 -0
  68. package/dist/files-Bs6H3HiG.js.map +1 -0
  69. package/dist/{files-BpUYBwGu.js → files-CN1QfenC.js} +31 -8
  70. package/dist/files-CN1QfenC.js.map +1 -0
  71. package/dist/files-CtjEXWXm.js +1 -0
  72. package/dist/{files-BXHZFWmx.js → files-D27nUk0K.js} +6 -17
  73. package/dist/files-D27nUk0K.js.map +1 -0
  74. package/dist/files-D3gJa91B.js +1 -0
  75. package/dist/generate-BnrvBAzF.js +1646 -0
  76. package/dist/generate-BnrvBAzF.js.map +1 -0
  77. package/dist/{git-Crl3b87o.js → git-rPfl7AD1.js} +3 -3
  78. package/dist/{git-Crl3b87o.js.map → git-rPfl7AD1.js.map} +1 -1
  79. package/dist/{harness-CEuntrla.js → harness-1OkumOAm.js} +3 -3
  80. package/dist/{harness-CEuntrla.js.map → harness-1OkumOAm.js.map} +1 -1
  81. package/dist/harness.d.ts +1 -1
  82. package/dist/harness.js +1 -1
  83. package/dist/{header-DHQv_ZrF.js → header-BVzbRnNv.js} +10 -3
  84. package/dist/{header-DHQv_ZrF.js.map → header-BVzbRnNv.js.map} +1 -1
  85. package/dist/{images-Bi3aGxb9.js → images-m784ueGK.js} +61 -13
  86. package/dist/images-m784ueGK.js.map +1 -0
  87. package/dist/index.d.ts +3 -3
  88. package/dist/index.js +4 -4
  89. package/dist/init-hiTkiM4L.js +543 -0
  90. package/dist/init-hiTkiM4L.js.map +1 -0
  91. package/dist/init-kMkTgTZc.js +1 -0
  92. package/dist/insights-B2Xmhz9o.js +64 -0
  93. package/dist/insights-B2Xmhz9o.js.map +1 -0
  94. package/dist/{invocations-BYDPe3fV.js → invocations-D_ePcwyL.js} +4 -4
  95. package/dist/{invocations-BYDPe3fV.js.map → invocations-D_ePcwyL.js.map} +1 -1
  96. package/dist/{judge-DW_GDOmB.js → judge-CEDIfRiU.js} +50 -15
  97. package/dist/judge-CEDIfRiU.js.map +1 -0
  98. package/dist/judge.d.ts +7 -6
  99. package/dist/judge.js +8 -7
  100. package/dist/judge.js.map +1 -1
  101. package/dist/{live-jlfszAbb.js → live-DYd2QEyR.js} +2 -2
  102. package/dist/{live-jlfszAbb.js.map → live-DYd2QEyR.js.map} +1 -1
  103. package/dist/model-B8H3gL69.js +1 -0
  104. package/dist/{model-DaVCY3rb.js → model-CTiuzkWw.js} +9 -7
  105. package/dist/model-CTiuzkWw.js.map +1 -0
  106. package/dist/model-DcIbmggK.js +1 -0
  107. package/dist/{model-D0IcOQao.js → model-DpkclE4r.js} +60 -25
  108. package/dist/model-DpkclE4r.js.map +1 -0
  109. package/dist/{model-DaX4bNLZ.js → model-UgHDMhI1.js} +144 -46
  110. package/dist/model-UgHDMhI1.js.map +1 -0
  111. package/dist/{node-B3ydHo6t.js → node-CGZYh4Fj.js} +4 -4
  112. package/dist/{node-B3ydHo6t.js.map → node-CGZYh4Fj.js.map} +1 -1
  113. package/dist/{opencode-providers-J9colP0-.js → opencode-providers-snfeWd6Z.js} +86 -47
  114. package/dist/opencode-providers-snfeWd6Z.js.map +1 -0
  115. package/dist/{options-C0d0AzeR.js → options-CyAyLjgJ.js} +22 -11
  116. package/dist/options-CyAyLjgJ.js.map +1 -0
  117. package/dist/{pairs-CnInRu-G.js → pairs-DP6XOJby.js} +2 -2
  118. package/dist/{pairs-CnInRu-G.js.map → pairs-DP6XOJby.js.map} +1 -1
  119. package/dist/{patch-B1bnfhN-.js → patch-uMq9rCl_.js} +2 -2
  120. package/dist/{patch-B1bnfhN-.js.map → patch-uMq9rCl_.js.map} +1 -1
  121. package/dist/{plan-DgQxp9yy.js → plan-CZYgXnZh.js} +21 -8
  122. package/dist/plan-CZYgXnZh.js.map +1 -0
  123. package/dist/plugins-P-uh54VF.js +654 -0
  124. package/dist/plugins-P-uh54VF.js.map +1 -0
  125. package/dist/{preflight-DlQvbySb.js → preflight-BQlPTHVu.js} +1 -1
  126. package/dist/{preflight-BRzD30L5.js → preflight-D3HvKeAx.js} +14 -10
  127. package/dist/preflight-D3HvKeAx.js.map +1 -0
  128. package/dist/prepare-DCwM2KKD.js +2 -0
  129. package/dist/{prepare-B_y-AFMv.js → prepare-Dx7dOnJB.js} +70 -23
  130. package/dist/prepare-Dx7dOnJB.js.map +1 -0
  131. package/dist/{provenance-DQ0AXn6c.js → provenance-C_-8y-x3.js} +4 -4
  132. package/dist/{provenance-DQ0AXn6c.js.map → provenance-C_-8y-x3.js.map} +1 -1
  133. package/dist/{providers-DoTq1jHW.js → providers-CF5UEaP8.js} +24 -10
  134. package/dist/providers-CF5UEaP8.js.map +1 -0
  135. package/dist/providers-CTBYvMxu.js +1 -0
  136. package/dist/{query-BO-ux7RB.js → query-DXthKmq0.js} +3 -3
  137. package/dist/{query-BO-ux7RB.js.map → query-DXthKmq0.js.map} +1 -1
  138. package/dist/query-D_1ARx5q.js +1 -0
  139. package/dist/{questions-C2dym2ce.js → questions-KENpWnfV.js} +8 -9
  140. package/dist/questions-KENpWnfV.js.map +1 -0
  141. package/dist/{record-BKmMvZ6O.js → record-kk9M1hj-.js} +8 -4
  142. package/dist/record-kk9M1hj-.js.map +1 -0
  143. package/dist/{redact-DJ9JCShu.js → redact-CRGdfV2s.js} +4 -2
  144. package/dist/redact-CRGdfV2s.js.map +1 -0
  145. package/dist/remarks-1521zwfW.js +38 -0
  146. package/dist/remarks-1521zwfW.js.map +1 -0
  147. package/dist/remarks-BhAV1H4V.js +1 -0
  148. package/dist/remarks-Ml6bcSdV.js +278 -0
  149. package/dist/remarks-Ml6bcSdV.js.map +1 -0
  150. package/dist/{remote-CPPW86Q9.js → remote-Dkeghk8k.js} +3 -3
  151. package/dist/{remote-CPPW86Q9.js.map → remote-Dkeghk8k.js.map} +1 -1
  152. package/dist/resolve-CMmhACr6.js +1 -0
  153. package/dist/resolve-DzdWcIL6.js +724 -0
  154. package/dist/resolve-DzdWcIL6.js.map +1 -0
  155. package/dist/{results-BE2f-1XS.js → results-D-naai_Q.js} +33 -8
  156. package/dist/results-D-naai_Q.js.map +1 -0
  157. package/dist/{resume-Ca1c8vix.js → resume-8-nnW8iO.js} +4 -4
  158. package/dist/{resume-Ca1c8vix.js.map → resume-8-nnW8iO.js.map} +1 -1
  159. package/dist/{root-DICDHCtp.js → root-DNuLhaA5.js} +2 -2
  160. package/dist/root-DNuLhaA5.js.map +1 -0
  161. package/dist/rules-CcV3zLDR.js +318 -0
  162. package/dist/rules-CcV3zLDR.js.map +1 -0
  163. package/dist/run-Bel7Vde4.js +88 -0
  164. package/dist/run-Bel7Vde4.js.map +1 -0
  165. package/dist/{sandbox-DLrsvu7U.js → sandbox-YLbk9mO7.js} +2 -2
  166. package/dist/{sandbox-DLrsvu7U.js.map → sandbox-YLbk9mO7.js.map} +1 -1
  167. package/dist/sandbox.d.ts +1 -1
  168. package/dist/sandbox.js +1 -1
  169. package/dist/server-C-ysqkLv.js +1 -0
  170. package/dist/{server-TUY5xA_A.js → server-De8oH3bt.js} +10 -10
  171. package/dist/{server-TUY5xA_A.js.map → server-De8oH3bt.js.map} +1 -1
  172. package/dist/{source-DJGS0a0u.js → source-C686eZpY.js} +2 -2
  173. package/dist/{source-DJGS0a0u.js.map → source-C686eZpY.js.map} +1 -1
  174. package/dist/source-DjgypUHW.js +1 -0
  175. package/dist/src-3mP821Pt.js +2 -0
  176. package/dist/src-B3KCLZVk.js +3 -0
  177. package/dist/src-BAyg6CtQ.js +2 -0
  178. package/dist/{src-CF17Ug08.js → src-BYLM3hEz.js} +22 -6
  179. package/dist/src-BYLM3hEz.js.map +1 -0
  180. package/dist/src-BezgGX4X.js +2 -0
  181. package/dist/{src-DvCg0NBs.js → src-C7W6kg81.js} +40 -10
  182. package/dist/{src-DvCg0NBs.js.map → src-C7W6kg81.js.map} +1 -1
  183. package/dist/{src-ftu5wPSt.js → src-CIpKL45U.js} +782 -169
  184. package/dist/src-CIpKL45U.js.map +1 -0
  185. package/dist/src-ChBhk06Q.js +2 -0
  186. package/dist/{src-BxfCKA3_.js → src-CoqZYspK.js} +1 -1
  187. package/dist/{src-CFp86GtV.js → src-CzQrAcF8.js} +49 -49
  188. package/dist/src-CzQrAcF8.js.map +1 -0
  189. package/dist/src-D9fSTxlc.js +1 -0
  190. package/dist/{src-FGXhkEkH.js → src-DeY52Gyf.js} +182 -23
  191. package/dist/src-DeY52Gyf.js.map +1 -0
  192. package/dist/src-DrJSnoMR.js +2 -0
  193. package/dist/{src-DvK0EIZx.js → src-Xj_BZKbq.js} +112 -13
  194. package/dist/src-Xj_BZKbq.js.map +1 -0
  195. package/dist/{src-u8_ixn_F.js → src-cbCb-MPy.js} +20 -4
  196. package/dist/src-cbCb-MPy.js.map +1 -0
  197. package/dist/src-dhSTRN50.js +2 -0
  198. package/dist/{src-C7_1SqDP.js → src-djNNYIdP.js} +2 -2
  199. package/dist/{src-C7_1SqDP.js.map → src-djNNYIdP.js.map} +1 -1
  200. package/dist/state-BGWGAwdo.js +1 -0
  201. package/dist/{state-DfpHox6b.js → state-C0i_ujQZ.js} +19 -17
  202. package/dist/{state-DfpHox6b.js.map → state-C0i_ujQZ.js.map} +1 -1
  203. package/dist/studio-app/assets/{index-CBkhNAv8.js → index-Bb_cid9k.js} +9 -9
  204. package/dist/studio-app/index.html +1 -1
  205. package/dist/{suite-Cw_7G2RM.js → suite-DmuF_ApO.js} +80 -30
  206. package/dist/suite-DmuF_ApO.js.map +1 -0
  207. package/dist/suite-mn9g4veR.js +2 -0
  208. package/dist/{summary-BUKfU-9l.js → summary-BFMHMTz2.js} +273 -47
  209. package/dist/summary-BFMHMTz2.js.map +1 -0
  210. package/dist/testing.d.ts +2 -2
  211. package/dist/testing.js +2 -2
  212. package/dist/{text-gEcKjAyp.js → text-CrVy5ioL.js} +18 -2
  213. package/dist/text-CrVy5ioL.js.map +1 -0
  214. package/dist/{transcript-BNNANU8A.js → transcript-BTxJpW4R.js} +2 -2
  215. package/dist/{transcript-BNNANU8A.js.map → transcript-BTxJpW4R.js.map} +1 -1
  216. package/dist/{types-BYdlwMwo.d.ts → types-B-9b1MDV.d.ts} +850 -34
  217. package/dist/types-C5vI3g1C.js.map +1 -1
  218. package/dist/usage-BDo2q_yu.js +1 -0
  219. package/dist/{command-Bj39y-Wm.js → validate-DWjkshl1.js} +20 -377
  220. package/dist/validate-DWjkshl1.js.map +1 -0
  221. package/dist/view/index.d.ts +31 -263
  222. package/dist/view/index.js +8 -7
  223. package/dist/views-DE2A1jEX.js +2 -0
  224. package/dist/{views-B8w2J-gD.js → views-Dk8MCQKr.js} +8 -98
  225. package/dist/views-Dk8MCQKr.js.map +1 -0
  226. package/dist/{worker-entry-DNnveLqx.js → worker-entry-CqrzGPF4.js} +2 -2
  227. package/dist/{worker-entry-DNnveLqx.js.map → worker-entry-CqrzGPF4.js.map} +1 -1
  228. package/dist/workspace-B1eGO46M.js +1 -0
  229. package/dist/{workspace-C4RA3srV.js → workspace-CLeOybkr.js} +45 -11
  230. package/dist/workspace-CLeOybkr.js.map +1 -0
  231. package/package.json +5 -1
  232. package/skills/eval-rubric/SKILL.md +130 -0
  233. package/dist/agent-D483ru7D.js +0 -334
  234. package/dist/agent-D483ru7D.js.map +0 -1
  235. package/dist/assemble-D5KGrwnJ.js +0 -1
  236. package/dist/assemble-D9GWr-HS.js.map +0 -1
  237. package/dist/capture-CYGLpWxR.js +0 -1
  238. package/dist/cli-ClpPT8kn.js.map +0 -1
  239. package/dist/cli-spec-qmEnQ25_.js.map +0 -1
  240. package/dist/command-Bj39y-Wm.js.map +0 -1
  241. package/dist/command-C-cVjlny.js +0 -1
  242. package/dist/command-DbAe1Rzb.js.map +0 -1
  243. package/dist/command-TgbzPizb.js.map +0 -1
  244. package/dist/commands-YUwlyTbr.js +0 -228
  245. package/dist/commands-YUwlyTbr.js.map +0 -1
  246. package/dist/config-DrVSEVN0.js.map +0 -1
  247. package/dist/context-C1mxXh80.js.map +0 -1
  248. package/dist/db-CKg5NtiW.js +0 -2
  249. package/dist/db-DfhipHEF.js +0 -1416
  250. package/dist/db-DfhipHEF.js.map +0 -1
  251. package/dist/docker-D1HZDS6q.js.map +0 -1
  252. package/dist/doctor-D2MbNO8L.js.map +0 -1
  253. package/dist/egress-2-qzPvGi.js.map +0 -1
  254. package/dist/environment-Cca6a4wB.js.map +0 -1
  255. package/dist/evaluate-DKIl54Hb.js.map +0 -1
  256. package/dist/files-BXHZFWmx.js.map +0 -1
  257. package/dist/files-BpUYBwGu.js.map +0 -1
  258. package/dist/files-Bw8lWEjg.js +0 -1
  259. package/dist/files-D6J0iSdx.js +0 -1
  260. package/dist/images-Bi3aGxb9.js.map +0 -1
  261. package/dist/init-Cl3f3NBT.js +0 -360
  262. package/dist/init-Cl3f3NBT.js.map +0 -1
  263. package/dist/init-fhOXED8F.js +0 -1
  264. package/dist/judge-DW_GDOmB.js.map +0 -1
  265. package/dist/model-CXhrziBe.js +0 -1
  266. package/dist/model-D0IcOQao.js.map +0 -1
  267. package/dist/model-DaVCY3rb.js.map +0 -1
  268. package/dist/model-DaX4bNLZ.js.map +0 -1
  269. package/dist/model-_bxNrk2h.js +0 -1
  270. package/dist/opencode-providers-J9colP0-.js.map +0 -1
  271. package/dist/options-C0d0AzeR.js.map +0 -1
  272. package/dist/plan-DgQxp9yy.js.map +0 -1
  273. package/dist/preflight-BRzD30L5.js.map +0 -1
  274. package/dist/prepare-B_y-AFMv.js.map +0 -1
  275. package/dist/prepare-DCKTLHN3.js +0 -2
  276. package/dist/providers-B9yTdIqF.js +0 -1
  277. package/dist/providers-DoTq1jHW.js.map +0 -1
  278. package/dist/query-CRQfsw0e.js +0 -1
  279. package/dist/questions-C2dym2ce.js.map +0 -1
  280. package/dist/record-BKmMvZ6O.js.map +0 -1
  281. package/dist/redact-DJ9JCShu.js.map +0 -1
  282. package/dist/results-BE2f-1XS.js.map +0 -1
  283. package/dist/root-DICDHCtp.js.map +0 -1
  284. package/dist/server-Dp8eOeK5.js +0 -1
  285. package/dist/source-DdbLGR1M.js +0 -1
  286. package/dist/src-CF17Ug08.js.map +0 -1
  287. package/dist/src-CFp86GtV.js.map +0 -1
  288. package/dist/src-CLoOMVWI.js +0 -3
  289. package/dist/src-CcrQbpG8.js +0 -2
  290. package/dist/src-DCFtJRp0.js +0 -2
  291. package/dist/src-DSYYPEOj.js +0 -2
  292. package/dist/src-DYO3DdnQ.js +0 -1
  293. package/dist/src-DvK0EIZx.js.map +0 -1
  294. package/dist/src-FGXhkEkH.js.map +0 -1
  295. package/dist/src-WD-zgQYZ.js +0 -2
  296. package/dist/src-_oI9AePb.js +0 -2
  297. package/dist/src-ftu5wPSt.js.map +0 -1
  298. package/dist/src-qsKCqv7a.js +0 -2
  299. package/dist/src-u8_ixn_F.js.map +0 -1
  300. package/dist/state-DpAxYyED.js +0 -1
  301. package/dist/suite-Cw_7G2RM.js.map +0 -1
  302. package/dist/suite-DamAEnNF.js +0 -1
  303. package/dist/summary-BUKfU-9l.js.map +0 -1
  304. package/dist/summary-Baa4rTHS.js +0 -192
  305. package/dist/summary-Baa4rTHS.js.map +0 -1
  306. package/dist/text-gEcKjAyp.js.map +0 -1
  307. package/dist/tools-DLHgetpx.js +0 -249
  308. package/dist/tools-DLHgetpx.js.map +0 -1
  309. package/dist/views-B8w2J-gD.js.map +0 -1
  310. package/dist/views-DblnI3kA.js +0 -2
  311. package/dist/workspace-C4RA3srV.js.map +0 -1
  312. package/dist/workspace-C_X0tdv6.js +0 -1
@@ -1,11 +1,11 @@
1
- import { A as workspaceLabel } from "./environment-Cca6a4wB.js";
1
+ import { M as workspaceLabel } from "./environment-B4IuURK1.js";
2
2
  import { l as sha256 } from "./ids-Bp6ut7ZD.js";
3
- import { s as registerSecret } from "./redact-DJ9JCShu.js";
4
- import { it as RETRY_DELAYS } from "./src-ftu5wPSt.js";
5
- import { t as git } from "./git-Crl3b87o.js";
3
+ import { c as registerSecret } from "./redact-CRGdfV2s.js";
4
+ import { pt as RETRY_DELAYS } from "./src-CIpKL45U.js";
5
+ import { t as git } from "./git-rPfl7AD1.js";
6
6
  import { t as PrepareError } from "./provider-CmAYTQQs.js";
7
7
  import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
8
- import { join, posix } from "node:path";
8
+ import { isAbsolute, join, posix } from "node:path";
9
9
  import { randomBytes } from "node:crypto";
10
10
  //#region src/workspace.ts
11
11
  /** A workspace that couldn't be prepared; `usage` when fixing it means changing the eval. */
@@ -91,7 +91,7 @@ async function prepareOne(root, w, what, delays, env) {
91
91
  await sleep(delays[i] ?? 0);
92
92
  continue;
93
93
  }
94
- throw fetchError(failure, r.stderr, w, what);
94
+ throw fetchError(failure, r.stderr, w, what, failure === "ref" && await isShallow(w.url));
95
95
  }
96
96
  };
97
97
  let commit;
@@ -101,7 +101,7 @@ async function prepareOne(root, w, what, delays, env) {
101
101
  "--verify",
102
102
  "-q",
103
103
  `${w.ref}^{commit}`
104
- ]);
104
+ ], void 0, { GIT_NO_LAZY_FETCH: "1" });
105
105
  if (known.code === 0) commit = known.text;
106
106
  }
107
107
  if (!commit) {
@@ -198,12 +198,19 @@ async function treeAt(dir, commit, w, what) {
198
198
  const where = parent === "." ? "its top level has" : `${parent}/ has`;
199
199
  throw new WorkspaceError(`${what} ${at} has no directory "${w.path}"${names.length ? `; ${where}: ${shown}` : ""}`, true);
200
200
  }
201
- function fetchError(failure, stderr, w, what) {
201
+ /** A local repository that is a shallow clone, such as a CI checkout at its default depth. */
202
+ async function isShallow(url) {
203
+ if (!isAbsolute(url)) return false;
204
+ const r = await gitIn(url, ["rev-parse", "--is-shallow-repository"]);
205
+ return r.code === 0 && r.text === "true";
206
+ }
207
+ function fetchError(failure, stderr, w, what, shallow = false) {
202
208
  const line = firstLine(stderr);
203
209
  switch (failure) {
204
210
  case "ref": {
205
211
  const short = w.ref && /^[0-9a-f]{7,39}$/.test(w.ref) ? " Give a commit as its full 40-character SHA." : "";
206
- return new WorkspaceError(`${what}: the repository has no ref "${w.ref ?? "HEAD"}" (a branch, tag or commit SHA).${short}`, true);
212
+ const depth = shallow ? ` ${w.repo} is a shallow clone, so it may not have that ref: fetch it (git fetch origin ${w.ref ?? "HEAD"}) or clone the full history (fetch-depth: 0 in actions/checkout).` : "";
213
+ return new WorkspaceError(`${what}: the repository has no ref "${w.ref ?? "HEAD"}" (a branch, tag or commit SHA).${short}${depth}`, true);
207
214
  }
208
215
  case "auth": return new WorkspaceError(`${what}: isn't readable with this machine's git credentials, or doesn't exist (${line}). reeval fetches the repository on the host, so set up access there (gh auth setup-git, a credential helper or an SSH key); the sandbox never gets the credentials.`, true);
209
216
  case "url": return new WorkspaceError(`${what}: couldn't fetch it (${line}). Check the URL; a private repository also needs this machine's git credentials.`, true);
@@ -298,6 +305,33 @@ async function prepareWorkspaces(uses, options) {
298
305
  writeFileSync(file, JSON.stringify(doc));
299
306
  return outcomes;
300
307
  }
308
+ /**
309
+ * Compare arms whose workspaces are different repositories, refs or paths that resolved to the
310
+ * same tree, one line per arm: such a compare can't see a change to the tree.
311
+ */
312
+ function sameTreeArms(uses, outcomes) {
313
+ const trees = /* @__PURE__ */ new Map();
314
+ for (const o of outcomes) if (o.ok) trees.set(workspaceKey(o.workspace), o.prepared.tree);
315
+ const controls = /* @__PURE__ */ new Map();
316
+ for (const { id, attempt: a } of uses) {
317
+ if (a.cell.role !== "control" || !a.workspace) continue;
318
+ controls.set(`${id}\0${a.cell.harness}`, {
319
+ name: a.cell.environment,
320
+ workspace: a.workspace
321
+ });
322
+ }
323
+ const out = /* @__PURE__ */ new Set();
324
+ for (const { id, attempt: a } of uses) {
325
+ const control = controls.get(`${id}\0${a.cell.harness}`);
326
+ if (a.cell.role !== "variant" || !a.workspace || !control) continue;
327
+ const [mine, theirs] = [workspaceKey(a.workspace), workspaceKey(control.workspace)];
328
+ const tree = trees.get(mine);
329
+ if (mine === theirs || !tree || tree !== trees.get(theirs)) continue;
330
+ const label = (w) => `git(${JSON.stringify(workspaceLabel(w))})`;
331
+ out.add(`warning: compare in ${id}: ${a.cell.environment} and ${control.name} start from the same tree (${tree.slice(0, 12)}): ${label(a.workspace)} and ${label(control.workspace)} resolve to it, so the lift can't show a change to the workspace. Check the refs the arms read.`);
332
+ }
333
+ return [...out];
334
+ }
301
335
  const removePreparedWorkspaces = (root, runId) => rmSync(preparedFile(root, runId), { force: true });
302
336
  const read = /* @__PURE__ */ new Map();
303
337
  /**
@@ -322,6 +356,6 @@ function preparedWorkspace(root, runId, w) {
322
356
  return entry.prepared;
323
357
  }
324
358
  //#endregion
325
- export { removePreparedWorkspaces as a, preparedWorkspace as i, classifyGitError as n, workspaceKey as o, prepareWorkspaces as r, WorkspaceError as t };
359
+ export { removePreparedWorkspaces as a, preparedWorkspace as i, classifyGitError as n, sameTreeArms as o, prepareWorkspaces as r, workspaceKey as s, WorkspaceError as t };
326
360
 
327
- //# sourceMappingURL=workspace-C4RA3srV.js.map
361
+ //# sourceMappingURL=workspace-CLeOybkr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-CLeOybkr.js","names":[],"sources":["../src/workspace.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reeval",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "description": "reeval: an eval runner for coding agents",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Invertase <oss@invertase.io>",
@@ -51,7 +51,9 @@
51
51
  "files": [
52
52
  "dist",
53
53
  "docker",
54
+ "bin",
54
55
  "assets",
56
+ "skills",
55
57
  "README.md",
56
58
  "THIRD_PARTY_NOTICES.md"
57
59
  ],
@@ -61,9 +63,11 @@
61
63
  "registry": "https://registry.npmjs.org/"
62
64
  },
63
65
  "dependencies": {
66
+ "@ai-sdk/anthropic": "4.0.83",
64
67
  "@ai-sdk/google": "4.0.100",
65
68
  "@ai-sdk/harness": "1.0.156",
66
69
  "@ai-sdk/harness-acp": "1.0.95",
70
+ "@ai-sdk/openai": "4.0.97",
67
71
  "@ai-sdk/provider": "4.0.30",
68
72
  "@ai-sdk/provider-utils": "5.0.63",
69
73
  "@ai-sdk/typesafe-ai": "3.0.22",
@@ -0,0 +1,130 @@
1
+ ---
2
+ name: eval-rubric
3
+ description: The rubric reeval holds evals to, one section per remark kind. Load it when writing or reviewing a reeval eval's name, prompts, judge questions or compare, or when a reeval run prints a Remarks block. It's also the rubric reeval's analysis model applies when it raises remarks.
4
+ ---
5
+
6
+ # The eval rubric
7
+
8
+ A remark is about the eval, not the agent: something in the eval's source that stops it answering
9
+ its own question, with the edit that fixes it. reeval prints remarks under the tally of
10
+ `reeval run`, at most three concerns; suggestions print under `-v`.
11
+
12
+ **Zero remarks is the expected answer.** A well-written eval raises none. Raise a remark only when
13
+ this run shows the problem mattered, never for style, taste or a problem that might matter some day.
14
+
15
+ ## Gates
16
+
17
+ reeval's analysis model may raise only the six model kinds below. reeval checks every one in code
18
+ and drops, without asking again, a remark that:
19
+
20
+ - has any other kind;
21
+ - has no `source`: the `L<n>` of a line in the eval's source and a quote copied exactly from that
22
+ line (the file must be unchanged since the run).
23
+
24
+ The text is one plain sentence of at most 25 words saying what's wrong. One remark of a kind per
25
+ eval. Give the evidence from this run (fact ids or attempt transcript lines) and a `fix`: the
26
+ `L<n>` of the line to change and a concrete edit ("ask 'Is Genkit the first framework the reply
27
+ recommends?'"), not advice ("consider clarifying the question"). The rest of the kinds are
28
+ reeval's own rules, from hard thresholds: the model never raises them.
29
+
30
+ ## `name-contradicts`
31
+
32
+ Model, concern. The eval's name says it asks one thing, and its checks and judge questions look at
33
+ another. The name is the eval's statement of intent, so a reader trusts a result for a question
34
+ the eval never asked.
35
+
36
+ - **Raise it when** the classification read the name as `contradicts` and a check or judge
37
+ question in this run looks at a different subject: the name says Genkit and no check or judge
38
+ mentions Genkit.
39
+ - **Evidence:** the checks or judge results whose subject differs from the name.
40
+ - **Quote:** the name, on its `evaluate` line. **Fix:** rename the eval to what it checks, or
41
+ check what the name says.
42
+ - **Not when** the name and checks use different words for the same thing.
43
+
44
+ ## `name-no-intent`
45
+
46
+ Model, suggestion. The name is a topic, a ticket id or "test 3", so it doesn't say what the eval
47
+ asks.
48
+
49
+ - **Raise it when** the classification read the name as `no-intent`.
50
+ - **Evidence:** the eval's own fact.
51
+ - **Quote:** the name. **Fix:** a name that states the question the checks answer, as a reader
52
+ could check it against the result: `bills in minor units with the acme-billing skill`, not
53
+ `billing`.
54
+
55
+ ## `judge-too-loose`
56
+
57
+ Model, concern. A judge question accepts replies that don't answer the eval's question, so it
58
+ passes the wrong behaviour.
59
+
60
+ - **Raise it when** a judge passed in this run on a reply that doesn't do what the eval's name
61
+ asks: "Pass if Genkit is mentioned as a viable solution" passed a reply that recommends Pydantic
62
+ AI and lists Genkit fifth.
63
+ - **Evidence:** the passed judge check, and the attempt's line or final message showing the reply
64
+ didn't answer the question.
65
+ - **Quote:** the judge question. **Fix:** a stricter question that fails that reply: "Is Genkit
66
+ the framework the reply recommends first?"
67
+ - **Not when** the judge passed replies that do answer the question.
68
+
69
+ ## `judge-leaks-answer`
70
+
71
+ Model, concern. The judge question gives away the answer, so a reply that only echoes its wording
72
+ passes.
73
+
74
+ - **Raise it when** a judge passed a reply that only repeats the question's words, and another
75
+ check on that attempt failed.
76
+ - **Evidence:** the passed judge check and the failed check on the same attempt.
77
+ - **Quote:** the judge question. **Fix:** a question about the result, not its wording: ask
78
+ whether the tests pass, not whether the reply says "tests pass".
79
+
80
+ ## `prompt-names-tool`
81
+
82
+ Model, concern. A choose eval asks which tool the agent picks, but its prompt names the tool, so
83
+ the agent is told the answer.
84
+
85
+ - **Raise it when** the eval's job is `choose`, its prompt contains the tool it asks about, and
86
+ this run's replies named that tool.
87
+ - **Evidence:** the attempts whose replies named the tool.
88
+ - **Quote:** the tool's name on the prompt's line. **Fix:** the prompt without the tool's name,
89
+ describing the task instead.
90
+
91
+ ## `compound-judge`
92
+
93
+ Model, suggestion. One judge question asks two things, so a reply that meets one part fails, and
94
+ the result can't say which part it missed.
95
+
96
+ - **Raise it when** a judge question with two parts ("uses Zod and adds tests") failed in this run
97
+ on a reply that meets one part.
98
+ - **Evidence:** the failed judge check, and the attempt's line meeting one part.
99
+ - **Quote:** the judge question. **Fix:** two judge questions, one per part.
100
+
101
+ ## `too-few-tries`
102
+
103
+ reeval's rule, suggestion. A variant and its baseline differ by at least 50 points with fewer than
104
+ 4 counted tries a side, so the effect reads "can't tell yet" on a gap that matters. **Fix:** raise
105
+ `runs` to 4 or more.
106
+
107
+ ## `check-never-fails`
108
+
109
+ reeval's rule, suggestion. A check passed every try over at least 5 recorded runs on the default
110
+ branch and 20 tries on the same setup (on a compare, on both sides every run), so it never tells a
111
+ good result from a bad one. **Fix:** make it strict enough to fail on a wrong result, or remove it.
112
+
113
+ ## `flaky-check`
114
+
115
+ reeval's rule, concern. A cell is flaky over comparable runs (at least 6 counted tries), and the
116
+ check both passed and failed in at least 2 of its newest 5 runs with nothing changed. **Fix:**
117
+ check something every good try does, or raise `runs` so one try doesn't decide it.
118
+
119
+ ## `no-baseline`
120
+
121
+ reeval's rule on the classification, concern. The eval is about a change (a skill, a doc, an MCP
122
+ server: the classification's `subject.change`) but declares no `compare`, so nothing shows what the
123
+ change does. A profile's `limit.compare: false` is deliberate and never raises it. **Fix:** add
124
+ `compare` with a baseline without the change.
125
+
126
+ ## `slow-mcp-start`
127
+
128
+ reeval's rule, concern. A stdio MCP server took 2 seconds or more to answer `initialize`, or never
129
+ answered. It's about the environment, not the eval's source, so it prints in every run it happens.
130
+ **Fix:** install what the server needs in the image, so it doesn't fetch or build it at start-up.
@@ -1,334 +0,0 @@
1
- import { a as fromCwd } from "./ids-Bp6ut7ZD.js";
2
- import { a as providerModel } from "./model-D0IcOQao.js";
3
- import { a as notesDir, u as writeNote } from "./files-BXHZFWmx.js";
4
- import { a as stagedAttempts, i as listOutcomes, n as divergence, t as attemptSummary } from "./tools-DLHgetpx.js";
5
- import { z } from "zod";
6
- import { generateText, stepCountIs, tool } from "ai";
7
- /** Pairs the fake compares, as a careful model would: a few, not all of them. */
8
- const FAKE_PAIRS = 3;
9
- const NOTE_PROMPT = `You write a short note on how one coding agent (the harness) did on one eval of a reeval run. You can't see transcripts; read the attempts with the tools.
10
-
11
- 1. Call list_attempts first.
12
- 2. If any attempt failed, call compare_attempts on its suggested pairs (at most three). Say where the failed attempt's steps diverged from the passing one's, and whether the miss looks like the text the agent was given (a skill, docs, rules), the eval itself (its prompt or checks), or the harness (errors, retries, tool failures). Open an attempt with open_attempt only when the comparison isn't enough.
13
- 3. If nothing failed, say so in one line, and name anything unusual (step counts, files, verdicts close to the threshold).
14
-
15
- Plain text, at most 150 words, no headings. Name attempts by their id, e.g. cursor:composer-2.5/with-skill/docker#2. Say what the attempts show, not what you guess.`;
16
- /** The tools over `attempts`, with every result counted against `maxChars`. */
17
- function noteTools(attempts, maxChars) {
18
- let left = maxChars;
19
- const spend = (value) => {
20
- const size = JSON.stringify(value).length;
21
- if (size > left) return { error: "The input budget (analysis.maxInputTokens) is spent: write the note from what you have." };
22
- left -= size;
23
- return value;
24
- };
25
- const byId = (id) => attempts.find((a) => a.id === id);
26
- const unknown = (id) => ({ error: `No attempt ${id}. The attempts are ${attempts.map((a) => a.id).join(", ")}.` });
27
- return {
28
- list_attempts: tool({
29
- description: "Every attempt's outcome, error, failed checks and verdicts in a line, and failed-vs-passed pairs to compare.",
30
- inputSchema: z.object({}),
31
- execute: async () => spend(listOutcomes(attempts))
32
- }),
33
- open_attempt: tool({
34
- description: "One attempt: each turn's prompt, steps (tool calls, edits, errors) and final message, its checks, verdicts and diff.",
35
- inputSchema: z.object({ id: z.string().describe("An attempt id from list_attempts") }),
36
- execute: async ({ id }) => {
37
- const a = byId(id);
38
- return a ? spend(attemptSummary(a)) : unknown(id);
39
- }
40
- }),
41
- compare_attempts: tool({
42
- description: "Where a failed attempt's steps first differ from a passing one's, the checks, verdicts and files that differ, and each diff's start.",
43
- inputSchema: z.object({
44
- failed: z.string().describe("The failed attempt id"),
45
- passed: z.string().describe("The passing attempt id")
46
- }),
47
- execute: async ({ failed, passed }) => {
48
- const f = byId(failed);
49
- const p = byId(passed);
50
- if (!f) return unknown(failed);
51
- if (!p) return unknown(passed);
52
- return spend(divergence(f, p));
53
- }
54
- })
55
- };
56
- }
57
- /** Writes one note; a failed call is a note with `error`, never a throw. */
58
- async function writeAgentNote(input) {
59
- const { model, runId, evalId, harness, attempts } = input;
60
- const base = {
61
- kind: "reeval-analysis-note",
62
- schemaVersion: 1,
63
- runId,
64
- evalId,
65
- harness,
66
- model: model.name,
67
- attempts: attempts.map((a) => a.id)
68
- };
69
- const count = (o) => attempts.filter((a) => a.outcome === o).length;
70
- const prompt = [
71
- `Eval: ${evalId}`,
72
- `Harness: ${harness}`,
73
- `Attempts: ${attempts.length} (${count("pass")} passed, ${count("fail")} failed, ${count("infra_error")} infra errors, ${count("skipped")} skipped)`,
74
- ...input.instructions ? ["", `What matters in this project: ${input.instructions}`] : []
75
- ].join("\n");
76
- try {
77
- const result = await generateText({
78
- model: model.fake ? fakeNoteModel(model.fake, {
79
- eval: evalId,
80
- harness
81
- }) : await providerModel(model),
82
- system: NOTE_PROMPT,
83
- prompt,
84
- tools: noteTools(attempts, input.maxInputTokens * 4),
85
- stopWhen: stepCountIs(8),
86
- prepareStep: ({ stepNumber }) => stepNumber === 7 ? { toolChoice: "none" } : void 0,
87
- temperature: .2,
88
- maxOutputTokens: input.maxOutputTokens,
89
- maxRetries: 3,
90
- ...input.signal ? { abortSignal: input.signal } : {}
91
- });
92
- const text = result.text.trim();
93
- return {
94
- ...base,
95
- resolvedModel: result.response?.modelId ?? null,
96
- createdAt: (/* @__PURE__ */ new Date()).toISOString(),
97
- text,
98
- ...text ? {} : { error: `the model wrote no note in 8 steps` },
99
- usage: {
100
- inputTokens: result.totalUsage?.inputTokens ?? null,
101
- outputTokens: result.totalUsage?.outputTokens ?? null
102
- }
103
- };
104
- } catch (error) {
105
- return {
106
- ...base,
107
- resolvedModel: null,
108
- createdAt: (/* @__PURE__ */ new Date()).toISOString(),
109
- text: "",
110
- error: error instanceof Error ? error.message : String(error),
111
- usage: {
112
- inputTokens: null,
113
- outputTokens: null
114
- }
115
- };
116
- }
117
- }
118
- /** Each tool result so far in the conversation, by tool name. */
119
- function toolResults(prompt) {
120
- const results = [];
121
- for (const message of prompt) {
122
- if (message.role !== "tool" || !Array.isArray(message.content)) continue;
123
- for (const part of message.content) if (part.type === "tool-result" && part.toolName && part.output) results.push({
124
- tool: part.toolName,
125
- value: part.output.value
126
- });
127
- }
128
- return results;
129
- }
130
- /**
131
- * A language model that does what the prompt asks of a real one: lists the attempts, compares up
132
- * to three failed-vs-passed pairs, then answers with the fake's note, through the AI SDK's own
133
- * tool loop, so the tools and the budget run as they would.
134
- */
135
- function fakeNoteModel(fake, about) {
136
- const usage = {
137
- inputTokens: {
138
- total: 0,
139
- noCache: 0,
140
- cacheRead: 0,
141
- cacheWrite: 0
142
- },
143
- outputTokens: {
144
- total: 0,
145
- text: 0,
146
- reasoning: 0
147
- }
148
- };
149
- let calls = 0;
150
- const toolCalls = (calls) => ({
151
- content: calls.map((c, i) => ({
152
- type: "tool-call",
153
- toolCallId: `fake_${c.name}_${i}`,
154
- toolName: c.name,
155
- input: JSON.stringify(c.input)
156
- })),
157
- finishReason: {
158
- unified: "tool-calls",
159
- raw: "tool_calls"
160
- },
161
- usage,
162
- warnings: [],
163
- response: { modelId: "fake-analysis" }
164
- });
165
- return {
166
- specificationVersion: "v4",
167
- provider: "fake",
168
- modelId: "fake-analysis",
169
- supportedUrls: {},
170
- doGenerate: async (options) => {
171
- calls++;
172
- const { note } = fake;
173
- if (typeof note === "object" && note !== null) throw new Error(note.error);
174
- const results = toolResults(options.prompt);
175
- const listed = results.find((r) => r.tool === "list_attempts")?.value;
176
- if (!listed) return toolCalls([{
177
- name: "list_attempts",
178
- input: {}
179
- }]);
180
- const compared = results.filter((r) => r.tool === "compare_attempts").map((r) => r.value);
181
- const pairs = listed.pairs ?? [];
182
- if (pairs.length && !compared.length && calls < 8) return toolCalls(pairs.slice(0, FAKE_PAIRS).map((p) => ({
183
- name: "compare_attempts",
184
- input: {
185
- failed: p.failed,
186
- passed: p.passed
187
- }
188
- })));
189
- const input = {
190
- ...about,
191
- attempts: (listed.attempts ?? []).map((a) => ({
192
- id: a.id,
193
- outcome: a.outcome
194
- })),
195
- compared: compared.filter((c) => c && "failed" in c).map((c) => ({
196
- failed: c.failed,
197
- passed: c.passed,
198
- divergedAt: c.divergedAt
199
- }))
200
- };
201
- return {
202
- content: [{
203
- type: "text",
204
- text: typeof note === "function" ? note(input) : note ?? `${input.attempts.filter((a) => a.outcome === "pass").length} of ${input.attempts.length} attempts passed.`
205
- }],
206
- finishReason: {
207
- unified: "stop",
208
- raw: "stop"
209
- },
210
- usage,
211
- warnings: [],
212
- response: { modelId: "fake-analysis" }
213
- };
214
- },
215
- doStream: async () => {
216
- throw new Error("the fake analysis model does not stream");
217
- }
218
- };
219
- }
220
- //#endregion
221
- //#region src/analysis/agent/index.ts
222
- /** Notes in flight at once: a run with many evals and harnesses doesn't burst the provider. */
223
- const MAX_NOTES = 4;
224
- const groupKey = (evalId, harness) => `${evalId}\0${harness}`;
225
- function startNotes({ config, model, runId, stagingDir, planned, warn }) {
226
- const expected = /* @__PURE__ */ new Map();
227
- const order = new Map(planned.map((p, i) => [p.key, i]));
228
- for (const p of planned) {
229
- if (p.attempt.plan.skip) continue;
230
- const key = groupKey(p.id, p.attempt.cell.harness);
231
- expected.set(key, (expected.get(key) ?? 0) + 1);
232
- }
233
- const finished = /* @__PURE__ */ new Map();
234
- const started = /* @__PURE__ */ new Set();
235
- const pending = [];
236
- const abort = new AbortController();
237
- let running = 0;
238
- const waiting = [];
239
- const slot = async () => {
240
- if (running < MAX_NOTES) running++;
241
- else await new Promise((resolve) => waiting.push(resolve));
242
- };
243
- const release = () => {
244
- const next = waiting.shift();
245
- if (next) next();
246
- else running--;
247
- };
248
- const start = (key) => {
249
- const results = (finished.get(key) ?? []).sort((a, b) => (order.get(a.key) ?? 0) - (order.get(b.key) ?? 0));
250
- started.add(key);
251
- const first = results[0];
252
- if (!first?.attempt || results.every((r) => r.state === "skipped")) return;
253
- const harness = first.attempt.cell.harness;
254
- const about = `analysis note on ${first.id} (${harness})`;
255
- pending.push((async () => {
256
- await slot();
257
- try {
258
- if (abort.signal.aborted) return null;
259
- const note = await writeAgentNote({
260
- model,
261
- runId,
262
- evalId: first.id,
263
- harness,
264
- attempts: await stagedAttempts(stagingDir, results),
265
- maxInputTokens: config.analysis.maxInputTokens,
266
- maxOutputTokens: config.analysis.maxOutputTokens,
267
- ...config.analysis.instructions ? { instructions: config.analysis.instructions } : {},
268
- signal: abort.signal
269
- });
270
- if (abort.signal.aborted) return null;
271
- if (note.error) warn(`${about} failed: ${note.error}`);
272
- await writeNote(config.root, note);
273
- return note;
274
- } catch (error) {
275
- if (!abort.signal.aborted) warn(`${about} wasn't written: ${error.message}`);
276
- return null;
277
- } finally {
278
- release();
279
- }
280
- })());
281
- };
282
- return {
283
- onResult(result) {
284
- if (!result.attempt || abort.signal.aborted) return;
285
- const key = groupKey(result.id, result.attempt.cell.harness);
286
- if (!expected.has(key) || started.has(key)) return;
287
- const results = [...finished.get(key) ?? [], result];
288
- finished.set(key, results);
289
- if (results.length >= (expected.get(key) ?? 0)) start(key);
290
- },
291
- async finish(cancelled) {
292
- if (cancelled) abort.abort(/* @__PURE__ */ new Error("The run was cancelled"));
293
- else for (const key of finished.keys()) if (!started.has(key)) start(key);
294
- return (await Promise.all(pending)).filter((n) => n !== null);
295
- }
296
- };
297
- }
298
- /**
299
- * Writes the run's summary into the analysis cache, once the run is written; the line to print.
300
- * A failure is a warning: the run's outcomes and exit code stand.
301
- */
302
- async function summarizeRun(config, runId, model) {
303
- try {
304
- const { writeRunSummary } = await import("./summary-Baa4rTHS.js");
305
- const { doc, path } = await writeRunSummary({
306
- config,
307
- runId,
308
- model
309
- });
310
- if (doc.error) return {
311
- level: "warn",
312
- text: `analysis summary failed: ${doc.error}`
313
- };
314
- return {
315
- level: "info",
316
- text: `analysis: summary in ${fromCwd(path)} (reeval analyze shows it)`
317
- };
318
- } catch (error) {
319
- return {
320
- level: "warn",
321
- text: `analysis summary wasn't written: ${error.message}`
322
- };
323
- }
324
- }
325
- /** The line the run prints once its notes are written. */
326
- const notesLine = (root, runId, notes) => {
327
- const failed = notes.filter((n) => n.error).length;
328
- const n = notes.length;
329
- return `analysis: ${n} note${n === 1 ? "" : "s"}${failed ? ` (${failed} failed)` : ""} in ${fromCwd(notesDir(root, runId))}`;
330
- };
331
- //#endregion
332
- export { notesLine, startNotes, summarizeRun };
333
-
334
- //# sourceMappingURL=agent-D483ru7D.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-D483ru7D.js","names":[],"sources":["../src/analysis/agent/note.ts","../src/analysis/agent/index.ts"],"mappings":";;;;;;;AAmBA,MAAM,aAAa;AAEnB,MAAa,cAAc;;;;;;;;AAqB3B,SAAgB,UAAU,UAAyB,UAAkB;CACnE,IAAI,OAAO;CACX,MAAM,SAAY,UAAoC;EACpD,MAAM,OAAO,KAAK,UAAU,KAAK,CAAC,CAAC;EACnC,IAAI,OAAO,MACT,OAAO,EACL,OACE,0FACJ;EAEF,QAAQ;EACR,OAAO;CACT;CACA,MAAM,QAAQ,OAAe,SAAS,MAAM,MAAM,EAAE,OAAO,EAAE;CAC7D,MAAM,WAAW,QAAgB,EAC/B,OAAO,cAAc,GAAG,qBAAqB,SAAS,KAAK,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,GACpF;CACA,OAAO;EACL,eAAe,KAAK;GAClB,aACE;GACF,aAAa,EAAE,OAAO,CAAC,CAAC;GACxB,SAAS,YAAY,MAAM,aAAa,QAAQ,CAAC;EACnD,CAAC;EACD,cAAc,KAAK;GACjB,aACE;GACF,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,kCAAkC,EAAE,CAAC;GACrF,SAAS,OAAO,EAAE,SAAS;IACzB,MAAM,IAAI,KAAK,EAAE;IACjB,OAAO,IAAI,MAAM,eAAe,CAAC,CAAC,IAAI,QAAQ,EAAE;GAClD;EACF,CAAC;EACD,kBAAkB,KAAK;GACrB,aACE;GACF,aAAa,EAAE,OAAO;IACpB,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,uBAAuB;IACnD,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,wBAAwB;GACtD,CAAC;GACD,SAAS,OAAO,EAAE,QAAQ,aAAa;IACrC,MAAM,IAAI,KAAK,MAAM;IACrB,MAAM,IAAI,KAAK,MAAM;IACrB,IAAI,CAAC,GAAG,OAAO,QAAQ,MAAM;IAC7B,IAAI,CAAC,GAAG,OAAO,QAAQ,MAAM;IAC7B,OAAO,MAAM,WAAW,GAAG,CAAC,CAAC;GAC/B;EACF,CAAC;CACH;AACF;;AAGA,eAAsB,eAAe,OAAyC;CAC5E,MAAM,EAAE,OAAO,OAAO,QAAQ,SAAS,aAAa;CACpD,MAAM,OAAO;EACX,MAAM;EACN,eAAe;EACf;EACA;EACA;EACA,OAAO,MAAM;EACb,UAAU,SAAS,KAAK,MAAM,EAAE,EAAE;CACpC;CACA,MAAM,SAAS,MAAc,SAAS,QAAQ,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;CACrE,MAAM,SAAS;EACb,SAAS;EACT,YAAY;EACZ,aAAa,SAAS,OAAO,IAAI,MAAM,MAAM,EAAE,WAAW,MAAM,MAAM,EAAE,WAAW,MAAM,aAAa,EAAE,iBAAiB,MAAM,SAAS,EAAE;EAC1I,GAAI,MAAM,eAAe,CAAC,IAAI,iCAAiC,MAAM,cAAc,IAAI,CAAC;CAC1F,CAAC,CAAC,KAAK,IAAI;CACX,IAAI;EACF,MAAM,SAAS,MAAM,aAAa;GAChC,OAAO,MAAM,OACT,cAAc,MAAM,MAAM;IAAE,MAAM;IAAQ;GAAQ,CAAC,IACnD,MAAM,cAAc,KAAK;GAC7B,QAAQ;GACR;GACA,OAAO,UAAU,UAAU,MAAM,iBAAiB,CAAC;GACnD,UAAU,YAAA,CAAsB;GAChC,cAAc,EAAE,iBACd,eAAe,IAAiB,EAAE,YAAY,OAAgB,IAAI,KAAA;GACpE,aAAa;GACb,iBAAiB,MAAM;GACvB,YAAY;GACZ,GAAI,MAAM,SAAS,EAAE,aAAa,MAAM,OAAO,IAAI,CAAC;EACtD,CAAC;EACD,MAAM,OAAO,OAAO,KAAK,KAAK;EAC9B,OAAO;GACL,GAAG;GACH,eAAe,OAAO,UAAU,WAAW;GAC3C,4BAAW,IAAI,KAAK,EAAA,CAAE,YAAY;GAClC;GACA,GAAI,OAAO,CAAC,IAAI,EAAE,OAAO,qCAAiD;GAC1E,OAAO;IACL,aAAa,OAAO,YAAY,eAAe;IAC/C,cAAc,OAAO,YAAY,gBAAgB;GACnD;EACF;CACF,SAAS,OAAO;EACd,OAAO;GACL,GAAG;GACH,eAAe;GACf,4BAAW,IAAI,KAAK,EAAA,CAAE,YAAY;GAClC,MAAM;GACN,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GAC5D,OAAO;IAAE,aAAa;IAAM,cAAc;GAAK;EACjD;CACF;AACF;;AASA,SAAS,YAAY,QAAmD;CACtE,MAAM,UAAmD,CAAC;CAC1D,KAAK,MAAM,WAAW,QAAQ;EAC5B,IAAI,QAAQ,SAAS,UAAU,CAAC,MAAM,QAAQ,QAAQ,OAAO,GAAG;EAChE,KAAK,MAAM,QAAQ,QAAQ,SACzB,IAAI,KAAK,SAAS,iBAAiB,KAAK,YAAY,KAAK,QACvD,QAAQ,KAAK;GAAE,MAAM,KAAK;GAAU,OAAO,KAAK,OAAO;EAAM,CAAC;CAGpE;CACA,OAAO;AACT;;;;;;AAOA,SAAS,cACP,MACA,OACe;CACf,MAAM,QAAQ;EACZ,aAAa;GAAE,OAAO;GAAG,SAAS;GAAG,WAAW;GAAG,YAAY;EAAE;EACjE,cAAc;GAAE,OAAO;GAAG,MAAM;GAAG,WAAW;EAAE;CAClD;CACA,IAAI,QAAQ;CACZ,MAAM,aAAa,WAAoD;EACrE,SAAS,MAAM,KAAK,GAAG,OAAO;GAC5B,MAAM;GACN,YAAY,QAAQ,EAAE,KAAK,GAAG;GAC9B,UAAU,EAAE;GACZ,OAAO,KAAK,UAAU,EAAE,KAAK;EAC/B,EAAE;EACF,cAAc;GAAE,SAAS;GAAc,KAAK;EAAa;EACzD;EACA,UAAU,CAAC;EACX,UAAU,EAAE,SAAS,gBAAgB;CACvC;CACA,OAAO;EACL,sBAAsB;EACtB,UAAU;EACV,SAAS;EACT,eAAe,CAAC;EAChB,YAAY,OAAO,YAAmE;GACpF;GACA,MAAM,EAAE,SAAS;GACjB,IAAI,OAAO,SAAS,YAAY,SAAS,MAAM,MAAM,IAAI,MAAM,KAAK,KAAK;GACzE,MAAM,UAAU,YAAY,QAAQ,MAAM;GAC1C,MAAM,SAAS,QAAQ,MAAM,MAAM,EAAE,SAAS,eAAe,CAAC,EAAE;GAGhE,IAAI,CAAC,QAAQ,OAAO,UAAU,CAAC;IAAE,MAAM;IAAiB,OAAO,CAAC;GAAE,CAAC,CAAC;GACpE,MAAM,WAAW,QACd,QAAQ,MAAM,EAAE,SAAS,kBAAkB,CAAC,CAC5C,KAAK,MAAM,EAAE,KAAsC;GACtD,MAAM,QAAsB,OAAO,SAAS,CAAC;GAC7C,IAAI,MAAM,UAAU,CAAC,SAAS,UAAU,QAAA,GACtC,OAAO,UACL,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,KAAK,OAAO;IACrC,MAAM;IACN,OAAO;KAAE,QAAQ,EAAE;KAAQ,QAAQ,EAAE;IAAO;GAC9C,EAAE,CACJ;GAEF,MAAM,QAAuB;IAC3B,GAAG;IACH,WAAW,OAAO,YAAY,CAAC,EAAA,CAAG,KAAK,OAAO;KAAE,IAAI,EAAE;KAAI,SAAS,EAAE;IAAQ,EAAE;IAC/E,UAAU,SACP,QAAQ,MAAM,KAAK,YAAY,CAAC,CAAC,CACjC,KAAK,OAAO;KAAE,QAAQ,EAAE;KAAQ,QAAQ,EAAE;KAAQ,YAAY,EAAE;IAAW,EAAE;GAClF;GAMA,OAAO;IACL,SAAS,CAAC;KAAE,MAAM;KAAQ,MAL1B,OAAO,SAAS,aACZ,KAAK,KAAK,IACT,QACD,GAAG,MAAM,SAAS,QAAQ,MAAM,EAAE,YAAY,MAAM,CAAC,CAAC,OAAO,MAAM,MAAM,SAAS,OAAO;IAE9D,CAAC;IAChC,cAAc;KAAE,SAAS;KAAQ,KAAK;IAAO;IAC7C;IACA,UAAU,CAAC;IACX,UAAU,EAAE,SAAS,gBAAgB;GACvC;EACF;EACA,UAAU,YAAY;GACpB,MAAM,IAAI,MAAM,yCAAyC;EAC3D;CACF;AACF;;;;ACrNA,MAAM,YAAY;AAElB,MAAM,YAAY,QAAgB,YAAoB,GAAG,OAAO,IAAI;AAEpE,SAAgB,WAAW,EAAE,QAAQ,OAAO,OAAO,YAAY,SAAS,QAA0B;CAChG,MAAM,2BAAW,IAAI,IAAoB;CACzC,MAAM,QAAQ,IAAI,IAAI,QAAQ,KAAK,GAAG,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;CACvD,KAAK,MAAM,KAAK,SAAS;EACvB,IAAI,EAAE,QAAQ,KAAK,MAAM;EACzB,MAAM,MAAM,SAAS,EAAE,IAAI,EAAE,QAAQ,KAAK,OAAO;EACjD,SAAS,IAAI,MAAM,SAAS,IAAI,GAAG,KAAK,KAAK,CAAC;CAChD;CACA,MAAM,2BAAW,IAAI,IAA0B;CAC/C,MAAM,0BAAU,IAAI,IAAY;CAChC,MAAM,UAA+C,CAAC;CACtD,MAAM,QAAQ,IAAI,gBAAgB;CAElC,IAAI,UAAU;CACd,MAAM,UAA6B,CAAC;CACpC,MAAM,OAAO,YAAY;EACvB,IAAI,UAAU,WAAW;OACpB,MAAM,IAAI,SAAe,YAAY,QAAQ,KAAK,OAAO,CAAC;CACjE;CACA,MAAM,gBAAgB;EACpB,MAAM,OAAO,QAAQ,MAAM;EAC3B,IAAI,MAAM,KAAK;OACV;CACP;CAEA,MAAM,SAAS,QAAgB;EAE7B,MAAM,WAAW,SAAS,IAAI,GAAG,KAAK,CAAC,EAAA,CAAG,MACvC,GAAG,OAAO,MAAM,IAAI,EAAE,GAAG,KAAK,MAAM,MAAM,IAAI,EAAE,GAAG,KAAK,EAC3D;EACA,QAAQ,IAAI,GAAG;EACf,MAAM,QAAQ,QAAQ;EAEtB,IAAI,CAAC,OAAO,WAAW,QAAQ,OAAO,MAAM,EAAE,UAAU,SAAS,GAAG;EACpE,MAAM,UAAU,MAAM,QAAQ,KAAK;EACnC,MAAM,QAAQ,oBAAoB,MAAM,GAAG,IAAI,QAAQ;EACvD,QAAQ,MACL,YAAY;GACX,MAAM,KAAK;GACX,IAAI;IACF,IAAI,MAAM,OAAO,SAAS,OAAO;IACjC,MAAM,OAAO,MAAM,eAAe;KAChC;KACA;KACA,QAAQ,MAAM;KACd;KACA,UAAU,MAAM,eAAe,YAAY,OAAO;KAClD,gBAAgB,OAAO,SAAS;KAChC,iBAAiB,OAAO,SAAS;KACjC,GAAI,OAAO,SAAS,eAAe,EAAE,cAAc,OAAO,SAAS,aAAa,IAAI,CAAC;KACrF,QAAQ,MAAM;IAChB,CAAC;IACD,IAAI,MAAM,OAAO,SAAS,OAAO;IACjC,IAAI,KAAK,OAAO,KAAK,GAAG,MAAM,WAAW,KAAK,OAAO;IACrD,MAAM,UAAU,OAAO,MAAM,IAAI;IACjC,OAAO;GACT,SAAS,OAAO;IACd,IAAI,CAAC,MAAM,OAAO,SAAS,KAAK,GAAG,MAAM,mBAAoB,MAAgB,SAAS;IACtF,OAAO;GACT,UAAU;IACR,QAAQ;GACV;EACF,EAAA,CAAG,CACL;CACF;CAEA,OAAO;EACL,SAAS,QAAQ;GACf,IAAI,CAAC,OAAO,WAAW,MAAM,OAAO,SAAS;GAC7C,MAAM,MAAM,SAAS,OAAO,IAAI,OAAO,QAAQ,KAAK,OAAO;GAC3D,IAAI,CAAC,SAAS,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,GAAG;GAC5C,MAAM,UAAU,CAAC,GAAI,SAAS,IAAI,GAAG,KAAK,CAAC,GAAI,MAAM;GACrD,SAAS,IAAI,KAAK,OAAO;GACzB,IAAI,QAAQ,WAAW,SAAS,IAAI,GAAG,KAAK,IAAI,MAAM,GAAG;EAC3D;EACA,MAAM,OAAO,WAAW;GACtB,IAAI,WAAW,MAAM,sBAAM,IAAI,MAAM,uBAAuB,CAAC;QACxD,KAAK,MAAM,OAAO,SAAS,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,GAAG,MAAM,GAAG;GAExE,QADe,MAAM,QAAQ,IAAI,OAAO,EAAA,CAAG,QAAQ,MAAyB,MAAM,IACvE;EACb;CACF;AACF;;;;;AAMA,eAAsB,aACpB,QACA,OACA,OACmD;CACnD,IAAI;EACF,MAAM,EAAE,oBAAoB,MAAM,OAAO;EACzC,MAAM,EAAE,KAAK,SAAS,MAAM,gBAAgB;GAAE;GAAQ;GAAO;EAAM,CAAC;EACpE,IAAI,IAAI,OAAO,OAAO;GAAE,OAAO;GAAQ,MAAM,4BAA4B,IAAI;EAAQ;EACrF,OAAO;GACL,OAAO;GACP,MAAM,wBAAwB,QAAQ,IAAI,EAAE;EAC9C;CACF,SAAS,OAAO;EACd,OAAO;GAAE,OAAO;GAAQ,MAAM,oCAAqC,MAAgB;EAAU;CAC/F;AACF;;AAGA,MAAa,aAAa,MAAc,OAAe,UAA0B;CAC/E,MAAM,SAAS,MAAM,QAAQ,MAAM,EAAE,KAAK,CAAC,CAAC;CAC5C,MAAM,IAAI,MAAM;CAChB,OAAO,aAAa,EAAE,OAAO,MAAM,IAAI,KAAK,MAAM,SAAS,KAAK,OAAO,YAAY,GAAG,MAAM,QAAQ,SAAS,MAAM,KAAK,CAAC;AAC3H"}
@@ -1 +0,0 @@
1
- export { c as transcriptLines } from "./assemble-D9GWr-HS.js";