@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.
- package/CHANGELOG.md +11 -0
- package/dist/agent-profile-B9_GGsG8.d.ts +84 -0
- package/dist/agent-profile-B9_GGsG8.d.ts.map +1 -0
- package/dist/{agent-profile-cell-BOP-iA9Q.d.ts → agent-profile-cell-BkcRDikH.d.ts} +2 -2
- package/dist/{agent-profile-cell-BOP-iA9Q.d.ts.map → agent-profile-cell-BkcRDikH.d.ts.map} +1 -1
- package/dist/analyst/index.d.ts +134 -16
- package/dist/analyst/index.d.ts.map +1 -1
- package/dist/analyst/index.js +364 -10
- package/dist/analyst/index.js.map +1 -1
- package/dist/backend-integrity-CsVin_Wb.d.ts +280 -0
- package/dist/backend-integrity-CsVin_Wb.d.ts.map +1 -0
- package/dist/{baseline-C-GocmIW.js → baseline-BhPRQBVn.js} +3 -2
- package/dist/{baseline-C-GocmIW.js.map → baseline-BhPRQBVn.js.map} +1 -1
- package/dist/{benchmark-CWeqGl7x.js → benchmark-BhT16ep9.js} +2 -2
- package/dist/{benchmark-CWeqGl7x.js.map → benchmark-BhT16ep9.js.map} +1 -1
- package/dist/{agent-profile-DPi7IZg7.d.ts → benchmark-Ceoan7vk.d.ts} +4 -91
- package/dist/benchmark-Ceoan7vk.d.ts.map +1 -0
- package/dist/{benchmark-command-BteMFN62.js → benchmark-command-CY6cbhOB.js} +36 -79
- package/dist/benchmark-command-CY6cbhOB.js.map +1 -0
- package/dist/benchmarks/index.d.ts +244 -2
- package/dist/benchmarks/index.d.ts.map +1 -0
- package/dist/benchmarks/index.js +733 -1
- package/dist/benchmarks/index.js.map +1 -0
- package/dist/builder-eval/index.d.ts +23 -2
- package/dist/builder-eval/index.d.ts.map +1 -1
- package/dist/builder-eval/index.js +227 -3
- package/dist/builder-eval/index.js.map +1 -1
- package/dist/campaign/index.d.ts +10 -8
- package/dist/campaign/index.js +9 -6
- package/dist/{campaign-C2TTzQII.js → campaign-BYjBAypg.js} +21 -634
- package/dist/campaign-BYjBAypg.js.map +1 -0
- package/dist/{canonical-D011XM8r.js → canonical-D-XsTQ6_.js} +2 -2
- package/dist/{canonical-D011XM8r.js.map → canonical-D-XsTQ6_.js.map} +1 -1
- package/dist/{index-CQTZ-4XN.d.ts → capture-fetch-DDvpjVRU.d.ts} +3 -3
- package/dist/capture-fetch-DDvpjVRU.d.ts.map +1 -0
- package/dist/{default-registry-BmktKy8r.js → chat-client-Bp4Ebuuc.js} +1276 -1276
- package/dist/chat-client-Bp4Ebuuc.js.map +1 -0
- package/dist/cli.js +2 -2
- package/dist/{client-C9gzZE59.d.ts → client-KUbGulm_.d.ts} +4 -4
- package/dist/{client-C9gzZE59.d.ts.map → client-KUbGulm_.d.ts.map} +1 -1
- package/dist/contract/index.d.ts +13 -390
- package/dist/contract/index.d.ts.map +1 -1
- package/dist/contract/index.js +18 -542
- package/dist/contract/index.js.map +1 -1
- package/dist/{cost-ledger-DMFxsLKr.js → cost-ledger-BSe92yAV.js} +3 -3
- package/dist/{cost-ledger-DMFxsLKr.js.map → cost-ledger-BSe92yAV.js.map} +1 -1
- package/dist/{cost-ledger-Bv_e8XHY.d.ts → cost-ledger-DbQdN3nO.d.ts} +2 -2
- package/dist/{cost-ledger-Bv_e8XHY.d.ts.map → cost-ledger-DbQdN3nO.d.ts.map} +1 -1
- package/dist/{counterfactual-CxmxAONP.d.ts → counterfactual--bpysZF0.d.ts} +2 -14
- package/dist/{counterfactual-CxmxAONP.d.ts.map → counterfactual--bpysZF0.d.ts.map} +1 -1
- package/dist/{counterfactual-CWPTrMH7.js → counterfactual-lDfCx0Uz.js} +3 -31
- package/dist/{counterfactual-CWPTrMH7.js.map → counterfactual-lDfCx0Uz.js.map} +1 -1
- package/dist/{dataset-C8xaLXdY.d.ts → dataset-CJjKqQfA.d.ts} +2 -8
- package/dist/dataset-CJjKqQfA.d.ts.map +1 -0
- package/dist/{default-registry-Bf8Woqmq.d.ts → default-registry-Di6HP6pG.d.ts} +7 -12
- package/dist/default-registry-Di6HP6pG.d.ts.map +1 -0
- package/dist/{analyze-runs-C30yljDJ.js → define-agent-eval-iqjT--ZZ.js} +542 -130
- package/dist/define-agent-eval-iqjT--ZZ.js.map +1 -0
- package/dist/define-agent-eval-sH24zBfM.d.ts +388 -0
- package/dist/define-agent-eval-sH24zBfM.d.ts.map +1 -0
- package/dist/descriptive-B5MwKfbf.js +144 -0
- package/dist/descriptive-B5MwKfbf.js.map +1 -0
- package/dist/{dspy-rlm-engine-DbTk4JdR.js → dspy-rlm-engine-B_qhSc21.js} +4 -4
- package/dist/{dspy-rlm-engine-DbTk4JdR.js.map → dspy-rlm-engine-B_qhSc21.js.map} +1 -1
- package/dist/effect-sizes-DiH8MGOH.js +82 -0
- package/dist/effect-sizes-DiH8MGOH.js.map +1 -0
- package/dist/{engine-3hL-XqwJ.d.ts → engine-otFpE2gF.d.ts} +10 -38
- package/dist/engine-otFpE2gF.d.ts.map +1 -0
- package/dist/{errors-CKPfb2aH.d.ts → errors-DEE6u6ot.d.ts} +2 -14
- package/dist/{errors-CKPfb2aH.d.ts.map → errors-DEE6u6ot.d.ts.map} +1 -1
- package/dist/{errors-D-LKuDhb.js → errors-Dngq5h35.js} +2 -8
- package/dist/{errors-D-LKuDhb.js.map → errors-Dngq5h35.js.map} +1 -1
- package/dist/{eval-campaign-B_7wcnav.js → eval-campaign-UB-usSQ2.js} +6 -6
- package/dist/{eval-campaign-B_7wcnav.js.map → eval-campaign-UB-usSQ2.js.map} +1 -1
- package/dist/{exact-types-DSFFpLLI.d.ts → exact-types-BH1twmAJ.d.ts} +2 -2
- package/dist/{exact-types-DSFFpLLI.d.ts.map → exact-types-BH1twmAJ.d.ts.map} +1 -1
- package/dist/experiment/index.d.ts +9 -6
- package/dist/experiment/index.d.ts.map +1 -1
- package/dist/experiment/index.js +11 -7
- package/dist/experiment/index.js.map +1 -1
- package/dist/experiment-tracker-C29gXM4B.js +269 -0
- package/dist/experiment-tracker-C29gXM4B.js.map +1 -0
- package/dist/{experiment-tracker-IMntXr6J.d.ts → experiment-tracker-DWHZBAYL.d.ts} +77 -121
- package/dist/experiment-tracker-DWHZBAYL.d.ts.map +1 -0
- package/dist/{external-optimizer-contracts-CZuJNcT5.d.ts → external-optimizer-contracts-lixrOZdX.d.ts} +3 -3
- package/dist/{external-optimizer-contracts-CZuJNcT5.d.ts.map → external-optimizer-contracts-lixrOZdX.d.ts.map} +1 -1
- package/dist/external-optimizer-process-BTiNB-RH.js +301 -0
- package/dist/external-optimizer-process-BTiNB-RH.js.map +1 -0
- package/dist/{single-run-lock-DFWHEB09.js → external-optimizer-subprocess-DrJ9hR8u.js} +144 -438
- package/dist/external-optimizer-subprocess-DrJ9hR8u.js.map +1 -0
- package/dist/extract-usage-BrQ8mCLX.js +155 -0
- package/dist/extract-usage-BrQ8mCLX.js.map +1 -0
- package/dist/{failure-cluster-CqcvCcdR.d.ts → failure-cluster-BLURuWG4.d.ts} +2 -3
- package/dist/failure-cluster-BLURuWG4.d.ts.map +1 -0
- package/dist/{feedback-trajectory-CacHpxsp.d.ts → feedback-trajectory-juOozjAc.d.ts} +5 -36
- package/dist/feedback-trajectory-juOozjAc.d.ts.map +1 -0
- package/dist/fuzz.d.ts +2 -2
- package/dist/fuzz.js +2 -2
- package/dist/hosted/index.d.ts +3 -3
- package/dist/{index-CvSN3IG1.d.ts → index-B8Ui1mr1.d.ts} +2 -2
- package/dist/{index-CvSN3IG1.d.ts.map → index-B8Ui1mr1.d.ts.map} +1 -1
- package/dist/{skill-usage-CO9OLRBx.d.ts → index-BWDrSVfw.d.ts} +11 -136
- package/dist/index-BWDrSVfw.d.ts.map +1 -0
- package/dist/index-Ba3YrbAL.d.ts +1 -0
- package/dist/{index-BnEuDAK2.d.ts → index-COQYtuRF.d.ts} +3 -3
- package/dist/{index-BnEuDAK2.d.ts.map → index-COQYtuRF.d.ts.map} +1 -1
- package/dist/{index-C3ssXVLv.d.ts → index-CvjYbU0D.d.ts} +2 -2
- package/dist/{index-C3ssXVLv.d.ts.map → index-CvjYbU0D.d.ts.map} +1 -1
- package/dist/{index-DPPGNJ_R.d.ts → index-DSmEylT9.d.ts} +17 -115
- package/dist/index-DSmEylT9.d.ts.map +1 -0
- package/dist/index.d.ts +2397 -5308
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5914 -10496
- package/dist/index.js.map +1 -1
- package/dist/{insight-report-CgX_s0Ez.d.ts → insight-report-CRi-Ufrj.d.ts} +4 -4
- package/dist/{insight-report-CgX_s0Ez.d.ts.map → insight-report-CRi-Ufrj.d.ts.map} +1 -1
- package/dist/{integrity-MLzHOfV9.js → integrity-Cy9WHAtb.js} +2 -2
- package/dist/{integrity-MLzHOfV9.js.map → integrity-Cy9WHAtb.js.map} +1 -1
- package/dist/{integrity-DY6tIbl0.js → integrity-DysDBWDu.js} +2 -2
- package/dist/{integrity-DY6tIbl0.js.map → integrity-DysDBWDu.js.map} +1 -1
- package/dist/{integrity-BuqEKu-x.d.ts → integrity-OrcI9Nau.d.ts} +3 -3
- package/dist/{integrity-BuqEKu-x.d.ts.map → integrity-OrcI9Nau.d.ts.map} +1 -1
- package/dist/internal-BDHPCnjk.js +230 -0
- package/dist/internal-BDHPCnjk.js.map +1 -0
- package/dist/judge-calibration-C5CbMYce.d.ts +117 -0
- package/dist/judge-calibration-C5CbMYce.d.ts.map +1 -0
- package/dist/judge-calibration-DZkWrm5H.js +317 -0
- package/dist/judge-calibration-DZkWrm5H.js.map +1 -0
- package/dist/{kind-factory-B8-r8-y8.js → kind-factory-CPmSd58s.js} +208 -208
- package/dist/{kind-factory-B8-r8-y8.js.map → kind-factory-CPmSd58s.js.map} +1 -1
- package/dist/ledger-core/index.d.ts +1 -1
- package/dist/ledger-core/index.js +2 -2
- package/dist/{ledger-core-DXZIqu17.js → ledger-core-BmZt19oQ.js} +110 -110
- package/dist/{ledger-core-DXZIqu17.js.map → ledger-core-BmZt19oQ.js.map} +1 -1
- package/dist/{llm-client-DzvMUsS_.js → llm-client-d0-2TT1g.js} +4 -64
- package/dist/{llm-client-DzvMUsS_.js.map → llm-client-d0-2TT1g.js.map} +1 -1
- package/dist/{skillopt-optimization-method-CQdVeM8k.js → llm-judge-dZ8P6nGI.js} +3349 -5401
- package/dist/llm-judge-dZ8P6nGI.js.map +1 -0
- package/dist/matrix/index.d.ts +2 -2
- package/dist/meta-eval/index.d.ts +3 -3
- package/dist/meta-eval/index.js +3 -3
- package/dist/{metrics-C9YY1OcL.js → metrics-Cl0L1KUy.js} +2 -108
- package/dist/{metrics-C9YY1OcL.js.map → metrics-Cl0L1KUy.js.map} +1 -1
- package/dist/{mint-B2O60ACG.js → mint-Dj9Ww_3I.js} +4 -4
- package/dist/{mint-B2O60ACG.js.map → mint-Dj9Ww_3I.js.map} +1 -1
- package/dist/{multi-layer-verifier-DnAqwl0h.d.ts → multi-layer-verifier-DIguZc8Z.d.ts} +3 -3
- package/dist/{multi-layer-verifier-DnAqwl0h.d.ts.map → multi-layer-verifier-DIguZc8Z.d.ts.map} +1 -1
- package/dist/multiplicity-DIWHvysC.d.ts +43 -0
- package/dist/multiplicity-DIWHvysC.d.ts.map +1 -0
- package/dist/multishot/index.d.ts +3 -3
- package/dist/multishot/index.js +1 -1
- package/dist/openapi.json +1 -1
- package/dist/{opencode-sqlite-8r6WUfHc.js → opencode-sqlite-DJWAXLms.js} +2 -2
- package/dist/{opencode-sqlite-8r6WUfHc.js.map → opencode-sqlite-DJWAXLms.js.map} +1 -1
- package/dist/package-version-D7lQHt_-.js +34 -0
- package/dist/package-version-D7lQHt_-.js.map +1 -0
- package/dist/paired-arms-D-XRF_fy.js +1045 -0
- package/dist/paired-arms-D-XRF_fy.js.map +1 -0
- package/dist/paired-promotion-decision-CGzg0cI_.d.ts +251 -0
- package/dist/paired-promotion-decision-CGzg0cI_.d.ts.map +1 -0
- package/dist/paired-tests-BHIhYVdu.js +213 -0
- package/dist/paired-tests-BHIhYVdu.js.map +1 -0
- package/dist/pareto-BqNW3LJR.d.ts +117 -0
- package/dist/pareto-BqNW3LJR.d.ts.map +1 -0
- package/dist/pipelines/index.d.ts +3 -64
- package/dist/pipelines/index.d.ts.map +1 -1
- package/dist/pipelines/index.js +4 -284
- package/dist/pipelines/index.js.map +1 -1
- package/dist/power-and-mde-CHIrXJll.js +195 -0
- package/dist/power-and-mde-CHIrXJll.js.map +1 -0
- package/dist/{promotion-policy-CrLrmys8.js → power-preflight-DEw-uC7q.js} +4 -184
- package/dist/power-preflight-DEw-uC7q.js.map +1 -0
- package/dist/pre-registration-CZwSFQS4.d.ts +577 -0
- package/dist/pre-registration-CZwSFQS4.d.ts.map +1 -0
- package/dist/{prime-protocol-BfSalTfR.js → prime-protocol-6tZTVsWm.js} +72 -21
- package/dist/prime-protocol-6tZTVsWm.js.map +1 -0
- package/dist/produced-state-DU79a81m.js +586 -0
- package/dist/produced-state-DU79a81m.js.map +1 -0
- package/dist/profile-cell.d.ts +1 -1
- package/dist/profile-cell.js +1 -1
- package/dist/promotion-policy-D0nPhkSy.d.ts +134 -0
- package/dist/promotion-policy-D0nPhkSy.d.ts.map +1 -0
- package/dist/promotion-policy-xzA40Evo.js +186 -0
- package/dist/promotion-policy-xzA40Evo.js.map +1 -0
- package/dist/{skillopt-optimization-method-USDKhxSA.d.ts → provenance-CCdxgLDT.d.ts} +57 -478
- package/dist/provenance-CCdxgLDT.d.ts.map +1 -0
- package/dist/registry-oJeeI4-a.d.ts +178 -0
- package/dist/registry-oJeeI4-a.d.ts.map +1 -0
- package/dist/{release-report-DA2BCu5a.d.ts → release-confidence-BFRE5WSp.d.ts} +180 -112
- package/dist/release-confidence-BFRE5WSp.d.ts.map +1 -0
- package/dist/{release-report-BUYmoKo2.js → release-confidence-CxDuiAev.js} +125 -217
- package/dist/release-confidence-CxDuiAev.js.map +1 -0
- package/dist/reporting.d.ts +6 -5
- package/dist/reporting.js +7 -5
- package/dist/{researcher-BchpD55R.d.ts → researcher-DaN4GST-.d.ts} +7 -40
- package/dist/{researcher-BchpD55R.d.ts.map → researcher-DaN4GST-.d.ts.map} +1 -1
- package/dist/{reward-hacking-BDToousL.js → reward-hacking-DNgjilrV.js} +3 -3
- package/dist/reward-hacking-DNgjilrV.js.map +1 -0
- package/dist/{reward-hacking-BI0OMAlo.d.ts → reward-hacking-DSSTuI9r.d.ts} +5 -5
- package/dist/{reward-hacking-BI0OMAlo.d.ts.map → reward-hacking-DSSTuI9r.d.ts.map} +1 -1
- package/dist/rl.d.ts +7 -7
- package/dist/rl.js +11 -10
- package/dist/rl.js.map +1 -1
- package/dist/rollout/index.d.ts +2 -2
- package/dist/rollout/index.js +4 -4
- package/dist/{rollout-DRrksrcV.js → rollout-BWtw0I_6.js} +3 -3
- package/dist/{rollout-DRrksrcV.js.map → rollout-BWtw0I_6.js.map} +1 -1
- package/dist/{rubric-predictive-validity-DvkjPYCe.d.ts → rubric-predictive-validity-BgxtKe4G.d.ts} +2 -2
- package/dist/{rubric-predictive-validity-DvkjPYCe.d.ts.map → rubric-predictive-validity-BgxtKe4G.d.ts.map} +1 -1
- package/dist/{rubric-predictive-validity-BRR632r1.js → rubric-predictive-validity-Cwwyd7ah.js} +2 -2
- package/dist/{rubric-predictive-validity-BRR632r1.js.map → rubric-predictive-validity-Cwwyd7ah.js.map} +1 -1
- package/dist/{run-record-BmSPWXJR.js → run-record-BvHPVS-i.js} +3 -3
- package/dist/{run-record-BmSPWXJR.js.map → run-record-BvHPVS-i.js.map} +1 -1
- package/dist/{run-record-CF4Dwpxr.d.ts → run-record-CKiihE6f.d.ts} +4 -4
- package/dist/{run-record-CF4Dwpxr.d.ts.map → run-record-CKiihE6f.d.ts.map} +1 -1
- package/dist/{proposal-findings-2GIUo1et.js → run-score-lDzV0X8j.js} +31 -31
- package/dist/run-score-lDzV0X8j.js.map +1 -0
- package/dist/sandbox-harness-BlSOu4LX.d.ts +70 -0
- package/dist/sandbox-harness-BlSOu4LX.d.ts.map +1 -0
- package/dist/{schema-Cef2cFmb2.d.ts → schema-Cef2cFmb.d.ts} +1 -1
- package/dist/schema-Cef2cFmb.d.ts.map +1 -0
- package/dist/semantic-concept-judge-BiJxScqe.js +406 -0
- package/dist/semantic-concept-judge-BiJxScqe.js.map +1 -0
- package/dist/{sequential-D-BLJBKU.js → sequential-C458DXNf.js} +4 -3
- package/dist/{sequential-D-BLJBKU.js.map → sequential-C458DXNf.js.map} +1 -1
- package/dist/sequential-eprocess-CbUt2htw.js +83 -0
- package/dist/sequential-eprocess-CbUt2htw.js.map +1 -0
- package/dist/series-convergence-D1cL1f-4.d.ts +129 -0
- package/dist/series-convergence-D1cL1f-4.d.ts.map +1 -0
- package/dist/{server-iu0ede49.js → server-ulsOdrTI.js} +5 -21
- package/dist/server-ulsOdrTI.js.map +1 -0
- package/dist/skillopt-optimization-method-C5cotF4E.d.ts +427 -0
- package/dist/skillopt-optimization-method-C5cotF4E.d.ts.map +1 -0
- package/dist/skillopt-optimization-method-jjdnc3YK.js +1999 -0
- package/dist/skillopt-optimization-method-jjdnc3YK.js.map +1 -0
- package/dist/{statistical-heldout-TQ-4CYiN.d.ts → statistical-heldout-DoFF5KJX.d.ts} +5 -278
- package/dist/statistical-heldout-DoFF5KJX.d.ts.map +1 -0
- package/dist/{store-otlp-Dw8PPIlL.js → store-otlp-CsptLYpN.js} +3 -3
- package/dist/{store-otlp-Dw8PPIlL.js.map → store-otlp-CsptLYpN.js.map} +1 -1
- package/dist/store-tool-spans-Cq9mFd-q.js +667 -0
- package/dist/store-tool-spans-Cq9mFd-q.js.map +1 -0
- package/dist/store-tool-spans-DbDLOBOb.d.ts +342 -0
- package/dist/store-tool-spans-DbDLOBOb.d.ts.map +1 -0
- package/dist/student-t-CvBq2mve.js +38 -0
- package/dist/student-t-CvBq2mve.js.map +1 -0
- package/dist/{summary-report-Lf-5I7xh.js → summary-report-Blysd6Z2.js} +6 -3
- package/dist/{summary-report-Lf-5I7xh.js.map → summary-report-Blysd6Z2.js.map} +1 -1
- package/dist/{summary-report-BNR7DWTj.d.ts → summary-report-CaL-Hnxt.d.ts} +5 -5
- package/dist/{summary-report-BNR7DWTj.d.ts.map → summary-report-CaL-Hnxt.d.ts.map} +1 -1
- package/dist/supervisor-run/index.d.ts +391 -3
- package/dist/supervisor-run/index.d.ts.map +1 -0
- package/dist/supervisor-run/index.js +1689 -2
- package/dist/{supervisor-run-D_sokXcO.js.map → supervisor-run/index.js.map} +1 -1
- package/dist/{extract-usage-CdZdoj1s.js → task-failure-attributes-CpQ4y5RD.js} +5 -157
- package/dist/task-failure-attributes-CpQ4y5RD.js.map +1 -0
- package/dist/{tool-groups-CZPGGlHf.d.ts → tool-groups-Cteb03Ps.d.ts} +3 -3
- package/dist/tool-groups-Cteb03Ps.d.ts.map +1 -0
- package/dist/tool-waste-BDdBZG1F.js +803 -0
- package/dist/tool-waste-BDdBZG1F.js.map +1 -0
- package/dist/tool-waste-DjRDEsuI.d.ts +128 -0
- package/dist/tool-waste-DjRDEsuI.d.ts.map +1 -0
- package/dist/trace-repair/index.d.ts +14 -5
- package/dist/trace-repair/index.d.ts.map +1 -1
- package/dist/trace-repair/index.js +35 -7
- package/dist/trace-repair/index.js.map +1 -1
- package/dist/traces.d.ts +406 -7
- package/dist/traces.d.ts.map +1 -0
- package/dist/traces.js +1011 -10
- package/dist/traces.js.map +1 -0
- package/dist/trajectory-replay/index.d.ts +16 -3
- package/dist/trajectory-replay/index.d.ts.map +1 -1
- package/dist/trajectory-replay/index.js +52 -5
- package/dist/trajectory-replay/index.js.map +1 -1
- package/dist/types-BEPZc6eo.d.ts +93 -0
- package/dist/types-BEPZc6eo.d.ts.map +1 -0
- package/dist/{usage-receipt-t7vAzCRQ.js → types-BI4fT3HN.js} +67 -67
- package/dist/types-BI4fT3HN.js.map +1 -0
- package/dist/{types-BnjdJ70P.d.ts → types-BZ59Ahr8.d.ts} +5 -5
- package/dist/{types-BnjdJ70P.d.ts.map → types-BZ59Ahr8.d.ts.map} +1 -1
- package/dist/{types-D216SgwM.d.ts → types-Cx3YUh2r.d.ts} +4 -241
- package/dist/types-Cx3YUh2r.d.ts.map +1 -0
- package/dist/{types-BvDKaULh.d.ts → types-DLQx4mKU.d.ts} +4 -4
- package/dist/{types-BvDKaULh.d.ts.map → types-DLQx4mKU.d.ts.map} +1 -1
- package/dist/{types-D4mog56g.d.ts → types-yLK8gXE9.d.ts} +2 -2
- package/dist/{types-D4mog56g.d.ts.map → types-yLK8gXE9.d.ts.map} +1 -1
- package/dist/verdict-BndeTAh_.js +61 -0
- package/dist/verdict-BndeTAh_.js.map +1 -0
- package/dist/verdict-E4eRNf7-.d.ts +392 -0
- package/dist/verdict-E4eRNf7-.d.ts.map +1 -0
- package/dist/{verdict-cache-BCcOh0kF.js → verdict-cache-mZf5FEiY.js} +3 -55
- package/dist/{verdict-cache-BCcOh0kF.js.map → verdict-cache-mZf5FEiY.js.map} +1 -1
- package/dist/wire/index.d.ts +3 -3
- package/dist/wire/index.d.ts.map +1 -1
- package/dist/wire/index.js +1 -1
- package/docs/charter.md +3 -3
- package/docs/control-runtime.md +3 -42
- package/docs/experiment.md +0 -1
- package/docs/feature-guide.md +2 -2
- package/docs/trace-repair-grader.md +1 -0
- package/docs/trajectory-replay.md +1 -0
- package/docs/verdicts.md +43 -0
- package/docs/verification-strategies.md +3 -2
- package/package.json +6 -11
- package/dist/agent-profile-DPi7IZg7.d.ts.map +0 -1
- package/dist/analyze-runs-C30yljDJ.js.map +0 -1
- package/dist/baseline-CavEbRyH.d.ts +0 -136
- package/dist/baseline-CavEbRyH.d.ts.map +0 -1
- package/dist/benchmark-command-BteMFN62.js.map +0 -1
- package/dist/benchmarks-Dzs8CKb1.js +0 -755
- package/dist/benchmarks-Dzs8CKb1.js.map +0 -1
- package/dist/campaign-C2TTzQII.js.map +0 -1
- package/dist/completion-verifier-DJA5BhPb.d.ts +0 -414
- package/dist/completion-verifier-DJA5BhPb.d.ts.map +0 -1
- package/dist/control.d.ts +0 -3
- package/dist/control.js +0 -2
- package/dist/dataset-C8xaLXdY.d.ts.map +0 -1
- package/dist/default-registry-Bf8Woqmq.d.ts.map +0 -1
- package/dist/default-registry-BmktKy8r.js.map +0 -1
- package/dist/engine-3hL-XqwJ.d.ts.map +0 -1
- package/dist/experiment-tracker-CnRICnMl.js +0 -500
- package/dist/experiment-tracker-CnRICnMl.js.map +0 -1
- package/dist/experiment-tracker-IMntXr6J.d.ts.map +0 -1
- package/dist/extract-usage-CdZdoj1s.js.map +0 -1
- package/dist/failure-cluster-CqcvCcdR.d.ts.map +0 -1
- package/dist/feedback-trajectory-CacHpxsp.d.ts.map +0 -1
- package/dist/index-BZ3-y4YL.d.ts +0 -391
- package/dist/index-BZ3-y4YL.d.ts.map +0 -1
- package/dist/index-CQTZ-4XN.d.ts.map +0 -1
- package/dist/index-DPPGNJ_R.d.ts.map +0 -1
- package/dist/index-YE4KdKbO2.d.ts +0 -335
- package/dist/index-YE4KdKbO2.d.ts.map +0 -1
- package/dist/paired-arms-iZ08VFMN.js +0 -260
- package/dist/paired-arms-iZ08VFMN.js.map +0 -1
- package/dist/paired-promotion-decision-B6zJ3gYM.d.ts +0 -114
- package/dist/paired-promotion-decision-B6zJ3gYM.d.ts.map +0 -1
- package/dist/prime-protocol-BfSalTfR.js.map +0 -1
- package/dist/promotion-policy-Ckjhzg_4.d.ts +0 -289
- package/dist/promotion-policy-Ckjhzg_4.d.ts.map +0 -1
- package/dist/promotion-policy-CrLrmys8.js.map +0 -1
- package/dist/proposal-findings-2GIUo1et.js.map +0 -1
- package/dist/propose-review-control-dSNPjFUH.js +0 -1458
- package/dist/propose-review-control-dSNPjFUH.js.map +0 -1
- package/dist/release-report-BUYmoKo2.js.map +0 -1
- package/dist/release-report-DA2BCu5a.d.ts.map +0 -1
- package/dist/replay-CohS93nE.js +0 -1859
- package/dist/replay-CohS93nE.js.map +0 -1
- package/dist/replay-DbhZ4Ked.d.ts +0 -834
- package/dist/replay-DbhZ4Ked.d.ts.map +0 -1
- package/dist/reward-hacking-BDToousL.js.map +0 -1
- package/dist/run-evidence-Dhi3C81V.d.ts +0 -225
- package/dist/run-evidence-Dhi3C81V.d.ts.map +0 -1
- package/dist/schema-Cef2cFmb2.d.ts.map +0 -1
- package/dist/semantic-concept-judge-D1z-KepS.js +0 -767
- package/dist/semantic-concept-judge-D1z-KepS.js.map +0 -1
- package/dist/series-convergence-ofsqPWhs.d.ts +0 -35
- package/dist/series-convergence-ofsqPWhs.d.ts.map +0 -1
- package/dist/server-iu0ede49.js.map +0 -1
- package/dist/single-run-lock-DFWHEB09.js.map +0 -1
- package/dist/skill-usage-CO9OLRBx.d.ts.map +0 -1
- package/dist/skillopt-optimization-method-CQdVeM8k.js.map +0 -1
- package/dist/skillopt-optimization-method-USDKhxSA.d.ts.map +0 -1
- package/dist/statistical-heldout-TQ-4CYiN.d.ts.map +0 -1
- package/dist/statistics-ByxzSiOM.js +0 -2212
- package/dist/statistics-ByxzSiOM.js.map +0 -1
- package/dist/statistics-D6Uebe_4.d.ts +0 -968
- package/dist/statistics-D6Uebe_4.d.ts.map +0 -1
- package/dist/supervisor-run-D_sokXcO.js +0 -1690
- package/dist/test-graded-scenario-D1TaI2va.d.ts +0 -141
- package/dist/test-graded-scenario-D1TaI2va.d.ts.map +0 -1
- package/dist/test-graded-scenario-JHcKQNpq.js +0 -318
- package/dist/test-graded-scenario-JHcKQNpq.js.map +0 -1
- package/dist/tool-groups-CZPGGlHf.d.ts.map +0 -1
- package/dist/tool-use-metrics-DEGMKycK.js +0 -370
- package/dist/tool-use-metrics-DEGMKycK.js.map +0 -1
- package/dist/types-D216SgwM.d.ts.map +0 -1
- package/dist/usage-receipt-t7vAzCRQ.js.map +0 -1
- package/dist/verdict-DExhxfgR.d.ts +0 -201
- package/dist/verdict-DExhxfgR.d.ts.map +0 -1
package/dist/contract/index.js
CHANGED
|
@@ -1,550 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { i as
|
|
4
|
-
import {
|
|
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 {
|
|
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
|
|
19
|
-
import {
|
|
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 {
|