@tangle-network/agent-eval 0.144.11 → 0.144.13

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 (378) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/agent-profile-B9_GGsG8.d.ts +84 -0
  3. package/dist/agent-profile-B9_GGsG8.d.ts.map +1 -0
  4. package/dist/{agent-profile-cell-BOP-iA9Q.d.ts → agent-profile-cell-BkcRDikH.d.ts} +2 -2
  5. package/dist/{agent-profile-cell-BOP-iA9Q.d.ts.map → agent-profile-cell-BkcRDikH.d.ts.map} +1 -1
  6. package/dist/analyst/index.d.ts +134 -16
  7. package/dist/analyst/index.d.ts.map +1 -1
  8. package/dist/analyst/index.js +364 -10
  9. package/dist/analyst/index.js.map +1 -1
  10. package/dist/backend-integrity-CsVin_Wb.d.ts +280 -0
  11. package/dist/backend-integrity-CsVin_Wb.d.ts.map +1 -0
  12. package/dist/{baseline-C-GocmIW.js → baseline-BhPRQBVn.js} +3 -2
  13. package/dist/{baseline-C-GocmIW.js.map → baseline-BhPRQBVn.js.map} +1 -1
  14. package/dist/{benchmark-CWeqGl7x.js → benchmark-BhT16ep9.js} +2 -2
  15. package/dist/{benchmark-CWeqGl7x.js.map → benchmark-BhT16ep9.js.map} +1 -1
  16. package/dist/{agent-profile-DPi7IZg7.d.ts → benchmark-Ceoan7vk.d.ts} +4 -91
  17. package/dist/benchmark-Ceoan7vk.d.ts.map +1 -0
  18. package/dist/{benchmark-command-BteMFN62.js → benchmark-command-CY6cbhOB.js} +36 -79
  19. package/dist/benchmark-command-CY6cbhOB.js.map +1 -0
  20. package/dist/benchmarks/index.d.ts +244 -2
  21. package/dist/benchmarks/index.d.ts.map +1 -0
  22. package/dist/benchmarks/index.js +733 -1
  23. package/dist/benchmarks/index.js.map +1 -0
  24. package/dist/builder-eval/index.d.ts +23 -2
  25. package/dist/builder-eval/index.d.ts.map +1 -1
  26. package/dist/builder-eval/index.js +227 -3
  27. package/dist/builder-eval/index.js.map +1 -1
  28. package/dist/campaign/index.d.ts +10 -8
  29. package/dist/campaign/index.js +9 -6
  30. package/dist/{campaign-C2TTzQII.js → campaign-BYjBAypg.js} +21 -634
  31. package/dist/campaign-BYjBAypg.js.map +1 -0
  32. package/dist/{canonical-D011XM8r.js → canonical-D-XsTQ6_.js} +2 -2
  33. package/dist/{canonical-D011XM8r.js.map → canonical-D-XsTQ6_.js.map} +1 -1
  34. package/dist/{index-CQTZ-4XN.d.ts → capture-fetch-DDvpjVRU.d.ts} +3 -3
  35. package/dist/capture-fetch-DDvpjVRU.d.ts.map +1 -0
  36. package/dist/{default-registry-BmktKy8r.js → chat-client-Bp4Ebuuc.js} +1276 -1276
  37. package/dist/chat-client-Bp4Ebuuc.js.map +1 -0
  38. package/dist/cli.js +2 -2
  39. package/dist/{client-C9gzZE59.d.ts → client-KUbGulm_.d.ts} +4 -4
  40. package/dist/{client-C9gzZE59.d.ts.map → client-KUbGulm_.d.ts.map} +1 -1
  41. package/dist/contract/index.d.ts +13 -390
  42. package/dist/contract/index.d.ts.map +1 -1
  43. package/dist/contract/index.js +18 -542
  44. package/dist/contract/index.js.map +1 -1
  45. package/dist/{cost-ledger-DMFxsLKr.js → cost-ledger-BSe92yAV.js} +3 -3
  46. package/dist/{cost-ledger-DMFxsLKr.js.map → cost-ledger-BSe92yAV.js.map} +1 -1
  47. package/dist/{cost-ledger-Bv_e8XHY.d.ts → cost-ledger-DbQdN3nO.d.ts} +2 -2
  48. package/dist/{cost-ledger-Bv_e8XHY.d.ts.map → cost-ledger-DbQdN3nO.d.ts.map} +1 -1
  49. package/dist/{counterfactual-CxmxAONP.d.ts → counterfactual--bpysZF0.d.ts} +2 -14
  50. package/dist/{counterfactual-CxmxAONP.d.ts.map → counterfactual--bpysZF0.d.ts.map} +1 -1
  51. package/dist/{counterfactual-CWPTrMH7.js → counterfactual-lDfCx0Uz.js} +3 -31
  52. package/dist/{counterfactual-CWPTrMH7.js.map → counterfactual-lDfCx0Uz.js.map} +1 -1
  53. package/dist/{dataset-C8xaLXdY.d.ts → dataset-CJjKqQfA.d.ts} +2 -8
  54. package/dist/dataset-CJjKqQfA.d.ts.map +1 -0
  55. package/dist/{default-registry-Bf8Woqmq.d.ts → default-registry-Di6HP6pG.d.ts} +7 -12
  56. package/dist/default-registry-Di6HP6pG.d.ts.map +1 -0
  57. package/dist/{analyze-runs-C30yljDJ.js → define-agent-eval-iqjT--ZZ.js} +542 -130
  58. package/dist/define-agent-eval-iqjT--ZZ.js.map +1 -0
  59. package/dist/define-agent-eval-sH24zBfM.d.ts +388 -0
  60. package/dist/define-agent-eval-sH24zBfM.d.ts.map +1 -0
  61. package/dist/descriptive-B5MwKfbf.js +144 -0
  62. package/dist/descriptive-B5MwKfbf.js.map +1 -0
  63. package/dist/{dspy-rlm-engine-DbTk4JdR.js → dspy-rlm-engine-B_qhSc21.js} +4 -4
  64. package/dist/{dspy-rlm-engine-DbTk4JdR.js.map → dspy-rlm-engine-B_qhSc21.js.map} +1 -1
  65. package/dist/effect-sizes-DiH8MGOH.js +82 -0
  66. package/dist/effect-sizes-DiH8MGOH.js.map +1 -0
  67. package/dist/{engine-3hL-XqwJ.d.ts → engine-otFpE2gF.d.ts} +10 -38
  68. package/dist/engine-otFpE2gF.d.ts.map +1 -0
  69. package/dist/{errors-CKPfb2aH.d.ts → errors-DEE6u6ot.d.ts} +2 -14
  70. package/dist/{errors-CKPfb2aH.d.ts.map → errors-DEE6u6ot.d.ts.map} +1 -1
  71. package/dist/{errors-D-LKuDhb.js → errors-Dngq5h35.js} +2 -8
  72. package/dist/{errors-D-LKuDhb.js.map → errors-Dngq5h35.js.map} +1 -1
  73. package/dist/{eval-campaign-B_7wcnav.js → eval-campaign-UB-usSQ2.js} +6 -6
  74. package/dist/{eval-campaign-B_7wcnav.js.map → eval-campaign-UB-usSQ2.js.map} +1 -1
  75. package/dist/{exact-types-DSFFpLLI.d.ts → exact-types-BH1twmAJ.d.ts} +2 -2
  76. package/dist/{exact-types-DSFFpLLI.d.ts.map → exact-types-BH1twmAJ.d.ts.map} +1 -1
  77. package/dist/experiment/index.d.ts +9 -6
  78. package/dist/experiment/index.d.ts.map +1 -1
  79. package/dist/experiment/index.js +11 -7
  80. package/dist/experiment/index.js.map +1 -1
  81. package/dist/experiment-tracker-C29gXM4B.js +269 -0
  82. package/dist/experiment-tracker-C29gXM4B.js.map +1 -0
  83. package/dist/{experiment-tracker-IMntXr6J.d.ts → experiment-tracker-DWHZBAYL.d.ts} +77 -121
  84. package/dist/experiment-tracker-DWHZBAYL.d.ts.map +1 -0
  85. package/dist/{external-optimizer-contracts-CZuJNcT5.d.ts → external-optimizer-contracts-lixrOZdX.d.ts} +3 -3
  86. package/dist/{external-optimizer-contracts-CZuJNcT5.d.ts.map → external-optimizer-contracts-lixrOZdX.d.ts.map} +1 -1
  87. package/dist/external-optimizer-process-BTiNB-RH.js +301 -0
  88. package/dist/external-optimizer-process-BTiNB-RH.js.map +1 -0
  89. package/dist/{single-run-lock-DFWHEB09.js → external-optimizer-subprocess-DrJ9hR8u.js} +144 -438
  90. package/dist/external-optimizer-subprocess-DrJ9hR8u.js.map +1 -0
  91. package/dist/extract-usage-BrQ8mCLX.js +155 -0
  92. package/dist/extract-usage-BrQ8mCLX.js.map +1 -0
  93. package/dist/{failure-cluster-CqcvCcdR.d.ts → failure-cluster-BLURuWG4.d.ts} +2 -3
  94. package/dist/failure-cluster-BLURuWG4.d.ts.map +1 -0
  95. package/dist/{feedback-trajectory-CacHpxsp.d.ts → feedback-trajectory-juOozjAc.d.ts} +5 -36
  96. package/dist/feedback-trajectory-juOozjAc.d.ts.map +1 -0
  97. package/dist/fuzz.d.ts +2 -2
  98. package/dist/fuzz.js +2 -2
  99. package/dist/hosted/index.d.ts +3 -3
  100. package/dist/{index-CvSN3IG1.d.ts → index-B8Ui1mr1.d.ts} +2 -2
  101. package/dist/{index-CvSN3IG1.d.ts.map → index-B8Ui1mr1.d.ts.map} +1 -1
  102. package/dist/{skill-usage-CO9OLRBx.d.ts → index-BWDrSVfw.d.ts} +11 -136
  103. package/dist/index-BWDrSVfw.d.ts.map +1 -0
  104. package/dist/index-Ba3YrbAL.d.ts +1 -0
  105. package/dist/{index-BnEuDAK2.d.ts → index-COQYtuRF.d.ts} +3 -3
  106. package/dist/{index-BnEuDAK2.d.ts.map → index-COQYtuRF.d.ts.map} +1 -1
  107. package/dist/{index-C3ssXVLv.d.ts → index-CvjYbU0D.d.ts} +2 -2
  108. package/dist/{index-C3ssXVLv.d.ts.map → index-CvjYbU0D.d.ts.map} +1 -1
  109. package/dist/{index-DPPGNJ_R.d.ts → index-DSmEylT9.d.ts} +17 -115
  110. package/dist/index-DSmEylT9.d.ts.map +1 -0
  111. package/dist/index.d.ts +2397 -5308
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +5914 -10496
  114. package/dist/index.js.map +1 -1
  115. package/dist/{insight-report-CgX_s0Ez.d.ts → insight-report-CRi-Ufrj.d.ts} +4 -4
  116. package/dist/{insight-report-CgX_s0Ez.d.ts.map → insight-report-CRi-Ufrj.d.ts.map} +1 -1
  117. package/dist/{integrity-MLzHOfV9.js → integrity-Cy9WHAtb.js} +2 -2
  118. package/dist/{integrity-MLzHOfV9.js.map → integrity-Cy9WHAtb.js.map} +1 -1
  119. package/dist/{integrity-DY6tIbl0.js → integrity-DysDBWDu.js} +2 -2
  120. package/dist/{integrity-DY6tIbl0.js.map → integrity-DysDBWDu.js.map} +1 -1
  121. package/dist/{integrity-BuqEKu-x.d.ts → integrity-OrcI9Nau.d.ts} +3 -3
  122. package/dist/{integrity-BuqEKu-x.d.ts.map → integrity-OrcI9Nau.d.ts.map} +1 -1
  123. package/dist/internal-BDHPCnjk.js +230 -0
  124. package/dist/internal-BDHPCnjk.js.map +1 -0
  125. package/dist/judge-calibration-C5CbMYce.d.ts +117 -0
  126. package/dist/judge-calibration-C5CbMYce.d.ts.map +1 -0
  127. package/dist/judge-calibration-DZkWrm5H.js +317 -0
  128. package/dist/judge-calibration-DZkWrm5H.js.map +1 -0
  129. package/dist/{kind-factory-B8-r8-y8.js → kind-factory-CPmSd58s.js} +208 -208
  130. package/dist/{kind-factory-B8-r8-y8.js.map → kind-factory-CPmSd58s.js.map} +1 -1
  131. package/dist/ledger-core/index.d.ts +1 -1
  132. package/dist/ledger-core/index.js +2 -2
  133. package/dist/{ledger-core-DXZIqu17.js → ledger-core-BmZt19oQ.js} +110 -110
  134. package/dist/{ledger-core-DXZIqu17.js.map → ledger-core-BmZt19oQ.js.map} +1 -1
  135. package/dist/{llm-client-DzvMUsS_.js → llm-client-d0-2TT1g.js} +4 -64
  136. package/dist/{llm-client-DzvMUsS_.js.map → llm-client-d0-2TT1g.js.map} +1 -1
  137. package/dist/{skillopt-optimization-method-CQdVeM8k.js → llm-judge-dZ8P6nGI.js} +3349 -5401
  138. package/dist/llm-judge-dZ8P6nGI.js.map +1 -0
  139. package/dist/matrix/index.d.ts +2 -2
  140. package/dist/meta-eval/index.d.ts +3 -3
  141. package/dist/meta-eval/index.js +3 -3
  142. package/dist/{metrics-C9YY1OcL.js → metrics-Cl0L1KUy.js} +2 -108
  143. package/dist/{metrics-C9YY1OcL.js.map → metrics-Cl0L1KUy.js.map} +1 -1
  144. package/dist/{mint-B2O60ACG.js → mint-Dj9Ww_3I.js} +4 -4
  145. package/dist/{mint-B2O60ACG.js.map → mint-Dj9Ww_3I.js.map} +1 -1
  146. package/dist/{multi-layer-verifier-DnAqwl0h.d.ts → multi-layer-verifier-DIguZc8Z.d.ts} +3 -3
  147. package/dist/{multi-layer-verifier-DnAqwl0h.d.ts.map → multi-layer-verifier-DIguZc8Z.d.ts.map} +1 -1
  148. package/dist/multiplicity-DIWHvysC.d.ts +43 -0
  149. package/dist/multiplicity-DIWHvysC.d.ts.map +1 -0
  150. package/dist/multishot/index.d.ts +3 -3
  151. package/dist/multishot/index.js +1 -1
  152. package/dist/openapi.json +1 -1
  153. package/dist/{opencode-sqlite-8r6WUfHc.js → opencode-sqlite-DJWAXLms.js} +2 -2
  154. package/dist/{opencode-sqlite-8r6WUfHc.js.map → opencode-sqlite-DJWAXLms.js.map} +1 -1
  155. package/dist/package-version-D7lQHt_-.js +34 -0
  156. package/dist/package-version-D7lQHt_-.js.map +1 -0
  157. package/dist/paired-arms-D-XRF_fy.js +1045 -0
  158. package/dist/paired-arms-D-XRF_fy.js.map +1 -0
  159. package/dist/paired-promotion-decision-CGzg0cI_.d.ts +251 -0
  160. package/dist/paired-promotion-decision-CGzg0cI_.d.ts.map +1 -0
  161. package/dist/paired-tests-BHIhYVdu.js +213 -0
  162. package/dist/paired-tests-BHIhYVdu.js.map +1 -0
  163. package/dist/pareto-BqNW3LJR.d.ts +117 -0
  164. package/dist/pareto-BqNW3LJR.d.ts.map +1 -0
  165. package/dist/pipelines/index.d.ts +3 -64
  166. package/dist/pipelines/index.d.ts.map +1 -1
  167. package/dist/pipelines/index.js +4 -284
  168. package/dist/pipelines/index.js.map +1 -1
  169. package/dist/power-and-mde-CHIrXJll.js +195 -0
  170. package/dist/power-and-mde-CHIrXJll.js.map +1 -0
  171. package/dist/{promotion-policy-CrLrmys8.js → power-preflight-DEw-uC7q.js} +4 -184
  172. package/dist/power-preflight-DEw-uC7q.js.map +1 -0
  173. package/dist/pre-registration-CZwSFQS4.d.ts +577 -0
  174. package/dist/pre-registration-CZwSFQS4.d.ts.map +1 -0
  175. package/dist/{prime-protocol-BfSalTfR.js → prime-protocol-6tZTVsWm.js} +72 -21
  176. package/dist/prime-protocol-6tZTVsWm.js.map +1 -0
  177. package/dist/produced-state-DU79a81m.js +586 -0
  178. package/dist/produced-state-DU79a81m.js.map +1 -0
  179. package/dist/profile-cell.d.ts +1 -1
  180. package/dist/profile-cell.js +1 -1
  181. package/dist/promotion-policy-D0nPhkSy.d.ts +134 -0
  182. package/dist/promotion-policy-D0nPhkSy.d.ts.map +1 -0
  183. package/dist/promotion-policy-xzA40Evo.js +186 -0
  184. package/dist/promotion-policy-xzA40Evo.js.map +1 -0
  185. package/dist/{skillopt-optimization-method-USDKhxSA.d.ts → provenance-CCdxgLDT.d.ts} +57 -478
  186. package/dist/provenance-CCdxgLDT.d.ts.map +1 -0
  187. package/dist/registry-oJeeI4-a.d.ts +178 -0
  188. package/dist/registry-oJeeI4-a.d.ts.map +1 -0
  189. package/dist/{release-report-DA2BCu5a.d.ts → release-confidence-BFRE5WSp.d.ts} +180 -112
  190. package/dist/release-confidence-BFRE5WSp.d.ts.map +1 -0
  191. package/dist/{release-report-BUYmoKo2.js → release-confidence-CxDuiAev.js} +125 -217
  192. package/dist/release-confidence-CxDuiAev.js.map +1 -0
  193. package/dist/reporting.d.ts +6 -5
  194. package/dist/reporting.js +7 -5
  195. package/dist/{researcher-BchpD55R.d.ts → researcher-DaN4GST-.d.ts} +7 -40
  196. package/dist/{researcher-BchpD55R.d.ts.map → researcher-DaN4GST-.d.ts.map} +1 -1
  197. package/dist/{reward-hacking-BDToousL.js → reward-hacking-DNgjilrV.js} +3 -3
  198. package/dist/reward-hacking-DNgjilrV.js.map +1 -0
  199. package/dist/{reward-hacking-BI0OMAlo.d.ts → reward-hacking-DSSTuI9r.d.ts} +5 -5
  200. package/dist/{reward-hacking-BI0OMAlo.d.ts.map → reward-hacking-DSSTuI9r.d.ts.map} +1 -1
  201. package/dist/rl.d.ts +7 -7
  202. package/dist/rl.js +11 -10
  203. package/dist/rl.js.map +1 -1
  204. package/dist/rollout/index.d.ts +2 -2
  205. package/dist/rollout/index.js +4 -4
  206. package/dist/{rollout-DRrksrcV.js → rollout-BWtw0I_6.js} +3 -3
  207. package/dist/{rollout-DRrksrcV.js.map → rollout-BWtw0I_6.js.map} +1 -1
  208. package/dist/{rubric-predictive-validity-DvkjPYCe.d.ts → rubric-predictive-validity-BgxtKe4G.d.ts} +2 -2
  209. package/dist/{rubric-predictive-validity-DvkjPYCe.d.ts.map → rubric-predictive-validity-BgxtKe4G.d.ts.map} +1 -1
  210. package/dist/{rubric-predictive-validity-BRR632r1.js → rubric-predictive-validity-Cwwyd7ah.js} +2 -2
  211. package/dist/{rubric-predictive-validity-BRR632r1.js.map → rubric-predictive-validity-Cwwyd7ah.js.map} +1 -1
  212. package/dist/{run-record-BmSPWXJR.js → run-record-BvHPVS-i.js} +3 -3
  213. package/dist/{run-record-BmSPWXJR.js.map → run-record-BvHPVS-i.js.map} +1 -1
  214. package/dist/{run-record-CF4Dwpxr.d.ts → run-record-CKiihE6f.d.ts} +4 -4
  215. package/dist/{run-record-CF4Dwpxr.d.ts.map → run-record-CKiihE6f.d.ts.map} +1 -1
  216. package/dist/{proposal-findings-2GIUo1et.js → run-score-lDzV0X8j.js} +31 -31
  217. package/dist/run-score-lDzV0X8j.js.map +1 -0
  218. package/dist/sandbox-harness-BlSOu4LX.d.ts +70 -0
  219. package/dist/sandbox-harness-BlSOu4LX.d.ts.map +1 -0
  220. package/dist/{schema-Cef2cFmb2.d.ts → schema-Cef2cFmb.d.ts} +1 -1
  221. package/dist/schema-Cef2cFmb.d.ts.map +1 -0
  222. package/dist/semantic-concept-judge-BiJxScqe.js +406 -0
  223. package/dist/semantic-concept-judge-BiJxScqe.js.map +1 -0
  224. package/dist/{sequential-D-BLJBKU.js → sequential-C458DXNf.js} +4 -3
  225. package/dist/{sequential-D-BLJBKU.js.map → sequential-C458DXNf.js.map} +1 -1
  226. package/dist/sequential-eprocess-CbUt2htw.js +83 -0
  227. package/dist/sequential-eprocess-CbUt2htw.js.map +1 -0
  228. package/dist/series-convergence-D1cL1f-4.d.ts +129 -0
  229. package/dist/series-convergence-D1cL1f-4.d.ts.map +1 -0
  230. package/dist/{server-iu0ede49.js → server-ulsOdrTI.js} +5 -21
  231. package/dist/server-ulsOdrTI.js.map +1 -0
  232. package/dist/skillopt-optimization-method-C5cotF4E.d.ts +427 -0
  233. package/dist/skillopt-optimization-method-C5cotF4E.d.ts.map +1 -0
  234. package/dist/skillopt-optimization-method-jjdnc3YK.js +1999 -0
  235. package/dist/skillopt-optimization-method-jjdnc3YK.js.map +1 -0
  236. package/dist/{statistical-heldout-TQ-4CYiN.d.ts → statistical-heldout-DoFF5KJX.d.ts} +5 -278
  237. package/dist/statistical-heldout-DoFF5KJX.d.ts.map +1 -0
  238. package/dist/{store-otlp-Dw8PPIlL.js → store-otlp-CsptLYpN.js} +3 -3
  239. package/dist/{store-otlp-Dw8PPIlL.js.map → store-otlp-CsptLYpN.js.map} +1 -1
  240. package/dist/store-tool-spans-Cq9mFd-q.js +667 -0
  241. package/dist/store-tool-spans-Cq9mFd-q.js.map +1 -0
  242. package/dist/store-tool-spans-DbDLOBOb.d.ts +342 -0
  243. package/dist/store-tool-spans-DbDLOBOb.d.ts.map +1 -0
  244. package/dist/student-t-CvBq2mve.js +38 -0
  245. package/dist/student-t-CvBq2mve.js.map +1 -0
  246. package/dist/{summary-report-Lf-5I7xh.js → summary-report-Blysd6Z2.js} +6 -3
  247. package/dist/{summary-report-Lf-5I7xh.js.map → summary-report-Blysd6Z2.js.map} +1 -1
  248. package/dist/{summary-report-BNR7DWTj.d.ts → summary-report-CaL-Hnxt.d.ts} +5 -5
  249. package/dist/{summary-report-BNR7DWTj.d.ts.map → summary-report-CaL-Hnxt.d.ts.map} +1 -1
  250. package/dist/supervisor-run/index.d.ts +391 -3
  251. package/dist/supervisor-run/index.d.ts.map +1 -0
  252. package/dist/supervisor-run/index.js +1689 -2
  253. package/dist/{supervisor-run-D_sokXcO.js.map → supervisor-run/index.js.map} +1 -1
  254. package/dist/{extract-usage-CdZdoj1s.js → task-failure-attributes-CpQ4y5RD.js} +5 -157
  255. package/dist/task-failure-attributes-CpQ4y5RD.js.map +1 -0
  256. package/dist/{tool-groups-CZPGGlHf.d.ts → tool-groups-Cteb03Ps.d.ts} +3 -3
  257. package/dist/tool-groups-Cteb03Ps.d.ts.map +1 -0
  258. package/dist/tool-waste-BDdBZG1F.js +803 -0
  259. package/dist/tool-waste-BDdBZG1F.js.map +1 -0
  260. package/dist/tool-waste-DjRDEsuI.d.ts +128 -0
  261. package/dist/tool-waste-DjRDEsuI.d.ts.map +1 -0
  262. package/dist/trace-repair/index.d.ts +14 -5
  263. package/dist/trace-repair/index.d.ts.map +1 -1
  264. package/dist/trace-repair/index.js +35 -7
  265. package/dist/trace-repair/index.js.map +1 -1
  266. package/dist/traces.d.ts +406 -7
  267. package/dist/traces.d.ts.map +1 -0
  268. package/dist/traces.js +1011 -10
  269. package/dist/traces.js.map +1 -0
  270. package/dist/trajectory-replay/index.d.ts +16 -3
  271. package/dist/trajectory-replay/index.d.ts.map +1 -1
  272. package/dist/trajectory-replay/index.js +52 -5
  273. package/dist/trajectory-replay/index.js.map +1 -1
  274. package/dist/types-BEPZc6eo.d.ts +93 -0
  275. package/dist/types-BEPZc6eo.d.ts.map +1 -0
  276. package/dist/{usage-receipt-t7vAzCRQ.js → types-BI4fT3HN.js} +67 -67
  277. package/dist/types-BI4fT3HN.js.map +1 -0
  278. package/dist/{types-BnjdJ70P.d.ts → types-BZ59Ahr8.d.ts} +5 -5
  279. package/dist/{types-BnjdJ70P.d.ts.map → types-BZ59Ahr8.d.ts.map} +1 -1
  280. package/dist/{types-D216SgwM.d.ts → types-Cx3YUh2r.d.ts} +4 -241
  281. package/dist/types-Cx3YUh2r.d.ts.map +1 -0
  282. package/dist/{types-BvDKaULh.d.ts → types-DLQx4mKU.d.ts} +4 -4
  283. package/dist/{types-BvDKaULh.d.ts.map → types-DLQx4mKU.d.ts.map} +1 -1
  284. package/dist/{types-D4mog56g.d.ts → types-yLK8gXE9.d.ts} +2 -2
  285. package/dist/{types-D4mog56g.d.ts.map → types-yLK8gXE9.d.ts.map} +1 -1
  286. package/dist/verdict-BndeTAh_.js +61 -0
  287. package/dist/verdict-BndeTAh_.js.map +1 -0
  288. package/dist/verdict-E4eRNf7-.d.ts +392 -0
  289. package/dist/verdict-E4eRNf7-.d.ts.map +1 -0
  290. package/dist/{verdict-cache-BCcOh0kF.js → verdict-cache-mZf5FEiY.js} +3 -55
  291. package/dist/{verdict-cache-BCcOh0kF.js.map → verdict-cache-mZf5FEiY.js.map} +1 -1
  292. package/dist/wire/index.d.ts +3 -3
  293. package/dist/wire/index.d.ts.map +1 -1
  294. package/dist/wire/index.js +1 -1
  295. package/docs/charter.md +3 -3
  296. package/docs/control-runtime.md +3 -42
  297. package/docs/experiment.md +0 -1
  298. package/docs/feature-guide.md +2 -2
  299. package/docs/trace-repair-grader.md +1 -0
  300. package/docs/trajectory-replay.md +1 -0
  301. package/docs/verdicts.md +43 -0
  302. package/docs/verification-strategies.md +3 -2
  303. package/package.json +6 -11
  304. package/dist/agent-profile-DPi7IZg7.d.ts.map +0 -1
  305. package/dist/analyze-runs-C30yljDJ.js.map +0 -1
  306. package/dist/baseline-CavEbRyH.d.ts +0 -136
  307. package/dist/baseline-CavEbRyH.d.ts.map +0 -1
  308. package/dist/benchmark-command-BteMFN62.js.map +0 -1
  309. package/dist/benchmarks-Dzs8CKb1.js +0 -755
  310. package/dist/benchmarks-Dzs8CKb1.js.map +0 -1
  311. package/dist/campaign-C2TTzQII.js.map +0 -1
  312. package/dist/completion-verifier-DJA5BhPb.d.ts +0 -414
  313. package/dist/completion-verifier-DJA5BhPb.d.ts.map +0 -1
  314. package/dist/control.d.ts +0 -3
  315. package/dist/control.js +0 -2
  316. package/dist/dataset-C8xaLXdY.d.ts.map +0 -1
  317. package/dist/default-registry-Bf8Woqmq.d.ts.map +0 -1
  318. package/dist/default-registry-BmktKy8r.js.map +0 -1
  319. package/dist/engine-3hL-XqwJ.d.ts.map +0 -1
  320. package/dist/experiment-tracker-CnRICnMl.js +0 -500
  321. package/dist/experiment-tracker-CnRICnMl.js.map +0 -1
  322. package/dist/experiment-tracker-IMntXr6J.d.ts.map +0 -1
  323. package/dist/extract-usage-CdZdoj1s.js.map +0 -1
  324. package/dist/failure-cluster-CqcvCcdR.d.ts.map +0 -1
  325. package/dist/feedback-trajectory-CacHpxsp.d.ts.map +0 -1
  326. package/dist/index-BZ3-y4YL.d.ts +0 -391
  327. package/dist/index-BZ3-y4YL.d.ts.map +0 -1
  328. package/dist/index-CQTZ-4XN.d.ts.map +0 -1
  329. package/dist/index-DPPGNJ_R.d.ts.map +0 -1
  330. package/dist/index-YE4KdKbO2.d.ts +0 -335
  331. package/dist/index-YE4KdKbO2.d.ts.map +0 -1
  332. package/dist/paired-arms-iZ08VFMN.js +0 -260
  333. package/dist/paired-arms-iZ08VFMN.js.map +0 -1
  334. package/dist/paired-promotion-decision-B6zJ3gYM.d.ts +0 -114
  335. package/dist/paired-promotion-decision-B6zJ3gYM.d.ts.map +0 -1
  336. package/dist/prime-protocol-BfSalTfR.js.map +0 -1
  337. package/dist/promotion-policy-Ckjhzg_4.d.ts +0 -289
  338. package/dist/promotion-policy-Ckjhzg_4.d.ts.map +0 -1
  339. package/dist/promotion-policy-CrLrmys8.js.map +0 -1
  340. package/dist/proposal-findings-2GIUo1et.js.map +0 -1
  341. package/dist/propose-review-control-dSNPjFUH.js +0 -1458
  342. package/dist/propose-review-control-dSNPjFUH.js.map +0 -1
  343. package/dist/release-report-BUYmoKo2.js.map +0 -1
  344. package/dist/release-report-DA2BCu5a.d.ts.map +0 -1
  345. package/dist/replay-CohS93nE.js +0 -1859
  346. package/dist/replay-CohS93nE.js.map +0 -1
  347. package/dist/replay-DbhZ4Ked.d.ts +0 -834
  348. package/dist/replay-DbhZ4Ked.d.ts.map +0 -1
  349. package/dist/reward-hacking-BDToousL.js.map +0 -1
  350. package/dist/run-evidence-Dhi3C81V.d.ts +0 -225
  351. package/dist/run-evidence-Dhi3C81V.d.ts.map +0 -1
  352. package/dist/schema-Cef2cFmb2.d.ts.map +0 -1
  353. package/dist/semantic-concept-judge-D1z-KepS.js +0 -767
  354. package/dist/semantic-concept-judge-D1z-KepS.js.map +0 -1
  355. package/dist/series-convergence-ofsqPWhs.d.ts +0 -35
  356. package/dist/series-convergence-ofsqPWhs.d.ts.map +0 -1
  357. package/dist/server-iu0ede49.js.map +0 -1
  358. package/dist/single-run-lock-DFWHEB09.js.map +0 -1
  359. package/dist/skill-usage-CO9OLRBx.d.ts.map +0 -1
  360. package/dist/skillopt-optimization-method-CQdVeM8k.js.map +0 -1
  361. package/dist/skillopt-optimization-method-USDKhxSA.d.ts.map +0 -1
  362. package/dist/statistical-heldout-TQ-4CYiN.d.ts.map +0 -1
  363. package/dist/statistics-ByxzSiOM.js +0 -2212
  364. package/dist/statistics-ByxzSiOM.js.map +0 -1
  365. package/dist/statistics-D6Uebe_4.d.ts +0 -968
  366. package/dist/statistics-D6Uebe_4.d.ts.map +0 -1
  367. package/dist/supervisor-run-D_sokXcO.js +0 -1690
  368. package/dist/test-graded-scenario-D1TaI2va.d.ts +0 -141
  369. package/dist/test-graded-scenario-D1TaI2va.d.ts.map +0 -1
  370. package/dist/test-graded-scenario-JHcKQNpq.js +0 -318
  371. package/dist/test-graded-scenario-JHcKQNpq.js.map +0 -1
  372. package/dist/tool-groups-CZPGGlHf.d.ts.map +0 -1
  373. package/dist/tool-use-metrics-DEGMKycK.js +0 -370
  374. package/dist/tool-use-metrics-DEGMKycK.js.map +0 -1
  375. package/dist/types-D216SgwM.d.ts.map +0 -1
  376. package/dist/usage-receipt-t7vAzCRQ.js.map +0 -1
  377. package/dist/verdict-DExhxfgR.d.ts +0 -201
  378. package/dist/verdict-DExhxfgR.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-waste-BDdBZG1F.js","names":["prev"],"sources":["../src/statistics/agreement-irr.ts","../src/failure-taxonomy.ts","../src/pipelines/budget-breach.ts","../src/pipelines/failure-cluster.ts","../src/pipelines/judge-agreement.ts","../src/tool-use-metrics.ts","../src/pipelines/tool-waste.ts"],"sourcesContent":["import { ValidationError } from '../errors'\nimport {\n type ContinuousAgreement,\n type ContinuousAgreementOptions,\n continuousAgreement,\n} from '../judge-calibration'\nimport type { JudgeScore } from '../types'\n\n/**\n * Inter-rater reliability — Krippendorff's α under the squared-difference\n * metric, pooled across dimensions.\n *\n * Each inner array is one judge's scores. Items are matched by position\n * WITHIN a dimension: the k-th score a judge supplies carrying dimension\n * `d` is item k of `d`, and the ratings compared against each other are\n * the ones different judges gave to the same item. Every judge that scores\n * a dimension at all must supply the same number of scores for it —\n * ragged input cannot be aligned into items and throws rather than\n * comparing mismatched items.\n *\n * α = 1 − D_observed / D_expected: D_observed averages the squared\n * difference over within-item judge pairs, D_expected over every pair of\n * ratings irrespective of item. α = 1 is perfect agreement, 0 is chance,\n * negative is systematic disagreement.\n */\nexport function interRaterReliability(judgeScores: JudgeScore[][]): number {\n if (judgeScores.length < 2) return 1\n\n // dimension → one score sequence per judge, in that judge's supplied order.\n const perDimension = new Map<string, number[][]>()\n for (let judgeIndex = 0; judgeIndex < judgeScores.length; judgeIndex++) {\n for (const s of judgeScores[judgeIndex]!) {\n let byJudge = perDimension.get(s.dimension)\n if (byJudge === undefined) {\n byJudge = Array.from({ length: judgeScores.length }, () => [] as number[])\n perDimension.set(s.dimension, byJudge)\n }\n byJudge[judgeIndex]!.push(s.score)\n }\n }\n\n const allValues: number[] = []\n const pairDiffs: number[] = []\n\n for (const [dimension, byJudge] of perDimension) {\n const scoring = byJudge.filter((scores) => scores.length > 0)\n if (scoring.length < 2) continue\n const itemCount = scoring[0]!.length\n if (scoring.some((scores) => scores.length !== itemCount)) {\n throw new ValidationError(\n `interRaterReliability: dimension '${dimension}' has judges supplying ` +\n `${scoring.map((scores) => scores.length).join('/')} scores — items cannot be aligned`,\n )\n }\n for (let item = 0; item < itemCount; item++) {\n const ratings = scoring.map((scores) => scores[item]!)\n for (const v of ratings) allValues.push(v)\n for (let i = 0; i < ratings.length; i++) {\n for (let j = i + 1; j < ratings.length; j++) {\n pairDiffs.push((ratings[i]! - ratings[j]!) ** 2)\n }\n }\n }\n }\n\n if (pairDiffs.length === 0 || allValues.length < 2) return 1\n\n const observedDisagreement = pairDiffs.reduce((a, b) => a + b, 0) / pairDiffs.length\n\n // Expected disagreement from all possible pairings of values\n let expectedDisagreement = 0\n let expectedCount = 0\n for (let i = 0; i < allValues.length; i++) {\n for (let j = i + 1; j < allValues.length; j++) {\n expectedDisagreement += (allValues[i]! - allValues[j]!) ** 2\n expectedCount++\n }\n }\n expectedDisagreement = expectedCount > 0 ? expectedDisagreement / expectedCount : 0\n\n if (expectedDisagreement === 0) return 1\n return 1 - observedDisagreement / expectedDisagreement\n}\n\n// ── Corpus-wide inter-rater agreement ──────────────────────────────\n//\n// `interRaterReliability(judgeScores)` computes a within-item\n// Krippendorff α — multiple judges score *the same item* and we ask\n// \"how much do their scores agree on that item?\" Useful for a single\n// scenario, but it cannot answer \"how reliable are these judges across\n// the whole evaluation corpus?\"\n//\n// `corpusInterRaterAgreement` does the corpus-wide question properly.\n// Inputs are flat per-(item, judge, dimension) score records. For each\n// dimension we pivot to a complete [n_items × n_judges] matrix and feed\n// it to the ICC(2,1) + κ_w machinery already validated in\n// `judge-calibration.ts`. An overall pooled metric averages the\n// per-dimension ICC/κ across dimensions.\n\nexport interface CorpusScoreRecord {\n /** Stable identifier for the rated item (scenario, span, turn, …). */\n itemId: string\n /** Identifier for the judge that produced this score. */\n judgeName: string\n /** Dimension name (matches `JudgeScore.dimension`). */\n dimension: string\n /** Numeric score; must be finite. */\n score: number\n}\n\nexport interface CorpusAgreementPerDimension extends ContinuousAgreement {\n dimension: string\n /** Item IDs that contributed to this dimension's matrix (every judge scored them). */\n itemIds: string[]\n /** Judge IDs that contributed to this dimension's matrix. */\n judgeIds: string[]\n}\n\nexport interface CorpusAgreementReport {\n /** Per-dimension ICC(2,1) + κ_w + Pearson + Spearman + bootstrap CIs. */\n perDimension: CorpusAgreementPerDimension[]\n /** Mean ICC across dimensions (NaN if no dimension yielded a finite ICC). */\n overallIcc: number\n /** Mean weighted κ across dimensions (NaN if none finite). */\n overallWeightedKappa: number\n /** Dimensions evaluated (sorted). */\n dimensions: string[]\n /** Judges seen across the corpus (sorted). */\n judgeIds: string[]\n}\n\nexport interface CorpusAgreementOptions extends ContinuousAgreementOptions {\n /**\n * Restrict the audit to these dimensions. Default = every dimension\n * that appears in the input. A dimension named here but absent from\n * the input throws — silent omission would corrupt the overall metric.\n */\n dimensions?: string[]\n /**\n * Restrict the audit to these judges. Default = every judge that\n * appears in the input. A judge named here but absent from a\n * dimension throws (see \"fail loud\" below).\n */\n judges?: string[]\n}\n\n/**\n * Corpus-wide inter-rater agreement across N items × M judges × D dimensions.\n *\n * For each dimension, builds the [n_items][n_judges] matrix of scores\n * (keeping only items every judge rated on that dimension), then runs\n * `continuousAgreement` to get ICC(2,1), κ_w, Pearson, Spearman, and\n * bootstrap CIs. Reports a pooled mean across dimensions as a single\n * \"is this judge panel reliable on this corpus?\" number.\n *\n * Fail-loud contract:\n * - Empty input throws.\n * - Fewer than 2 judges or fewer than 2 items per dimension throws.\n * - A judge present in some dimensions but with zero scored items on\n * another dimension throws (would silently shrink the matrix).\n * - Duplicate (itemId, judgeName, dimension) records throw.\n */\nexport function corpusInterRaterAgreement(\n records: CorpusScoreRecord[],\n opts: CorpusAgreementOptions = {},\n): CorpusAgreementReport {\n if (records.length === 0) {\n throw new ValidationError('corpusInterRaterAgreement: no score records supplied')\n }\n\n const judgesSeen = new Set<string>()\n const dimsSeen = new Set<string>()\n // dimension → judge → itemId → score\n const grid = new Map<string, Map<string, Map<string, number>>>()\n\n for (const r of records) {\n if (!Number.isFinite(r.score)) {\n throw new ValidationError(\n `corpusInterRaterAgreement: non-finite score for (item=${r.itemId}, judge=${r.judgeName}, dim=${r.dimension})`,\n )\n }\n judgesSeen.add(r.judgeName)\n dimsSeen.add(r.dimension)\n const byJudge = grid.get(r.dimension) ?? new Map<string, Map<string, number>>()\n const byItem = byJudge.get(r.judgeName) ?? new Map<string, number>()\n if (byItem.has(r.itemId)) {\n throw new ValidationError(\n `corpusInterRaterAgreement: duplicate record for (item=${r.itemId}, judge=${r.judgeName}, dim=${r.dimension})`,\n )\n }\n byItem.set(r.itemId, r.score)\n byJudge.set(r.judgeName, byItem)\n grid.set(r.dimension, byJudge)\n }\n\n const targetDims = opts.dimensions ?? [...dimsSeen].sort()\n for (const d of targetDims) {\n if (!dimsSeen.has(d)) {\n throw new ValidationError(\n `corpusInterRaterAgreement: dimension '${d}' was requested but no records carry it`,\n )\n }\n }\n const targetJudges = opts.judges ? [...opts.judges] : [...judgesSeen].sort()\n for (const j of targetJudges) {\n if (!judgesSeen.has(j)) {\n throw new ValidationError(\n `corpusInterRaterAgreement: judge '${j}' was requested but produced no records`,\n )\n }\n }\n if (targetJudges.length < 2) {\n throw new ValidationError(\n `corpusInterRaterAgreement: need ≥2 judges, got ${targetJudges.length}`,\n )\n }\n\n const perDimension: CorpusAgreementPerDimension[] = []\n const iccs: number[] = []\n const kappas: number[] = []\n\n for (const dim of targetDims) {\n const byJudge = grid.get(dim)!\n // Fail loud: every requested judge must have scored ≥1 item on this dim.\n const judgeItemCounts: Record<string, number> = {}\n for (const j of targetJudges) {\n const m = byJudge.get(j)\n judgeItemCounts[j] = m?.size ?? 0\n }\n const emptyJudges = targetJudges.filter((j) => judgeItemCounts[j] === 0)\n if (emptyJudges.length > 0) {\n throw new ValidationError(\n `corpusInterRaterAgreement: dimension '${dim}' has no scores from judge(s) ${emptyJudges.join(', ')} (counts: ${JSON.stringify(judgeItemCounts)})`,\n )\n }\n\n // Items rated by *every* requested judge on this dim.\n let commonItems: Set<string> | null = null\n for (const j of targetJudges) {\n const ids = new Set(byJudge.get(j)!.keys())\n if (commonItems === null) {\n commonItems = ids\n } else {\n const prev: Set<string> = commonItems\n commonItems = new Set([...prev].filter((x) => ids.has(x)))\n }\n }\n const sortedItems = [...(commonItems ?? new Set<string>())].sort()\n if (sortedItems.length < 2) {\n throw new ValidationError(\n `corpusInterRaterAgreement: dimension '${dim}' has ${sortedItems.length} item(s) rated by all ${targetJudges.length} judges (need ≥2)`,\n )\n }\n\n const matrix: number[][] = sortedItems.map((itemId) =>\n targetJudges.map((j) => byJudge.get(j)!.get(itemId)!),\n )\n const agreement = continuousAgreement(matrix, opts)\n perDimension.push({\n ...agreement,\n dimension: dim,\n itemIds: sortedItems,\n judgeIds: [...targetJudges],\n })\n if (Number.isFinite(agreement.icc)) iccs.push(agreement.icc)\n if (Number.isFinite(agreement.weightedKappa)) kappas.push(agreement.weightedKappa)\n }\n\n const mean = (xs: number[]) =>\n xs.length === 0 ? Number.NaN : xs.reduce((a, b) => a + b, 0) / xs.length\n return {\n perDimension,\n overallIcc: mean(iccs),\n overallWeightedKappa: mean(kappas),\n dimensions: targetDims,\n judgeIds: targetJudges,\n }\n}\n\n/**\n * Convenience adapter for `JudgeScore[]` data keyed externally by item.\n *\n * Use when you have per-item arrays of `JudgeScore[]` (e.g. one\n * `ScenarioResult.judgeScores` per scenario) and want corpus-wide\n * agreement without manually flattening. `itemId` must be unique per\n * row of `itemsScores`.\n */\nexport function corpusInterRaterAgreementFromJudgeScores(\n itemsScores: Array<{ itemId: string; scores: JudgeScore[] }>,\n opts: CorpusAgreementOptions = {},\n): CorpusAgreementReport {\n const records: CorpusScoreRecord[] = []\n const seen = new Set<string>()\n for (const { itemId, scores } of itemsScores) {\n if (seen.has(itemId)) {\n throw new ValidationError(\n `corpusInterRaterAgreementFromJudgeScores: duplicate itemId '${itemId}'`,\n )\n }\n seen.add(itemId)\n for (const s of scores) {\n records.push({\n itemId,\n judgeName: s.judgeName,\n dimension: s.dimension,\n score: s.score,\n })\n }\n }\n return corpusInterRaterAgreement(records, opts)\n}\n","/**\n * Failure taxonomy — canonical classes + a default classifier.\n *\n * Every failed run should end up in a named class. The classifier here\n * is rule-based (fast, deterministic); an LLM fallback can be added by\n * the consumer for novel cases and trained into the rule base over time.\n *\n * Consumers call `classifyFailure(run, spans, events)` and persist the\n * returned class as `Run.outcome.failureClass`.\n */\n\nimport type { FailureClass, Run, Span, TraceEvent } from './trace/schema'\nimport { FAILURE_CLASSES } from './trace/schema'\n\nexport { FAILURE_CLASSES, type FailureClass }\n\nexport interface FailureContext {\n run: Run\n spans: Span[]\n events: TraceEvent[]\n}\n\nexport interface FailureClassification {\n failureClass: FailureClass\n reason: string\n triggerSpanId?: string\n triggerEventId?: string\n}\n\n/** Ordered rules — first match wins. */\nexport interface FailureRule {\n id: string\n match: (ctx: FailureContext) => {\n failureClass: FailureClass\n reason: string\n triggerSpanId?: string\n triggerEventId?: string\n } | null\n}\n\nexport const DEFAULT_RULES: FailureRule[] = [\n // Outcome already named? Respect it.\n {\n id: 'explicit-outcome',\n match: ({ run }) => {\n const fc = run.outcome?.failureClass\n if (fc && fc !== 'unknown')\n return { failureClass: fc, reason: 'outcome.failureClass set explicitly' }\n return null\n },\n },\n {\n id: 'knowledge-readiness-blocked',\n match: ({ events }) => {\n const event = events.find(\n (e) =>\n e.kind === 'custom' &&\n e.payload.kind === 'readiness_scored' &&\n e.payload.passed === false,\n )\n return event\n ? {\n failureClass: 'knowledge_readiness_blocked',\n reason: 'knowledge readiness report blocked execution',\n triggerEventId: event.eventId,\n }\n : null\n },\n },\n {\n id: 'bad-integration-manifest',\n match: ({ events }) => {\n const event = events.find(\n (e) =>\n e.kind === 'custom' &&\n ((e.payload.kind === 'integration_manifest_validated' && e.payload.valid === false) ||\n (e.payload.kind === 'integration_invoke_failed' &&\n e.payload.code === 'manifest_invalid')),\n )\n return event\n ? {\n failureClass: 'bad_integration_manifest',\n reason: 'integration manifest validation failed before launch',\n triggerEventId: event.eventId,\n }\n : null\n },\n },\n {\n id: 'missing-integration-connection',\n match: ({ events }) => {\n const event = events.find(\n (e) =>\n e.kind === 'custom' &&\n e.payload.kind === 'integration_manifest_resolved' &&\n hasResolutionStatus(e.payload, 'missing_connection'),\n )\n return event\n ? {\n failureClass: 'missing_integration_connection',\n reason: 'required integration connection was missing',\n triggerEventId: event.eventId,\n }\n : null\n },\n },\n {\n id: 'missing-integration-scope',\n match: ({ events }) => {\n const event = events.find(\n (e) =>\n e.kind === 'custom' &&\n ((e.payload.kind === 'integration_manifest_resolved' && hasMissingScopes(e.payload)) ||\n (e.payload.kind === 'integration_invoke_failed' && e.payload.code === 'scope_denied')),\n )\n return event\n ? {\n failureClass: 'missing_integration_scope',\n reason: 'integration grant or connection lacks required scopes',\n triggerEventId: event.eventId,\n }\n : null\n },\n },\n {\n id: 'integration-approval-required',\n match: ({ events }) => {\n const event = events.find(\n (e) =>\n e.kind === 'custom' &&\n ((e.payload.kind === 'integration_invoke' && e.payload.status === 'approval_required') ||\n (e.payload.kind === 'integration_invoke_failed' &&\n e.payload.code === 'approval_required') ||\n e.payload.kind === 'integration_approval_required'),\n )\n return event\n ? {\n failureClass: 'integration_approval_required',\n reason: 'integration write paused for user approval',\n triggerEventId: event.eventId,\n }\n : null\n },\n },\n {\n id: 'integration-auth-expired',\n match: ({ events }) => {\n const event = events.find(\n (e) =>\n e.kind === 'custom' &&\n e.payload.kind === 'integration_invoke_failed' &&\n (e.payload.code === 'auth_expired' ||\n e.payload.code === 'connection_not_active' ||\n e.payload.code === 'capability_expired' ||\n e.payload.status === 'expired'),\n )\n return event\n ? {\n failureClass: 'integration_auth_expired',\n reason: 'integration connection or capability expired',\n triggerEventId: event.eventId,\n }\n : null\n },\n },\n {\n id: 'unsafe-integration-write-denied',\n match: ({ events }) => {\n const event = events.find(\n (e) =>\n e.kind === 'custom' &&\n e.payload.kind === 'integration_invoke_failed' &&\n (e.payload.code === 'unsafe_write_denied' ||\n e.payload.code === 'policy_denied' ||\n e.payload.code === 'action_denied'),\n )\n return event\n ? {\n failureClass: 'unsafe_integration_write_denied',\n reason: 'integration write was denied by policy or capability scope',\n triggerEventId: event.eventId,\n }\n : null\n },\n },\n {\n id: 'integration-provider-failure',\n match: ({ events }) => {\n const event = events.find(\n (e) =>\n e.kind === 'custom' &&\n e.payload.kind === 'integration_invoke_failed' &&\n ![\n 'scope_denied',\n 'approval_required',\n 'auth_expired',\n 'connection_not_active',\n 'capability_expired',\n 'unsafe_write_denied',\n 'policy_denied',\n 'action_denied',\n 'manifest_invalid',\n ].includes(String(e.payload.code)),\n )\n return event\n ? {\n failureClass: 'integration_provider_failure',\n reason: 'integration provider invocation failed',\n triggerEventId: event.eventId,\n }\n : null\n },\n },\n {\n id: 'missing-credentials',\n match: ({ events }) => {\n const event = events.find(\n (e) =>\n e.kind === 'custom' &&\n e.payload.kind === 'knowledge_gap' &&\n e.payload.category === 'credential_or_secret',\n )\n return event\n ? {\n failureClass: 'missing_credentials',\n reason: 'required credential or secret was missing',\n triggerEventId: event.eventId,\n }\n : null\n },\n },\n {\n id: 'bad-retrieval',\n match: ({ run, spans }) => {\n if (run.outcome?.pass !== false) return null\n const retrieval = spans.find(\n (s) =>\n s.kind === 'retrieval' && (s.hits.length === 0 || s.hits.every((hit) => hit.score <= 0)),\n )\n return retrieval\n ? {\n failureClass: 'bad_retrieval',\n reason: 'retrieval returned no useful hits for a failed run',\n triggerSpanId: retrieval.spanId,\n }\n : null\n },\n },\n {\n id: 'insufficient-evidence',\n match: ({ events }) => {\n const event = events.find(\n (e) =>\n e.kind === 'custom' &&\n e.payload.kind === 'knowledge_gap' &&\n e.payload.reason === 'insufficient_evidence',\n )\n return event\n ? {\n failureClass: 'insufficient_evidence',\n reason: 'task proceeded with insufficient supporting evidence',\n triggerEventId: event.eventId,\n }\n : null\n },\n },\n {\n id: 'contradictory-evidence',\n match: ({ events }) => {\n const event = events.find(\n (e) =>\n e.kind === 'custom' &&\n e.payload.kind === 'knowledge_gap' &&\n e.payload.reason === 'contradictory_evidence',\n )\n return event\n ? {\n failureClass: 'contradictory_evidence',\n reason: 'supporting evidence contradicted itself',\n triggerEventId: event.eventId,\n }\n : null\n },\n },\n // Budget breach events\n {\n id: 'budget-breach',\n match: ({ events }) => {\n const breach = events.find((e) => e.kind === 'budget_breach')\n return breach\n ? {\n failureClass: 'budget_exceeded',\n reason: `budget breached on ${breach.payload.dimension ?? 'unknown dimension'}`,\n triggerEventId: breach.eventId,\n }\n : null\n },\n },\n // Policy violations\n {\n id: 'policy-violation',\n match: ({ events }) => {\n const e = events.find((x) => x.kind === 'policy_violation')\n return e\n ? {\n failureClass: 'policy_violation',\n reason: 'policy_violation event emitted',\n triggerEventId: e.eventId,\n }\n : null\n },\n },\n // Sandbox non-zero exit code\n {\n id: 'sandbox-failure',\n match: ({ spans }) => {\n const s = spans.find(\n (x) => x.kind === 'sandbox' && typeof x.exitCode === 'number' && x.exitCode !== 0,\n )\n if (!s) return null\n return {\n failureClass: 'sandbox_failure',\n reason: `sandbox exited ${(s as Extract<Span, { kind: 'sandbox' }>).exitCode}`,\n triggerSpanId: s.spanId,\n }\n },\n },\n // Timeout: run aborted by external signal\n {\n id: 'timeout',\n match: ({ run, events }) => {\n if (run.status !== 'aborted') return null\n const hasTimeout = events.some(\n (e) =>\n e.kind === 'error' &&\n String(e.payload.reason ?? '')\n .toLowerCase()\n .includes('timeout'),\n )\n const note = (run.outcome?.notes ?? '').toLowerCase()\n if (hasTimeout || note.includes('timeout') || note.includes('deadline')) {\n return { failureClass: 'timeout', reason: 'timeout signal observed' }\n }\n return null\n },\n },\n // Tool recovery failure: many consecutive tool errors on the same tool\n {\n id: 'tool-recovery-failure',\n match: ({ spans }) => {\n const tools = spans.filter((s) => s.kind === 'tool')\n const byTool = new Map<string, Span[]>()\n for (const t of tools) {\n const name = (t as Extract<Span, { kind: 'tool' }>).toolName\n const arr = byTool.get(name) ?? []\n arr.push(t)\n byTool.set(name, arr)\n }\n for (const [name, arr] of byTool) {\n const errs = arr.filter((s) => s.status === 'error')\n if (errs.length >= 3 && errs.length === arr.length) {\n return {\n failureClass: 'tool_recovery_failure',\n reason: `${errs.length} consecutive errors on tool \"${name}\"`,\n triggerSpanId: errs[errs.length - 1]!.spanId,\n }\n }\n }\n return null\n },\n },\n // Tool selection error: the run failed and agent called zero tools despite having them\n {\n id: 'tool-selection-error',\n match: ({ run, spans }) => {\n if (run.outcome?.pass !== false) return null\n const hasToolsAvailable = spans.some(\n (s) =>\n s.kind === 'agent' &&\n (s.attributes?.toolsAvailable as number | undefined) !== undefined &&\n (s.attributes?.toolsAvailable as number) > 0,\n )\n const tools = spans.filter((s) => s.kind === 'tool')\n if (hasToolsAvailable && tools.length === 0) {\n return {\n failureClass: 'tool_selection_error',\n reason: 'tools were available but none were called',\n }\n }\n return null\n },\n },\n // Format drift: scored by a judge with dimension='format' below threshold\n {\n id: 'format-drift',\n match: ({ spans }) => {\n const judge = spans.find(\n (s) =>\n s.kind === 'judge' &&\n (s as Extract<Span, { kind: 'judge' }>).dimension === 'format' &&\n (s as Extract<Span, { kind: 'judge' }>).score < 0.5,\n )\n return judge\n ? {\n failureClass: 'format_drift',\n reason: 'format judge scored below 0.5',\n triggerSpanId: judge.spanId,\n }\n : null\n },\n },\n]\n\nfunction hasResolutionStatus(payload: Record<string, unknown>, status: string): boolean {\n if (status === 'missing_connection' && stringArray(payload.missingConnections).length > 0)\n return true\n return resolutionItems(payload).some((item) => item.status === status)\n}\n\nfunction hasMissingScopes(payload: Record<string, unknown>): boolean {\n if (stringArray(payload.missingScopes).length > 0) return true\n return resolutionItems(payload).some(\n (item) => Array.isArray(item.missingScopes) && item.missingScopes.length > 0,\n )\n}\n\nfunction resolutionItems(payload: Record<string, unknown>): Array<Record<string, unknown>> {\n return [\n ...records(payload.missing),\n ...records(payload.optionalMissing),\n ...records(payload.ready),\n ]\n}\n\nfunction records(value: unknown): Array<Record<string, unknown>> {\n if (!Array.isArray(value)) return []\n return value.filter(\n (item): item is Record<string, unknown> =>\n Boolean(item) && typeof item === 'object' && !Array.isArray(item),\n )\n}\n\nfunction stringArray(value: unknown): string[] {\n return Array.isArray(value)\n ? value.filter((item): item is string => typeof item === 'string')\n : []\n}\n\n/** Classify the failure mode of a run using an ordered rule list. */\nexport function classifyFailure(\n ctx: FailureContext,\n rules: FailureRule[] = DEFAULT_RULES,\n): FailureClassification {\n if (ctx.run.outcome?.pass !== false && ctx.run.status === 'completed') {\n return { failureClass: 'success', reason: 'run completed with pass=true (or no explicit fail)' }\n }\n for (const rule of rules) {\n const hit = rule.match(ctx)\n if (hit) return hit\n }\n return { failureClass: 'unknown', reason: 'no rule matched; run failed for unclassified reason' }\n}\n","/**\n * BudgetBreachView — aggregates breach events across the corpus.\n *\n * Answers: which dimensions get hit most often? Which scenarios are\n * underbudgeted? Which variants trigger the most breaches?\n */\n\nimport type { BudgetSpec } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\n\nexport interface BudgetBreachFinding {\n runId: string\n scenarioId: string\n variantId?: string\n dimension: keyof BudgetSpec\n limit: number\n consumed: number\n excessRatio: number\n timestamp: number\n}\n\nexport interface BudgetBreachReport {\n findings: BudgetBreachFinding[]\n byDimension: Record<string, number>\n byScenario: Record<string, number>\n byVariant: Record<string, number>\n totalRuns: number\n breachedRunRatio: number\n}\n\nexport async function budgetBreachView(\n store: TraceStore,\n options: { scenarioId?: string; variantId?: string } = {},\n): Promise<BudgetBreachReport> {\n const runs = await store.listRuns({\n scenarioId: options.scenarioId,\n variantId: options.variantId,\n })\n const findings: BudgetBreachFinding[] = []\n const byDimension: Record<string, number> = {}\n const byScenario: Record<string, number> = {}\n const byVariant: Record<string, number> = {}\n\n for (const run of runs) {\n const entries = await store.budget(run.runId)\n for (const e of entries) {\n if (!e.breached) continue\n const excessRatio = e.limit > 0 ? e.consumed / e.limit : Infinity\n findings.push({\n runId: run.runId,\n scenarioId: run.scenarioId,\n variantId: run.variantId,\n dimension: e.dimension,\n limit: e.limit,\n consumed: e.consumed,\n excessRatio,\n timestamp: e.timestamp,\n })\n byDimension[e.dimension] = (byDimension[e.dimension] ?? 0) + 1\n byScenario[run.scenarioId] = (byScenario[run.scenarioId] ?? 0) + 1\n if (run.variantId) byVariant[run.variantId] = (byVariant[run.variantId] ?? 0) + 1\n }\n }\n\n const breachedRuns = new Set(findings.map((f) => f.runId))\n return {\n findings,\n byDimension,\n byScenario,\n byVariant,\n totalRuns: runs.length,\n breachedRunRatio: runs.length > 0 ? breachedRuns.size / runs.length : 0,\n }\n}\n","/**\n * FailureClusterView — groups failed runs by (failureClass, triggerTool,\n * argHash-prefix) so weekly reviews can prioritize the top-N clusters.\n *\n * Each cluster includes: N runs, scenarios affected, representative\n * error message, a proposed mitigation hint (rule → action table).\n */\n\nimport { classifyFailure, DEFAULT_RULES, type FailureRule } from '../failure-taxonomy'\nimport { argHash, hasCapturedToolArgs, toolSpans } from '../trace/query'\nimport type { FailureClass, Span } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\n\nexport interface FailureCluster {\n failureClass: FailureClass\n /** Tool name when the trigger was a tool span, else undefined. */\n toolName?: string\n /** First 16 chars of argHash — clusters similar args. */\n argPrefix?: string\n /**\n * Source dimension when the trigger was a judge span (e.g. `'format'`,\n * `'safety'`, `'correctness'`). Lets cross-template aggregators\n * group failures by the dimension that fired without overloading\n * `argPrefix`. Optional — clusters without this field deserialize cleanly.\n */\n dimension?: string\n runCount: number\n scenarioIds: string[]\n exampleError?: string\n exampleRunId: string\n}\n\nexport interface FailureClusterReport {\n clusters: FailureCluster[]\n totalFailures: number\n totalRuns: number\n}\n\nexport async function failureClusterView(\n store: TraceStore,\n options: { rules?: FailureRule[]; minClusterSize?: number } = {},\n): Promise<FailureClusterReport> {\n const rules = options.rules ?? DEFAULT_RULES\n const minSize = options.minClusterSize ?? 1\n const runs = await store.listRuns()\n\n type Key = string\n const clusters = new Map<Key, FailureCluster>()\n let totalFailures = 0\n\n for (const run of runs) {\n if (run.status === 'completed' && run.outcome?.pass !== false) continue\n totalFailures++\n const spans = await store.spans({ runId: run.runId })\n const events = await store.events({ runId: run.runId })\n const cls = classifyFailure({ run, spans, events }, rules)\n\n let toolName: string | undefined\n let argPrefix: string | undefined\n let dimension: string | undefined\n if (cls.triggerSpanId) {\n const trig = spans.find((s) => s.spanId === cls.triggerSpanId)\n if (trig?.kind === 'tool') {\n toolName = trig.toolName\n if (hasCapturedToolArgs(trig)) argPrefix = argHash(trig.args).slice(0, 16)\n } else if (trig?.kind === 'judge') {\n dimension = trig.dimension\n }\n }\n // Fallback: look at the last errored tool span\n if (!toolName) {\n const ts = await toolSpans(store, run.runId)\n const errored = ts.filter((t) => t.status === 'error').pop()\n if (errored) {\n toolName = errored.toolName\n if (hasCapturedToolArgs(errored)) argPrefix = argHash(errored.args).slice(0, 16)\n }\n }\n // Secondary signal: any judge span on the failed run carries a\n // dimension. Useful when the rule classified by judge score but\n // didn't surface the trigger span (or surfaced a non-judge span).\n if (!dimension) {\n const judge = spans.find((s) => s.kind === 'judge' && typeof s.dimension === 'string')\n if (judge?.kind === 'judge') dimension = judge.dimension\n }\n\n const key = `${cls.failureClass}|${toolName ?? ''}|${argPrefix ?? ''}|${dimension ?? ''}`\n let cluster = clusters.get(key)\n if (!cluster) {\n cluster = {\n failureClass: cls.failureClass,\n toolName,\n argPrefix,\n dimension,\n runCount: 0,\n scenarioIds: [],\n exampleRunId: run.runId,\n exampleError: firstErrorMessage(spans) ?? cls.reason,\n }\n clusters.set(key, cluster)\n }\n cluster.runCount++\n if (!cluster.scenarioIds.includes(run.scenarioId)) cluster.scenarioIds.push(run.scenarioId)\n }\n\n const arr = [...clusters.values()]\n .filter((c) => c.runCount >= minSize)\n .sort((a, b) => b.runCount - a.runCount)\n\n return { clusters: arr, totalFailures, totalRuns: runs.length }\n}\n\nfunction firstErrorMessage(spans: Span[]): string | undefined {\n const errored = spans.find((s) => s.status === 'error')\n return errored?.error\n}\n","/**\n * JudgeAgreementView — pairwise agreement between judges across the\n * corpus, grouped by dimension.\n *\n * Output drives two workflows:\n * - Judge robustness audit: \"does Claude agree with GPT at κ ≥ 0.6?\"\n * - Calibration tracking: κ vs golden human labels over time (by\n * providing a `humanGoldenJudgeId`).\n */\n\nimport { interRaterReliability, pearsonR } from '../statistics'\nimport type { JudgeSpan } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\n\nexport interface JudgePair {\n judgeA: string\n judgeB: string\n dimension: string\n /** Number of (targetSpanId, dimension) tuples both judges scored. */\n commonItems: number\n pearson: number\n krippendorff: number\n}\n\nexport interface JudgeAgreementReport {\n pairs: JudgePair[]\n dimensions: string[]\n judgeIds: string[]\n}\n\nexport async function judgeAgreementView(store: TraceStore): Promise<JudgeAgreementReport> {\n const all = (await store.spans({ kind: 'judge' })).filter(\n (s): s is JudgeSpan => s.kind === 'judge',\n )\n if (all.length === 0) return { pairs: [], dimensions: [], judgeIds: [] }\n\n const byDimension = new Map<string, JudgeSpan[]>()\n for (const s of all) {\n const arr = byDimension.get(s.dimension) ?? []\n arr.push(s)\n byDimension.set(s.dimension, arr)\n }\n\n const judgeIds = [...new Set(all.map((s) => s.judgeId))].sort()\n const pairs: JudgePair[] = []\n for (const [dim, spans] of byDimension) {\n const byJudge = new Map<string, Map<string, number>>()\n for (const s of spans) {\n const m = byJudge.get(s.judgeId) ?? new Map<string, number>()\n m.set(s.targetSpanId, s.score)\n byJudge.set(s.judgeId, m)\n }\n const judgesHere = [...byJudge.keys()]\n for (let i = 0; i < judgesHere.length; i++) {\n for (let j = i + 1; j < judgesHere.length; j++) {\n const judgeI = judgesHere[i]!\n const judgeJ = judgesHere[j]!\n const a = byJudge.get(judgeI)!\n const b = byJudge.get(judgeJ)!\n const common: Array<[number, number]> = []\n for (const [target, scoreA] of a) {\n const scoreB = b.get(target)\n if (scoreB !== undefined) common.push([scoreA, scoreB])\n }\n if (common.length < 2) continue\n const judgeScores = common.map(\n ([scoreA, scoreB]) =>\n [\n { judgeName: judgeI, dimension: dim, score: scoreA, reasoning: '' },\n { judgeName: judgeJ, dimension: dim, score: scoreB, reasoning: '' },\n ] as const,\n )\n const k = interRaterReliability(\n judgeScores[0]!.map((_, k2) => judgeScores.map((pair) => pair[k2]!)),\n )\n pairs.push({\n judgeA: judgeI,\n judgeB: judgeJ,\n dimension: dim,\n commonItems: common.length,\n pearson: pearsonR(\n common.map((c) => c[0]),\n common.map((c) => c[1]),\n ),\n krippendorff: k,\n })\n }\n }\n }\n\n return {\n pairs: pairs.sort((a, b) => b.commonItems - a.commonItems),\n dimensions: [...byDimension.keys()].sort(),\n judgeIds,\n }\n}\n","/**\n * Tool-use metrics — derived purely from trace data.\n *\n * No scoring assumptions: consumers supply optional ground-truth tool\n * selections per turn + optional \"information used downstream\" signals.\n * Without those, we still compute descriptive metrics (error rate,\n * retry rate, duplicate-call rate) that are useful on their own.\n */\n\nimport { argHash, groupBy, hasCapturedToolArgs, toolSpans } from './trace/query'\nimport type { Span } from './trace/schema'\nimport type { TraceStore } from './trace/store'\n\nexport interface ToolUseMetrics {\n runId: string\n totalCalls: number\n /** Calls whose arguments were captured and can be compared for duplication. */\n callsWithCapturedArgs: number\n byTool: Record<string, ToolStats>\n errorRate: number\n /** Ratio of captured-argument calls already seen with the same tool name and arguments. */\n duplicateRate: number\n /** Ratio of error calls followed by ≥1 retry on same tool. */\n retryRate: number\n /** Optional: of the calls agent made, fraction the evaluator marked as \"correct selection\". */\n selectionAccuracy?: number\n}\n\nexport interface ToolStats {\n calls: number\n callsWithCapturedArgs: number\n errors: number\n avgLatencyMs: number\n duplicates: number\n}\n\nexport interface ToolUseOptions {\n /** Map of spanId → whether the evaluator judged the tool selection correct. Optional. */\n selectionLabels?: Record<string, boolean>\n}\n\nexport async function computeToolUseMetrics(\n store: TraceStore,\n runId: string,\n options: ToolUseOptions = {},\n): Promise<ToolUseMetrics> {\n const tools = await toolSpans(store, runId)\n if (tools.length === 0) {\n return {\n runId,\n totalCalls: 0,\n callsWithCapturedArgs: 0,\n byTool: {},\n errorRate: 0,\n duplicateRate: 0,\n retryRate: 0,\n }\n }\n\n const byTool: Record<string, ToolStats> = {}\n let totalErrors = 0\n let totalDuplicates = 0\n let callsWithCapturedArgs = 0\n const sortedTools = [...tools].sort((a, b) => a.startedAt - b.startedAt)\n const seenSignatures = new Set<string>()\n\n // duplicate detection + per-tool aggregation\n for (const t of sortedTools) {\n byTool[t.toolName] ??= {\n calls: 0,\n callsWithCapturedArgs: 0,\n errors: 0,\n avgLatencyMs: 0,\n duplicates: 0,\n }\n const stat = byTool[t.toolName]!\n stat.calls += 1\n if (t.status === 'error') {\n stat.errors += 1\n totalErrors += 1\n }\n if (typeof t.latencyMs === 'number') stat.avgLatencyMs += t.latencyMs\n if (hasCapturedToolArgs(t)) {\n callsWithCapturedArgs += 1\n stat.callsWithCapturedArgs += 1\n const sig = `${t.toolName}|${argHash(t.args)}`\n if (seenSignatures.has(sig)) {\n stat.duplicates += 1\n totalDuplicates += 1\n }\n seenSignatures.add(sig)\n }\n }\n\n for (const stat of Object.values(byTool)) {\n stat.avgLatencyMs = stat.calls > 0 ? stat.avgLatencyMs / stat.calls : 0\n }\n\n // retry detection: per-tool chronological adjacency where error → next same-tool call\n let retryOpportunities = 0\n let retriesFollowed = 0\n for (const [, arr] of groupBy(sortedTools, (t) => t.toolName)) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i]!.status !== 'error') continue\n retryOpportunities += 1\n if (arr[i + 1]) retriesFollowed += 1\n }\n }\n const retryRate = retryOpportunities > 0 ? retriesFollowed / retryOpportunities : 0\n\n let selectionAccuracy: number | undefined\n if (options.selectionLabels) {\n const labeled = sortedTools.filter((t) => t.spanId in options.selectionLabels!)\n if (labeled.length > 0) {\n selectionAccuracy =\n labeled.filter((t) => options.selectionLabels![t.spanId]).length / labeled.length\n }\n }\n\n return {\n runId,\n totalCalls: sortedTools.length,\n callsWithCapturedArgs,\n byTool,\n errorRate: totalErrors / sortedTools.length,\n duplicateRate: callsWithCapturedArgs > 0 ? totalDuplicates / callsWithCapturedArgs : 0,\n retryRate,\n selectionAccuracy,\n }\n}\n\nexport type { Span }\n","/**\n * ToolWasteView — fraction of tool calls whose results weren't used\n * downstream. Without a \"used\" signal we fall back to structural\n * proxies: error calls, duplicate calls, and tool calls followed by\n * zero subsequent LLM spans are all considered waste.\n *\n * Consumers can pass a `usageOracle` that inspects a tool span and\n * returns true iff the tool's result appears in a later LLM message,\n * artifact, or state mutation — that's the canonical definition; the\n * default heuristic is a reasonable fallback.\n */\n\nimport { computeToolUseMetrics } from '../tool-use-metrics'\nimport { llmSpans, toolSpans } from '../trace/query'\nimport type { LlmSpan, ToolSpan } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\n\nexport interface ToolWasteFinding {\n runId: string\n wastedCalls: number\n totalCalls: number\n wasteRate: number\n}\n\nexport interface ToolWasteReport {\n byRun: ToolWasteFinding[]\n overallWasteRate: number\n}\n\nexport interface ToolWasteOptions {\n runId?: string\n usageOracle?: (tool: ToolSpan, later: { llm: Awaited<ReturnType<typeof llmSpans>> }) => boolean\n}\n\nexport async function toolWasteView(\n store: TraceStore,\n options: ToolWasteOptions = {},\n): Promise<ToolWasteReport> {\n const runs = options.runId ? [options.runId] : (await store.listRuns()).map((r) => r.runId)\n\n const byRun: ToolWasteFinding[] = []\n let totalCalls = 0\n let totalWasted = 0\n for (const runId of runs) {\n const tools = await toolSpans(store, runId)\n if (tools.length === 0) {\n byRun.push({ runId, wastedCalls: 0, totalCalls: 0, wasteRate: 0 })\n continue\n }\n const llms = await llmSpans(store, runId)\n // Sort LLM spans once by start time, then build a suffix index of the\n // concatenated message text. `suffixText[i]` is the haystack of every\n // string message content in spans[i..]. Per tool we binary-search the\n // first span started strictly after the tool, then test that one suffix\n // — turning the per-tool O(llms × messages × content) scan into a single\n // O(log llms) lookup over precomputed text.\n const sortedLlm = [...llms].sort((a, b) => a.startedAt - b.startedAt)\n const startTimes = sortedLlm.map((l) => l.startedAt)\n const suffixText = buildSuffixText(sortedLlm)\n let wasted = 0\n for (const t of tools) {\n if (t.status === 'error') {\n wasted++\n continue\n }\n // First LLM span started strictly after this tool (upper-bound search).\n const cutoff = upperBound(startTimes, t.startedAt)\n if (options.usageOracle) {\n if (!options.usageOracle(t, { llm: sortedLlm.slice(cutoff) })) wasted++\n } else {\n // Default heuristic: a tool whose result is NOT mentioned in any\n // later LLM input message is likely wasted. An empty/null result has\n // no payload to propagate downstream — there is nothing to find in a\n // later message, so it is not evidence of waste; skip it.\n const resultStr = stringify(t.result)\n if (resultStr === '') continue\n const haystack = suffixText[cutoff] ?? ''\n const used = haystack.includes(resultStr.slice(0, 120))\n if (!used) wasted++\n }\n }\n const wasteRate = wasted / tools.length\n byRun.push({ runId, wastedCalls: wasted, totalCalls: tools.length, wasteRate })\n totalCalls += tools.length\n totalWasted += wasted\n }\n return { byRun, overallWasteRate: totalCalls > 0 ? totalWasted / totalCalls : 0 }\n}\n\n/**\n * Build per-position suffix haystacks: result[i] is the concatenation of every\n * string message content in spans[i..end]. Built back-to-front so each entry\n * reuses the next one — O(total message text) rather than O(spans²).\n */\nfunction buildSuffixText(spans: LlmSpan[]): string[] {\n const result = new Array<string>(spans.length + 1)\n result[spans.length] = ''\n for (let i = spans.length - 1; i >= 0; i--) {\n const own = spans[i]!.messages.map((m) =>\n typeof m.content === 'string' ? m.content : '',\n ).join('\\n')\n result[i] = `${own}\\n${result[i + 1]}`\n }\n return result\n}\n\n/** Index of the first element strictly greater than `target` in a sorted array. */\nfunction upperBound(sorted: number[], target: number): number {\n let lo = 0\n let hi = sorted.length\n while (lo < hi) {\n const mid = (lo + hi) >>> 1\n if (sorted[mid]! <= target) lo = mid + 1\n else hi = mid\n }\n return lo\n}\n\nfunction stringify(v: unknown): string {\n if (v === null || v === undefined) return ''\n if (typeof v === 'string') return v\n try {\n return JSON.stringify(v)\n } catch {\n return String(v)\n }\n}\n\n// Re-export for convenience in consumers that want both descriptive and usage metrics.\nexport { computeToolUseMetrics }\n"],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { S as ToolSpan, r as BudgetSpec } from "./schema-BtVldJ3T.js";
2
+ import { s as TraceStore } from "./store-CT9YIIve.js";
3
+ import { o as llmSpans } from "./query-CJ_DX8vl.js";
4
+ //#region src/baseline.d.ts
5
+ interface MetricVerdict {
6
+ metric: string;
7
+ baselineMean: number;
8
+ candidateMean: number;
9
+ delta: number;
10
+ /** Null when both samples are constant with unequal means — the
11
+ * standardized effect is unbounded there, not zero. */
12
+ cohensD: number | null;
13
+ welchT: number;
14
+ welchDf: number;
15
+ welchP: number;
16
+ stable: boolean;
17
+ /** IQR of the combined samples — used as a rough stability indicator. */
18
+ iqr: number;
19
+ verdict: 'improved' | 'regressed' | 'stable' | 'unstable';
20
+ }
21
+ interface BaselineReport {
22
+ metrics: MetricVerdict[];
23
+ /** True if any critical metric regressed. */
24
+ hasRegression: boolean;
25
+ /** True if any metric is unstable (too noisy to judge). */
26
+ hasUnstable: boolean;
27
+ }
28
+ interface BaselineOptions {
29
+ /** Effect size threshold for meaningful delta (default 0.5 — medium effect). */
30
+ effectThreshold?: number;
31
+ /** p-value threshold for statistical significance (default 0.05). */
32
+ alpha?: number;
33
+ /** IQR/mean ratio above which samples are flagged unstable (default 0.30). */
34
+ unstableCvThreshold?: number;
35
+ }
36
+ /** Inter-quartile range; 0 when the sample has no spread. */
37
+ declare function iqr(xs: number[]): number;
38
+ //#endregion
39
+ //#region src/pipelines/budget-breach.d.ts
40
+ interface BudgetBreachFinding {
41
+ runId: string;
42
+ scenarioId: string;
43
+ variantId?: string;
44
+ dimension: keyof BudgetSpec;
45
+ limit: number;
46
+ consumed: number;
47
+ excessRatio: number;
48
+ timestamp: number;
49
+ }
50
+ interface BudgetBreachReport {
51
+ findings: BudgetBreachFinding[];
52
+ byDimension: Record<string, number>;
53
+ byScenario: Record<string, number>;
54
+ byVariant: Record<string, number>;
55
+ totalRuns: number;
56
+ breachedRunRatio: number;
57
+ }
58
+ declare function budgetBreachView(store: TraceStore, options?: {
59
+ scenarioId?: string;
60
+ variantId?: string;
61
+ }): Promise<BudgetBreachReport>;
62
+ //#endregion
63
+ //#region src/pipelines/judge-agreement.d.ts
64
+ interface JudgePair {
65
+ judgeA: string;
66
+ judgeB: string;
67
+ dimension: string;
68
+ /** Number of (targetSpanId, dimension) tuples both judges scored. */
69
+ commonItems: number;
70
+ pearson: number;
71
+ krippendorff: number;
72
+ }
73
+ interface JudgeAgreementReport {
74
+ pairs: JudgePair[];
75
+ dimensions: string[];
76
+ judgeIds: string[];
77
+ }
78
+ declare function judgeAgreementView(store: TraceStore): Promise<JudgeAgreementReport>;
79
+ //#endregion
80
+ //#region src/tool-use-metrics.d.ts
81
+ interface ToolUseMetrics {
82
+ runId: string;
83
+ totalCalls: number;
84
+ /** Calls whose arguments were captured and can be compared for duplication. */
85
+ callsWithCapturedArgs: number;
86
+ byTool: Record<string, ToolStats>;
87
+ errorRate: number;
88
+ /** Ratio of captured-argument calls already seen with the same tool name and arguments. */
89
+ duplicateRate: number;
90
+ /** Ratio of error calls followed by ≥1 retry on same tool. */
91
+ retryRate: number;
92
+ /** Optional: of the calls agent made, fraction the evaluator marked as "correct selection". */
93
+ selectionAccuracy?: number;
94
+ }
95
+ interface ToolStats {
96
+ calls: number;
97
+ callsWithCapturedArgs: number;
98
+ errors: number;
99
+ avgLatencyMs: number;
100
+ duplicates: number;
101
+ }
102
+ interface ToolUseOptions {
103
+ /** Map of spanId → whether the evaluator judged the tool selection correct. Optional. */
104
+ selectionLabels?: Record<string, boolean>;
105
+ }
106
+ declare function computeToolUseMetrics(store: TraceStore, runId: string, options?: ToolUseOptions): Promise<ToolUseMetrics>;
107
+ //#endregion
108
+ //#region src/pipelines/tool-waste.d.ts
109
+ interface ToolWasteFinding {
110
+ runId: string;
111
+ wastedCalls: number;
112
+ totalCalls: number;
113
+ wasteRate: number;
114
+ }
115
+ interface ToolWasteReport {
116
+ byRun: ToolWasteFinding[];
117
+ overallWasteRate: number;
118
+ }
119
+ interface ToolWasteOptions {
120
+ runId?: string;
121
+ usageOracle?: (tool: ToolSpan, later: {
122
+ llm: Awaited<ReturnType<typeof llmSpans>>;
123
+ }) => boolean;
124
+ }
125
+ declare function toolWasteView(store: TraceStore, options?: ToolWasteOptions): Promise<ToolWasteReport>;
126
+ //#endregion
127
+ export { iqr as _, ToolStats as a, computeToolUseMetrics as c, judgeAgreementView as d, BudgetBreachFinding as f, BaselineReport as g, BaselineOptions as h, toolWasteView as i, JudgeAgreementReport as l, budgetBreachView as m, ToolWasteOptions as n, ToolUseMetrics as o, BudgetBreachReport as p, ToolWasteReport as r, ToolUseOptions as s, ToolWasteFinding as t, JudgePair as u };
128
+ //# sourceMappingURL=tool-waste-DjRDEsuI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-waste-DjRDEsuI.d.ts","names":[],"sources":["../src/baseline.ts","../src/pipelines/budget-breach.ts","../src/pipelines/judge-agreement.ts","../src/tool-use-metrics.ts","../src/pipelines/tool-waste.ts"],"mappings":";;;;UA2BiB;EACf;EACA;EACA;EACA;;;EAGA;EACA;EACA;EACA;EACA;;EAEA;EACA;;UAGe;EACf,SAAS;;EAET;;EAEA;;UAGe;;EAEf;;EAEA;;EAEA;;;iBAiHc,IAAI;;;UCjKH;EACf;EACA;EACA;EACA,iBAAiB;EACjB;EACA;EACA;EACA;;UAGe;EACf,UAAU;EACV,aAAa;EACb,YAAY;EACZ,WAAW;EACX;EACA;;iBAGoB,iBACpB,OAAO,YACP;EAAW;EAAqB;IAC/B,QAAQ;;;UCnBM;EACf;EACA;EACA;;EAEA;EACA;EACA;;UAGe;EACf,OAAO;EACP;EACA;;iBAGoB,mBAAmB,OAAO,aAAa,QAAQ;;;UCjBpD;EACf;EACA;;EAEA;EACA,QAAQ,eAAe;EACvB;;EAEA;;EAEA;;EAEA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;;EAEf,kBAAkB;;iBAGE,sBACpB,OAAO,YACP,eACA,UAAS,iBACR,QAAQ;;;UC5BM;EACf;EACA;EACA;EACA;;UAGe;EACf,OAAO;EACP;;UAGe;EACf;EACA,eAAe,MAAM,UAAU;IAAS,KAAK,QAAQ,kBAAkB;;;iBAGnD,cACpB,OAAO,YACP,UAAS,mBACR,QAAQ"}
@@ -1,7 +1,8 @@
1
- import { r as CaptureIntegrityError } from "../errors-CKPfb2aH.js";
2
- import { b as CustomTokenPricing, c as CostLedgerHandle, p as CostProvenance } from "../cost-ledger-Bv_e8XHY.js";
3
- import { u as RunTokenUsage } from "../run-record-CF4Dwpxr.js";
4
- import { a as TraceAnalystLimits, n as TraceAnalysisEngine } from "../engine-3hL-XqwJ.js";
1
+ import { r as CaptureIntegrityError } from "../errors-DEE6u6ot.js";
2
+ import { t as DefaultVerdict } from "../verdict-E4eRNf7-.js";
3
+ import { b as CustomTokenPricing, c as CostLedgerHandle, p as CostProvenance } from "../cost-ledger-DbQdN3nO.js";
4
+ import { u as RunTokenUsage } from "../run-record-CKiihE6f.js";
5
+ import { a as TraceAnalystLimits, n as TraceAnalysisEngine } from "../engine-otFpE2gF.js";
5
6
  import { t as PrimeBridgeTransport } from "../prime-bridge-transport-6feEglLf.js";
6
7
  import { t as RecordedTrajectoryStep } from "../steps-BArUxhna.js";
7
8
  //#region src/trace-repair/mini-swe-scaffold.d.ts
@@ -1914,7 +1915,15 @@ interface GradeRepairOptions {
1914
1915
  readonly recordedTimeoutStepMs?: number;
1915
1916
  readonly onProgress?: (message: string) => void;
1916
1917
  }
1917
- interface RepairRowResult {
1918
+ /** Extends the substrate verdict spine: `valid` = the intervention flipped
1919
+ * the held-out suite in at least one measurement (locally or after the
1920
+ * pinned continuation); `score` = the better of the two flip measurements
1921
+ * (`localFlip`, `repairRate`), so `valid` ⟺ `score > 0`. The credit
1922
+ * VECTOR stays authoritative in `credit` and travels in `scores` —
1923
+ * Delta-repair pairing reads `delta`, never the scalar. Certification is
1924
+ * present exactly when the suite executed (`outcome: 'measured'`); a
1925
+ * closed gate certifies nothing. */
1926
+ interface RepairRowResult extends DefaultVerdict {
1918
1927
  readonly rowId: string;
1919
1928
  readonly grade: RepairGrade;
1920
1929
  readonly credit: RepairCredit;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/trace-repair/mini-swe-scaffold.ts","../../src/trace-repair/action-budget.ts","../../src/trace-repair/continuation-records.ts","../../src/trace-repair/control-policy.ts","../../src/trace-repair/admission-records.ts","../../src/trace-repair/continuation-policy.ts","../../src/trace-repair/oracle-determinism.ts","../../src/trace-repair/admission.ts","../../src/trace-repair/admission-contract.ts","../../src/trace-repair/admission-report.ts","../../src/trace-repair/analyst-response.ts","../../src/trace-repair/blinding.ts","../../src/trace-repair/analyst-arm.ts","../../src/trace-repair/arm-completion.ts","../../src/trace-repair/arm-dspy.ts","../../src/trace-repair/degenerate-strategies.ts","../../src/trace-repair/ports.ts","../../src/trace-repair/funnel.ts","../../src/trace-repair/grade.ts","../../src/trace-repair/delta-repair.ts","../../src/trace-repair/docker-environment.ts","../../src/trace-repair/repair-prompt.ts","../../src/trace-repair/test-oracle.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/trace-repair/mini-swe-scaffold.ts","../../src/trace-repair/action-budget.ts","../../src/trace-repair/continuation-records.ts","../../src/trace-repair/control-policy.ts","../../src/trace-repair/admission-records.ts","../../src/trace-repair/continuation-policy.ts","../../src/trace-repair/oracle-determinism.ts","../../src/trace-repair/admission.ts","../../src/trace-repair/admission-contract.ts","../../src/trace-repair/admission-report.ts","../../src/trace-repair/analyst-response.ts","../../src/trace-repair/blinding.ts","../../src/trace-repair/analyst-arm.ts","../../src/trace-repair/arm-completion.ts","../../src/trace-repair/arm-dspy.ts","../../src/trace-repair/degenerate-strategies.ts","../../src/trace-repair/ports.ts","../../src/trace-repair/funnel.ts","../../src/trace-repair/grade.ts","../../src/trace-repair/delta-repair.ts","../../src/trace-repair/docker-environment.ts","../../src/trace-repair/repair-prompt.ts","../../src/trace-repair/test-oracle.ts"],"mappings":"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"}
@@ -1,11 +1,13 @@
1
- import { c as ValidationError, n as CaptureIntegrityError } from "../errors-D-LKuDhb.js";
2
- import { r as contentHash } from "../verdict-cache-BCcOh0kF.js";
3
- import { E as pairedBootstrap } from "../statistics-ByxzSiOM.js";
4
- import { d as runPrimeExchange, f as assertEqualDeclarativeTerms, n as buildPrimePrompt, t as analystUsageReceiptFromPrimeUsage } from "../prime-protocol-BfSalTfR.js";
1
+ import { n as CaptureIntegrityError, s as ValidationError } from "../errors-Dngq5h35.js";
2
+ import { r as pairedBootstrap } from "../paired-tests-BHIhYVdu.js";
3
+ import { n as contentHash } from "../verdict-cache-mZf5FEiY.js";
4
+ import { t as certificationEvidenceDigest } from "../verdict-BndeTAh_.js";
5
+ import { t as packageVersion } from "../package-version-D7lQHt_-.js";
6
+ import { d as runPrimeExchange, n as buildPrimePrompt, p as assertEqualDeclarativeTerms, t as analystUsageReceiptFromPrimeUsage } from "../prime-protocol-6tZTVsWm.js";
5
7
  import { o as parseRecordedReturncode, r as deriveFailureSignature, t as wrapActionForExec } from "../exec-BLtYZdWo.js";
6
8
  import { createHash } from "node:crypto";
7
- import { spawn } from "node:child_process";
8
9
  import { constants } from "node:os";
10
+ import { spawn } from "node:child_process";
9
11
  //#region src/trace-repair/mini-swe-scaffold.ts
10
12
  /**
11
13
  * The mini-swe-agent scaffold as the Terminal-Bench-2 trajectory corpus
@@ -3356,6 +3358,7 @@ async function gradeRepairRow(options) {
3356
3358
  function finish(row, grade, startedMs) {
3357
3359
  const credit = repairCredit(grade);
3358
3360
  const interventionRate = grade.outcome === "measured" ? credit.repairRate : row.controlRate;
3361
+ const score = Math.max(credit.localFlip, credit.repairRate);
3359
3362
  return {
3360
3363
  rowId: row.rowId,
3361
3364
  grade,
@@ -3367,8 +3370,33 @@ function finish(row, grade, startedMs) {
3367
3370
  controlPolicyDigest: row.policyDigest,
3368
3371
  repairRollouts: grade.outcome === "measured" ? grade.repair.rollouts : 0,
3369
3372
  delta: interventionRate - row.controlRate,
3370
- wallMs: Date.now() - startedMs
3371
- };
3373
+ wallMs: Date.now() - startedMs,
3374
+ valid: score > 0,
3375
+ score,
3376
+ scores: { ...credit },
3377
+ notes: `outcome: ${grade.outcome}`,
3378
+ ...grade.outcome === "measured" ? { certification: {
3379
+ strategy: "test",
3380
+ checker: {
3381
+ name: "agent-eval:trace-repair-grader",
3382
+ version: packageVersion(),
3383
+ pins: {
3384
+ suite: row.suiteDigest,
3385
+ policy: row.policyDigest
3386
+ }
3387
+ },
3388
+ assumptions: gradeAssumptions(grade),
3389
+ evidenceDigest: certificationEvidenceDigest(grade)
3390
+ } } : {}
3391
+ };
3392
+ }
3393
+ /** Steps a measured grade rests on that no suite run verified. */
3394
+ function gradeAssumptions(grade) {
3395
+ const assumptions = [];
3396
+ if (grade.reproduction.basis === "no-recorded-observation") assumptions.push("step k recorded no observation — the reproduction gate passed vacuously");
3397
+ const prefix = grade.execution.prefix;
3398
+ if (prefix.divergences > 0) assumptions.push(`${prefix.divergences} of ${prefix.stepsReplayed} replayed prefix steps diverged from the recording — the state at k is approximate`);
3399
+ return assumptions;
3372
3400
  }
3373
3401
  async function produceGrade(options) {
3374
3402
  const { row, response } = options;