@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,18 +1,139 @@
1
- import { c as ValidationError } from "./errors-D-LKuDhb.js";
2
- import { c as costForTokenPricing, i as CostLedger } from "./cost-ledger-DMFxsLKr.js";
3
- import { n as canonicalJson, r as contentHash } from "./verdict-cache-BCcOh0kF.js";
4
- import { a as appendLedgerLine, d as tryAcquireAtomicFileLock, o as tryWithLedgerFileLock, u as probeAtomicFileLock } from "./ledger-core-DXZIqu17.js";
1
+ import { s as ValidationError } from "./errors-Dngq5h35.js";
2
+ import { t as canonicalJson } from "./verdict-cache-mZf5FEiY.js";
3
+ import { c as costForTokenPricing, i as CostLedger } from "./cost-ledger-BSe92yAV.js";
4
+ import { a as appendLedgerLine, o as tryWithLedgerFileLock } from "./ledger-core-BmZt19oQ.js";
5
5
  import { createRequire } from "node:module";
6
- import { isAbsolute, join, resolve } from "node:path";
7
6
  import { randomBytes } from "node:crypto";
8
- import { constants } from "node:buffer";
9
- import { createServer } from "node:http";
7
+ import { isAbsolute, join, resolve } from "node:path";
8
+ import { tmpdir } from "node:os";
9
+ import { constants as constants$1 } from "node:buffer";
10
10
  import { spawn } from "node:child_process";
11
11
  import { lstat, mkdtemp, open, rm, writeFile } from "node:fs/promises";
12
- import { tmpdir } from "node:os";
12
+ import { createServer } from "node:http";
13
+ //#region src/campaign/search-ledger-errors.ts
14
+ /** Base error for invalid search-ledger input or operations. */
15
+ var SearchLedgerError = class extends ValidationError {};
16
+ /** Error raised when durable search-ledger data fails an integrity check. */
17
+ var SearchLedgerIntegrityError = class extends SearchLedgerError {};
18
+ /** Error raised when an event identifier is reused with different content. */
19
+ var SearchLedgerConflictError = class extends SearchLedgerError {};
20
+ //#endregion
21
+ //#region src/campaign/search-ledger-file.ts
22
+ /** Campaign binding of the generic journal file layer to search-ledger errors. */
23
+ const SEARCH_LEDGER_FILE_CONTEXT = {
24
+ subject: "search ledger",
25
+ integrityError: (message, options) => new SearchLedgerIntegrityError(message, options)
26
+ };
27
+ function appendSearchLedgerLine(path, line) {
28
+ appendLedgerLine(path, line, SEARCH_LEDGER_FILE_CONTEXT);
29
+ }
30
+ function tryWithSearchLedgerFileLock(ledgerPath, run) {
31
+ return tryWithLedgerFileLock(ledgerPath, SEARCH_LEDGER_FILE_CONTEXT, run);
32
+ }
33
+ //#endregion
34
+ //#region src/campaign/storage.ts
35
+ /** Node-filesystem storage — the default. Lazily requires `node:fs` so the
36
+ * module imports cleanly in non-Node runtimes (where the caller passes
37
+ * `inMemoryCampaignStorage` instead and never constructs this).
38
+ *
39
+ * `createRequire(import.meta.url)` is the ESM-native lazy require — a bare
40
+ * `require` is a ReferenceError under `"type": "module"`, which is exactly
41
+ * the shape this package publishes. */
42
+ function fsCampaignStorage() {
43
+ const { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } = createRequire(import.meta.url)("node:fs");
44
+ return {
45
+ ensureDir(dir) {
46
+ if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
47
+ },
48
+ exists(path) {
49
+ return existsSync(path);
50
+ },
51
+ read(path) {
52
+ try {
53
+ return readFileSync(path, "utf8");
54
+ } catch {
55
+ return;
56
+ }
57
+ },
58
+ write(path, content) {
59
+ writeFileSync(path, content);
60
+ },
61
+ append(path, content, expectedBytes) {
62
+ const result = tryWithSearchLedgerFileLock(path, () => {
63
+ let actualBytes = 0;
64
+ try {
65
+ actualBytes = statSync(path).size;
66
+ } catch (error) {
67
+ if (error.code !== "ENOENT") throw error;
68
+ }
69
+ if (actualBytes !== expectedBytes) return void 0;
70
+ appendSearchLedgerLine(path, content);
71
+ return expectedBytes + Buffer.byteLength(content);
72
+ });
73
+ return result.acquired ? result.value : void 0;
74
+ }
75
+ };
76
+ }
77
+ /** In-memory storage for filesystem-less runtimes. Artifacts + trace spans
78
+ * live in a `Map` for the duration of the run; the `CampaignResult` is
79
+ * fully populated, but nothing is persisted to disk. */
80
+ function inMemoryCampaignStorage() {
81
+ const files = /* @__PURE__ */ new Map();
82
+ const dirs = /* @__PURE__ */ new Set();
83
+ return {
84
+ ensureDir(dir) {
85
+ dirs.add(dir);
86
+ },
87
+ exists(path) {
88
+ return files.has(path) || dirs.has(path);
89
+ },
90
+ read(path) {
91
+ const value = files.get(path);
92
+ if (value === void 0) return void 0;
93
+ return typeof value === "string" ? value : new TextDecoder().decode(value);
94
+ },
95
+ write(path, content) {
96
+ files.set(path, content);
97
+ },
98
+ append(path, content, expectedBytes) {
99
+ const current = files.get(path);
100
+ const currentText = current === void 0 ? "" : typeof current === "string" ? current : new TextDecoder().decode(current);
101
+ const currentBytes = new TextEncoder().encode(currentText).byteLength;
102
+ if (currentBytes !== expectedBytes) return void 0;
103
+ files.set(path, `${currentText}${content}`);
104
+ return currentBytes + new TextEncoder().encode(content).byteLength;
105
+ }
106
+ };
107
+ }
108
+ /** Open the durable spend account stored beside a logical run. */
109
+ function createRunCostLedger(input) {
110
+ const path = join(input.runDir, "cost-ledger.jsonl");
111
+ if (input.ensureRunDir ?? true) input.storage.ensureDir(input.runDir);
112
+ return new CostLedger({
113
+ costCeilingUsd: input.costCeilingUsd,
114
+ persistence: {
115
+ read: () => {
116
+ const stored = input.storage.read(path);
117
+ if (stored === void 0 && input.storage.exists(path)) throw new Error(`CostLedger: cannot read existing event log '${path}'`);
118
+ const events = stored ?? "";
119
+ return {
120
+ revision: String(new TextEncoder().encode(events).byteLength),
121
+ events
122
+ };
123
+ },
124
+ append: (expectedRevision, event) => {
125
+ const expectedBytes = Number(expectedRevision);
126
+ if (!Number.isSafeInteger(expectedBytes) || expectedBytes < 0) throw new Error(`CostLedger: invalid storage revision '${expectedRevision}'`);
127
+ const next = input.storage.append(path, event, expectedBytes);
128
+ return next === void 0 ? void 0 : String(next);
129
+ }
130
+ }
131
+ });
132
+ }
133
+ //#endregion
13
134
  //#region src/campaign/external-optimizer-contracts.ts
14
135
  const MAX_TIMER_DELAY_MS$1 = 2147483647;
15
- const MAXIMUM_JSON_BYTES = Math.min(constants.MAX_LENGTH - 1, constants.MAX_STRING_LENGTH);
136
+ const MAXIMUM_JSON_BYTES = Math.min(constants$1.MAX_LENGTH - 1, constants$1.MAX_STRING_LENGTH);
16
137
  const DEFAULT_EXTERNAL_OPTIMIZER_PROCESS_LIMITS = Object.freeze({
17
138
  maxInputBytes: 64 * 1024 * 1024,
18
139
  maxResultBytes: 4 * 1024 * 1024,
@@ -29,7 +150,7 @@ function resolveExternalOptimizerProcessLimits(value, label = "external optimize
29
150
  };
30
151
  assertBoundedPositiveInteger(resolved.maxInputBytes, `${label}.maxInputBytes`, MAXIMUM_JSON_BYTES);
31
152
  assertBoundedPositiveInteger(resolved.maxResultBytes, `${label}.maxResultBytes`, MAXIMUM_JSON_BYTES);
32
- assertBoundedPositiveInteger(resolved.maxOutputChars, `${label}.maxOutputChars`, constants.MAX_STRING_LENGTH);
153
+ assertBoundedPositiveInteger(resolved.maxOutputChars, `${label}.maxOutputChars`, constants$1.MAX_STRING_LENGTH);
33
154
  return resolved;
34
155
  }
35
156
  function resolveExternalOptimizerCallbackLimits(value, label = "external optimizer callback limits") {
@@ -180,7 +301,7 @@ async function startExternalOptimizerModelProxy(args) {
180
301
  const activeHandlers = /* @__PURE__ */ new Set();
181
302
  const server = createServer((request, response) => {
182
303
  if (!accepting) {
183
- sendJsonIfOpen$1(response, 503, { error: "external optimizer model proxy is closing" });
304
+ sendJsonIfOpen(response, 503, { error: "external optimizer model proxy is closing" });
184
305
  return;
185
306
  }
186
307
  const controller = new AbortController();
@@ -272,7 +393,7 @@ async function startExternalOptimizerModelProxy(args) {
272
393
  accepting = false;
273
394
  const closingServer = closeServer(server);
274
395
  server.closeIdleConnections?.();
275
- const [serverResult] = await Promise.allSettled([closingServer, waitForActiveHandlers$1(activeHandlers)]);
396
+ const [serverResult] = await Promise.allSettled([closingServer, waitForActiveHandlers(activeHandlers)]);
276
397
  if (activeControllers.size !== 0 || activeHandlers.size !== 0) throw new Error("external optimizer model proxy closed with active request work");
277
398
  let executionError;
278
399
  try {
@@ -290,12 +411,12 @@ async function handleModelProxyRequest(args) {
290
411
  try {
291
412
  const path = request.url ? new URL(request.url, "http://127.0.0.1").pathname : "";
292
413
  if (request.method !== "POST" || !MODEL_PROXY_PATHS.has(path)) {
293
- sendJsonIfOpen$1(response, 404, { error: "not found" });
414
+ sendJsonIfOpen(response, 404, { error: "not found" });
294
415
  return;
295
416
  }
296
417
  const modelPath = path;
297
418
  if (request.headers.authorization !== `Bearer ${args.token}`) {
298
- sendJsonIfOpen$1(response, 401, { error: "unauthorized" });
419
+ sendJsonIfOpen(response, 401, { error: "unauthorized" });
299
420
  return;
300
421
  }
301
422
  const body = await readBody(request, args.args.budget.maxRequestBytes);
@@ -304,7 +425,7 @@ async function handleModelProxyRequest(args) {
304
425
  const maximumCostUsd = args.args.budget.pricing ? costForTokenPricing(args.args.budget.pricing, maximumUsage) : void 0;
305
426
  const reservation = args.nextReservation(maximumCostUsd);
306
427
  if (!reservation.accepted) {
307
- sendJsonIfOpen$1(response, 429, { error: reservation.reason });
428
+ sendJsonIfOpen(response, 429, { error: reservation.reason });
308
429
  return;
309
430
  }
310
431
  const timeout = setTimeout(() => controller.abort(), args.args.budget.requestTimeoutMs ?? 3e5);
@@ -348,16 +469,16 @@ async function handleModelProxyRequest(args) {
348
469
  if (!paid.succeeded) {
349
470
  args.recordFailure(paid.error);
350
471
  chargedForBudget = paid.receipt ? paid.receipt.usageUnknown || paid.receipt.costUnknown ? maximumCostUsd : paid.receipt.costUsd : void 0;
351
- sendJsonIfOpen$1(response, isAbortError(paid.error) ? 504 : paid.error instanceof ProviderResponseTooLargeError || paid.error instanceof MissingModelExecutionError || paid.error instanceof ModelExecutionPersistenceError || paid.error instanceof OwnerModelContractError ? 502 : 429, { error: paid.error.message });
472
+ sendJsonIfOpen(response, isAbortError(paid.error) ? 504 : paid.error instanceof ProviderResponseTooLargeError || paid.error instanceof MissingModelExecutionError || paid.error instanceof ModelExecutionPersistenceError || paid.error instanceof OwnerModelContractError ? 502 : 429, { error: paid.error.message });
352
473
  return;
353
474
  }
354
475
  if (paid.value.modelCallFailed) {
355
- sendJsonIfOpen$1(response, 502, { error: paid.value.modelCallFailed });
476
+ sendJsonIfOpen(response, 502, { error: paid.value.modelCallFailed });
356
477
  return;
357
478
  }
358
479
  chargedForBudget = paid.value.usageComplete ? paid.receipt.costUsd : maximumCostUsd;
359
480
  if (paid.value.usageRejected) {
360
- sendJsonIfOpen$1(response, 502, { error: paid.value.usageRejected });
481
+ sendJsonIfOpen(response, 502, { error: paid.value.usageRejected });
361
482
  return;
362
483
  }
363
484
  if (paid.value.status >= 200 && paid.value.status < 300) args.recordSuccessfulCompletion();
@@ -372,13 +493,13 @@ async function handleModelProxyRequest(args) {
372
493
  args.settleReservation(maximumCostUsd, chargedForBudget);
373
494
  }
374
495
  } catch (error) {
375
- sendJsonIfOpen$1(response, error instanceof RequestBodyTooLargeError ? 413 : error instanceof Error && isAbortError(error) ? 503 : 400, { error: toErrorMessage(error) });
496
+ sendJsonIfOpen(response, error instanceof RequestBodyTooLargeError ? 413 : error instanceof Error && isAbortError(error) ? 503 : 400, { error: toErrorMessage(error) });
376
497
  }
377
498
  }
378
- async function waitForActiveHandlers$1(activeHandlers) {
499
+ async function waitForActiveHandlers(activeHandlers) {
379
500
  while (activeHandlers.size > 0) await Promise.allSettled([...activeHandlers]);
380
501
  }
381
- function sendJsonIfOpen$1(response, status, body) {
502
+ function sendJsonIfOpen(response, status, body) {
382
503
  if (response.destroyed || response.writableEnded) return;
383
504
  sendJson(response, status, body);
384
505
  }
@@ -1225,421 +1346,6 @@ function summarizeProcessOutput(capture, max = 4e3) {
1225
1346
  return `${compact.slice(0, headChars)}...[${compact.length - max} chars omitted]...${compact.slice(-tailChars)}`;
1226
1347
  }
1227
1348
  //#endregion
1228
- //#region src/campaign/search-ledger-errors.ts
1229
- /** Base error for invalid search-ledger input or operations. */
1230
- var SearchLedgerError = class extends ValidationError {};
1231
- /** Error raised when durable search-ledger data fails an integrity check. */
1232
- var SearchLedgerIntegrityError = class extends SearchLedgerError {};
1233
- /** Error raised when an event identifier is reused with different content. */
1234
- var SearchLedgerConflictError = class extends SearchLedgerError {};
1235
- //#endregion
1236
- //#region src/campaign/search-ledger-file.ts
1237
- /** Campaign binding of the generic journal file layer to search-ledger errors. */
1238
- const SEARCH_LEDGER_FILE_CONTEXT = {
1239
- subject: "search ledger",
1240
- integrityError: (message, options) => new SearchLedgerIntegrityError(message, options)
1241
- };
1242
- function appendSearchLedgerLine(path, line) {
1243
- appendLedgerLine(path, line, SEARCH_LEDGER_FILE_CONTEXT);
1244
- }
1245
- function tryWithSearchLedgerFileLock(ledgerPath, run) {
1246
- return tryWithLedgerFileLock(ledgerPath, SEARCH_LEDGER_FILE_CONTEXT, run);
1247
- }
1248
- //#endregion
1249
- //#region src/campaign/storage.ts
1250
- /** Node-filesystem storage — the default. Lazily requires `node:fs` so the
1251
- * module imports cleanly in non-Node runtimes (where the caller passes
1252
- * `inMemoryCampaignStorage` instead and never constructs this).
1253
- *
1254
- * `createRequire(import.meta.url)` is the ESM-native lazy require — a bare
1255
- * `require` is a ReferenceError under `"type": "module"`, which is exactly
1256
- * the shape this package publishes. */
1257
- function fsCampaignStorage() {
1258
- const { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } = createRequire(import.meta.url)("node:fs");
1259
- return {
1260
- ensureDir(dir) {
1261
- if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
1262
- },
1263
- exists(path) {
1264
- return existsSync(path);
1265
- },
1266
- read(path) {
1267
- try {
1268
- return readFileSync(path, "utf8");
1269
- } catch {
1270
- return;
1271
- }
1272
- },
1273
- write(path, content) {
1274
- writeFileSync(path, content);
1275
- },
1276
- append(path, content, expectedBytes) {
1277
- const result = tryWithSearchLedgerFileLock(path, () => {
1278
- let actualBytes = 0;
1279
- try {
1280
- actualBytes = statSync(path).size;
1281
- } catch (error) {
1282
- if (error.code !== "ENOENT") throw error;
1283
- }
1284
- if (actualBytes !== expectedBytes) return void 0;
1285
- appendSearchLedgerLine(path, content);
1286
- return expectedBytes + Buffer.byteLength(content);
1287
- });
1288
- return result.acquired ? result.value : void 0;
1289
- }
1290
- };
1291
- }
1292
- /** In-memory storage for filesystem-less runtimes. Artifacts + trace spans
1293
- * live in a `Map` for the duration of the run; the `CampaignResult` is
1294
- * fully populated, but nothing is persisted to disk. */
1295
- function inMemoryCampaignStorage() {
1296
- const files = /* @__PURE__ */ new Map();
1297
- const dirs = /* @__PURE__ */ new Set();
1298
- return {
1299
- ensureDir(dir) {
1300
- dirs.add(dir);
1301
- },
1302
- exists(path) {
1303
- return files.has(path) || dirs.has(path);
1304
- },
1305
- read(path) {
1306
- const value = files.get(path);
1307
- if (value === void 0) return void 0;
1308
- return typeof value === "string" ? value : new TextDecoder().decode(value);
1309
- },
1310
- write(path, content) {
1311
- files.set(path, content);
1312
- },
1313
- append(path, content, expectedBytes) {
1314
- const current = files.get(path);
1315
- const currentText = current === void 0 ? "" : typeof current === "string" ? current : new TextDecoder().decode(current);
1316
- const currentBytes = new TextEncoder().encode(currentText).byteLength;
1317
- if (currentBytes !== expectedBytes) return void 0;
1318
- files.set(path, `${currentText}${content}`);
1319
- return currentBytes + new TextEncoder().encode(content).byteLength;
1320
- }
1321
- };
1322
- }
1323
- /** Open the durable spend account stored beside a logical run. */
1324
- function createRunCostLedger(input) {
1325
- const path = join(input.runDir, "cost-ledger.jsonl");
1326
- if (input.ensureRunDir ?? true) input.storage.ensureDir(input.runDir);
1327
- return new CostLedger({
1328
- costCeilingUsd: input.costCeilingUsd,
1329
- persistence: {
1330
- read: () => {
1331
- const stored = input.storage.read(path);
1332
- if (stored === void 0 && input.storage.exists(path)) throw new Error(`CostLedger: cannot read existing event log '${path}'`);
1333
- const events = stored ?? "";
1334
- return {
1335
- revision: String(new TextEncoder().encode(events).byteLength),
1336
- events
1337
- };
1338
- },
1339
- append: (expectedRevision, event) => {
1340
- const expectedBytes = Number(expectedRevision);
1341
- if (!Number.isSafeInteger(expectedBytes) || expectedBytes < 0) throw new Error(`CostLedger: invalid storage revision '${expectedRevision}'`);
1342
- const next = input.storage.append(path, event, expectedBytes);
1343
- return next === void 0 ? void 0 : String(next);
1344
- }
1345
- }
1346
- });
1347
- }
1348
- //#endregion
1349
- //#region src/campaign/external-optimizer-callback.ts
1350
- async function startExternalOptimizerCallback(args) {
1351
- assertCallbackConfig(args);
1352
- const limits = resolveExternalOptimizerCallbackLimits(args.limits);
1353
- args.signal?.throwIfAborted();
1354
- let evaluations = 0;
1355
- let accepting = true;
1356
- let closePromise;
1357
- const activeControllers = /* @__PURE__ */ new Set();
1358
- const activeHandlers = /* @__PURE__ */ new Set();
1359
- const proposedCandidateHashes = /* @__PURE__ */ new Set();
1360
- let observationSequence = 0;
1361
- const server = createServer((request, response) => {
1362
- if (!accepting) {
1363
- sendJsonIfOpen(response, 503, { error: "external optimizer callback is closing" });
1364
- return;
1365
- }
1366
- const controller = new AbortController();
1367
- const abortRequest = () => {
1368
- request.destroy();
1369
- response.destroy();
1370
- };
1371
- activeControllers.add(controller);
1372
- controller.signal.addEventListener("abort", abortRequest, { once: true });
1373
- let handler;
1374
- handler = handleCallback(request, response, controller.signal, args, limits, () => {
1375
- const accepted = args.acceptEvaluation ? args.acceptEvaluation() : evaluations + 1;
1376
- if (accepted === void 0) return void 0;
1377
- if (!Number.isSafeInteger(accepted) || accepted <= 0) throw new Error("external optimizer callback: invalid accepted evaluation count");
1378
- if (accepted > args.maxEvaluations) return void 0;
1379
- evaluations += 1;
1380
- return accepted;
1381
- }, (observation) => {
1382
- if (!args.observe) return;
1383
- args.observe({
1384
- ...observation,
1385
- sequence: ++observationSequence
1386
- });
1387
- }, proposedCandidateHashes).finally(() => {
1388
- controller.signal.removeEventListener("abort", abortRequest);
1389
- activeControllers.delete(controller);
1390
- activeHandlers.delete(handler);
1391
- });
1392
- activeHandlers.add(handler);
1393
- handler.catch(() => void 0);
1394
- });
1395
- const port = await listenLocal(server);
1396
- const close = () => {
1397
- closePromise ??= closeCallbackServer();
1398
- return closePromise;
1399
- };
1400
- const onAbort = () => {
1401
- close().catch(() => void 0);
1402
- };
1403
- args.signal?.addEventListener("abort", onAbort, { once: true });
1404
- if (args.signal?.aborted) onAbort();
1405
- return {
1406
- url: `http://127.0.0.1:${port}/evaluate`,
1407
- token: args.token,
1408
- evaluations: () => evaluations,
1409
- close
1410
- };
1411
- async function closeCallbackServer() {
1412
- args.signal?.removeEventListener("abort", onAbort);
1413
- accepting = false;
1414
- const closingServer = closeServer(server);
1415
- server.closeIdleConnections?.();
1416
- for (const controller of activeControllers) controller.abort();
1417
- const [serverResult] = await Promise.allSettled([closingServer, waitForActiveHandlers(activeHandlers)]);
1418
- if (activeControllers.size !== 0 || activeHandlers.size !== 0) throw new Error("external optimizer callback closed with active request work");
1419
- if (serverResult?.status === "rejected") throw serverResult.reason;
1420
- }
1421
- }
1422
- async function handleCallback(request, response, signal, args, limits, nextEvaluation, observe, proposedCandidateHashes) {
1423
- try {
1424
- if (request.method !== "POST" || request.url !== "/evaluate") {
1425
- sendJsonIfOpen(response, 404, { error: "not found" });
1426
- return;
1427
- }
1428
- if (request.headers.authorization !== `Bearer ${args.token}`) {
1429
- sendJsonIfOpen(response, 401, { error: "unauthorized" });
1430
- return;
1431
- }
1432
- let body;
1433
- try {
1434
- body = await readJson(request, limits.maxRequestBytes);
1435
- } catch {
1436
- observe({
1437
- kind: "refusal",
1438
- reason: "invalid-request"
1439
- });
1440
- sendJsonIfOpen(response, 400, { error: "request body must be bounded valid JSON" });
1441
- return;
1442
- }
1443
- if (!isRecord(body) || !isExternalTextCandidate(body.candidate) || typeof body.exampleId !== "string") {
1444
- observe({
1445
- kind: "refusal",
1446
- reason: "invalid-request"
1447
- });
1448
- sendJsonIfOpen(response, 400, { error: "candidate and exampleId are required strings" });
1449
- return;
1450
- }
1451
- const candidate = cloneCandidate(body.candidate);
1452
- const candidateHash = contentHash({
1453
- kind: "external-text-candidate",
1454
- candidate
1455
- });
1456
- if (!proposedCandidateHashes.has(candidateHash)) {
1457
- observe({
1458
- kind: "proposal",
1459
- candidate,
1460
- candidateHash
1461
- });
1462
- proposedCandidateHashes.add(candidateHash);
1463
- }
1464
- const count = nextEvaluation();
1465
- if (count === void 0) {
1466
- observe({
1467
- kind: "refusal",
1468
- reason: "evaluation-limit",
1469
- candidate,
1470
- candidateHash,
1471
- exampleId: body.exampleId
1472
- });
1473
- sendJsonIfOpen(response, 429, { error: "evaluation limit reached" });
1474
- return;
1475
- }
1476
- let result;
1477
- try {
1478
- result = await args.evaluate({
1479
- candidate,
1480
- exampleId: body.exampleId
1481
- }, signal);
1482
- } catch {
1483
- observe({
1484
- kind: "refusal",
1485
- reason: "evaluation-failed",
1486
- candidate,
1487
- candidateHash,
1488
- exampleId: body.exampleId
1489
- });
1490
- sendJsonIfOpen(response, 500, { error: "evaluation failed" });
1491
- return;
1492
- }
1493
- let encoded;
1494
- try {
1495
- encoded = encodeJsonResponse(result);
1496
- } catch {
1497
- observe({
1498
- kind: "refusal",
1499
- reason: "evaluation-failed",
1500
- candidate,
1501
- candidateHash,
1502
- exampleId: body.exampleId
1503
- });
1504
- sendJsonIfOpen(response, 500, { error: "evaluation response must be valid JSON" });
1505
- return;
1506
- }
1507
- if (Buffer.byteLength(encoded) > limits.maxResponseBytes) {
1508
- observe({
1509
- kind: "refusal",
1510
- reason: "evaluation-failed",
1511
- candidate,
1512
- candidateHash,
1513
- exampleId: body.exampleId
1514
- });
1515
- sendJsonIfOpen(response, 413, { error: "evaluation response too large" });
1516
- return;
1517
- }
1518
- observe({
1519
- kind: "evaluation",
1520
- candidate,
1521
- candidateHash,
1522
- exampleId: body.exampleId,
1523
- evaluationNumber: count,
1524
- response: structuredClone(result)
1525
- });
1526
- sendEncodedJsonIfOpen(response, 200, encoded);
1527
- } catch {
1528
- sendJsonIfOpen(response, 500, { error: "evaluation failed" });
1529
- }
1530
- }
1531
- async function waitForActiveHandlers(activeHandlers) {
1532
- while (activeHandlers.size > 0) await Promise.allSettled([...activeHandlers]);
1533
- }
1534
- function sendJsonIfOpen(response, status, body) {
1535
- if (response.destroyed || response.writableEnded) return;
1536
- sendJson(response, status, body);
1537
- }
1538
- function readJson(request, maxRequestBytes) {
1539
- return new Promise((resolvePromise, reject) => {
1540
- let size = 0;
1541
- const chunks = [];
1542
- request.on("data", (chunk) => {
1543
- size += chunk.length;
1544
- if (size > maxRequestBytes) {
1545
- reject(/* @__PURE__ */ new Error("callback body too large"));
1546
- request.destroy();
1547
- return;
1548
- }
1549
- chunks.push(chunk);
1550
- });
1551
- request.on("error", reject);
1552
- request.on("end", () => {
1553
- try {
1554
- resolvePromise(JSON.parse(Buffer.concat(chunks).toString("utf8")));
1555
- } catch (error) {
1556
- reject(error);
1557
- }
1558
- });
1559
- });
1560
- }
1561
- function encodeJsonResponse(value) {
1562
- const encoded = JSON.stringify(value);
1563
- if (encoded === void 0) throw new Error("evaluation response must be JSON-serializable");
1564
- return encoded;
1565
- }
1566
- function sendEncodedJsonIfOpen(response, status, encoded) {
1567
- if (response.destroyed || response.writableEnded) return;
1568
- response.writeHead(status, {
1569
- "content-type": "application/json; charset=utf-8",
1570
- "content-length": String(Buffer.byteLength(encoded))
1571
- });
1572
- response.end(encoded);
1573
- }
1574
- function assertCallbackConfig(args) {
1575
- if (typeof args.token !== "string" || !args.token.trim()) throw new Error("external optimizer callback: token must be non-empty");
1576
- if (!Number.isSafeInteger(args.maxEvaluations) || args.maxEvaluations <= 0) throw new Error("external optimizer callback: maxEvaluations must be a positive safe integer");
1577
- if (args.acceptEvaluation !== void 0 && typeof args.acceptEvaluation !== "function") throw new Error("external optimizer callback: acceptEvaluation must be a function");
1578
- if (typeof args.evaluate !== "function") throw new Error("external optimizer callback: evaluate must be a function");
1579
- if (args.observe !== void 0 && typeof args.observe !== "function") throw new Error("external optimizer callback: observe must be a function");
1580
- }
1581
- function cloneCandidate(candidate) {
1582
- return typeof candidate === "string" ? candidate : { ...candidate };
1583
- }
1584
- //#endregion
1585
- //#region src/campaign/single-run-lock.ts
1586
- /**
1587
- * Single-run lock for evaluations that share one mutable environment.
1588
- *
1589
- * Two concurrent runs against a shared stateful gym silently corrupt each
1590
- * other: each resets/mutates environment state mid-cell of the other, and
1591
- * every score from both becomes garbage that LOOKS like worker variance
1592
- * (agent-lab R357 burned hours on flip-flopping scores before tracing them
1593
- * to exactly this). The fix is a pid lockfile: refuse to start while a live
1594
- * holder exists, reclaim stale locks whose pid is gone, release only if the
1595
- * lock is still ours.
1596
- *
1597
- * `alsoCheck` exists because independent runners can guard the same shared
1598
- * resource with differently named lockfiles; a runner must respect all of
1599
- * them even though it writes only its own.
1600
- */
1601
- function assertAvailable(path) {
1602
- const unavailable = probeAtomicFileLock({ lockPath: path });
1603
- if (unavailable) throw unavailableError(path, unavailable);
1604
- }
1605
- function unavailableError(path, unavailable) {
1606
- if (unavailable.reason === "recovery") return /* @__PURE__ */ new Error(`single-run lock recovery is already in progress (${path}); refusing a concurrent run`);
1607
- return /* @__PURE__ */ new Error(`single-run lock held by live pid ${unavailable.holder.pid} (${path}); refusing a concurrent run on the shared resource`);
1608
- }
1609
- /**
1610
- * Acquire the lock or throw naming the live holder. A stale lock (holder pid
1611
- * no longer running) is reclaimed by one contender. An interrupted reclaim
1612
- * leaves a marker that fails closed instead of admitting overlapping runs.
1613
- */
1614
- function acquireSingleRunLock(opts) {
1615
- const pid = opts.pid ?? process.pid;
1616
- if (!Number.isSafeInteger(pid) || pid <= 0) throw new Error("single-run lock pid must be a positive integer");
1617
- for (const path of opts.alsoCheck ?? []) assertAvailable(path);
1618
- const acquisition = tryAcquireAtomicFileLock({
1619
- lockPath: opts.lockPath,
1620
- pid
1621
- });
1622
- if (!acquisition.acquired) throw unavailableError(opts.lockPath, acquisition);
1623
- const releaseOnExit = opts.releaseOnExit ?? true;
1624
- let released = false;
1625
- const release = () => {
1626
- if (released) return;
1627
- released = true;
1628
- if (releaseOnExit) process.off("exit", release);
1629
- try {
1630
- acquisition.lock.release();
1631
- } catch {}
1632
- };
1633
- try {
1634
- for (const path of opts.alsoCheck ?? []) assertAvailable(path);
1635
- } catch (error) {
1636
- release();
1637
- throw error;
1638
- }
1639
- if (releaseOnExit) process.on("exit", release);
1640
- return { release };
1641
- }
1642
- //#endregion
1643
- export { isExternalTextCandidate as C, resolveExternalOptimizerProcessLimits as D, resolveExternalOptimizerCallbackLimits as E, safePathComponent as O, isCandidateText as S, removeCredentialEnvironment as T, DEFAULT_EXTERNAL_OPTIMIZER_CALLBACK_LIMITS as _, inMemoryCampaignStorage as a, assertJsonValue as b, SearchLedgerError as c, closeExternalOptimizerResources as d, runWithCleanup as f, sendJson as g, listenLocal as h, fsCampaignStorage as i, SearchLedgerIntegrityError as l, closeServer as m, startExternalOptimizerCallback as n, SEARCH_LEDGER_FILE_CONTEXT as o, startExternalOptimizerModelProxy as p, createRunCostLedger as r, SearchLedgerConflictError as s, acquireSingleRunLock as t, runExternalOptimizerProcess as u, DEFAULT_EXTERNAL_OPTIMIZER_PROCESS_LIMITS as v, isRecord as w, assertNoCredentialValues as x, assertExternalOptimizerModelBudget as y };
1349
+ export { SEARCH_LEDGER_FILE_CONTEXT as C, SearchLedgerIntegrityError as E, inMemoryCampaignStorage as S, SearchLedgerError as T, resolveExternalOptimizerCallbackLimits as _, closeServer as a, createRunCostLedger as b, DEFAULT_EXTERNAL_OPTIMIZER_CALLBACK_LIMITS as c, assertJsonValue as d, assertNoCredentialValues as f, removeCredentialEnvironment as g, isRecord as h, startExternalOptimizerModelProxy as i, DEFAULT_EXTERNAL_OPTIMIZER_PROCESS_LIMITS as l, isExternalTextCandidate as m, closeExternalOptimizerResources as n, listenLocal as o, isCandidateText as p, runWithCleanup as r, sendJson as s, runExternalOptimizerProcess as t, assertExternalOptimizerModelBudget as u, resolveExternalOptimizerProcessLimits as v, SearchLedgerConflictError as w, fsCampaignStorage as x, safePathComponent as y };
1644
1350
 
1645
- //# sourceMappingURL=single-run-lock-DFWHEB09.js.map
1351
+ //# sourceMappingURL=external-optimizer-subprocess-DrJ9hR8u.js.map