@tangle-network/agent-eval 0.216.1 → 0.217.1

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 (521) hide show
  1. package/CHANGELOG.md +102 -57
  2. package/README.md +2 -2
  3. package/dist/adapters/http.d.ts +2 -2
  4. package/dist/{agent-profile-VFcQncbW.d.ts → agent-profile-DTt8uGP9.d.ts} +4 -17
  5. package/dist/agent-profile-DTt8uGP9.d.ts.map +1 -0
  6. package/dist/{agent-profile-cell-BK8mlqlq.js → agent-profile-cell-B1V1gUZs.js} +4 -53
  7. package/dist/agent-profile-cell-B1V1gUZs.js.map +1 -0
  8. package/dist/{agent-profile-cell-BNp-Js9F.d.ts → agent-profile-cell-BcpFbNd5.d.ts} +2 -22
  9. package/dist/agent-profile-cell-BcpFbNd5.d.ts.map +1 -0
  10. package/dist/{agreement-irr-BEWLIF3_.js → agreement-irr-BhAqjluA.js} +5 -5
  11. package/dist/agreement-irr-BhAqjluA.js.map +1 -0
  12. package/dist/analyst/index.d.ts +36 -169
  13. package/dist/analyst/index.d.ts.map +1 -1
  14. package/dist/analyst/index.js +17 -192
  15. package/dist/analyst/index.js.map +1 -1
  16. package/dist/{analyze-runs-C84irm4i.js → analyze-runs-DqPJaJ4X.js} +225 -21
  17. package/dist/analyze-runs-DqPJaJ4X.js.map +1 -0
  18. package/dist/{analyze-runs-D68fd-su.d.ts → analyze-runs-DyeNcenW.d.ts} +5 -5
  19. package/dist/{analyze-runs-D68fd-su.d.ts.map → analyze-runs-DyeNcenW.d.ts.map} +1 -1
  20. package/dist/authenticity/index.d.ts +0 -23
  21. package/dist/authenticity/index.d.ts.map +1 -1
  22. package/dist/authenticity/index.js +1 -34
  23. package/dist/authenticity/index.js.map +1 -1
  24. package/dist/{benchmark-command-By0vh8q7.js → benchmark-command-xQK8nOI6.js} +554 -89
  25. package/dist/benchmark-command-xQK8nOI6.js.map +1 -0
  26. package/dist/benchmarks/index.d.ts +5 -6
  27. package/dist/benchmarks/index.d.ts.map +1 -1
  28. package/dist/benchmarks/index.js +4 -4
  29. package/dist/benchmarks/index.js.map +1 -1
  30. package/dist/builder-eval/index.d.ts +3 -3
  31. package/dist/builder-eval/index.js +2 -2
  32. package/dist/builder-eval/index.js.map +1 -1
  33. package/dist/campaign/index.d.ts +7 -7
  34. package/dist/campaign/index.js +15 -15
  35. package/dist/{campaign-BudZ70zo.js → campaign-CJGkxAQ6.js} +23 -530
  36. package/dist/campaign-CJGkxAQ6.js.map +1 -0
  37. package/dist/{campaign-evidence-Clrn4hBV.js → campaign-evidence-CQYw8_0H.js} +10 -18
  38. package/dist/{campaign-evidence-Clrn4hBV.js.map → campaign-evidence-CQYw8_0H.js.map} +1 -1
  39. package/dist/{canonical-B2RqLofv.js → canonical-Dq2hOQ8L.js} +2 -2
  40. package/dist/{canonical-B2RqLofv.js.map → canonical-Dq2hOQ8L.js.map} +1 -1
  41. package/dist/cell-spend-DEWR3nj-.js +90 -0
  42. package/dist/cell-spend-DEWR3nj-.js.map +1 -0
  43. package/dist/{chat-client-l-MVDlDk.js → chat-client-ldqxYYTN.js} +2 -2
  44. package/dist/{chat-client-l-MVDlDk.js.map → chat-client-ldqxYYTN.js.map} +1 -1
  45. package/dist/{chat-json-call-puMArmtW.js → chat-json-call-DavzexSp.js} +3 -2
  46. package/dist/chat-json-call-DavzexSp.js.map +1 -0
  47. package/dist/{claim-q4HQhK1G.js → claim-BPVuyHuy.js} +3 -3
  48. package/dist/{claim-q4HQhK1G.js.map → claim-BPVuyHuy.js.map} +1 -1
  49. package/dist/cli.js +113 -12
  50. package/dist/cli.js.map +1 -1
  51. package/dist/{client-BzL9niqi.d.ts → client-hwo3cJjR.d.ts} +3 -16
  52. package/dist/client-hwo3cJjR.d.ts.map +1 -0
  53. package/dist/{cluster-bootstrap-qcUWYFl-.js → cluster-bootstrap-DEwwhl0C.js} +3 -3
  54. package/dist/{cluster-bootstrap-qcUWYFl-.js.map → cluster-bootstrap-DEwwhl0C.js.map} +1 -1
  55. package/dist/{produced-state-BsDmnwxc.js → completion-verifier-B_jw6C9p.js} +9 -64
  56. package/dist/completion-verifier-B_jw6C9p.js.map +1 -0
  57. package/dist/contract/index.d.ts +12 -12
  58. package/dist/contract/index.js +25 -401
  59. package/dist/contract/index.js.map +1 -1
  60. package/dist/{cost-ledger-BP8V4kUQ.js → cost-ledger-D0352Z4d.js} +4 -8
  61. package/dist/cost-ledger-D0352Z4d.js.map +1 -0
  62. package/dist/dataset-DQqhOCPt.d.ts.map +1 -1
  63. package/dist/{default-registry-COhk9g36.js → default-registry-ClYjq3QE.js} +8 -11
  64. package/dist/default-registry-ClYjq3QE.js.map +1 -0
  65. package/dist/{default-registry-DzHiGruW.d.ts → default-registry-DXgLmoDI.d.ts} +7 -50
  66. package/dist/default-registry-DXgLmoDI.d.ts.map +1 -0
  67. package/dist/{define-agent-eval-CNTPzIkp.js → define-agent-eval-BDxNlP3D.js} +10 -10
  68. package/dist/{define-agent-eval-CNTPzIkp.js.map → define-agent-eval-BDxNlP3D.js.map} +1 -1
  69. package/dist/{define-agent-eval-WSck0CZJ.d.ts → define-agent-eval-BIkH_gAR.d.ts} +8 -8
  70. package/dist/define-agent-eval-BIkH_gAR.d.ts.map +1 -0
  71. package/dist/{descriptive-DboxPZrG.js → descriptive-CVNy48rR.js} +2 -2
  72. package/dist/{descriptive-DboxPZrG.js.map → descriptive-CVNy48rR.js.map} +1 -1
  73. package/dist/diagnosis/index.d.ts +4 -14
  74. package/dist/diagnosis/index.d.ts.map +1 -1
  75. package/dist/diagnosis/index.js +67 -28
  76. package/dist/diagnosis/index.js.map +1 -1
  77. package/dist/{dspy-rlm-engine-LRCu61m5.js → dspy-rlm-engine-DhdCr1Dc.js} +5 -10
  78. package/dist/dspy-rlm-engine-DhdCr1Dc.js.map +1 -0
  79. package/dist/{emitter-HcCmFQl_.d.ts → emitter-DABYYTcH.d.ts} +5 -5
  80. package/dist/emitter-DABYYTcH.d.ts.map +1 -0
  81. package/dist/emitter-DbMXUIVP.js.map +1 -1
  82. package/dist/{engine-3A_4jOlI.d.ts → engine-BvZ0R-36.d.ts} +17 -21
  83. package/dist/engine-BvZ0R-36.d.ts.map +1 -0
  84. package/dist/{equal-terms-BtdXayCJ.js → equal-terms-DbPGcVtI.js} +2 -2
  85. package/dist/equal-terms-DbPGcVtI.js.map +1 -0
  86. package/dist/{errors-DVZiqS7K.js → errors-BcOs5MKW.js} +2 -8
  87. package/dist/{errors-DVZiqS7K.js.map → errors-BcOs5MKW.js.map} +1 -1
  88. package/dist/{eval-campaign-90jeaCAI.js → eval-campaign-BLEfBGbA.js} +6 -6
  89. package/dist/{eval-campaign-90jeaCAI.js.map → eval-campaign-BLEfBGbA.js.map} +1 -1
  90. package/dist/{evaluation-6Yoi74gM.d.ts → evaluation-jTjC_QQD.d.ts} +7 -7
  91. package/dist/evaluation-jTjC_QQD.d.ts.map +1 -0
  92. package/dist/evaluation.d.ts +2 -2
  93. package/dist/evaluation.js +1 -1
  94. package/dist/evaluation.js.map +1 -1
  95. package/dist/{exact-types-ClugMJfI.d.ts → exact-types-CflbJ9f3.d.ts} +2 -2
  96. package/dist/{exact-types-ClugMJfI.d.ts.map → exact-types-CflbJ9f3.d.ts.map} +1 -1
  97. package/dist/{exec-ChJ6d5if.js → exec-CpbtOXVt.js} +2 -24
  98. package/dist/{exec-ChJ6d5if.js.map → exec-CpbtOXVt.js.map} +1 -1
  99. package/dist/execution-tracks-CpgFPpS5.js.map +1 -1
  100. package/dist/experiment/index.d.ts +9 -112
  101. package/dist/experiment/index.d.ts.map +1 -1
  102. package/dist/experiment/index.js +149 -241
  103. package/dist/experiment/index.js.map +1 -1
  104. package/dist/{exporters-X4xwla8A.js → exporters-Cl6IeNAu.js} +3 -3
  105. package/dist/exporters-Cl6IeNAu.js.map +1 -0
  106. package/dist/{exporters-ChTnR90l.d.ts → exporters-Dk3oEbK_.d.ts} +2 -4
  107. package/dist/{exporters-ChTnR90l.d.ts.map → exporters-Dk3oEbK_.d.ts.map} +1 -1
  108. package/dist/{external-optimizer-process-BjMGUuds.js → external-optimizer-process-KVFGvYX1.js} +4 -3
  109. package/dist/external-optimizer-process-KVFGvYX1.js.map +1 -0
  110. package/dist/{external-optimizer-subprocess-BqW0hHcI.js → external-optimizer-subprocess-XIHBOSKt.js} +9 -11
  111. package/dist/external-optimizer-subprocess-XIHBOSKt.js.map +1 -0
  112. package/dist/{extract-usage-BrnzRJ6H.js → extract-usage-BZLU01kR.js} +2 -23
  113. package/dist/{extract-usage-BrnzRJ6H.js.map → extract-usage-BZLU01kR.js.map} +1 -1
  114. package/dist/{failure-cluster-CbgEDcFJ.d.ts → failure-cluster-DN0t63Z0.d.ts} +4 -43
  115. package/dist/failure-cluster-DN0t63Z0.d.ts.map +1 -0
  116. package/dist/{failure-taxonomy-CjabTATj.js → failure-taxonomy-Bx5oWqaW.js} +2 -19
  117. package/dist/{failure-taxonomy-CjabTATj.js.map → failure-taxonomy-Bx5oWqaW.js.map} +1 -1
  118. package/dist/{feedback-trajectory-C4EG0nNH.d.ts → feedback-trajectory-BWmhRBGu.d.ts} +7 -9
  119. package/dist/feedback-trajectory-BWmhRBGu.d.ts.map +1 -0
  120. package/dist/{semantic-concept-judge-BQF8te0T.js → findings-store-BMVQtEsm.js} +9 -249
  121. package/dist/findings-store-BMVQtEsm.js.map +1 -0
  122. package/dist/fuzz.d.ts +19 -62
  123. package/dist/fuzz.d.ts.map +1 -1
  124. package/dist/fuzz.js +62 -108
  125. package/dist/fuzz.js.map +1 -1
  126. package/dist/{hf-dataset-BR2yhuNn.js → hf-dataset-D9f7-oX7.js} +4 -24
  127. package/dist/hf-dataset-D9f7-oX7.js.map +1 -0
  128. package/dist/hosted/index.d.ts +2 -2
  129. package/dist/hosted/index.js +2 -2
  130. package/dist/{index-DHKEAv3s.d.ts → index-9jJ2fKSX.d.ts} +2 -64
  131. package/dist/index-9jJ2fKSX.d.ts.map +1 -0
  132. package/dist/{index-DV-jSzxF.d.ts → index-BLGqZ81N.d.ts} +10 -15
  133. package/dist/{index-DV-jSzxF.d.ts.map → index-BLGqZ81N.d.ts.map} +1 -1
  134. package/dist/{index-DPcngtwt.d.ts → index-BiT6RtNH.d.ts} +11 -36
  135. package/dist/index-BiT6RtNH.d.ts.map +1 -0
  136. package/dist/{index-BO41eGj5.d.ts → index-CX-GAUpw.d.ts} +3 -7
  137. package/dist/index-CX-GAUpw.d.ts.map +1 -0
  138. package/dist/{index-BFRO6chs.d.ts → index-CiRwLv2R.d.ts} +5 -69
  139. package/dist/index-CiRwLv2R.d.ts.map +1 -0
  140. package/dist/{index-CyszSg4O.d.ts → index-ZuWx52WG.d.ts} +115 -347
  141. package/dist/index-ZuWx52WG.d.ts.map +1 -0
  142. package/dist/index.d.ts +211 -218
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +402 -1040
  145. package/dist/index.js.map +1 -1
  146. package/dist/{integrity-dLiDe2kD.js → integrity-DOd9Q86O.js} +7 -9
  147. package/dist/integrity-DOd9Q86O.js.map +1 -0
  148. package/dist/{integrity-BXOsAb3i.js → integrity-W4CADcFc.js} +3 -7
  149. package/dist/{integrity-BXOsAb3i.js.map → integrity-W4CADcFc.js.map} +1 -1
  150. package/dist/{integrity-DAMEDFaC.d.ts → integrity-_qgZLA5p.d.ts} +4 -6
  151. package/dist/{integrity-DAMEDFaC.d.ts.map → integrity-_qgZLA5p.d.ts.map} +1 -1
  152. package/dist/{internal-Epl-YBZW.js → internal-BTK91Bqt.js} +3 -3
  153. package/dist/{internal-Epl-YBZW.js.map → internal-BTK91Bqt.js.map} +1 -1
  154. package/dist/{interval-CELpye1n.js → interval-Dq9gt7jx.js} +3 -3
  155. package/dist/{interval-CELpye1n.js.map → interval-Dq9gt7jx.js.map} +1 -1
  156. package/dist/{journal-DfRz9kps.js → journal-CR4QikYp.js} +110 -110
  157. package/dist/journal-CR4QikYp.js.map +1 -0
  158. package/dist/json-BhdsJaOQ.js +111 -0
  159. package/dist/json-BhdsJaOQ.js.map +1 -0
  160. package/dist/{judge-calibration-BpCy5XQl.js → judge-calibration-BkXMIWA4.js} +3 -3
  161. package/dist/{judge-calibration-BpCy5XQl.js.map → judge-calibration-BkXMIWA4.js.map} +1 -1
  162. package/dist/{judge-gate-iY9s4L44.js → judge-gate-Co5tuh57.js} +4 -27
  163. package/dist/{judge-gate-iY9s4L44.js.map → judge-gate-Co5tuh57.js.map} +1 -1
  164. package/dist/{judge-gate-CE7CQAgt.d.ts → judge-gate-DsL0yFcb.d.ts} +8 -9
  165. package/dist/judge-gate-DsL0yFcb.d.ts.map +1 -0
  166. package/dist/{kind-factory-BobI5Jy3.js → kind-factory-Gy4fXixd.js} +88 -17
  167. package/dist/kind-factory-Gy4fXixd.js.map +1 -0
  168. package/dist/ledger-core/index.d.ts +2 -2
  169. package/dist/ledger-core/index.js +4 -4
  170. package/dist/{ledger-core-Gq7yp8lP.js → ledger-core-DrJhbms9.js} +5 -84
  171. package/dist/ledger-core-DrJhbms9.js.map +1 -0
  172. package/dist/{llm-client-CyBAoYiX.js → llm-client-BshCREn6.js} +6 -108
  173. package/dist/llm-client-BshCREn6.js.map +1 -0
  174. package/dist/{llm-judge-CG12SQJq.js → llm-judge-C8jMTNNG.js} +24 -32
  175. package/dist/llm-judge-C8jMTNNG.js.map +1 -0
  176. package/dist/matrix/index.d.ts +3 -3
  177. package/dist/matrix/index.js +3 -2
  178. package/dist/{matrix-Dm0BQW7U.js → matrix-B8l-Nsxd.js} +3 -88
  179. package/dist/matrix-B8l-Nsxd.js.map +1 -0
  180. package/dist/{matrix-DSrSxjjy.d.ts → matrix-DHe-dwVJ.d.ts} +9 -18
  181. package/dist/matrix-DHe-dwVJ.d.ts.map +1 -0
  182. package/dist/{mean-DHoMiudD.js → mean-BbA_JCzW.js} +39 -5
  183. package/dist/mean-BbA_JCzW.js.map +1 -0
  184. package/dist/meta-eval/index.d.ts +5 -5
  185. package/dist/meta-eval/index.js +10 -10
  186. package/dist/metrics-BKaPBtIG.js.map +1 -1
  187. package/dist/{mint-DNU8QPG4.d.ts → mint-BRZXuwRi.d.ts} +4 -4
  188. package/dist/{mint-DNU8QPG4.d.ts.map → mint-BRZXuwRi.d.ts.map} +1 -1
  189. package/dist/{mint-QaD5cA0u.js → mint-zszyYlpA.js} +4 -4
  190. package/dist/{mint-QaD5cA0u.js.map → mint-zszyYlpA.js.map} +1 -1
  191. package/dist/{multi-layer-verifier-BUaQ4C17.d.ts → multi-layer-verifier-DEgMUk6v.d.ts} +2 -2
  192. package/dist/{multi-layer-verifier-BUaQ4C17.d.ts.map → multi-layer-verifier-DEgMUk6v.d.ts.map} +1 -1
  193. package/dist/{multiplicity-DQUFcbW4.js → multiplicity-Sg0U7h8j.js} +2 -2
  194. package/dist/{multiplicity-DQUFcbW4.js.map → multiplicity-Sg0U7h8j.js.map} +1 -1
  195. package/dist/multishot/golden/index.d.ts +1 -23
  196. package/dist/multishot/golden/index.d.ts.map +1 -1
  197. package/dist/multishot/golden/index.js +3 -3
  198. package/dist/multishot/golden/index.js.map +1 -1
  199. package/dist/multishot/index.d.ts +3 -12
  200. package/dist/multishot/index.d.ts.map +1 -1
  201. package/dist/multishot/index.js +4 -3
  202. package/dist/multishot/index.js.map +1 -1
  203. package/dist/openapi.json +114 -10
  204. package/dist/{otel-spans-B9tUXRHF.js → otel-spans-CdN909k1.js} +3 -3
  205. package/dist/{otel-spans-B9tUXRHF.js.map → otel-spans-CdN909k1.js.map} +1 -1
  206. package/dist/{paired-arms-CwMGJsrS.js → paired-arms-Ct4LTKc1.js} +32 -9
  207. package/dist/paired-arms-Ct4LTKc1.js.map +1 -0
  208. package/dist/{paired-binary-CvpFHfKZ.js → paired-binary-B_nejA44.js} +3 -36
  209. package/dist/paired-binary-B_nejA44.js.map +1 -0
  210. package/dist/{paired-promotion-decision-DPKz8ZnF.d.ts → paired-promotion-decision-CQMJ5xGN.d.ts} +2 -34
  211. package/dist/paired-promotion-decision-CQMJ5xGN.d.ts.map +1 -0
  212. package/dist/{paired-promotion-decision-DsAPYGCm.js → paired-promotion-decision-D0SHb-ZL.js} +3 -3
  213. package/dist/{paired-promotion-decision-DsAPYGCm.js.map → paired-promotion-decision-D0SHb-ZL.js.map} +1 -1
  214. package/dist/{pareto-Cm6ndrWN.js → pareto-BzsxidFD.js} +11 -11
  215. package/dist/pareto-BzsxidFD.js.map +1 -0
  216. package/dist/pipelines/index.d.ts +16 -19
  217. package/dist/pipelines/index.d.ts.map +1 -1
  218. package/dist/pipelines/index.js +4 -68
  219. package/dist/pipelines/index.js.map +1 -1
  220. package/dist/{power-and-mde-Hj2ubb4B.js → power-and-mde-N5nU4_Ly.js} +3 -3
  221. package/dist/{power-and-mde-Hj2ubb4B.js.map → power-and-mde-N5nU4_Ly.js.map} +1 -1
  222. package/dist/{prime-protocol-CHKgA3a6.js → prime-protocol-BFgGrEMP.js} +3 -3
  223. package/dist/prime-protocol-BFgGrEMP.js.map +1 -0
  224. package/dist/{prime-protocol-HiB9HX7E.d.ts → prime-protocol-BWG2DQIk.d.ts} +3 -21
  225. package/dist/prime-protocol-BWG2DQIk.d.ts.map +1 -0
  226. package/dist/profile-cell.d.ts +2 -2
  227. package/dist/profile-cell.js +2 -2
  228. package/dist/{promotion-gate-BawrdPYr.d.ts → promotion-gate-DaY95yU6.d.ts} +7 -8
  229. package/dist/{promotion-gate-BawrdPYr.d.ts.map → promotion-gate-DaY95yU6.d.ts.map} +1 -1
  230. package/dist/{promotion-policy-KO57gbyV.js → promotion-policy-6A8osGr_.js} +4 -4
  231. package/dist/{promotion-policy-KO57gbyV.js.map → promotion-policy-6A8osGr_.js.map} +1 -1
  232. package/dist/{proposal-findings-CY1xKn_a.js → proposal-findings-BbWidvUk.js} +3 -3
  233. package/dist/proposal-findings-BbWidvUk.js.map +1 -0
  234. package/dist/{query-BUCZCK7F.js → query-B_RZ36an.js} +5 -5
  235. package/dist/query-B_RZ36an.js.map +1 -0
  236. package/dist/{query-DK1nWcmp.d.ts → query-Cmv_U8vf.d.ts} +4 -24
  237. package/dist/{query-DK1nWcmp.d.ts.map → query-Cmv_U8vf.d.ts.map} +1 -1
  238. package/dist/{random-ByUSnV9w.js → random-DDDcC7YU.js} +2 -2
  239. package/dist/{random-ByUSnV9w.js.map → random-DDDcC7YU.js.map} +1 -1
  240. package/dist/{raw-provider-sink-DoHz4JNG.js → raw-provider-sink-75w4FWBj.js} +2 -2
  241. package/dist/{raw-provider-sink-DoHz4JNG.js.map → raw-provider-sink-75w4FWBj.js.map} +1 -1
  242. package/dist/{redact-mtCCcT8z.d.ts → redact-DXdlFb_U.d.ts} +2 -3
  243. package/dist/redact-DXdlFb_U.d.ts.map +1 -0
  244. package/dist/{redact-B5xXKqQ3.js → redact-mtkTiJVk.js} +2 -7
  245. package/dist/{redact-B5xXKqQ3.js.map → redact-mtkTiJVk.js.map} +1 -1
  246. package/dist/{registry-D7_hm2fK.d.ts → registry-ssNoHzwD.d.ts} +4 -4
  247. package/dist/{registry-D7_hm2fK.d.ts.map → registry-ssNoHzwD.d.ts.map} +1 -1
  248. package/dist/{release-confidence-CpuP65S5.js → release-confidence-CYIFH-fp.js} +6 -11
  249. package/dist/release-confidence-CYIFH-fp.js.map +1 -0
  250. package/dist/{report-command-SC9nqb4M.js → render-C-w2EZ6p.js} +205 -363
  251. package/dist/render-C-w2EZ6p.js.map +1 -0
  252. package/dist/reporting.d.ts +6 -6
  253. package/dist/reporting.js +8 -8
  254. package/dist/{researcher-CEcfku-T.d.ts → researcher-0ABVIdGa.d.ts} +9 -9
  255. package/dist/{researcher-CEcfku-T.d.ts.map → researcher-0ABVIdGa.d.ts.map} +1 -1
  256. package/dist/{reward-CpCmAM8L.d.ts → reward-DrZ71vnf.d.ts} +3 -26
  257. package/dist/reward-DrZ71vnf.d.ts.map +1 -0
  258. package/dist/{reward-hacking-E0d-WVcP.js → reward-hacking-ByuETaIb.js} +3 -3
  259. package/dist/{reward-hacking-E0d-WVcP.js.map → reward-hacking-ByuETaIb.js.map} +1 -1
  260. package/dist/{reward-hacking-RVdZ6Kkt.d.ts → reward-hacking-E52wq86n.d.ts} +5 -18
  261. package/dist/reward-hacking-E52wq86n.d.ts.map +1 -0
  262. package/dist/reward-nw2xZGZG.js.map +1 -1
  263. package/dist/rl.d.ts +117 -295
  264. package/dist/rl.d.ts.map +1 -1
  265. package/dist/rl.js +27 -747
  266. package/dist/rl.js.map +1 -1
  267. package/dist/rollout/index.d.ts +5 -5
  268. package/dist/rollout/index.js +7 -8
  269. package/dist/{rollout-DZV1t2Wg.js → rollout-D6C50mfA.js} +88 -13
  270. package/dist/rollout-D6C50mfA.js.map +1 -0
  271. package/dist/{rubric-predictive-validity-DaFW70y9.js → rubric-predictive-validity-D3_oI72N.js} +3 -3
  272. package/dist/{rubric-predictive-validity-DaFW70y9.js.map → rubric-predictive-validity-D3_oI72N.js.map} +1 -1
  273. package/dist/{rubric-predictive-validity-C03EC7ZE.d.ts → rubric-predictive-validity-DiwT8PbL.d.ts} +2 -2
  274. package/dist/{rubric-predictive-validity-C03EC7ZE.d.ts.map → rubric-predictive-validity-DiwT8PbL.d.ts.map} +1 -1
  275. package/dist/{run-record-C1E24G2A.d.ts → run-record-CaxbLq6Y.d.ts} +4 -10
  276. package/dist/run-record-CaxbLq6Y.d.ts.map +1 -0
  277. package/dist/{run-record-C5e7FjhJ.js → run-record-CysKLB93.js} +3 -3
  278. package/dist/run-record-CysKLB93.js.map +1 -0
  279. package/dist/{run-record-Boc5IUTp.js → run-record-DhEJgoPz.js} +4 -4
  280. package/dist/{run-record-Boc5IUTp.js.map → run-record-DhEJgoPz.js.map} +1 -1
  281. package/dist/sandbox-harness-BlSOu4LX.d.ts.map +1 -1
  282. package/dist/{schema-CSf6qWgZ.js → schema-Bt2vLFm3.js} +2 -14
  283. package/dist/schema-Bt2vLFm3.js.map +1 -0
  284. package/dist/schema-C-ziyJD7.d.ts.map +1 -1
  285. package/dist/{schema-2g7trUwH.d.ts → schema-D6EVKzTB.d.ts} +4 -5
  286. package/dist/schema-D6EVKzTB.d.ts.map +1 -0
  287. package/dist/{schema-BuiujZ-g.js → schema-DxcKTzbi.js} +2 -2
  288. package/dist/schema-DxcKTzbi.js.map +1 -0
  289. package/dist/search/index.d.ts +3 -31
  290. package/dist/search/index.d.ts.map +1 -1
  291. package/dist/search/index.js +4 -4
  292. package/dist/{search-kernel-DyNEa6IU.d.ts → search-kernel-DxqjBxA-.d.ts} +10 -27
  293. package/dist/search-kernel-DxqjBxA-.d.ts.map +1 -0
  294. package/dist/{search-ledger-CVUGLDZp.js → search-ledger-TUvB5gWH.js} +7 -7
  295. package/dist/{search-ledger-CVUGLDZp.js.map → search-ledger-TUvB5gWH.js.map} +1 -1
  296. package/dist/{search-ledger-file-DDQUgvCg.js → search-ledger-file-UKCO2r8a.js} +4 -4
  297. package/dist/search-ledger-file-UKCO2r8a.js.map +1 -0
  298. package/dist/{search-shipper-BOSD46qv.js → search-shipper-Cw2z3-td.js} +4 -4
  299. package/dist/search-shipper-Cw2z3-td.js.map +1 -0
  300. package/dist/{search-summary-BQCSWf1g.js → search-summary-DQIvJsSB.js} +5 -5
  301. package/dist/{search-summary-BQCSWf1g.js.map → search-summary-DQIvJsSB.js.map} +1 -1
  302. package/dist/{sequential-CzK5DarL.js → sequential-BVv1sjsw.js} +2 -32
  303. package/dist/{sequential-CzK5DarL.js.map → sequential-BVv1sjsw.js.map} +1 -1
  304. package/dist/{sequential-Bf_pbE50.js → sequential-CimQrbjv.js} +5 -5
  305. package/dist/sequential-CimQrbjv.js.map +1 -0
  306. package/dist/{sequential-BhsrMupG.d.ts → sequential-KwGspfeR.d.ts} +2 -9
  307. package/dist/{sequential-BhsrMupG.d.ts.map → sequential-KwGspfeR.d.ts.map} +1 -1
  308. package/dist/{sequential-eprocess-DM_qENCl.js → sequential-eprocess-DodI6RoF.js} +2 -2
  309. package/dist/{sequential-eprocess-DM_qENCl.js.map → sequential-eprocess-DodI6RoF.js.map} +1 -1
  310. package/dist/{server-e9oWO_bN.js → server-DoVbqqtJ.js} +101 -101
  311. package/dist/server-DoVbqqtJ.js.map +1 -0
  312. package/dist/{single-run-lock-CV9Eyd_q.js → single-run-lock-U58yf8N6.js} +2 -2
  313. package/dist/{single-run-lock-CV9Eyd_q.js.map → single-run-lock-U58yf8N6.js.map} +1 -1
  314. package/dist/{skillopt-optimization-method-BiwA8nfX.js → skillopt-optimization-method-kyL94-ri.js} +17 -95
  315. package/dist/skillopt-optimization-method-kyL94-ri.js.map +1 -0
  316. package/dist/{spans-BHAUXMGN.d.ts → spans-CVngGij3.d.ts} +2 -2
  317. package/dist/{spans-BHAUXMGN.d.ts.map → spans-CVngGij3.d.ts.map} +1 -1
  318. package/dist/{statistical-heldout-42NlCNDe.js → statistical-heldout-Bksv92Th.js} +3 -3
  319. package/dist/statistical-heldout-Bksv92Th.js.map +1 -0
  320. package/dist/{statistical-heldout-CYpGaoDH.d.ts → statistical-heldout-C9AbgREN.d.ts} +8 -67
  321. package/dist/statistical-heldout-C9AbgREN.d.ts.map +1 -0
  322. package/dist/{steps-Bg5-KVx1.d.ts → steps-DlepJPwD.d.ts} +2 -56
  323. package/dist/steps-DlepJPwD.d.ts.map +1 -0
  324. package/dist/{store-C4avFjIi.d.ts → store-B3nWRy3B.d.ts} +2 -2
  325. package/dist/{store-C4avFjIi.d.ts.map → store-B3nWRy3B.d.ts.map} +1 -1
  326. package/dist/{store-otlp-DJ9dtA5x.js → store-otlp-BteDAbHK.js} +3 -3
  327. package/dist/{store-otlp-DJ9dtA5x.js.map → store-otlp-BteDAbHK.js.map} +1 -1
  328. package/dist/{store-tool-spans-CIX5arAG.js → store-tool-spans-D5l_OfTJ.js} +8 -8
  329. package/dist/store-tool-spans-D5l_OfTJ.js.map +1 -0
  330. package/dist/{store-tool-spans-DdCSPa7C.d.ts → store-tool-spans-DZS0HWVf.d.ts} +9 -18
  331. package/dist/store-tool-spans-DZS0HWVf.d.ts.map +1 -0
  332. package/dist/storyboard/index.d.ts +4 -11
  333. package/dist/storyboard/index.d.ts.map +1 -1
  334. package/dist/storyboard/index.js +1 -16
  335. package/dist/storyboard/index.js.map +1 -1
  336. package/dist/{summary-report-V_JACR4Y.js → summary-report-BsXJoYX5.js} +88 -10
  337. package/dist/summary-report-BsXJoYX5.js.map +1 -0
  338. package/dist/{summary-report-bdFDXq0b.d.ts → summary-report-DM7tlml1.d.ts} +10 -19
  339. package/dist/summary-report-DM7tlml1.d.ts.map +1 -0
  340. package/dist/supervisor-run/index.d.ts +60 -28
  341. package/dist/supervisor-run/index.d.ts.map +1 -1
  342. package/dist/supervisor-run/index.js +4 -458
  343. package/dist/supervisor-run/index.js.map +1 -1
  344. package/dist/{systemone-BomhHr2c.d.ts → systemone-Bp_Ac0p1.d.ts} +5 -5
  345. package/dist/{systemone-BomhHr2c.d.ts.map → systemone-Bp_Ac0p1.d.ts.map} +1 -1
  346. package/dist/systemone-protocol.js +1 -1
  347. package/dist/{systemone-review-CUVcQJu6.d.ts → systemone-review-CwE6JGIp.d.ts} +2 -2
  348. package/dist/{systemone-review-CUVcQJu6.d.ts.map → systemone-review-CwE6JGIp.d.ts.map} +1 -1
  349. package/dist/{systemone-review-D7sXwsqq.js → systemone-review-DzdOJ8I6.js} +3 -3
  350. package/dist/{systemone-review-D7sXwsqq.js.map → systemone-review-DzdOJ8I6.js.map} +1 -1
  351. package/dist/systemone.d.ts +5 -5
  352. package/dist/systemone.js +5 -5
  353. package/dist/systemone.js.map +1 -1
  354. package/dist/{task-failure-attributes-hEmASjix.js → task-failure-attributes-BMsblaDh.js} +3 -3
  355. package/dist/task-failure-attributes-BMsblaDh.js.map +1 -0
  356. package/dist/{terminal-record-DZyQZ3pz.js → terminal-record-78g6E4vh.js} +5 -5
  357. package/dist/terminal-record-78g6E4vh.js.map +1 -0
  358. package/dist/{tool-groups-C3NEcdCM.d.ts → tool-groups-DyNz2JZ_.d.ts} +3 -3
  359. package/dist/tool-groups-DyNz2JZ_.d.ts.map +1 -0
  360. package/dist/{tool-waste-BKgvd-TP.d.ts → tool-waste-CkjzWmeY.d.ts} +25 -28
  361. package/dist/tool-waste-CkjzWmeY.d.ts.map +1 -0
  362. package/dist/{tool-waste-BlesqTqW.js → tool-waste-DLsjS_p-.js} +5 -5
  363. package/dist/{tool-waste-BlesqTqW.js.map → tool-waste-DLsjS_p-.js.map} +1 -1
  364. package/dist/{trace-questions-CM2CAocU.d.ts → trace-questions-xxwgsuMi.d.ts} +4 -9
  365. package/dist/{trace-questions-CM2CAocU.d.ts.map → trace-questions-xxwgsuMi.d.ts.map} +1 -1
  366. package/dist/trace-repair/index.d.ts +14 -211
  367. package/dist/trace-repair/index.d.ts.map +1 -1
  368. package/dist/trace-repair/index.js +865 -981
  369. package/dist/trace-repair/index.js.map +1 -1
  370. package/dist/traces.d.ts +18 -46
  371. package/dist/traces.d.ts.map +1 -1
  372. package/dist/traces.js +13 -13
  373. package/dist/traces.js.map +1 -1
  374. package/dist/trajectory-replay/index.d.ts +3 -117
  375. package/dist/trajectory-replay/index.d.ts.map +1 -1
  376. package/dist/trajectory-replay/index.js +98 -56
  377. package/dist/trajectory-replay/index.js.map +1 -1
  378. package/dist/{tree-C1XYeXvy.js → tree-BGRglkKd.js} +13 -10
  379. package/dist/tree-BGRglkKd.js.map +1 -0
  380. package/dist/{types-B3jzCp0p.js → types-BXgASBCL.js} +2 -2
  381. package/dist/{types-B3jzCp0p.js.map → types-BXgASBCL.js.map} +1 -1
  382. package/dist/{types-C1tnkEgM.d.ts → types-CW8ewATZ.d.ts} +4 -113
  383. package/dist/types-CW8ewATZ.d.ts.map +1 -0
  384. package/dist/{types-BqkVmHfv.d.ts → types-CmXY0PQf.d.ts} +2 -4
  385. package/dist/types-CmXY0PQf.d.ts.map +1 -0
  386. package/dist/{types-C02qtnG8.d.ts → types-D-mgRzlh.d.ts} +7 -28
  387. package/dist/types-D-mgRzlh.d.ts.map +1 -0
  388. package/dist/{types-Cq8mSbq8.d.ts → types-D8GhJoHk.d.ts} +7 -9
  389. package/dist/{types-Cq8mSbq8.d.ts.map → types-D8GhJoHk.d.ts.map} +1 -1
  390. package/dist/{types-IXD2HJzu.js → types-DqFMNTgK.js} +2 -4
  391. package/dist/types-DqFMNTgK.js.map +1 -0
  392. package/dist/{types-Cbe2fWBa.d.ts → types-DtMbFw6U.d.ts} +3 -3
  393. package/dist/{types-Cbe2fWBa.d.ts.map → types-DtMbFw6U.d.ts.map} +1 -1
  394. package/dist/{verdict-Dl0tiT1X.js → verdict-BGQmxQ8A.js} +3 -3
  395. package/dist/verdict-BGQmxQ8A.js.map +1 -0
  396. package/dist/{verdict-E4eRNf7-.d.ts → verdict-C24NELtN.d.ts} +2 -15
  397. package/dist/{verdict-E4eRNf7-.d.ts.map → verdict-C24NELtN.d.ts.map} +1 -1
  398. package/dist/{verdict-cache-Bm8EKL2s.js → verdict-cache-CL_7tePD.js} +2 -2
  399. package/dist/verdict-cache-CL_7tePD.js.map +1 -0
  400. package/dist/wire/index.d.ts +31 -410
  401. package/dist/wire/index.d.ts.map +1 -1
  402. package/dist/wire/index.js +2 -2
  403. package/docs/changes/jev-evidence-review.md +1 -1
  404. package/docs/changes/jev-product-adoption.md +1 -1
  405. package/docs/changes/jev-recorded-evidence.md +1 -1
  406. package/docs/design/statistics-decisions.md +17 -17
  407. package/docs/design.md +1 -1
  408. package/docs/evaluation-integrity.md +1 -1
  409. package/docs/proofs/campaign-attempt-retention-20261001/README.md +2 -2
  410. package/docs/public-api.md +138 -529
  411. package/docs/rollout.md +1 -1
  412. package/docs/trace-repair-admission.md +1 -1
  413. package/docs/wire-protocol.md +1 -1
  414. package/package.json +1 -1
  415. package/dist/active-curriculum-B_Lc9kfO.js +0 -61
  416. package/dist/active-curriculum-B_Lc9kfO.js.map +0 -1
  417. package/dist/agent-profile-VFcQncbW.d.ts.map +0 -1
  418. package/dist/agent-profile-cell-BK8mlqlq.js.map +0 -1
  419. package/dist/agent-profile-cell-BNp-Js9F.d.ts.map +0 -1
  420. package/dist/agreement-irr-BEWLIF3_.js.map +0 -1
  421. package/dist/analyze-runs-C84irm4i.js.map +0 -1
  422. package/dist/baseline-Udi_PLuT.js +0 -259
  423. package/dist/baseline-Udi_PLuT.js.map +0 -1
  424. package/dist/benchmark-CXmVVHH2.js +0 -562
  425. package/dist/benchmark-CXmVVHH2.js.map +0 -1
  426. package/dist/benchmark-command-By0vh8q7.js.map +0 -1
  427. package/dist/campaign-BudZ70zo.js.map +0 -1
  428. package/dist/chat-json-call-puMArmtW.js.map +0 -1
  429. package/dist/claude-jsonl-dZir12m6.js +0 -86
  430. package/dist/claude-jsonl-dZir12m6.js.map +0 -1
  431. package/dist/client-BzL9niqi.d.ts.map +0 -1
  432. package/dist/cost-ledger-BP8V4kUQ.js.map +0 -1
  433. package/dist/counterfactual-CPaWN99-.d.ts +0 -60
  434. package/dist/counterfactual-CPaWN99-.d.ts.map +0 -1
  435. package/dist/counterfactual-Dn3veueY.js +0 -98
  436. package/dist/counterfactual-Dn3veueY.js.map +0 -1
  437. package/dist/default-registry-COhk9g36.js.map +0 -1
  438. package/dist/default-registry-DzHiGruW.d.ts.map +0 -1
  439. package/dist/define-agent-eval-WSck0CZJ.d.ts.map +0 -1
  440. package/dist/dspy-rlm-engine-LRCu61m5.js.map +0 -1
  441. package/dist/effect-sizes-BhzEpXMc.js +0 -82
  442. package/dist/effect-sizes-BhzEpXMc.js.map +0 -1
  443. package/dist/emitter-HcCmFQl_.d.ts.map +0 -1
  444. package/dist/engine-3A_4jOlI.d.ts.map +0 -1
  445. package/dist/equal-terms-BtdXayCJ.js.map +0 -1
  446. package/dist/evaluation-6Yoi74gM.d.ts.map +0 -1
  447. package/dist/exporters-X4xwla8A.js.map +0 -1
  448. package/dist/external-optimizer-process-BjMGUuds.js.map +0 -1
  449. package/dist/external-optimizer-subprocess-BqW0hHcI.js.map +0 -1
  450. package/dist/failure-cluster-CbgEDcFJ.d.ts.map +0 -1
  451. package/dist/feedback-trajectory-C4EG0nNH.d.ts.map +0 -1
  452. package/dist/hf-dataset-BR2yhuNn.js.map +0 -1
  453. package/dist/index-BFRO6chs.d.ts.map +0 -1
  454. package/dist/index-BO41eGj5.d.ts.map +0 -1
  455. package/dist/index-CyszSg4O.d.ts.map +0 -1
  456. package/dist/index-DHKEAv3s.d.ts.map +0 -1
  457. package/dist/index-DPcngtwt.d.ts.map +0 -1
  458. package/dist/integrity-dLiDe2kD.js.map +0 -1
  459. package/dist/journal-DfRz9kps.js.map +0 -1
  460. package/dist/judge-gate-CE7CQAgt.d.ts.map +0 -1
  461. package/dist/kind-factory-BobI5Jy3.js.map +0 -1
  462. package/dist/ledger-core-Gq7yp8lP.js.map +0 -1
  463. package/dist/llm-client-CyBAoYiX.js.map +0 -1
  464. package/dist/llm-judge-CG12SQJq.js.map +0 -1
  465. package/dist/matrix-DSrSxjjy.d.ts.map +0 -1
  466. package/dist/matrix-Dm0BQW7U.js.map +0 -1
  467. package/dist/mean-DHoMiudD.js.map +0 -1
  468. package/dist/normal-DsJZtrJc.js +0 -25
  469. package/dist/normal-DsJZtrJc.js.map +0 -1
  470. package/dist/paired-arms-CwMGJsrS.js.map +0 -1
  471. package/dist/paired-binary-CvpFHfKZ.js.map +0 -1
  472. package/dist/paired-promotion-decision-DPKz8ZnF.d.ts.map +0 -1
  473. package/dist/pareto-Cm6ndrWN.js.map +0 -1
  474. package/dist/prime-protocol-CHKgA3a6.js.map +0 -1
  475. package/dist/prime-protocol-HiB9HX7E.d.ts.map +0 -1
  476. package/dist/produced-state-BsDmnwxc.js.map +0 -1
  477. package/dist/proposal-findings-CY1xKn_a.js.map +0 -1
  478. package/dist/query-BUCZCK7F.js.map +0 -1
  479. package/dist/redact-mtCCcT8z.d.ts.map +0 -1
  480. package/dist/release-confidence-CpuP65S5.js.map +0 -1
  481. package/dist/report-command-SC9nqb4M.js.map +0 -1
  482. package/dist/reward-CpCmAM8L.d.ts.map +0 -1
  483. package/dist/reward-hacking-RVdZ6Kkt.d.ts.map +0 -1
  484. package/dist/rollout-DZV1t2Wg.js.map +0 -1
  485. package/dist/run-record-C1E24G2A.d.ts.map +0 -1
  486. package/dist/run-record-C5e7FjhJ.js.map +0 -1
  487. package/dist/schema-2g7trUwH.d.ts.map +0 -1
  488. package/dist/schema-BuiujZ-g.js.map +0 -1
  489. package/dist/schema-CSf6qWgZ.js.map +0 -1
  490. package/dist/search-kernel-DyNEa6IU.d.ts.map +0 -1
  491. package/dist/search-ledger-file-DDQUgvCg.js.map +0 -1
  492. package/dist/search-shipper-BOSD46qv.js.map +0 -1
  493. package/dist/semantic-concept-judge-BQF8te0T.js.map +0 -1
  494. package/dist/sequential-Bf_pbE50.js.map +0 -1
  495. package/dist/server-e9oWO_bN.js.map +0 -1
  496. package/dist/skillopt-optimization-method-BiwA8nfX.js.map +0 -1
  497. package/dist/statistical-heldout-42NlCNDe.js.map +0 -1
  498. package/dist/statistical-heldout-CYpGaoDH.d.ts.map +0 -1
  499. package/dist/steps-Bg5-KVx1.d.ts.map +0 -1
  500. package/dist/store-tool-spans-CIX5arAG.js.map +0 -1
  501. package/dist/store-tool-spans-DdCSPa7C.d.ts.map +0 -1
  502. package/dist/student-t-DVPW7CdL.js +0 -39
  503. package/dist/student-t-DVPW7CdL.js.map +0 -1
  504. package/dist/summary-report-V_JACR4Y.js.map +0 -1
  505. package/dist/summary-report-bdFDXq0b.d.ts.map +0 -1
  506. package/dist/task-failure-attributes-hEmASjix.js.map +0 -1
  507. package/dist/terminal-record-DZyQZ3pz.js.map +0 -1
  508. package/dist/tool-groups-C3NEcdCM.d.ts.map +0 -1
  509. package/dist/tool-waste-BKgvd-TP.d.ts.map +0 -1
  510. package/dist/trajectory-Y1fmdlw7.d.ts +0 -24
  511. package/dist/trajectory-Y1fmdlw7.d.ts.map +0 -1
  512. package/dist/tree-C1XYeXvy.js.map +0 -1
  513. package/dist/types-BqkVmHfv.d.ts.map +0 -1
  514. package/dist/types-C02qtnG8.d.ts.map +0 -1
  515. package/dist/types-C1tnkEgM.d.ts.map +0 -1
  516. package/dist/types-IXD2HJzu.js.map +0 -1
  517. package/dist/usage-receipt-Cx3xNeyB.js +0 -76
  518. package/dist/usage-receipt-Cx3xNeyB.js.map +0 -1
  519. package/dist/verdict-Dl0tiT1X.js.map +0 -1
  520. package/dist/verdict-cache-Bm8EKL2s.js.map +0 -1
  521. package/docs/design/self-improvement-evidence-audit.md +0 -263
@@ -1,23 +1,22 @@
1
- import { l as errorMessage, s as ValidationError, t as AgentEvalError } from "./errors-DVZiqS7K.js";
2
- import { a as hashCanonical, i as compareCodeUnits, o as jsonDocument, r as canonicalString } from "./canonical-B2RqLofv.js";
3
- import { i as pairedBootstrap, t as mean$2 } from "./mean-DHoMiudD.js";
1
+ import { c as errorMessage, s as ValidationError, t as AgentEvalError } from "./errors-BcOs5MKW.js";
2
+ import { a as hashCanonical, i as compareCodeUnits, o as jsonDocument, r as canonicalString } from "./canonical-Dq2hOQ8L.js";
3
+ import { i as pairedBootstrap, t as mean$3 } from "./mean-BbA_JCzW.js";
4
4
  import { a as resolveModelPricing } from "./metrics-BKaPBtIG.js";
5
- import { a as CostLedgerPersistenceError, i as CostCeilingReachedError, n as CostAccountingIncompleteError, o as CostReceiptCaptureError, r as CostCallConflictError, s as CostReservationExceededError, t as CostLedger } from "./cost-ledger-BP8V4kUQ.js";
6
- import { d as withLedgerFileLock, f as writeLedgerFileAtomically } from "./journal-DfRz9kps.js";
7
- import "./ledger-core-Gq7yp8lP.js";
8
- import { N as createRunCostLedger, P as fsCampaignStorage, i as startExternalOptimizerModelProxy, r as runWithCleanup, x as AnalystFindingSchema, y as resolveExternalOptimizerProcessLimits } from "./external-optimizer-subprocess-BqW0hHcI.js";
9
- import { c as redactText } from "./redact-B5xXKqQ3.js";
10
- import { a as makeFinding } from "./types-IXD2HJzu.js";
11
- import { t as acquireSingleRunLock } from "./single-run-lock-CV9Eyd_q.js";
12
- import { M as RAW_FINDING_SCHEMA_PROMPT, N as RawAnalystFindingSchema, P as evidenceRefsFromRawFinding, g as TRACE_ANALYSIS_LIMITS, r as runTraceAnalyst } from "./kind-factory-BobI5Jy3.js";
13
- import { r as usageReceiptFromCostLedger } from "./usage-receipt-Cx3xNeyB.js";
14
- import { C as LlmResponseError, S as LlmCallError, n as callLlmJson } from "./llm-client-CyBAoYiX.js";
15
- import { t as createDspyRlmTraceEngine } from "./dspy-rlm-engine-LRCu61m5.js";
16
- import { i as otlpTextToTraceAnalysisStore, n as DEFAULT_MAX_TRACE_FILE_BYTES, t as BufferTraceStore } from "./store-otlp-DJ9dtA5x.js";
17
- import { i as summarizeAnalystBenchmarkRunner, n as runAnalystBenchmark, r as traceStoreEvidenceResolver } from "./benchmark-CXmVVHH2.js";
18
- import "./external-optimizer-process-BjMGUuds.js";
19
- import { t as assertEqualDeclarativeTerms } from "./equal-terms-BtdXayCJ.js";
20
- import { c as primeProtocolSha256, d as runPrimeExchange, f as decodeReplyRows, n as buildPrimePrompt, t as analystUsageReceiptFromPrimeUsage, u as projectPrimeTrajectory } from "./prime-protocol-CHKgA3a6.js";
5
+ import { a as CostLedgerPersistenceError, i as CostCeilingReachedError, n as CostAccountingIncompleteError, o as CostReceiptCaptureError, r as CostCallConflictError, s as CostReservationExceededError, t as CostLedger } from "./cost-ledger-D0352Z4d.js";
6
+ import { l as withLedgerFileLock, u as writeLedgerFileAtomically } from "./journal-CR4QikYp.js";
7
+ import "./ledger-core-DrJhbms9.js";
8
+ import { M as fsCampaignStorage, b as AnalystFindingSchema, i as startExternalOptimizerModelProxy, j as createRunCostLedger, r as runWithCleanup, v as resolveExternalOptimizerProcessLimits } from "./external-optimizer-subprocess-XIHBOSKt.js";
9
+ import { s as redactText } from "./redact-mtkTiJVk.js";
10
+ import { i as makeFinding } from "./types-DqFMNTgK.js";
11
+ import { t as acquireSingleRunLock } from "./single-run-lock-U58yf8N6.js";
12
+ import { a as LlmCallError, n as isRecord, o as LlmResponseError } from "./json-BhdsJaOQ.js";
13
+ import { A as RawAnalystFindingSchema, U as assertValidAnalystUsageReceipt, W as usageReceiptFromCostLedger, j as evidenceRefsFromRawFinding, k as RAW_FINDING_SCHEMA_PROMPT, m as TRACE_ANALYSIS_LIMITS, n as runTraceAnalyst } from "./kind-factory-Gy4fXixd.js";
14
+ import { n as callLlmJson } from "./llm-client-BshCREn6.js";
15
+ import { t as createDspyRlmTraceEngine } from "./dspy-rlm-engine-DhdCr1Dc.js";
16
+ import { i as otlpTextToTraceAnalysisStore, n as DEFAULT_MAX_TRACE_FILE_BYTES, t as BufferTraceStore } from "./store-otlp-BteDAbHK.js";
17
+ import "./external-optimizer-process-KVFGvYX1.js";
18
+ import { t as assertEqualDeclarativeTerms } from "./equal-terms-DbPGcVtI.js";
19
+ import { c as runPrimeExchange, l as decodeReplyRows, n as buildPrimePrompt, o as primeProtocolSha256, s as projectPrimeTrajectory, t as analystUsageReceiptFromPrimeUsage } from "./prime-protocol-BFgGrEMP.js";
21
20
  import { t as nodeHttpPrimeBridgeTransport } from "./prime-bridge-transport-Z3cpKGoV.js";
22
21
  import { createHash, randomUUID } from "node:crypto";
23
22
  import { constants, existsSync, lstatSync, readFileSync } from "node:fs";
@@ -28,6 +27,504 @@ import { arch, platform } from "node:os";
28
27
  import { pathToFileURL } from "node:url";
29
28
  import { link, lstat, mkdir, open, readFile, readdir, realpath, stat, unlink } from "node:fs/promises";
30
29
  import { TextDecoder as TextDecoder$1 } from "node:util";
30
+ import { performance } from "node:perf_hooks";
31
+ import { linearSumAssignment } from "linear-sum-assignment";
32
+ //#region src/analyst/benchmark-scoring.ts
33
+ function scoreAnalystFindings(testCase, findings) {
34
+ assertValidAnalystScoringCase(testCase);
35
+ const matchedFindingByIssue = matchFindingsToIssues(testCase.expectedIssues, findings);
36
+ const matchedIssueIds = testCase.expectedIssues.filter((_, index) => matchedFindingByIssue.has(index)).map((issue) => issue.id);
37
+ const missedIssueIds = testCase.expectedIssues.filter((_, index) => !matchedFindingByIssue.has(index)).map((issue) => issue.id);
38
+ const supportedFindingIndexes = new Set(matchedFindingByIssue.values());
39
+ const unsupportedFindingIndexes = findings.map((_, index) => index).filter((index) => !supportedFindingIndexes.has(index));
40
+ const expectedIssueCount = testCase.expectedIssues.length;
41
+ const issueRecall = expectedIssueCount === 0 ? 1 : matchedIssueIds.length / expectedIssueCount;
42
+ const findingPrecision = findings.length === 0 ? expectedIssueCount === 0 ? 1 : 0 : supportedFindingIndexes.size / findings.length;
43
+ const f1 = harmonicMeanScore(findingPrecision, issueRecall);
44
+ const allEvidence = findings.flatMap((finding) => finding.evidence_refs);
45
+ const criticalIssues = testCase.expectedIssues.filter((issue) => (issue.criticalEvidence?.length ?? 0) > 0);
46
+ const criticalHits = testCase.expectedIssues.filter((issue) => {
47
+ if ((issue.criticalEvidence?.length ?? 0) === 0) return false;
48
+ return matchesEvidence(allEvidence, issue.criticalEvidence ?? [], "any");
49
+ }).length;
50
+ const findingsWithEvidence = findings.filter((finding) => finding.evidence_refs.length > 0).length;
51
+ const unlabeledEvidence = testCase.labeledEvidence ? allEvidence.filter((ref) => !testCase.labeledEvidence.some((expected) => evidenceMatches(ref, expected))) : [];
52
+ return {
53
+ expectedIssueCount,
54
+ matchedIssueIds,
55
+ missedIssueIds,
56
+ supportedFindingIndexes: [...supportedFindingIndexes].sort((a, b) => a - b),
57
+ unsupportedFindingIndexes,
58
+ unlabeledEvidence,
59
+ issueRecall,
60
+ findingPrecision,
61
+ f1,
62
+ criticalStepAccuracy: criticalIssues.length === 0 ? null : criticalHits / criticalIssues.length,
63
+ citationCoverage: findings.length === 0 ? null : findingsWithEvidence / findings.length,
64
+ citationExcerptCoverage: allEvidence.length === 0 ? null : allEvidence.filter((evidence) => Boolean(evidence.excerpt?.trim())).length / allEvidence.length,
65
+ citationLabelAgreement: testCase.labeledEvidence === void 0 ? null : allEvidence.length === 0 ? findings.length === 0 ? null : 0 : (allEvidence.length - unlabeledEvidence.length) / allEvidence.length,
66
+ predictionOnLabelEmptyCase: expectedIssueCount === 0 && findings.length > 0
67
+ };
68
+ }
69
+ function assertValidAnalystScoringCase(testCase) {
70
+ if (!testCase.id.trim()) throw new TypeError("analyst benchmark case id must not be empty");
71
+ const ids = /* @__PURE__ */ new Set();
72
+ for (const issue of testCase.expectedIssues) {
73
+ if (!issue.id.trim()) throw new TypeError(`${testCase.id}: expected issue id must not be empty`);
74
+ if (ids.has(issue.id)) throw new TypeError(`${testCase.id}: duplicate expected issue id '${issue.id}'`);
75
+ ids.add(issue.id);
76
+ if (!issue.findingIds?.length && !issue.areas?.length && !issue.subjects?.length && !issue.evidence?.length) throw new TypeError(`${testCase.id}/${issue.id}: expected issue must identify a finding by id, area, subject, or evidence`);
77
+ }
78
+ for (const ref of testCase.labeledEvidence ?? []) if (!ref.uri.trim()) throw new TypeError(`${testCase.id}: labeled evidence URI must not be empty`);
79
+ }
80
+ function harmonicMeanScore(a, b) {
81
+ return a + b === 0 ? 0 : 2 * a * b / (a + b);
82
+ }
83
+ function matchFindingsToIssues(issues, findings) {
84
+ if (issues.length === 0) return /* @__PURE__ */ new Map();
85
+ const cardinalityWeight = issues.length + 1;
86
+ const scores = issues.map((issue) => [...findings.map((finding) => {
87
+ if (!findingMatchesIssue(finding, issue)) return -1;
88
+ const criticalHit = (issue.criticalEvidence?.length ?? 0) > 0 && matchesEvidence(finding.evidence_refs, issue.criticalEvidence ?? [], "any");
89
+ return cardinalityWeight + Number(criticalHit);
90
+ }), ...Array.from({ length: issues.length }, () => 0)]);
91
+ const assignment = linearSumAssignment(scores, { maximaze: true }).rowAssignments;
92
+ const matches = /* @__PURE__ */ new Map();
93
+ for (const [issueIndex, column] of assignment.entries()) {
94
+ if (column < 0 || column >= findings.length) continue;
95
+ if (!findingMatchesIssue(findings[column], issues[issueIndex])) continue;
96
+ matches.set(issueIndex, column);
97
+ }
98
+ return matches;
99
+ }
100
+ function findingMatchesIssue(finding, issue) {
101
+ if (issue.findingIds && !issue.findingIds.includes(finding.finding_id)) return false;
102
+ if (issue.areas && !issue.areas.includes(finding.area)) return false;
103
+ if (issue.subjects && (!finding.subject || !issue.subjects.includes(finding.subject))) return false;
104
+ if (issue.evidence && !matchesEvidence(finding.evidence_refs, issue.evidence, issue.evidenceMode ?? "any")) return false;
105
+ return true;
106
+ }
107
+ function matchesEvidence(actual, expected, mode) {
108
+ if (expected.length === 0) return true;
109
+ const match = (target) => actual.some((ref) => evidenceMatches(ref, target));
110
+ return mode === "all" ? expected.every(match) : expected.some(match);
111
+ }
112
+ function evidenceMatches(actual, expected) {
113
+ return actual.uri === expected.uri && (expected.kind === void 0 || actual.kind === expected.kind);
114
+ }
115
+ //#endregion
116
+ //#region src/analyst/benchmark-summary.ts
117
+ function summarizeAnalystBenchmarkRunner(runnerId, observations) {
118
+ const issueBearing = observations.filter((observation) => observation.labelState === "positive");
119
+ const completed = observations.filter((observation) => !observation.error);
120
+ const expectedIssues = issueBearing.reduce((sum, observation) => sum + observation.score.expectedIssueCount, 0);
121
+ const matchedIssues = issueBearing.reduce((sum, observation) => sum + observation.score.matchedIssueIds.length, 0);
122
+ const issueFindings = issueBearing.reduce((sum, observation) => sum + (observation.error ? 0 : observation.findings.length), 0);
123
+ const supportedFindings = issueBearing.reduce((sum, observation) => sum + observation.score.supportedFindingIndexes.length, 0);
124
+ const issueRecall = expectedIssues === 0 ? null : matchedIssues / expectedIssues;
125
+ const findingPrecision = expectedIssues === 0 ? null : issueFindings === 0 ? 0 : supportedFindings / issueFindings;
126
+ const macroIssueRecall = issueBearing.length === 0 ? null : mean$2(issueBearing.map((observation) => observation.score.issueRecall));
127
+ const macroFindingPrecision = issueBearing.length === 0 ? null : mean$2(issueBearing.map((observation) => observation.score.findingPrecision));
128
+ const macroF1 = issueBearing.length === 0 ? null : mean$2(issueBearing.map((observation) => observation.score.f1));
129
+ const critical = observations.map((observation) => observation.score.criticalStepAccuracy).filter((value) => value !== null);
130
+ const findingsWithEvidence = completed.reduce((sum, observation) => sum + observation.findings.filter((finding) => finding.evidence_refs.length > 0).length, 0);
131
+ const allFindings = completed.reduce((sum, observation) => sum + observation.findings.length, 0);
132
+ const allCitations = completed.flatMap((observation) => observation.findings.flatMap((finding) => finding.evidence_refs));
133
+ const citationObservations = completed.filter((observation) => observation.score.citationLabelAgreement !== null);
134
+ const citationCount = citationObservations.reduce((sum, observation) => sum + observation.findings.reduce((count, finding) => count + finding.evidence_refs.length, 0), 0);
135
+ const invalidCitationCount = citationObservations.reduce((sum, observation) => sum + observation.score.unlabeledEvidence.length, 0);
136
+ const trustedNegative = observations.filter((observation) => observation.labelState === "trusted-negative");
137
+ const completedTrustedNegative = trustedNegative.filter((observation) => !observation.error);
138
+ const unlabeled = observations.filter((observation) => observation.labelState === "unlabeled");
139
+ const completedUnlabeled = unlabeled.filter((observation) => !observation.error);
140
+ const resolvedCitations = completed.reduce((sum, observation) => sum + (observation.evidenceResolution?.resolved ?? 0), 0);
141
+ const unresolvedCitations = completed.reduce((sum, observation) => sum + (observation.evidenceResolution?.unresolvedEvidence.length ?? 0), 0);
142
+ const citationResolutionErrors = completed.reduce((sum, observation) => sum + (observation.evidenceResolution?.errors.length ?? 0), 0);
143
+ const resolutionAttempts = completed.filter((observation) => observation.findings.some((finding) => finding.evidence_refs.length > 0));
144
+ const citationResolutionUnknownRuns = resolutionAttempts.filter((observation) => !observation.evidenceResolution || observation.evidenceResolution.errors.length > 0).length;
145
+ const usages = observations.map((observation) => observation.usage);
146
+ const knownCostUsd = stableSum(usages.map((usage) => {
147
+ if (!usage) return 0;
148
+ return usage.cost.kind === "uncaptured" ? usage.knownCostUsd ?? 0 : usage.cost.usd;
149
+ }));
150
+ const predictionAgreement = repeatedObservationAgreement(observations, predictionSignature);
151
+ const matchedLabelAgreement = repeatedObservationAgreement(observations.filter((observation) => observation.labelState === "positive"), matchedLabelSignature);
152
+ return {
153
+ runnerId,
154
+ plannedRuns: observations.length,
155
+ completedRuns: observations.filter((observation) => !observation.error).length,
156
+ failedRuns: observations.filter((observation) => Boolean(observation.error)).length,
157
+ issueBearingRuns: issueBearing.length,
158
+ trustedNegativeRuns: trustedNegative.length,
159
+ unlabeledRuns: unlabeled.length,
160
+ issueRecall,
161
+ findingPrecision,
162
+ f1: findingPrecision === null || issueRecall === null ? null : harmonicMeanScore(findingPrecision, issueRecall),
163
+ macroIssueRecall,
164
+ macroFindingPrecision,
165
+ macroF1,
166
+ criticalStepAccuracy: critical.length === 0 ? null : mean$2(critical),
167
+ citationCoverage: allFindings === 0 ? null : findingsWithEvidence / allFindings,
168
+ citationExcerptCoverage: allCitations.length === 0 ? null : allCitations.filter((evidence) => Boolean(evidence.excerpt?.trim())).length / allCitations.length,
169
+ citationLabelAgreement: citationObservations.length === 0 ? null : citationCount === 0 ? 0 : (citationCount - invalidCitationCount) / citationCount,
170
+ citationResolution: resolutionAttempts.length === 0 || citationResolutionUnknownRuns > 0 || resolvedCitations + unresolvedCitations === 0 ? null : resolvedCitations / (resolvedCitations + unresolvedCitations),
171
+ citationResolutionUnknownRuns,
172
+ unresolvedCitations,
173
+ citationResolutionErrors,
174
+ trustedNegativeFalsePositiveRate: completedTrustedNegative.length === 0 ? null : completedTrustedNegative.filter((observation) => observation.score.predictionOnLabelEmptyCase).length / completedTrustedNegative.length,
175
+ trustedNegativeFailureRate: trustedNegative.length === 0 ? null : trustedNegative.filter((observation) => Boolean(observation.error)).length / trustedNegative.length,
176
+ unlabeledPredictionRate: completedUnlabeled.length === 0 ? null : completedUnlabeled.filter((observation) => observation.findings.length > 0).length / completedUnlabeled.length,
177
+ unlabeledFailureRate: unlabeled.length === 0 ? null : unlabeled.filter((observation) => Boolean(observation.error)).length / unlabeled.length,
178
+ predictionAgreement: predictionAgreement.value,
179
+ predictionAgreementCases: predictionAgreement.cases,
180
+ matchedLabelAgreement: matchedLabelAgreement.value,
181
+ matchedLabelAgreementCases: matchedLabelAgreement.cases,
182
+ latencyMs: latencyDistribution(observations.map((observation) => observation.latencyMs).filter((value) => value !== null)),
183
+ benchmarkClockLatencyRuns: observations.filter((observation) => observation.latencySource === "benchmark-clock").length,
184
+ runnerReportedLatencyRuns: observations.filter((observation) => observation.latencySource === "runner-reported").length,
185
+ latencyUnknownRuns: observations.filter((observation) => observation.latencySource === "uncaptured").length,
186
+ calls: usages.reduce((sum, usage) => sum + (usage?.calls ?? 0), 0),
187
+ callsUnknownRuns: usages.filter((usage) => !usage || usage.calls === null).length,
188
+ inputTokens: usages.reduce((sum, usage) => sum + (usage?.tokens?.input ?? 0), 0),
189
+ outputTokens: usages.reduce((sum, usage) => sum + (usage?.tokens?.output ?? 0), 0),
190
+ reasoningTokens: usages.reduce((sum, usage) => sum + (usage?.tokens?.reasoning ?? 0), 0),
191
+ cachedTokens: usages.reduce((sum, usage) => sum + (usage?.tokens?.cached ?? 0), 0),
192
+ cacheWriteTokens: usages.reduce((sum, usage) => sum + (usage?.tokens?.cacheWrite ?? 0), 0),
193
+ tokenUsageUnknownRuns: usages.filter((usage) => !usage?.tokens).length,
194
+ reasoningTokenUsageUnknownRuns: usages.filter((usage) => usage?.tokens?.reasoning === void 0).length,
195
+ cachedTokenUsageUnknownRuns: usages.filter((usage) => usage?.tokens?.cached === void 0).length,
196
+ cacheWriteTokenUsageUnknownRuns: usages.filter((usage) => usage?.tokens?.cacheWrite === void 0).length,
197
+ knownCostUsd,
198
+ costUnknownRuns: usages.filter((usage) => !usage || usage.cost.kind === "uncaptured").length
199
+ };
200
+ }
201
+ function mean$2(values) {
202
+ return values.length === 0 ? 0 : stableSum(values) / values.length;
203
+ }
204
+ function stableSum(values) {
205
+ const ordered = [...values].sort((left, right) => Math.abs(left) - Math.abs(right) || left - right);
206
+ let sum = 0;
207
+ let correction = 0;
208
+ for (const value of ordered) {
209
+ const next = sum + value;
210
+ correction += Math.abs(sum) >= Math.abs(value) ? sum - next + value : value - next + sum;
211
+ sum = next;
212
+ }
213
+ return sum + correction;
214
+ }
215
+ function latencyDistribution(values) {
216
+ if (values.length === 0) return null;
217
+ const sorted = [...values].sort((a, b) => a - b);
218
+ return {
219
+ min: sorted[0],
220
+ mean: mean$2(sorted),
221
+ p50: percentile(sorted, .5),
222
+ p95: percentile(sorted, .95),
223
+ max: sorted.at(-1)
224
+ };
225
+ }
226
+ function percentile(sorted, quantile) {
227
+ if (sorted.length === 0) return 0;
228
+ return sorted[Math.ceil(quantile * sorted.length) - 1] ?? sorted.at(-1) ?? 0;
229
+ }
230
+ function repeatedObservationAgreement(observations, signature) {
231
+ const byCase = /* @__PURE__ */ new Map();
232
+ for (const observation of observations) {
233
+ const rows = byCase.get(observation.caseId) ?? [];
234
+ rows.push(observation);
235
+ byCase.set(observation.caseId, rows);
236
+ }
237
+ const caseAgreements = [];
238
+ for (const rows of byCase.values()) {
239
+ const agreements = [];
240
+ for (let left = 0; left < rows.length; left++) for (let right = left + 1; right < rows.length; right++) agreements.push(jaccard(signature(rows[left]), signature(rows[right])));
241
+ if (agreements.length > 0) caseAgreements.push(mean$2(agreements));
242
+ }
243
+ return {
244
+ value: caseAgreements.length === 0 ? null : mean$2(caseAgreements),
245
+ cases: caseAgreements.length
246
+ };
247
+ }
248
+ function matchedLabelSignature(observation) {
249
+ if (observation.error) return [`error:${observation.error.class}`];
250
+ return observation.score.matchedIssueIds;
251
+ }
252
+ function predictionSignature(observation) {
253
+ if (observation.error) return [`error:${observation.error.class}`];
254
+ return observation.findings.map((finding) => JSON.stringify([finding.finding_id, finding.evidence_refs.map((evidence) => [
255
+ evidence.kind,
256
+ evidence.uri,
257
+ evidence.excerpt ?? null
258
+ ]).sort((left, right) => compareCodeUnits(JSON.stringify(left), JSON.stringify(right)))])).sort();
259
+ }
260
+ function jaccard(left, right) {
261
+ const a = new Set(left);
262
+ const b = new Set(right);
263
+ const union = /* @__PURE__ */ new Set([...a, ...b]);
264
+ if (union.size === 0) return 1;
265
+ let intersection = 0;
266
+ for (const value of a) if (b.has(value)) intersection += 1;
267
+ return intersection / union.size;
268
+ }
269
+ //#endregion
270
+ //#region src/analyst/benchmark.ts
271
+ /**
272
+ * Resolve canonical `trace://<trace>/span/<span>` evidence against a trace store.
273
+ * Other evidence kinds and URI schemes require a caller-supplied resolver.
274
+ */
275
+ function traceStoreEvidenceResolver(getStore) {
276
+ return async ({ caseInput, evidence, signal }) => {
277
+ if (evidence.kind !== "span") return false;
278
+ const location = parseTraceSpanUri(evidence.uri);
279
+ if (!location) return false;
280
+ const result = await getStore(caseInput).viewSpans({
281
+ trace_id: location.traceId,
282
+ span_ids: [location.spanId]
283
+ }, signal ? { signal } : void 0);
284
+ return result.trace_id === location.traceId && result.missing_span_ids.length === 0 && result.spans.some((span) => span.span_id === location.spanId);
285
+ };
286
+ }
287
+ async function runAnalystBenchmark(options) {
288
+ validateBenchmarkOptions(options);
289
+ const startedAt = (/* @__PURE__ */ new Date()).toISOString();
290
+ const repetitions = options.repetitions ?? 1;
291
+ const runnerOrderSeed = options.runnerOrderSeed ?? 0;
292
+ const allJobs = benchmarkJobs(options.cases, options.runners, repetitions, runnerOrderSeed);
293
+ const maxConcurrency = Math.min(options.maxConcurrency ?? 1, allJobs.length);
294
+ const initialObservations = validateInitialObservations(options.initialObservations ?? [], allJobs);
295
+ const completed = new Set(initialObservations.map(observationKey$1));
296
+ const jobs = allJobs.filter((job) => !completed.has(jobKey(job)));
297
+ const observations = [...initialObservations];
298
+ let cursor = 0;
299
+ const worker = async () => {
300
+ while (cursor < jobs.length) {
301
+ options.signal?.throwIfAborted();
302
+ const job = jobs[cursor++];
303
+ const observation = await runBenchmarkJob(job, options.signal, options.resolveEvidence);
304
+ options.signal?.throwIfAborted();
305
+ await options.onObservation?.(observation);
306
+ options.signal?.throwIfAborted();
307
+ observations.push(observation);
308
+ }
309
+ };
310
+ await Promise.all(Array.from({ length: Math.min(maxConcurrency, jobs.length) }, worker));
311
+ options.signal?.throwIfAborted();
312
+ const runnerOrder = new Map(options.runners.map((runner, index) => [runner.id, index]));
313
+ const caseOrder = new Map(options.cases.map((testCase, index) => [testCase.id, index]));
314
+ observations.sort((a, b) => (runnerOrder.get(a.runnerId) ?? 0) - (runnerOrder.get(b.runnerId) ?? 0) || (caseOrder.get(a.caseId) ?? 0) - (caseOrder.get(b.caseId) ?? 0) || a.repetition - b.repetition);
315
+ return {
316
+ provenance: {
317
+ ...options.benchmark,
318
+ startedAt,
319
+ endedAt: (/* @__PURE__ */ new Date()).toISOString(),
320
+ caseCount: options.cases.length,
321
+ runnerIds: options.runners.map((runner) => runner.id),
322
+ repetitions,
323
+ maxConcurrency,
324
+ runnerOrderSeed
325
+ },
326
+ observations,
327
+ summaries: options.runners.map((runner) => summarizeAnalystBenchmarkRunner(runner.id, observations.filter((observation) => observation.runnerId === runner.id)))
328
+ };
329
+ }
330
+ async function runBenchmarkJob(job, signal, resolveEvidence) {
331
+ const started = performance.now();
332
+ try {
333
+ const output = await job.runner.analyze(job.testCase.input, {
334
+ caseId: job.testCase.id,
335
+ repetition: job.repetition,
336
+ signal
337
+ });
338
+ if (output.usage) assertValidAnalystUsageReceipt(output.usage, "analyst benchmark usage");
339
+ const benchmarkLatencyMs = performance.now() - started;
340
+ const latency = resolveBenchmarkLatency(output.observedLatencyMs, benchmarkLatencyMs);
341
+ const scoredFindings = output.error ? [] : output.findings;
342
+ return {
343
+ runnerId: job.runner.id,
344
+ caseId: job.testCase.id,
345
+ clusterId: job.testCase.clusterId,
346
+ labelState: job.testCase.labelState,
347
+ repetition: job.repetition,
348
+ executionIndex: job.executionIndex,
349
+ latencyMs: latency.value,
350
+ latencySource: latency.source,
351
+ findings: output.findings,
352
+ score: scoreAnalystFindings(job.testCase, scoredFindings),
353
+ evidenceResolution: resolveEvidence ? await resolveFindingEvidence(job.testCase, output.findings, resolveEvidence, signal) : void 0,
354
+ caseTags: [...job.testCase.tags ?? []],
355
+ caseMetadata: job.testCase.metadata,
356
+ usage: output.usage,
357
+ runnerMetadata: output.metadata,
358
+ ...output.error ? { error: output.error } : {}
359
+ };
360
+ } catch (error) {
361
+ if (signal?.aborted) throw error;
362
+ const findings = [];
363
+ return {
364
+ runnerId: job.runner.id,
365
+ caseId: job.testCase.id,
366
+ clusterId: job.testCase.clusterId,
367
+ labelState: job.testCase.labelState,
368
+ repetition: job.repetition,
369
+ executionIndex: job.executionIndex,
370
+ latencyMs: performance.now() - started,
371
+ latencySource: "benchmark-clock",
372
+ findings,
373
+ score: scoreAnalystFindings(job.testCase, findings),
374
+ caseTags: [...job.testCase.tags ?? []],
375
+ caseMetadata: job.testCase.metadata,
376
+ error: {
377
+ class: error instanceof Error ? error.constructor.name : "Error",
378
+ message: error instanceof Error ? error.message : String(error)
379
+ }
380
+ };
381
+ }
382
+ }
383
+ function resolveBenchmarkLatency(observedLatencyMs, fallbackMs) {
384
+ if (observedLatencyMs === void 0) return {
385
+ value: fallbackMs,
386
+ source: "benchmark-clock"
387
+ };
388
+ if (observedLatencyMs === null) return {
389
+ value: null,
390
+ source: "uncaptured"
391
+ };
392
+ if (!Number.isFinite(observedLatencyMs) || observedLatencyMs < 0) throw new RangeError("analyst benchmark observedLatencyMs must be finite and non-negative");
393
+ return {
394
+ value: observedLatencyMs,
395
+ source: "runner-reported"
396
+ };
397
+ }
398
+ function benchmarkJobs(cases, runners, repetitions, runnerOrderSeed) {
399
+ const seededRunners = [...runners].sort((left, right) => stableHash(`${runnerOrderSeed}\u0000${left.id}`) - stableHash(`${runnerOrderSeed}\u0000${right.id}`) || left.id.localeCompare(right.id));
400
+ let executionIndex = 0;
401
+ return cases.flatMap((testCase, caseIndex) => Array.from({ length: repetitions }, (_, repetition) => {
402
+ const rotation = (caseIndex * repetitions + repetition) % seededRunners.length;
403
+ return [...seededRunners.slice(rotation), ...seededRunners.slice(0, rotation)].map((runner) => ({
404
+ runner,
405
+ testCase,
406
+ repetition,
407
+ executionIndex: executionIndex++
408
+ }));
409
+ }).flat());
410
+ }
411
+ function validateInitialObservations(observations, jobs) {
412
+ const expected = new Map(jobs.map((job) => [jobKey(job), job]));
413
+ const seen = /* @__PURE__ */ new Set();
414
+ return observations.map((observation) => {
415
+ const key = observationKey$1(observation);
416
+ if (seen.has(key)) throw new TypeError(`duplicate initial analyst benchmark observation '${observation.runnerId}/${observation.caseId}/${observation.repetition}'`);
417
+ seen.add(key);
418
+ const job = expected.get(key);
419
+ if (!job) throw new TypeError(`initial analyst benchmark observation does not match a planned job: '${observation.runnerId}/${observation.caseId}/${observation.repetition}'`);
420
+ if (observation.executionIndex !== job.executionIndex) throw new TypeError(`initial analyst benchmark observation '${observation.runnerId}/${observation.caseId}/${observation.repetition}' has executionIndex ${observation.executionIndex}; expected ${job.executionIndex}`);
421
+ if (observation.clusterId !== job.testCase.clusterId || observation.labelState !== job.testCase.labelState) throw new TypeError(`initial analyst benchmark observation '${observation.runnerId}/${observation.caseId}/${observation.repetition}' does not match the current case labels`);
422
+ if (JSON.stringify(observation.caseTags) !== JSON.stringify(job.testCase.tags ?? []) || JSON.stringify(observation.caseMetadata) !== JSON.stringify(job.testCase.metadata)) throw new TypeError(`initial analyst benchmark observation '${observation.runnerId}/${observation.caseId}/${observation.repetition}' does not match the current case metadata`);
423
+ const expectedScore = scoreAnalystFindings(job.testCase, observation.error ? [] : observation.findings);
424
+ if (JSON.stringify(observation.score) !== JSON.stringify(expectedScore)) throw new TypeError(`initial analyst benchmark observation '${observation.runnerId}/${observation.caseId}/${observation.repetition}' has stale or invalid scores`);
425
+ if (observation.usage) assertValidAnalystUsageReceipt(observation.usage, `initial analyst benchmark observation '${observation.runnerId}/${observation.caseId}/${observation.repetition}' usage`);
426
+ if (![
427
+ "benchmark-clock",
428
+ "runner-reported",
429
+ "uncaptured"
430
+ ].includes(observation.latencySource) || observation.latencySource === "uncaptured" && observation.latencyMs !== null || observation.latencySource !== "uncaptured" && (observation.latencyMs === null || !Number.isFinite(observation.latencyMs) || observation.latencyMs < 0)) throw new TypeError(`initial analyst benchmark observation '${observation.runnerId}/${observation.caseId}/${observation.repetition}' has invalid latency`);
431
+ return { ...observation };
432
+ });
433
+ }
434
+ function jobKey(job) {
435
+ return `${job.runner.id}\u0000${job.testCase.id}\u0000${job.repetition}`;
436
+ }
437
+ function observationKey$1(observation) {
438
+ return `${observation.runnerId}\u0000${observation.caseId}\u0000${observation.repetition}`;
439
+ }
440
+ async function resolveFindingEvidence(testCase, findings, resolver, signal) {
441
+ const evidence = findings.flatMap((finding) => finding.evidence_refs);
442
+ const resolved = [];
443
+ const unresolvedEvidence = [];
444
+ const errors = [];
445
+ for (const ref of evidence) {
446
+ signal?.throwIfAborted();
447
+ try {
448
+ if (await resolver({
449
+ caseId: testCase.id,
450
+ caseInput: testCase.input,
451
+ evidence: ref,
452
+ signal
453
+ })) resolved.push(ref);
454
+ else unresolvedEvidence.push(ref);
455
+ } catch (error) {
456
+ if (signal?.aborted) throw error;
457
+ errors.push({
458
+ evidence: ref,
459
+ class: error instanceof Error ? error.constructor.name : "Error",
460
+ message: error instanceof Error ? error.message : String(error)
461
+ });
462
+ }
463
+ }
464
+ return {
465
+ checked: evidence.length,
466
+ resolved: resolved.length,
467
+ unresolvedEvidence,
468
+ errors,
469
+ validity: evidence.length === 0 || errors.length > 0 ? null : resolved.length / evidence.length
470
+ };
471
+ }
472
+ function parseTraceSpanUri(uri) {
473
+ const match = /^trace:\/\/([^/]+)\/span\/([^/]+)$/.exec(uri);
474
+ if (!match) return null;
475
+ try {
476
+ const traceId = decodeURIComponent(match[1]);
477
+ const spanId = decodeURIComponent(match[2]);
478
+ return traceId && spanId ? {
479
+ traceId,
480
+ spanId
481
+ } : null;
482
+ } catch {
483
+ return null;
484
+ }
485
+ }
486
+ function validateBenchmarkOptions(options) {
487
+ if (options.cases.length === 0) throw new TypeError("runAnalystBenchmark requires cases");
488
+ if (options.runners.length === 0) throw new TypeError("runAnalystBenchmark requires runners");
489
+ const repetitions = options.repetitions ?? 1;
490
+ const maxConcurrency = options.maxConcurrency ?? 1;
491
+ if (!Number.isSafeInteger(repetitions) || repetitions < 1) throw new RangeError("runAnalystBenchmark repetitions must be a positive safe integer");
492
+ if (!Number.isSafeInteger(maxConcurrency) || maxConcurrency < 1) throw new RangeError("runAnalystBenchmark maxConcurrency must be a positive safe integer");
493
+ if (!Number.isSafeInteger(options.runnerOrderSeed ?? 0)) throw new RangeError("runAnalystBenchmark runnerOrderSeed must be a safe integer");
494
+ assertUniqueNonEmpty(options.cases.map((testCase) => testCase.id), "case");
495
+ assertUniqueNonEmpty(options.runners.map((runner) => runner.id), "runner");
496
+ for (const testCase of options.cases) validateBenchmarkCase(testCase);
497
+ }
498
+ function validateBenchmarkCase(testCase) {
499
+ assertValidAnalystScoringCase(testCase);
500
+ if (!testCase.clusterId.trim()) throw new TypeError(`${testCase.id}: analyst benchmark clusterId must not be empty`);
501
+ if (testCase.labelState !== "positive" && testCase.labelState !== "trusted-negative" && testCase.labelState !== "unlabeled") throw new TypeError(`${testCase.id}: analyst benchmark labelState is invalid`);
502
+ if (testCase.labelState === "positive" && testCase.expectedIssues.length === 0) throw new TypeError(`${testCase.id}: positive case requires at least one expected issue`);
503
+ if (testCase.labelState !== "positive" && testCase.expectedIssues.length > 0) throw new TypeError(`${testCase.id}: ${testCase.labelState} case cannot contain expected issues`);
504
+ }
505
+ function assertUniqueNonEmpty(values, label) {
506
+ const seen = /* @__PURE__ */ new Set();
507
+ for (const value of values) {
508
+ if (!value.trim()) throw new TypeError(`analyst benchmark ${label} id must not be empty`);
509
+ if (seen.has(value)) throw new TypeError(`duplicate analyst benchmark ${label} id '${value}'`);
510
+ seen.add(value);
511
+ }
512
+ }
513
+ /** 32-bit FNV-1a over raw UTF-16 code units, left SIGNED so subtracting two
514
+ * results is a valid comparator.
515
+ *
516
+ * Frozen: it fixes the runner order a benchmark reports. Adding the `>>> 0`
517
+ * the other variants carry would change that order, which is why this one
518
+ * does not have it. */
519
+ function stableHash(value) {
520
+ let hash = 2166136261;
521
+ for (let index = 0; index < value.length; index += 1) {
522
+ hash ^= value.charCodeAt(index);
523
+ hash = Math.imul(hash, 16777619);
524
+ }
525
+ return hash >>> 0;
526
+ }
527
+ //#endregion
31
528
  //#region src/analyst/benchmark-dataset-utils.ts
32
529
  function normalizeBenchmarkLabel(value) {
33
530
  const normalized = nonEmpty$1(value, "benchmark label").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
@@ -47,9 +544,6 @@ function assertStepWithinRange(step, stepCount, field) {
47
544
  function defaultStepUri(trajectoryId, step) {
48
545
  return `trace://${encodeURIComponent(trajectoryId)}/span/step-${step}`;
49
546
  }
50
- function isRecord$2(value) {
51
- return typeof value === "object" && value !== null && !Array.isArray(value);
52
- }
53
547
  function positiveStep(value, field) {
54
548
  if (!Number.isSafeInteger(value) || value < 1) throw new RangeError(`${field} must be a positive safe integer`);
55
549
  return value;
@@ -203,7 +697,7 @@ function parseAgentRxPredictions(output, trajectoryId) {
203
697
  let failures;
204
698
  let report;
205
699
  if (Array.isArray(output)) failures = output;
206
- else if (isRecord$2(output)) {
700
+ else if (isRecord(output)) {
207
701
  assertMatchingAgentRxTaskId(output.task_id, trajectoryId, "report.task_id");
208
702
  if (!Object.hasOwn(output, "failures")) throw new TypeError(`AgentRx prediction '${trajectoryId}' report must contain failures`);
209
703
  failures = output.failures;
@@ -219,11 +713,11 @@ function parseAgentRxPredictions(output, trajectoryId) {
219
713
  } else throw new TypeError(`AgentRx prediction '${trajectoryId}' must be a report or failures array`);
220
714
  if (!Array.isArray(failures)) throw new TypeError(`AgentRx prediction '${trajectoryId}' failures must be an array`);
221
715
  if (failures.length === 0) throw new TypeError(`AgentRx prediction '${trajectoryId}' failures must contain a judge prediction`);
222
- if (isRecord$2(output) && output.num_judges !== void 0 && output.num_judges !== failures.length) throw new TypeError(`AgentRx prediction '${trajectoryId}' declares ${output.num_judges} judges but contains ${failures.length} failures`);
716
+ if (isRecord(output) && output.num_judges !== void 0 && output.num_judges !== failures.length) throw new TypeError(`AgentRx prediction '${trajectoryId}' declares ${output.num_judges} judges but contains ${failures.length} failures`);
223
717
  return {
224
718
  predictions: failures.map((value, index) => {
225
719
  const field = `AgentRx prediction '${trajectoryId}' failures[${index}]`;
226
- if (!isRecord$2(value)) throw new TypeError(`${field} must be an object`);
720
+ if (!isRecord(value)) throw new TypeError(`${field} must be an object`);
227
721
  assertMatchingAgentRxTaskId(value.task_id, trajectoryId, `${field}.task_id`);
228
722
  const failureCase = parseAgentRxFailureCase(value.failure_case, `${field}.failure_case`);
229
723
  if (!Number.isSafeInteger(value.step_number)) throw new TypeError(`${field}.step_number must be a safe integer`);
@@ -437,7 +931,7 @@ function parseCodeTracerPredictionLabels(value, trajectoryId) {
437
931
  flat.push(toCodeTracerPredictionLabel(item, codeTracerStageId(item, index + 1, trajectoryId), trajectoryId));
438
932
  continue;
439
933
  }
440
- if (!isRecord$2(item) || !Array.isArray(item.labels)) throw new TypeError(`CodeTracer prediction '${trajectoryId}' contains an unsupported label row`);
934
+ if (!isRecord(item) || !Array.isArray(item.labels)) throw new TypeError(`CodeTracer prediction '${trajectoryId}' contains an unsupported label row`);
441
935
  const stageId = codeTracerStageId(item, index + 1, trajectoryId);
442
936
  for (const label of item.labels) {
443
937
  if (!isCodeTracerStepLabel(label)) throw new TypeError(`CodeTracer prediction '${trajectoryId}' contains an invalid step label`);
@@ -447,10 +941,10 @@ function parseCodeTracerPredictionLabels(value, trajectoryId) {
447
941
  return flat;
448
942
  }
449
943
  function isCodeTraceStageAnnotation(value) {
450
- return isRecord$2(value) && Number.isSafeInteger(value.stage_id) && value.stage_id > 0 && optionalStepArray(value.incorrect_step_ids) && optionalStepArray(value.unuseful_step_ids) && (value.reasoning === void 0 || typeof value.reasoning === "string");
944
+ return isRecord(value) && Number.isSafeInteger(value.stage_id) && value.stage_id > 0 && optionalStepArray(value.incorrect_step_ids) && optionalStepArray(value.unuseful_step_ids) && (value.reasoning === void 0 || typeof value.reasoning === "string");
451
945
  }
452
946
  function isCodeTracerStepLabel(value) {
453
- return isRecord$2(value) && Number.isSafeInteger(value.step_id) && value.step_id > 0 && (value.stage === void 0 || typeof value.stage === "string" || typeof value.stage === "number") && (value.stage_name === void 0 || typeof value.stage_name === "string" || typeof value.stage_name === "number") && (value.stage_id === void 0 || typeof value.stage_id === "string" || typeof value.stage_id === "number") && (value.label === "incorrect" || value.label === "unuseful") && (value.rationale === void 0 || typeof value.rationale === "string") && (value.reason === void 0 || typeof value.reason === "string") && (value.note === void 0 || typeof value.note === "string") && (value.comment === void 0 || typeof value.comment === "string");
947
+ return isRecord(value) && Number.isSafeInteger(value.step_id) && value.step_id > 0 && (value.stage === void 0 || typeof value.stage === "string" || typeof value.stage === "number") && (value.stage_name === void 0 || typeof value.stage_name === "string" || typeof value.stage_name === "number") && (value.stage_id === void 0 || typeof value.stage_id === "string" || typeof value.stage_id === "number") && (value.label === "incorrect" || value.label === "unuseful") && (value.rationale === void 0 || typeof value.rationale === "string") && (value.reason === void 0 || typeof value.reason === "string") && (value.note === void 0 || typeof value.note === "string") && (value.comment === void 0 || typeof value.comment === "string");
454
948
  }
455
949
  function toCodeTracerPredictionLabel(label, stageId, trajectoryId) {
456
950
  if (!isCodeTracerStepLabel(label)) throw new TypeError(`CodeTracer prediction '${trajectoryId}' contains an invalid step label`);
@@ -728,8 +1222,8 @@ function compareMetric(options) {
728
1222
  if (caseBefore.length === 0 || !clusterId) continue;
729
1223
  pairedCases.push({
730
1224
  clusterId,
731
- baseline: mean$2(caseBefore),
732
- candidate: mean$2(caseAfter)
1225
+ baseline: mean$3(caseBefore),
1226
+ candidate: mean$3(caseAfter)
733
1227
  });
734
1228
  }
735
1229
  const byCluster = /* @__PURE__ */ new Map();
@@ -738,8 +1232,8 @@ function compareMetric(options) {
738
1232
  rows.push(pairedCase);
739
1233
  byCluster.set(pairedCase.clusterId, rows);
740
1234
  }
741
- const before = [...byCluster.values()].map((rows) => mean$2(rows.map((row) => row.baseline)));
742
- const after = [...byCluster.values()].map((rows) => mean$2(rows.map((row) => row.candidate)));
1235
+ const before = [...byCluster.values()].map((rows) => mean$3(rows.map((row) => row.baseline)));
1236
+ const after = [...byCluster.values()].map((rows) => mean$3(rows.map((row) => row.candidate)));
743
1237
  const interval = before.length === 0 ? null : pairedBootstrap(before, after, {
744
1238
  confidence: options.confidence,
745
1239
  resamples: options.resamples,
@@ -762,8 +1256,8 @@ function compareMetric(options) {
762
1256
  candidateMissingObservations,
763
1257
  asymmetricMissingObservations,
764
1258
  survivorOnly,
765
- baselineMean: before.length === 0 ? null : mean$2(before),
766
- candidateMean: after.length === 0 ? null : mean$2(after),
1259
+ baselineMean: before.length === 0 ? null : mean$3(before),
1260
+ candidateMean: after.length === 0 ? null : mean$3(after),
767
1261
  meanDelta: interval?.mean ?? null,
768
1262
  intervalLow: interval?.low ?? null,
769
1263
  intervalHigh: interval?.high ?? null,
@@ -1347,7 +1841,7 @@ const ANALYST_BENCHMARK_COST_LEDGER_FILE = "cost-ledger.jsonl";
1347
1841
  function observationKey(observation) {
1348
1842
  return `${observation.runnerId}\u0000${observation.caseId}\u0000${observation.repetition}`;
1349
1843
  }
1350
- function parseJson(text, source) {
1844
+ function parseJsonText(text, source) {
1351
1845
  try {
1352
1846
  return JSON.parse(text);
1353
1847
  } catch {
@@ -1371,22 +1865,13 @@ function digestCanonical(value) {
1371
1865
  }
1372
1866
  /** RFC 8785 canonical JSON of the value's JSON document form — the byte form
1373
1867
  * the receipt digests and compares against. */
1374
- function canonicalJson(value) {
1868
+ function canonicalJsonDocument(value) {
1375
1869
  return canonicalString(jsonDocument(value));
1376
1870
  }
1377
- function isRecord$1(value) {
1378
- return typeof value === "object" && value !== null && !Array.isArray(value);
1379
- }
1380
1871
  function isSha256(value) {
1381
1872
  return typeof value === "string" && /^[a-f0-9]{64}$/.test(value);
1382
1873
  }
1383
- //#endregion
1384
- //#region src/analyst/benchmark-implementation.ts
1385
- const ANALYST_BENCHMARK_IMPLEMENTATION_DIGEST_ALGORITHM = "sha256-canonical-source-manifest";
1386
- /** The dependency files' manifest digest with the package's own version
1387
- * fields blanked, so a release that only bumps the version keeps the pin. */
1388
- const ANALYST_BENCHMARK_DEPENDENCY_LOCK_DIGEST_ALGORITHM = "sha256-canonical-file-manifest-without-own-version";
1389
- const ANALYST_BENCHMARK_DEPENDENCY_LOCK_FILES = Object.freeze([
1874
+ Object.freeze([
1390
1875
  "clients/python/pyproject.toml",
1391
1876
  "clients/python/uv.lock",
1392
1877
  "package.json",
@@ -1542,13 +2027,7 @@ const ANALYST_BENCHMARK_IMPLEMENTATION_FILES = Object.freeze([
1542
2027
  "src/trace/redaction/detectors.ts",
1543
2028
  "src/verdict-cache.ts"
1544
2029
  ]);
1545
- const ANALYST_BENCHMARK_IMPLEMENTATION_SHA256 = "c985d8e45f839a3fd38570ba30c0a874cd2af0aa577b3f190ec5e1785cbf5d3b";
1546
- function analystBenchmarkImplementationDigest() {
1547
- return ANALYST_BENCHMARK_IMPLEMENTATION_SHA256;
1548
- }
1549
- function analystBenchmarkDependencyLockDigest() {
1550
- return ANALYST_BENCHMARK_DEPENDENCY_LOCK_SHA256;
1551
- }
2030
+ const ANALYST_BENCHMARK_IMPLEMENTATION_SHA256 = "705fdcf5f1226d15fde853ffe5c8f8771fea0dfb0f3e66671748cff8aa70e8b5";
1552
2031
  //#endregion
1553
2032
  //#region src/analyst/benchmark-evidence-validation.ts
1554
2033
  const MIN_ACTION_EXCERPT_CHARACTERS = 12;
@@ -2356,17 +2835,6 @@ function isMissing(error) {
2356
2835
  function isNodeError$1(error, code) {
2357
2836
  return error instanceof Error && "code" in error && error.code === code;
2358
2837
  }
2359
- //#endregion
2360
- //#region src/analyst/benchmark-public-prompt.ts
2361
- /** Widest contiguous failure block a model may report. The published corpus's
2362
- * widest labeled block is 8 steps and its widest stage span is 9, so this bound
2363
- * never binds honest enumeration; it caps how far one over-wide block can push
2364
- * unlabeled steps into the precision denominator. */
2365
- const MAX_INCORRECT_BLOCK_STEPS = 12;
2366
- /** Most blocks a model may report for one trajectory. The published corpus's
2367
- * densest case carries 4 disjoint labeled blocks. Together with the per-block
2368
- * cap this bounds one case at 192 predicted steps without a second ceiling. */
2369
- const MAX_INCORRECT_BLOCKS = 16;
2370
2838
  const TRACE_PROJECTION_ATTRIBUTE_BYTE_CAPS = [
2371
2839
  4096,
2372
2840
  2048,
@@ -2738,8 +3206,8 @@ async function readAndValidateResumeFiles(paths, currentIdentity, currentIdentit
2738
3206
  if (!await regularFileExists(paths.initializationComplete)) return initializeRunFiles(paths, currentIdentity, currentIdentitySha256, currentLocalIdentitySha256, localReceiptInput);
2739
3207
  const manifest = await readAndValidateManifest(paths.manifest, currentIdentity, currentIdentitySha256, currentLocalIdentitySha256);
2740
3208
  const localReceiptContent = await readRegularFile(paths.localReceipt, "benchmark local run receipt");
2741
- const value = parseJson(localReceiptContent, paths.localReceipt);
2742
- if (!isRecord$1(value)) throw new TypeError(`benchmark local run receipt must be an object: ${paths.localReceipt}`);
3209
+ const value = parseJsonText(localReceiptContent, paths.localReceipt);
3210
+ if (!isRecord(value)) throw new TypeError(`benchmark local run receipt must be an object: ${paths.localReceipt}`);
2743
3211
  assertExactKeys(value, [
2744
3212
  "kind",
2745
3213
  "runIdentitySha256",
@@ -2749,13 +3217,13 @@ async function readAndValidateResumeFiles(paths, currentIdentity, currentIdentit
2749
3217
  "environment",
2750
3218
  "files"
2751
3219
  ], "benchmark local run receipt");
2752
- if (value.kind !== "agent-eval/analyst-benchmark-local-run" || value.runIdentitySha256 !== currentIdentitySha256 || value.localIdentitySha256 !== currentLocalIdentitySha256 || !isRecord$1(value.local)) throw new Error("benchmark local run receipt does not match the requested resume");
3220
+ if (value.kind !== "agent-eval/analyst-benchmark-local-run" || value.runIdentitySha256 !== currentIdentitySha256 || value.localIdentitySha256 !== currentLocalIdentitySha256 || !isRecord(value.local)) throw new Error("benchmark local run receipt does not match the requested resume");
2753
3221
  const expectedLocalReceipt = {
2754
3222
  ...localReceiptInput,
2755
3223
  runIdentitySha256: currentIdentitySha256,
2756
3224
  localIdentitySha256: currentLocalIdentitySha256
2757
3225
  };
2758
- if (digestCanonical(value.local) !== currentLocalIdentitySha256 || canonicalJson(value.local) !== canonicalJson(localReceiptInput.local)) throw new Error("benchmark local paths or model-owner module do not match the requested resume");
3226
+ if (digestCanonical(value.local) !== currentLocalIdentitySha256 || canonicalJsonDocument(value.local) !== canonicalJsonDocument(localReceiptInput.local)) throw new Error("benchmark local paths or model-owner module do not match the requested resume");
2759
3227
  if (localReceiptContent !== `${JSON.stringify(expectedLocalReceipt, null, 2)}\n`) throw new Error(`benchmark local run receipt does not exactly match: ${paths.localReceipt}`);
2760
3228
  if (await readRegularFile(paths.initializationComplete, "benchmark initialization marker") !== renderInitializationComplete(manifest)) throw new Error(`benchmark initialization marker does not match the run manifest: ${paths.initializationComplete}`);
2761
3229
  return manifest;
@@ -2767,8 +3235,8 @@ async function readAndValidateManifest(path, currentIdentity, currentIdentitySha
2767
3235
  return manifest;
2768
3236
  }
2769
3237
  async function readAndValidateManifestContent(path, content, currentIdentity, currentIdentitySha256, currentLocalIdentitySha256) {
2770
- const value = parseJson(content, path);
2771
- if (!isRecord$1(value)) throw new TypeError(`benchmark run manifest must be an object: ${path}`);
3238
+ const value = parseJsonText(content, path);
3239
+ if (!isRecord(value)) throw new TypeError(`benchmark run manifest must be an object: ${path}`);
2772
3240
  assertExactKeys(value, [
2773
3241
  "kind",
2774
3242
  "createdAt",
@@ -2778,9 +3246,9 @@ async function readAndValidateManifestContent(path, content, currentIdentity, cu
2778
3246
  ], "benchmark run manifest");
2779
3247
  if (value.kind !== "agent-eval/analyst-benchmark-run") throw new TypeError(`unsupported benchmark run manifest: ${path}`);
2780
3248
  if (typeof value.createdAt !== "string" || !Number.isFinite(Date.parse(value.createdAt))) throw new TypeError(`benchmark run manifest has an invalid createdAt: ${path}`);
2781
- if (!isSha256(value.identitySha256) || !isSha256(value.localIdentitySha256) || !isRecord$1(value.identity)) throw new TypeError(`benchmark run manifest has an invalid identity: ${path}`);
3249
+ if (!isSha256(value.identitySha256) || !isSha256(value.localIdentitySha256) || !isRecord(value.identity)) throw new TypeError(`benchmark run manifest has an invalid identity: ${path}`);
2782
3250
  if (digestCanonical(value.identity) !== value.identitySha256) throw new Error(`benchmark run manifest identity digest does not match its contents: ${path}`);
2783
- if (currentIdentitySha256 !== value.identitySha256 || currentLocalIdentitySha256 !== value.localIdentitySha256 || canonicalJson(currentIdentity) !== canonicalJson(value.identity)) throw new Error(`benchmark resume configuration or inputs do not match ${ANALYST_BENCHMARK_MANIFEST_FILE}`);
3251
+ if (currentIdentitySha256 !== value.identitySha256 || currentLocalIdentitySha256 !== value.localIdentitySha256 || canonicalJsonDocument(currentIdentity) !== canonicalJsonDocument(value.identity)) throw new Error(`benchmark resume configuration or inputs do not match ${ANALYST_BENCHMARK_MANIFEST_FILE}`);
2784
3252
  return {
2785
3253
  kind: "agent-eval/analyst-benchmark-run",
2786
3254
  createdAt: value.createdAt,
@@ -2844,8 +3312,8 @@ async function readProgress(path, runIdentitySha256, caseIds, repetitions, analy
2844
3312
  const plannedObservationCount = caseIds.length * 2 * repetitions;
2845
3313
  for (const [index, line] of rawLines.entries()) {
2846
3314
  if (!line.trim()) throw new Error(`benchmark observation log contains an empty row at line ${index + 1}`);
2847
- const parsed = parseJson(line, `${path}:${index + 1}`);
2848
- if (!isRecord$1(parsed)) throw new TypeError(`benchmark observation row ${index + 1} must be an object`);
3315
+ const parsed = parseJsonText(line, `${path}:${index + 1}`);
3316
+ if (!isRecord(parsed)) throw new TypeError(`benchmark observation row ${index + 1} must be an object`);
2849
3317
  assertExactKeys(parsed, [
2850
3318
  "sequence",
2851
3319
  "runIdentitySha256",
@@ -3045,7 +3513,7 @@ function escapeCell$1(value) {
3045
3513
  //#endregion
3046
3514
  //#region src/analyst/benchmark-command-result.ts
3047
3515
  async function readAnalystBenchmarkArtifact(path) {
3048
- const value = parseJson(await readRegularFile(path, "analyst benchmark result"), path);
3516
+ const value = parseJsonText(await readRegularFile(path, "analyst benchmark result"), path);
3049
3517
  assertAnalystBenchmarkArtifact(value, "analyst benchmark result");
3050
3518
  return value;
3051
3519
  }
@@ -3103,33 +3571,33 @@ function assertCompletedArtifactMatchesRun(artifact, manifest, observations, pre
3103
3571
  dependencyLockSha256: config.dependencyLockSha256
3104
3572
  }
3105
3573
  };
3106
- if (canonicalJson(artifact.inputs) !== canonicalJson(expectedInputs)) throw new Error("completed benchmark result inputs do not match the run manifest");
3574
+ if (canonicalJsonDocument(artifact.inputs) !== canonicalJsonDocument(expectedInputs)) throw new Error("completed benchmark result inputs do not match the run manifest");
3107
3575
  const provenance = artifact.result.provenance;
3108
3576
  const expectedDatasetId = config.dataset === "agentrx" ? "microsoft/AgentRx" : "NJU-LINK/CodeTraceBench";
3109
3577
  const expectedOutputAdapter = config.dataset === "agentrx" ? "agentrx-taxonomy-and-root-step" : "codetracebench-incorrect-block";
3110
- if (provenance.id !== `${config.dataset}-real-model-analyst` || provenance.startedAt !== manifest.createdAt || !Number.isFinite(Date.parse(provenance.endedAt)) || Date.parse(provenance.endedAt) < Date.parse(provenance.startedAt) || canonicalJson(provenance.dataset) !== canonicalJson({
3578
+ if (provenance.id !== `${config.dataset}-real-model-analyst` || provenance.startedAt !== manifest.createdAt || !Number.isFinite(Date.parse(provenance.endedAt)) || Date.parse(provenance.endedAt) < Date.parse(provenance.startedAt) || canonicalJsonDocument(provenance.dataset) !== canonicalJsonDocument({
3111
3579
  id: expectedDatasetId,
3112
3580
  revision: config.datasetRevision,
3113
3581
  split: config.datasetSplit
3114
- }) || provenance.caseCount !== inputs.selectedCaseIds.length || canonicalJson(provenance.runnerIds) !== canonicalJson(config.runnerIds) || provenance.repetitions !== config.repetitions || provenance.maxConcurrency !== Math.min(config.concurrency, expectedCount) || provenance.runnerOrderSeed !== config.seed || provenance.metadata?.model !== config.model.id || provenance.metadata?.modelOwnerCallRef !== config.model.ownerCallRef || provenance.metadata?.rlmSamples !== config.rlmSamples || provenance.metadata?.outputAdapter !== expectedOutputAdapter || provenance.metadata?.caseSelection !== prepared.selection.method || provenance.metadata?.caseSelectionSeed !== config.seed || provenance.metadata?.selectionStratified !== prepared.selection.stratified || provenance.metadata?.protocolSha256 !== config.analystProtocolSha256 || provenance.metadata?.implementationSha256 !== config.implementationSha256 || provenance.metadata?.dependencyLockSha256 !== config.dependencyLockSha256 || provenance.metadata?.populationRepresentativenessProven !== false) throw new Error("completed benchmark result provenance does not match the run manifest");
3582
+ }) || provenance.caseCount !== inputs.selectedCaseIds.length || canonicalJsonDocument(provenance.runnerIds) !== canonicalJsonDocument(config.runnerIds) || provenance.repetitions !== config.repetitions || provenance.maxConcurrency !== Math.min(config.concurrency, expectedCount) || provenance.runnerOrderSeed !== config.seed || provenance.metadata?.model !== config.model.id || provenance.metadata?.modelOwnerCallRef !== config.model.ownerCallRef || provenance.metadata?.rlmSamples !== config.rlmSamples || provenance.metadata?.outputAdapter !== expectedOutputAdapter || provenance.metadata?.caseSelection !== prepared.selection.method || provenance.metadata?.caseSelectionSeed !== config.seed || provenance.metadata?.selectionStratified !== prepared.selection.stratified || provenance.metadata?.protocolSha256 !== config.analystProtocolSha256 || provenance.metadata?.implementationSha256 !== config.implementationSha256 || provenance.metadata?.dependencyLockSha256 !== config.dependencyLockSha256 || provenance.metadata?.populationRepresentativenessProven !== false) throw new Error("completed benchmark result provenance does not match the run manifest");
3115
3583
  const expectedSummaries = config.runnerIds.map((runnerId) => summarizeAnalystBenchmarkRunner(runnerId, observations.filter((observation) => observation.runnerId === runnerId)));
3116
- if (canonicalJson(artifact.result.summaries) !== canonicalJson(expectedSummaries)) throw new Error("completed benchmark summaries do not match durable observations");
3584
+ if (canonicalJsonDocument(artifact.result.summaries) !== canonicalJsonDocument(expectedSummaries)) throw new Error("completed benchmark summaries do not match durable observations");
3117
3585
  const expectedComparisons = [compareAnalystRunners(artifact.result, {
3118
3586
  baselineRunnerId: "empty",
3119
3587
  candidateRunnerId: config.runnerIds[1],
3120
3588
  seed: config.seed
3121
3589
  })];
3122
- if (canonicalJson(artifact.comparisons) !== canonicalJson(expectedComparisons)) throw new Error("completed benchmark comparisons do not match durable observations");
3590
+ if (canonicalJsonDocument(artifact.comparisons) !== canonicalJsonDocument(expectedComparisons)) throw new Error("completed benchmark comparisons do not match durable observations");
3123
3591
  if (config.dataset === "codetracebench") {
3124
- if (canonicalJson(artifact.codeTraceCalibration) !== canonicalJson(summarizeCodeTraceCalibration(artifact.result)) || artifact.agentRxCalibration !== void 0) throw new Error("completed CodeTraceBench calibration does not match durable observations");
3125
- } else if (canonicalJson(artifact.agentRxCalibration) !== canonicalJson(summarizeAgentRxCalibration(artifact.result, "f228165bfec60a801fd5fedd9d8ffe0f9de0c69d")) || artifact.codeTraceCalibration !== void 0) throw new Error("completed AgentRx calibration does not match durable observations");
3592
+ if (canonicalJsonDocument(artifact.codeTraceCalibration) !== canonicalJsonDocument(summarizeCodeTraceCalibration(artifact.result)) || artifact.agentRxCalibration !== void 0) throw new Error("completed CodeTraceBench calibration does not match durable observations");
3593
+ } else if (canonicalJsonDocument(artifact.agentRxCalibration) !== canonicalJsonDocument(summarizeAgentRxCalibration(artifact.result, "f228165bfec60a801fd5fedd9d8ffe0f9de0c69d")) || artifact.codeTraceCalibration !== void 0) throw new Error("completed AgentRx calibration does not match durable observations");
3126
3594
  }
3127
3595
  function assertSameObservations(expected, actual) {
3128
3596
  if (expected.length !== actual.length) throw new Error(`benchmark result has ${expected.length} observations but the durable log has ${actual.length}`);
3129
- const expectedByKey = new Map(expected.map((observation) => [observationKey(observation), canonicalJson(observation)]));
3597
+ const expectedByKey = new Map(expected.map((observation) => [observationKey(observation), canonicalJsonDocument(observation)]));
3130
3598
  for (const observation of actual) {
3131
3599
  const key = observationKey(observation);
3132
- if (expectedByKey.get(key) !== canonicalJson(observation)) throw new Error(`benchmark result does not match durable observation '${observation.runnerId}/${observation.caseId}/${observation.repetition}'`);
3600
+ if (expectedByKey.get(key) !== canonicalJsonDocument(observation)) throw new Error(`benchmark result does not match durable observation '${observation.runnerId}/${observation.caseId}/${observation.repetition}'`);
3133
3601
  expectedByKey.delete(key);
3134
3602
  }
3135
3603
  if (expectedByKey.size > 0) throw new Error("benchmark result is missing durable observations");
@@ -3475,9 +3943,6 @@ function safeInteger(value, field) {
3475
3943
  if (!Number.isSafeInteger(value)) throw new RangeError(`${field} must be a safe integer`);
3476
3944
  return value;
3477
3945
  }
3478
- function isRecord(value) {
3479
- return typeof value === "object" && value !== null && !Array.isArray(value);
3480
- }
3481
3946
  //#endregion
3482
3947
  //#region src/analyst/benchmark-response-cache.ts
3483
3948
  const SHA256 = /^[a-f0-9]{64}$/;
@@ -6324,6 +6789,6 @@ function shellQuote(value) {
6324
6789
  return /^[a-zA-Z0-9_./:@%+=,-]+$/.test(value) ? value : `'${value.replaceAll("'", "'\\''")}'`;
6325
6790
  }
6326
6791
  //#endregion
6327
- export { ANALYST_BENCHMARK_MANIFEST_FILE as $, readAnalystInstructionsOverride as A, parseVerificationOutcome as B, emptyPublicBenchmarkRunner as C, summarizeCodeTraceCalibration as D, renderCodeTraceCalibrationMarkdown as E, publicBenchmarkRlmInstructions as F, ANALYST_BENCHMARK_EVIDENCE_IMPLEMENTATION_SHA256 as G, ANALYST_BENCHMARK_DEPENDENCY_LOCK_FILES as H, publicBenchmarkSystemPrompt as I, ANALYST_BENCHMARK_IMPLEMENTATION_SHA256 as J, ANALYST_BENCHMARK_IMPLEMENTATION_DIGEST_ALGORITHM as K, DEFAULT_MAX_VERIFICATION_ARTIFACT_BYTES as L, MAX_INCORRECT_BLOCKS as M, MAX_INCORRECT_BLOCK_STEPS as N, analystInstructionsOverrideFromText as O, publicBenchmarkProtocolSha256 as P, ANALYST_BENCHMARK_LOCAL_RECEIPT_FILE as Q, appendVerificationArtifactsToOtlp as R, adaptPublicBenchmarkFindings as S, readAnalystBenchmarkArtifact as T, ANALYST_BENCHMARK_DEPENDENCY_LOCK_SHA256 as U, ANALYST_BENCHMARK_DEPENDENCY_LOCK_DIGEST_ALGORITHM as V, ANALYST_BENCHMARK_EVIDENCE_DEPENDENCY_LOCK_SHA256 as W, analystBenchmarkImplementationDigest as X, analystBenchmarkDependencyLockDigest as Y, ANALYST_BENCHMARK_COST_LEDGER_FILE as Z, publicDirectAnalystDefinition as _, primeCodeTraceAnalystDefinition as a, codeTraceBenchCase as at, analystDefinitionAsymmetries as b, preparePublicAnalystBenchmark as c, agentRxPredictionsToFindings as ct, selectPublicBenchmarkRows as d, normalizeBenchmarkLabel as dt, ANALYST_BENCHMARK_OBSERVATIONS_FILE as et, createPublicBenchmarkRlmRunner as f, createPublicBenchmarkDirectRunner as g, runReplVariableAnalystDefinition as h, primeAnalystProtocolSha256 as i, summarizeAgentRxCalibration as it, CODE_TRACE_BENCH_ANALYST_PROMPT as j, effectiveAnalystProtocolSha256 as k, publicBenchmarkDistributions as l, normalizeAgentRxCategory as lt, rlmEngineLimits as m, renderAnalystBenchmarkMarkdown as n, AGENT_RX_UPSTREAM_REVISION as nt, runInlineAnalystDefinition as o, codeTracerPredictionsToFindings as ot, publicRlmAnalystDefinition as p, ANALYST_BENCHMARK_IMPLEMENTATION_FILES as q, createPrimeBenchmarkRunner as r, renderAgentRxCalibrationMarkdown as rt, loadPublicBenchmarkRows as s, agentRxBenchmarkCase as st, runAnalystBenchmarkCommand as t, compareAnalystRunners as tt, publicBenchmarkSelectionReport as u, roundAgentRxStep as ut, runChunkedAnalystDefinition as v, expandCodeTraceFailureBlocks as w, analystDefinitionProtocolSha256 as x, AnalystExpressivenessError as y, loadCodeTraceVerificationArtifacts as z };
6792
+ export { agentRxBenchmarkCase as A, ANALYST_BENCHMARK_COST_LEDGER_FILE as C, AGENT_RX_UPSTREAM_REVISION as D, ANALYST_BENCHMARK_OBSERVATIONS_FILE as E, normalizeAgentRxCategory as M, runAnalystBenchmark as N, codeTraceBenchCase as O, traceStoreEvidenceResolver as P, ANALYST_BENCHMARK_IMPLEMENTATION_FILES as S, ANALYST_BENCHMARK_MANIFEST_FILE as T, readAnalystBenchmarkArtifact as _, runInlineAnalystDefinition as a, ANALYST_BENCHMARK_EVIDENCE_DEPENDENCY_LOCK_SHA256 as b, publicRlmAnalystDefinition as c, publicDirectAnalystDefinition as d, runChunkedAnalystDefinition as f, expandCodeTraceFailureBlocks as g, analystDefinitionProtocolSha256 as h, primeCodeTraceAnalystDefinition as i, agentRxPredictionsToFindings as j, codeTracerPredictionsToFindings as k, runReplVariableAnalystDefinition as l, analystDefinitionAsymmetries as m, createPrimeBenchmarkRunner as n, loadPublicBenchmarkRows as o, AnalystExpressivenessError as p, primeAnalystProtocolSha256 as r, createPublicBenchmarkRlmRunner as s, runAnalystBenchmarkCommand as t, createPublicBenchmarkDirectRunner as u, CODE_TRACE_BENCH_ANALYST_PROMPT as v, ANALYST_BENCHMARK_LOCAL_RECEIPT_FILE as w, ANALYST_BENCHMARK_EVIDENCE_IMPLEMENTATION_SHA256 as x, publicBenchmarkProtocolSha256 as y };
6328
6793
 
6329
- //# sourceMappingURL=benchmark-command-By0vh8q7.js.map
6794
+ //# sourceMappingURL=benchmark-command-xQK8nOI6.js.map