@tangle-network/agent-eval 0.128.2 → 0.130.0
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 +279 -0
- package/README.md +19 -0
- package/dist/active-curriculum-C4mk67HP.js +214 -0
- package/dist/active-curriculum-C4mk67HP.js.map +1 -0
- package/dist/adversarial-smnADNFS.d.ts +21 -0
- package/dist/adversarial-smnADNFS.d.ts.map +1 -0
- package/dist/analyst/index.d.ts +83 -2932
- package/dist/analyst/index.d.ts.map +1 -0
- package/dist/analyst/index.js +319 -364
- package/dist/analyst/index.js.map +1 -1
- package/dist/analyst-BkTS3C58.d.ts +89 -0
- package/dist/analyst-BkTS3C58.d.ts.map +1 -0
- package/dist/analyst-LsnNpSkm.js +152 -0
- package/dist/analyst-LsnNpSkm.js.map +1 -0
- package/dist/analyze-runs-C1CavBMk.js +1067 -0
- package/dist/analyze-runs-C1CavBMk.js.map +1 -0
- package/dist/analyze-runs-FsgYCinh.d.ts +72 -0
- package/dist/analyze-runs-FsgYCinh.d.ts.map +1 -0
- package/dist/attribute-vocabulary-DLJ6303h.d.ts +54 -0
- package/dist/attribute-vocabulary-DLJ6303h.d.ts.map +1 -0
- package/dist/authenticity/index.d.ts +81 -79
- package/dist/authenticity/index.d.ts.map +1 -0
- package/dist/authenticity/index.js +209 -193
- package/dist/authenticity/index.js.map +1 -1
- package/dist/baseline-HsBvw_dk.js +550 -0
- package/dist/baseline-HsBvw_dk.js.map +1 -0
- package/dist/baseline-hG3K85h4.d.ts +125 -0
- package/dist/baseline-hG3K85h4.d.ts.map +1 -0
- package/dist/belief-state/index.d.ts +448 -1205
- package/dist/belief-state/index.d.ts.map +1 -0
- package/dist/belief-state/index.js +1617 -1710
- package/dist/belief-state/index.js.map +1 -1
- package/dist/benchmarks/index.d.ts +2 -894
- package/dist/benchmarks/index.js +2 -59
- package/dist/benchmarks-DviOvUNr.js +754 -0
- package/dist/benchmarks-DviOvUNr.js.map +1 -0
- package/dist/builder-eval/index.d.ts +150 -662
- package/dist/builder-eval/index.d.ts.map +1 -0
- package/dist/builder-eval/index.js +356 -345
- package/dist/builder-eval/index.js.map +1 -1
- package/dist/calibration-CNWWA6K8.js +94 -0
- package/dist/calibration-CNWWA6K8.js.map +1 -0
- package/dist/campaign/index.d.ts +5 -6390
- package/dist/campaign/index.js +3 -212
- package/dist/campaign-CBKZvQ1H.js +3885 -0
- package/dist/campaign-CBKZvQ1H.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +164 -174
- package/dist/cli.js.map +1 -1
- package/dist/client-C97NMzqi.d.ts +581 -0
- package/dist/client-C97NMzqi.d.ts.map +1 -0
- package/dist/client-CYzbdJOZ.js +637 -0
- package/dist/client-CYzbdJOZ.js.map +1 -0
- package/dist/code-agent-session-BjkMTQ7H.js +1390 -0
- package/dist/code-agent-session-BjkMTQ7H.js.map +1 -0
- package/dist/code-agent-session-DqqgOJaz.d.ts +143 -0
- package/dist/code-agent-session-DqqgOJaz.d.ts.map +1 -0
- package/dist/concurrency-DIxRZF_J.js +85 -0
- package/dist/concurrency-DIxRZF_J.js.map +1 -0
- package/dist/contract/index.d.ts +645 -5605
- package/dist/contract/index.d.ts.map +1 -0
- package/dist/contract/index.js +1730 -1937
- package/dist/contract/index.js.map +1 -1
- package/dist/control.d.ts +3 -1030
- package/dist/control.js +2 -32
- package/dist/cost-ledger-DIgQUFZZ.js +801 -0
- package/dist/cost-ledger-DIgQUFZZ.js.map +1 -0
- package/dist/cost-ledger-Dye6jCgg.d.ts +236 -0
- package/dist/cost-ledger-Dye6jCgg.d.ts.map +1 -0
- package/dist/dataset-BvtnC8Dc.d.ts +115 -0
- package/dist/dataset-BvtnC8Dc.d.ts.map +1 -0
- package/dist/default-registry-C-vFCSEc.js +2579 -0
- package/dist/default-registry-C-vFCSEc.js.map +1 -0
- package/dist/default-registry-CNPo-Vsb.d.ts +540 -0
- package/dist/default-registry-CNPo-Vsb.d.ts.map +1 -0
- package/dist/emitter-CPBAhxum.js +266 -0
- package/dist/emitter-CPBAhxum.js.map +1 -0
- package/dist/emitter-DGQGoLyj.d.ts +113 -0
- package/dist/emitter-DGQGoLyj.d.ts.map +1 -0
- package/dist/errors-8YnH8WlF.js +64 -0
- package/dist/errors-8YnH8WlF.js.map +1 -0
- package/dist/errors-CEk209JS.d.ts +76 -0
- package/dist/errors-CEk209JS.d.ts.map +1 -0
- package/dist/eval-campaign-DEm6c8ru.js +349 -0
- package/dist/eval-campaign-DEm6c8ru.js.map +1 -0
- package/dist/execution-tracks-CpgFPpS5.js +93 -0
- package/dist/execution-tracks-CpgFPpS5.js.map +1 -0
- package/dist/exporters-q9iL-2Jf.js +148 -0
- package/dist/exporters-q9iL-2Jf.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 +59 -0
- package/dist/failure-cluster-CqcvCcdR.d.ts.map +1 -0
- package/dist/feedback-trajectory-CVaeREXV.d.ts +340 -0
- package/dist/feedback-trajectory-CVaeREXV.d.ts.map +1 -0
- package/dist/fuzz.d.ts +320 -646
- package/dist/fuzz.d.ts.map +1 -0
- package/dist/fuzz.js +670 -617
- package/dist/fuzz.js.map +1 -1
- package/dist/hf-dataset-DBJXXoY1.js +763 -0
- package/dist/hf-dataset-DBJXXoY1.js.map +1 -0
- package/dist/hosted/index.d.ts +11 -831
- package/dist/hosted/index.d.ts.map +1 -0
- package/dist/hosted/index.js +2 -37
- package/dist/index-2JJSA6-r2.d.ts +926 -0
- package/dist/index-2JJSA6-r2.d.ts.map +1 -0
- package/dist/index-6N0aYmpW.d.ts +217 -0
- package/dist/index-6N0aYmpW.d.ts.map +1 -0
- package/dist/index-BAvgST_9.d.ts +131 -0
- package/dist/index-BAvgST_9.d.ts.map +1 -0
- package/dist/index-BvnJuTGD.d.ts +68 -0
- package/dist/index-BvnJuTGD.d.ts.map +1 -0
- package/dist/index-C61Wi7yg.d.ts +547 -0
- package/dist/index-C61Wi7yg.d.ts.map +1 -0
- package/dist/index-CAPUUKaM.d.ts +335 -0
- package/dist/index-CAPUUKaM.d.ts.map +1 -0
- package/dist/index-DE5fb3EC.d.ts +2244 -0
- package/dist/index-DE5fb3EC.d.ts.map +1 -0
- package/dist/index-DSC51roc.d.ts +102 -0
- package/dist/index-DSC51roc.d.ts.map +1 -0
- package/dist/index.d.ts +3776 -15120
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11185 -11191
- package/dist/index.js.map +1 -1
- package/dist/integrity-BzRbCHzi.js +424 -0
- package/dist/integrity-BzRbCHzi.js.map +1 -0
- package/dist/integrity-rmVhXWA7.d.ts +61 -0
- package/dist/integrity-rmVhXWA7.d.ts.map +1 -0
- package/dist/judge-calibration-DFtEMlde.d.ts +146 -0
- package/dist/judge-calibration-DFtEMlde.d.ts.map +1 -0
- package/dist/ledger-core/index.d.ts +2 -0
- package/dist/ledger-core/index.js +2 -0
- package/dist/ledger-core-DtZz1RG0.js +388 -0
- package/dist/ledger-core-DtZz1RG0.js.map +1 -0
- package/dist/llm-client--GR4JbZE.js +687 -0
- package/dist/llm-client--GR4JbZE.js.map +1 -0
- package/dist/llm-client-B_nIBlYo.d.ts +290 -0
- package/dist/llm-client-B_nIBlYo.d.ts.map +1 -0
- package/dist/matrix/index.d.ts +3 -155
- package/dist/matrix/index.js +2 -8
- package/dist/matrix-BzQnu2S6.js +270 -0
- package/dist/matrix-BzQnu2S6.js.map +1 -0
- package/dist/meta-eval/index.d.ts +4 -1027
- package/dist/meta-eval/index.js +393 -390
- package/dist/meta-eval/index.js.map +1 -1
- package/dist/metrics-C9YY1OcL.js +239 -0
- package/dist/metrics-C9YY1OcL.js.map +1 -0
- package/dist/mint-yN2M2eh0.js +201 -0
- package/dist/mint-yN2M2eh0.js.map +1 -0
- package/dist/multi-layer-verifier-BHY1gWAc.d.ts +138 -0
- package/dist/multi-layer-verifier-BHY1gWAc.d.ts.map +1 -0
- package/dist/multishot/index.d.ts +273 -481
- package/dist/multishot/index.d.ts.map +1 -0
- package/dist/multishot/index.js +595 -548
- package/dist/multishot/index.js.map +1 -1
- package/dist/off-policy-DvgzvtIx.js +220 -0
- package/dist/off-policy-DvgzvtIx.js.map +1 -0
- package/dist/off-policy-mskQw8Mb.d.ts +153 -0
- package/dist/off-policy-mskQw8Mb.d.ts.map +1 -0
- package/dist/openapi.json +1 -1
- package/dist/opencode-sqlite-BGrHeDu3.js +318 -0
- package/dist/opencode-sqlite-BGrHeDu3.js.map +1 -0
- package/dist/outcome-store-BYHIuO0e.d.ts +65 -0
- package/dist/outcome-store-BYHIuO0e.d.ts.map +1 -0
- package/dist/outcome-store-ChBKlTd_.js +75 -0
- package/dist/outcome-store-ChBKlTd_.js.map +1 -0
- package/dist/paired-arms-D9D0wXj2.js +260 -0
- package/dist/paired-arms-D9D0wXj2.js.map +1 -0
- package/dist/pipelines/index.d.ts +95 -532
- package/dist/pipelines/index.d.ts.map +1 -0
- package/dist/pipelines/index.js +497 -478
- package/dist/pipelines/index.js.map +1 -1
- package/dist/pre-registration-DakwTRXk.js +96 -0
- package/dist/pre-registration-DakwTRXk.js.map +1 -0
- package/dist/propose-review-control-LhIWGzHl.js +1458 -0
- package/dist/propose-review-control-LhIWGzHl.js.map +1 -0
- package/dist/query-CJ_DX8vl.d.ts +28 -0
- package/dist/query-CJ_DX8vl.d.ts.map +1 -0
- package/dist/query-Di7eEQ79.js +83 -0
- package/dist/query-Di7eEQ79.js.map +1 -0
- package/dist/raw-provider-sink-BQd7mzyT.js +201 -0
- package/dist/raw-provider-sink-BQd7mzyT.js.map +1 -0
- package/dist/raw-provider-sink-BU29Sh8h.d.ts +134 -0
- package/dist/raw-provider-sink-BU29Sh8h.d.ts.map +1 -0
- package/dist/redact-7Aq1ukl-.js +107 -0
- package/dist/redact-7Aq1ukl-.js.map +1 -0
- package/dist/release-report-Cz9NKH39.js +603 -0
- package/dist/release-report-Cz9NKH39.js.map +1 -0
- package/dist/release-report-mvB2G4_J.d.ts +244 -0
- package/dist/release-report-mvB2G4_J.d.ts.map +1 -0
- package/dist/replay-GnyotH0J.js +1741 -0
- package/dist/replay-GnyotH0J.js.map +1 -0
- package/dist/replay-OoidtG1E.d.ts +749 -0
- package/dist/replay-OoidtG1E.d.ts.map +1 -0
- package/dist/reporting.d.ts +6 -1298
- package/dist/reporting.js +6 -50
- package/dist/researcher-CwTdwXG1.d.ts +314 -0
- package/dist/researcher-CwTdwXG1.d.ts.map +1 -0
- package/dist/reward-hacking-eAnOsynk.d.ts +224 -0
- package/dist/reward-hacking-eAnOsynk.d.ts.map +1 -0
- package/dist/reward-hacking-qipEpKvY.js +596 -0
- package/dist/reward-hacking-qipEpKvY.js.map +1 -0
- package/dist/reward-nw2xZGZG.js +137 -0
- package/dist/reward-nw2xZGZG.js.map +1 -0
- package/dist/rl.d.ts +916 -3596
- package/dist/rl.d.ts.map +1 -0
- package/dist/rl.js +2362 -1751
- package/dist/rl.js.map +1 -1
- package/dist/rolldown-runtime-8H4AJuhK.js +14 -0
- package/dist/rollout/index.d.ts +3 -1048
- package/dist/rollout/index.js +8 -110
- package/dist/rollout-BOYjemfR.js +624 -0
- package/dist/rollout-BOYjemfR.js.map +1 -0
- package/dist/rubric-predictive-validity-B3xmbmS1.js +141 -0
- package/dist/rubric-predictive-validity-B3xmbmS1.js.map +1 -0
- package/dist/rubric-predictive-validity-Ku_clp_1.d.ts +74 -0
- package/dist/rubric-predictive-validity-Ku_clp_1.d.ts.map +1 -0
- package/dist/run-evidence-ClRX_8A9.d.ts +225 -0
- package/dist/run-evidence-ClRX_8A9.d.ts.map +1 -0
- package/dist/run-record-BuoE80Dq.js +467 -0
- package/dist/run-record-BuoE80Dq.js.map +1 -0
- package/dist/run-record-CnZu_gjl.d.ts +357 -0
- package/dist/run-record-CnZu_gjl.d.ts.map +1 -0
- package/dist/run-score-iEEAWiBY.js +41 -0
- package/dist/run-score-iEEAWiBY.js.map +1 -0
- package/dist/runtime-trajectory-1gyaTOoC.js +93 -0
- package/dist/runtime-trajectory-1gyaTOoC.js.map +1 -0
- package/dist/runtime-trajectory-BvSZcCHD.d.ts +50 -0
- package/dist/runtime-trajectory-BvSZcCHD.d.ts.map +1 -0
- package/dist/schema-BtVldJ3T.d.ts +206 -0
- package/dist/schema-BtVldJ3T.d.ts.map +1 -0
- package/dist/schema-C6DW4ZHR.js +821 -0
- package/dist/schema-C6DW4ZHR.js.map +1 -0
- package/dist/schema-CRhEY1SO.js +69 -0
- package/dist/schema-CRhEY1SO.js.map +1 -0
- package/dist/schema-Cef2cFmb.d.ts +408 -0
- package/dist/schema-Cef2cFmb.d.ts.map +1 -0
- package/dist/semantic-concept-judge-B6cWNJ2K.js +725 -0
- package/dist/semantic-concept-judge-B6cWNJ2K.js.map +1 -0
- package/dist/sequential-Br0mAPHA.js +148 -0
- package/dist/sequential-Br0mAPHA.js.map +1 -0
- package/dist/sequential-CYwq6Ff_.d.ts +141 -0
- package/dist/sequential-CYwq6Ff_.d.ts.map +1 -0
- package/dist/series-convergence-CjO2QdRW.js +43 -0
- package/dist/series-convergence-CjO2QdRW.js.map +1 -0
- package/dist/series-convergence-ofsqPWhs.d.ts +35 -0
- package/dist/series-convergence-ofsqPWhs.d.ts.map +1 -0
- package/dist/server-m5D9cvnG.js +1040 -0
- package/dist/server-m5D9cvnG.js.map +1 -0
- package/dist/skill-usage-C_pXm7lP.d.ts +534 -0
- package/dist/skill-usage-C_pXm7lP.d.ts.map +1 -0
- package/dist/skillopt-optimization-method-B7wX7XkF.d.ts +1739 -0
- package/dist/skillopt-optimization-method-B7wX7XkF.d.ts.map +1 -0
- package/dist/skillopt-optimization-method-D4ODwFVV.js +7712 -0
- package/dist/skillopt-optimization-method-D4ODwFVV.js.map +1 -0
- package/dist/statistics-Cmj6nynr.d.ts +514 -0
- package/dist/statistics-Cmj6nynr.d.ts.map +1 -0
- package/dist/statistics-CnnxdpOg.js +1437 -0
- package/dist/statistics-CnnxdpOg.js.map +1 -0
- package/dist/store-CT9YIIve.d.ts +117 -0
- package/dist/store-CT9YIIve.d.ts.map +1 -0
- package/dist/store-CxJry_cs.d.ts +229 -0
- package/dist/store-CxJry_cs.d.ts.map +1 -0
- package/dist/storyboard/index.d.ts +84 -203
- package/dist/storyboard/index.d.ts.map +1 -0
- package/dist/storyboard/index.js +609 -542
- package/dist/storyboard/index.js.map +1 -1
- package/dist/summary-report-BNs5nmXI.js +862 -0
- package/dist/summary-report-BNs5nmXI.js.map +1 -0
- package/dist/summary-report-Cj9gdw4i.d.ts +407 -0
- package/dist/summary-report-Cj9gdw4i.d.ts.map +1 -0
- package/dist/supervisor-run/index.d.ts +2 -849
- package/dist/supervisor-run/index.js +2 -64
- package/dist/supervisor-run-_lnTLM3z.js +1679 -0
- package/dist/supervisor-run-_lnTLM3z.js.map +1 -0
- package/dist/task-failure-attributes-CQZlB3et.js +311 -0
- package/dist/task-failure-attributes-CQZlB3et.js.map +1 -0
- package/dist/test-graded-scenario-BsqWLmPt.js +318 -0
- package/dist/test-graded-scenario-BsqWLmPt.js.map +1 -0
- package/dist/test-graded-scenario-D1TaI2va.d.ts +141 -0
- package/dist/test-graded-scenario-D1TaI2va.d.ts.map +1 -0
- package/dist/tools-BmuN627J.js +1085 -0
- package/dist/tools-BmuN627J.js.map +1 -0
- package/dist/trace-attributes.d.ts +2 -52
- package/dist/trace-attributes.js +131 -61
- package/dist/trace-attributes.js.map +1 -1
- package/dist/traces.d.ts +12 -2365
- package/dist/traces.js +12 -251
- package/dist/trajectory-D_7rLrvE.js +56 -0
- package/dist/trajectory-D_7rLrvE.js.map +1 -0
- package/dist/types-DGsxbAEd.d.ts +387 -0
- package/dist/types-DGsxbAEd.d.ts.map +1 -0
- package/dist/types-k9tZGKUg.d.ts +640 -0
- package/dist/types-k9tZGKUg.d.ts.map +1 -0
- package/dist/verdict-Dps8_okt.d.ts +37 -0
- package/dist/verdict-Dps8_okt.d.ts.map +1 -0
- package/dist/wire/index.d.ts +702 -1174
- package/dist/wire/index.d.ts.map +1 -0
- package/dist/wire/index.js +2 -81
- package/docs/feature-guide.md +1 -1
- package/docs/rollout.md +116 -2
- package/package.json +18 -10
- package/dist/benchmarks/index.js.map +0 -1
- package/dist/campaign/index.js.map +0 -1
- package/dist/chunk-2JX3CFMB.js +0 -695
- package/dist/chunk-2JX3CFMB.js.map +0 -1
- package/dist/chunk-2MKQIFS4.js +0 -183
- package/dist/chunk-2MKQIFS4.js.map +0 -1
- package/dist/chunk-3RF76KTD.js +0 -84
- package/dist/chunk-3RF76KTD.js.map +0 -1
- package/dist/chunk-5DTSBUL2.js +0 -159
- package/dist/chunk-5DTSBUL2.js.map +0 -1
- package/dist/chunk-7ZZMD7UK.js +0 -386
- package/dist/chunk-7ZZMD7UK.js.map +0 -1
- package/dist/chunk-BOD4O7OF.js +0 -40
- package/dist/chunk-BOD4O7OF.js.map +0 -1
- package/dist/chunk-BYT7ELPS.js +0 -1553
- package/dist/chunk-BYT7ELPS.js.map +0 -1
- package/dist/chunk-DJKY2TSY.js +0 -2428
- package/dist/chunk-DJKY2TSY.js.map +0 -1
- package/dist/chunk-DPUHNQLN.js +0 -232
- package/dist/chunk-DPUHNQLN.js.map +0 -1
- package/dist/chunk-DRYIUNWY.js +0 -622
- package/dist/chunk-DRYIUNWY.js.map +0 -1
- package/dist/chunk-EJGRPCO3.js +0 -617
- package/dist/chunk-EJGRPCO3.js.map +0 -1
- package/dist/chunk-EOSZT7PL.js +0 -2001
- package/dist/chunk-EOSZT7PL.js.map +0 -1
- package/dist/chunk-EZJEIH2R.js +0 -1559
- package/dist/chunk-EZJEIH2R.js.map +0 -1
- package/dist/chunk-GGE4NNQT.js +0 -65
- package/dist/chunk-GGE4NNQT.js.map +0 -1
- package/dist/chunk-HHWE3POT.js +0 -94
- package/dist/chunk-HHWE3POT.js.map +0 -1
- package/dist/chunk-IHQDPH7D.js +0 -171
- package/dist/chunk-IHQDPH7D.js.map +0 -1
- package/dist/chunk-JHCHEVET.js +0 -274
- package/dist/chunk-JHCHEVET.js.map +0 -1
- package/dist/chunk-K4DBDHLK.js +0 -158
- package/dist/chunk-K4DBDHLK.js.map +0 -1
- package/dist/chunk-K6N6XJJX.js +0 -306
- package/dist/chunk-K6N6XJJX.js.map +0 -1
- package/dist/chunk-MA6HLL3S.js +0 -65
- package/dist/chunk-MA6HLL3S.js.map +0 -1
- package/dist/chunk-MAZ26DC7.js +0 -99
- package/dist/chunk-MAZ26DC7.js.map +0 -1
- package/dist/chunk-MHELPNRP.js +0 -1212
- package/dist/chunk-MHELPNRP.js.map +0 -1
- package/dist/chunk-NACAGYSY.js +0 -1040
- package/dist/chunk-NACAGYSY.js.map +0 -1
- package/dist/chunk-NKAGIDE2.js +0 -7633
- package/dist/chunk-NKAGIDE2.js.map +0 -1
- package/dist/chunk-NPCTHQIO.js +0 -91
- package/dist/chunk-NPCTHQIO.js.map +0 -1
- package/dist/chunk-NYLOYM6N.js +0 -332
- package/dist/chunk-NYLOYM6N.js.map +0 -1
- package/dist/chunk-ONWEPEDO.js +0 -57
- package/dist/chunk-ONWEPEDO.js.map +0 -1
- package/dist/chunk-P5W7RQKK.js +0 -576
- package/dist/chunk-P5W7RQKK.js.map +0 -1
- package/dist/chunk-P6FYH6K4.js +0 -1161
- package/dist/chunk-P6FYH6K4.js.map +0 -1
- package/dist/chunk-PBE2LOSS.js +0 -669
- package/dist/chunk-PBE2LOSS.js.map +0 -1
- package/dist/chunk-PC4UYEBM.js +0 -166
- package/dist/chunk-PC4UYEBM.js.map +0 -1
- package/dist/chunk-PXE2VKMX.js +0 -140
- package/dist/chunk-PXE2VKMX.js.map +0 -1
- package/dist/chunk-PZ5AY32C.js +0 -10
- package/dist/chunk-PZ5AY32C.js.map +0 -1
- package/dist/chunk-RZTMDUO7.js +0 -49
- package/dist/chunk-RZTMDUO7.js.map +0 -1
- package/dist/chunk-S5YLIBFX.js +0 -136
- package/dist/chunk-S5YLIBFX.js.map +0 -1
- package/dist/chunk-SZLVEKMJ.js +0 -1446
- package/dist/chunk-SZLVEKMJ.js.map +0 -1
- package/dist/chunk-T4SQEITX.js +0 -95
- package/dist/chunk-T4SQEITX.js.map +0 -1
- package/dist/chunk-TBL77AUT.js +0 -355
- package/dist/chunk-TBL77AUT.js.map +0 -1
- package/dist/chunk-TSN7JT6D.js +0 -1646
- package/dist/chunk-TSN7JT6D.js.map +0 -1
- package/dist/chunk-TT4KNT67.js +0 -124
- package/dist/chunk-TT4KNT67.js.map +0 -1
- package/dist/chunk-UB2LOJ6Q.js +0 -4461
- package/dist/chunk-UB2LOJ6Q.js.map +0 -1
- package/dist/chunk-UWZZKKU7.js +0 -237
- package/dist/chunk-UWZZKKU7.js.map +0 -1
- package/dist/chunk-VBQ3CRKH.js +0 -291
- package/dist/chunk-VBQ3CRKH.js.map +0 -1
- package/dist/chunk-VGRCHJON.js +0 -163
- package/dist/chunk-VGRCHJON.js.map +0 -1
- package/dist/chunk-VI2UW6B6.js +0 -162
- package/dist/chunk-VI2UW6B6.js.map +0 -1
- package/dist/chunk-VLOATJQ2.js +0 -908
- package/dist/chunk-VLOATJQ2.js.map +0 -1
- package/dist/chunk-VQMK5FMP.js +0 -247
- package/dist/chunk-VQMK5FMP.js.map +0 -1
- package/dist/chunk-VZSRQ272.js +0 -149
- package/dist/chunk-VZSRQ272.js.map +0 -1
- package/dist/chunk-WGXIEX7P.js +0 -116
- package/dist/chunk-WGXIEX7P.js.map +0 -1
- package/dist/chunk-WS3NZZQQ.js +0 -929
- package/dist/chunk-WS3NZZQQ.js.map +0 -1
- package/dist/chunk-XDWDC2MP.js +0 -695
- package/dist/chunk-XDWDC2MP.js.map +0 -1
- package/dist/chunk-XPRT64IE.js +0 -766
- package/dist/chunk-XPRT64IE.js.map +0 -1
- package/dist/chunk-YJBNWCAA.js +0 -1056
- package/dist/chunk-YJBNWCAA.js.map +0 -1
- package/dist/chunk-ZET2UAYW.js +0 -89
- package/dist/chunk-ZET2UAYW.js.map +0 -1
- package/dist/chunk-ZUUWPZCV.js +0 -752
- package/dist/chunk-ZUUWPZCV.js.map +0 -1
- package/dist/control.js.map +0 -1
- package/dist/hosted/index.js.map +0 -1
- package/dist/matrix/index.js.map +0 -1
- package/dist/reporting.js.map +0 -1
- package/dist/rollout/index.js.map +0 -1
- package/dist/run-campaign-ISHFZ7FJ.js +0 -17
- package/dist/run-campaign-ISHFZ7FJ.js.map +0 -1
- package/dist/supervisor-run/index.js.map +0 -1
- package/dist/traces.js.map +0 -1
- package/dist/wire/index.js.map +0 -1
package/dist/chunk-IHQDPH7D.js
DELETED
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ROLLOUT_SCHEMA
|
|
3
|
-
} from "./chunk-UWZZKKU7.js";
|
|
4
|
-
import {
|
|
5
|
-
buildTrajectory
|
|
6
|
-
} from "./chunk-RZTMDUO7.js";
|
|
7
|
-
import {
|
|
8
|
-
runTaskScore
|
|
9
|
-
} from "./chunk-2JX3CFMB.js";
|
|
10
|
-
import {
|
|
11
|
-
ValidationError
|
|
12
|
-
} from "./chunk-ONWEPEDO.js";
|
|
13
|
-
|
|
14
|
-
// src/rollout/mint.ts
|
|
15
|
-
var asText = (v, scrub) => {
|
|
16
|
-
const s = typeof v === "string" ? v : JSON.stringify(v);
|
|
17
|
-
return scrub(s ?? "");
|
|
18
|
-
};
|
|
19
|
-
function projectStep(span, scrub) {
|
|
20
|
-
const base = {
|
|
21
|
-
kind: span.kind,
|
|
22
|
-
name: scrub(span.name),
|
|
23
|
-
status: span.status,
|
|
24
|
-
durationMs: span.endedAt !== void 0 ? span.endedAt - span.startedAt : void 0
|
|
25
|
-
};
|
|
26
|
-
if (span.kind === "llm") {
|
|
27
|
-
const llm = span;
|
|
28
|
-
const last = llm.messages[llm.messages.length - 1];
|
|
29
|
-
if (last) base.input = scrub(last.content);
|
|
30
|
-
if (llm.output !== void 0) base.output = scrub(llm.output);
|
|
31
|
-
} else if (span.kind === "tool") {
|
|
32
|
-
const tool = span;
|
|
33
|
-
base.input = asText(tool.args, scrub);
|
|
34
|
-
if (tool.result !== void 0) base.output = asText(tool.result, scrub);
|
|
35
|
-
}
|
|
36
|
-
return base;
|
|
37
|
-
}
|
|
38
|
-
function finalConversation(spans, scrub) {
|
|
39
|
-
const llms = spans.filter((s) => s.kind === "llm");
|
|
40
|
-
const last = llms[llms.length - 1];
|
|
41
|
-
if (!last) return [];
|
|
42
|
-
const messages = last.messages.map((m) => ({
|
|
43
|
-
role: m.role,
|
|
44
|
-
content: scrub(m.content)
|
|
45
|
-
}));
|
|
46
|
-
if (last.output !== void 0 && last.output !== "") {
|
|
47
|
-
messages.push({ role: "assistant", content: scrub(last.output) });
|
|
48
|
-
}
|
|
49
|
-
return messages;
|
|
50
|
-
}
|
|
51
|
-
function scoredReward(record) {
|
|
52
|
-
const score = runTaskScore(record);
|
|
53
|
-
if (score === void 0) {
|
|
54
|
-
throw new ValidationError(`Cannot mint rollout for run ${record.runId}: task score is missing`);
|
|
55
|
-
}
|
|
56
|
-
const gated = record.outcome.realness?.gated === true;
|
|
57
|
-
return {
|
|
58
|
-
reward: gated ? 0 : score,
|
|
59
|
-
gated,
|
|
60
|
-
source: record.outcome.holdoutScore !== void 0 ? "run-record/holdout-score" : "run-record/search-score"
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
function rolloutReward(record) {
|
|
64
|
-
const { reward, gated } = scoredReward(record);
|
|
65
|
-
return { reward, gated };
|
|
66
|
-
}
|
|
67
|
-
var SPLIT_FROM_TAG = {
|
|
68
|
-
search: "search",
|
|
69
|
-
dev: "dev",
|
|
70
|
-
holdout: "holdout"
|
|
71
|
-
};
|
|
72
|
-
function mintLine(record, steps, messages, options, capturedAt, gap) {
|
|
73
|
-
const { reward, gated, source } = scoredReward(record);
|
|
74
|
-
const uncaptured = record.costProvenance.kind === "uncaptured";
|
|
75
|
-
const terminalOutcome = record.terminalOutcome;
|
|
76
|
-
const isCompleted = terminalOutcome === "succeeded" || terminalOutcome === "failed";
|
|
77
|
-
const isTruncated = terminalOutcome === "cancelled" || terminalOutcome === "incomplete";
|
|
78
|
-
const terminalError = terminalOutcome === "failed" || terminalOutcome === "cancelled" || terminalOutcome === "incomplete" ? record.terminalFailureReason ?? `run ended ${terminalOutcome}` : null;
|
|
79
|
-
return {
|
|
80
|
-
schema: ROLLOUT_SCHEMA,
|
|
81
|
-
rollout_id: record.runId,
|
|
82
|
-
parent_rollout_id: null,
|
|
83
|
-
run_id: record.runId,
|
|
84
|
-
experiment_id: record.experimentId,
|
|
85
|
-
candidate_id: record.candidateId,
|
|
86
|
-
generation: null,
|
|
87
|
-
candidate_index: null,
|
|
88
|
-
role: options.role ?? "agent",
|
|
89
|
-
task: {
|
|
90
|
-
suite: options.suite ?? record.experimentId,
|
|
91
|
-
instance_id: record.scenarioId,
|
|
92
|
-
split: SPLIT_FROM_TAG[record.splitTag],
|
|
93
|
-
seed: record.seed,
|
|
94
|
-
rep: 0
|
|
95
|
-
},
|
|
96
|
-
policy: {
|
|
97
|
-
harness: null,
|
|
98
|
-
harness_version: null,
|
|
99
|
-
model: record.model,
|
|
100
|
-
provider: null,
|
|
101
|
-
profile_commit: record.commitSha,
|
|
102
|
-
prompt_hash: record.promptHash,
|
|
103
|
-
config_hash: record.configHash,
|
|
104
|
-
agent_profile_cell_id: record.agentProfile?.cellId ?? null,
|
|
105
|
-
sampling: null
|
|
106
|
-
},
|
|
107
|
-
messages,
|
|
108
|
-
tool_defs: [],
|
|
109
|
-
...steps.length > 0 ? { steps } : {},
|
|
110
|
-
outcome: {
|
|
111
|
-
reward,
|
|
112
|
-
reward_source: source,
|
|
113
|
-
verdict: null,
|
|
114
|
-
metrics: { ...record.outcome.raw },
|
|
115
|
-
is_completed: isCompleted,
|
|
116
|
-
is_truncated: isTruncated,
|
|
117
|
-
error: terminalError,
|
|
118
|
-
realness_gated: gated
|
|
119
|
-
},
|
|
120
|
-
cost: {
|
|
121
|
-
usd: uncaptured ? null : record.costUsd,
|
|
122
|
-
tokens_in: record.tokenUsage.input,
|
|
123
|
-
tokens_out: record.tokenUsage.output,
|
|
124
|
-
tokens_reasoning: record.tokenUsage.reasoning ?? null,
|
|
125
|
-
cache_read: record.tokenUsage.cached ?? null,
|
|
126
|
-
cache_write: record.tokenUsage.cacheWrite ?? null,
|
|
127
|
-
wall_s: Math.round(record.wallMs / 1e3)
|
|
128
|
-
},
|
|
129
|
-
artifacts: { patch_path: null, run_dir: null, transcript_ref: null },
|
|
130
|
-
provenance: {
|
|
131
|
-
captured_at: capturedAt,
|
|
132
|
-
capture: "mint",
|
|
133
|
-
...gap !== void 0 ? { gap } : {}
|
|
134
|
-
}
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
async function mintRolloutRows(records, store, options = {}) {
|
|
138
|
-
const scrub = options.scrub ?? ((t) => t);
|
|
139
|
-
const capturedAt = (options.now?.() ?? /* @__PURE__ */ new Date()).toISOString();
|
|
140
|
-
const rows = [];
|
|
141
|
-
const missingTraces = [];
|
|
142
|
-
for (const record of records) {
|
|
143
|
-
const trajectory = await buildTrajectory(store, record.runId);
|
|
144
|
-
if (trajectory.steps.length === 0) {
|
|
145
|
-
missingTraces.push(record.runId);
|
|
146
|
-
rows.push(
|
|
147
|
-
mintLine(record, [], [], options, capturedAt, "no trace spans recorded for this runId")
|
|
148
|
-
);
|
|
149
|
-
continue;
|
|
150
|
-
}
|
|
151
|
-
let steps = trajectory.steps.map((s) => projectStep(s.span, scrub));
|
|
152
|
-
if (options.maxSteps !== void 0 && steps.length > options.maxSteps) {
|
|
153
|
-
const head = Math.ceil(options.maxSteps / 2);
|
|
154
|
-
const tail = options.maxSteps - head;
|
|
155
|
-
steps = [...steps.slice(0, head), ...steps.slice(steps.length - tail)];
|
|
156
|
-
}
|
|
157
|
-
const conversation = finalConversation(
|
|
158
|
-
trajectory.steps.map((s) => s.span),
|
|
159
|
-
scrub
|
|
160
|
-
);
|
|
161
|
-
const gap = conversation.length === 0 ? "trace has no llm spans \u2014 no conversation to inline" : void 0;
|
|
162
|
-
rows.push(mintLine(record, steps, conversation, options, capturedAt, gap));
|
|
163
|
-
}
|
|
164
|
-
return { rows, missingTraces };
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
export {
|
|
168
|
-
rolloutReward,
|
|
169
|
-
mintRolloutRows
|
|
170
|
-
};
|
|
171
|
-
//# sourceMappingURL=chunk-IHQDPH7D.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/rollout/mint.ts"],"sourcesContent":["/**\n * Rollout minting — `tangle.rollout.v1` lines joined from the records the\n * substrate ALREADY keeps. There is no separate rollout store: a rollout\n * is the JOIN of a RunRecord (identity, provenance, cost, outcome) with\n * its trace (spans share `runId`), projected into the canonical line.\n *\n * Composition, not duplication:\n * - identity/provenance → `RunRecord` (candidateId, splitTag, agentProfile, hashes)\n * - step structure → `buildTrajectory` over the shared TraceStore\n * - preference-pair export → `feedbackTrajectoryToOptimizerRow` (feedback-trajectory.ts)\n * - PRM / reward-model → `reward-model-export.ts`\n *\n * Anti-Goodhart invariant: a run whose `outcome.realness.gated` is true\n * is never exported with a positive reward — the gate travels into the\n * training data (`reward` forced to 0, `realness_gated: true`), so a\n * fine-tune cannot learn from gamed successes.\n *\n * Records without spans become labeled GAP LINES (messages: [],\n * provenance.gap) — present in the output AND surfaced in\n * `missingTraces`; a capture gap is a finding, never a silent omission.\n */\n\nimport { ValidationError } from '../errors'\nimport { type RunRecord, runTaskScore } from '../run-record'\nimport type { LlmSpan, Message, Span, ToolSpan } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\nimport { buildTrajectory } from '../trajectory'\nimport {\n type ChatMessage,\n ROLLOUT_SCHEMA,\n type RolloutLine,\n type RolloutRole,\n type RolloutSplit,\n type RolloutStep,\n} from './schema'\n\n/** Redactor applied to every exported string (secrets, PII). Identity by default. */\nexport type RolloutScrubber = (text: string) => string\n\nexport interface MintRolloutOptions {\n scrub?: RolloutScrubber\n /** Cap steps per line (longest runs first drop middle steps). Default: no cap. */\n maxSteps?: number\n /** Role recorded on every minted line. Default 'agent' (a solo eval run). */\n role?: RolloutRole\n /** Task suite label. Default: the record's `experimentId`. */\n suite?: string\n /** Injected clock for deterministic output. */\n now?: () => Date\n}\n\nexport interface MintRolloutResult {\n rows: RolloutLine[]\n /** runIds that had a RunRecord but no spans — emitted as gap lines AND listed here. */\n missingTraces: string[]\n}\n\nconst asText = (v: unknown, scrub: RolloutScrubber): string => {\n const s = typeof v === 'string' ? v : JSON.stringify(v)\n return scrub(s ?? '')\n}\n\nfunction projectStep(span: Span, scrub: RolloutScrubber): RolloutStep {\n const base: RolloutStep = {\n kind: span.kind,\n name: scrub(span.name),\n status: span.status,\n durationMs: span.endedAt !== undefined ? span.endedAt - span.startedAt : undefined,\n }\n if (span.kind === 'llm') {\n const llm = span as LlmSpan\n const last = llm.messages[llm.messages.length - 1]\n if (last) base.input = scrub(last.content)\n if (llm.output !== undefined) base.output = scrub(llm.output)\n } else if (span.kind === 'tool') {\n const tool = span as ToolSpan\n base.input = asText(tool.args, scrub)\n if (tool.result !== undefined) base.output = asText(tool.result, scrub)\n }\n return base\n}\n\n/** The final llm span's history + output is the completed conversation. */\nfunction finalConversation(spans: Span[], scrub: RolloutScrubber): ChatMessage[] {\n const llms = spans.filter((s): s is LlmSpan => s.kind === 'llm')\n const last = llms[llms.length - 1]\n if (!last) return []\n const messages: ChatMessage[] = last.messages.map((m: Message) => ({\n role: m.role,\n content: scrub(m.content),\n }))\n if (last.output !== undefined && last.output !== '') {\n messages.push({ role: 'assistant', content: scrub(last.output) })\n }\n return messages\n}\n\nfunction scoredReward(record: RunRecord): {\n reward: number\n gated: boolean\n source: 'run-record/holdout-score' | 'run-record/search-score'\n} {\n const score = runTaskScore(record)\n if (score === undefined) {\n throw new ValidationError(`Cannot mint rollout for run ${record.runId}: task score is missing`)\n }\n const gated = record.outcome.realness?.gated === true\n return {\n reward: gated ? 0 : score,\n gated,\n source:\n record.outcome.holdoutScore !== undefined\n ? 'run-record/holdout-score'\n : 'run-record/search-score',\n }\n}\n\nexport function rolloutReward(record: RunRecord): { reward: number; gated: boolean } {\n const { reward, gated } = scoredReward(record)\n return { reward, gated }\n}\n\nconst SPLIT_FROM_TAG: Record<RunRecord['splitTag'], RolloutSplit> = {\n search: 'search',\n dev: 'dev',\n holdout: 'holdout',\n}\n\nfunction mintLine(\n record: RunRecord,\n steps: RolloutStep[],\n messages: ChatMessage[],\n options: MintRolloutOptions,\n capturedAt: string,\n gap?: string,\n): RolloutLine {\n const { reward, gated, source } = scoredReward(record)\n const uncaptured = record.costProvenance.kind === 'uncaptured'\n const terminalOutcome = record.terminalOutcome\n const isCompleted = terminalOutcome === 'succeeded' || terminalOutcome === 'failed'\n const isTruncated = terminalOutcome === 'cancelled' || terminalOutcome === 'incomplete'\n const terminalError =\n terminalOutcome === 'failed' ||\n terminalOutcome === 'cancelled' ||\n terminalOutcome === 'incomplete'\n ? (record.terminalFailureReason ?? `run ended ${terminalOutcome}`)\n : null\n return {\n schema: ROLLOUT_SCHEMA,\n rollout_id: record.runId,\n parent_rollout_id: null,\n run_id: record.runId,\n experiment_id: record.experimentId,\n candidate_id: record.candidateId,\n generation: null,\n candidate_index: null,\n role: options.role ?? 'agent',\n task: {\n suite: options.suite ?? record.experimentId,\n instance_id: record.scenarioId,\n split: SPLIT_FROM_TAG[record.splitTag],\n seed: record.seed,\n rep: 0,\n },\n policy: {\n harness: null,\n harness_version: null,\n model: record.model,\n provider: null,\n profile_commit: record.commitSha,\n prompt_hash: record.promptHash,\n config_hash: record.configHash,\n agent_profile_cell_id: record.agentProfile?.cellId ?? null,\n sampling: null,\n },\n messages,\n tool_defs: [],\n ...(steps.length > 0 ? { steps } : {}),\n outcome: {\n reward,\n reward_source: source,\n verdict: null,\n metrics: { ...record.outcome.raw },\n is_completed: isCompleted,\n is_truncated: isTruncated,\n error: terminalError,\n realness_gated: gated,\n },\n cost: {\n usd: uncaptured ? null : record.costUsd,\n tokens_in: record.tokenUsage.input,\n tokens_out: record.tokenUsage.output,\n tokens_reasoning: record.tokenUsage.reasoning ?? null,\n cache_read: record.tokenUsage.cached ?? null,\n cache_write: record.tokenUsage.cacheWrite ?? null,\n wall_s: Math.round(record.wallMs / 1000),\n },\n artifacts: { patch_path: null, run_dir: null, transcript_ref: null },\n provenance: {\n captured_at: capturedAt,\n capture: 'mint',\n ...(gap !== undefined ? { gap } : {}),\n },\n }\n}\n\n/**\n * Join RunRecords with their traces into canonical rollout lines. Records\n * without spans are emitted as labeled gap lines and reported in\n * `missingTraces`. Execution-only records without a task score are rejected\n * because a missing training label is not a zero reward.\n */\nexport async function mintRolloutRows(\n records: RunRecord[],\n store: TraceStore,\n options: MintRolloutOptions = {},\n): Promise<MintRolloutResult> {\n const scrub = options.scrub ?? ((t) => t)\n const capturedAt = (options.now?.() ?? new Date()).toISOString()\n const rows: RolloutLine[] = []\n const missingTraces: string[] = []\n for (const record of records) {\n const trajectory = await buildTrajectory(store, record.runId)\n if (trajectory.steps.length === 0) {\n missingTraces.push(record.runId)\n rows.push(\n mintLine(record, [], [], options, capturedAt, 'no trace spans recorded for this runId'),\n )\n continue\n }\n let steps = trajectory.steps.map((s) => projectStep(s.span, scrub))\n if (options.maxSteps !== undefined && steps.length > options.maxSteps) {\n // Keep the head and tail — the middle of a long run is the least\n // informative for outcome attribution.\n const head = Math.ceil(options.maxSteps / 2)\n const tail = options.maxSteps - head\n steps = [...steps.slice(0, head), ...steps.slice(steps.length - tail)]\n }\n const conversation = finalConversation(\n trajectory.steps.map((s) => s.span),\n scrub,\n )\n const gap =\n conversation.length === 0 ? 'trace has no llm spans — no conversation to inline' : undefined\n rows.push(mintLine(record, steps, conversation, options, capturedAt, gap))\n }\n return { rows, missingTraces }\n}\n"],"mappings":"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","names":[]}
|
package/dist/chunk-JHCHEVET.js
DELETED
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
// src/matrix/aggregation.ts
|
|
2
|
-
function flattenRuns(cells) {
|
|
3
|
-
const rows = [];
|
|
4
|
-
for (const { cell, runs } of cells) {
|
|
5
|
-
for (const result of runs) rows.push({ cell, result });
|
|
6
|
-
}
|
|
7
|
-
return rows;
|
|
8
|
-
}
|
|
9
|
-
function quantile(sorted, q) {
|
|
10
|
-
if (sorted.length === 0) return 0;
|
|
11
|
-
if (sorted.length === 1) return sorted[0];
|
|
12
|
-
const pos = (sorted.length - 1) * q;
|
|
13
|
-
const lo = Math.floor(pos);
|
|
14
|
-
const hi = Math.ceil(pos);
|
|
15
|
-
if (lo === hi) return sorted[lo];
|
|
16
|
-
const frac = pos - lo;
|
|
17
|
-
return sorted[lo] * (1 - frac) + sorted[hi] * frac;
|
|
18
|
-
}
|
|
19
|
-
function summariseRows(rows, axisName, axisValue) {
|
|
20
|
-
if (rows.length === 0) {
|
|
21
|
-
return {
|
|
22
|
-
axisName,
|
|
23
|
-
axisValue,
|
|
24
|
-
cells: 0,
|
|
25
|
-
passRate: 0,
|
|
26
|
-
meanScore: 0,
|
|
27
|
-
p50Score: 0,
|
|
28
|
-
p90Score: 0,
|
|
29
|
-
totalCostUsd: 0,
|
|
30
|
-
meanDurationMs: 0
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
let pass = 0;
|
|
34
|
-
let scoreSum = 0;
|
|
35
|
-
let costSum = 0;
|
|
36
|
-
let durSum = 0;
|
|
37
|
-
const scores = [];
|
|
38
|
-
for (const { result } of rows) {
|
|
39
|
-
const errored = result.error !== void 0;
|
|
40
|
-
const score = errored ? 0 : result.verdict.score;
|
|
41
|
-
const valid = !errored && result.verdict.valid;
|
|
42
|
-
if (valid) pass++;
|
|
43
|
-
scoreSum += score;
|
|
44
|
-
scores.push(score);
|
|
45
|
-
costSum += result.costUsd;
|
|
46
|
-
durSum += result.durationMs;
|
|
47
|
-
}
|
|
48
|
-
scores.sort((a, b) => a - b);
|
|
49
|
-
return {
|
|
50
|
-
axisName,
|
|
51
|
-
axisValue,
|
|
52
|
-
cells: rows.length,
|
|
53
|
-
passRate: pass / rows.length,
|
|
54
|
-
meanScore: scoreSum / rows.length,
|
|
55
|
-
p50Score: quantile(scores, 0.5),
|
|
56
|
-
p90Score: quantile(scores, 0.9),
|
|
57
|
-
totalCostUsd: costSum,
|
|
58
|
-
meanDurationMs: durSum / rows.length
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
function bucketBy(rows, axisName, labelFor) {
|
|
62
|
-
const buckets = /* @__PURE__ */ new Map();
|
|
63
|
-
for (const row of rows) {
|
|
64
|
-
const slot = row.cell.axes[axisName];
|
|
65
|
-
if (!slot) continue;
|
|
66
|
-
const id = slot.id;
|
|
67
|
-
let arr = buckets.get(id);
|
|
68
|
-
if (!arr) {
|
|
69
|
-
arr = [];
|
|
70
|
-
buckets.set(id, arr);
|
|
71
|
-
}
|
|
72
|
-
arr.push(row);
|
|
73
|
-
}
|
|
74
|
-
const out = {};
|
|
75
|
-
for (const id of [...buckets.keys()].sort()) {
|
|
76
|
-
out[id] = summariseRows(buckets.get(id), axisName, labelFor(id));
|
|
77
|
-
}
|
|
78
|
-
return out;
|
|
79
|
-
}
|
|
80
|
-
function buildByAxis(cells, axes, aggregateBy) {
|
|
81
|
-
const rows = flattenRuns(cells);
|
|
82
|
-
const byName = new Map(axes.map((a) => [a.name, a]));
|
|
83
|
-
const byAxis = {};
|
|
84
|
-
for (const name of aggregateBy) {
|
|
85
|
-
const axis = byName.get(name);
|
|
86
|
-
const labelFor = (id) => {
|
|
87
|
-
if (!axis?.label) return id;
|
|
88
|
-
const found = axis.values.find((v) => v.id === id);
|
|
89
|
-
if (!found) return id;
|
|
90
|
-
return axis.label(found.value, id);
|
|
91
|
-
};
|
|
92
|
-
byAxis[name] = bucketBy(rows, name, labelFor);
|
|
93
|
-
}
|
|
94
|
-
return byAxis;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// src/matrix/runner.ts
|
|
98
|
-
function cartesian(axes) {
|
|
99
|
-
if (axes.length === 0) return [{ axes: {} }];
|
|
100
|
-
for (const a of axes) if (a.values.length === 0) return [];
|
|
101
|
-
const out = [];
|
|
102
|
-
const idx = new Array(axes.length).fill(0);
|
|
103
|
-
while (true) {
|
|
104
|
-
const slot = {};
|
|
105
|
-
for (let i2 = 0; i2 < axes.length; i2++) {
|
|
106
|
-
const axis = axes[i2];
|
|
107
|
-
const v = axis.values[idx[i2]];
|
|
108
|
-
slot[axis.name] = { id: v.id, value: v.value };
|
|
109
|
-
}
|
|
110
|
-
out.push({ axes: slot });
|
|
111
|
-
let i = 0;
|
|
112
|
-
while (i < axes.length) {
|
|
113
|
-
const next = idx[i] + 1;
|
|
114
|
-
const axis = axes[i];
|
|
115
|
-
if (next < axis.values.length) {
|
|
116
|
-
idx[i] = next;
|
|
117
|
-
break;
|
|
118
|
-
}
|
|
119
|
-
idx[i] = 0;
|
|
120
|
-
i++;
|
|
121
|
-
}
|
|
122
|
-
if (i === axes.length) break;
|
|
123
|
-
}
|
|
124
|
-
return out;
|
|
125
|
-
}
|
|
126
|
-
function makeMatrixId() {
|
|
127
|
-
const t = Date.now().toString(36);
|
|
128
|
-
let r = "";
|
|
129
|
-
for (let i = 0; i < 8; i++) r += Math.floor(Math.random() * 16).toString(16);
|
|
130
|
-
return `mtx_${t}_${r}`;
|
|
131
|
-
}
|
|
132
|
-
function makeErrorResult(err) {
|
|
133
|
-
const e = err;
|
|
134
|
-
return {
|
|
135
|
-
output: void 0,
|
|
136
|
-
verdict: { valid: false, score: 0 },
|
|
137
|
-
costUsd: 0,
|
|
138
|
-
durationMs: 0,
|
|
139
|
-
error: {
|
|
140
|
-
message: typeof e?.message === "string" ? e.message : String(err),
|
|
141
|
-
kind: typeof e?.name === "string" ? e.name : "Error"
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
async function runAgentMatrix(opts) {
|
|
146
|
-
const startedAt = Date.now();
|
|
147
|
-
const reps = Math.max(1, opts.reps ?? 1);
|
|
148
|
-
const maxConcurrency = Math.max(1, opts.maxConcurrency ?? 4);
|
|
149
|
-
const costCeiling = opts.costCeiling ?? Number.POSITIVE_INFINITY;
|
|
150
|
-
const aggregateBy = opts.aggregateBy ?? opts.axes.map((a) => a.name);
|
|
151
|
-
const base = cartesian(opts.axes);
|
|
152
|
-
const filtered = opts.filter ? base.filter((c) => opts.filter(c)) : base;
|
|
153
|
-
const filteredOut = base.length - filtered.length;
|
|
154
|
-
const planned = [];
|
|
155
|
-
for (let i = 0; i < filtered.length; i++) {
|
|
156
|
-
for (let r = 0; r < reps; r++) {
|
|
157
|
-
planned.push({
|
|
158
|
-
axes: filtered[i].axes,
|
|
159
|
-
rep: r,
|
|
160
|
-
ordinal: i * reps + r
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
const cellRecords = [];
|
|
165
|
-
let cumulativeCost = 0;
|
|
166
|
-
let costCeilingReached = false;
|
|
167
|
-
let runsExecuted = 0;
|
|
168
|
-
let cellsUnscheduled = 0;
|
|
169
|
-
const aborted = () => opts.signal?.aborted === true;
|
|
170
|
-
let inFlight = 0;
|
|
171
|
-
let cursor = 0;
|
|
172
|
-
let resolveAll;
|
|
173
|
-
const done = new Promise((res) => {
|
|
174
|
-
resolveAll = res;
|
|
175
|
-
});
|
|
176
|
-
const pump = () => {
|
|
177
|
-
while (inFlight < maxConcurrency && cursor < planned.length) {
|
|
178
|
-
if (aborted() || costCeilingReached) {
|
|
179
|
-
const left = planned.length - cursor;
|
|
180
|
-
cellsUnscheduled += left;
|
|
181
|
-
cursor = planned.length;
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
184
|
-
const cell = planned[cursor++];
|
|
185
|
-
inFlight++;
|
|
186
|
-
const record = { cell, runs: [] };
|
|
187
|
-
cellRecords.push(record);
|
|
188
|
-
const promise = (async () => {
|
|
189
|
-
try {
|
|
190
|
-
return await opts.runCell(cell);
|
|
191
|
-
} catch (err) {
|
|
192
|
-
return makeErrorResult(err);
|
|
193
|
-
}
|
|
194
|
-
})();
|
|
195
|
-
promise.then((result) => {
|
|
196
|
-
record.runs.push(result);
|
|
197
|
-
runsExecuted++;
|
|
198
|
-
cumulativeCost += result.costUsd;
|
|
199
|
-
if (cumulativeCost >= costCeiling && !costCeilingReached) {
|
|
200
|
-
costCeilingReached = true;
|
|
201
|
-
console.warn("[matrix] cost ceiling reached");
|
|
202
|
-
}
|
|
203
|
-
try {
|
|
204
|
-
opts.onCellComplete?.(cell, result);
|
|
205
|
-
} catch {
|
|
206
|
-
}
|
|
207
|
-
inFlight--;
|
|
208
|
-
if (cursor < planned.length) {
|
|
209
|
-
pump();
|
|
210
|
-
} else if (inFlight === 0) {
|
|
211
|
-
resolveAll?.();
|
|
212
|
-
}
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
if (cursor >= planned.length && inFlight === 0) resolveAll?.();
|
|
216
|
-
};
|
|
217
|
-
const onAbort = () => {
|
|
218
|
-
if (cursor < planned.length) {
|
|
219
|
-
cellsUnscheduled += planned.length - cursor;
|
|
220
|
-
cursor = planned.length;
|
|
221
|
-
}
|
|
222
|
-
if (inFlight === 0) resolveAll?.();
|
|
223
|
-
};
|
|
224
|
-
if (opts.signal) {
|
|
225
|
-
if (opts.signal.aborted) {
|
|
226
|
-
cellsUnscheduled = planned.length;
|
|
227
|
-
cursor = planned.length;
|
|
228
|
-
resolveAll?.();
|
|
229
|
-
} else {
|
|
230
|
-
opts.signal.addEventListener("abort", onAbort, { once: true });
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
if (planned.length === 0) {
|
|
234
|
-
resolveAll?.();
|
|
235
|
-
} else {
|
|
236
|
-
pump();
|
|
237
|
-
}
|
|
238
|
-
await done;
|
|
239
|
-
if (opts.signal) opts.signal.removeEventListener("abort", onAbort);
|
|
240
|
-
cellRecords.sort((a, b) => a.cell.ordinal - b.cell.ordinal);
|
|
241
|
-
let pass = 0;
|
|
242
|
-
let scoreSum = 0;
|
|
243
|
-
let totalCost = 0;
|
|
244
|
-
let runCount = 0;
|
|
245
|
-
for (const { runs } of cellRecords) {
|
|
246
|
-
for (const r of runs) {
|
|
247
|
-
runCount++;
|
|
248
|
-
const errored = r.error !== void 0;
|
|
249
|
-
if (!errored && r.verdict.valid) pass++;
|
|
250
|
-
scoreSum += errored ? 0 : r.verdict.score;
|
|
251
|
-
totalCost += r.costUsd;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
const byAxis = buildByAxis(cellRecords, opts.axes, aggregateBy);
|
|
255
|
-
return {
|
|
256
|
-
cells: cellRecords,
|
|
257
|
-
byAxis,
|
|
258
|
-
summary: {
|
|
259
|
-
totalCells: planned.length,
|
|
260
|
-
runsExecuted,
|
|
261
|
-
cellsSkipped: cellsUnscheduled + filteredOut * reps,
|
|
262
|
-
overallPassRate: runCount === 0 ? 0 : pass / runCount,
|
|
263
|
-
overallMeanScore: runCount === 0 ? 0 : scoreSum / runCount,
|
|
264
|
-
totalCostUsd: totalCost,
|
|
265
|
-
durationMs: Date.now() - startedAt
|
|
266
|
-
},
|
|
267
|
-
matrixId: makeMatrixId()
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
export {
|
|
272
|
-
runAgentMatrix
|
|
273
|
-
};
|
|
274
|
-
//# sourceMappingURL=chunk-JHCHEVET.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/matrix/aggregation.ts","../src/matrix/runner.ts"],"sourcesContent":["/**\n * Per-axis aggregation of cell runs into `AxisSummary` rows.\n *\n * Pure: consumes the final `cells: [{cell, runs}]` array and returns the\n * `byAxis` table. Error runs contribute 0 to passRate and meanScore. Cost\n * and duration always count — the budget was spent regardless.\n */\n\nimport type { AxisSummary, CellResult, MatrixAxis, MatrixCell, MatrixResult } from './types'\n\ninterface Row<Output> {\n cell: MatrixCell\n result: CellResult<Output>\n}\n\nfunction flattenRuns<Output>(cells: MatrixResult<Output>['cells']): Row<Output>[] {\n const rows: Row<Output>[] = []\n for (const { cell, runs } of cells) {\n for (const result of runs) rows.push({ cell, result })\n }\n return rows\n}\n\nfunction quantile(sorted: number[], q: number): number {\n if (sorted.length === 0) return 0\n if (sorted.length === 1) return sorted[0] as number\n const pos = (sorted.length - 1) * q\n const lo = Math.floor(pos)\n const hi = Math.ceil(pos)\n if (lo === hi) return sorted[lo] as number\n const frac = pos - lo\n return (sorted[lo] as number) * (1 - frac) + (sorted[hi] as number) * frac\n}\n\nexport function summariseRows<Output>(\n rows: Row<Output>[],\n axisName: string,\n axisValue: string,\n): AxisSummary {\n if (rows.length === 0) {\n return {\n axisName,\n axisValue,\n cells: 0,\n passRate: 0,\n meanScore: 0,\n p50Score: 0,\n p90Score: 0,\n totalCostUsd: 0,\n meanDurationMs: 0,\n }\n }\n let pass = 0\n let scoreSum = 0\n let costSum = 0\n let durSum = 0\n const scores: number[] = []\n for (const { result } of rows) {\n const errored = result.error !== undefined\n const score = errored ? 0 : result.verdict.score\n const valid = !errored && result.verdict.valid\n if (valid) pass++\n scoreSum += score\n scores.push(score)\n costSum += result.costUsd\n durSum += result.durationMs\n }\n scores.sort((a, b) => a - b)\n return {\n axisName,\n axisValue,\n cells: rows.length,\n passRate: pass / rows.length,\n meanScore: scoreSum / rows.length,\n p50Score: quantile(scores, 0.5),\n p90Score: quantile(scores, 0.9),\n totalCostUsd: costSum,\n meanDurationMs: durSum / rows.length,\n }\n}\n\nfunction bucketBy<Output>(\n rows: Row<Output>[],\n axisName: string,\n labelFor: (id: string) => string,\n): Record<string, AxisSummary> {\n const buckets = new Map<string, Row<Output>[]>()\n for (const row of rows) {\n const slot = row.cell.axes[axisName]\n if (!slot) continue\n const id = slot.id\n let arr = buckets.get(id)\n if (!arr) {\n arr = []\n buckets.set(id, arr)\n }\n arr.push(row)\n }\n const out: Record<string, AxisSummary> = {}\n // Sorted keys for deterministic JSON serialisation.\n for (const id of [...buckets.keys()].sort()) {\n out[id] = summariseRows(buckets.get(id) as Row<Output>[], axisName, labelFor(id))\n }\n return out\n}\n\nexport function buildByAxis<Output>(\n cells: MatrixResult<Output>['cells'],\n axes: MatrixAxis<unknown>[],\n aggregateBy: string[],\n): Record<string, Record<string, AxisSummary>> {\n const rows = flattenRuns(cells)\n const byName = new Map(axes.map((a) => [a.name, a]))\n const byAxis: Record<string, Record<string, AxisSummary>> = {}\n for (const name of aggregateBy) {\n const axis = byName.get(name)\n const labelFor = (id: string): string => {\n if (!axis?.label) return id\n const found = axis.values.find((v) => v.id === id)\n if (!found) return id\n return axis.label(found.value, id)\n }\n byAxis[name] = bucketBy(rows, name, labelFor)\n }\n return byAxis\n}\n","/**\n * N-axis cartesian runner.\n *\n * Expansion order: cartesian over `axes` in declared order, then `reps` as the\n * inner-most dim → `ordinal = (cartIdx * reps) + rep`. The returned\n * `cells[]` is sorted by `ordinal` so concurrent execution does not reorder\n * the output.\n *\n * Scheduling is a sliding window of in-flight promises capped at\n * `maxConcurrency`. The window stops admitting new cells when the cost\n * ceiling trips or the abort signal fires; in-flight cells finish.\n */\n\nimport { buildByAxis } from './aggregation'\nimport type {\n CellResult,\n MatrixAxis,\n MatrixCell,\n MatrixResult,\n RunAgentMatrixOptions,\n} from './types'\n\ninterface BaseCell {\n axes: Record<string, { id: string; value: unknown }>\n}\n\nfunction cartesian(axes: MatrixAxis<unknown>[]): BaseCell[] {\n // Empty axes (`values=[]`) collapse the whole product to zero cells. An\n // empty `axes` array yields a single empty-axes cell — degenerate but\n // valid (caller is iterating only reps).\n if (axes.length === 0) return [{ axes: {} }]\n for (const a of axes) if (a.values.length === 0) return []\n const out: BaseCell[] = []\n const idx = new Array(axes.length).fill(0)\n while (true) {\n const slot: Record<string, { id: string; value: unknown }> = {}\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i] as MatrixAxis<unknown>\n const v = axis.values[idx[i] as number] as { id: string; value: unknown }\n slot[axis.name] = { id: v.id, value: v.value }\n }\n out.push({ axes: slot })\n // Increment like an odometer, left-most axis is fastest.\n let i = 0\n while (i < axes.length) {\n const next = (idx[i] as number) + 1\n const axis = axes[i] as MatrixAxis<unknown>\n if (next < axis.values.length) {\n idx[i] = next\n break\n }\n idx[i] = 0\n i++\n }\n if (i === axes.length) break\n }\n return out\n}\n\nfunction makeMatrixId(): string {\n // Stable id-like string: time + 8 random hex chars. Avoids node:crypto\n // import to keep the matrix dep-free.\n const t = Date.now().toString(36)\n let r = ''\n for (let i = 0; i < 8; i++) r += Math.floor(Math.random() * 16).toString(16)\n return `mtx_${t}_${r}`\n}\n\nfunction makeErrorResult<Output>(err: unknown): CellResult<Output> {\n const e = err as { message?: string; name?: string }\n return {\n output: undefined as unknown as Output,\n verdict: { valid: false, score: 0 },\n costUsd: 0,\n durationMs: 0,\n error: {\n message: typeof e?.message === 'string' ? e.message : String(err),\n kind: typeof e?.name === 'string' ? e.name : 'Error',\n },\n }\n}\n\nexport async function runAgentMatrix<Output>(\n opts: RunAgentMatrixOptions<Output>,\n): Promise<MatrixResult<Output>> {\n const startedAt = Date.now()\n const reps = Math.max(1, opts.reps ?? 1)\n const maxConcurrency = Math.max(1, opts.maxConcurrency ?? 4)\n const costCeiling = opts.costCeiling ?? Number.POSITIVE_INFINITY\n const aggregateBy = opts.aggregateBy ?? opts.axes.map((a) => a.name)\n\n const base = cartesian(opts.axes)\n const filtered = opts.filter\n ? base.filter((c) => (opts.filter as (b: BaseCell) => boolean)(c))\n : base\n const filteredOut = base.length - filtered.length\n\n const planned: MatrixCell[] = []\n for (let i = 0; i < filtered.length; i++) {\n for (let r = 0; r < reps; r++) {\n planned.push({\n axes: (filtered[i] as BaseCell).axes,\n rep: r,\n ordinal: i * reps + r,\n })\n }\n }\n\n const cellRecords: Array<{ cell: MatrixCell; runs: CellResult<Output>[] }> = []\n let cumulativeCost = 0\n let costCeilingReached = false\n let runsExecuted = 0\n let cellsUnscheduled = 0\n\n const aborted = (): boolean => opts.signal?.aborted === true\n\n // Per-run abort controller forwards the external signal so cell executors\n // see cancellation. We don't expose it on `MatrixCell` — the signature on\n // `runCell` per the public API is `(cell) => Promise<...>`. Executors that\n // need cancellation use the external signal directly via closure.\n\n let inFlight = 0\n let cursor = 0\n let resolveAll: (() => void) | undefined\n const done = new Promise<void>((res) => {\n resolveAll = res\n })\n\n const pump = (): void => {\n while (inFlight < maxConcurrency && cursor < planned.length) {\n if (aborted() || costCeilingReached) {\n // Drain remaining as unscheduled.\n const left = planned.length - cursor\n cellsUnscheduled += left\n cursor = planned.length\n break\n }\n const cell = planned[cursor++] as MatrixCell\n inFlight++\n // Lazily allocate the record so cells appear in `cells[]` in any\n // arrival order; we sort by ordinal at the end.\n const record = { cell, runs: [] as CellResult<Output>[] }\n cellRecords.push(record)\n const promise: Promise<CellResult<Output>> = (async () => {\n try {\n return await opts.runCell(cell)\n } catch (err) {\n return makeErrorResult<Output>(err)\n }\n })()\n promise.then((result) => {\n record.runs.push(result)\n runsExecuted++\n cumulativeCost += result.costUsd\n if (cumulativeCost >= costCeiling && !costCeilingReached) {\n costCeilingReached = true\n // eslint-disable-next-line no-console\n console.warn('[matrix] cost ceiling reached')\n }\n try {\n opts.onCellComplete?.(cell, result)\n } catch {\n // onCellComplete is observational — swallow throws so a noisy\n // callback can't tank the run.\n }\n inFlight--\n if (cursor < planned.length) {\n pump()\n } else if (inFlight === 0) {\n resolveAll?.()\n }\n })\n }\n if (cursor >= planned.length && inFlight === 0) resolveAll?.()\n }\n\n const onAbort = (): void => {\n // External abort: stop scheduling. In-flight cells finish; their\n // executors observe `opts.signal.aborted` directly via closure.\n if (cursor < planned.length) {\n cellsUnscheduled += planned.length - cursor\n cursor = planned.length\n }\n if (inFlight === 0) resolveAll?.()\n }\n if (opts.signal) {\n if (opts.signal.aborted) {\n cellsUnscheduled = planned.length\n cursor = planned.length\n resolveAll?.()\n } else {\n opts.signal.addEventListener('abort', onAbort, { once: true })\n }\n }\n\n if (planned.length === 0) {\n resolveAll?.()\n } else {\n pump()\n }\n\n await done\n if (opts.signal) opts.signal.removeEventListener('abort', onAbort)\n\n cellRecords.sort((a, b) => a.cell.ordinal - b.cell.ordinal)\n\n let pass = 0\n let scoreSum = 0\n let totalCost = 0\n let runCount = 0\n for (const { runs } of cellRecords) {\n for (const r of runs) {\n runCount++\n const errored = r.error !== undefined\n if (!errored && r.verdict.valid) pass++\n scoreSum += errored ? 0 : r.verdict.score\n totalCost += r.costUsd\n }\n }\n\n const byAxis = buildByAxis(cellRecords, opts.axes, aggregateBy)\n\n return {\n cells: cellRecords,\n byAxis,\n summary: {\n totalCells: planned.length,\n runsExecuted,\n cellsSkipped: cellsUnscheduled + filteredOut * reps,\n overallPassRate: runCount === 0 ? 0 : pass / runCount,\n overallMeanScore: runCount === 0 ? 0 : scoreSum / runCount,\n totalCostUsd: totalCost,\n durationMs: Date.now() - startedAt,\n },\n matrixId: makeMatrixId(),\n }\n}\n"],"mappings":"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","names":["i"]}
|
package/dist/chunk-K4DBDHLK.js
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
// src/trace/attribute-vocabulary.ts
|
|
2
|
-
import {
|
|
3
|
-
GEN_AI_INPUT_TOKEN_KEYS,
|
|
4
|
-
GEN_AI_MODEL_KEYS,
|
|
5
|
-
GEN_AI_OUTPUT_TOKEN_KEYS
|
|
6
|
-
} from "@tangle-network/agent-core/telemetry";
|
|
7
|
-
var OPENINFERENCE_SPAN_KIND = "openinference.span.kind";
|
|
8
|
-
var LLM_MODEL_NAME = "llm.model_name";
|
|
9
|
-
var LLM_INPUT_TOKENS = "llm.token_count.prompt";
|
|
10
|
-
var LLM_OUTPUT_TOKENS = "llm.token_count.completion";
|
|
11
|
-
var LLM_REASONING_TOKENS = "llm.token_count.reasoning";
|
|
12
|
-
var LLM_CACHED_TOKENS = "llm.token_count.prompt_cache_hit";
|
|
13
|
-
var LLM_CACHE_WRITE_TOKENS = "llm.token_count.prompt_cache_write";
|
|
14
|
-
var LLM_CONTEXT_TOKENS = "tangle.llm.context_tokens";
|
|
15
|
-
var LLM_COST_USD = "llm.cost_usd";
|
|
16
|
-
var TOOL_NAME = "tool.name";
|
|
17
|
-
var TOOL_ARGS_CAPTURED = "tool.args_captured";
|
|
18
|
-
var TOOL_LATENCY_MS = "tool.latency_ms";
|
|
19
|
-
var INPUT_VALUE = "input.value";
|
|
20
|
-
var OUTPUT_VALUE = "output.value";
|
|
21
|
-
var SPAN_KIND_ATTR_KEYS = [OPENINFERENCE_SPAN_KIND, "inference.observation_kind"];
|
|
22
|
-
var LLM_MODEL_ATTR_KEYS = [
|
|
23
|
-
LLM_MODEL_NAME,
|
|
24
|
-
"inference.llm.model_name",
|
|
25
|
-
"llm.model",
|
|
26
|
-
...GEN_AI_MODEL_KEYS,
|
|
27
|
-
"tangle.model"
|
|
28
|
-
];
|
|
29
|
-
var LLM_INPUT_TOKEN_ATTR_KEYS = [
|
|
30
|
-
LLM_INPUT_TOKENS,
|
|
31
|
-
"inference.llm.input_tokens",
|
|
32
|
-
"llm.input_tokens",
|
|
33
|
-
...GEN_AI_INPUT_TOKEN_KEYS,
|
|
34
|
-
"tangle.tokens.in",
|
|
35
|
-
"tokens.in"
|
|
36
|
-
];
|
|
37
|
-
var LLM_OUTPUT_TOKEN_ATTR_KEYS = [
|
|
38
|
-
LLM_OUTPUT_TOKENS,
|
|
39
|
-
"inference.llm.output_tokens",
|
|
40
|
-
"llm.output_tokens",
|
|
41
|
-
...GEN_AI_OUTPUT_TOKEN_KEYS,
|
|
42
|
-
"tangle.tokens.out",
|
|
43
|
-
"tokens.out"
|
|
44
|
-
];
|
|
45
|
-
var LLM_REASONING_TOKEN_ATTR_KEYS = [
|
|
46
|
-
LLM_REASONING_TOKENS,
|
|
47
|
-
"inference.llm.reasoning_tokens",
|
|
48
|
-
"llm.reasoning_tokens",
|
|
49
|
-
"gen_ai.usage.reasoning_tokens",
|
|
50
|
-
"gen_ai.usage.reasoning_output_tokens",
|
|
51
|
-
"reasoning_tokens",
|
|
52
|
-
"reasoning_output_tokens",
|
|
53
|
-
"tangle.tokens.reasoning",
|
|
54
|
-
"gen_ai.usage.output_tokens_details.reasoning_tokens",
|
|
55
|
-
"gen_ai.usage.completion_tokens_details.reasoning_tokens"
|
|
56
|
-
];
|
|
57
|
-
var LLM_CACHED_TOKEN_ATTR_KEYS = [
|
|
58
|
-
LLM_CACHED_TOKENS,
|
|
59
|
-
"inference.llm.cached_tokens",
|
|
60
|
-
"llm.cached_tokens",
|
|
61
|
-
"gen_ai.usage.cached_tokens",
|
|
62
|
-
"gen_ai.usage.prompt_tokens_details.cached_tokens",
|
|
63
|
-
"gen_ai.usage.input_tokens_details.cached_tokens",
|
|
64
|
-
"gen_ai.usage.cache_read_tokens",
|
|
65
|
-
"gen_ai.usage.cache_read_input_tokens",
|
|
66
|
-
"cache_read_tokens",
|
|
67
|
-
"cache_read_input_tokens",
|
|
68
|
-
"input_cache_read",
|
|
69
|
-
"tangle.tokens.cached"
|
|
70
|
-
];
|
|
71
|
-
var LLM_CACHE_WRITE_TOKEN_ATTR_KEYS = [
|
|
72
|
-
LLM_CACHE_WRITE_TOKENS,
|
|
73
|
-
"inference.llm.cache_write_tokens",
|
|
74
|
-
"llm.cache_write_tokens",
|
|
75
|
-
"gen_ai.usage.cache_creation_tokens",
|
|
76
|
-
"gen_ai.usage.cache_creation_input_tokens",
|
|
77
|
-
"cache_creation_tokens",
|
|
78
|
-
"cache_creation_input_tokens",
|
|
79
|
-
"input_cache_creation",
|
|
80
|
-
"tangle.tokens.cache_write"
|
|
81
|
-
];
|
|
82
|
-
var LLM_COST_ATTR_KEYS = [
|
|
83
|
-
LLM_COST_USD,
|
|
84
|
-
"inference.llm.cost.total",
|
|
85
|
-
"llm.cost.total",
|
|
86
|
-
"gen_ai.usage.cost",
|
|
87
|
-
"gen_ai.usage.cost_usd",
|
|
88
|
-
"tangle.cost.usd",
|
|
89
|
-
"cost.usd",
|
|
90
|
-
"cost"
|
|
91
|
-
];
|
|
92
|
-
var RUN_COST_ATTR_KEYS = ["tangle.cost.usd", "cost.usd"];
|
|
93
|
-
var TOOL_NAME_ATTR_KEYS = [TOOL_NAME, "inference.tool.name"];
|
|
94
|
-
function asNumber(value) {
|
|
95
|
-
if (typeof value === "number") return Number.isFinite(value) ? value : null;
|
|
96
|
-
if (typeof value === "string" && value.length > 0) {
|
|
97
|
-
const parsed = Number(value);
|
|
98
|
-
return Number.isFinite(parsed) ? parsed : null;
|
|
99
|
-
}
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
function firstNumberAttr(attributes, keys) {
|
|
103
|
-
for (const key of keys) {
|
|
104
|
-
const value = asNumber(attributes[key]);
|
|
105
|
-
if (value !== null) return value;
|
|
106
|
-
}
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
function contextInputTokens(usage) {
|
|
110
|
-
if (usage.inputTokens === void 0 || usage.inputTokens === null) return void 0;
|
|
111
|
-
return usage.inputTokens + (usage.cachedTokens ?? 0) + (usage.cacheWriteTokens ?? 0);
|
|
112
|
-
}
|
|
113
|
-
function applyLlmSpanOtlpAttributes(attributes, span) {
|
|
114
|
-
if (span.model !== void 0) attributes[LLM_MODEL_NAME] = span.model;
|
|
115
|
-
if (span.inputTokens !== void 0) attributes[LLM_INPUT_TOKENS] = span.inputTokens;
|
|
116
|
-
if (span.outputTokens !== void 0) attributes[LLM_OUTPUT_TOKENS] = span.outputTokens;
|
|
117
|
-
if (span.reasoningTokens !== void 0) attributes[LLM_REASONING_TOKENS] = span.reasoningTokens;
|
|
118
|
-
if (span.cachedTokens !== void 0) attributes[LLM_CACHED_TOKENS] = span.cachedTokens;
|
|
119
|
-
if (span.cacheWriteTokens !== void 0) {
|
|
120
|
-
attributes[LLM_CACHE_WRITE_TOKENS] = span.cacheWriteTokens;
|
|
121
|
-
}
|
|
122
|
-
const contextTokens = contextInputTokens(span);
|
|
123
|
-
if (contextTokens !== void 0) attributes[LLM_CONTEXT_TOKENS] = contextTokens;
|
|
124
|
-
if (span.costUsd !== void 0) attributes[LLM_COST_USD] = span.costUsd;
|
|
125
|
-
if (span.finishReason) attributes["llm.finish_reason"] = span.finishReason;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
export {
|
|
129
|
-
OPENINFERENCE_SPAN_KIND,
|
|
130
|
-
LLM_MODEL_NAME,
|
|
131
|
-
LLM_INPUT_TOKENS,
|
|
132
|
-
LLM_OUTPUT_TOKENS,
|
|
133
|
-
LLM_REASONING_TOKENS,
|
|
134
|
-
LLM_CACHED_TOKENS,
|
|
135
|
-
LLM_CACHE_WRITE_TOKENS,
|
|
136
|
-
LLM_CONTEXT_TOKENS,
|
|
137
|
-
LLM_COST_USD,
|
|
138
|
-
TOOL_NAME,
|
|
139
|
-
TOOL_ARGS_CAPTURED,
|
|
140
|
-
TOOL_LATENCY_MS,
|
|
141
|
-
INPUT_VALUE,
|
|
142
|
-
OUTPUT_VALUE,
|
|
143
|
-
SPAN_KIND_ATTR_KEYS,
|
|
144
|
-
LLM_MODEL_ATTR_KEYS,
|
|
145
|
-
LLM_INPUT_TOKEN_ATTR_KEYS,
|
|
146
|
-
LLM_OUTPUT_TOKEN_ATTR_KEYS,
|
|
147
|
-
LLM_REASONING_TOKEN_ATTR_KEYS,
|
|
148
|
-
LLM_CACHED_TOKEN_ATTR_KEYS,
|
|
149
|
-
LLM_CACHE_WRITE_TOKEN_ATTR_KEYS,
|
|
150
|
-
LLM_COST_ATTR_KEYS,
|
|
151
|
-
RUN_COST_ATTR_KEYS,
|
|
152
|
-
TOOL_NAME_ATTR_KEYS,
|
|
153
|
-
asNumber,
|
|
154
|
-
firstNumberAttr,
|
|
155
|
-
contextInputTokens,
|
|
156
|
-
applyLlmSpanOtlpAttributes
|
|
157
|
-
};
|
|
158
|
-
//# sourceMappingURL=chunk-K4DBDHLK.js.map
|