@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/contract/intake/code-agent-observation.ts","../src/contract/intake/code-agent-session.ts"],"sourcesContent":["export type CodeAgentSessionSource = 'codex' | 'claude-code' | 'opencode' | 'kimi-code' | 'pi'\n\nexport type CodeAgentSessionTerminalStatus = 'completed' | 'failed' | 'unknown'\n\nexport type CodeAgentSessionActionKind = 'tool' | 'patch' | 'terminal' | 'graph-completion'\n\nexport type CodeAgentSessionActionSurface =\n | 'tool'\n | 'mcp'\n | 'subagent'\n | 'skill'\n | 'hook'\n | 'web'\n | 'code'\n\nexport type CodeAgentSessionActionStatus = 'started' | 'completed' | 'failed' | 'unknown'\n\nexport interface CodeAgentSessionExecutionReceipt {\n exitCode: number\n startedAtMs?: number\n completedAtMs?: number\n}\n\nexport interface CodeAgentSessionAction {\n id: string\n stepIndex: number\n kind: CodeAgentSessionActionKind\n surface: CodeAgentSessionActionSurface\n name: string\n status: CodeAgentSessionActionStatus\n timestampMs?: number\n costUsd?: number\n metadata: Record<string, unknown>\n}\n\nexport interface CodeAgentSessionObservation {\n source: CodeAgentSessionSource\n sessionId: string\n finalText: string | null\n terminal: {\n status: CodeAgentSessionTerminalStatus\n explicit: boolean\n }\n actions: CodeAgentSessionAction[]\n}\n\nexport interface ObserveCodeAgentSessionOptions {\n source: CodeAgentSessionSource\n entries: unknown[]\n sourcePath?: string\n execution?: CodeAgentSessionExecutionReceipt\n}\n\ninterface SessionProjection {\n finalText: string | null\n terminal: CodeAgentSessionTerminalStatus\n explicitTerminal: boolean\n actions: CodeAgentSessionAction[]\n}\n\n/**\n * Project one provider session into the exact user-visible answer and a\n * provider-neutral action stream. Raw prompts, tool inputs, and tool outputs\n * stay out of this projection; callers retain the source JSONL as evidence.\n */\nexport function observeCodeAgentSession(\n options: ObserveCodeAgentSessionOptions,\n): CodeAgentSessionObservation {\n const entries = options.entries.filter(isRecord)\n const projection = projectionFor(options.source, entries)\n const terminal = terminalWithExecution(projection, options.execution)\n return {\n source: options.source,\n sessionId:\n sessionIdFromEntries(options.source, entries) ??\n fallbackSessionId(options.source, options.sourcePath),\n finalText: projection.finalText,\n terminal,\n actions: projection.actions,\n }\n}\n\nfunction projectionFor(\n source: CodeAgentSessionSource,\n entries: Record<string, unknown>[],\n): SessionProjection {\n switch (source) {\n case 'codex':\n return codexProjection(entries)\n case 'claude-code':\n return claudeProjection(entries)\n case 'opencode':\n return openCodeProjection(entries)\n case 'kimi-code':\n return kimiProjection(entries)\n case 'pi':\n return piProjection(entries)\n }\n}\n\nfunction codexProjection(entries: Record<string, unknown>[]): SessionProjection {\n const actions: CodeAgentSessionAction[] = []\n const calls = new Map<string, CodeAgentSessionAction>()\n let finalText: string | null = null\n let terminal: CodeAgentSessionTerminalStatus = 'unknown'\n let explicitTerminal = false\n\n for (const entry of entries) {\n const entryType = stringField(entry, 'type')\n const payload = record(entry.payload) ?? {}\n const payloadType = stringField(payload, 'type')\n const timestampMs = timestamp(entry.timestamp)\n const item = record(entry.item)\n\n if (entryType === 'item.started' && item) {\n const itemType = stringField(item, 'type')\n if (isCodexActionItem(itemType)) {\n const id = stringField(item, 'id') ?? `item-${actions.length}`\n const action = actionFor({\n id,\n stepIndex: actions.length,\n kind: itemType === 'file_change' ? 'patch' : 'tool',\n surface: codexItemSurface(itemType, item),\n name: codexItemName(itemType, item),\n status: 'started',\n timestampMs,\n metadata: compactMetadata({ sourceEventType: entryType, itemType }),\n })\n calls.set(id, action)\n actions.push(action)\n }\n }\n\n if (entryType === 'item.completed' && item) {\n const itemType = stringField(item, 'type')\n if (itemType === 'agent_message' || itemType === 'message') {\n finalText = nonEmpty(stringField(item, 'text')) ?? finalText\n }\n if (isCodexActionItem(itemType)) {\n const id = stringField(item, 'id') ?? `item-${actions.length}`\n const status = codexItemStatus(itemType, item)\n const existing = calls.get(id)\n if (existing) {\n existing.status = status\n } else {\n const action = actionFor({\n id,\n stepIndex: actions.length,\n kind: itemType === 'file_change' ? 'patch' : 'tool',\n surface: codexItemSurface(itemType, item),\n name: codexItemName(itemType, item),\n status,\n timestampMs,\n metadata: compactMetadata({ sourceEventType: entryType, itemType }),\n })\n calls.set(id, action)\n actions.push(action)\n }\n }\n }\n\n if (entryType === 'response_item') {\n if (payloadType === 'message' || payloadType === 'agent_message') {\n finalText = textFromMessagePayload(payload) ?? finalText\n }\n if (payloadType === 'function_call' || payloadType === 'custom_tool_call') {\n const id =\n stringField(payload, 'call_id') ?? stringField(payload, 'id') ?? `call-${actions.length}`\n const name = stringField(payload, 'name') ?? payloadType\n const action = actionFor({\n id,\n stepIndex: actions.length,\n kind: 'tool',\n surface: surfaceForTool(name),\n name,\n status: 'started',\n timestampMs,\n metadata: compactMetadata({ sourceEventType: entryType, payloadType }),\n })\n calls.set(id, action)\n actions.push(action)\n }\n if (payloadType === 'function_call_output' || payloadType === 'custom_tool_call_output') {\n const id = stringField(payload, 'call_id') ?? stringField(payload, 'id')\n const existing = id ? calls.get(id) : undefined\n if (existing) existing.status = looksLikeError(payload.output) ? 'failed' : 'completed'\n }\n }\n\n if (entryType === 'event_msg') {\n if (payloadType === 'agent_message') {\n finalText =\n nonEmpty(stringField(payload, 'message')) ??\n nonEmpty(stringField(payload, 'text')) ??\n finalText\n }\n if (payloadType === 'patch_apply_end') {\n const patchStatus =\n typeof payload.success === 'boolean'\n ? payload.success\n ? 'completed'\n : 'failed'\n : 'unknown'\n actions.push(\n actionFor({\n id: stringField(payload, 'call_id') ?? `patch-${actions.length}`,\n stepIndex: actions.length,\n kind: 'patch',\n surface: 'code',\n name: 'patch',\n status: patchStatus,\n timestampMs,\n metadata: compactMetadata({ sourceEventType: entryType, payloadType }),\n }),\n )\n }\n if (payloadType === 'sub_agent_activity') {\n const name = stringField(payload, 'kind') ?? 'subagent'\n actions.push(\n actionFor({\n id: stringField(payload, 'event_id') ?? `subagent-${actions.length}`,\n stepIndex: actions.length,\n kind: 'tool',\n surface: 'subagent',\n name,\n status: statusFrom(payload),\n timestampMs,\n metadata: compactMetadata({ sourceEventType: entryType, payloadType }),\n }),\n )\n }\n if (payloadType === 'task_complete' || payloadType === 'turn_aborted') {\n const completed = payloadType === 'task_complete'\n terminal = completed ? 'completed' : 'failed'\n explicitTerminal = true\n actions.push(terminalAction(actions.length, payloadType, completed, timestampMs))\n }\n }\n\n if (entryType === 'turn.completed' || entryType === 'exec_done') {\n const completed = entry.success !== false\n terminal = completed ? 'completed' : 'failed'\n explicitTerminal = true\n finalText = nonEmpty(stringField(entry, 'message')) ?? finalText\n actions.push(terminalAction(actions.length, entryType, completed, timestampMs))\n }\n if (entryType === 'turn.failed' || entryType === 'error') {\n terminal = 'failed'\n explicitTerminal = true\n actions.push(terminalAction(actions.length, entryType, false, timestampMs))\n }\n }\n\n return { finalText, terminal, explicitTerminal, actions }\n}\n\nfunction claudeProjection(entries: Record<string, unknown>[]): SessionProjection {\n const actions: CodeAgentSessionAction[] = []\n const calls = new Map<string, CodeAgentSessionAction>()\n let finalText: string | null = null\n let resultText: string | null = null\n let terminal: CodeAgentSessionTerminalStatus = 'unknown'\n let explicitTerminal = false\n\n for (const entry of entries) {\n const entryType = stringField(entry, 'type')\n const timestampMs = timestamp(entry.timestamp)\n const message = record(entry.message)\n const content = Array.isArray(message?.content) ? message.content : []\n\n if (entryType === 'assistant') {\n const text = textBlocks(content)\n if (text !== null) finalText = text\n for (const value of content) {\n const part = record(value)\n if (!part) continue\n const partType = stringField(part, 'type')\n if (partType === 'tool_use') {\n const id = stringField(part, 'id') ?? `tool-${actions.length}`\n const name = stringField(part, 'name') ?? 'tool'\n const action = actionFor({\n id,\n stepIndex: actions.length,\n kind: 'tool',\n surface: surfaceForTool(name),\n name,\n status: 'started',\n timestampMs,\n metadata: compactMetadata({ sourceEventType: entryType, partType }),\n })\n calls.set(id, action)\n actions.push(action)\n }\n }\n completeClaudeTools(content, calls)\n const stopReason = stringField(message ?? {}, 'stop_reason')\n if (stopReason === 'end_turn') {\n terminal = 'completed'\n explicitTerminal = true\n actions.push(terminalAction(actions.length, stopReason, true, timestampMs))\n }\n }\n\n if (entryType === 'user') {\n completeClaudeTools(content, calls)\n }\n if (entryType === 'tool_use') {\n const id = stringField(entry, 'id') ?? `tool-${actions.length}`\n const name = stringField(entry, 'name') ?? 'tool'\n const action = actionFor({\n id,\n stepIndex: actions.length,\n kind: 'tool',\n surface: surfaceForTool(name),\n name,\n status: 'started',\n timestampMs,\n metadata: { sourceEventType: entryType },\n })\n calls.set(id, action)\n actions.push(action)\n }\n if (entryType === 'tool_result') {\n const id = stringField(entry, 'tool_use_id')\n const action = id ? calls.get(id) : undefined\n if (action) action.status = entry.is_error === true ? 'failed' : 'completed'\n }\n\n if (entryType === 'system') {\n const subtype = stringField(entry, 'subtype')\n const hookName = stringField(entry, 'hook_name') ?? stringField(entry, 'hookName')\n if (subtype?.toLowerCase().includes('hook') || hookName) {\n actions.push(\n actionFor({\n id: stringField(entry, 'uuid') ?? `hook-${actions.length}`,\n stepIndex: actions.length,\n kind: 'tool',\n surface: 'hook',\n name: hookName ?? subtype ?? 'hook',\n status: statusFrom(entry),\n timestampMs,\n metadata: compactMetadata({ sourceEventType: entryType, subtype }),\n }),\n )\n }\n }\n\n if (entryType === 'pr-link') {\n actions.push(terminalAction(actions.length, entryType, true, timestampMs))\n }\n\n if (entryType === 'result') {\n resultText = nonEmpty(stringField(entry, 'result')) ?? resultText\n const subtype = stringField(entry, 'subtype')\n const completed = entry.is_error !== true && !subtype?.toLowerCase().includes('error')\n terminal = completed ? 'completed' : 'failed'\n explicitTerminal = true\n actions.push(terminalAction(actions.length, subtype ?? entryType, completed, timestampMs))\n }\n if (entryType === 'error') {\n terminal = 'failed'\n explicitTerminal = true\n actions.push(terminalAction(actions.length, entryType, false, timestampMs))\n }\n }\n\n return {\n finalText: resultText ?? finalText,\n terminal,\n explicitTerminal,\n actions,\n }\n}\n\nfunction openCodeProjection(entries: Record<string, unknown>[]): SessionProjection {\n const actions: CodeAgentSessionAction[] = []\n const assistantMessageIds = new Set(\n entries\n .filter((entry) => stringField(entry, 'role') === 'assistant')\n .map((entry) => stringField(entry, 'id'))\n .filter((id): id is string => id !== undefined),\n )\n let finalText: string | null = null\n let terminal: CodeAgentSessionTerminalStatus = 'unknown'\n let explicitTerminal = false\n\n for (const entry of entries) {\n const entryType = stringField(entry, 'type')\n const part = record(entry.part) ?? entry\n const partType = stringField(part, 'type')\n const timestampMs = timestamp(entry.timestamp) ?? timestamp(record(entry.time)?.created)\n\n if (entryType === 'text' && record(entry.part)) {\n finalText = nonEmpty(stringField(part, 'text')) ?? finalText\n } else if (\n partType === 'text' &&\n (assistantMessageIds.size === 0 ||\n assistantMessageIds.has(stringField(part, 'messageID') ?? ''))\n ) {\n finalText = nonEmpty(stringField(part, 'text')) ?? finalText\n }\n\n if (entryType === 'tool_use' || partType === 'tool') {\n const state = record(part.state) ?? {}\n const name = stringField(part, 'tool') ?? 'tool'\n actions.push(\n actionFor({\n id: stringField(part, 'callID') ?? stringField(part, 'id') ?? `tool-${actions.length}`,\n stepIndex: actions.length,\n kind: 'tool',\n surface: surfaceForTool(name),\n name,\n status: statusFrom(state),\n timestampMs,\n metadata: compactMetadata({ sourceEventType: entryType, partType }),\n }),\n )\n }\n if (partType === 'patch') {\n actions.push(\n actionFor({\n id: stringField(part, 'id') ?? `patch-${actions.length}`,\n stepIndex: actions.length,\n kind: 'patch',\n surface: 'code',\n name: 'patch',\n status: 'completed',\n timestampMs,\n metadata: compactMetadata({ sourceEventType: entryType, partType }),\n }),\n )\n }\n\n if (stringField(entry, 'role') === 'assistant') {\n const finish = stringField(entry, 'finish')\n if (finish === 'stop' || finish === 'error') {\n const completed = finish === 'stop'\n terminal = completed ? 'completed' : 'failed'\n explicitTerminal = true\n actions.push(terminalAction(actions.length, finish, completed, timestampMs))\n }\n }\n if (entryType === 'error') {\n terminal = 'failed'\n explicitTerminal = true\n actions.push(terminalAction(actions.length, entryType, false, timestampMs))\n }\n }\n\n return { finalText, terminal, explicitTerminal, actions }\n}\n\nfunction kimiProjection(entries: Record<string, unknown>[]): SessionProjection {\n const actions: CodeAgentSessionAction[] = []\n const calls = new Map<string, CodeAgentSessionAction>()\n let finalText: string | null = null\n let terminal: CodeAgentSessionTerminalStatus = 'unknown'\n let explicitTerminal = false\n\n for (const entry of entries) {\n const timestampMs = timestamp(entry.timestamp)\n const message = record(entry.message)\n const messageType = stringField(message ?? {}, 'type')\n const payload = record(message?.payload) ?? {}\n if (messageType === 'ContentPart' && stringField(payload, 'type') === 'text') {\n finalText =\n nonEmpty(stringField(payload, 'text')) ??\n nonEmpty(stringField(payload, 'content')) ??\n finalText\n }\n if (messageType === 'ToolCall') {\n const fn = record(payload.function) ?? {}\n const id = stringField(payload, 'id') ?? `tool-${actions.length}`\n const name = stringField(fn, 'name') ?? 'tool'\n const action = actionFor({\n id,\n stepIndex: actions.length,\n kind: 'tool',\n surface: surfaceForTool(name),\n name,\n status: 'started',\n timestampMs,\n metadata: { sourceEventType: messageType },\n })\n calls.set(id, action)\n actions.push(action)\n }\n if (messageType === 'ToolResult') {\n const id = stringField(payload, 'tool_call_id')\n const action = id ? calls.get(id) : undefined\n if (action)\n action.status = record(payload.return_value)?.is_error === true ? 'failed' : 'completed'\n }\n if (messageType === 'TurnEnd' || messageType === 'StepInterrupted') {\n const completed = messageType === 'TurnEnd'\n terminal = completed ? 'completed' : 'failed'\n explicitTerminal = true\n actions.push(terminalAction(actions.length, messageType, completed, timestampMs))\n }\n }\n\n return { finalText, terminal, explicitTerminal, actions }\n}\n\nfunction piProjection(entries: Record<string, unknown>[]): SessionProjection {\n const actions: CodeAgentSessionAction[] = []\n let terminal: CodeAgentSessionTerminalStatus = 'unknown'\n let explicitTerminal = false\n for (const entry of entries) {\n const nodes = Array.isArray(entry.nodes) ? entry.nodes : []\n for (const value of nodes) {\n const node = record(value)\n const ir = record(node?.ir) ?? node\n const kind = stringField(ir ?? {}, 'kind')\n if (kind === 'ToolInvocation') {\n actions.push(\n actionFor({\n id:\n stringField(ir ?? {}, 'id') ??\n stringField(node ?? {}, 'id') ??\n `tool-${actions.length}`,\n stepIndex: actions.length,\n kind: 'tool',\n surface: 'tool',\n name: stringField(ir ?? {}, 'name') ?? 'graph-tool',\n status: 'started',\n timestampMs: timestamp(ir?.createdAt),\n metadata: { sourceEventType: 'graph-node', graphKind: kind },\n }),\n )\n }\n if (kind === 'ToolResult') {\n const prior = [...actions].reverse().find((action) => action.kind === 'tool')\n if (prior) prior.status = 'completed'\n }\n if (kind === 'CompletionDecision') {\n terminal = 'completed'\n explicitTerminal = true\n actions.push(\n actionFor({\n id:\n stringField(ir ?? {}, 'id') ??\n stringField(node ?? {}, 'id') ??\n `completion-${actions.length}`,\n stepIndex: actions.length,\n kind: 'graph-completion',\n surface: 'tool',\n name: 'complete',\n status: 'completed',\n timestampMs: timestamp(ir?.createdAt),\n metadata: { sourceEventType: 'graph-node', graphKind: kind },\n }),\n )\n }\n }\n }\n return { finalText: null, terminal, explicitTerminal, actions }\n}\n\nfunction completeClaudeTools(content: unknown[], calls: Map<string, CodeAgentSessionAction>): void {\n for (const value of content) {\n const part = record(value)\n if (!part || stringField(part, 'type') !== 'tool_result') continue\n const id = stringField(part, 'tool_use_id')\n const action = id ? calls.get(id) : undefined\n if (action) action.status = part.is_error === true ? 'failed' : 'completed'\n }\n}\n\nfunction isCodexActionItem(itemType: string | undefined): boolean {\n return (\n itemType === 'command_execution' ||\n itemType === 'mcp_tool_call' ||\n itemType === 'collab_tool_call' ||\n itemType === 'web_search' ||\n itemType === 'file_change'\n )\n}\n\nfunction codexItemSurface(\n itemType: string | undefined,\n item: Record<string, unknown>,\n): CodeAgentSessionActionSurface {\n if (itemType === 'mcp_tool_call') return 'mcp'\n if (itemType === 'collab_tool_call') return 'subagent'\n if (itemType === 'web_search') return 'web'\n if (itemType === 'file_change') return 'code'\n return surfaceForTool(stringField(item, 'name') ?? itemType ?? 'tool')\n}\n\nfunction codexItemName(itemType: string | undefined, item: Record<string, unknown>): string {\n if (itemType === 'mcp_tool_call') {\n const server = stringField(item, 'server')\n const tool = stringField(item, 'tool')\n return [server, tool].filter(Boolean).join('/') || 'mcp'\n }\n if (itemType === 'collab_tool_call') return stringField(item, 'tool') ?? 'subagent'\n if (itemType === 'web_search') return 'web_search'\n if (itemType === 'file_change') return 'file_change'\n return stringField(item, 'name') ?? itemType ?? 'tool'\n}\n\nfunction codexItemStatus(\n itemType: string | undefined,\n item: Record<string, unknown>,\n): CodeAgentSessionActionStatus {\n const status = statusFrom(item)\n if (status === 'failed') return status\n if (itemType === 'command_execution') {\n const exitCode = numberField(item, 'exit_code')\n if (exitCode !== undefined) return exitCode === 0 ? 'completed' : 'failed'\n }\n if (itemType === 'mcp_tool_call' && record(item.error)) return 'failed'\n return status === 'unknown' || status === 'started' ? 'completed' : status\n}\n\nfunction textFromMessagePayload(payload: Record<string, unknown>): string | null {\n const direct = nonEmpty(stringField(payload, 'text'))\n if (direct) return direct\n const content = payload.content\n if (typeof content === 'string') return nonEmpty(content)\n if (Array.isArray(content)) return textBlocks(content)\n return null\n}\n\nfunction textBlocks(values: unknown[]): string | null {\n const text = values\n .map((value) => record(value))\n .filter((value): value is Record<string, unknown> => value !== null)\n .filter((value) => stringField(value, 'type') === 'text')\n .map((value) => stringField(value, 'text'))\n .filter((value): value is string => value !== undefined)\n .join('\\n')\n return nonEmpty(text)\n}\n\nfunction terminalWithExecution(\n projection: SessionProjection,\n execution: CodeAgentSessionExecutionReceipt | undefined,\n): CodeAgentSessionObservation['terminal'] {\n if (!execution) {\n return { status: projection.terminal, explicit: projection.explicitTerminal }\n }\n assertExecutionReceipt(execution)\n return {\n status: execution.exitCode !== 0 || projection.terminal === 'failed' ? 'failed' : 'completed',\n explicit: true,\n }\n}\n\nfunction assertExecutionReceipt(receipt: CodeAgentSessionExecutionReceipt): void {\n if (!Number.isSafeInteger(receipt.exitCode)) {\n throw new Error('code-agent execution exitCode must be a safe integer')\n }\n for (const [name, value] of [\n ['startedAtMs', receipt.startedAtMs],\n ['completedAtMs', receipt.completedAtMs],\n ] as const) {\n if (value !== undefined && (!Number.isFinite(value) || value < 0)) {\n throw new Error(`code-agent execution ${name} must be a non-negative finite number`)\n }\n }\n if (\n receipt.startedAtMs !== undefined &&\n receipt.completedAtMs !== undefined &&\n receipt.completedAtMs < receipt.startedAtMs\n ) {\n throw new Error('code-agent execution completedAtMs precedes startedAtMs')\n }\n}\n\nfunction terminalAction(\n stepIndex: number,\n name: string,\n completed: boolean,\n timestampMs: number | undefined,\n): CodeAgentSessionAction {\n return actionFor({\n id: `terminal-${stepIndex}`,\n stepIndex,\n kind: 'terminal',\n surface: 'tool',\n name,\n status: completed ? 'completed' : 'failed',\n timestampMs,\n metadata: { sourceEventType: name },\n })\n}\n\nfunction actionFor(input: CodeAgentSessionAction): CodeAgentSessionAction {\n return input\n}\n\nfunction surfaceForTool(name: string): CodeAgentSessionActionSurface {\n const normalized = name.toLowerCase()\n if (normalized.startsWith('mcp__') || normalized.includes('mcp_tool')) return 'mcp'\n if (\n normalized === 'task' ||\n normalized === 'agent' ||\n normalized.includes('subagent') ||\n normalized.includes('spawn_agent') ||\n normalized.includes('collab') ||\n normalized.startsWith('multi_agent')\n ) {\n return 'subagent'\n }\n if (normalized === 'skill' || normalized.includes('skill')) return 'skill'\n if (normalized.includes('hook')) return 'hook'\n if (\n normalized.includes('web_search') ||\n normalized.includes('webfetch') ||\n normalized === 'web'\n ) {\n return 'web'\n }\n if (\n normalized === 'edit' ||\n normalized === 'write' ||\n normalized.includes('patch') ||\n normalized.includes('file_change')\n ) {\n return 'code'\n }\n return 'tool'\n}\n\nfunction statusFrom(value: Record<string, unknown>): CodeAgentSessionActionStatus {\n const status = (stringField(value, 'status') ?? '').toLowerCase()\n if (status === 'completed' || status === 'success' || status === 'succeeded') return 'completed'\n if (status === 'error' || status === 'failed' || status === 'declined') return 'failed'\n if (status === 'running' || status === 'started' || status === 'in_progress') return 'started'\n return 'unknown'\n}\n\nfunction compactMetadata(input: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(Object.entries(input).filter((entry) => entry[1] !== undefined))\n}\n\nfunction sessionIdFromEntries(\n source: CodeAgentSessionSource,\n entries: Record<string, unknown>[],\n): string | undefined {\n for (const entry of entries) {\n if (source === 'codex') {\n const threadId = stringField(entry, 'thread_id')\n if (threadId) return threadId\n const payload = record(entry.payload)\n const id = payload ? stringField(payload, 'id') : undefined\n if (id) return id\n }\n const message = record(entry.message)\n const payload = record(message?.payload)\n const sessionId =\n stringField(entry, 'sessionID') ??\n stringField(entry, 'sessionId') ??\n stringField(entry, 'session_id') ??\n stringField(payload ?? {}, 'session_id')\n if (sessionId) return sessionId\n }\n return undefined\n}\n\nfunction fallbackSessionId(source: CodeAgentSessionSource, sourcePath: string | undefined): string {\n return `${source}:${sourcePath ?? 'unknown-session'}`\n}\n\nfunction looksLikeError(value: unknown): boolean {\n if (isRecord(value)) {\n if (value.success === false || value.is_error === true) return true\n const exitCode = numberField(value, 'exit_code')\n if (exitCode !== undefined && exitCode !== 0) return true\n }\n const text = typeof value === 'string' ? value : JSON.stringify(value ?? '')\n return /\\b(?:error|failed|failure)\\b|exit(?:_| )code[\"\\s:]+[1-9]/i.test(text)\n}\n\nfunction nonEmpty(value: string | undefined): string | null {\n return value !== undefined && value.length > 0 ? value : null\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nfunction record(value: unknown): Record<string, unknown> | null {\n return isRecord(value) ? value : null\n}\n\nfunction stringField(value: Record<string, unknown>, key: string): string | undefined {\n const field = value[key]\n return typeof field === 'string' && field.length > 0 ? field : undefined\n}\n\nfunction numberField(value: Record<string, unknown>, key: string): number | undefined {\n const field = value[key]\n return typeof field === 'number' && Number.isFinite(field) ? field : undefined\n}\n\nfunction timestamp(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value > 1_000_000_000_000 ? value : value * 1_000\n }\n if (typeof value === 'string' && value.length > 0) {\n const parsed = Date.parse(value)\n return Number.isFinite(parsed) ? parsed : undefined\n }\n return undefined\n}\n","import { createHash } from 'node:crypto'\nimport { estimateCost, isModelPriced } from '../../metrics'\nimport type {\n RunCostProvenance,\n RunRecord,\n RunSplitTag,\n RunTerminalOutcome,\n RunTokenUsage,\n} from '../../run-record'\nimport { extractUsage } from '../../trace/extract-usage'\nimport {\n type CodeAgentSessionExecutionReceipt,\n type CodeAgentSessionObservation,\n type CodeAgentSessionSource,\n observeCodeAgentSession,\n} from './code-agent-observation'\n\nexport type {\n CodeAgentSessionAction,\n CodeAgentSessionActionKind,\n CodeAgentSessionActionStatus,\n CodeAgentSessionActionSurface,\n CodeAgentSessionExecutionReceipt,\n CodeAgentSessionObservation,\n CodeAgentSessionSource,\n CodeAgentSessionTerminalStatus,\n ObserveCodeAgentSessionOptions,\n} from './code-agent-observation'\nexport { observeCodeAgentSession } from './code-agent-observation'\n\nexport interface ParsedCodeAgentJsonl {\n entries: unknown[]\n malformedLines: number\n}\n\nexport interface CodeAgentSessionMetrics {\n entries: number\n userMessages: number\n assistantMessages: number\n reasoningItems: number\n toolCalls: number\n toolOutputs: number\n toolErrors: number\n unclassifiedErrors: number\n patchAttempts: number\n patchSuccesses: number\n patchFailures: number\n turnsStarted: number\n turnsCompleted: number\n turnsAborted: number\n contextCompactions: number\n mcpCalls: number\n subagentCalls: number\n skillCalls: number\n hookCalls: number\n webCalls: number\n codeActions: number\n prLinks: number\n fileSnapshots: number\n graphNodes: number\n graphEdges: number\n actionCandidates: number\n verificationReports: number\n completionDecisions: number\n reliabilityRows: number\n reliabilityLift: number\n inputTokens: number\n outputTokens: number\n reasoningTokens: number\n cachedTokens: number\n cacheWriteTokens: number\n observedCostUsd: number\n observedCostCaptured?: boolean\n wallMs: number\n processScore: number\n}\n\nexport interface CodeAgentSessionDiagnostic {\n source: CodeAgentSessionSource\n sessionId: string\n sourcePath?: string\n entries: number\n malformedLines: number\n hasExplicitTerminalSignal: boolean\n hasFinalOutput: boolean\n hasQualityLabel: boolean\n hasTokenUsage: boolean\n hasCost: boolean\n costKind?: RunCostProvenance['kind']\n warnings: string[]\n}\n\nexport interface CodeAgentSessionIntakeResult {\n runs: RunRecord[]\n diagnostics: CodeAgentSessionDiagnostic[]\n metrics: CodeAgentSessionMetrics[]\n observations: CodeAgentSessionObservation[]\n}\n\nexport interface CodeAgentSessionIntakeOptions {\n entries: unknown[]\n malformedLines?: number\n sourcePath?: string\n experimentId?: string\n candidateId?: string\n seed?: number\n splitTag?: RunSplitTag\n scenarioId?: string\n model?: string\n promptHash?: string\n configHash?: string\n commitSha?: string\n score?: number\n /** Explicit cost receipt. When omitted, source-reported cost wins, then a\n * token-priced estimate, then uncaptured. */\n costProvenance?: RunCostProvenance\n /** Exact executor-owned process result. This is required when a provider's\n * JSON stream has no terminal event, as with `opencode run --format json`. */\n execution?: CodeAgentSessionExecutionReceipt\n}\n\nexport function parseCodeAgentJsonl(jsonl: string): ParsedCodeAgentJsonl {\n const entries: unknown[] = []\n let malformedLines = 0\n for (const line of jsonl.split('\\n')) {\n const trimmed = line.trim()\n if (!trimmed) continue\n try {\n entries.push(JSON.parse(trimmed))\n } catch {\n malformedLines += 1\n }\n }\n return { entries, malformedLines }\n}\n\nexport function fromCodexSession(\n options: CodeAgentSessionIntakeOptions,\n): CodeAgentSessionIntakeResult {\n return fromCodeAgentSession('codex', options)\n}\n\nexport function fromClaudeCodeSession(\n options: CodeAgentSessionIntakeOptions,\n): CodeAgentSessionIntakeResult {\n return fromCodeAgentSession('claude-code', options)\n}\n\nexport function fromOpenCodeSession(\n options: CodeAgentSessionIntakeOptions,\n): CodeAgentSessionIntakeResult {\n return fromCodeAgentSession('opencode', options)\n}\n\nexport function fromKimiCodeSession(\n options: CodeAgentSessionIntakeOptions,\n): CodeAgentSessionIntakeResult {\n return fromCodeAgentSession('kimi-code', options)\n}\n\nexport function fromPiSession(\n options: CodeAgentSessionIntakeOptions,\n): CodeAgentSessionIntakeResult {\n return fromCodeAgentSession('pi', options)\n}\n\nexport const fromPigraphSession = fromPiSession\n\nfunction fromCodeAgentSession(\n source: CodeAgentSessionSource,\n options: CodeAgentSessionIntakeOptions,\n): CodeAgentSessionIntakeResult {\n const entries = options.entries.filter(isRecord)\n if (entries.length === 0) {\n return {\n runs: [],\n diagnostics: [\n {\n source,\n sessionId: fallbackSessionId(source, options.sourcePath),\n sourcePath: options.sourcePath,\n entries: 0,\n malformedLines: options.malformedLines ?? 0,\n hasExplicitTerminalSignal: false,\n hasFinalOutput: false,\n hasQualityLabel: false,\n hasTokenUsage: false,\n hasCost: false,\n costKind: 'uncaptured',\n warnings: ['no parseable session entries'],\n },\n ],\n metrics: [],\n observations: [],\n }\n }\n\n const metrics = metricsFor(source, entries)\n const sessionId =\n sessionIdFromEntries(source, entries) ?? fallbackSessionId(source, options.sourcePath)\n const observation = observeCodeAgentSession({\n source,\n entries,\n sourcePath: options.sourcePath,\n execution: options.execution,\n })\n applyObservedSurfaceMetrics(metrics, observation)\n const model = withSnapshot(options.model ?? modelFromEntries(source, entries) ?? source)\n const tokenUsage: RunTokenUsage = {\n input: metrics.inputTokens,\n output: metrics.outputTokens,\n ...(metrics.reasoningTokens > 0 ? { reasoning: metrics.reasoningTokens } : {}),\n ...(metrics.cachedTokens > 0 ? { cached: metrics.cachedTokens } : {}),\n ...(metrics.cacheWriteTokens > 0 ? { cacheWrite: metrics.cacheWriteTokens } : {}),\n }\n const { costUsd, costProvenance } = resolveSessionCost(options.costProvenance, metrics, model)\n const qualityScore = finiteScore(options.score)\n const invalidQualityScore = options.score !== undefined && qualityScore === undefined\n const promptHash =\n options.promptHash ?? hashString(`prompt:${source}:${firstUserText(entries) ?? ''}`)\n const configHash =\n options.configHash ??\n hashJson({\n source,\n model,\n sourcePath: options.sourcePath,\n cwd: cwdFromEntries(entries),\n entryCount: entries.length,\n })\n const explicitTerminal = observation.terminal.explicit\n const warnings = diagnosticsFor(metrics, {\n model,\n explicitTerminal,\n malformedLines: options.malformedLines ?? 0,\n hasQualityLabel: qualityScore !== undefined,\n invalidQualityScore,\n costKind: costProvenance.kind,\n })\n\n const terminalOutcome = terminalOutcomeFromSession(observation.terminal)\n const processExitCode = options.execution?.exitCode\n const splitTag = options.splitTag ?? 'holdout'\n const run: RunRecord = {\n runId: `${source}:${sessionId}`,\n experimentId: options.experimentId ?? `${source}-local-sessions`,\n candidateId: options.candidateId ?? model,\n seed: options.seed ?? stableSeed(sessionId),\n model,\n promptHash,\n configHash,\n commitSha: options.commitSha ?? 'local-session',\n wallMs: metrics.wallMs,\n costUsd,\n costProvenance,\n tokenUsage,\n terminalOutcome,\n ...(terminalOutcome === 'failed'\n ? {\n terminalFailureReason:\n processExitCode !== undefined && processExitCode !== 0\n ? `process exited with code ${processExitCode}`\n : metrics.turnsAborted > 0\n ? 'turn aborted'\n : 'session reported terminal failure',\n }\n : {}),\n outcome: {\n ...(qualityScore === undefined\n ? {}\n : splitTag === 'holdout'\n ? { holdoutScore: qualityScore }\n : { searchScore: qualityScore }),\n raw: {\n entries: metrics.entries,\n user_messages: metrics.userMessages,\n assistant_messages: metrics.assistantMessages,\n reasoning_items: metrics.reasoningItems,\n tool_calls: metrics.toolCalls,\n tool_outputs: metrics.toolOutputs,\n tool_errors: metrics.toolErrors,\n execution_error_count: metrics.toolErrors,\n process_error_count: terminalOutcome === 'failed' ? 1 : 0,\n unclassified_error_count: metrics.unclassifiedErrors,\n ...(processExitCode !== undefined ? { process_exit_code: processExitCode } : {}),\n patch_attempts: metrics.patchAttempts,\n patch_successes: metrics.patchSuccesses,\n patch_failures: metrics.patchFailures,\n turns_started: metrics.turnsStarted,\n turns_completed: metrics.turnsCompleted,\n turns_aborted: metrics.turnsAborted,\n context_compactions: metrics.contextCompactions,\n mcp_calls: metrics.mcpCalls,\n subagent_calls: metrics.subagentCalls,\n skill_calls: metrics.skillCalls,\n hook_calls: metrics.hookCalls,\n web_calls: metrics.webCalls,\n code_actions: metrics.codeActions,\n pr_links: metrics.prLinks,\n file_snapshots: metrics.fileSnapshots,\n graph_nodes: metrics.graphNodes,\n graph_edges: metrics.graphEdges,\n action_candidates: metrics.actionCandidates,\n verification_reports: metrics.verificationReports,\n completion_decisions: metrics.completionDecisions,\n reliability_rows: metrics.reliabilityRows,\n reliability_lift: metrics.reliabilityLift,\n input_tokens: metrics.inputTokens,\n output_tokens: metrics.outputTokens,\n reasoning_tokens: metrics.reasoningTokens,\n cached_tokens: metrics.cachedTokens,\n cache_write_tokens: metrics.cacheWriteTokens,\n observed_cost_usd: metrics.observedCostUsd,\n observed_cost_captured: metrics.observedCostCaptured ? 1 : 0,\n estimated_cost_usd: costProvenance.kind === 'estimated' ? costProvenance.usd : 0,\n process_score: metrics.processScore,\n explicit_terminal_signal: explicitTerminal ? 1 : 0,\n quality_label_present: qualityScore !== undefined ? 1 : 0,\n cost_observed: costProvenance.kind === 'observed' ? 1 : 0,\n cost_estimated: costProvenance.kind === 'estimated' ? 1 : 0,\n cost_uncaptured: costProvenance.kind === 'uncaptured' ? 1 : 0,\n cost_unknown: costProvenance.kind === 'uncaptured' ? 1 : 0,\n },\n },\n splitTag,\n scenarioId: options.scenarioId ?? sessionId,\n }\n\n return {\n runs: [run],\n diagnostics: [\n {\n source,\n sessionId,\n sourcePath: options.sourcePath,\n entries: entries.length,\n malformedLines: options.malformedLines ?? 0,\n hasExplicitTerminalSignal: explicitTerminal,\n hasFinalOutput: observation.finalText !== null,\n hasQualityLabel: qualityScore !== undefined,\n hasTokenUsage:\n metrics.inputTokens > 0 ||\n metrics.outputTokens > 0 ||\n metrics.reasoningTokens > 0 ||\n metrics.cachedTokens > 0 ||\n metrics.cacheWriteTokens > 0,\n hasCost: costProvenance.kind !== 'uncaptured',\n costKind: costProvenance.kind,\n warnings,\n },\n ],\n metrics: [metrics],\n observations: [{ ...observation, sessionId }],\n }\n}\n\nfunction terminalOutcomeFromSession(\n terminal: CodeAgentSessionObservation['terminal'],\n): RunTerminalOutcome {\n if (!terminal.explicit) return 'unknown'\n if (terminal.status === 'completed') return 'succeeded'\n if (terminal.status === 'failed') return 'failed'\n return 'unknown'\n}\n\nfunction metricsFor(\n source: CodeAgentSessionSource,\n entries: Record<string, unknown>[],\n): CodeAgentSessionMetrics {\n switch (source) {\n case 'codex':\n return codexMetrics(entries)\n case 'claude-code':\n return claudeCodeMetrics(entries)\n case 'opencode':\n return openCodeMetrics(entries)\n case 'kimi-code':\n return kimiCodeMetrics(entries)\n case 'pi':\n return piMetrics(entries)\n }\n}\n\nfunction codexMetrics(entries: Record<string, unknown>[]): CodeAgentSessionMetrics {\n const metrics = emptyMetrics(entries.length)\n const startedToolIds = new Set<string>()\n let startedAt: number | undefined\n let completedAt: number | undefined\n\n for (const entry of entries) {\n const payload = record(entry.payload) ?? {}\n const entryType = stringField(entry, 'type')\n const payloadType = stringField(payload, 'type')\n const timestamp = timestampMs(entry.timestamp)\n if (timestamp !== undefined) {\n startedAt = startedAt === undefined ? timestamp : Math.min(startedAt, timestamp)\n completedAt = completedAt === undefined ? timestamp : Math.max(completedAt, timestamp)\n }\n\n if (entryType === 'turn.started') metrics.turnsStarted += 1\n if (entryType === 'turn.completed') {\n metrics.turnsCompleted += 1\n addCodexExecUsage(metrics, record(entry.usage))\n }\n if (entryType === 'turn.failed') metrics.turnsAborted += 1\n if (entryType === 'error') metrics.unclassifiedErrors += 1\n\n const item = record(entry.item)\n if (item && (entryType === 'item.started' || entryType === 'item.completed')) {\n addCodexExecItem(metrics, startedToolIds, entryType, item)\n }\n\n if (entryType === 'response_item') {\n if (payloadType === 'function_call' || payloadType === 'custom_tool_call')\n metrics.toolCalls += 1\n if (payloadType === 'function_call_output' || payloadType === 'custom_tool_call_output')\n metrics.toolOutputs += 1\n if (payloadType === 'reasoning') metrics.reasoningItems += 1\n if (payloadType === 'message' && stringField(payload, 'role') === 'assistant')\n metrics.assistantMessages += 1\n }\n\n if (entryType === 'event_msg') {\n if (payloadType === 'user_message') metrics.userMessages += 1\n if (payloadType === 'agent_message') metrics.assistantMessages += 1\n if (payloadType === 'task_started') {\n metrics.turnsStarted += 1\n const started = timestampMs(payload.started_at)\n if (started !== undefined) {\n startedAt = startedAt === undefined ? started : Math.min(startedAt, started)\n }\n }\n if (payloadType === 'task_complete') {\n metrics.turnsCompleted += 1\n const completed = timestampMs(payload.completed_at)\n if (completed !== undefined) {\n completedAt = completedAt === undefined ? completed : Math.max(completedAt, completed)\n }\n const duration = numberField(payload, 'duration_ms')\n if (duration !== undefined) metrics.wallMs = Math.max(metrics.wallMs, duration)\n }\n if (payloadType === 'turn_aborted') {\n metrics.turnsAborted += 1\n const completed = timestampMs(payload.completed_at)\n if (completed !== undefined) {\n completedAt = completedAt === undefined ? completed : Math.max(completedAt, completed)\n }\n }\n if (payloadType === 'context_compacted') metrics.contextCompactions += 1\n if (payloadType === 'patch_apply_end') {\n metrics.patchAttempts += 1\n if (payload.success === true) metrics.patchSuccesses += 1\n else {\n metrics.patchFailures += 1\n metrics.toolErrors += 1\n }\n }\n if (payloadType === 'token_count')\n setCodexCumulativeUsage(metrics, record(record(payload.info)?.total_token_usage))\n const result = record(payload.result)\n if (result && 'Err' in result) metrics.unclassifiedErrors += 1\n }\n }\n\n if (metrics.wallMs === 0 && startedAt !== undefined && completedAt !== undefined) {\n metrics.wallMs = Math.max(0, completedAt - startedAt)\n }\n metrics.processScore = codexProcessScore(metrics)\n return metrics\n}\n\nfunction addCodexExecItem(\n metrics: CodeAgentSessionMetrics,\n startedToolIds: Set<string>,\n eventType: 'item.started' | 'item.completed',\n item: Record<string, unknown>,\n): void {\n const itemType = stringField(item, 'type')\n const itemId = stringField(item, 'id')\n const isTool =\n itemType === 'command_execution' ||\n itemType === 'mcp_tool_call' ||\n itemType === 'collab_tool_call' ||\n itemType === 'web_search'\n\n if (eventType === 'item.started' && isTool) {\n metrics.toolCalls += 1\n if (itemId) startedToolIds.add(itemId)\n }\n if (eventType === 'item.completed' && isTool) {\n if (!itemId || !startedToolIds.has(itemId)) metrics.toolCalls += 1\n metrics.toolOutputs += 1\n }\n if (eventType !== 'item.completed') return\n\n if (itemType === 'agent_message' || itemType === 'message') metrics.assistantMessages += 1\n if (itemType === 'reasoning') metrics.reasoningItems += 1\n if (itemType === 'file_change') {\n metrics.patchAttempts += 1\n const status = stringField(item, 'status')\n if (status === 'completed') metrics.patchSuccesses += 1\n if (status === 'failed') {\n metrics.patchFailures += 1\n metrics.toolErrors += 1\n }\n }\n if (itemType === 'error') metrics.unclassifiedErrors += 1\n else if (codexExecToolFailed(itemType, item)) metrics.toolErrors += 1\n}\n\nfunction codexExecToolFailed(itemType: string | undefined, item: Record<string, unknown>): boolean {\n const status = stringField(item, 'status')\n if (itemType === 'command_execution') {\n const exitCode = numberField(item, 'exit_code')\n return (\n status === 'failed' || status === 'declined' || (exitCode !== undefined && exitCode !== 0)\n )\n }\n if (itemType === 'mcp_tool_call') return status === 'failed' || record(item.error) !== null\n return itemType === 'collab_tool_call' && status === 'failed'\n}\n\nfunction addCodexExecUsage(\n metrics: CodeAgentSessionMetrics,\n usage: Record<string, unknown> | null,\n): void {\n const parsed = readUsage(usage)\n metrics.inputTokens += parsed.input\n metrics.outputTokens += parsed.output\n metrics.reasoningTokens += parsed.reasoning\n metrics.cachedTokens += parsed.cached\n metrics.cacheWriteTokens += parsed.cacheWrite\n}\n\nfunction setCodexCumulativeUsage(\n metrics: CodeAgentSessionMetrics,\n usage: Record<string, unknown> | null,\n): void {\n const parsed = readUsage(usage)\n metrics.inputTokens = Math.max(metrics.inputTokens, parsed.input)\n metrics.outputTokens = Math.max(metrics.outputTokens, parsed.output)\n metrics.reasoningTokens = Math.max(metrics.reasoningTokens, parsed.reasoning)\n metrics.cachedTokens = Math.max(metrics.cachedTokens, parsed.cached)\n metrics.cacheWriteTokens = Math.max(metrics.cacheWriteTokens, parsed.cacheWrite)\n}\n\nfunction claudeCodeMetrics(entries: Record<string, unknown>[]): CodeAgentSessionMetrics {\n const metrics = emptyMetrics(entries.length)\n let startedAt: number | undefined\n let completedAt: number | undefined\n\n for (const entry of entries) {\n const type = stringField(entry, 'type')\n const timestamp = timestampMs(entry.timestamp)\n if (timestamp !== undefined) {\n startedAt = startedAt === undefined ? timestamp : Math.min(startedAt, timestamp)\n completedAt = completedAt === undefined ? timestamp : Math.max(completedAt, timestamp)\n }\n\n if (type === 'user') metrics.userMessages += 1\n if (type === 'assistant') metrics.assistantMessages += 1\n if (type === 'pr-link') metrics.prLinks += 1\n if (type === 'file-history-snapshot') metrics.fileSnapshots += 1\n\n const message = record(entry.message)\n if (message) addUsage(metrics, record(message.usage))\n const content = Array.isArray(message?.content) ? message.content : []\n for (const item of content) {\n const part = record(item)\n if (!part) continue\n const partType = stringField(part, 'type')\n if (partType === 'thinking') metrics.reasoningItems += 1\n if (partType === 'tool_use') metrics.toolCalls += 1\n if (partType === 'tool_result') {\n metrics.toolOutputs += 1\n if (part.is_error === true) metrics.toolErrors += 1\n }\n }\n }\n\n if (startedAt !== undefined && completedAt !== undefined)\n metrics.wallMs = Math.max(0, completedAt - startedAt)\n metrics.processScore = claudeProcessScore(metrics)\n return metrics\n}\n\nfunction openCodeMetrics(entries: Record<string, unknown>[]): CodeAgentSessionMetrics {\n const metrics = emptyMetrics(entries.length)\n const messageUsage = emptyTokenTotals()\n const partUsage = emptyTokenTotals()\n let messageCost = 0\n let partCost = 0\n let messageCostCaptured = false\n let partCostCaptured = false\n let startedAt: number | undefined\n let completedAt: number | undefined\n\n for (const entry of entries) {\n const time = record(entry.time)\n const created = timestampMs(time?.created)\n const completed = timestampMs(time?.completed)\n if (created !== undefined)\n startedAt = startedAt === undefined ? created : Math.min(startedAt, created)\n if (completed !== undefined)\n completedAt = completedAt === undefined ? completed : Math.max(completedAt, completed)\n\n const role = stringField(entry, 'role')\n if (role === 'user') metrics.userMessages += 1\n if (role === 'assistant') {\n metrics.assistantMessages += 1\n const finish = stringField(entry, 'finish')\n if (finish === 'stop') metrics.turnsCompleted += 1\n if (finish === 'error') metrics.turnsAborted += 1\n }\n\n const type = stringField(entry, 'type')\n if (type === 'reasoning') metrics.reasoningItems += 1\n if (type === 'tool') {\n metrics.toolCalls += 1\n const status = stringField(record(entry.state) ?? {}, 'status')\n if (status === 'completed') metrics.toolOutputs += 1\n if (status === 'error') {\n metrics.toolOutputs += 1\n metrics.toolErrors += 1\n }\n }\n if (type === 'patch') {\n metrics.patchAttempts += 1\n metrics.patchSuccesses += 1\n }\n\n const cost = numberField(entry, 'cost')\n if (record(entry.tokens) && role) {\n addUsageTo(messageUsage, record(entry.tokens))\n if (cost !== undefined) {\n messageCost += cost\n messageCostCaptured = true\n }\n } else if (record(entry.tokens)) {\n addUsageTo(partUsage, record(entry.tokens))\n if (cost !== undefined) {\n partCost += cost\n partCostCaptured = true\n }\n }\n }\n\n const usage = hasTokenTotals(messageUsage) ? messageUsage : partUsage\n metrics.inputTokens = usage.input\n metrics.outputTokens = usage.output\n metrics.reasoningTokens = usage.reasoning\n metrics.cachedTokens = usage.cached\n metrics.cacheWriteTokens = usage.cacheWrite\n metrics.observedCostUsd = messageCostCaptured ? messageCost : partCost\n metrics.observedCostCaptured = messageCostCaptured || partCostCaptured\n if (metrics.wallMs === 0 && startedAt !== undefined && completedAt !== undefined)\n metrics.wallMs = Math.max(0, completedAt - startedAt)\n metrics.processScore = terminalProcessScore(metrics)\n return metrics\n}\n\nfunction kimiCodeMetrics(entries: Record<string, unknown>[]): CodeAgentSessionMetrics {\n const metrics = emptyMetrics(entries.length)\n let startedAt: number | undefined\n let completedAt: number | undefined\n\n for (const entry of entries) {\n const timestamp = timestampMs(entry.timestamp)\n if (timestamp !== undefined) {\n startedAt = startedAt === undefined ? timestamp : Math.min(startedAt, timestamp)\n completedAt = completedAt === undefined ? timestamp : Math.max(completedAt, timestamp)\n }\n\n const role = stringField(entry, 'role')\n if (role === 'user') metrics.userMessages += 1\n if (role === 'assistant') metrics.assistantMessages += 1\n if (role === '_usage') addUsage(metrics, entry)\n\n const message = record(entry.message)\n const messageType = message ? stringField(message, 'type') : undefined\n const payload = record(message?.payload) ?? {}\n if (messageType === 'TurnBegin') {\n metrics.userMessages += 1\n metrics.turnsStarted += 1\n }\n if (messageType === 'TurnEnd') metrics.turnsCompleted += 1\n if (messageType === 'StepInterrupted') metrics.turnsAborted += 1\n if (messageType === 'StepBegin') metrics.reasoningItems += 1\n if (messageType === 'ContentPart') {\n const payloadType = stringField(payload, 'type')\n if (payloadType === 'think') metrics.reasoningItems += 1\n if (payloadType === 'text') metrics.assistantMessages += 1\n }\n if (messageType === 'ToolCall') metrics.toolCalls += 1\n if (messageType === 'ToolResult') {\n metrics.toolOutputs += 1\n if (record(payload.return_value)?.is_error === true) metrics.toolErrors += 1\n }\n if (messageType === 'StatusUpdate') addUsage(metrics, record(payload.token_usage))\n if (messageType === 'Notification') {\n const notification = record(payload.payload)\n const exitCode = numberField(notification ?? {}, 'exit_code')\n if (notification?.timed_out === true || (exitCode !== undefined && exitCode !== 0)) {\n metrics.toolErrors += 1\n }\n }\n }\n\n if (startedAt !== undefined && completedAt !== undefined)\n metrics.wallMs = Math.max(0, completedAt - startedAt)\n metrics.processScore = terminalProcessScore(metrics)\n return metrics\n}\n\nfunction piMetrics(entries: Record<string, unknown>[]): CodeAgentSessionMetrics {\n const metrics = emptyMetrics(entries.length)\n let bestReliabilityScore: number | undefined\n\n for (const entry of entries) {\n const nodes = Array.isArray(entry.nodes) ? entry.nodes : []\n const edges = Array.isArray(entry.edges) ? entry.edges : []\n metrics.graphNodes += nodes.length\n metrics.graphEdges += edges.length\n\n for (const node of nodes) {\n const obj = record(node)\n const ir = record(obj?.ir) ?? obj\n const kind = stringField(ir ?? {}, 'kind')\n if (kind === 'ActionCandidate') metrics.actionCandidates += 1\n if (kind === 'ToolInvocation') metrics.toolCalls += 1\n if (kind === 'ToolResult') metrics.toolOutputs += 1\n if (kind === 'VerificationReport') metrics.verificationReports += 1\n if (kind === 'CompletionDecision') {\n metrics.completionDecisions += 1\n metrics.turnsCompleted += 1\n }\n }\n\n const averageReliability = numberField(entry, 'averageNodeReliability')\n if (averageReliability !== undefined)\n bestReliabilityScore = maxOptional(bestReliabilityScore, averageReliability)\n const pessimisticPath = numberField(entry, 'pessimisticPathEstimate')\n if (pessimisticPath !== undefined)\n bestReliabilityScore = maxOptional(bestReliabilityScore, pessimisticPath)\n\n const rows = Array.isArray(entry.rows) ? entry.rows : []\n metrics.reliabilityRows += rows.length\n for (const row of rows) {\n const obj = record(row)\n if (!obj) continue\n const lift = numberField(obj, 'lift')\n if (lift !== undefined) metrics.reliabilityLift = Math.max(metrics.reliabilityLift, lift)\n const validated = numberField(obj, 'validatedSuccessEstimate')\n if (validated !== undefined)\n bestReliabilityScore = maxOptional(bestReliabilityScore, validated)\n }\n }\n\n metrics.processScore =\n bestReliabilityScore !== undefined\n ? clamp01(bestReliabilityScore)\n : metrics.completionDecisions > 0\n ? 1\n : 0\n return metrics\n}\n\nfunction emptyMetrics(entries: number): CodeAgentSessionMetrics {\n return {\n entries,\n userMessages: 0,\n assistantMessages: 0,\n reasoningItems: 0,\n toolCalls: 0,\n toolOutputs: 0,\n toolErrors: 0,\n unclassifiedErrors: 0,\n patchAttempts: 0,\n patchSuccesses: 0,\n patchFailures: 0,\n turnsStarted: 0,\n turnsCompleted: 0,\n turnsAborted: 0,\n contextCompactions: 0,\n mcpCalls: 0,\n subagentCalls: 0,\n skillCalls: 0,\n hookCalls: 0,\n webCalls: 0,\n codeActions: 0,\n prLinks: 0,\n fileSnapshots: 0,\n graphNodes: 0,\n graphEdges: 0,\n actionCandidates: 0,\n verificationReports: 0,\n completionDecisions: 0,\n reliabilityRows: 0,\n reliabilityLift: 0,\n inputTokens: 0,\n outputTokens: 0,\n reasoningTokens: 0,\n cachedTokens: 0,\n cacheWriteTokens: 0,\n observedCostUsd: 0,\n observedCostCaptured: false,\n wallMs: 0,\n processScore: 0,\n }\n}\n\nfunction codexProcessScore(metrics: CodeAgentSessionMetrics): number {\n const terminalTurns = metrics.turnsCompleted + metrics.turnsAborted\n const base =\n terminalTurns > 0\n ? metrics.turnsCompleted / terminalTurns\n : metrics.assistantMessages > 0\n ? 0.5\n : 0\n return penalizeErrors(base, metrics)\n}\n\nfunction claudeProcessScore(metrics: CodeAgentSessionMetrics): number {\n const base = metrics.prLinks > 0 ? 1 : metrics.assistantMessages > 0 ? 0.75 : 0\n return penalizeErrors(base, metrics)\n}\n\nfunction terminalProcessScore(metrics: CodeAgentSessionMetrics): number {\n const terminalTurns = metrics.turnsCompleted + metrics.turnsAborted\n const base =\n terminalTurns > 0\n ? metrics.turnsCompleted / terminalTurns\n : metrics.assistantMessages > 0\n ? 0.75\n : metrics.toolCalls > 0\n ? 0.5\n : 0\n return penalizeErrors(base, metrics)\n}\n\nfunction penalizeErrors(base: number, metrics: CodeAgentSessionMetrics): number {\n const operations = Math.max(1, metrics.toolCalls + metrics.patchAttempts)\n const errorRate = Math.min(1, (metrics.toolErrors + metrics.patchFailures) / operations)\n return clamp01(base * (1 - 0.5 * errorRate))\n}\n\ntype TokenTotals = Required<RunTokenUsage>\n\nfunction emptyTokenTotals(): TokenTotals {\n return { input: 0, output: 0, reasoning: 0, cached: 0, cacheWrite: 0 }\n}\n\nfunction hasTokenTotals(usage: TokenTotals): boolean {\n return (\n usage.input > 0 ||\n usage.output > 0 ||\n usage.reasoning > 0 ||\n usage.cached > 0 ||\n usage.cacheWrite > 0\n )\n}\n\nfunction addUsage(\n metrics: CodeAgentSessionMetrics,\n usage: Record<string, unknown> | null | undefined,\n): void {\n const parsed = readUsage(usage)\n metrics.inputTokens += parsed.input\n metrics.outputTokens += parsed.output\n metrics.reasoningTokens += parsed.reasoning\n metrics.cachedTokens += parsed.cached\n metrics.cacheWriteTokens += parsed.cacheWrite\n}\n\nfunction addUsageTo(totals: TokenTotals, usage: Record<string, unknown> | null | undefined): void {\n const parsed = readUsage(usage)\n totals.input += parsed.input\n totals.output += parsed.output\n totals.reasoning += parsed.reasoning\n totals.cached += parsed.cached\n totals.cacheWrite += parsed.cacheWrite\n}\n\nfunction readUsage(usage: Record<string, unknown> | null | undefined): TokenTotals {\n const parsed = extractUsage(usage)\n return {\n input: parsed?.input ?? 0,\n output: parsed?.output ?? 0,\n reasoning: parsed?.reasoning ?? 0,\n cached: parsed?.cached ?? 0,\n cacheWrite: parsed?.cacheWrite ?? 0,\n }\n}\n\nfunction resolveSessionCost(\n explicit: RunCostProvenance | undefined,\n metrics: CodeAgentSessionMetrics,\n model: string,\n): { costUsd: number | null; costProvenance: RunCostProvenance } {\n if (explicit) {\n if (explicit.kind === 'uncaptured') {\n if (explicit.usd !== null) throw new Error('uncaptured cost must have usd: null')\n return { costUsd: null, costProvenance: explicit }\n }\n if (!Number.isFinite(explicit.usd) || explicit.usd < 0) {\n throw new Error(`${explicit.kind} cost must be a finite, non-negative USD amount`)\n }\n return { costUsd: explicit.usd, costProvenance: explicit }\n }\n\n if (metrics.observedCostCaptured) {\n const costProvenance = { kind: 'observed', usd: metrics.observedCostUsd } as const\n return { costUsd: metrics.observedCostUsd, costProvenance }\n }\n\n const hasUsage = metrics.inputTokens > 0 || metrics.outputTokens > 0\n if (hasUsage && isModelPriced(model)) {\n const costUsd = estimateCost(metrics.inputTokens, metrics.outputTokens, model)\n return { costUsd, costProvenance: { kind: 'estimated', usd: costUsd } }\n }\n\n return { costUsd: null, costProvenance: { kind: 'uncaptured', usd: null } }\n}\n\nfunction diagnosticsFor(\n metrics: CodeAgentSessionMetrics,\n options: {\n model: string\n explicitTerminal: boolean\n malformedLines: number\n hasQualityLabel: boolean\n invalidQualityScore: boolean\n costKind: RunCostProvenance['kind']\n },\n): string[] {\n const warnings: string[] = []\n if (options.invalidQualityScore) warnings.push('non-finite task quality score omitted')\n else if (!options.hasQualityLabel) warnings.push('task quality score not supplied')\n if (!options.explicitTerminal) warnings.push('no explicit terminal success/failure signal')\n if (\n metrics.inputTokens === 0 &&\n metrics.outputTokens === 0 &&\n metrics.reasoningTokens === 0 &&\n metrics.cachedTokens === 0 &&\n metrics.cacheWriteTokens === 0\n ) {\n warnings.push('missing token usage')\n }\n if (options.costKind === 'estimated')\n warnings.push('USD cost estimated from token usage and model pricing')\n if (options.costKind === 'uncaptured') warnings.push('USD cost uncaptured')\n if (options.costKind === 'uncaptured' && !isModelPriced(options.model))\n warnings.push('model pricing unknown')\n if (options.malformedLines > 0)\n warnings.push(`${options.malformedLines} malformed JSONL lines skipped`)\n return warnings\n}\n\nfunction applyObservedSurfaceMetrics(\n metrics: CodeAgentSessionMetrics,\n observation: CodeAgentSessionObservation,\n): void {\n const actions = observation.actions.filter(\n (action) => action.kind === 'tool' || action.kind === 'patch',\n )\n metrics.mcpCalls = actions.filter((action) => action.surface === 'mcp').length\n metrics.subagentCalls = actions.filter((action) => action.surface === 'subagent').length\n metrics.skillCalls = actions.filter((action) => action.surface === 'skill').length\n metrics.hookCalls = actions.filter((action) => action.surface === 'hook').length\n metrics.webCalls = actions.filter((action) => action.surface === 'web').length\n metrics.codeActions = actions.filter((action) => action.surface === 'code').length\n}\n\nfunction sessionIdFromEntries(\n source: CodeAgentSessionSource,\n entries: Record<string, unknown>[],\n): string | undefined {\n for (const entry of entries) {\n if (source === 'codex') {\n const threadId = stringField(entry, 'thread_id')\n if (threadId) return threadId\n const payload = record(entry.payload)\n const id = payload ? stringField(payload, 'id') : undefined\n if (id) return id\n }\n const message = record(entry.message)\n const payload = record(message?.payload)\n const sessionId =\n stringField(entry, 'sessionID') ??\n stringField(entry, 'sessionId') ??\n stringField(entry, 'session_id') ??\n stringField(payload ?? {}, 'session_id')\n if (sessionId) return sessionId\n }\n return undefined\n}\n\nfunction modelFromEntries(\n source: CodeAgentSessionSource,\n entries: Record<string, unknown>[],\n): string | undefined {\n let providerModel: string | undefined\n for (const entry of entries) {\n if (source === 'codex') {\n const payload = record(entry.payload)\n const model = payload ? stringField(payload, 'model') : undefined\n if (model) return model\n providerModel =\n providerModel ?? (payload ? stringField(payload, 'model_provider') : undefined)\n }\n const openCodeModel = stringField(entry, 'modelID')\n if (openCodeModel) {\n const provider = stringField(entry, 'providerID')\n return provider ? `${provider}/${openCodeModel}` : openCodeModel\n }\n const modelObject = record(entry.model)\n const nestedModel = stringField(modelObject ?? {}, 'modelID')\n if (nestedModel) {\n const provider = stringField(modelObject ?? {}, 'providerID')\n return provider ? `${provider}/${nestedModel}` : nestedModel\n }\n const message = record(entry.message)\n const model = message ? stringField(message, 'model') : undefined\n if (model) return model\n }\n return providerModel\n}\n\nfunction cwdFromEntries(entries: Record<string, unknown>[]): string | undefined {\n for (const entry of entries) {\n const path = record(entry.path)\n const cwd =\n stringField(entry, 'cwd') ??\n stringField(path ?? {}, 'cwd') ??\n stringField(path ?? {}, 'root') ??\n (record(entry.payload) ? stringField(record(entry.payload)!, 'cwd') : undefined)\n if (cwd) return cwd\n }\n return undefined\n}\n\nfunction firstUserText(entries: Record<string, unknown>[]): string | undefined {\n for (const entry of entries) {\n const payload = record(entry.payload)\n const payloadType = payload ? stringField(payload, 'type') : undefined\n if (payloadType === 'user_message') return stringField(payload!, 'message')\n\n if (stringField(entry, 'role') === 'user') {\n const content = entry.content\n if (typeof content === 'string') return content\n }\n\n const wirePayload = record(record(entry.message)?.payload)\n const userInput = wirePayload ? stringField(wirePayload, 'user_input') : undefined\n if (userInput) return userInput\n\n const message = record(entry.message)\n if (message && stringField(message, 'role') === 'user') {\n const content = message.content\n if (typeof content === 'string') return content\n if (Array.isArray(content)) {\n const text = content\n .map((part) => {\n const obj = record(part)\n return obj ? stringField(obj, 'text') : undefined\n })\n .filter((part): part is string => part !== undefined)\n .join('\\n')\n if (text) return text\n }\n }\n }\n return undefined\n}\n\nfunction fallbackSessionId(source: CodeAgentSessionSource, sourcePath: string | undefined): string {\n return hashString(`${source}:${sourcePath ?? 'unknown-session'}`).slice(\n 'sha256:'.length,\n 'sha256:'.length + 20,\n )\n}\n\nfunction withSnapshot(model: string): string {\n const trimmed = model.trim() || 'unknown'\n if (trimmed.includes('@') || /-\\d{8}$/.test(trimmed) || /-\\d{4}-\\d{2}-\\d{2}$/.test(trimmed)) {\n return trimmed\n }\n return `${trimmed}@observed-local`\n}\n\nfunction hashJson(value: unknown): string {\n return hashString(JSON.stringify(value))\n}\n\nfunction hashString(value: string): string {\n return `sha256:${createHash('sha256').update(value).digest('hex')}`\n}\n\nfunction stableSeed(value: string): number {\n return createHash('sha256').update(value).digest().readUInt32BE(0)\n}\n\nfunction maxOptional(current: number | undefined, next: number): number {\n return current === undefined ? next : Math.max(current, next)\n}\n\nfunction clamp01(value: number): number {\n if (!Number.isFinite(value)) return 0\n return Math.max(0, Math.min(1, value))\n}\n\nfunction finiteScore(value: number | undefined): number | undefined {\n return value !== undefined && Number.isFinite(value) ? clamp01(value) : undefined\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nfunction record(value: unknown): Record<string, unknown> | null {\n return isRecord(value) ? value : null\n}\n\nfunction stringField(obj: Record<string, unknown>, key: string): string | undefined {\n const value = obj[key]\n return typeof value === 'string' && value.length > 0 ? value : undefined\n}\n\nfunction numberField(obj: Record<string, unknown>, key: string): number | undefined {\n const value = obj[key]\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction timestampMs(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value > 1_000_000_000_000 ? value : value * 1000\n }\n if (typeof value === 'string' && value.length > 0) {\n const parsed = Date.parse(value)\n return Number.isFinite(parsed) ? parsed : undefined\n }\n return undefined\n}\n"],"mappings":"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","names":["timestampMs","payload","isRecord","fallbackSessionId","sessionIdFromEntries","record","stringField","timestamp","numberField","payload","model"]}
|
package/dist/chunk-T4SQEITX.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
// src/runtime-trajectory.ts
|
|
2
|
-
var DEFAULT_SPLIT_TAG = "search";
|
|
3
|
-
function projectRuntimeTrajectoryEvidence(options) {
|
|
4
|
-
const diagnostics = [];
|
|
5
|
-
const runsById = /* @__PURE__ */ new Map();
|
|
6
|
-
const events = [];
|
|
7
|
-
let recordWithRuntimeEventsCount = 0;
|
|
8
|
-
let defaultedSplitCount = 0;
|
|
9
|
-
for (let recordIndex = 0; recordIndex < options.records.length; recordIndex += 1) {
|
|
10
|
-
const record = options.records[recordIndex];
|
|
11
|
-
const key = runtimeTrajectoryRecordKey(record, recordIndex, options.recordIdOf);
|
|
12
|
-
const splitTag = record.splitTag ?? options.defaultSplitTag ?? DEFAULT_SPLIT_TAG;
|
|
13
|
-
if (record.splitTag === void 0) defaultedSplitCount += 1;
|
|
14
|
-
const rawEvents = record.runtimeEvents;
|
|
15
|
-
if (!Array.isArray(rawEvents)) {
|
|
16
|
-
diagnostics.push(
|
|
17
|
-
`${key}: runtimeEvents is not an array; no runtime run join can be extracted`
|
|
18
|
-
);
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
21
|
-
if (rawEvents.length === 0) {
|
|
22
|
-
diagnostics.push(`${key}: no runtimeEvents; no runtime run join can be extracted`);
|
|
23
|
-
continue;
|
|
24
|
-
}
|
|
25
|
-
recordWithRuntimeEventsCount += 1;
|
|
26
|
-
for (let index = 0; index < rawEvents.length; index += 1) {
|
|
27
|
-
const event = parseRuntimeTrajectoryHookEvent(rawEvents[index]);
|
|
28
|
-
if (!event) {
|
|
29
|
-
diagnostics.push(`${key}: runtimeEvents[${index}] is not a RuntimeHookEvent`);
|
|
30
|
-
continue;
|
|
31
|
-
}
|
|
32
|
-
events.push(event);
|
|
33
|
-
const scenarioId = event.scenarioId ?? stringOrUndefined(options.scenarioIdOf?.(record, recordIndex)) ?? stringOrUndefined(record.scenarioId);
|
|
34
|
-
const prior = runsById.get(event.runId);
|
|
35
|
-
if (!prior) {
|
|
36
|
-
runsById.set(event.runId, { runId: event.runId, scenarioId, splitTag });
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
if (prior.scenarioId !== scenarioId || prior.splitTag !== splitTag) {
|
|
40
|
-
diagnostics.push(`${key}: runId ${event.runId} has conflicting scenario/split metadata`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
const runs = [...runsById.values()];
|
|
45
|
-
return {
|
|
46
|
-
runs,
|
|
47
|
-
events,
|
|
48
|
-
summary: {
|
|
49
|
-
recordCount: options.records.length,
|
|
50
|
-
recordWithRuntimeEventsCount,
|
|
51
|
-
runtimeRunCount: runs.length,
|
|
52
|
-
lifecycleEventCount: events.length,
|
|
53
|
-
defaultedSplitCount
|
|
54
|
-
},
|
|
55
|
-
diagnostics
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
function parseRuntimeTrajectoryHookEvent(input) {
|
|
59
|
-
if (!isRecord(input)) return null;
|
|
60
|
-
if (typeof input.id !== "string" || input.id.length === 0) return null;
|
|
61
|
-
if (typeof input.runId !== "string" || input.runId.length === 0) return null;
|
|
62
|
-
if (typeof input.target !== "string" || input.target.length === 0) return null;
|
|
63
|
-
if (typeof input.phase !== "string" || input.phase.length === 0) return null;
|
|
64
|
-
if (typeof input.timestamp !== "number" || !Number.isFinite(input.timestamp)) return null;
|
|
65
|
-
return {
|
|
66
|
-
id: input.id,
|
|
67
|
-
runId: input.runId,
|
|
68
|
-
scenarioId: stringOrUndefined(input.scenarioId),
|
|
69
|
-
target: input.target,
|
|
70
|
-
phase: input.phase,
|
|
71
|
-
timestamp: input.timestamp,
|
|
72
|
-
stepIndex: finiteNumberOrUndefined(input.stepIndex),
|
|
73
|
-
parentId: stringOrUndefined(input.parentId),
|
|
74
|
-
payload: input.payload,
|
|
75
|
-
metadata: isRecord(input.metadata) ? { ...input.metadata } : void 0
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
function runtimeTrajectoryRecordKey(record, index, recordIdOf) {
|
|
79
|
-
return stringOrUndefined(recordIdOf?.(record, index)) ?? stringOrUndefined(record.id) ?? `record[${index}]`;
|
|
80
|
-
}
|
|
81
|
-
function isRecord(value) {
|
|
82
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
83
|
-
}
|
|
84
|
-
function stringOrUndefined(value) {
|
|
85
|
-
return typeof value === "string" && value.length > 0 ? value : void 0;
|
|
86
|
-
}
|
|
87
|
-
function finiteNumberOrUndefined(value) {
|
|
88
|
-
return typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
export {
|
|
92
|
-
projectRuntimeTrajectoryEvidence,
|
|
93
|
-
parseRuntimeTrajectoryHookEvent
|
|
94
|
-
};
|
|
95
|
-
//# sourceMappingURL=chunk-T4SQEITX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runtime-trajectory.ts"],"sourcesContent":["import type { RunSplitTag } from './run-record'\n\nexport interface RuntimeTrajectoryHookEvent {\n id: string\n runId: string\n scenarioId?: string\n target: string\n phase: string\n timestamp: number\n stepIndex?: number\n parentId?: string\n payload?: unknown\n metadata?: Record<string, unknown>\n}\n\nexport interface RuntimeTrajectoryRecord {\n id?: string\n scenarioId?: string\n splitTag?: RunSplitTag\n runtimeEvents?: unknown\n [key: string]: unknown\n}\n\nexport interface RuntimeTrajectoryRunRecord {\n runId: string\n scenarioId?: string\n splitTag: RunSplitTag\n}\n\nexport interface RuntimeTrajectoryEvidenceSummary {\n recordCount: number\n recordWithRuntimeEventsCount: number\n runtimeRunCount: number\n lifecycleEventCount: number\n defaultedSplitCount: number\n}\n\nexport interface RuntimeTrajectoryEvidenceProjection {\n runs: RuntimeTrajectoryRunRecord[]\n events: RuntimeTrajectoryHookEvent[]\n summary: RuntimeTrajectoryEvidenceSummary\n diagnostics: string[]\n}\n\nexport interface ProjectRuntimeTrajectoryEvidenceOptions<\n TRecord extends RuntimeTrajectoryRecord = RuntimeTrajectoryRecord,\n> {\n records: TRecord[]\n defaultSplitTag?: RunSplitTag\n recordIdOf?: (record: TRecord, index: number) => string | undefined\n scenarioIdOf?: (record: TRecord, index: number) => string | undefined\n}\n\nconst DEFAULT_SPLIT_TAG: RunSplitTag = 'search'\n\nexport function projectRuntimeTrajectoryEvidence<TRecord extends RuntimeTrajectoryRecord>(\n options: ProjectRuntimeTrajectoryEvidenceOptions<TRecord>,\n): RuntimeTrajectoryEvidenceProjection {\n const diagnostics: string[] = []\n const runsById = new Map<string, RuntimeTrajectoryRunRecord>()\n const events: RuntimeTrajectoryHookEvent[] = []\n let recordWithRuntimeEventsCount = 0\n let defaultedSplitCount = 0\n\n for (let recordIndex = 0; recordIndex < options.records.length; recordIndex += 1) {\n const record = options.records[recordIndex]!\n const key = runtimeTrajectoryRecordKey(record, recordIndex, options.recordIdOf)\n const splitTag = record.splitTag ?? options.defaultSplitTag ?? DEFAULT_SPLIT_TAG\n if (record.splitTag === undefined) defaultedSplitCount += 1\n\n const rawEvents = record.runtimeEvents\n if (!Array.isArray(rawEvents)) {\n diagnostics.push(\n `${key}: runtimeEvents is not an array; no runtime run join can be extracted`,\n )\n continue\n }\n if (rawEvents.length === 0) {\n diagnostics.push(`${key}: no runtimeEvents; no runtime run join can be extracted`)\n continue\n }\n recordWithRuntimeEventsCount += 1\n\n for (let index = 0; index < rawEvents.length; index += 1) {\n const event = parseRuntimeTrajectoryHookEvent(rawEvents[index])\n if (!event) {\n diagnostics.push(`${key}: runtimeEvents[${index}] is not a RuntimeHookEvent`)\n continue\n }\n events.push(event)\n\n const scenarioId =\n event.scenarioId ??\n stringOrUndefined(options.scenarioIdOf?.(record, recordIndex)) ??\n stringOrUndefined(record.scenarioId)\n const prior = runsById.get(event.runId)\n if (!prior) {\n runsById.set(event.runId, { runId: event.runId, scenarioId, splitTag })\n continue\n }\n if (prior.scenarioId !== scenarioId || prior.splitTag !== splitTag) {\n diagnostics.push(`${key}: runId ${event.runId} has conflicting scenario/split metadata`)\n }\n }\n }\n\n const runs = [...runsById.values()]\n return {\n runs,\n events,\n summary: {\n recordCount: options.records.length,\n recordWithRuntimeEventsCount,\n runtimeRunCount: runs.length,\n lifecycleEventCount: events.length,\n defaultedSplitCount,\n },\n diagnostics,\n }\n}\n\nexport function parseRuntimeTrajectoryHookEvent(input: unknown): RuntimeTrajectoryHookEvent | null {\n if (!isRecord(input)) return null\n if (typeof input.id !== 'string' || input.id.length === 0) return null\n if (typeof input.runId !== 'string' || input.runId.length === 0) return null\n if (typeof input.target !== 'string' || input.target.length === 0) return null\n if (typeof input.phase !== 'string' || input.phase.length === 0) return null\n if (typeof input.timestamp !== 'number' || !Number.isFinite(input.timestamp)) return null\n\n return {\n id: input.id,\n runId: input.runId,\n scenarioId: stringOrUndefined(input.scenarioId),\n target: input.target,\n phase: input.phase,\n timestamp: input.timestamp,\n stepIndex: finiteNumberOrUndefined(input.stepIndex),\n parentId: stringOrUndefined(input.parentId),\n payload: input.payload,\n metadata: isRecord(input.metadata) ? { ...input.metadata } : undefined,\n }\n}\n\nfunction runtimeTrajectoryRecordKey<TRecord extends RuntimeTrajectoryRecord>(\n record: TRecord,\n index: number,\n recordIdOf?: (record: TRecord, index: number) => string | undefined,\n): string {\n return (\n stringOrUndefined(recordIdOf?.(record, index)) ??\n stringOrUndefined(record.id) ??\n `record[${index}]`\n )\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction stringOrUndefined(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined\n}\n\nfunction finiteNumberOrUndefined(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n"],"mappings":"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","names":[]}
|