@tangle-network/agent-eval 0.216.1 → 0.218.1
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 +137 -57
- package/README.md +2 -2
- package/dist/adapters/http.d.ts +2 -2
- package/dist/{agent-profile-VFcQncbW.d.ts → agent-profile-DTt8uGP9.d.ts} +4 -17
- package/dist/agent-profile-DTt8uGP9.d.ts.map +1 -0
- package/dist/{agent-profile-cell-BK8mlqlq.js → agent-profile-cell-B1V1gUZs.js} +4 -53
- package/dist/agent-profile-cell-B1V1gUZs.js.map +1 -0
- package/dist/{agent-profile-cell-BNp-Js9F.d.ts → agent-profile-cell-BcpFbNd5.d.ts} +2 -22
- package/dist/agent-profile-cell-BcpFbNd5.d.ts.map +1 -0
- package/dist/{agreement-irr-BEWLIF3_.js → agreement-irr-BhAqjluA.js} +5 -5
- package/dist/agreement-irr-BhAqjluA.js.map +1 -0
- package/dist/analyst/index.d.ts +36 -169
- package/dist/analyst/index.d.ts.map +1 -1
- package/dist/analyst/index.js +17 -192
- package/dist/analyst/index.js.map +1 -1
- package/dist/{analyze-runs-D68fd-su.d.ts → analyze-runs-DjlZOVXx.d.ts} +5 -5
- package/dist/{analyze-runs-D68fd-su.d.ts.map → analyze-runs-DjlZOVXx.d.ts.map} +1 -1
- package/dist/{analyze-runs-C84irm4i.js → analyze-runs-DqPJaJ4X.js} +225 -21
- package/dist/analyze-runs-DqPJaJ4X.js.map +1 -0
- package/dist/authenticity/index.d.ts +0 -23
- package/dist/authenticity/index.d.ts.map +1 -1
- package/dist/authenticity/index.js +1 -34
- package/dist/authenticity/index.js.map +1 -1
- package/dist/{benchmark-command-By0vh8q7.js → benchmark-command-BupdHRyf.js} +1225 -661
- package/dist/benchmark-command-BupdHRyf.js.map +1 -0
- package/dist/benchmarks/index.d.ts +5 -6
- package/dist/benchmarks/index.d.ts.map +1 -1
- package/dist/benchmarks/index.js +4 -4
- package/dist/benchmarks/index.js.map +1 -1
- package/dist/builder-eval/index.d.ts +3 -3
- package/dist/builder-eval/index.js +2 -2
- package/dist/builder-eval/index.js.map +1 -1
- package/dist/campaign/index.d.ts +7 -7
- package/dist/campaign/index.js +15 -15
- package/dist/{campaign-BudZ70zo.js → campaign-CGvUTnmc.js} +324 -800
- package/dist/campaign-CGvUTnmc.js.map +1 -0
- package/dist/{campaign-evidence-Clrn4hBV.js → campaign-evidence-DunzcJGv.js} +10 -18
- package/dist/{campaign-evidence-Clrn4hBV.js.map → campaign-evidence-DunzcJGv.js.map} +1 -1
- package/dist/{canonical-B2RqLofv.js → canonical-Dq2hOQ8L.js} +2 -2
- package/dist/{canonical-B2RqLofv.js.map → canonical-Dq2hOQ8L.js.map} +1 -1
- package/dist/cell-spend-DEWR3nj-.js +90 -0
- package/dist/cell-spend-DEWR3nj-.js.map +1 -0
- package/dist/{chat-client-l-MVDlDk.js → chat-client-B2pXlPdx.js} +2 -2
- package/dist/{chat-client-l-MVDlDk.js.map → chat-client-B2pXlPdx.js.map} +1 -1
- package/dist/{chat-json-call-puMArmtW.js → chat-json-call-Dm9c-b41.js} +3 -2
- package/dist/chat-json-call-Dm9c-b41.js.map +1 -0
- package/dist/{claim-q4HQhK1G.js → claim-BPVuyHuy.js} +3 -3
- package/dist/{claim-q4HQhK1G.js.map → claim-BPVuyHuy.js.map} +1 -1
- package/dist/cli.js +113 -12
- package/dist/cli.js.map +1 -1
- package/dist/{client-BzL9niqi.d.ts → client-hwo3cJjR.d.ts} +3 -16
- package/dist/client-hwo3cJjR.d.ts.map +1 -0
- package/dist/{cluster-bootstrap-qcUWYFl-.js → cluster-bootstrap-DEwwhl0C.js} +3 -3
- package/dist/{cluster-bootstrap-qcUWYFl-.js.map → cluster-bootstrap-DEwwhl0C.js.map} +1 -1
- package/dist/{produced-state-BsDmnwxc.js → completion-verifier-DbLVf3i8.js} +9 -64
- package/dist/completion-verifier-DbLVf3i8.js.map +1 -0
- package/dist/contract/index.d.ts +12 -12
- package/dist/contract/index.js +107 -403
- package/dist/contract/index.js.map +1 -1
- package/dist/{cost-ledger-BP8V4kUQ.js → cost-ledger-D0352Z4d.js} +4 -8
- package/dist/cost-ledger-D0352Z4d.js.map +1 -0
- package/dist/dataset-DQqhOCPt.d.ts.map +1 -1
- package/dist/{default-registry-COhk9g36.js → default-registry-BJ-Pq6yL.js} +314 -285
- package/dist/default-registry-BJ-Pq6yL.js.map +1 -0
- package/dist/{default-registry-DzHiGruW.d.ts → default-registry-DXgLmoDI.d.ts} +7 -50
- package/dist/default-registry-DXgLmoDI.d.ts.map +1 -0
- package/dist/{define-agent-eval-CNTPzIkp.js → define-agent-eval-BGdFKlrc.js} +170 -110
- package/dist/define-agent-eval-BGdFKlrc.js.map +1 -0
- package/dist/{define-agent-eval-WSck0CZJ.d.ts → define-agent-eval-BlH10zEw.d.ts} +8 -8
- package/dist/define-agent-eval-BlH10zEw.d.ts.map +1 -0
- package/dist/{descriptive-DboxPZrG.js → descriptive-CVNy48rR.js} +2 -2
- package/dist/{descriptive-DboxPZrG.js.map → descriptive-CVNy48rR.js.map} +1 -1
- package/dist/diagnosis/index.d.ts +4 -14
- package/dist/diagnosis/index.d.ts.map +1 -1
- package/dist/diagnosis/index.js +67 -28
- package/dist/diagnosis/index.js.map +1 -1
- package/dist/{dspy-rlm-engine-LRCu61m5.js → dspy-rlm-engine-CSMwudLO.js} +5 -10
- package/dist/dspy-rlm-engine-CSMwudLO.js.map +1 -0
- package/dist/{emitter-HcCmFQl_.d.ts → emitter-DABYYTcH.d.ts} +5 -5
- package/dist/emitter-DABYYTcH.d.ts.map +1 -0
- package/dist/emitter-DbMXUIVP.js.map +1 -1
- package/dist/{engine-3A_4jOlI.d.ts → engine-BvZ0R-36.d.ts} +17 -21
- package/dist/engine-BvZ0R-36.d.ts.map +1 -0
- package/dist/{equal-terms-BtdXayCJ.js → equal-terms-DbPGcVtI.js} +2 -2
- package/dist/equal-terms-DbPGcVtI.js.map +1 -0
- package/dist/{errors-DVZiqS7K.js → errors-BcOs5MKW.js} +2 -8
- package/dist/{errors-DVZiqS7K.js.map → errors-BcOs5MKW.js.map} +1 -1
- package/dist/eval-campaign-BUMIxKTE.js +393 -0
- package/dist/eval-campaign-BUMIxKTE.js.map +1 -0
- package/dist/{evaluation-6Yoi74gM.d.ts → evaluation-BOZ38vOH.d.ts} +7 -7
- package/dist/evaluation-BOZ38vOH.d.ts.map +1 -0
- package/dist/evaluation.d.ts +2 -2
- package/dist/evaluation.js +1 -1
- package/dist/evaluation.js.map +1 -1
- package/dist/{exact-types-ClugMJfI.d.ts → exact-types-CflbJ9f3.d.ts} +2 -2
- package/dist/{exact-types-ClugMJfI.d.ts.map → exact-types-CflbJ9f3.d.ts.map} +1 -1
- package/dist/{exec-ChJ6d5if.js → exec-CpbtOXVt.js} +2 -24
- package/dist/{exec-ChJ6d5if.js.map → exec-CpbtOXVt.js.map} +1 -1
- package/dist/execution-tracks-CpgFPpS5.js.map +1 -1
- package/dist/experiment/index.d.ts +9 -112
- package/dist/experiment/index.d.ts.map +1 -1
- package/dist/experiment/index.js +258 -311
- package/dist/experiment/index.js.map +1 -1
- package/dist/{exporters-X4xwla8A.js → exporters-DWvM16LE.js} +3 -3
- package/dist/exporters-DWvM16LE.js.map +1 -0
- package/dist/{exporters-ChTnR90l.d.ts → exporters-Dk3oEbK_.d.ts} +2 -4
- package/dist/{exporters-ChTnR90l.d.ts.map → exporters-Dk3oEbK_.d.ts.map} +1 -1
- package/dist/{external-optimizer-process-BjMGUuds.js → external-optimizer-process-C3Wm7Vhn.js} +4 -3
- package/dist/external-optimizer-process-C3Wm7Vhn.js.map +1 -0
- package/dist/{external-optimizer-subprocess-BqW0hHcI.js → external-optimizer-subprocess-B5gdLRZv.js} +9 -11
- package/dist/external-optimizer-subprocess-B5gdLRZv.js.map +1 -0
- package/dist/{extract-usage-BrnzRJ6H.js → extract-usage-BZLU01kR.js} +2 -23
- package/dist/{extract-usage-BrnzRJ6H.js.map → extract-usage-BZLU01kR.js.map} +1 -1
- package/dist/{failure-cluster-CbgEDcFJ.d.ts → failure-cluster-DN0t63Z0.d.ts} +4 -43
- package/dist/failure-cluster-DN0t63Z0.d.ts.map +1 -0
- package/dist/{failure-taxonomy-CjabTATj.js → failure-taxonomy-Bx5oWqaW.js} +2 -19
- package/dist/{failure-taxonomy-CjabTATj.js.map → failure-taxonomy-Bx5oWqaW.js.map} +1 -1
- package/dist/{feedback-trajectory-C4EG0nNH.d.ts → feedback-trajectory-BWmhRBGu.d.ts} +7 -9
- package/dist/feedback-trajectory-BWmhRBGu.d.ts.map +1 -0
- package/dist/{semantic-concept-judge-BQF8te0T.js → findings-store-BtTzPL0d.js} +9 -249
- package/dist/findings-store-BtTzPL0d.js.map +1 -0
- package/dist/fuzz.d.ts +19 -62
- package/dist/fuzz.d.ts.map +1 -1
- package/dist/fuzz.js +62 -108
- package/dist/fuzz.js.map +1 -1
- package/dist/{hf-dataset-BR2yhuNn.js → hf-dataset-CKxIJQba.js} +4 -24
- package/dist/hf-dataset-CKxIJQba.js.map +1 -0
- package/dist/hosted/index.d.ts +2 -2
- package/dist/hosted/index.js +2 -2
- package/dist/{index-CyszSg4O.d.ts → index-B16FNdW5.d.ts} +145 -360
- package/dist/index-B16FNdW5.d.ts.map +1 -0
- package/dist/{index-DV-jSzxF.d.ts → index-BLGqZ81N.d.ts} +10 -15
- package/dist/{index-DV-jSzxF.d.ts.map → index-BLGqZ81N.d.ts.map} +1 -1
- package/dist/{index-BO41eGj5.d.ts → index-CX-GAUpw.d.ts} +3 -7
- package/dist/index-CX-GAUpw.d.ts.map +1 -0
- package/dist/{index-DHKEAv3s.d.ts → index-CalAsXMR.d.ts} +8 -68
- package/dist/index-CalAsXMR.d.ts.map +1 -0
- package/dist/{index-BFRO6chs.d.ts → index-CiRwLv2R.d.ts} +5 -69
- package/dist/index-CiRwLv2R.d.ts.map +1 -0
- package/dist/{index-DPcngtwt.d.ts → index-DbMOXYnP.d.ts} +11 -36
- package/dist/index-DbMOXYnP.d.ts.map +1 -0
- package/dist/index.d.ts +211 -218
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +999 -1714
- package/dist/index.js.map +1 -1
- package/dist/{integrity-dLiDe2kD.js → integrity-C8oUeB0g.js} +326 -203
- package/dist/integrity-C8oUeB0g.js.map +1 -0
- package/dist/{integrity-BXOsAb3i.js → integrity-W4CADcFc.js} +3 -7
- package/dist/{integrity-BXOsAb3i.js.map → integrity-W4CADcFc.js.map} +1 -1
- package/dist/{integrity-DAMEDFaC.d.ts → integrity-_qgZLA5p.d.ts} +4 -6
- package/dist/{integrity-DAMEDFaC.d.ts.map → integrity-_qgZLA5p.d.ts.map} +1 -1
- package/dist/{internal-Epl-YBZW.js → internal-BTK91Bqt.js} +3 -3
- package/dist/{internal-Epl-YBZW.js.map → internal-BTK91Bqt.js.map} +1 -1
- package/dist/{interval-CELpye1n.js → interval-Dq9gt7jx.js} +3 -3
- package/dist/{interval-CELpye1n.js.map → interval-Dq9gt7jx.js.map} +1 -1
- package/dist/{journal-DfRz9kps.js → journal-C7om8Gum.js} +157 -147
- package/dist/journal-C7om8Gum.js.map +1 -0
- package/dist/json-BhdsJaOQ.js +111 -0
- package/dist/json-BhdsJaOQ.js.map +1 -0
- package/dist/{judge-calibration-BpCy5XQl.js → judge-calibration-BkXMIWA4.js} +3 -3
- package/dist/{judge-calibration-BpCy5XQl.js.map → judge-calibration-BkXMIWA4.js.map} +1 -1
- package/dist/{judge-gate-iY9s4L44.js → judge-gate-Co5tuh57.js} +4 -27
- package/dist/{judge-gate-iY9s4L44.js.map → judge-gate-Co5tuh57.js.map} +1 -1
- package/dist/{judge-gate-CE7CQAgt.d.ts → judge-gate-DsL0yFcb.d.ts} +8 -9
- package/dist/judge-gate-DsL0yFcb.d.ts.map +1 -0
- package/dist/{kind-factory-BobI5Jy3.js → kind-factory-Gy4fXixd.js} +88 -17
- package/dist/kind-factory-Gy4fXixd.js.map +1 -0
- package/dist/ledger-core/index.d.ts +2 -2
- package/dist/ledger-core/index.js +4 -4
- package/dist/ledger-core/lock-holder.d.ts +2 -0
- package/dist/ledger-core/lock-holder.js +181 -0
- package/dist/ledger-core/lock-holder.js.map +1 -0
- package/dist/{ledger-core-Gq7yp8lP.js → ledger-core-CAxUdDk0.js} +5 -84
- package/dist/ledger-core-CAxUdDk0.js.map +1 -0
- package/dist/{llm-client-CyBAoYiX.js → llm-client-_Y6ic-tf.js} +243 -355
- package/dist/llm-client-_Y6ic-tf.js.map +1 -0
- package/dist/{llm-judge-CG12SQJq.js → llm-judge-Djxh-Uhs.js} +662 -482
- package/dist/llm-judge-Djxh-Uhs.js.map +1 -0
- package/dist/lock-holder-DaJbfpci.d.ts +86 -0
- package/dist/lock-holder-DaJbfpci.d.ts.map +1 -0
- package/dist/matrix/index.d.ts +3 -3
- package/dist/matrix/index.js +3 -2
- package/dist/{matrix-Dm0BQW7U.js → matrix-B8l-Nsxd.js} +3 -88
- package/dist/matrix-B8l-Nsxd.js.map +1 -0
- package/dist/{matrix-DSrSxjjy.d.ts → matrix-CCSBna4q.d.ts} +9 -18
- package/dist/matrix-CCSBna4q.d.ts.map +1 -0
- package/dist/{mean-DHoMiudD.js → mean-BbA_JCzW.js} +39 -5
- package/dist/mean-BbA_JCzW.js.map +1 -0
- package/dist/meta-eval/index.d.ts +5 -5
- package/dist/meta-eval/index.js +10 -10
- package/dist/metrics-BKaPBtIG.js.map +1 -1
- package/dist/{mint-DNU8QPG4.d.ts → mint-BRZXuwRi.d.ts} +4 -4
- package/dist/{mint-DNU8QPG4.d.ts.map → mint-BRZXuwRi.d.ts.map} +1 -1
- package/dist/{mint-QaD5cA0u.js → mint-CbdwjTPW.js} +4 -4
- package/dist/{mint-QaD5cA0u.js.map → mint-CbdwjTPW.js.map} +1 -1
- package/dist/{multi-layer-verifier-BUaQ4C17.d.ts → multi-layer-verifier-DEgMUk6v.d.ts} +2 -2
- package/dist/{multi-layer-verifier-BUaQ4C17.d.ts.map → multi-layer-verifier-DEgMUk6v.d.ts.map} +1 -1
- package/dist/{multiplicity-DQUFcbW4.js → multiplicity-Sg0U7h8j.js} +2 -2
- package/dist/{multiplicity-DQUFcbW4.js.map → multiplicity-Sg0U7h8j.js.map} +1 -1
- package/dist/multishot/golden/index.d.ts +1 -23
- package/dist/multishot/golden/index.d.ts.map +1 -1
- package/dist/multishot/golden/index.js +3 -3
- package/dist/multishot/golden/index.js.map +1 -1
- package/dist/multishot/index.d.ts +3 -12
- package/dist/multishot/index.d.ts.map +1 -1
- package/dist/multishot/index.js +4 -3
- package/dist/multishot/index.js.map +1 -1
- package/dist/openapi.json +114 -10
- package/dist/{otel-spans-B9tUXRHF.js → otel-spans-CdN909k1.js} +3 -3
- package/dist/{otel-spans-B9tUXRHF.js.map → otel-spans-CdN909k1.js.map} +1 -1
- package/dist/{paired-arms-CwMGJsrS.js → paired-arms-Ct4LTKc1.js} +32 -9
- package/dist/paired-arms-Ct4LTKc1.js.map +1 -0
- package/dist/{paired-binary-CvpFHfKZ.js → paired-binary-B_nejA44.js} +3 -36
- package/dist/paired-binary-B_nejA44.js.map +1 -0
- package/dist/{paired-promotion-decision-DPKz8ZnF.d.ts → paired-promotion-decision-CQMJ5xGN.d.ts} +2 -34
- package/dist/paired-promotion-decision-CQMJ5xGN.d.ts.map +1 -0
- package/dist/{paired-promotion-decision-DsAPYGCm.js → paired-promotion-decision-D0SHb-ZL.js} +3 -3
- package/dist/{paired-promotion-decision-DsAPYGCm.js.map → paired-promotion-decision-D0SHb-ZL.js.map} +1 -1
- package/dist/{pareto-Cm6ndrWN.js → pareto-CTv8vozZ.js} +11 -11
- package/dist/pareto-CTv8vozZ.js.map +1 -0
- package/dist/pipelines/index.d.ts +16 -19
- package/dist/pipelines/index.d.ts.map +1 -1
- package/dist/pipelines/index.js +4 -68
- package/dist/pipelines/index.js.map +1 -1
- package/dist/{power-and-mde-Hj2ubb4B.js → power-and-mde-N5nU4_Ly.js} +3 -3
- package/dist/{power-and-mde-Hj2ubb4B.js.map → power-and-mde-N5nU4_Ly.js.map} +1 -1
- package/dist/{prime-protocol-CHKgA3a6.js → prime-protocol-BFgGrEMP.js} +3 -3
- package/dist/prime-protocol-BFgGrEMP.js.map +1 -0
- package/dist/{prime-protocol-HiB9HX7E.d.ts → prime-protocol-BWG2DQIk.d.ts} +3 -21
- package/dist/prime-protocol-BWG2DQIk.d.ts.map +1 -0
- package/dist/profile-cell.d.ts +2 -2
- package/dist/profile-cell.js +2 -2
- package/dist/{promotion-gate-BawrdPYr.d.ts → promotion-gate-CxEHRsZW.d.ts} +7 -8
- package/dist/{promotion-gate-BawrdPYr.d.ts.map → promotion-gate-CxEHRsZW.d.ts.map} +1 -1
- package/dist/{promotion-policy-KO57gbyV.js → promotion-policy-6A8osGr_.js} +4 -4
- package/dist/{promotion-policy-KO57gbyV.js.map → promotion-policy-6A8osGr_.js.map} +1 -1
- package/dist/{proposal-findings-CY1xKn_a.js → proposal-findings-n-5WBbEx.js} +3 -3
- package/dist/proposal-findings-n-5WBbEx.js.map +1 -0
- package/dist/{query-BUCZCK7F.js → query-B_RZ36an.js} +5 -5
- package/dist/query-B_RZ36an.js.map +1 -0
- package/dist/{query-DK1nWcmp.d.ts → query-Cmv_U8vf.d.ts} +4 -24
- package/dist/{query-DK1nWcmp.d.ts.map → query-Cmv_U8vf.d.ts.map} +1 -1
- package/dist/{random-ByUSnV9w.js → random-DDDcC7YU.js} +2 -2
- package/dist/{random-ByUSnV9w.js.map → random-DDDcC7YU.js.map} +1 -1
- package/dist/{raw-provider-sink-DoHz4JNG.js → raw-provider-sink-75w4FWBj.js} +2 -2
- package/dist/{raw-provider-sink-DoHz4JNG.js.map → raw-provider-sink-75w4FWBj.js.map} +1 -1
- package/dist/{redact-mtCCcT8z.d.ts → redact-DXdlFb_U.d.ts} +2 -3
- package/dist/redact-DXdlFb_U.d.ts.map +1 -0
- package/dist/{redact-B5xXKqQ3.js → redact-mtkTiJVk.js} +2 -7
- package/dist/{redact-B5xXKqQ3.js.map → redact-mtkTiJVk.js.map} +1 -1
- package/dist/{registry-D7_hm2fK.d.ts → registry-ssNoHzwD.d.ts} +4 -4
- package/dist/{registry-D7_hm2fK.d.ts.map → registry-ssNoHzwD.d.ts.map} +1 -1
- package/dist/{release-confidence-CpuP65S5.js → release-confidence-CYIFH-fp.js} +6 -11
- package/dist/release-confidence-CYIFH-fp.js.map +1 -0
- package/dist/{report-command-SC9nqb4M.js → render-Cs34y0iX.js} +625 -587
- package/dist/render-Cs34y0iX.js.map +1 -0
- package/dist/reporting.d.ts +6 -6
- package/dist/reporting.js +8 -8
- package/dist/{researcher-CEcfku-T.d.ts → researcher-GU1tV4dn.d.ts} +9 -9
- package/dist/{researcher-CEcfku-T.d.ts.map → researcher-GU1tV4dn.d.ts.map} +1 -1
- package/dist/{reward-CpCmAM8L.d.ts → reward-DrZ71vnf.d.ts} +3 -26
- package/dist/reward-DrZ71vnf.d.ts.map +1 -0
- package/dist/{reward-hacking-E0d-WVcP.js → reward-hacking-ByuETaIb.js} +3 -3
- package/dist/{reward-hacking-E0d-WVcP.js.map → reward-hacking-ByuETaIb.js.map} +1 -1
- package/dist/{reward-hacking-RVdZ6Kkt.d.ts → reward-hacking-E52wq86n.d.ts} +5 -18
- package/dist/reward-hacking-E52wq86n.d.ts.map +1 -0
- package/dist/reward-nw2xZGZG.js.map +1 -1
- package/dist/rl.d.ts +117 -295
- package/dist/rl.d.ts.map +1 -1
- package/dist/rl.js +27 -747
- package/dist/rl.js.map +1 -1
- package/dist/rollout/index.d.ts +5 -5
- package/dist/rollout/index.js +7 -8
- package/dist/{rollout-DZV1t2Wg.js → rollout-Dd1ucT_M.js} +88 -13
- package/dist/rollout-Dd1ucT_M.js.map +1 -0
- package/dist/{rubric-predictive-validity-DaFW70y9.js → rubric-predictive-validity-D3_oI72N.js} +3 -3
- package/dist/{rubric-predictive-validity-DaFW70y9.js.map → rubric-predictive-validity-D3_oI72N.js.map} +1 -1
- package/dist/{rubric-predictive-validity-C03EC7ZE.d.ts → rubric-predictive-validity-DiwT8PbL.d.ts} +2 -2
- package/dist/{rubric-predictive-validity-C03EC7ZE.d.ts.map → rubric-predictive-validity-DiwT8PbL.d.ts.map} +1 -1
- package/dist/{run-record-C1E24G2A.d.ts → run-record-CaxbLq6Y.d.ts} +4 -10
- package/dist/run-record-CaxbLq6Y.d.ts.map +1 -0
- package/dist/{run-record-C5e7FjhJ.js → run-record-CysKLB93.js} +3 -3
- package/dist/run-record-CysKLB93.js.map +1 -0
- package/dist/{run-record-Boc5IUTp.js → run-record-DhEJgoPz.js} +4 -4
- package/dist/{run-record-Boc5IUTp.js.map → run-record-DhEJgoPz.js.map} +1 -1
- package/dist/sandbox-harness-BlSOu4LX.d.ts.map +1 -1
- package/dist/{schema-CSf6qWgZ.js → schema-Bt2vLFm3.js} +2 -14
- package/dist/schema-Bt2vLFm3.js.map +1 -0
- package/dist/schema-C-ziyJD7.d.ts.map +1 -1
- package/dist/{schema-BuiujZ-g.js → schema-CvhfLjtZ.js} +78 -48
- package/dist/schema-CvhfLjtZ.js.map +1 -0
- package/dist/{schema-2g7trUwH.d.ts → schema-D6EVKzTB.d.ts} +4 -5
- package/dist/schema-D6EVKzTB.d.ts.map +1 -0
- package/dist/search/index.d.ts +3 -31
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +4 -4
- package/dist/{search-kernel-DyNEa6IU.d.ts → search-kernel-p9JB3SmL.d.ts} +10 -27
- package/dist/search-kernel-p9JB3SmL.d.ts.map +1 -0
- package/dist/{search-ledger-CVUGLDZp.js → search-ledger-ClpN4I3e.js} +7 -7
- package/dist/{search-ledger-CVUGLDZp.js.map → search-ledger-ClpN4I3e.js.map} +1 -1
- package/dist/{search-ledger-file-DDQUgvCg.js → search-ledger-file-Bd5Tioq6.js} +4 -4
- package/dist/search-ledger-file-Bd5Tioq6.js.map +1 -0
- package/dist/{search-shipper-BOSD46qv.js → search-shipper-Bg2HW3Uv.js} +4 -4
- package/dist/search-shipper-Bg2HW3Uv.js.map +1 -0
- package/dist/{search-summary-BQCSWf1g.js → search-summary-CrBuvVnf.js} +5 -5
- package/dist/{search-summary-BQCSWf1g.js.map → search-summary-CrBuvVnf.js.map} +1 -1
- package/dist/{sequential-CzK5DarL.js → sequential-BVv1sjsw.js} +2 -32
- package/dist/{sequential-CzK5DarL.js.map → sequential-BVv1sjsw.js.map} +1 -1
- package/dist/{sequential-Bf_pbE50.js → sequential-CimQrbjv.js} +5 -5
- package/dist/sequential-CimQrbjv.js.map +1 -0
- package/dist/{sequential-BhsrMupG.d.ts → sequential-KwGspfeR.d.ts} +2 -9
- package/dist/{sequential-BhsrMupG.d.ts.map → sequential-KwGspfeR.d.ts.map} +1 -1
- package/dist/{sequential-eprocess-DM_qENCl.js → sequential-eprocess-DodI6RoF.js} +2 -2
- package/dist/{sequential-eprocess-DM_qENCl.js.map → sequential-eprocess-DodI6RoF.js.map} +1 -1
- package/dist/{server-e9oWO_bN.js → server-C6M0qR8h.js} +101 -101
- package/dist/server-C6M0qR8h.js.map +1 -0
- package/dist/{single-run-lock-CV9Eyd_q.js → single-run-lock-Dekd8_Wv.js} +7 -7
- package/dist/single-run-lock-Dekd8_Wv.js.map +1 -0
- package/dist/{skillopt-optimization-method-BiwA8nfX.js → skillopt-optimization-method-5dlex7MJ.js} +1386 -1184
- package/dist/skillopt-optimization-method-5dlex7MJ.js.map +1 -0
- package/dist/{spans-BHAUXMGN.d.ts → spans-CVngGij3.d.ts} +2 -2
- package/dist/{spans-BHAUXMGN.d.ts.map → spans-CVngGij3.d.ts.map} +1 -1
- package/dist/{statistical-heldout-CYpGaoDH.d.ts → statistical-heldout-BHfLZHrm.d.ts} +8 -67
- package/dist/statistical-heldout-BHfLZHrm.d.ts.map +1 -0
- package/dist/{statistical-heldout-42NlCNDe.js → statistical-heldout-Bksv92Th.js} +3 -3
- package/dist/statistical-heldout-Bksv92Th.js.map +1 -0
- package/dist/{steps-Bg5-KVx1.d.ts → steps-DlepJPwD.d.ts} +2 -56
- package/dist/steps-DlepJPwD.d.ts.map +1 -0
- package/dist/{store-C4avFjIi.d.ts → store-B3nWRy3B.d.ts} +2 -2
- package/dist/{store-C4avFjIi.d.ts.map → store-B3nWRy3B.d.ts.map} +1 -1
- package/dist/{store-otlp-DJ9dtA5x.js → store-otlp-BteDAbHK.js} +3 -3
- package/dist/{store-otlp-DJ9dtA5x.js.map → store-otlp-BteDAbHK.js.map} +1 -1
- package/dist/{store-tool-spans-CIX5arAG.js → store-tool-spans-D5l_OfTJ.js} +8 -8
- package/dist/store-tool-spans-D5l_OfTJ.js.map +1 -0
- package/dist/{store-tool-spans-DdCSPa7C.d.ts → store-tool-spans-DZS0HWVf.d.ts} +9 -18
- package/dist/store-tool-spans-DZS0HWVf.d.ts.map +1 -0
- package/dist/storyboard/index.d.ts +4 -11
- package/dist/storyboard/index.d.ts.map +1 -1
- package/dist/storyboard/index.js +1 -16
- package/dist/storyboard/index.js.map +1 -1
- package/dist/{summary-report-V_JACR4Y.js → summary-report-BsXJoYX5.js} +88 -10
- package/dist/summary-report-BsXJoYX5.js.map +1 -0
- package/dist/{summary-report-bdFDXq0b.d.ts → summary-report-CkbRcSuu.d.ts} +25 -19
- package/dist/summary-report-CkbRcSuu.d.ts.map +1 -0
- package/dist/supervisor-run/index.d.ts +60 -28
- package/dist/supervisor-run/index.d.ts.map +1 -1
- package/dist/supervisor-run/index.js +4 -458
- package/dist/supervisor-run/index.js.map +1 -1
- package/dist/{systemone-BomhHr2c.d.ts → systemone-BMzDJb1i.d.ts} +5 -5
- package/dist/{systemone-BomhHr2c.d.ts.map → systemone-BMzDJb1i.d.ts.map} +1 -1
- package/dist/systemone-protocol.js +1 -1
- package/dist/{systemone-review-CUVcQJu6.d.ts → systemone-review-CwE6JGIp.d.ts} +2 -2
- package/dist/{systemone-review-CUVcQJu6.d.ts.map → systemone-review-CwE6JGIp.d.ts.map} +1 -1
- package/dist/{systemone-review-D7sXwsqq.js → systemone-review-DzdOJ8I6.js} +3 -3
- package/dist/{systemone-review-D7sXwsqq.js.map → systemone-review-DzdOJ8I6.js.map} +1 -1
- package/dist/systemone.d.ts +5 -5
- package/dist/systemone.js +5 -5
- package/dist/systemone.js.map +1 -1
- package/dist/{task-failure-attributes-hEmASjix.js → task-failure-attributes-BMsblaDh.js} +3 -3
- package/dist/task-failure-attributes-BMsblaDh.js.map +1 -0
- package/dist/{terminal-record-DZyQZ3pz.js → terminal-record-D4Rv-j1W.js} +244 -196
- package/dist/terminal-record-D4Rv-j1W.js.map +1 -0
- package/dist/{tool-groups-C3NEcdCM.d.ts → tool-groups-DyNz2JZ_.d.ts} +3 -3
- package/dist/tool-groups-DyNz2JZ_.d.ts.map +1 -0
- package/dist/{tool-waste-BKgvd-TP.d.ts → tool-waste-CkjzWmeY.d.ts} +25 -28
- package/dist/tool-waste-CkjzWmeY.d.ts.map +1 -0
- package/dist/{tool-waste-BlesqTqW.js → tool-waste-DLsjS_p-.js} +5 -5
- package/dist/{tool-waste-BlesqTqW.js.map → tool-waste-DLsjS_p-.js.map} +1 -1
- package/dist/{trace-questions-CM2CAocU.d.ts → trace-questions-xxwgsuMi.d.ts} +4 -9
- package/dist/{trace-questions-CM2CAocU.d.ts.map → trace-questions-xxwgsuMi.d.ts.map} +1 -1
- package/dist/trace-repair/index.d.ts +14 -211
- package/dist/trace-repair/index.d.ts.map +1 -1
- package/dist/trace-repair/index.js +865 -981
- package/dist/trace-repair/index.js.map +1 -1
- package/dist/traces.d.ts +18 -46
- package/dist/traces.d.ts.map +1 -1
- package/dist/traces.js +13 -13
- package/dist/traces.js.map +1 -1
- package/dist/trajectory-replay/index.d.ts +7 -118
- package/dist/trajectory-replay/index.d.ts.map +1 -1
- package/dist/trajectory-replay/index.js +921 -869
- package/dist/trajectory-replay/index.js.map +1 -1
- package/dist/{tree-C1XYeXvy.js → tree-B5e1uAeL.js} +132 -21
- package/dist/tree-B5e1uAeL.js.map +1 -0
- package/dist/{types-Cbe2fWBa.d.ts → types-BKCzzmit.d.ts} +3 -3
- package/dist/{types-Cbe2fWBa.d.ts.map → types-BKCzzmit.d.ts.map} +1 -1
- package/dist/{types-B3jzCp0p.js → types-BXgASBCL.js} +2 -2
- package/dist/{types-B3jzCp0p.js.map → types-BXgASBCL.js.map} +1 -1
- package/dist/{types-C1tnkEgM.d.ts → types-CW8ewATZ.d.ts} +4 -113
- package/dist/types-CW8ewATZ.d.ts.map +1 -0
- package/dist/{types-BqkVmHfv.d.ts → types-CmXY0PQf.d.ts} +2 -4
- package/dist/types-CmXY0PQf.d.ts.map +1 -0
- package/dist/{types-C02qtnG8.d.ts → types-D-mgRzlh.d.ts} +7 -28
- package/dist/types-D-mgRzlh.d.ts.map +1 -0
- package/dist/{types-IXD2HJzu.js → types-DqFMNTgK.js} +2 -4
- package/dist/types-DqFMNTgK.js.map +1 -0
- package/dist/{types-Cq8mSbq8.d.ts → types-DtkO1G9L.d.ts} +7 -9
- package/dist/{types-Cq8mSbq8.d.ts.map → types-DtkO1G9L.d.ts.map} +1 -1
- package/dist/{verdict-Dl0tiT1X.js → verdict-BGQmxQ8A.js} +3 -3
- package/dist/verdict-BGQmxQ8A.js.map +1 -0
- package/dist/{verdict-E4eRNf7-.d.ts → verdict-C24NELtN.d.ts} +2 -15
- package/dist/{verdict-E4eRNf7-.d.ts.map → verdict-C24NELtN.d.ts.map} +1 -1
- package/dist/{verdict-cache-Bm8EKL2s.js → verdict-cache-CL_7tePD.js} +2 -2
- package/dist/verdict-cache-CL_7tePD.js.map +1 -0
- package/dist/wire/index.d.ts +31 -410
- package/dist/wire/index.d.ts.map +1 -1
- package/dist/wire/index.js +2 -2
- package/docs/changes/jev-evidence-review.md +1 -1
- package/docs/changes/jev-product-adoption.md +1 -1
- package/docs/changes/jev-recorded-evidence.md +1 -1
- package/docs/design/statistics-decisions.md +18 -18
- package/docs/design.md +1 -1
- package/docs/eval-surface-map.md +1 -0
- package/docs/evaluation-integrity.md +1 -1
- package/docs/profile-json-identity.md +1 -2
- package/docs/proofs/campaign-attempt-retention-20261001/README.md +2 -2
- package/docs/public-api.md +158 -538
- package/docs/rollout.md +1 -1
- package/docs/trace-repair-admission.md +1 -1
- package/docs/wire-protocol.md +1 -1
- package/package.json +7 -2
- package/dist/active-curriculum-B_Lc9kfO.js +0 -61
- package/dist/active-curriculum-B_Lc9kfO.js.map +0 -1
- package/dist/agent-profile-VFcQncbW.d.ts.map +0 -1
- package/dist/agent-profile-cell-BK8mlqlq.js.map +0 -1
- package/dist/agent-profile-cell-BNp-Js9F.d.ts.map +0 -1
- package/dist/agreement-irr-BEWLIF3_.js.map +0 -1
- package/dist/analyze-runs-C84irm4i.js.map +0 -1
- package/dist/baseline-Udi_PLuT.js +0 -259
- package/dist/baseline-Udi_PLuT.js.map +0 -1
- package/dist/benchmark-CXmVVHH2.js +0 -562
- package/dist/benchmark-CXmVVHH2.js.map +0 -1
- package/dist/benchmark-command-By0vh8q7.js.map +0 -1
- package/dist/campaign-BudZ70zo.js.map +0 -1
- package/dist/chat-json-call-puMArmtW.js.map +0 -1
- package/dist/claude-jsonl-dZir12m6.js +0 -86
- package/dist/claude-jsonl-dZir12m6.js.map +0 -1
- package/dist/client-BzL9niqi.d.ts.map +0 -1
- package/dist/cost-ledger-BP8V4kUQ.js.map +0 -1
- package/dist/counterfactual-CPaWN99-.d.ts +0 -60
- package/dist/counterfactual-CPaWN99-.d.ts.map +0 -1
- package/dist/counterfactual-Dn3veueY.js +0 -98
- package/dist/counterfactual-Dn3veueY.js.map +0 -1
- package/dist/default-registry-COhk9g36.js.map +0 -1
- package/dist/default-registry-DzHiGruW.d.ts.map +0 -1
- package/dist/define-agent-eval-CNTPzIkp.js.map +0 -1
- package/dist/define-agent-eval-WSck0CZJ.d.ts.map +0 -1
- package/dist/dspy-rlm-engine-LRCu61m5.js.map +0 -1
- package/dist/effect-sizes-BhzEpXMc.js +0 -82
- package/dist/effect-sizes-BhzEpXMc.js.map +0 -1
- package/dist/emitter-HcCmFQl_.d.ts.map +0 -1
- package/dist/engine-3A_4jOlI.d.ts.map +0 -1
- package/dist/equal-terms-BtdXayCJ.js.map +0 -1
- package/dist/eval-campaign-90jeaCAI.js +0 -343
- package/dist/eval-campaign-90jeaCAI.js.map +0 -1
- package/dist/evaluation-6Yoi74gM.d.ts.map +0 -1
- package/dist/exporters-X4xwla8A.js.map +0 -1
- package/dist/external-optimizer-process-BjMGUuds.js.map +0 -1
- package/dist/external-optimizer-subprocess-BqW0hHcI.js.map +0 -1
- package/dist/failure-cluster-CbgEDcFJ.d.ts.map +0 -1
- package/dist/feedback-trajectory-C4EG0nNH.d.ts.map +0 -1
- package/dist/hf-dataset-BR2yhuNn.js.map +0 -1
- package/dist/index-BFRO6chs.d.ts.map +0 -1
- package/dist/index-BO41eGj5.d.ts.map +0 -1
- package/dist/index-CyszSg4O.d.ts.map +0 -1
- package/dist/index-DHKEAv3s.d.ts.map +0 -1
- package/dist/index-DPcngtwt.d.ts.map +0 -1
- package/dist/integrity-dLiDe2kD.js.map +0 -1
- package/dist/journal-DfRz9kps.js.map +0 -1
- package/dist/judge-gate-CE7CQAgt.d.ts.map +0 -1
- package/dist/kind-factory-BobI5Jy3.js.map +0 -1
- package/dist/ledger-core-Gq7yp8lP.js.map +0 -1
- package/dist/llm-client-CyBAoYiX.js.map +0 -1
- package/dist/llm-judge-CG12SQJq.js.map +0 -1
- package/dist/matrix-DSrSxjjy.d.ts.map +0 -1
- package/dist/matrix-Dm0BQW7U.js.map +0 -1
- package/dist/mean-DHoMiudD.js.map +0 -1
- package/dist/normal-DsJZtrJc.js +0 -25
- package/dist/normal-DsJZtrJc.js.map +0 -1
- package/dist/paired-arms-CwMGJsrS.js.map +0 -1
- package/dist/paired-binary-CvpFHfKZ.js.map +0 -1
- package/dist/paired-promotion-decision-DPKz8ZnF.d.ts.map +0 -1
- package/dist/pareto-Cm6ndrWN.js.map +0 -1
- package/dist/prime-protocol-CHKgA3a6.js.map +0 -1
- package/dist/prime-protocol-HiB9HX7E.d.ts.map +0 -1
- package/dist/produced-state-BsDmnwxc.js.map +0 -1
- package/dist/proposal-findings-CY1xKn_a.js.map +0 -1
- package/dist/query-BUCZCK7F.js.map +0 -1
- package/dist/redact-mtCCcT8z.d.ts.map +0 -1
- package/dist/release-confidence-CpuP65S5.js.map +0 -1
- package/dist/report-command-SC9nqb4M.js.map +0 -1
- package/dist/reward-CpCmAM8L.d.ts.map +0 -1
- package/dist/reward-hacking-RVdZ6Kkt.d.ts.map +0 -1
- package/dist/rollout-DZV1t2Wg.js.map +0 -1
- package/dist/run-record-C1E24G2A.d.ts.map +0 -1
- package/dist/run-record-C5e7FjhJ.js.map +0 -1
- package/dist/schema-2g7trUwH.d.ts.map +0 -1
- package/dist/schema-BuiujZ-g.js.map +0 -1
- package/dist/schema-CSf6qWgZ.js.map +0 -1
- package/dist/search-kernel-DyNEa6IU.d.ts.map +0 -1
- package/dist/search-ledger-file-DDQUgvCg.js.map +0 -1
- package/dist/search-shipper-BOSD46qv.js.map +0 -1
- package/dist/semantic-concept-judge-BQF8te0T.js.map +0 -1
- package/dist/sequential-Bf_pbE50.js.map +0 -1
- package/dist/server-e9oWO_bN.js.map +0 -1
- package/dist/single-run-lock-CV9Eyd_q.js.map +0 -1
- package/dist/skillopt-optimization-method-BiwA8nfX.js.map +0 -1
- package/dist/statistical-heldout-42NlCNDe.js.map +0 -1
- package/dist/statistical-heldout-CYpGaoDH.d.ts.map +0 -1
- package/dist/steps-Bg5-KVx1.d.ts.map +0 -1
- package/dist/store-tool-spans-CIX5arAG.js.map +0 -1
- package/dist/store-tool-spans-DdCSPa7C.d.ts.map +0 -1
- package/dist/student-t-DVPW7CdL.js +0 -39
- package/dist/student-t-DVPW7CdL.js.map +0 -1
- package/dist/summary-report-V_JACR4Y.js.map +0 -1
- package/dist/summary-report-bdFDXq0b.d.ts.map +0 -1
- package/dist/task-failure-attributes-hEmASjix.js.map +0 -1
- package/dist/terminal-record-DZyQZ3pz.js.map +0 -1
- package/dist/tool-groups-C3NEcdCM.d.ts.map +0 -1
- package/dist/tool-waste-BKgvd-TP.d.ts.map +0 -1
- package/dist/trajectory-Y1fmdlw7.d.ts +0 -24
- package/dist/trajectory-Y1fmdlw7.d.ts.map +0 -1
- package/dist/tree-C1XYeXvy.js.map +0 -1
- package/dist/types-BqkVmHfv.d.ts.map +0 -1
- package/dist/types-C02qtnG8.d.ts.map +0 -1
- package/dist/types-C1tnkEgM.d.ts.map +0 -1
- package/dist/types-IXD2HJzu.js.map +0 -1
- package/dist/usage-receipt-Cx3xNeyB.js +0 -76
- package/dist/usage-receipt-Cx3xNeyB.js.map +0 -1
- package/dist/verdict-Dl0tiT1X.js.map +0 -1
- package/dist/verdict-cache-Bm8EKL2s.js.map +0 -1
- package/docs/design/self-improvement-evidence-audit.md +0 -263
|
@@ -1,110 +1,8 @@
|
|
|
1
|
-
import { t as AgentEvalError } from "./errors-
|
|
2
|
-
import { c as costForTokenPricing } from "./cost-ledger-
|
|
1
|
+
import { t as AgentEvalError } from "./errors-BcOs5MKW.js";
|
|
2
|
+
import { c as costForTokenPricing } from "./cost-ledger-D0352Z4d.js";
|
|
3
|
+
import { a as LlmCallError, o as LlmResponseError, r as parseJsonResult } from "./json-BhdsJaOQ.js";
|
|
4
|
+
import { a as providerFromBaseUrl, i as defaultProviderRedactor } from "./raw-provider-sink-75w4FWBj.js";
|
|
3
5
|
import { t as newRecordId } from "./record-id-DUgsK5qp.js";
|
|
4
|
-
import { a as providerFromBaseUrl, i as defaultProviderRedactor } from "./raw-provider-sink-DoHz4JNG.js";
|
|
5
|
-
//#region src/llm-client/errors.ts
|
|
6
|
-
var LlmCallError = class extends AgentEvalError {
|
|
7
|
-
status;
|
|
8
|
-
body;
|
|
9
|
-
model;
|
|
10
|
-
constructor(message, status, body, model) {
|
|
11
|
-
super("judge", message);
|
|
12
|
-
this.status = status;
|
|
13
|
-
this.body = body;
|
|
14
|
-
this.model = model;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
/** A provider response completed and incurred measurable usage, but its content
|
|
18
|
-
* could not satisfy the caller's response contract. The response envelope is
|
|
19
|
-
* retained so accounting can commit the receipt before the error propagates. */
|
|
20
|
-
var LlmResponseError = class extends AgentEvalError {
|
|
21
|
-
result;
|
|
22
|
-
constructor(message, result, options) {
|
|
23
|
-
super("judge", message, options);
|
|
24
|
-
this.result = result;
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
//#endregion
|
|
28
|
-
//#region src/llm-client/json.ts
|
|
29
|
-
/**
|
|
30
|
-
* Strip a ```json / ``` code fence if the model emitted one.
|
|
31
|
-
* Idempotent for naked JSON. Some models (claude-code via router, certain
|
|
32
|
-
* deepseek models) wrap output even under json_object.
|
|
33
|
-
*/
|
|
34
|
-
function stripFencedJson(raw) {
|
|
35
|
-
const trimmed = raw.trim();
|
|
36
|
-
const m = trimmed.match(/^```(?:json)?\s*\n?([\s\S]*?)\n?```\s*$/);
|
|
37
|
-
return m ? m[1].trim() : trimmed;
|
|
38
|
-
}
|
|
39
|
-
function extractJsonPayload(raw) {
|
|
40
|
-
const stripped = stripFencedJson(raw);
|
|
41
|
-
try {
|
|
42
|
-
JSON.parse(stripped);
|
|
43
|
-
return stripped;
|
|
44
|
-
} catch {
|
|
45
|
-
if (stripped.startsWith("{") || stripped.startsWith("[")) return stripped;
|
|
46
|
-
}
|
|
47
|
-
const starts = [...stripped.matchAll(/[[{]/g)].map((match) => match.index).filter((index) => index != null);
|
|
48
|
-
for (const start of starts) {
|
|
49
|
-
const candidate = extractBalancedJson(stripped, start);
|
|
50
|
-
if (!candidate) continue;
|
|
51
|
-
try {
|
|
52
|
-
JSON.parse(candidate);
|
|
53
|
-
return candidate;
|
|
54
|
-
} catch {}
|
|
55
|
-
}
|
|
56
|
-
return stripped;
|
|
57
|
-
}
|
|
58
|
-
function extractBalancedJson(input, start) {
|
|
59
|
-
const opener = input[start];
|
|
60
|
-
const closer = opener === "{" ? "}" : opener === "[" ? "]" : null;
|
|
61
|
-
if (!closer) return null;
|
|
62
|
-
const stack = [closer];
|
|
63
|
-
let isInString = false;
|
|
64
|
-
let isEscaped = false;
|
|
65
|
-
for (let i = start + 1; i < input.length; i++) {
|
|
66
|
-
const char = input[i];
|
|
67
|
-
if (isEscaped) {
|
|
68
|
-
isEscaped = false;
|
|
69
|
-
continue;
|
|
70
|
-
}
|
|
71
|
-
if (char === "\\") {
|
|
72
|
-
isEscaped = isInString;
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
if (char === "\"") {
|
|
76
|
-
isInString = !isInString;
|
|
77
|
-
continue;
|
|
78
|
-
}
|
|
79
|
-
if (isInString) continue;
|
|
80
|
-
if (char === "{") stack.push("}");
|
|
81
|
-
else if (char === "[") stack.push("]");
|
|
82
|
-
else if (char === stack[stack.length - 1]) {
|
|
83
|
-
stack.pop();
|
|
84
|
-
if (stack.length === 0) return input.slice(start, i + 1);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return null;
|
|
88
|
-
}
|
|
89
|
-
function parseJsonResult(result, jsonPayloadMode) {
|
|
90
|
-
try {
|
|
91
|
-
if (result.finishReason === "length") throw new Error(`LLM returned truncated JSON content (model=${result.model}, finishReason=length)`);
|
|
92
|
-
return parseJsonSafely(result.content, result.model, jsonPayloadMode);
|
|
93
|
-
} catch (error) {
|
|
94
|
-
if (error instanceof LlmResponseError) throw error;
|
|
95
|
-
const cause = error instanceof Error ? error : new Error(String(error));
|
|
96
|
-
throw new LlmResponseError(cause.message, result, { cause });
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
function parseJsonSafely(content, model, jsonPayloadMode) {
|
|
100
|
-
const payload = jsonPayloadMode === "exact" ? content : extractJsonPayload(content);
|
|
101
|
-
try {
|
|
102
|
-
return JSON.parse(payload);
|
|
103
|
-
} catch {
|
|
104
|
-
throw new Error(`LLM returned non-JSON content (model=${model})`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
//#endregion
|
|
108
6
|
//#region src/abort-signal.ts
|
|
109
7
|
/** Combine active cancellation sources without wrapping a single source. */
|
|
110
8
|
function combineAbortSignals(...signals) {
|
|
@@ -690,269 +588,259 @@ function costReceiptFromLlmError(error, customTokenPricing) {
|
|
|
690
588
|
async function callLlm(req, opts = {}) {
|
|
691
589
|
return callLlmAttempts(req, opts, false);
|
|
692
590
|
}
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
async function callLlmAttempts(req, opts, allowSchemaFallback) {
|
|
591
|
+
const ENDPOINT = "/chat/completions";
|
|
592
|
+
function startAttemptRun(req, opts, allowSchemaFallback) {
|
|
696
593
|
if (!opts.baseUrl) throw new Error("callLlm: opts.baseUrl is required");
|
|
697
594
|
const baseUrl = opts.baseUrl.replace(/\/+$/, "");
|
|
698
|
-
const url = `${baseUrl}/chat/completions`;
|
|
699
|
-
const endpoint = "/chat/completions";
|
|
700
|
-
const timeoutMs = req.timeoutMs ?? opts.defaultTimeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
701
|
-
const maximumAttempts = resolveMaximumAttempts(opts.maximumAttempts);
|
|
702
|
-
const minIntervalMs = resolveMinIntervalMs(opts.minIntervalMs);
|
|
703
|
-
const pacing = pacingStateFor(opts);
|
|
704
|
-
const fetchFn = opts.fetch ?? globalThis.fetch;
|
|
705
|
-
const headers = buildHeaders(opts);
|
|
706
|
-
const provider = opts.provider ?? providerFromBaseUrl(baseUrl);
|
|
707
|
-
const sink = opts.rawSink;
|
|
708
|
-
const redactor = opts.redactor ?? defaultProviderRedactor;
|
|
709
|
-
const traceContext = opts.traceContext;
|
|
710
|
-
const callerSignal = opts.signal;
|
|
711
595
|
const deadlineMs = opts.deadlineMs;
|
|
712
596
|
const deadlineStart = Date.now();
|
|
597
|
+
const remainingMs = () => deadlineMs === void 0 ? Infinity : Math.max(0, deadlineMs - (Date.now() - deadlineStart));
|
|
598
|
+
const run = {
|
|
599
|
+
req,
|
|
600
|
+
opts,
|
|
601
|
+
allowSchemaFallback,
|
|
602
|
+
baseUrl,
|
|
603
|
+
url: `${baseUrl}${ENDPOINT}`,
|
|
604
|
+
timeoutMs: req.timeoutMs ?? opts.defaultTimeoutMs ?? DEFAULT_TIMEOUT_MS,
|
|
605
|
+
maximumAttempts: resolveMaximumAttempts(opts.maximumAttempts),
|
|
606
|
+
minIntervalMs: resolveMinIntervalMs(opts.minIntervalMs),
|
|
607
|
+
pacing: pacingStateFor(opts),
|
|
608
|
+
headers: buildHeaders(opts),
|
|
609
|
+
provider: opts.provider ?? providerFromBaseUrl(baseUrl),
|
|
610
|
+
deadlineStart,
|
|
611
|
+
remainingMs,
|
|
612
|
+
retryDelay: (ms) => sleep(Math.min(ms, remainingMs()), opts.signal),
|
|
613
|
+
effectiveRequest: req,
|
|
614
|
+
lastErr: void 0
|
|
615
|
+
};
|
|
713
616
|
if (opts.customTokenPricing) costForTokenPricing(opts.customTokenPricing, {
|
|
714
617
|
inputTokens: 0,
|
|
715
618
|
outputTokens: 0
|
|
716
619
|
});
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
620
|
+
return run;
|
|
621
|
+
}
|
|
622
|
+
function deadlineError(run) {
|
|
623
|
+
return run.lastErr instanceof Error ? run.lastErr : new DOMException("callLlm deadline exceeded", "TimeoutError");
|
|
624
|
+
}
|
|
625
|
+
/** Write one raw provider event for this attempt. Does nothing without a sink. */
|
|
626
|
+
async function recordAttemptEvent(run, attempt, fields) {
|
|
627
|
+
const { opts } = run;
|
|
628
|
+
if (!opts.rawSink) return;
|
|
629
|
+
await recordRaw(opts.rawSink, opts.redactor ?? defaultProviderRedactor, {
|
|
630
|
+
eventId: newRecordId(),
|
|
631
|
+
runId: opts.traceContext?.runId,
|
|
632
|
+
spanId: opts.traceContext?.spanId,
|
|
633
|
+
provider: run.provider,
|
|
634
|
+
model: run.req.model,
|
|
635
|
+
endpoint: ENDPOINT,
|
|
636
|
+
baseUrl: run.baseUrl,
|
|
637
|
+
attemptIndex: attempt,
|
|
638
|
+
...fields,
|
|
639
|
+
redactedFields: []
|
|
640
|
+
});
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* Wait for this client's pacing slot, and claim it. Every wake rechecks, so concurrent waiters
|
|
644
|
+
* cannot dispatch a catch-up burst; the claim is made in the same synchronous step that finds the
|
|
645
|
+
* slot free, so no other waiter can slip in between the check and the claim.
|
|
646
|
+
*/
|
|
647
|
+
async function awaitPacingSlot(run) {
|
|
648
|
+
const { opts, pacing, minIntervalMs } = run;
|
|
649
|
+
while (true) {
|
|
650
|
+
opts.signal?.throwIfAborted();
|
|
651
|
+
if (deadlineExceeded(run.deadlineStart, opts.deadlineMs)) throw deadlineError(run);
|
|
652
|
+
const waitMs = pacing.lastStartedAt === void 0 ? 0 : pacing.lastStartedAt + minIntervalMs - Date.now();
|
|
653
|
+
if (waitMs <= 0) {
|
|
654
|
+
const started = Date.now();
|
|
742
655
|
pacing.lastStartedAt = started;
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
656
|
+
return started;
|
|
657
|
+
}
|
|
658
|
+
await run.retryDelay(waitMs);
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
/** Answer a non-2xx response: retry with an adjusted request or after a wait, give up, or throw its error. */
|
|
662
|
+
async function handleHttpFailure(run, attempt, res, body, responseHeaders, started, state) {
|
|
663
|
+
const { req, opts, maximumAttempts, deadlineStart } = run;
|
|
664
|
+
await recordAttemptEvent(run, attempt, {
|
|
665
|
+
direction: "error",
|
|
666
|
+
timestamp: Date.now(),
|
|
667
|
+
durationMs: Date.now() - started,
|
|
668
|
+
statusCode: res.status,
|
|
669
|
+
responseHeaders,
|
|
670
|
+
responseBody: body,
|
|
671
|
+
errorMessage: `HTTP ${res.status}`
|
|
672
|
+
});
|
|
673
|
+
if (opts.rawSink) state.errorRecorded = true;
|
|
674
|
+
const err = new LlmCallError(`LLM call failed with HTTP ${res.status}`, res.status, body, req.model);
|
|
675
|
+
const canRetry = attempt < maximumAttempts - 1 && !deadlineExceeded(deadlineStart, opts.deadlineMs);
|
|
676
|
+
if (isTemperatureOneRejection(res.status, body) && run.effectiveRequest.temperature !== 1 && canRetry) {
|
|
677
|
+
run.lastErr = err;
|
|
678
|
+
run.effectiveRequest = {
|
|
679
|
+
...run.effectiveRequest,
|
|
680
|
+
temperature: 1
|
|
681
|
+
};
|
|
682
|
+
return { kind: "retry" };
|
|
683
|
+
}
|
|
684
|
+
if (run.allowSchemaFallback && opts.jsonSchemaTransport !== "json-object" && run.effectiveRequest.jsonSchema && isSchemaRejection(res.status, body) && canRetry) {
|
|
685
|
+
run.lastErr = err;
|
|
686
|
+
run.effectiveRequest = {
|
|
687
|
+
...run.effectiveRequest,
|
|
688
|
+
jsonMode: true,
|
|
689
|
+
jsonSchema: void 0
|
|
690
|
+
};
|
|
691
|
+
return { kind: "retry" };
|
|
692
|
+
}
|
|
693
|
+
if (RETRYABLE_STATUS.has(res.status) && canRetry) {
|
|
694
|
+
run.lastErr = err;
|
|
695
|
+
const wait = parseRetryAfter(res.headers) ?? backoffMs(attempt);
|
|
696
|
+
if (wait >= run.remainingMs()) {
|
|
697
|
+
opts.signal?.throwIfAborted();
|
|
698
|
+
return { kind: "exhausted" };
|
|
699
|
+
}
|
|
700
|
+
await run.retryDelay(wait);
|
|
701
|
+
return { kind: "retry" };
|
|
702
|
+
}
|
|
703
|
+
throw err;
|
|
704
|
+
}
|
|
705
|
+
/** Turn a parsed completion into the call result: content, tool calls, usage with its completeness, and cost. */
|
|
706
|
+
function parseCompletion(run, json, started) {
|
|
707
|
+
const { req, opts } = run;
|
|
708
|
+
const choice = json.choices?.[0];
|
|
709
|
+
const toolCalls = parseWireToolCalls(choice?.message?.tool_calls, req.model);
|
|
710
|
+
const usageRaw = json.usage && typeof json.usage === "object" && !Array.isArray(json.usage) ? json.usage : void 0;
|
|
711
|
+
const promptTokens = providerTokenCount(usageRaw?.prompt_tokens);
|
|
712
|
+
const completionTokens = providerTokenCount(usageRaw?.completion_tokens);
|
|
713
|
+
const totalTokens = providerTokenCount(usageRaw?.total_tokens);
|
|
714
|
+
const reasoningRaw = (usageRaw?.completion_tokens_details && typeof usageRaw.completion_tokens_details === "object" && !Array.isArray(usageRaw.completion_tokens_details) ? usageRaw.completion_tokens_details : void 0)?.reasoning_tokens;
|
|
715
|
+
const reasoningTokens = reasoningRaw === void 0 ? void 0 : providerTokenCount(reasoningRaw);
|
|
716
|
+
const cachedRaw = usageRaw?.prompt_tokens_details && typeof usageRaw.prompt_tokens_details === "object" && !Array.isArray(usageRaw.prompt_tokens_details) ? usageRaw.prompt_tokens_details.cached_tokens : void 0;
|
|
717
|
+
const cachedPromptTokens = cachedRaw === void 0 ? void 0 : providerTokenCount(cachedRaw);
|
|
718
|
+
const usageCaptured = promptTokens !== void 0 && completionTokens !== void 0 && (reasoningRaw === void 0 || reasoningTokens !== void 0 && reasoningTokens <= completionTokens) && (cachedRaw === void 0 || cachedPromptTokens !== void 0 && cachedPromptTokens <= promptTokens) && (totalTokens === void 0 || totalTokens === promptTokens + completionTokens);
|
|
719
|
+
const costFromProxy = providerReportedCost(json);
|
|
720
|
+
const content = choice?.message?.content ?? "";
|
|
721
|
+
const configuredCost = typeof costFromProxy !== "number" && usageCaptured && opts.customTokenPricing ? costForTokenPricing(opts.customTokenPricing, {
|
|
722
|
+
inputTokens: promptTokens - (cachedPromptTokens ?? 0),
|
|
723
|
+
...cachedPromptTokens ? { cachedTokens: cachedPromptTokens } : {},
|
|
724
|
+
outputTokens: completionTokens
|
|
725
|
+
}) : void 0;
|
|
726
|
+
const servedModel = typeof json.model === "string" && json.model.trim() !== "" ? json.model : null;
|
|
727
|
+
if (opts.assertServedModel) assertServedModel(req.model, servedModel, opts.assertServedModel === true ? {} : opts.assertServedModel);
|
|
728
|
+
return {
|
|
729
|
+
content,
|
|
730
|
+
...toolCalls === void 0 ? {} : { toolCalls },
|
|
731
|
+
...req.logprobs === void 0 ? {} : { logprobs: parseWireLogprobs(choice?.logprobs?.content, req.model) },
|
|
732
|
+
finishReason: choice?.finish_reason ?? null,
|
|
733
|
+
contentEmpty: content.trim().length === 0,
|
|
734
|
+
usage: {
|
|
735
|
+
promptTokens: promptTokens ?? 0,
|
|
736
|
+
completionTokens: completionTokens ?? 0,
|
|
737
|
+
totalTokens: totalTokens ?? (promptTokens ?? 0) + (completionTokens ?? 0),
|
|
738
|
+
captured: usageCaptured,
|
|
739
|
+
reasoningTokens,
|
|
740
|
+
cachedPromptTokens
|
|
741
|
+
},
|
|
742
|
+
costUsd: typeof costFromProxy === "number" ? costFromProxy : configuredCost ?? null,
|
|
743
|
+
model: servedModel ?? req.model,
|
|
744
|
+
servedModel,
|
|
745
|
+
durationMs: Date.now() - started,
|
|
746
|
+
raw: json
|
|
747
|
+
};
|
|
748
|
+
}
|
|
749
|
+
/** One attempt: pace, dispatch, read the answer. A failure either becomes a retry outcome or is thrown. */
|
|
750
|
+
async function runAttempt(run, attempt) {
|
|
751
|
+
const { opts } = run;
|
|
752
|
+
const callerSignal = opts.signal;
|
|
753
|
+
if (callerSignal?.aborted) throw new DOMException("callLlm aborted by caller signal", "AbortError");
|
|
754
|
+
if (deadlineExceeded(run.deadlineStart, opts.deadlineMs)) throw deadlineError(run);
|
|
755
|
+
const requestBody = buildBody(run.effectiveRequest, opts.jsonSchemaTransport === "json-object", opts.thinking);
|
|
756
|
+
const controller = new AbortController();
|
|
757
|
+
const attemptSignal = combineAbortSignals(controller.signal, callerSignal);
|
|
758
|
+
let timeoutHandle;
|
|
759
|
+
let started = Date.now();
|
|
760
|
+
const state = {
|
|
761
|
+
dispatched: false,
|
|
762
|
+
errorRecorded: false
|
|
763
|
+
};
|
|
764
|
+
try {
|
|
765
|
+
if (run.minIntervalMs > 0) started = await awaitPacingSlot(run);
|
|
766
|
+
else run.pacing.lastStartedAt = started;
|
|
767
|
+
state.dispatched = true;
|
|
768
|
+
timeoutHandle = setTimeout(() => controller.abort(), Math.min(run.timeoutMs, run.remainingMs()));
|
|
769
|
+
await recordAttemptEvent(run, attempt, {
|
|
770
|
+
direction: "request",
|
|
771
|
+
timestamp: started,
|
|
772
|
+
requestHeaders: run.headers,
|
|
773
|
+
requestBody
|
|
774
|
+
});
|
|
775
|
+
attemptSignal.throwIfAborted();
|
|
776
|
+
const res = await (opts.fetch ?? globalThis.fetch)(run.url, {
|
|
777
|
+
method: "POST",
|
|
778
|
+
headers: run.headers,
|
|
779
|
+
body: JSON.stringify(requestBody),
|
|
780
|
+
signal: attemptSignal
|
|
781
|
+
});
|
|
782
|
+
const responseHeaders = opts.rawSink ? headersToObject(res.headers) : void 0;
|
|
783
|
+
const text = await res.text();
|
|
784
|
+
attemptSignal.throwIfAborted();
|
|
785
|
+
clearTimeout(timeoutHandle);
|
|
786
|
+
if (!res.ok) return await handleHttpFailure(run, attempt, res, text, responseHeaders, started, state);
|
|
787
|
+
let json;
|
|
788
|
+
try {
|
|
789
|
+
json = JSON.parse(text);
|
|
790
|
+
} catch (parseErr) {
|
|
791
|
+
await recordAttemptEvent(run, attempt, {
|
|
792
|
+
direction: "error",
|
|
861
793
|
timestamp: Date.now(),
|
|
862
794
|
durationMs: Date.now() - started,
|
|
863
795
|
statusCode: res.status,
|
|
864
796
|
responseHeaders,
|
|
865
|
-
responseBody:
|
|
866
|
-
|
|
867
|
-
});
|
|
868
|
-
const choice = json.choices?.[0];
|
|
869
|
-
const toolCalls = parseWireToolCalls(choice?.message?.tool_calls, req.model);
|
|
870
|
-
const usageRaw = json.usage && typeof json.usage === "object" && !Array.isArray(json.usage) ? json.usage : void 0;
|
|
871
|
-
const promptTokens = providerTokenCount(usageRaw?.prompt_tokens);
|
|
872
|
-
const completionTokens = providerTokenCount(usageRaw?.completion_tokens);
|
|
873
|
-
const totalTokens = providerTokenCount(usageRaw?.total_tokens);
|
|
874
|
-
const reasoningRaw = (usageRaw?.completion_tokens_details && typeof usageRaw.completion_tokens_details === "object" && !Array.isArray(usageRaw.completion_tokens_details) ? usageRaw.completion_tokens_details : void 0)?.reasoning_tokens;
|
|
875
|
-
const reasoningTokens = reasoningRaw === void 0 ? void 0 : providerTokenCount(reasoningRaw);
|
|
876
|
-
const cachedRaw = usageRaw?.prompt_tokens_details && typeof usageRaw.prompt_tokens_details === "object" && !Array.isArray(usageRaw.prompt_tokens_details) ? usageRaw.prompt_tokens_details.cached_tokens : void 0;
|
|
877
|
-
const cachedPromptTokens = cachedRaw === void 0 ? void 0 : providerTokenCount(cachedRaw);
|
|
878
|
-
const usageCaptured = promptTokens !== void 0 && completionTokens !== void 0 && (reasoningRaw === void 0 || reasoningTokens !== void 0 && reasoningTokens <= completionTokens) && (cachedRaw === void 0 || cachedPromptTokens !== void 0 && cachedPromptTokens <= promptTokens) && (totalTokens === void 0 || totalTokens === promptTokens + completionTokens);
|
|
879
|
-
const costFromProxy = providerReportedCost(json);
|
|
880
|
-
const content = choice?.message?.content ?? "";
|
|
881
|
-
const configuredCost = typeof costFromProxy !== "number" && usageCaptured && opts.customTokenPricing ? costForTokenPricing(opts.customTokenPricing, {
|
|
882
|
-
inputTokens: promptTokens - (cachedPromptTokens ?? 0),
|
|
883
|
-
...cachedPromptTokens ? { cachedTokens: cachedPromptTokens } : {},
|
|
884
|
-
outputTokens: completionTokens
|
|
885
|
-
}) : void 0;
|
|
886
|
-
const servedModel = typeof json.model === "string" && json.model.trim() !== "" ? json.model : null;
|
|
887
|
-
if (opts.assertServedModel) assertServedModel(req.model, servedModel, opts.assertServedModel === true ? {} : opts.assertServedModel);
|
|
888
|
-
return {
|
|
889
|
-
content,
|
|
890
|
-
...toolCalls === void 0 ? {} : { toolCalls },
|
|
891
|
-
...req.logprobs === void 0 ? {} : { logprobs: parseWireLogprobs(choice?.logprobs?.content, req.model) },
|
|
892
|
-
finishReason: choice?.finish_reason ?? null,
|
|
893
|
-
contentEmpty: content.trim().length === 0,
|
|
894
|
-
usage: {
|
|
895
|
-
promptTokens: promptTokens ?? 0,
|
|
896
|
-
completionTokens: completionTokens ?? 0,
|
|
897
|
-
totalTokens: totalTokens ?? (promptTokens ?? 0) + (completionTokens ?? 0),
|
|
898
|
-
captured: usageCaptured,
|
|
899
|
-
reasoningTokens,
|
|
900
|
-
cachedPromptTokens
|
|
901
|
-
},
|
|
902
|
-
costUsd: typeof costFromProxy === "number" ? costFromProxy : configuredCost ?? null,
|
|
903
|
-
model: servedModel ?? req.model,
|
|
904
|
-
servedModel,
|
|
905
|
-
durationMs: Date.now() - started,
|
|
906
|
-
raw: json
|
|
907
|
-
};
|
|
908
|
-
} catch (err) {
|
|
909
|
-
clearTimeout(timeoutHandle);
|
|
910
|
-
lastErr = err;
|
|
911
|
-
if (callerSignal?.aborted) {
|
|
912
|
-
if (sink && dispatched && !attemptErrorRecorded) await recordRaw(sink, redactor, {
|
|
913
|
-
eventId: newRecordId(),
|
|
914
|
-
runId: traceContext?.runId,
|
|
915
|
-
spanId: traceContext?.spanId,
|
|
916
|
-
provider,
|
|
917
|
-
model: req.model,
|
|
918
|
-
endpoint,
|
|
919
|
-
baseUrl,
|
|
920
|
-
attemptIndex: attempt,
|
|
921
|
-
direction: "error",
|
|
922
|
-
timestamp: Date.now(),
|
|
923
|
-
durationMs: Date.now() - started,
|
|
924
|
-
errorMessage: err instanceof Error ? err.message : String(err),
|
|
925
|
-
redactedFields: []
|
|
926
|
-
});
|
|
927
|
-
throw err;
|
|
928
|
-
}
|
|
929
|
-
if (sink && dispatched && !attemptErrorRecorded) await recordRaw(sink, redactor, {
|
|
930
|
-
eventId: newRecordId(),
|
|
931
|
-
runId: traceContext?.runId,
|
|
932
|
-
spanId: traceContext?.spanId,
|
|
933
|
-
provider,
|
|
934
|
-
model: req.model,
|
|
935
|
-
endpoint,
|
|
936
|
-
baseUrl,
|
|
937
|
-
attemptIndex: attempt,
|
|
938
|
-
direction: "error",
|
|
939
|
-
timestamp: Date.now(),
|
|
940
|
-
durationMs: Date.now() - started,
|
|
941
|
-
errorMessage: err instanceof Error ? err.message : String(err),
|
|
942
|
-
redactedFields: []
|
|
797
|
+
responseBody: text,
|
|
798
|
+
errorMessage: `non-JSON response: ${parseErr instanceof Error ? parseErr.message : String(parseErr)}`
|
|
943
799
|
});
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
await retryDelay(wait);
|
|
947
|
-
continue;
|
|
948
|
-
}
|
|
949
|
-
callerSignal?.throwIfAborted();
|
|
950
|
-
throw err;
|
|
951
|
-
} finally {
|
|
952
|
-
clearTimeout(timeoutHandle);
|
|
800
|
+
if (opts.rawSink) state.errorRecorded = true;
|
|
801
|
+
throw parseErr;
|
|
953
802
|
}
|
|
803
|
+
await recordAttemptEvent(run, attempt, {
|
|
804
|
+
direction: "response",
|
|
805
|
+
timestamp: Date.now(),
|
|
806
|
+
durationMs: Date.now() - started,
|
|
807
|
+
statusCode: res.status,
|
|
808
|
+
responseHeaders,
|
|
809
|
+
responseBody: json
|
|
810
|
+
});
|
|
811
|
+
return {
|
|
812
|
+
kind: "result",
|
|
813
|
+
result: parseCompletion(run, json, started)
|
|
814
|
+
};
|
|
815
|
+
} catch (err) {
|
|
816
|
+
clearTimeout(timeoutHandle);
|
|
817
|
+
run.lastErr = err;
|
|
818
|
+
if (state.dispatched && !state.errorRecorded) await recordAttemptEvent(run, attempt, {
|
|
819
|
+
direction: "error",
|
|
820
|
+
timestamp: Date.now(),
|
|
821
|
+
durationMs: Date.now() - started,
|
|
822
|
+
errorMessage: err instanceof Error ? err.message : String(err)
|
|
823
|
+
});
|
|
824
|
+
if (callerSignal?.aborted) throw err;
|
|
825
|
+
const wait = backoffMs(attempt);
|
|
826
|
+
if (attempt < run.maximumAttempts - 1 && isTransientLlmError(err) && !deadlineExceeded(run.deadlineStart, opts.deadlineMs) && wait < run.remainingMs()) {
|
|
827
|
+
await run.retryDelay(wait);
|
|
828
|
+
return { kind: "retry" };
|
|
829
|
+
}
|
|
830
|
+
callerSignal?.throwIfAborted();
|
|
831
|
+
throw err;
|
|
832
|
+
} finally {
|
|
833
|
+
clearTimeout(timeoutHandle);
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
async function callLlmAttempts(req, opts, allowSchemaFallback) {
|
|
837
|
+
const run = startAttemptRun(req, opts, allowSchemaFallback);
|
|
838
|
+
for (let attempt = 0; attempt < run.maximumAttempts; attempt++) {
|
|
839
|
+
const outcome = await runAttempt(run, attempt);
|
|
840
|
+
if (outcome.kind === "result") return outcome.result;
|
|
841
|
+
if (outcome.kind === "exhausted") break;
|
|
954
842
|
}
|
|
955
|
-
throw lastErr instanceof Error ? lastErr : new Error(String(lastErr));
|
|
843
|
+
throw run.lastErr instanceof Error ? run.lastErr : new Error(String(run.lastErr));
|
|
956
844
|
}
|
|
957
845
|
async function recordRaw(sink, redactor, event) {
|
|
958
846
|
try {
|
|
@@ -1018,6 +906,6 @@ var LlmClient = class {
|
|
|
1018
906
|
}
|
|
1019
907
|
};
|
|
1020
908
|
//#endregion
|
|
1021
|
-
export {
|
|
909
|
+
export { combineAbortSignals as _, maximumChargeForLlmRequest as a, ModelSubstitutionError as c, assertServedModelPolicy as d, assertServedModels as f, judgeFamily as g, assertCrossFamily as h, costReceiptFromLlmError as i, assertCrossFamilyServed as l, CrossFamilyError as m, callLlmJson as n, backoffMs as o, checkServedModel as p, costReceiptFromLlm as r, isTransientLlmError as s, LlmClient as t, assertServedModel as u };
|
|
1022
910
|
|
|
1023
|
-
//# sourceMappingURL=llm-client-
|
|
911
|
+
//# sourceMappingURL=llm-client-_Y6ic-tf.js.map
|