@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
@@ -1,550 +1,26 @@
1
- import { c as ValidationError } from "../errors-D-LKuDhb.js";
2
- import { i as estimateCost, o as isModelPriced } from "../metrics-C9YY1OcL.js";
3
- import { i as CostLedger } from "../cost-ledger-DMFxsLKr.js";
4
- import { C as createChatClient, t as buildDefaultAnalystRegistry } from "../default-registry-BmktKy8r.js";
1
+ import { s as ValidationError } from "../errors-Dngq5h35.js";
2
+ import { r as pairedBootstrap } from "../paired-tests-BHIhYVdu.js";
3
+ import { a as summarizeExecution, i as analyzeRuns, n as SelfImproveRunError, r as selfImprove, t as defineAgentEval } from "../define-agent-eval-iqjT--ZZ.js";
4
+ import { i as parseRunRecordSafe } from "../run-record-BvHPVS-i.js";
5
+ import { G as runEval, K as runCampaign, f as runImprovementLoop, nt as campaignSplitDigest, t as llmJudge, x as compareOptimizationMethods, z as defaultProductionGate } from "../llm-judge-dZ8P6nGI.js";
6
+ import { i as isModelPriced, n as estimateCost } from "../metrics-Cl0L1KUy.js";
7
+ import { i as CostLedger } from "../cost-ledger-BSe92yAV.js";
8
+ import { d as mapConcurrentRange } from "../ledger-core-BmZt19oQ.js";
9
+ import { S as inMemoryCampaignStorage, x as fsCampaignStorage } from "../external-optimizer-subprocess-DrJ9hR8u.js";
10
+ import { a as heldoutSignificance, s as decidePairedPromotion } from "../power-preflight-DEw-uC7q.js";
11
+ import { r as makeProposalFinding } from "../types-BI4fT3HN.js";
12
+ import { $ as classifyOtlpSpanRole, et as isOtlpModelCall } from "../kind-factory-CPmSd58s.js";
13
+ import { n as buildDefaultAnalystRegistry, t as createChatClient } from "../chat-client-Bp4Ebuuc.js";
5
14
  import { LLM_MODEL_ATTR_KEYS, SPAN_KIND_ATTR_KEYS } from "../trace-attributes.js";
6
- import { nt as isOtlpModelCall, tt as classifyOtlpSpanRole } from "../kind-factory-B8-r8-y8.js";
7
- import { c as makeProposalFinding } from "../usage-receipt-t7vAzCRQ.js";
8
- import { a as inMemoryCampaignStorage, i as fsCampaignStorage, r as createRunCostLedger } from "../single-run-lock-DFWHEB09.js";
9
- import { m as mapConcurrentRange } from "../ledger-core-DXZIqu17.js";
10
- import { $ as REFERENCE_EQUIVALENCE_INPUT_LIMITS, F as surfaceHash, P as surfaceContentHash, S as assertOptimizationResult, U as runCampaign, W as resolveRunDir, X as campaignSplitDigest, _ as heldOutGate, a as emitLoopProvenance, b as composeGate, d as runImprovementLoop, dt as llmJudge, et as REFERENCE_EQUIVALENCE_JUDGE_VERSION, g as gepaOptimizationMethod, nt as runReferenceEquivalenceJudge, o as loopProvenanceArgsFromResult, p as runEval, t as skillOptOptimizationMethod, tt as createReferenceEquivalenceJudge, v as defaultProductionGate, w as compareOptimizationMethods, x as externalTextOptimizationMethod } from "../skillopt-optimization-method-CQdVeM8k.js";
11
- import { E as pairedBootstrap } from "../statistics-ByxzSiOM.js";
12
- import { i as parseRunRecordSafe, r as modelHasSnapshot } from "../run-record-BmSPWXJR.js";
13
- import { c as heldoutSignificance, i as powerPreflight, n as paretoPolicy, r as paretoSignificanceGate, t as buildEvidenceVector, u as decidePairedPromotion } from "../promotion-policy-CrLrmys8.js";
14
- import { a as recordAggregateMeasurements, i as readTaskFailureLabels, o as summarizeExecutionMeasurements, s as summarizeTraceErrors, t as extractUsage } from "../extract-usage-CdZdoj1s.js";
15
- import { n as summarizeExecution, t as analyzeRuns } from "../analyze-runs-C30yljDJ.js";
16
- import { c as campaignCellTaskScore, l as campaignCellToRunRecord, o as campaignCellExecutionEvidence, s as campaignCellJudgeDimensions } from "../reward-hacking-BDToousL.js";
15
+ import { t as extractUsage } from "../extract-usage-BrQ8mCLX.js";
17
16
  import { n as InMemoryOutcomeStore, t as FileSystemOutcomeStore } from "../outcome-store-ChBKlTd_.js";
18
- import { t as createHostedClient } from "../client-LIuo-KPv.js";
19
- import { dirname, join } from "node:path";
17
+ import { i as summarizeTraceErrors, n as recordAggregateMeasurements, r as summarizeExecutionMeasurements, t as readTaskFailureLabels } from "../task-failure-attributes-CpQ4y5RD.js";
18
+ import { a as externalTextOptimizationMethod, c as REFERENCE_EQUIVALENCE_INPUT_LIMITS, d as runReferenceEquivalenceJudge, i as composeGate, l as REFERENCE_EQUIVALENCE_JUDGE_VERSION, n as gepaOptimizationMethod, r as heldOutGate, t as skillOptOptimizationMethod, u as createReferenceEquivalenceJudge } from "../skillopt-optimization-method-jjdnc3YK.js";
19
+ import { n as paretoPolicy, r as paretoSignificanceGate, t as buildEvidenceVector } from "../promotion-policy-xzA40Evo.js";
20
20
  import { createHash } from "node:crypto";
21
21
  import { agentCandidateBenchmarkSuiteSchema, agentCandidateBenchmarkTaskSchema, agentCandidateBundleSchema, agentCandidateEvaluationPolicySchema, agentCandidateExperimentSchema, agentImprovementMeasuredComparisonSchema, agentProfileImprovementExperimentSchema, agentProfileImprovementMeasuredComparisonSchema, agentProfileImprovementRunCellSchema, agentProfileImprovementRunReceiptSchema, agentProfileImprovementSuiteInputsSchema, agentProfileImprovementSuiteSchema, agentProfileImprovementTaskSchema, candidateExecutionEvidenceSchema, canonicalCandidateDigest, canonicalCandidateJson, numbersApproximatelyEqual, omitTopLevelDigest } from "@tangle-network/agent-interface";
22
+ import { dirname, join } from "node:path";
22
23
  import { mkdir, readFile, readdir, stat, writeFile } from "node:fs/promises";
23
- //#region src/contract/self-improve.ts
24
- /** Failed self-improvement run with an immutable receipt snapshot. */
25
- var SelfImproveRunError = class extends Error {
26
- cost;
27
- receipts;
28
- constructor(cause, ledger) {
29
- const original = cause instanceof Error ? cause : new Error(String(cause));
30
- super(original.message, { cause: original });
31
- this.name = "SelfImproveRunError";
32
- this.cost = ledger.summary();
33
- this.receipts = ledger.list();
34
- }
35
- };
36
- function assertSelfImproveSearchMode(opts) {
37
- if (opts.method && opts.proposer) throw new Error("selfImprove: method and proposer are mutually exclusive");
38
- if (!opts.method) {
39
- if (opts.selectionScenarios !== void 0) throw new Error("selfImprove: selectionScenarios requires method");
40
- return;
41
- }
42
- if (typeof opts.method.name !== "string" || !opts.method.name.trim() || opts.method.name.trim() !== opts.method.name || typeof opts.method.optimize !== "function") throw new Error("selfImprove: method must have a trimmed name and optimize(input)");
43
- const budget = opts.budget;
44
- if (budget?.generations !== void 0 && budget.generations !== 1) throw new Error("selfImprove: method owns its rounds; budget.generations must be 1 when set");
45
- if (budget?.populationSize !== void 0 && budget.populationSize !== 1) throw new Error("selfImprove: method owns its candidates; budget.populationSize must be 1 when set");
46
- if (budget?.candidateConcurrency !== void 0 || budget?.maxImprovementShots !== void 0 || opts.analyzeGeneration !== void 0 || opts.findings !== void 0) throw new Error("selfImprove: candidateConcurrency, maxImprovementShots, analyzeGeneration, and findings apply only to proposer mode");
47
- }
48
- function splitMethodPartitions(searchScenarios, explicitSelection, fraction) {
49
- if (!Number.isFinite(fraction) || fraction <= 0 || fraction >= 1) throw new Error("selfImprove: budget.selectionFraction must be in (0, 1)");
50
- const byId = /* @__PURE__ */ new Map();
51
- for (const scenario of searchScenarios) {
52
- if (byId.has(scenario.id)) throw new Error(`selfImprove: duplicate scenario id '${scenario.id}'`);
53
- byId.set(scenario.id, scenario);
54
- }
55
- if (explicitSelection) {
56
- if (explicitSelection.length === 0) throw new Error("selfImprove: selectionScenarios must not be empty");
57
- const selectionIds = /* @__PURE__ */ new Set();
58
- for (const scenario of explicitSelection) {
59
- if (!byId.has(scenario.id)) throw new Error(`selfImprove: selection scenario '${scenario.id}' is absent from the non-final cases`);
60
- if (selectionIds.has(scenario.id)) throw new Error(`selfImprove: duplicate selection scenario id '${scenario.id}'`);
61
- selectionIds.add(scenario.id);
62
- }
63
- const train = searchScenarios.filter((scenario) => !selectionIds.has(scenario.id));
64
- if (train.length === 0) throw new Error("selfImprove: method train split is empty");
65
- return {
66
- train,
67
- selection: explicitSelection.map((scenario) => byId.get(scenario.id))
68
- };
69
- }
70
- if (searchScenarios.length < 2) throw new Error("selfImprove: method requires at least two non-final scenarios");
71
- const sorted = [...searchScenarios].sort((a, b) => stableScenarioHash(a.id) - stableScenarioHash(b.id));
72
- const count = Math.max(1, Math.min(sorted.length - 1, Math.round(sorted.length * fraction)));
73
- return {
74
- selection: sorted.slice(0, count),
75
- train: sorted.slice(count)
76
- };
77
- }
78
- function safeRunComponent(value) {
79
- return value.replace(/[^a-zA-Z0-9._-]/g, "_");
80
- }
81
- function stableScenarioHash(value) {
82
- let hash = 2166136261;
83
- for (let index = 0; index < value.length; index++) {
84
- hash ^= value.charCodeAt(index);
85
- hash = Math.imul(hash, 16777619) >>> 0;
86
- }
87
- return hash;
88
- }
89
- /**
90
- * Deterministic train/holdout split by a stable hash of `scenario.id`,
91
- * so the same scenario set always splits the same way across runs.
92
- */
93
- function splitTrainHoldout(scenarios, fraction) {
94
- const sorted = [...scenarios].sort((a, b) => stableScenarioHash(a.id) - stableScenarioHash(b.id));
95
- const nHoldout = Math.max(1, Math.min(sorted.length - 1, Math.round(sorted.length * fraction)));
96
- return {
97
- holdout: sorted.slice(0, nHoldout),
98
- train: sorted.slice(nHoldout)
99
- };
100
- }
101
- function meanComposite(byScenario) {
102
- const perScenario = {};
103
- const values = [];
104
- for (const [id, agg] of Object.entries(byScenario)) {
105
- perScenario[id] = agg.meanComposite;
106
- values.push(agg.meanComposite);
107
- }
108
- return {
109
- compositeMean: values.length === 0 ? 0 : values.reduce((s, v) => s + v, 0) / values.length,
110
- perScenario
111
- };
112
- }
113
- /**
114
- * Latest search campaign measured for the winner surface; the baseline search
115
- * campaign when the winner IS the baseline. Used by the deferred-holdout
116
- * summary, where no holdout campaign exists to summarize.
117
- */
118
- function winnerSearchCampaign(result) {
119
- for (let i = result.generations.length - 1; i >= 0; i--) {
120
- const measured = result.generations[i]?.surfaces.find((s) => s.surfaceHash === result.winnerSurfaceHash);
121
- if (measured) return measured.campaign;
122
- }
123
- return result.baselineCampaign;
124
- }
125
- /**
126
- * One-shot self-improvement loop. See module docstring for defaults +
127
- * extension points.
128
- *
129
- * @example Minimum:
130
- *
131
- * const result = await selfImprove({
132
- * agent: (surface, scenario, ctx) => myAgent(surface, scenario, ctx.signal),
133
- * scenarios,
134
- * judge,
135
- * baselineSurface: DEFAULT_PROMPT,
136
- * proposer,
137
- * })
138
- * console.log(`lift: ${result.lift.toFixed(3)} (${result.gateDecision})`)
139
- *
140
- * @example Distributed (workers in three regions):
141
- *
142
- * await selfImprove({
143
- * agent: httpDispatch({ resolveUrl: ({ placement }) => REGION_URLS[placement!] }),
144
- * scenarios,
145
- * judge,
146
- * baselineSurface: DEFAULT_PROMPT,
147
- * cellPlacement: ({ scenario }) => scenario.region,
148
- * budget: { maxConcurrency: 12 },
149
- * })
150
- */
151
- async function selfImprove(opts) {
152
- const startedAt = Date.now();
153
- const runDir = resolveRunDir(opts.runDir ?? (opts.method ? `.agent-eval/runs/self-improve-${startedAt}` : `mem://selfImprove-${startedAt}`));
154
- const storage = opts.storage ?? (runDir.startsWith("mem://") ? inMemoryCampaignStorage() : fsCampaignStorage());
155
- const costLedger = createRunCostLedger({
156
- storage,
157
- runDir,
158
- costCeilingUsd: opts.budget?.dollars
159
- });
160
- try {
161
- return await runSelfImprove(opts, costLedger, startedAt, runDir, storage);
162
- } catch (error) {
163
- throw new SelfImproveRunError(error, costLedger);
164
- }
165
- }
166
- async function runSelfImprove(opts, costLedger, startedAt, runDir, storage) {
167
- const budget = opts.budget ?? {};
168
- assertSelfImproveSearchMode(opts);
169
- const generations = opts.method ? 1 : budget.generations ?? 3;
170
- const populationSize = opts.method ? 1 : budget.populationSize ?? 2;
171
- const maxConcurrency = budget.maxConcurrency ?? 2;
172
- const holdoutFraction = budget.holdoutFraction ?? .25;
173
- const holdoutMode = budget.holdout ?? "measured";
174
- const holdoutDeferred = holdoutMode === "deferred";
175
- const expectUsage = opts.expectUsage ?? "assert";
176
- const explicitHoldout = budget.holdoutScenarios;
177
- const { train, holdout } = explicitHoldout ? {
178
- train: opts.scenarios.filter((s) => !explicitHoldout.some((h) => h.id === s.id)),
179
- holdout: explicitHoldout
180
- } : holdoutDeferred ? {
181
- train: opts.scenarios,
182
- holdout: []
183
- } : splitTrainHoldout(opts.scenarios, holdoutFraction);
184
- if (train.length === 0) throw new Error("selfImprove: train split is empty. Reduce holdoutFraction or pass more scenarios.");
185
- if (holdout.length === 0 && !holdoutDeferred) throw new Error("selfImprove: holdout split is empty. Pass more scenarios.");
186
- if (generations > 0 && !opts.proposer && !opts.method) throw new Error("selfImprove: method or proposer is required when budget.generations is greater than zero");
187
- let optimizationResult;
188
- const methodPartitions = opts.method ? splitMethodPartitions(train, opts.selectionScenarios, budget.selectionFraction ?? .25) : void 0;
189
- const proposer = opts.method ? {
190
- kind: `method:${opts.method.name}`,
191
- propose: async (context) => {
192
- if (context.generation > 0) return [];
193
- const result = await opts.method.optimize(Object.freeze({
194
- baselineSurface: structuredClone(context.currentSurface),
195
- trainScenarios: Object.freeze(methodPartitions.train.map((scenario) => structuredClone(scenario))),
196
- selectionScenarios: Object.freeze(methodPartitions.selection.map((scenario) => structuredClone(scenario))),
197
- dispatchWithSurface: opts.agent,
198
- judges: Object.freeze([opts.judge]),
199
- runDir: `${runDir}/optimization/${safeRunComponent(opts.method.name)}`,
200
- seed: 42,
201
- runOptions: Object.freeze({
202
- storage,
203
- maxConcurrency,
204
- reps: budget.reps,
205
- dispatchTimeoutMs: opts.dispatchTimeoutMs,
206
- expectUsage,
207
- costCeiling: budget.dollars
208
- }),
209
- costLedger
210
- }));
211
- assertOptimizationResult(opts.method.name, result);
212
- optimizationResult = structuredClone(result);
213
- return [{
214
- surface: structuredClone(result.winnerSurface),
215
- label: opts.method.name,
216
- rationale: `${opts.method.name} selected this surface without final cases.`
217
- }];
218
- }
219
- } : opts.proposer ?? {
220
- kind: "baseline-only",
221
- propose: async () => []
222
- };
223
- const gate = opts.gate ?? defaultProductionGate({
224
- holdoutScenarios: holdout,
225
- deltaThreshold: .05
226
- });
227
- if (opts.onProgress) opts.onProgress({
228
- kind: "baseline.started",
229
- scenarios: opts.scenarios.length
230
- });
231
- const result = await runImprovementLoop({
232
- scenarios: train,
233
- baselineSurface: opts.baselineSurface,
234
- premeasuredBaseline: opts.premeasuredBaseline,
235
- dispatchWithSurface: opts.agent,
236
- proposer,
237
- judges: [opts.judge],
238
- populationSize,
239
- maxGenerations: generations,
240
- candidateConcurrency: budget.candidateConcurrency,
241
- reps: budget.reps,
242
- maxImprovementShots: budget.maxImprovementShots,
243
- holdoutScenarios: holdout,
244
- holdout: holdoutMode,
245
- gate,
246
- neutralize: opts.neutralize,
247
- autoOnPromote: opts.autoOnPromote ?? "none",
248
- ghOwner: opts.ghOwner,
249
- ghRepo: opts.ghRepo,
250
- storage,
251
- runDir,
252
- maxConcurrency,
253
- cellPlacement: opts.cellPlacement,
254
- dispatchTimeoutMs: opts.dispatchTimeoutMs,
255
- costLedger,
256
- expectUsage,
257
- labeledStore: opts.labeledStore,
258
- captureSource: opts.captureSource,
259
- analyzeGeneration: opts.analyzeGeneration,
260
- findings: opts.findings,
261
- selectionRankKey: opts.selectionRankKey
262
- });
263
- const reportSplit = holdoutDeferred ? "search" : "holdout";
264
- const reportBaselineCampaign = holdoutDeferred ? result.baselineCampaign : result.baselineOnHoldout;
265
- const reportWinnerCampaign = holdoutDeferred ? winnerSearchCampaign(result) : result.winnerOnHoldout;
266
- const baseline = meanComposite(reportBaselineCampaign.aggregates.byScenario);
267
- const winnerStats = meanComposite(reportWinnerCampaign.aggregates.byScenario);
268
- let power;
269
- const baselineHoldoutComposites = result.baselineOnHoldout.cells.filter((cell) => !cell.error).map((cell) => {
270
- const scores = Object.values(cell.judgeScores);
271
- return scores.length === 0 ? NaN : scores.reduce((sum, s) => sum + s.composite, 0) / scores.length;
272
- }).filter((v) => Number.isFinite(v));
273
- if (baselineHoldoutComposites.length >= 3) {
274
- power = powerPreflight({
275
- baselineComposites: baselineHoldoutComposites,
276
- sharedScorerChannel: true
277
- });
278
- if (opts.onProgress) opts.onProgress({
279
- kind: "power.estimated",
280
- n: power.n,
281
- sd: power.sd,
282
- mde: power.mde,
283
- underpowered: power.underpowered
284
- });
285
- if (power.underpowered && generations > 0) console.warn(`[selfImprove] ${power.recommendation}`);
286
- }
287
- if (opts.onProgress) {
288
- opts.onProgress({
289
- kind: "baseline.completed",
290
- compositeMean: baseline.compositeMean,
291
- durationMs: Date.now() - startedAt
292
- });
293
- opts.onProgress({
294
- kind: "gate.decided",
295
- decision: result.gateResult.decision,
296
- ...holdoutDeferred ? {} : { lift: winnerStats.compositeMean - baseline.compositeMean }
297
- });
298
- }
299
- const cost = result.cost;
300
- const totalCost = cost.totalCostUsd;
301
- const insight = await analyzeRuns({
302
- runs: [...cellsToRunRecords(reportBaselineCampaign.cells, "baseline", runDir, opts.baselineSurface, reportSplit, opts.model), ...cellsToRunRecords(reportWinnerCampaign.cells, "winner", runDir, result.winnerSurface, reportSplit, opts.model)],
303
- baselineCandidateId: "baseline",
304
- candidateCandidateId: "winner"
305
- });
306
- const durationMs = Date.now() - startedAt;
307
- const { record: provenance } = await emitLoopProvenance({
308
- ...loopProvenanceArgsFromResult({
309
- runId: `${runDir}#${startedAt}`,
310
- runDir,
311
- timestamp: new Date(startedAt).toISOString(),
312
- baselineSurface: opts.baselineSurface,
313
- result,
314
- costReceipts: costLedger.list(),
315
- totalCostUsd: totalCost,
316
- totalDurationMs: durationMs
317
- }),
318
- ...optimizationResult ? { optimizationMethod: {
319
- name: opts.method.name,
320
- cost: structuredClone(optimizationResult.cost),
321
- ...optimizationResult.durationMs === void 0 ? {} : { durationMs: optimizationResult.durationMs },
322
- ...optimizationResult.provenance === void 0 ? {} : { provenance: structuredClone(optimizationResult.provenance) }
323
- } } : {},
324
- storage,
325
- hostedClient: opts.hostedTenant ? createHostedClient(opts.hostedTenant) : void 0
326
- });
327
- if (opts.onProvenance) opts.onProvenance(provenance);
328
- const summary = {
329
- baseline,
330
- winner: {
331
- ...winnerStats,
332
- surface: result.winnerSurface,
333
- ...result.winnerLabel ? { label: result.winnerLabel } : {},
334
- ...result.winnerRationale ? { rationale: result.winnerRationale } : {}
335
- },
336
- ...holdoutDeferred ? {} : { lift: winnerStats.compositeMean - baseline.compositeMean },
337
- diff: result.promotedDiff,
338
- provenance,
339
- gateDecision: result.gateResult.decision,
340
- generationsExplored: result.generations.length,
341
- durationMs,
342
- totalCostUsd: totalCost,
343
- cost,
344
- receipts: costLedger.list(),
345
- ...optimizationResult ? { optimization: {
346
- name: opts.method.name,
347
- cost: structuredClone(optimizationResult.cost),
348
- ...optimizationResult.durationMs === void 0 ? {} : { durationMs: optimizationResult.durationMs },
349
- ...optimizationResult.provenance === void 0 ? {} : { provenance: structuredClone(optimizationResult.provenance) }
350
- } } : {},
351
- insight,
352
- ...power ? { power } : {},
353
- raw: result
354
- };
355
- if (opts.hostedTenant) try {
356
- await shipEvalRunToHosted(opts.hostedTenant, opts, summary, result, runDir);
357
- } catch (err) {
358
- const msg = err instanceof Error ? err.message : String(err);
359
- console.warn(`[agent-eval] hosted ingest failed (continuing): ${msg}`);
360
- }
361
- return summary;
362
- }
363
- async function shipEvalRunToHosted(tenant, opts, summary, raw, runDir) {
364
- const client = createHostedClient(tenant);
365
- function snapshotFromCampaign(index, surface, campaign, durationMs) {
366
- const cells = campaign.cells.map((cell) => {
367
- const execution = campaignCellExecutionEvidence(cell);
368
- return {
369
- scenarioId: cell.scenarioId,
370
- rep: cell.rep,
371
- compositeMean: campaignCellTaskScore(cell) ?? null,
372
- dimensions: campaignCellJudgeDimensions(cell),
373
- terminalOutcome: execution.terminalOutcome,
374
- executionErrorCount: execution.executionErrorCount ?? null,
375
- errorMessage: cell.error ?? void 0
376
- };
377
- });
378
- const scoredCells = cells.flatMap((cell) => cell.compositeMean === null ? [] : [cell.compositeMean]);
379
- const compositeMean = scoredCells.length === 0 ? null : scoredCells.reduce((sum, score) => sum + score, 0) / scoredCells.length;
380
- return {
381
- index,
382
- surfaceHash: surfaceHash(surface),
383
- surface,
384
- cells,
385
- compositeMean,
386
- costUsd: campaign.aggregates.cost.totalCostUsd,
387
- durationMs
388
- };
389
- }
390
- const generations = [];
391
- generations.push(snapshotFromCampaign(0, opts.baselineSurface, raw.baselineCampaign, 0));
392
- for (const gen of raw.generations) {
393
- const winner = gen.surfaces.reduce((best, s) => s.campaign.aggregates.cellsExecuted > 0 && (best === void 0 || averageComposite(s.campaign) > averageComposite(best.campaign)) ? s : best, gen.surfaces[0]);
394
- if (!winner) continue;
395
- generations.push(snapshotFromCampaign(gen.record.generationIndex + 1, winner.surface, winner.campaign, 0));
396
- }
397
- const event = {
398
- runId: `${runDir}#${Date.now()}`,
399
- runDir,
400
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
401
- status: "finished",
402
- labels: opts.hostedLabels ?? {},
403
- baseline: generations[0],
404
- generations,
405
- gateDecision: summary.gateDecision,
406
- holdoutLift: summary.lift,
407
- totalCostUsd: summary.totalCostUsd,
408
- totalDurationMs: summary.durationMs,
409
- insightReport: summary.insight
410
- };
411
- await client.ingestEvalRun(event);
412
- }
413
- function averageComposite(campaign) {
414
- const aggs = Object.values(campaign.aggregates.byScenario);
415
- return aggs.length === 0 ? 0 : aggs.reduce((s, a) => s + a.meanComposite, 0) / aggs.length;
416
- }
417
- function hashString$1(s) {
418
- let h = 2166136261;
419
- for (let i = 0; i < s.length; i++) {
420
- h ^= s.charCodeAt(i);
421
- h = Math.imul(h, 16777619) >>> 0;
422
- }
423
- return h.toString(16).padStart(8, "0");
424
- }
425
- /**
426
- * Adapt campaign cells into the `RunRecord` shape `analyzeRuns()` consumes.
427
- * Each cell becomes one run; `candidateId` is the caller-supplied label so
428
- * baseline + winner pair cleanly on `(experimentId, scenarioId, seed)`.
429
- *
430
- * `promptHash` is the REAL sha256 content hash of the surface this cell ran
431
- * (baseline vs winner are byte-distinguishable + byte-identical-verifiable);
432
- * `configHash` is the sha256 of the candidate label so the two candidates'
433
- * config rows differ. Both were previously the literal `'sha256:cell'`, which
434
- * made baseline and winner indistinguishable in every downstream record.
435
- */
436
- function cellsToRunRecords(cells, candidateId, runId, surface, splitTag, fallbackModel) {
437
- const promptHash = surfaceContentHash(surface);
438
- const configHash = surfaceContentHash(candidateId);
439
- return cells.map((cell) => {
440
- const receiptModels = cell.resolvedModels ?? (cell.resolvedModel ? [cell.resolvedModel] : []);
441
- if (receiptModels.length > 1) throw new ValidationError(`selfImprove cell ${cell.cellId} used multiple agent models: ${receiptModels.join(", ")}`);
442
- const model = receiptModels[0] ?? fallbackModel;
443
- if (!model) throw new ValidationError(`selfImprove.model is required when cell ${cell.cellId} has no paid-call model receipt`);
444
- if (!modelHasSnapshot(model)) throw new ValidationError(`selfImprove model "${model}" lacks a snapshot version for cell ${cell.cellId}`);
445
- return campaignCellToRunRecord(cell, {
446
- runId: `${runId}::${candidateId}::${cell.cellId}`,
447
- experimentId: runId,
448
- candidateId,
449
- seed: cell.rep * 1e6 + hashString$1(cell.scenarioId).slice(0, 6).split("").reduce((a, c) => a * 31 + c.charCodeAt(0) >>> 0, 0),
450
- model,
451
- promptHash,
452
- configHash,
453
- commitSha: "cell",
454
- splitTag
455
- });
456
- });
457
- }
458
- //#endregion
459
- //#region src/contract/define-agent-eval.ts
460
- /**
461
- * Define an agent eval once, then either score a surface with `evaluate()` or
462
- * run the closed loop with `improve()`.
463
- *
464
- * This is a DX wrapper only: it delegates to `runEval()` and `selfImprove()` and
465
- * returns their native result shapes.
466
- */
467
- function defineAgentEval(defaults) {
468
- const defaultEvaluateOptions = evaluateDefaults(defaults);
469
- return {
470
- scenarios: defaults.scenarios,
471
- baselineSurface: defaults.baselineSurface,
472
- async evaluate(opts = {}) {
473
- const { agent, judge, judges, runDir, scenarios, surface, ...campaignOpts } = opts;
474
- const selectedAgent = agent ?? defaults.agent;
475
- const selectedSurface = surface ?? defaults.baselineSurface;
476
- const selectedRunDir = runDir ?? defaults.runDir ?? `mem://defineAgentEval-${Date.now()}`;
477
- const selectedStorage = campaignOpts.storage ?? defaultEvaluateOptions.storage ?? (selectedRunDir.startsWith("mem://") ? inMemoryCampaignStorage() : void 0);
478
- const evalOptions = {
479
- ...defaultEvaluateOptions,
480
- ...campaignOpts,
481
- ...selectedStorage ? { storage: selectedStorage } : {},
482
- runDir: selectedRunDir,
483
- scenarios: scenarios ?? defaults.scenarios,
484
- dispatch: (scenario, ctx) => selectedAgent(selectedSurface, scenario, ctx),
485
- judges: evaluateJudges(judges, judge ?? defaults.judge)
486
- };
487
- if (evalOptions.reps !== void 0) evalOptions.reps = requirePositiveInteger(evalOptions.reps, "reps");
488
- return runEval(evalOptions);
489
- },
490
- async improve(opts = {}) {
491
- const { budget: budgetOverride, hostedTenant: hostedTenantOverride, ...topLevelOverrides } = opts;
492
- const merged = mergeDefined(defaults, topLevelOverrides);
493
- const budget = mergeBudget(defaults.budget, budgetOverride);
494
- const hostedTenant = mergeHostedTenant(defaults.hostedTenant, hostedTenantOverride);
495
- return selfImprove({
496
- ...merged,
497
- ...budget ? { budget } : {},
498
- ...hostedTenant ? { hostedTenant } : {}
499
- });
500
- }
501
- };
502
- }
503
- function evaluateDefaults(defaults) {
504
- const out = {};
505
- if (defaults.storage) out.storage = defaults.storage;
506
- if (defaults.labeledStore) out.labeledStore = defaults.labeledStore;
507
- if (defaults.captureSource) out.captureSource = defaults.captureSource;
508
- if (defaults.cellPlacement) out.cellPlacement = defaults.cellPlacement;
509
- if (defaults.expectUsage) out.expectUsage = defaults.expectUsage;
510
- if (defaults.budget?.dollars !== void 0) out.costCeiling = defaults.budget.dollars;
511
- if (defaults.budget?.maxConcurrency !== void 0) out.maxConcurrency = defaults.budget.maxConcurrency;
512
- if (defaults.budget?.reps !== void 0) out.reps = requirePositiveInteger(defaults.budget.reps, "budget.reps");
513
- return out;
514
- }
515
- function mergeBudget(defaults, overrides) {
516
- const merged = mergeOptionalObject(defaults, overrides);
517
- if (merged?.reps !== void 0) merged.reps = requirePositiveInteger(merged.reps, "budget.reps");
518
- return merged;
519
- }
520
- function mergeHostedTenant(defaults, overrides) {
521
- const merged = mergeOptionalObject(defaults, overrides);
522
- if (!merged) return void 0;
523
- if (!merged.endpoint?.trim() || !merged.apiKey?.trim() || !merged.tenantId?.trim()) throw new Error("defineAgentEval.improve: hostedTenant requires endpoint, apiKey, and tenantId after merging defaults and overrides");
524
- return merged;
525
- }
526
- function mergeDefined(defaults, overrides) {
527
- if (!overrides) return defaults;
528
- const merged = { ...defaults };
529
- for (const [key, value] of Object.entries(overrides)) if (value !== void 0) merged[key] = value;
530
- return merged;
531
- }
532
- function mergeOptionalObject(defaults, overrides) {
533
- if (!defaults && !overrides) return void 0;
534
- return mergeDefined(defaults ?? {}, overrides);
535
- }
536
- function evaluateJudges(judges, defaultJudge) {
537
- if (judges !== void 0) {
538
- if (judges.length === 0) throw new Error("defineAgentEval.evaluate: judges must not be empty");
539
- return judges;
540
- }
541
- return [defaultJudge];
542
- }
543
- function requirePositiveInteger(value, field) {
544
- if (!Number.isInteger(value) || value < 1) throw new Error(`defineAgentEval: ${field} must be a positive integer`);
545
- return value;
546
- }
547
- //#endregion
548
24
  //#region src/contract/fixed-spend.ts
549
25
  function addFixedSpend(left, right) {
550
26
  return {