reeval 0.11.0 → 0.12.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 (283) hide show
  1. package/README.md +3 -1
  2. package/bin/mcp-timer.cjs +224 -0
  3. package/dist/{adapter-Bwy3QxAK.js → adapter-DigeVFWC.js} +3 -3
  4. package/dist/{adapter-Bwy3QxAK.js.map → adapter-DigeVFWC.js.map} +1 -1
  5. package/dist/{agent-DpE80WPz.js → agent-CatUEo5h.js} +21 -6
  6. package/dist/{agent-DpE80WPz.js.map → agent-CatUEo5h.js.map} +1 -1
  7. package/dist/{assemble-D9GWr-HS.js → assemble-CF063ms6.js} +19 -17
  8. package/dist/assemble-CF063ms6.js.map +1 -0
  9. package/dist/assemble-CJoD_Rzr.js +1 -0
  10. package/dist/bridge/index.mjs +2 -1
  11. package/dist/{capture-BQlGHiMC.js → capture-BiD7lVaM.js} +25 -17
  12. package/dist/{capture-BQlGHiMC.js.map → capture-BiD7lVaM.js.map} +1 -1
  13. package/dist/capture-Dp3q7K7Y.js +1 -0
  14. package/dist/{cli-ClpPT8kn.js → cli-B5zQCR2r.js} +161 -116
  15. package/dist/cli-B5zQCR2r.js.map +1 -0
  16. package/dist/{cli-spec-qmEnQ25_.js → cli-spec-BXIBUlaK.js} +34 -15
  17. package/dist/cli-spec-BXIBUlaK.js.map +1 -0
  18. package/dist/cli.js +2 -2
  19. package/dist/{command-TgbzPizb.js → command-BMHXHqMT.js} +15 -14
  20. package/dist/command-BMHXHqMT.js.map +1 -0
  21. package/dist/command-C94CQNh8.js +91 -0
  22. package/dist/command-C94CQNh8.js.map +1 -0
  23. package/dist/command-CVtgyqlM.js +335 -0
  24. package/dist/command-CVtgyqlM.js.map +1 -0
  25. package/dist/{command-DbAe1Rzb.js → command-CaZgCTIw.js} +14 -17
  26. package/dist/command-CaZgCTIw.js.map +1 -0
  27. package/dist/{command-BlM0y8jN.js → command-DTgBZR0k.js} +6 -6
  28. package/dist/{command-BlM0y8jN.js.map → command-DTgBZR0k.js.map} +1 -1
  29. package/dist/{commands-CthqwkAn.js → commands-BXzIDB3X.js} +1 -1
  30. package/dist/commands-CjpGBUWr.js +666 -0
  31. package/dist/commands-CjpGBUWr.js.map +1 -0
  32. package/dist/{config-DrVSEVN0.js → config-Dv5MG7Rp.js} +27 -48
  33. package/dist/config-Dv5MG7Rp.js.map +1 -0
  34. package/dist/{context-C1mxXh80.js → context-Dgn48BqT.js} +13 -2
  35. package/dist/context-Dgn48BqT.js.map +1 -0
  36. package/dist/{contrasts-5zsj32gk.js → contrasts-CcoMLC_y.js} +3 -3
  37. package/dist/{contrasts-5zsj32gk.js.map → contrasts-CcoMLC_y.js.map} +1 -1
  38. package/dist/db-BeqRiWLl.js +602 -0
  39. package/dist/db-BeqRiWLl.js.map +1 -0
  40. package/dist/db-CJDRVQal.js +2 -0
  41. package/dist/{dist-CuY4ehEk.js → dist-CMjp3qqF.js} +2 -2
  42. package/dist/{dist-CuY4ehEk.js.map → dist-CMjp3qqF.js.map} +1 -1
  43. package/dist/{docker-DOvjji9I.js → docker-BbTlMmYi.js} +2 -2
  44. package/dist/{docker-DOvjji9I.js.map → docker-BbTlMmYi.js.map} +1 -1
  45. package/dist/{docker-D1HZDS6q.js → docker-CCXdbREk.js} +20 -4
  46. package/dist/{docker-D1HZDS6q.js.map → docker-CCXdbREk.js.map} +1 -1
  47. package/dist/{docker-DNmMPOBb.js → docker-DC69dKxB.js} +1 -1
  48. package/dist/{doctor-D2MbNO8L.js → doctor-CqttrZcs.js} +57 -22
  49. package/dist/doctor-CqttrZcs.js.map +1 -0
  50. package/dist/{egress-2-qzPvGi.js → egress-BfK_O9ce.js} +435 -30
  51. package/dist/egress-BfK_O9ce.js.map +1 -0
  52. package/dist/env-BQqj93gu.js +21 -0
  53. package/dist/env-BQqj93gu.js.map +1 -0
  54. package/dist/{environment-Cca6a4wB.js → environment-BBz1Yes9.js} +224 -10
  55. package/dist/environment-BBz1Yes9.js.map +1 -0
  56. package/dist/{evaluate-DKIl54Hb.js → evaluate-CXQ1o-pd.js} +539 -559
  57. package/dist/evaluate-CXQ1o-pd.js.map +1 -0
  58. package/dist/{evaluate-DMyaGQEj.d.ts → evaluate-yjZKUexW.d.ts} +2 -2
  59. package/dist/facts-DtENlf9s.js +898 -0
  60. package/dist/facts-DtENlf9s.js.map +1 -0
  61. package/dist/{files-BpUYBwGu.js → files-B-eUpCZ1.js} +30 -7
  62. package/dist/files-B-eUpCZ1.js.map +1 -0
  63. package/dist/files-BsQbYz2i.js +65 -0
  64. package/dist/files-BsQbYz2i.js.map +1 -0
  65. package/dist/{files-BXHZFWmx.js → files-COHQLEHE.js} +6 -17
  66. package/dist/files-COHQLEHE.js.map +1 -0
  67. package/dist/files-DqCBW7i8.js +1 -0
  68. package/dist/files-Ha-jsQXf.js +1 -0
  69. package/dist/generate-Cs2TMH_k.js +1647 -0
  70. package/dist/generate-Cs2TMH_k.js.map +1 -0
  71. package/dist/{git-Crl3b87o.js → git-DhykwgKF.js} +2 -2
  72. package/dist/{git-Crl3b87o.js.map → git-DhykwgKF.js.map} +1 -1
  73. package/dist/{harness-CEuntrla.js → harness-BAjw1fcr.js} +2 -2
  74. package/dist/{harness-CEuntrla.js.map → harness-BAjw1fcr.js.map} +1 -1
  75. package/dist/harness.d.ts +1 -1
  76. package/dist/harness.js +1 -1
  77. package/dist/{header-DHQv_ZrF.js → header-kSmWatcO.js} +10 -3
  78. package/dist/{header-DHQv_ZrF.js.map → header-kSmWatcO.js.map} +1 -1
  79. package/dist/{images-Bi3aGxb9.js → images-BmJRuTpm.js} +61 -13
  80. package/dist/images-BmJRuTpm.js.map +1 -0
  81. package/dist/index.d.ts +3 -3
  82. package/dist/index.js +4 -4
  83. package/dist/init-Bwc9byQr.js +543 -0
  84. package/dist/init-Bwc9byQr.js.map +1 -0
  85. package/dist/init-D7Y1ny1z.js +1 -0
  86. package/dist/insights-B2Xmhz9o.js +64 -0
  87. package/dist/insights-B2Xmhz9o.js.map +1 -0
  88. package/dist/{invocations-BYDPe3fV.js → invocations-CQTbP092.js} +3 -3
  89. package/dist/{invocations-BYDPe3fV.js.map → invocations-CQTbP092.js.map} +1 -1
  90. package/dist/{judge-DW_GDOmB.js → judge-Dt6KW6_O.js} +5 -3
  91. package/dist/judge-Dt6KW6_O.js.map +1 -0
  92. package/dist/judge.d.ts +7 -6
  93. package/dist/judge.js +8 -7
  94. package/dist/judge.js.map +1 -1
  95. package/dist/{live-jlfszAbb.js → live-DYd2QEyR.js} +2 -2
  96. package/dist/{live-jlfszAbb.js.map → live-DYd2QEyR.js.map} +1 -1
  97. package/dist/{model-D0IcOQao.js → model-B-mel-Gv.js} +43 -18
  98. package/dist/model-B-mel-Gv.js.map +1 -0
  99. package/dist/model-BGKYVpoj.js +1 -0
  100. package/dist/{model-DaVCY3rb.js → model-C7tSwT7f.js} +2 -2
  101. package/dist/{model-DaVCY3rb.js.map → model-C7tSwT7f.js.map} +1 -1
  102. package/dist/{model-DaX4bNLZ.js → model-CWlAqmbU.js} +135 -40
  103. package/dist/model-CWlAqmbU.js.map +1 -0
  104. package/dist/model-DHY-dfoO.js +1 -0
  105. package/dist/{node-B3ydHo6t.js → node-D0mtjRAO.js} +3 -3
  106. package/dist/{node-B3ydHo6t.js.map → node-D0mtjRAO.js.map} +1 -1
  107. package/dist/{options-C0d0AzeR.js → options-CPUW97_7.js} +7 -9
  108. package/dist/options-CPUW97_7.js.map +1 -0
  109. package/dist/{pairs-CnInRu-G.js → pairs-DP6XOJby.js} +2 -2
  110. package/dist/{pairs-CnInRu-G.js.map → pairs-DP6XOJby.js.map} +1 -1
  111. package/dist/{patch-B1bnfhN-.js → patch-D4oluWzH.js} +2 -2
  112. package/dist/{patch-B1bnfhN-.js.map → patch-D4oluWzH.js.map} +1 -1
  113. package/dist/{plan-DgQxp9yy.js → plan-OkwUcJQ9.js} +21 -8
  114. package/dist/plan-OkwUcJQ9.js.map +1 -0
  115. package/dist/plugins-CUWMnSNb.js +654 -0
  116. package/dist/plugins-CUWMnSNb.js.map +1 -0
  117. package/dist/{preflight-DlQvbySb.js → preflight-B6pY89bF.js} +1 -1
  118. package/dist/{preflight-BRzD30L5.js → preflight-Bjm7_ylE.js} +14 -10
  119. package/dist/preflight-Bjm7_ylE.js.map +1 -0
  120. package/dist/{prepare-B_y-AFMv.js → prepare-CQmK3SBn.js} +70 -23
  121. package/dist/prepare-CQmK3SBn.js.map +1 -0
  122. package/dist/prepare-DbdgtZKe.js +2 -0
  123. package/dist/{provenance-DQ0AXn6c.js → provenance-B3Y17oCC.js} +3 -3
  124. package/dist/{provenance-DQ0AXn6c.js.map → provenance-B3Y17oCC.js.map} +1 -1
  125. package/dist/providers-CXN2RFz-.js +1 -0
  126. package/dist/{providers-DoTq1jHW.js → providers-eoniqK6w.js} +24 -10
  127. package/dist/providers-eoniqK6w.js.map +1 -0
  128. package/dist/{query-BO-ux7RB.js → query-CLRZmWBT.js} +3 -3
  129. package/dist/{query-BO-ux7RB.js.map → query-CLRZmWBT.js.map} +1 -1
  130. package/dist/query-CmBDYt0_.js +1 -0
  131. package/dist/{questions-C2dym2ce.js → questions-1XOulevV.js} +6 -6
  132. package/dist/{questions-C2dym2ce.js.map → questions-1XOulevV.js.map} +1 -1
  133. package/dist/{record-BKmMvZ6O.js → record-kk9M1hj-.js} +8 -4
  134. package/dist/record-kk9M1hj-.js.map +1 -0
  135. package/dist/remarks-1521zwfW.js +38 -0
  136. package/dist/remarks-1521zwfW.js.map +1 -0
  137. package/dist/remarks-BhAV1H4V.js +1 -0
  138. package/dist/remarks-DlJCqWRs.js +278 -0
  139. package/dist/remarks-DlJCqWRs.js.map +1 -0
  140. package/dist/{remote-CPPW86Q9.js → remote-cE2VWfkJ.js} +3 -3
  141. package/dist/{remote-CPPW86Q9.js.map → remote-cE2VWfkJ.js.map} +1 -1
  142. package/dist/resolve-C4zeccCH.js +724 -0
  143. package/dist/resolve-C4zeccCH.js.map +1 -0
  144. package/dist/resolve-D30yZYmB.js +1 -0
  145. package/dist/{results-BE2f-1XS.js → results-Drtt0uFl.js} +33 -8
  146. package/dist/results-Drtt0uFl.js.map +1 -0
  147. package/dist/{resume-Ca1c8vix.js → resume-BEFazUfy.js} +4 -4
  148. package/dist/{resume-Ca1c8vix.js.map → resume-BEFazUfy.js.map} +1 -1
  149. package/dist/rules-BFzQqPIm.js +317 -0
  150. package/dist/rules-BFzQqPIm.js.map +1 -0
  151. package/dist/run-BeMy92Us.js +88 -0
  152. package/dist/run-BeMy92Us.js.map +1 -0
  153. package/dist/{sandbox-DLrsvu7U.js → sandbox-CQaJj7n9.js} +2 -2
  154. package/dist/{sandbox-DLrsvu7U.js.map → sandbox-CQaJj7n9.js.map} +1 -1
  155. package/dist/sandbox.d.ts +1 -1
  156. package/dist/sandbox.js +1 -1
  157. package/dist/server-V4-2w0l8.js +1 -0
  158. package/dist/{server-TUY5xA_A.js → server-xK0les4f.js} +8 -8
  159. package/dist/{server-TUY5xA_A.js.map → server-xK0les4f.js.map} +1 -1
  160. package/dist/source-BDow_oW8.js +1 -0
  161. package/dist/{source-DJGS0a0u.js → source-Q1hEKbCs.js} +2 -2
  162. package/dist/{source-DJGS0a0u.js.map → source-Q1hEKbCs.js.map} +1 -1
  163. package/dist/src-B9L9yGKI.js +1 -0
  164. package/dist/{src-CLoOMVWI.js → src-Bcah6ZkT.js} +1 -1
  165. package/dist/{src-DvCg0NBs.js → src-BhmaorOU.js} +28 -6
  166. package/dist/{src-DvCg0NBs.js.map → src-BhmaorOU.js.map} +1 -1
  167. package/dist/{src-CF17Ug08.js → src-C0CeKiLU.js} +19 -4
  168. package/dist/{src-CF17Ug08.js.map → src-C0CeKiLU.js.map} +1 -1
  169. package/dist/src-C0xowZ3C.js +2 -0
  170. package/dist/src-CHIfIKUu.js +2 -0
  171. package/dist/src-DLtyz4w5.js +2 -0
  172. package/dist/src-DPIjmReZ.js +2 -0
  173. package/dist/{src-BxfCKA3_.js → src-DXNh5mTr.js} +1 -1
  174. package/dist/{src-FGXhkEkH.js → src-DiLMkIr9.js} +142 -13
  175. package/dist/src-DiLMkIr9.js.map +1 -0
  176. package/dist/{src-ftu5wPSt.js → src-LekQrr_S.js} +209 -29
  177. package/dist/src-LekQrr_S.js.map +1 -0
  178. package/dist/src-bCnsA6Vp.js +2 -0
  179. package/dist/{src-u8_ixn_F.js → src-cbCb-MPy.js} +20 -4
  180. package/dist/src-cbCb-MPy.js.map +1 -0
  181. package/dist/{src-DvK0EIZx.js → src-qGoFkuJF.js} +55 -6
  182. package/dist/{src-DvK0EIZx.js.map → src-qGoFkuJF.js.map} +1 -1
  183. package/dist/{src-DSYYPEOj.js → src-ynBVosfX.js} +1 -1
  184. package/dist/state-BQR_BCm4.js +1 -0
  185. package/dist/{state-DfpHox6b.js → state-BmZ8QVZ8.js} +12 -12
  186. package/dist/{state-DfpHox6b.js.map → state-BmZ8QVZ8.js.map} +1 -1
  187. package/dist/studio-app/assets/{index-CBkhNAv8.js → index-CnYJijyI.js} +9 -9
  188. package/dist/studio-app/index.html +1 -1
  189. package/dist/suite-BaHPmAGy.js +1 -0
  190. package/dist/{suite-Cw_7G2RM.js → suite-C8sw2pox.js} +80 -28
  191. package/dist/suite-C8sw2pox.js.map +1 -0
  192. package/dist/{summary-BUKfU-9l.js → summary-0oQNGskv.js} +273 -47
  193. package/dist/summary-0oQNGskv.js.map +1 -0
  194. package/dist/testing.d.ts +2 -2
  195. package/dist/testing.js +2 -2
  196. package/dist/{text-gEcKjAyp.js → text-CrVy5ioL.js} +18 -2
  197. package/dist/text-CrVy5ioL.js.map +1 -0
  198. package/dist/{transcript-BNNANU8A.js → transcript-BTxJpW4R.js} +2 -2
  199. package/dist/{transcript-BNNANU8A.js.map → transcript-BTxJpW4R.js.map} +1 -1
  200. package/dist/types-C5vI3g1C.js.map +1 -1
  201. package/dist/{types-BYdlwMwo.d.ts → types-GraZtfHN.d.ts} +848 -34
  202. package/dist/usage-BDo2q_yu.js +1 -0
  203. package/dist/{command-Bj39y-Wm.js → validate-BdoXUuL_.js} +15 -372
  204. package/dist/validate-BdoXUuL_.js.map +1 -0
  205. package/dist/view/index.d.ts +20 -257
  206. package/dist/view/index.js +7 -6
  207. package/dist/{views-B8w2J-gD.js → views-BoUoX4_A.js} +8 -98
  208. package/dist/views-BoUoX4_A.js.map +1 -0
  209. package/dist/views-noVQNCUP.js +2 -0
  210. package/dist/{worker-entry-DNnveLqx.js → worker-entry-D0-GErmU.js} +2 -2
  211. package/dist/{worker-entry-DNnveLqx.js.map → worker-entry-D0-GErmU.js.map} +1 -1
  212. package/dist/{workspace-C_X0tdv6.js → workspace-B90YDU_a.js} +1 -1
  213. package/dist/{workspace-C4RA3srV.js → workspace-tjZFkjxC.js} +4 -4
  214. package/dist/{workspace-C4RA3srV.js.map → workspace-tjZFkjxC.js.map} +1 -1
  215. package/package.json +3 -1
  216. package/skills/eval-rubric/SKILL.md +130 -0
  217. package/dist/agent-D483ru7D.js +0 -334
  218. package/dist/agent-D483ru7D.js.map +0 -1
  219. package/dist/assemble-D5KGrwnJ.js +0 -1
  220. package/dist/assemble-D9GWr-HS.js.map +0 -1
  221. package/dist/capture-CYGLpWxR.js +0 -1
  222. package/dist/cli-ClpPT8kn.js.map +0 -1
  223. package/dist/cli-spec-qmEnQ25_.js.map +0 -1
  224. package/dist/command-Bj39y-Wm.js.map +0 -1
  225. package/dist/command-C-cVjlny.js +0 -1
  226. package/dist/command-DbAe1Rzb.js.map +0 -1
  227. package/dist/command-TgbzPizb.js.map +0 -1
  228. package/dist/commands-YUwlyTbr.js +0 -228
  229. package/dist/commands-YUwlyTbr.js.map +0 -1
  230. package/dist/config-DrVSEVN0.js.map +0 -1
  231. package/dist/context-C1mxXh80.js.map +0 -1
  232. package/dist/db-CKg5NtiW.js +0 -2
  233. package/dist/db-DfhipHEF.js +0 -1416
  234. package/dist/db-DfhipHEF.js.map +0 -1
  235. package/dist/doctor-D2MbNO8L.js.map +0 -1
  236. package/dist/egress-2-qzPvGi.js.map +0 -1
  237. package/dist/environment-Cca6a4wB.js.map +0 -1
  238. package/dist/evaluate-DKIl54Hb.js.map +0 -1
  239. package/dist/files-BXHZFWmx.js.map +0 -1
  240. package/dist/files-BpUYBwGu.js.map +0 -1
  241. package/dist/files-Bw8lWEjg.js +0 -1
  242. package/dist/files-D6J0iSdx.js +0 -1
  243. package/dist/images-Bi3aGxb9.js.map +0 -1
  244. package/dist/init-Cl3f3NBT.js +0 -360
  245. package/dist/init-Cl3f3NBT.js.map +0 -1
  246. package/dist/init-fhOXED8F.js +0 -1
  247. package/dist/judge-DW_GDOmB.js.map +0 -1
  248. package/dist/model-CXhrziBe.js +0 -1
  249. package/dist/model-D0IcOQao.js.map +0 -1
  250. package/dist/model-DaX4bNLZ.js.map +0 -1
  251. package/dist/model-_bxNrk2h.js +0 -1
  252. package/dist/options-C0d0AzeR.js.map +0 -1
  253. package/dist/plan-DgQxp9yy.js.map +0 -1
  254. package/dist/preflight-BRzD30L5.js.map +0 -1
  255. package/dist/prepare-B_y-AFMv.js.map +0 -1
  256. package/dist/prepare-DCKTLHN3.js +0 -2
  257. package/dist/providers-B9yTdIqF.js +0 -1
  258. package/dist/providers-DoTq1jHW.js.map +0 -1
  259. package/dist/query-CRQfsw0e.js +0 -1
  260. package/dist/record-BKmMvZ6O.js.map +0 -1
  261. package/dist/results-BE2f-1XS.js.map +0 -1
  262. package/dist/server-Dp8eOeK5.js +0 -1
  263. package/dist/source-DdbLGR1M.js +0 -1
  264. package/dist/src-CcrQbpG8.js +0 -2
  265. package/dist/src-DCFtJRp0.js +0 -2
  266. package/dist/src-DYO3DdnQ.js +0 -1
  267. package/dist/src-FGXhkEkH.js.map +0 -1
  268. package/dist/src-WD-zgQYZ.js +0 -2
  269. package/dist/src-_oI9AePb.js +0 -2
  270. package/dist/src-ftu5wPSt.js.map +0 -1
  271. package/dist/src-qsKCqv7a.js +0 -2
  272. package/dist/src-u8_ixn_F.js.map +0 -1
  273. package/dist/state-DpAxYyED.js +0 -1
  274. package/dist/suite-Cw_7G2RM.js.map +0 -1
  275. package/dist/suite-DamAEnNF.js +0 -1
  276. package/dist/summary-BUKfU-9l.js.map +0 -1
  277. package/dist/summary-Baa4rTHS.js +0 -192
  278. package/dist/summary-Baa4rTHS.js.map +0 -1
  279. package/dist/text-gEcKjAyp.js.map +0 -1
  280. package/dist/tools-DLHgetpx.js +0 -249
  281. package/dist/tools-DLHgetpx.js.map +0 -1
  282. package/dist/views-B8w2J-gD.js.map +0 -1
  283. package/dist/views-DblnI3kA.js +0 -2
@@ -1,25 +1,67 @@
1
- import { n as clip, r as formatDuration } from "./text-gEcKjAyp.js";
1
+ import { l as sha256 } from "./ids-Bp6ut7ZD.js";
2
+ import { a as oneLine, i as formatDuration, n as clip, r as fenced } from "./text-CrVy5ioL.js";
2
3
  import { n as formatTokens } from "./usage-CleNKkly.js";
3
- import { D as runtimeLabel, F as checkLabels, R as commandLine, S as languageLabel, V as labelledJudgements, _ as harnessLabel, l as evalMarkOutcome, lt as formatSeconds, st as formatCount, x as isUngatedMiss } from "./model-DaX4bNLZ.js";
4
- import { s as suiteResult } from "./suite-Cw_7G2RM.js";
5
- import { o as warnings } from "./state-DfpHox6b.js";
4
+ import { D as runtimeLabel, F as checkLabels, R as commandLine, S as languageLabel, V as labelledJudgements, _ as harnessLabel, l as evalMarkOutcome, lt as formatSeconds, st as formatCount, x as isUngatedMiss } from "./model-CWlAqmbU.js";
5
+ import { i as countedOf, l as suiteResult, n as cancelledOf } from "./suite-C8sw2pox.js";
6
+ import { a as fromModel } from "./insights-B2Xmhz9o.js";
7
+ import { o as warnings } from "./state-BmZ8QVZ8.js";
6
8
  import { t as colors } from "./colors-QV9dFVhN.js";
9
+ import { r as remarkLines } from "./remarks-1521zwfW.js";
10
+ //#region src/insights/hash.ts
11
+ /** JSON with every object's keys sorted. */
12
+ function canonicalJson(value) {
13
+ return JSON.stringify(value, (_key, v) => v && typeof v === "object" && !Array.isArray(v) ? Object.fromEntries(Object.entries(v).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0)) : v);
14
+ }
15
+ const factsHash = (suite) => `sha256:${sha256(canonicalJson(suite))}`;
16
+ //#endregion
7
17
  //#region src/ui/layout.ts
8
18
  /** The block for an eval: a pure function of its job and its shape. */
9
- function layout(_job, across, isFamily, isCompare) {
19
+ function layout(job, across, isFamily, isCompare) {
10
20
  if (isCompare) return {
11
21
  kind: "regressions",
12
22
  family: false
13
23
  };
14
24
  return {
15
- kind: across === "change" ? "measure" : across === "harness" ? "harnesses" : across === "both" ? "both" : "results",
25
+ kind: job === "choose" && across === "none" ? "choose" : across === "change" ? "measure" : across === "harness" ? "harnesses" : across === "both" ? "both" : "results",
16
26
  family: isFamily
17
27
  };
18
28
  }
29
+ const moved = (c) => c.effect === "better" || c.effect === "worse";
30
+ /** A cell the agent failed, or that errored; not one whose only fails the interrupt cancelled. */
31
+ const failedCell = (c) => c.outcome === "fail" && c.failed > cancelledOf(c) || c.outcome === "infra_error";
32
+ /**
33
+ * The insight slots an eval's layout opens: which rows take a sentence (a failing case; an arm
34
+ * that failed or moved; a failing harness), whether it has findings (a choose or finish eval that
35
+ * measures a change), and whether it has named tools (a choose eval). An `other` eval takes only
36
+ * its answer, unless it compares harnesses, which takes a sentence on any job. What the run's
37
+ * interrupt cancelled opens nothing: the agent didn't fail it, and its effects aren't measured.
38
+ */
39
+ function slotsOf(job, e) {
40
+ const known = job !== "other";
41
+ const measured = e.outcome !== "cancelled";
42
+ const harnesses = e.across === "harness" || e.across === "both";
43
+ const rows = [];
44
+ if (known || harnesses) {
45
+ if (e.cases) {
46
+ for (const k of e.cases) if (k.outcome !== "pass" && k.outcome !== "cancelled") rows.push(k.path);
47
+ for (const p of e.pooled ?? []) {
48
+ const pooledMoved = measured && (p.effect === "better" || p.effect === "worse");
49
+ if (p.outcome === "fail" || pooledMoved) rows.push(p.path);
50
+ }
51
+ } else if (e.across === "harness") {
52
+ for (const c of e.cells ?? []) if (failedCell(c)) rows.push(c.path);
53
+ } else if (e.across === "change" || e.across === "both") {
54
+ for (const c of e.cells ?? []) if (failedCell(c) || measured && moved(c)) rows.push(c.path);
55
+ }
56
+ }
57
+ return {
58
+ rows,
59
+ findings: known && e.across === "change" && measured,
60
+ namedTools: job === "choose"
61
+ };
62
+ }
19
63
  /** The last line of a run's output while no analysis model writes its answers. */
20
64
  const NO_MODEL_HINT = "Set analysis.model in reeval.config.ts for answers to what each eval asks.";
21
- /** Where a block's name starts, after its verdict word. */
22
- const HEAD = 17;
23
65
  /** The narrowest a row's label column is, so short labels line up under the name. */
24
66
  const LABEL = 17;
25
67
  const ASSERTION_MAX = 160;
@@ -30,6 +72,7 @@ const VERDICT = {
30
72
  pass: "pass",
31
73
  fail: "fail",
32
74
  infra_error: "infra error",
75
+ cancelled: "cancelled",
33
76
  skipped: "skipped"
34
77
  };
35
78
  const EFFECT = {
@@ -65,7 +108,7 @@ function table(items, width = LABEL) {
65
108
  }).join(" ")}`.trimEnd();
66
109
  });
67
110
  }
68
- const paintOutcome = (c, o) => o === "pass" ? c.green : o === "fail" ? c.red : o === "infra_error" ? c.yellow : c.dim;
111
+ const paintOutcome = (c, o) => o === "pass" ? c.green : o === "fail" ? c.red : o === "infra_error" || o === "cancelled" ? c.yellow : c.dim;
69
112
  /** A study (every cell `gate: 'none'`) passes whatever it saw, so it never reads `pass`. */
70
113
  function verdict(c, e) {
71
114
  if (e.todo) return t("todo", c.dim);
@@ -79,8 +122,8 @@ const plural = (n, one, many = `${one}s`) => `${n} ${n === 1 ? one : many}`;
79
122
  * cancelled attempt is recorded as a fail, but the agent didn't fail it, so it's named apart.
80
123
  */
81
124
  function cellCount(cell) {
82
- const cancelled = cell.errors.filter((err) => err.kind === "aborted").reduce((n, err) => n + err.attempts, 0);
83
- const counted = Math.max(0, cell.passed + cell.failed - cancelled);
125
+ const cancelled = cancelledOf(cell);
126
+ const counted = countedOf(cell);
84
127
  const parts = [
85
128
  counted > 0 ? `${cell.passed} of ${counted}` : "",
86
129
  cell.infraError ? plural(cell.infraError, "infra error") : "",
@@ -118,7 +161,7 @@ const ERROR_KIND = {
118
161
  const errorKind = (err) => ERROR_KIND[err.kind];
119
162
  const errorText = (err) => `${clip(err.message, ASSERTION_MAX)}${err.attempts > 1 ? ` (${plural(err.attempts, "try", "tries")})` : ""}`;
120
163
  /** The evidence under a failing cell: its failed and not-run checks, its errors, `+N more passed`. */
121
- function evidence(c, cell, indent) {
164
+ function evidence(c, cell, indent, more = true) {
122
165
  const single = cell.passed + cell.failed + cell.infraError <= 1;
123
166
  const items = [];
124
167
  for (const k of cell.checks.filter(failing)) {
@@ -138,7 +181,7 @@ function evidence(c, cell, indent) {
138
181
  cells: [errorKind(err), t(errorText(err), c.dim)]
139
182
  });
140
183
  const passed = cell.checks.filter((k) => !failing(k)).length;
141
- if (passed && items.length) items.push({
184
+ if (more && passed && items.length) items.push({
142
185
  indent,
143
186
  free: t(`+${passed} more passed`, c.dim)
144
187
  });
@@ -226,6 +269,70 @@ function effortTable(c, cells, label, indent, failed, width) {
226
269
  ]
227
270
  }))], width);
228
271
  }
272
+ const NO_SLOTS = {
273
+ row: () => null,
274
+ named: () => [],
275
+ subject: null
276
+ };
277
+ const triesOf = (cells) => cells.reduce((n, x) => n + countedOf(x), 0);
278
+ /** `named`, then a row per tool with the tries that named it. */
279
+ function namedItems(c, slots, cells, indent) {
280
+ const named = slots.named(cells);
281
+ if (!named.length) return [];
282
+ const of = triesOf(cells);
283
+ return [{
284
+ indent,
285
+ free: t("named", c.dim)
286
+ }, ...named.map((n) => ({
287
+ indent: indent + 2,
288
+ cells: [n.tool, `${n.tries} of ${of}`]
289
+ }))];
290
+ }
291
+ /** The tries that named the subject, over the cells' tries: `0 of 4`; empty with no subject. */
292
+ function subjectTries(slots, cells) {
293
+ if (!slots.subject) return "";
294
+ const subject = slots.subject.toLowerCase();
295
+ return `${slots.named(cells).find((x) => x.tool.toLowerCase() === subject)?.tries ?? 0} of ${triesOf(cells)}`;
296
+ }
297
+ /** Web searches or fetches over the tries, when every try reported a number. */
298
+ function webItems(cells, indent) {
299
+ const row = (name, counts) => counts.length && counts.every((x) => x !== null) ? [{
300
+ indent,
301
+ cells: [name, String(counts.reduce((a, b) => (a ?? 0) + (b ?? 0), 0))]
302
+ }] : [];
303
+ return [...row("searches", cells.flatMap((x) => x.searches)), ...row("fetches", cells.flatMap((x) => x.fetches))];
304
+ }
305
+ /** A choose case that missed: its failed checks, the tools named, its searches, then `+N more passed`. */
306
+ function chooseDetail(c, cells, indent, slots) {
307
+ const checks = cells.flatMap((cell) => evidence(c, cell, indent, false));
308
+ const passed = cells.flatMap((x) => x.checks.filter((k) => !failing(k))).length;
309
+ return [
310
+ ...checks,
311
+ ...namedItems(c, slots, cells, indent),
312
+ ...webItems(cells, indent),
313
+ ...passed ? [{
314
+ indent,
315
+ free: t(`+${passed} more passed`, c.dim)
316
+ }] : []
317
+ ];
318
+ }
319
+ /** Choose a tool, on a single eval: the subject's count, and on a miss the detail. */
320
+ function chooseBody(c, cells, indent, slots) {
321
+ const items = slots.subject ? [{
322
+ indent,
323
+ cells: [slots.subject, subjectTries(slots, cells)]
324
+ }] : [];
325
+ if (!cells.every(clean)) items.push(...chooseDetail(c, cells, indent, slots));
326
+ return table(items);
327
+ }
328
+ /** A row's sentence, as a line under it. */
329
+ const rowLine = (slots, path, indent) => {
330
+ const text = slots.row(path);
331
+ return text ? [{
332
+ indent,
333
+ free: text
334
+ }] : [];
335
+ };
229
336
  /** Measure a change: a row per arm with its effect, the check matrix and the effort table. */
230
337
  function measureBody(c, cells, indent, o) {
231
338
  const label = labeller(cells, ["arm", "sandbox"]);
@@ -243,6 +350,7 @@ function measureBody(c, cells, indent, o) {
243
350
  ...effect.text ? [effect] : []
244
351
  ]
245
352
  });
353
+ arms.push(...rowLine(o.slots, cell.path, indent + 2), ...namedItems(c, o.slots, [cell], indent + 2));
246
354
  const stats = o.verbose && o.effects ? statsLine(cell, cells) : null;
247
355
  if (stats) arms.push({
248
356
  indent: indent + 2,
@@ -263,7 +371,7 @@ function measureBody(c, cells, indent, o) {
263
371
  ];
264
372
  }
265
373
  /** A row per cell (harness, or sandbox), the ones that didn't pass outright with their evidence. */
266
- function cellRows(c, cells, heading, indent) {
374
+ function cellRows(c, cells, heading, indent, slots) {
267
375
  const label = labeller(cells, heading === "harness" ? ["harness", "sandbox"] : ["sandbox"]);
268
376
  const items = [{
269
377
  indent,
@@ -274,7 +382,8 @@ function cellRows(c, cells, heading, indent) {
274
382
  indent,
275
383
  cells: [label(cell), cellCount(cell)]
276
384
  });
277
- if (!clean(cell)) items.push(...evidence(c, cell, indent + 2));
385
+ items.push(...rowLine(slots, cell.path, indent + 2));
386
+ if (!clean(cell)) items.push(...namedItems(c, slots, [cell], indent + 2), ...evidence(c, cell, indent + 2));
278
387
  }
279
388
  return table(items);
280
389
  }
@@ -288,9 +397,10 @@ function bothBody(c, cells, indent, o) {
288
397
  /** The rows under an eval's head (or a family case's), by what its cells compare. */
289
398
  function cellsBody(c, kind, cells, indent, o) {
290
399
  if (kind === "measure") return measureBody(c, cells, indent, o);
291
- if (kind === "harnesses") return cellRows(c, cells, "harness", indent);
400
+ if (kind === "harnesses") return cellRows(c, cells, "harness", indent, o.slots);
292
401
  if (kind === "both") return bothBody(c, cells, indent, o);
293
- if (cells.length > 1) return cellRows(c, cells, "sandbox", indent);
402
+ if (kind === "choose") return chooseBody(c, cells, indent, o.slots);
403
+ if (cells.length > 1) return cellRows(c, cells, "sandbox", indent, o.slots);
294
404
  return resultsBody(c, cells[0], indent);
295
405
  }
296
406
  /** A single eval with one cell: its tries, and on anything but a clean pass, the evidence. */
@@ -347,11 +457,12 @@ function pooledStats(p, label) {
347
457
  /**
348
458
  * A family: its template, then a row per case. With one cell a case is a row with its count;
349
459
  * with more, the case is outer and its cells inner, laid out as a single eval's are, and a
350
- * pooled `all cases` row sums each cell's counts with its variant's pooled effect.
460
+ * pooled `all cases` row sums each cell's counts with its variant's pooled effect. A choose
461
+ * family's case row carries the subject's count instead, and a missed case the tools named.
351
462
  */
352
- function familyBlock(c, e, kind, verbose) {
463
+ function familyBlock(c, e, kind, verbose, slots) {
353
464
  const cases = e.cases ?? [];
354
- const columns = cases[0]?.cells ?? [];
465
+ const columns = [...new Map(cases.flatMap((k) => k.cells).map((cell) => [cell.key, cell])).values()];
355
466
  const pooled = e.pooled ?? [];
356
467
  const pooledOutcome = pooled.some((p) => p.outcome === "fail") ? "fail" : "pass";
357
468
  const caseWord = (k) => verdict(c, {
@@ -366,8 +477,40 @@ function familyBlock(c, e, kind, verbose) {
366
477
  text: `${word.text.padEnd(wordWidth)} ${name}`,
367
478
  paint: (s) => `${show(word)}${s.slice(word.text.length)}`
368
479
  });
369
- const head = `${" ".repeat(HEAD)}${e.template ?? e.name}`;
480
+ const head = `${" ".repeat(17)}${e.template ?? e.name}`;
370
481
  const questions = questionLines(c, e.questions, 2);
482
+ if (kind === "choose") {
483
+ const subject = slots.subject ? [t(slots.subject, c.dim)] : [];
484
+ const items = [{
485
+ indent: 2,
486
+ cells: [
487
+ "case",
488
+ t("pass", c.dim),
489
+ ...subject
490
+ ]
491
+ }];
492
+ for (const k of cases) {
493
+ const passed = k.cells.reduce((n, x) => n + x.passed, 0);
494
+ const tries = triesOf(k.cells);
495
+ const count = k.cells.length === 1 && k.cells[0] ? cellCount(k.cells[0]) : tries ? `${passed} of ${tries}` : "not run";
496
+ const named = slots.subject && tries ? [subjectTries(slots, k.cells)] : [];
497
+ items.push({
498
+ indent: 2,
499
+ cells: [
500
+ lead(caseWord(k), k.label),
501
+ count,
502
+ ...named
503
+ ]
504
+ });
505
+ items.push(...rowLine(slots, k.path, 4));
506
+ if (!k.cells.every(clean)) items.push(...chooseDetail(c, k.cells, 4, slots));
507
+ }
508
+ return [
509
+ head,
510
+ ...table(items),
511
+ ...questions
512
+ ];
513
+ }
371
514
  if (columns.length <= 1) {
372
515
  const items = [];
373
516
  for (const k of cases) {
@@ -376,6 +519,7 @@ function familyBlock(c, e, kind, verbose) {
376
519
  indent: 2,
377
520
  cells: [lead(caseWord(k), k.label), cell ? cellCount(cell) : ""]
378
521
  });
522
+ items.push(...rowLine(slots, k.path, 4));
379
523
  if (cell && !clean(cell)) items.push(...evidence(c, cell, 4));
380
524
  }
381
525
  return [
@@ -387,11 +531,14 @@ function familyBlock(c, e, kind, verbose) {
387
531
  const out = [head];
388
532
  for (const k of cases) {
389
533
  out.push(` ${show(lead(caseWord(k), k.label))}`);
534
+ const sentence = slots.row(k.path);
535
+ if (sentence) out.push(` ${sentence}`);
390
536
  const failed = k.outcome !== "pass";
391
537
  out.push(...cellsBody(c, kind, k.cells, 4, {
392
538
  failed,
393
539
  verbose,
394
- effects: false
540
+ effects: false,
541
+ slots
395
542
  }));
396
543
  }
397
544
  if (pooled.length) {
@@ -416,6 +563,7 @@ function familyBlock(c, e, kind, verbose) {
416
563
  ...effect.text ? [effect] : []
417
564
  ]
418
565
  });
566
+ if (p) items.push(...rowLine(slots, p.path, 6));
419
567
  if (p && verbose) items.push({
420
568
  indent: 6,
421
569
  free: t(pooledStats(p, label(col)), c.dim)
@@ -425,40 +573,84 @@ function familyBlock(c, e, kind, verbose) {
425
573
  }
426
574
  return [...out, ...questions];
427
575
  }
428
- /** One eval's block, laid out as `layout()` says. */
429
- function evalBlock(c, e, verbose = false) {
430
- const shape = layout("other", e.across, e.family, false);
431
- if (shape.family) return familyBlock(c, e, shape.kind, verbose);
576
+ /** The slots an eval's insight fills, or none without one. */
577
+ function slotsFor(insight) {
578
+ if (!insight) return NO_SLOTS;
579
+ const rows = new Map((insight.rows ?? []).map((r) => [r.row, oneLine(r.text)]));
580
+ const choose = insight.intent.job === "choose";
581
+ const named = (cells) => {
582
+ if (!choose) return [];
583
+ const counts = /* @__PURE__ */ new Map();
584
+ for (const n of insight.namedTools ?? []) {
585
+ if (!cells.some((cell) => n.attempt.startsWith(`${cell.path}#`))) continue;
586
+ for (const tool of new Set(n.tools.map(oneLine))) counts.set(tool, (counts.get(tool) ?? 0) + 1);
587
+ }
588
+ return [...counts].map(([tool, tries]) => ({
589
+ tool,
590
+ tries
591
+ })).sort((a, b) => b.tries - a.tries || (a.tool < b.tool ? -1 : 1));
592
+ };
593
+ return {
594
+ row: (path) => rows.get(path) ?? null,
595
+ named,
596
+ subject: choose && insight.intent.subject.tool ? oneLine(insight.intent.subject.tool) : null
597
+ };
598
+ }
599
+ /** One eval's block, laid out as `layout()` says for its job, with its insight's sentences. */
600
+ function evalBlock(c, e, verbose = false, insight = null) {
601
+ const shape = layout(insight?.intent.job ?? "other", e.across, e.family, false);
602
+ const slots = slotsFor(insight);
603
+ const answer = insight?.answer ? [` ${oneLine(insight.answer.text)}`] : [];
604
+ const findings = (insight?.findings ?? []).map((f) => ` ${oneLine(f.text)}`);
605
+ if (shape.family) {
606
+ const [head = "", ...rest] = familyBlock(c, e, shape.kind, verbose, slots);
607
+ return [
608
+ head,
609
+ ...answer,
610
+ ...rest,
611
+ ...findings
612
+ ];
613
+ }
432
614
  const v = verdict(c, e);
433
615
  const name = `${e.group.length ? `${e.group.join(" › ")} › ` : ""}${e.name}`;
434
- const head = `${show(v)}${" ".repeat(Math.max(2, HEAD - v.text.length))}${name}`;
616
+ const head = `${show(v)}${" ".repeat(Math.max(2, 17 - v.text.length))}${name}`;
435
617
  const cells = e.cells ?? [];
436
618
  if (e.todo || e.outcome === "skipped" || !cells.length) return [head];
437
619
  const failed = e.outcome !== "pass";
620
+ const body = cellsBody(c, shape.kind, cells, 2, {
621
+ failed,
622
+ verbose,
623
+ effects: true,
624
+ slots
625
+ });
438
626
  return [
439
627
  head,
440
- ...cellsBody(c, shape.kind, cells, 2, {
441
- failed,
442
- verbose,
443
- effects: true
444
- }),
628
+ ...answer,
629
+ ...body,
630
+ ...findings,
445
631
  ...questionLines(c, e.questions, 2)
446
632
  ];
447
633
  }
448
- /** `5 fail · 2 pass`: fail first, every case counting one, zeros left out. */
634
+ /**
635
+ * `5 fail · 2 pass · 1 cancelled`: errors outside any eval and fails first, every case counting
636
+ * one, zeros left out.
637
+ */
449
638
  function tallyLine(c, tally) {
450
639
  const parts = [
640
+ tally.errors ? c.red(plural(tally.errors, "run error")) : "",
451
641
  tally.fail ? c.red(`${tally.fail} fail`) : "",
452
642
  tally.pass ? c.green(`${tally.pass} pass`) : "",
453
643
  tally.infraError ? c.yellow(plural(tally.infraError, "infra error")) : "",
644
+ tally.cancelled ? c.yellow(`${tally.cancelled} cancelled`) : "",
454
645
  tally.skipped ? c.dim(`${tally.skipped} skipped`) : ""
455
646
  ].filter(Boolean);
456
647
  return parts.length ? parts.join(c.dim(" · ")) : "no evals ran";
457
648
  }
458
649
  /** Every eval's block in file-path order, then source order; a blank line around each longer one. */
459
- function renderBlocks(suite, opts) {
650
+ function renderBlocks(suite, opts, insights = null) {
460
651
  const c = colors(opts.color);
461
- const blocks = suite.files.flatMap((f) => [...f.evals].sort((a, b) => a.order - b.order).map((e) => evalBlock(c, e, opts.verbose)));
652
+ const byEval = new Map((insights?.evals ?? []).map((x) => [x.evalId, x]));
653
+ const blocks = suite.files.flatMap((f) => [...f.evals].sort((a, b) => a.order - b.order).map((e) => evalBlock(c, e, opts.verbose, byEval.get(e.path) ?? null)));
462
654
  const out = [];
463
655
  blocks.forEach((block, i) => {
464
656
  const prev = blocks[i - 1];
@@ -467,15 +659,51 @@ function renderBlocks(suite, opts) {
467
659
  });
468
660
  return out;
469
661
  }
470
- /** A run's result: its blocks, then the tally and, with no analysis model, the hint. `insights` arrives with a model. */
471
- function render(suite, _insights, opts) {
472
- const blocks = renderBlocks(suite, opts);
662
+ /** Insights for these facts: null when there are none, they failed, or they were written for other facts. */
663
+ const freshInsights = (suite, insights) => insights && !insights.error && insights.factsHash === factsHash(suite) ? insights : null;
664
+ /** Why a run's insights didn't print, or with `-v` what wrote them. */
665
+ function insightNotes(c, suite, insights, fresh, verbose) {
666
+ if (!insights || !fromModel(insights)) return [];
667
+ if (insights.error) return [c.yellow(`insights failed (${clip(insights.error, 200)})`)];
668
+ if (!fresh) return [c.dim(`insights left out: insights.json was written for other facts than this run's; delete it and run reeval analyze ${suite.runId} --insights`)];
669
+ const skipped = insights.budget?.skipped.length ?? 0;
670
+ const failed = insights.failed ?? [];
671
+ const stopped = insights.stopped;
672
+ const finish = `reeval analyze ${suite.runId} --insights to finish`;
673
+ const budget = [
674
+ ...skipped ? [c.yellow(`insights skipped for ${plural(skipped, "eval")}: analysis.maxTokens (${formatTokens(insights.budget?.maxTokens ?? 0)}) reached — raise it in reeval.config.ts, or ${finish}`)] : [],
675
+ ...failed[0] ? [c.yellow(`insights failed for ${plural(failed.length, "eval")} (${clip(failed[0].error, 160)}), so they print their facts: ${finish}`)] : [],
676
+ ...stopped ? [c.yellow(`insights stopped: ${plural(stopped.skipped.length, "eval")} skipped (${stopped.signal === "SIGTERM" ? "SIGTERM" : "Ctrl-C"}): ${finish}`)] : []
677
+ ];
678
+ if (!verbose) return budget;
679
+ const { dropped, regenerated } = insights.validation;
680
+ return [...budget, c.dim([
681
+ `insights by ${insights.model} (${insights.promptVersion})`,
682
+ `${plural(dropped, "sentence")} removed`,
683
+ ...regenerated ? [`${regenerated} asked again`] : [],
684
+ `${formatTokens(insights.usage.inputTokens)} in, ${formatTokens(insights.usage.outputTokens)} out${insights.usage.reasoningTokens ? ` (${formatTokens(insights.usage.reasoningTokens)} reasoning)` : ""}`
685
+ ].join(" · "))];
686
+ }
687
+ /**
688
+ * A run's result: its errors outside any eval, its blocks with their insights, the headline,
689
+ * then the tally and, with no analysis model, the hint, then the remarks. Insights written for
690
+ * other facts are left out with a note; remarks come from the record and history, not a model,
691
+ * so they print either way.
692
+ */
693
+ function render(suite, insights, opts) {
694
+ const c = colors(opts.color);
695
+ const fresh = freshInsights(suite, insights);
696
+ const blocks = renderBlocks(suite, opts, fresh);
473
697
  return [
698
+ ...suite.errors.flatMap((error) => [c.red(`error: ${error}`), ""]),
474
699
  ...blocks,
475
700
  ...blocks.length ? [""] : [],
701
+ ...fresh?.headline ? [oneLine(fresh.headline.text)] : [],
702
+ ...insightNotes(c, suite, insights, fresh, opts.verbose),
476
703
  ...opts.notes ?? [],
477
- tallyLine(colors(opts.color), suite.tally),
478
- ...opts.hint ? [NO_MODEL_HINT] : []
704
+ tallyLine(c, suite.tally),
705
+ ...opts.hint ? [NO_MODEL_HINT] : [],
706
+ ...remarkLines(c, suite, insights, opts.verbose)
479
707
  ];
480
708
  }
481
709
  //#endregion
@@ -525,13 +753,11 @@ function renderSummary(run, opts) {
525
753
  ...run.plan.sandboxWarnings.map((w) => `> **Warning:** ${w.message}\n`),
526
754
  "## Results",
527
755
  "",
528
- "```text",
529
- ...render(suiteResult(run), null, {
756
+ ...fenced(render(suiteResult(run), opts.insights ?? null, {
530
757
  color: false,
531
758
  verbose: false,
532
759
  hint: opts.hint
533
- }),
534
- "```",
760
+ }), "text"),
535
761
  "",
536
762
  "## State",
537
763
  "",
@@ -572,7 +798,7 @@ function renderSummary(run, opts) {
572
798
  /** A failed verdict already says why a judge error failed the attempt; its message repeats it. */
573
799
  const repeatsVerdict = (a) => a.error?.kind === "judge" && a.judgements.some((j) => j.verdict === "fail");
574
800
  function attemptDetail(lines, a) {
575
- if (a.error && !repeatsVerdict(a)) lines.push(`**${a.error.kind}**`, "", "```", a.error.message.split("\n").slice(0, 20).join("\n"), "```", "");
801
+ if (a.error && !repeatsVerdict(a)) lines.push(`**${a.error.kind}**`, "", ...fenced(a.error.message.split("\n").slice(0, 20)), "");
576
802
  for (const turn of a.turns) {
577
803
  lines.push(`- Prompt (${turn.status}, ${formatDuration(turn.durationMs)}): ${clip(cell(turn.prompt), 200)}`);
578
804
  if (turn.error) lines.push(` - Error: ${clip(cell(turn.error), 500)}`);
@@ -606,6 +832,6 @@ function attemptDetail(lines, a) {
606
832
  if (links.length) lines.push(`- Files: ${links.join(" · ")}`);
607
833
  }
608
834
  //#endregion
609
- export { render as a, stateRows as i, renderSummary as n, runTally as r, OUTCOME_MARK as t };
835
+ export { t as _, assertionOf as a, errorKind as c, labeller as d, plural as f, slotsOf as g, show as h, stateRows as i, errorText as l, renderBlocks as m, renderSummary as n, checkCount as o, render as p, runTally as r, checkLabel as s, OUTCOME_MARK as t, evalBlock as u, table as v, factsHash as y };
610
836
 
611
- //# sourceMappingURL=summary-BUKfU-9l.js.map
837
+ //# sourceMappingURL=summary-0oQNGskv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary-0oQNGskv.js","names":[],"sources":["../src/insights/hash.ts","../src/ui/layout.ts","../src/history/summary.ts"],"mappings":"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"}
package/dist/testing.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Bt as Wait, p as CaptureUseAction, u as CaptureInstruction } from "./types-BYdlwMwo.js";
2
- import { a as DeclarationTree, n as declareTree, o as DeclaredNode } from "./evaluate-DMyaGQEj.js";
1
+ import { Ht as Wait, p as CaptureUseAction, u as CaptureInstruction } from "./types-GraZtfHN.js";
2
+ import { a as DeclarationTree, n as declareTree, o as DeclaredNode } from "./evaluate-yjZKUexW.js";
3
3
  //#region src/capture/fake-instructions.d.ts
4
4
  declare const FAKE_INSTRUCTIONS: unique symbol;
5
5
  type FakeInstructionStep = CaptureUseAction[] | {
package/dist/testing.js CHANGED
@@ -1,3 +1,3 @@
1
- import { t as declareTree } from "./evaluate-DKIl54Hb.js";
2
- import { f as fakeInstructions } from "./capture-BQlGHiMC.js";
1
+ import { t as declareTree } from "./evaluate-CXQ1o-pd.js";
2
+ import { f as fakeInstructions } from "./capture-BiD7lVaM.js";
3
3
  export { declareTree, fakeInstructions };
@@ -12,6 +12,9 @@ function clip(text, max) {
12
12
  const space = cut.search(/\s\S*$/);
13
13
  return `${(space > max / 2 ? cut.slice(0, space) : cut).trimEnd()}…`;
14
14
  }
15
+ const CONTROL = /[\u0000-\u001f\u007f-\u009f]/g;
16
+ /** Text as one printable line: control characters, escapes included, and whitespace runs become a space. */
17
+ const oneLine = (text) => text.replace(CONTROL, " ").replace(/\s+/g, " ").trim();
15
18
  /** A failure's text keeps at most this much: its start (the reason) and its end (the output's tail). */
16
19
  const FAILURE_CAP = 16384;
17
20
  /** At most `max` characters: the start and the end, with how much was cut between them. */
@@ -21,9 +24,22 @@ function capMiddle(text, max = FAILURE_CAP) {
21
24
  const tail = max - head;
22
25
  return `${text.slice(0, head)}\n[… ${text.length - head - tail} characters cut …]\n${text.slice(-tail)}`;
23
26
  }
27
+ /**
28
+ * A Markdown code block around `lines`. Its fence is one backtick longer than the longest run of
29
+ * backticks in them (at least three), so no line inside can close it.
30
+ */
31
+ function fenced(lines, lang = "") {
32
+ const longest = Math.max(0, ...lines.flatMap((l) => (l.match(/`+/g) ?? []).map((m) => m.length)));
33
+ const fence = "`".repeat(Math.max(3, longest + 1));
34
+ return [
35
+ `${fence}${lang}`,
36
+ ...lines,
37
+ fence
38
+ ];
39
+ }
24
40
  /** How a sandbox warning prints: root in capitals, added capabilities softer. */
25
41
  const sandboxWarningLine = (w) => `${w.kind === "root" ? "WARNING" : "warning"}: ${w.message}`;
26
42
  //#endregion
27
- export { sandboxWarningLine as i, clip as n, formatDuration as r, capMiddle as t };
43
+ export { oneLine as a, formatDuration as i, clip as n, sandboxWarningLine as o, fenced as r, capMiddle as t };
28
44
 
29
- //# sourceMappingURL=text-gEcKjAyp.js.map
45
+ //# sourceMappingURL=text-CrVy5ioL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-CrVy5ioL.js","names":[],"sources":["../src/text.ts"],"mappings":";;AAGA,SAAgB,eAAe,IAAoB;CACjD,IAAI,KAAK,KAAM,OAAO,GAAG,KAAK,MAAM,EAAE,EAAE;CACxC,MAAM,IAAI,KAAK,MAAM,KAAK,GAAI;CAC9B,OAAO,IAAI,KAAK,GAAG,EAAE,KAAK,GAAG,KAAK,MAAM,IAAI,EAAE,EAAE,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,EAAE;AACtF;;AAGA,SAAgB,KAAK,MAAc,KAAqB;CACtD,IAAI,KAAK,UAAU,KAAK,OAAO;CAC/B,MAAM,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC;CACjC,MAAM,QAAQ,IAAI,OAAO,QAAQ;CACjC,OAAO,IAAI,QAAQ,MAAM,IAAI,IAAI,MAAM,GAAG,KAAK,IAAI,IAAA,CAAK,QAAQ,EAAE;AACpE;AAGA,MAAM,UAAU;;AAGhB,MAAa,WAAW,SAAiB,KAAK,QAAQ,SAAS,GAAG,CAAC,CAAC,QAAQ,QAAQ,GAAG,CAAC,CAAC,KAAK;;AAG9F,MAAa,cAAc;;AAG3B,SAAgB,UAAU,MAAc,MAAM,aAAqB;CACjE,IAAI,KAAK,UAAU,KAAK,OAAO;CAC/B,MAAM,OAAO,KAAK,MAAM,MAAM,GAAI;CAClC,MAAM,OAAO,MAAM;CACnB,OAAO,GAAG,KAAK,MAAM,GAAG,IAAI,EAAE,OAAO,KAAK,SAAS,OAAO,KAAK,sBAAsB,KAAK,MAAM,CAAC,IAAI;AACvG;;;;;AAMA,SAAgB,OAAO,OAAiB,OAAO,IAAc;CAC3D,MAAM,UAAU,KAAK,IAAI,GAAG,GAAG,MAAM,SAAS,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC,EAAA,CAAG,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC;CAChG,MAAM,QAAQ,IAAI,OAAO,KAAK,IAAI,GAAG,UAAU,CAAC,CAAC;CACjD,OAAO;EAAC,GAAG,QAAQ;EAAQ,GAAG;EAAO;CAAK;AAC5C;;AAGA,MAAa,sBAAsB,MACjC,GAAG,EAAE,SAAS,SAAS,YAAY,UAAU,IAAI,EAAE"}
@@ -1,5 +1,5 @@
1
1
  import { t as isObjectLike } from "./object-CLf2-tNq.js";
2
- import { n as clip, r as formatDuration } from "./text-gEcKjAyp.js";
2
+ import { i as formatDuration, n as clip } from "./text-CrVy5ioL.js";
3
3
  const text = (value) => typeof value === "string" ? value : JSON.stringify(value) ?? String(value);
4
4
  function toolInput(input) {
5
5
  if (isObjectLike(input)) for (const key of [
@@ -61,4 +61,4 @@ function transcriptForJudge(events, mode) {
61
61
  //#endregion
62
62
  export { transcriptForJudge as t };
63
63
 
64
- //# sourceMappingURL=transcript-BNNANU8A.js.map
64
+ //# sourceMappingURL=transcript-BTxJpW4R.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transcript-BNNANU8A.js","names":[],"sources":["../src/judge/transcript.ts"],"mappings":";;AASA,MAAM,QAAQ,UACZ,OAAO,UAAU,WAAW,QAAS,KAAK,UAAU,KAAK,KAAK,OAAO,KAAK;AAE5E,SAAS,UAAU,OAAwB;CACzC,IAAI,aAAa,KAAK,GACpB,KAAK,MAAM,OAAO;EAAC;EAAW;EAAO;EAAQ;EAAa;EAAO;EAAS;CAAS,GAAG;EACpF,MAAM,QAAQ,MAAM;EACpB,IAAI,OAAO,UAAU,UAAU,OAAO;CACxC;CAEF,OAAO,KAAK,KAAK;AACnB;AAEA,MAAM,UAAU,UACd,MACG,MAAM,IAAI,CAAC,CACX,KAAK,SAAS,KAAK,MAAM,CAAC,CAC1B,KAAK,IAAI;;;;;;AAOd,SAAgB,mBAAmB,QAAoC,MAAsB;CAC3F,MAAM,OAAO,SAAS;CACtB,MAAM,OAAO,MAAe,OAAO,IAAI,KAAK,GAAA,GAAoB;CAChE,MAAM,QAAQ,OAAuB,OAAO,OAAO,KAAK,MAAM,eAAe,EAAE;CAC/E,MAAM,MAAgB,CAAC;CACvB,KAAK,MAAM,KAAK,QACd,QAAQ,EAAE,MAAV;EACE,KAAK;GACH,IAAI,SAAS,SAAS,IAAI,KAAK,YAAY,EAAE,MAAM;GACnD;EACF,KAAK;GACH,IAAI,MAAM,IAAI,KAAK,cAAc,EAAE,MAAM;GACzC;EACF,KAAK,aAAa;GAChB,MAAM,QAAQ,EAAE,UAAU,OAAO,KAAK,MAAM,EAAE,MAAM,IAAI,EAAE,WAAW;GACrE,IAAI,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,OAAO,MAAM,GAAG,KAAK,EAAE,UAAU,GAAG;GAClE;EACF;EACA,KAAK;GACH,IAAI,KACF,UAAU,KAAK,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,QAAQ,WAAW,OAAO,KAAK,EAAE,UAAU,GAC7F;GACA;EACF,KAAK;GACH,IAAI,KAAK,SAAS,EAAE,IAAI,KAAK,EAAE,KAAK,OAAO,WAAW,KAAK,EAAE,UAAU,GAAG;GAC1E;EACF,KAAK,QAAQ;GACX,MAAM,OAAO,QAAQ,EAAE,KAAK,IAAI,IAAI,UAAU,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,OAAO,WAAW,KAAK,EAAE,UAAU;GACvG,MAAM,SAAS,EAAE,WAAW,KAAA,KAAa,EAAE,WAAW,OAAO,KAAK,IAAI,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK;GAC3F,IAAI,KAAK,SAAS,GAAG,KAAK,IAAI,OAAO,MAAM,MAAM,IAAI;GACrD;EACF;EACA,KAAK;GACH,IAAI,KAAK,UAAU,EAAE,SAAS;GAC9B;EACF,KAAK,SACH,IAAI,KAAK,UAAU,EAAE,SAAS;CAElC;CAEF,OAAO;AACT"}
1
+ {"version":3,"file":"transcript-BTxJpW4R.js","names":[],"sources":["../src/judge/transcript.ts"],"mappings":";;AASA,MAAM,QAAQ,UACZ,OAAO,UAAU,WAAW,QAAS,KAAK,UAAU,KAAK,KAAK,OAAO,KAAK;AAE5E,SAAS,UAAU,OAAwB;CACzC,IAAI,aAAa,KAAK,GACpB,KAAK,MAAM,OAAO;EAAC;EAAW;EAAO;EAAQ;EAAa;EAAO;EAAS;CAAS,GAAG;EACpF,MAAM,QAAQ,MAAM;EACpB,IAAI,OAAO,UAAU,UAAU,OAAO;CACxC;CAEF,OAAO,KAAK,KAAK;AACnB;AAEA,MAAM,UAAU,UACd,MACG,MAAM,IAAI,CAAC,CACX,KAAK,SAAS,KAAK,MAAM,CAAC,CAC1B,KAAK,IAAI;;;;;;AAOd,SAAgB,mBAAmB,QAAoC,MAAsB;CAC3F,MAAM,OAAO,SAAS;CACtB,MAAM,OAAO,MAAe,OAAO,IAAI,KAAK,GAAA,GAAoB;CAChE,MAAM,QAAQ,OAAuB,OAAO,OAAO,KAAK,MAAM,eAAe,EAAE;CAC/E,MAAM,MAAgB,CAAC;CACvB,KAAK,MAAM,KAAK,QACd,QAAQ,EAAE,MAAV;EACE,KAAK;GACH,IAAI,SAAS,SAAS,IAAI,KAAK,YAAY,EAAE,MAAM;GACnD;EACF,KAAK;GACH,IAAI,MAAM,IAAI,KAAK,cAAc,EAAE,MAAM;GACzC;EACF,KAAK,aAAa;GAChB,MAAM,QAAQ,EAAE,UAAU,OAAO,KAAK,MAAM,EAAE,MAAM,IAAI,EAAE,WAAW;GACrE,IAAI,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,OAAO,MAAM,GAAG,KAAK,EAAE,UAAU,GAAG;GAClE;EACF;EACA,KAAK;GACH,IAAI,KACF,UAAU,KAAK,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,QAAQ,WAAW,OAAO,KAAK,EAAE,UAAU,GAC7F;GACA;EACF,KAAK;GACH,IAAI,KAAK,SAAS,EAAE,IAAI,KAAK,EAAE,KAAK,OAAO,WAAW,KAAK,EAAE,UAAU,GAAG;GAC1E;EACF,KAAK,QAAQ;GACX,MAAM,OAAO,QAAQ,EAAE,KAAK,IAAI,IAAI,UAAU,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,OAAO,WAAW,KAAK,EAAE,UAAU;GACvG,MAAM,SAAS,EAAE,WAAW,KAAA,KAAa,EAAE,WAAW,OAAO,KAAK,IAAI,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK;GAC3F,IAAI,KAAK,SAAS,GAAG,KAAK,IAAI,OAAO,MAAM,MAAM,IAAI;GACrD;EACF;EACA,KAAK;GACH,IAAI,KAAK,UAAU,EAAE,SAAS;GAC9B;EACF,KAAK,SACH,IAAI,KAAK,UAAU,EAAE,SAAS;CAElC;CAEF,OAAO;AACT"}