@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,461 +1,7 @@
|
|
|
1
1
|
import { t as roundDecimal } from "../round-decimal-COrKglMh.js";
|
|
2
|
-
import {
|
|
3
|
-
import { n as
|
|
4
|
-
import {
|
|
5
|
-
import { a as writeSupervisorRunReportSafe, c as runtimeSupervisorRunReader, d as renderSupervisorRunMarkdown, f as analyzeSupervisorRunSources, i as writeSupervisorRunReport, l as renderSupervisorRollupMarkdown, n as analyzeSupervisorRun, o as isRuntimeSupervisorRunDir, p as parsePatch, r as findSupervisorRunDirs, s as readRuntimeSupervisorRun, t as runSupervisorRunCommand, u as renderSupervisorRunHeadline } from "../report-command-SC9nqb4M.js";
|
|
6
|
-
import { basename, dirname, join } from "node:path";
|
|
7
|
-
import { readFile, readdir } from "node:fs/promises";
|
|
8
|
-
import { claudeCodeReader, claudeCodeRefForFile } from "@tangle-network/harness-sessions";
|
|
9
|
-
//#region src/supervisor-run/claude-code-reader.ts
|
|
10
|
-
/**
|
|
11
|
-
* Supervision-tree reader over a THIRD-PARTY harness: Claude Code.
|
|
12
|
-
*
|
|
13
|
-
* The Runtime reader reads a supervisor journal designed for this analysis.
|
|
14
|
-
* for this analysis. This reader reads a harness we do not control, whose
|
|
15
|
-
* transcript was designed for replaying a chat — and recovers the same tree
|
|
16
|
-
* from it. If both produce a `SupervisorRunSources`, the tree model is a
|
|
17
|
-
* property of multi-agent runs, not of our journal format.
|
|
18
|
-
*
|
|
19
|
-
* ## Where the tree hides in a Claude Code transcript
|
|
20
|
-
*
|
|
21
|
-
* | Tree fact | Claude Code evidence |
|
|
22
|
-
* |---|---|
|
|
23
|
-
* | spawn | assistant `tool_use` (`Agent` / `Task`), answered by a `tool_result` whose `toolUseResult.agentId` names the child |
|
|
24
|
-
* | settle | a `<task-notification>` block in a later user line: `<task-id>` = agentId, `<status>` |
|
|
25
|
-
* | steer | assistant `tool_use` (`SendMessage`) with `input.to` = agentId — mid-task, to a LIVE child |
|
|
26
|
-
* | delivered | that steer's `tool_result` carrying `success` / `resumedAgentId` |
|
|
27
|
-
* | cancel | assistant `tool_use` (`TaskStop`) targeting an agentId |
|
|
28
|
-
* | brain spend| `message.usage` on the main thread's assistant lines |
|
|
29
|
-
* | worker spend| `message.usage` inside `<session>/subagents/agent-<id>.jsonl` |
|
|
30
|
-
* | depth | a child transcript that itself contains `Agent` tool_use lines |
|
|
31
|
-
*
|
|
32
|
-
* Every one of those is read from the normalized session of @tangle-network/harness-sessions — the SAME
|
|
33
|
-
* parser `src/rollout/readers/claude-jsonl.ts` uses for solo rollouts. There
|
|
34
|
-
* is no second transcript parser.
|
|
35
|
-
*
|
|
36
|
-
* ## What Claude Code cannot say
|
|
37
|
-
*
|
|
38
|
-
* It records tokens but never a price, runs no per-worker verify, and keeps no
|
|
39
|
-
* per-worker patch. Those are declared once in `limits`, so the analyzer
|
|
40
|
-
* reports `unavailable — <reason>` instead of the $0 / 0-accepted that summing
|
|
41
|
-
* an empty field would produce. See `SourceLimits`.
|
|
42
|
-
*
|
|
43
|
-
* ## Metric coverage vs the Runtime journal
|
|
44
|
-
*
|
|
45
|
-
* Measured on a real 52-agent session (fixture:
|
|
46
|
-
* `tests/fixtures/supervisor-run/claude-code-session-*`).
|
|
47
|
-
*
|
|
48
|
-
* | Metric | Runtime | Claude Code | Why |
|
|
49
|
-
* |---|---|---|---|
|
|
50
|
-
* | workersSpawned / Settled / Cancelled | full | full | spawn tool_use + task-notification + TaskStop |
|
|
51
|
-
* | steers / steersDelivered / steersByWorker | full | full | `SendMessage`; delivery from its tool_result |
|
|
52
|
-
* | waves / waveSizes / maxConcurrency | full | full | derived from spawn/settle instants |
|
|
53
|
-
* | respawns / repeatedLabels | full | full | same derivation |
|
|
54
|
-
* | delegationDepth | full | full | a child transcript's own spawn calls |
|
|
55
|
-
* | timeToFirstSpawn / supervisorWall | full | full | transcript instants |
|
|
56
|
-
* | idleMs / idlePct / workerUtilization | full | PARTIAL | an agent that never notifies is counted live to the end of the transcript |
|
|
57
|
-
* | observeThenRespawn / respawnWithoutEvidence | full | full | ordering of spawn vs settle instants |
|
|
58
|
-
* | workerEvidenceBytes | full | PARTIAL | the child's closing message; 0 for pruned transcripts |
|
|
59
|
-
* | brain tokens in/out + cache | full | full | main-thread `message.usage` |
|
|
60
|
-
* | worker tokens in/out + cache | via harness join | full or unavailable | totals are refused if any spawned transcript was pruned; retained per-worker rows remain available |
|
|
61
|
-
* | perWorker wall | full | full | spawn → settle instants |
|
|
62
|
-
* | accepted / rejected / emptyPass / settledVerdicts | full | NONE | no per-worker verify step exists |
|
|
63
|
-
* | brain/worker/total usd, costPerAcceptedPatch | full | NONE | transcripts carry no price |
|
|
64
|
-
* | patch stats, delivered, verifyPass/Rc | full | NONE | no diff is handed back |
|
|
65
|
-
* | judgeResolved / Score / Passed / Total | full | NONE | no judge in the loop |
|
|
66
|
-
* | driverSteerCalls, brainTruncations | full | NONE | no outer driver log, no per-call finish_reason tap |
|
|
67
|
-
*/
|
|
68
|
-
/** Tool names that spawn a child agent. `Task` is the older name for `Agent`. */
|
|
69
|
-
const DEFAULT_SPAWN_TOOLS = ["Agent", "Task"];
|
|
70
|
-
/** Tool names that deliver a message to an ALREADY-RUNNING child agent. */
|
|
71
|
-
const DEFAULT_STEER_TOOLS = ["SendMessage"];
|
|
72
|
-
/** Tool names that stop a running child agent. */
|
|
73
|
-
const DEFAULT_CANCEL_TOOLS = ["TaskStop", "KillAgent"];
|
|
74
|
-
const SPEND_UNPRICED = "Claude Code transcripts record token usage but never a price — usd is not in the store";
|
|
75
|
-
const NO_VERDICTS = "Claude Code runs no per-worker verify step — a subagent reports prose, not pass/fail";
|
|
76
|
-
const NO_DELIVERABLES = "Claude Code retains no per-worker patch — subagents commit to git, they do not hand back a diff";
|
|
77
|
-
const isRecord = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
78
|
-
const str = (v) => typeof v === "string" ? v : null;
|
|
79
|
-
const tag = (xml, name) => {
|
|
80
|
-
const m = xml.match(new RegExp(`<${name}>([\\s\\S]*?)</${name}>`));
|
|
81
|
-
return m === null ? null : m[1];
|
|
82
|
-
};
|
|
83
|
-
/**
|
|
84
|
-
* Task notifications are the settle instants. A notification fires each time an
|
|
85
|
-
* agent stops, so a resumed agent produces several — they are kept in order and
|
|
86
|
-
* the LAST one is the settle the analyzer sees, with the earlier ones acting as
|
|
87
|
-
* the intermediate stops they actually were.
|
|
88
|
-
*/
|
|
89
|
-
function parseNotifications(text, at) {
|
|
90
|
-
const out = [];
|
|
91
|
-
for (const m of text.matchAll(/<task-notification>[\s\S]*?<\/task-notification>/g)) {
|
|
92
|
-
const xml = m[0];
|
|
93
|
-
const taskId = tag(xml, "task-id");
|
|
94
|
-
if (taskId === null) continue;
|
|
95
|
-
out.push({
|
|
96
|
-
taskId: taskId.trim(),
|
|
97
|
-
toolUseId: tag(xml, "tool-use-id")?.trim() ?? null,
|
|
98
|
-
status: tag(xml, "status")?.trim() ?? "unknown",
|
|
99
|
-
summary: tag(xml, "summary")?.trim() ?? null,
|
|
100
|
-
at
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
return out;
|
|
104
|
-
}
|
|
105
|
-
/** Project ONE thread's session (main or a single subagent) into tool traffic. */
|
|
106
|
-
function threadCalls(session) {
|
|
107
|
-
const uses = [];
|
|
108
|
-
const results = /* @__PURE__ */ new Map();
|
|
109
|
-
const notifications = [];
|
|
110
|
-
for (const call of session.toolCalls) {
|
|
111
|
-
uses.push({
|
|
112
|
-
id: call.id,
|
|
113
|
-
name: call.name,
|
|
114
|
-
input: isRecord(call.input) ? call.input : {},
|
|
115
|
-
at: call.startedAt
|
|
116
|
-
});
|
|
117
|
-
if (call.result !== null) results.set(call.id, {
|
|
118
|
-
id: call.id,
|
|
119
|
-
at: call.result.at,
|
|
120
|
-
structured: call.result.details,
|
|
121
|
-
text: call.result.text ?? ""
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
for (const message of session.messages) {
|
|
125
|
-
if (message.role !== "user") continue;
|
|
126
|
-
for (const part of message.parts) if (part.type === "text") notifications.push(...parseNotifications(part.text, message.at));
|
|
127
|
-
}
|
|
128
|
-
return {
|
|
129
|
-
uses,
|
|
130
|
-
results,
|
|
131
|
-
notifications,
|
|
132
|
-
firstAt: session.startedAt,
|
|
133
|
-
lastAt: session.endedAt
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* The agent id a spawn produced. Claude Code puts it in the structured
|
|
138
|
-
* `toolUseResult`; the same id is echoed in the result text for transcripts
|
|
139
|
-
* written before that field existed, so both are tried before giving up.
|
|
140
|
-
*/
|
|
141
|
-
function spawnedAgentId(result) {
|
|
142
|
-
if (result === void 0) return null;
|
|
143
|
-
if (isRecord(result.structured)) {
|
|
144
|
-
const id = str(result.structured.agentId);
|
|
145
|
-
if (id !== null) return id;
|
|
146
|
-
}
|
|
147
|
-
return result.text.match(/agentId:\s*([A-Za-z0-9_-]+)/)?.[1] ?? null;
|
|
148
|
-
}
|
|
149
|
-
async function readChildren(dir) {
|
|
150
|
-
const names = await readdir(dir).catch(() => null);
|
|
151
|
-
if (names === null) return [];
|
|
152
|
-
const out = [];
|
|
153
|
-
for (const name of names.filter((n) => n.endsWith(".jsonl")).sort()) {
|
|
154
|
-
const path = join(dir, name);
|
|
155
|
-
const session = await claudeCodeReader.read(claudeCodeRefForFile(path, "parent")).catch(() => null);
|
|
156
|
-
if (session === null) continue;
|
|
157
|
-
const projected = transcriptFromSession(session);
|
|
158
|
-
const metaRaw = await readFile(path.replace(/\.jsonl$/, ".meta.json"), "utf8").catch(() => null);
|
|
159
|
-
let meta = {};
|
|
160
|
-
if (metaRaw !== null) try {
|
|
161
|
-
const parsed = JSON.parse(metaRaw);
|
|
162
|
-
if (isRecord(parsed)) meta = parsed;
|
|
163
|
-
} catch {
|
|
164
|
-
meta = {};
|
|
165
|
-
}
|
|
166
|
-
const agentId = session.nativeSessionId;
|
|
167
|
-
out.push({
|
|
168
|
-
agentId,
|
|
169
|
-
path,
|
|
170
|
-
description: str(meta.description),
|
|
171
|
-
spawnToolUseId: str(meta.toolUseId),
|
|
172
|
-
spawnDepth: typeof meta.spawnDepth === "number" ? meta.spawnDepth : null,
|
|
173
|
-
session,
|
|
174
|
-
tokensIn: projected.usage.tokensIn,
|
|
175
|
-
tokensOut: projected.usage.tokensOut,
|
|
176
|
-
cacheRead: projected.usage.cacheRead,
|
|
177
|
-
cacheWrite: projected.usage.cacheWrite,
|
|
178
|
-
gaps: projected.gaps,
|
|
179
|
-
firstAt: projected.startedAt,
|
|
180
|
-
lastAt: projected.endedAt,
|
|
181
|
-
model: projected.model,
|
|
182
|
-
finalReport: [...projected.messages].reverse().find((m) => m.role === "assistant" && typeof m.content === "string")?.content ?? null
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
return out;
|
|
186
|
-
}
|
|
187
|
-
/** A journal line in the dialect `parseSupervisorTree` reads. */
|
|
188
|
-
const line = (obj) => JSON.stringify(obj);
|
|
189
|
-
/**
|
|
190
|
-
* Read a Claude Code session (plus its subagent transcripts) as supervision-tree
|
|
191
|
-
* source bytes. Never throws on a missing artifact.
|
|
192
|
-
*/
|
|
193
|
-
async function readClaudeCodeSupervisorRun(opts) {
|
|
194
|
-
const spawnTools = new Set(opts.spawnTools ?? DEFAULT_SPAWN_TOOLS);
|
|
195
|
-
const steerTools = new Set(opts.steerTools ?? DEFAULT_STEER_TOOLS);
|
|
196
|
-
const cancelTools = new Set(opts.cancelTools ?? DEFAULT_CANCEL_TOOLS);
|
|
197
|
-
const mainSession = await claudeCodeReader.read(claudeCodeRefForFile(opts.transcriptPath)).catch(() => null);
|
|
198
|
-
const sessionId = basename(opts.transcriptPath).replace(/\.jsonl$/, "");
|
|
199
|
-
const runRef = opts.runRef ?? opts.transcriptPath;
|
|
200
|
-
const limits = {
|
|
201
|
-
managerTokens: null,
|
|
202
|
-
workerTokens: null,
|
|
203
|
-
spendUsd: SPEND_UNPRICED,
|
|
204
|
-
workerVerdicts: NO_VERDICTS,
|
|
205
|
-
deliverables: null
|
|
206
|
-
};
|
|
207
|
-
const traceCommand = `npx --yes @tangle-network/traces@latest analyze --harness claude-code --session ${sessionId}`;
|
|
208
|
-
if (mainSession === null) return {
|
|
209
|
-
runRef,
|
|
210
|
-
instanceId: opts.instanceId ?? sessionId,
|
|
211
|
-
arm: opts.arm ?? null,
|
|
212
|
-
supRunDir: null,
|
|
213
|
-
journal: null,
|
|
214
|
-
brainLog: null,
|
|
215
|
-
state: null,
|
|
216
|
-
progress: null,
|
|
217
|
-
workers: null,
|
|
218
|
-
workersMissingReason: `session transcript unreadable at ${opts.transcriptPath}`,
|
|
219
|
-
result: null,
|
|
220
|
-
judge: null,
|
|
221
|
-
judgeSource: null,
|
|
222
|
-
patch: null,
|
|
223
|
-
driverLog: null,
|
|
224
|
-
harnessWorkerTokens: null,
|
|
225
|
-
harnessMissingReason: `session transcript unreadable at ${opts.transcriptPath}`,
|
|
226
|
-
limits: {
|
|
227
|
-
...limits,
|
|
228
|
-
managerTokens: `session transcript unreadable at ${opts.transcriptPath}`,
|
|
229
|
-
workerTokens: `session transcript unreadable at ${opts.transcriptPath}`,
|
|
230
|
-
deliverables: NO_DELIVERABLES
|
|
231
|
-
},
|
|
232
|
-
traceCommand
|
|
233
|
-
};
|
|
234
|
-
const main = threadCalls(mainSession);
|
|
235
|
-
const mainTranscript = transcriptFromSession(mainSession);
|
|
236
|
-
const subagentsDir = opts.subagentsDir === void 0 ? join(dirname(opts.transcriptPath), sessionId, "subagents") : opts.subagentsDir;
|
|
237
|
-
const children = subagentsDir === null ? [] : await readChildren(subagentsDir);
|
|
238
|
-
const childByAgentId = new Map(children.map((c) => [c.agentId, c]));
|
|
239
|
-
const childBySpawnToolUseId = new Map(children.filter((c) => c.spawnToolUseId !== null).map((c) => [c.spawnToolUseId, c]));
|
|
240
|
-
const threads = [{
|
|
241
|
-
id: sessionId,
|
|
242
|
-
calls: main
|
|
243
|
-
}];
|
|
244
|
-
for (const child of children) threads.push({
|
|
245
|
-
id: child.agentId,
|
|
246
|
-
calls: threadCalls(child.session)
|
|
247
|
-
});
|
|
248
|
-
const spawns = [];
|
|
249
|
-
const steersByTarget = /* @__PURE__ */ new Map();
|
|
250
|
-
const cancels = [];
|
|
251
|
-
const settles = [];
|
|
252
|
-
for (const thread of threads) {
|
|
253
|
-
for (const use of thread.calls.uses) {
|
|
254
|
-
if (spawnTools.has(use.name)) {
|
|
255
|
-
const result = thread.calls.results.get(use.id);
|
|
256
|
-
const agentId = spawnedAgentId(result) ?? childBySpawnToolUseId.get(use.id)?.agentId ?? null;
|
|
257
|
-
if (agentId === null) continue;
|
|
258
|
-
const label = str(use.input.description) ?? childByAgentId.get(agentId)?.description ?? agentId;
|
|
259
|
-
spawns.push({
|
|
260
|
-
agentId,
|
|
261
|
-
parentId: thread.id,
|
|
262
|
-
label,
|
|
263
|
-
at: result?.at ?? use.at,
|
|
264
|
-
model: isRecord(result?.structured) ? str(result.structured.resolvedModel) : null
|
|
265
|
-
});
|
|
266
|
-
continue;
|
|
267
|
-
}
|
|
268
|
-
if (steerTools.has(use.name)) {
|
|
269
|
-
const target = str(use.input.to) ?? str(use.input.recipient);
|
|
270
|
-
if (target === null) continue;
|
|
271
|
-
const result = thread.calls.results.get(use.id);
|
|
272
|
-
const structured = isRecord(result?.structured) ? result.structured : null;
|
|
273
|
-
const delivered = structured?.success === true || str(structured?.resumedAgentId) === target;
|
|
274
|
-
const rows = steersByTarget.get(target) ?? [];
|
|
275
|
-
rows.push({
|
|
276
|
-
requestId: use.id,
|
|
277
|
-
at: use.at,
|
|
278
|
-
delivered
|
|
279
|
-
});
|
|
280
|
-
steersByTarget.set(target, rows);
|
|
281
|
-
continue;
|
|
282
|
-
}
|
|
283
|
-
if (cancelTools.has(use.name)) {
|
|
284
|
-
const target = str(use.input.agentId) ?? str(use.input.to) ?? str(use.input.taskId);
|
|
285
|
-
if (target !== null) cancels.push({
|
|
286
|
-
agentId: target,
|
|
287
|
-
at: use.at
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
settles.push(...thread.calls.notifications);
|
|
292
|
-
}
|
|
293
|
-
const spawnedIds = new Set(spawns.map((s) => s.agentId));
|
|
294
|
-
const cancelledIds = new Set(cancels.filter((c) => spawnedIds.has(c.agentId)).map((c) => c.agentId));
|
|
295
|
-
const startedAt = main.firstAt;
|
|
296
|
-
const completedAt = main.lastAt;
|
|
297
|
-
const journalLines = [line({
|
|
298
|
-
kind: "spawned",
|
|
299
|
-
id: sessionId,
|
|
300
|
-
parent: null,
|
|
301
|
-
label: `session:${sessionId}`,
|
|
302
|
-
role: "supervisor",
|
|
303
|
-
at: startedAt
|
|
304
|
-
})];
|
|
305
|
-
for (const s of spawns) journalLines.push(line({
|
|
306
|
-
kind: "spawned",
|
|
307
|
-
id: s.agentId,
|
|
308
|
-
parent: s.parentId,
|
|
309
|
-
label: s.label,
|
|
310
|
-
role: "worker",
|
|
311
|
-
at: s.at
|
|
312
|
-
}));
|
|
313
|
-
const lastNotification = /* @__PURE__ */ new Map();
|
|
314
|
-
for (const n of settles) {
|
|
315
|
-
if (!spawnedIds.has(n.taskId)) continue;
|
|
316
|
-
lastNotification.set(n.taskId, n);
|
|
317
|
-
}
|
|
318
|
-
for (const [agentId, n] of lastNotification) {
|
|
319
|
-
if (cancelledIds.has(agentId)) continue;
|
|
320
|
-
journalLines.push(line({
|
|
321
|
-
kind: "settled",
|
|
322
|
-
id: agentId,
|
|
323
|
-
status: n.status,
|
|
324
|
-
verdict: n.summary,
|
|
325
|
-
at: n.at
|
|
326
|
-
}));
|
|
327
|
-
}
|
|
328
|
-
const lastCancel = /* @__PURE__ */ new Map();
|
|
329
|
-
for (const c of cancels) {
|
|
330
|
-
if (!spawnedIds.has(c.agentId)) continue;
|
|
331
|
-
lastCancel.set(c.agentId, c);
|
|
332
|
-
}
|
|
333
|
-
for (const c of lastCancel.values()) journalLines.push(line({
|
|
334
|
-
kind: "cancelled",
|
|
335
|
-
id: c.agentId,
|
|
336
|
-
reason: "stopped by supervisor",
|
|
337
|
-
at: c.at
|
|
338
|
-
}));
|
|
339
|
-
if (mainTranscript.gaps.length === 0 && mainTranscript.usage.tokensIn !== null && mainTranscript.usage.tokensOut !== null && mainTranscript.usage.cacheRead !== null && mainTranscript.usage.cacheWrite !== null) journalLines.push(line({
|
|
340
|
-
kind: "metered",
|
|
341
|
-
id: sessionId,
|
|
342
|
-
spend: { tokens: {
|
|
343
|
-
input: mainTranscript.usage.tokensIn,
|
|
344
|
-
output: mainTranscript.usage.tokensOut,
|
|
345
|
-
cacheRead: mainTranscript.usage.cacheRead,
|
|
346
|
-
cacheWrite: mainTranscript.usage.cacheWrite
|
|
347
|
-
} },
|
|
348
|
-
at: completedAt
|
|
349
|
-
}));
|
|
350
|
-
const settleAtByAgent = new Map([...lastNotification.entries()].map(([id, n]) => [id, n.at]));
|
|
351
|
-
const spawnAtByAgent = new Map(spawns.map((s) => [s.agentId, s.at]));
|
|
352
|
-
const workers = [];
|
|
353
|
-
for (const spawn of spawns) {
|
|
354
|
-
const { agentId, label } = spawn;
|
|
355
|
-
const events = [];
|
|
356
|
-
const inbox = [];
|
|
357
|
-
const child = childByAgentId.get(agentId) ?? null;
|
|
358
|
-
const startAt = child?.firstAt ?? spawnAtByAgent.get(agentId) ?? null;
|
|
359
|
-
const endAt = settleAtByAgent.get(agentId) ?? child?.lastAt ?? null;
|
|
360
|
-
if (startAt !== null) events.push(line({
|
|
361
|
-
kind: "started",
|
|
362
|
-
label,
|
|
363
|
-
at: startAt,
|
|
364
|
-
agentId
|
|
365
|
-
}));
|
|
366
|
-
for (const steer of steersByTarget.get(agentId) ?? []) {
|
|
367
|
-
inbox.push(line({
|
|
368
|
-
id: steer.requestId,
|
|
369
|
-
at: steer.at,
|
|
370
|
-
worker: label,
|
|
371
|
-
message: "steer"
|
|
372
|
-
}));
|
|
373
|
-
events.push(line({
|
|
374
|
-
kind: "message",
|
|
375
|
-
label,
|
|
376
|
-
direction: "down",
|
|
377
|
-
at: steer.at,
|
|
378
|
-
requestId: steer.requestId,
|
|
379
|
-
delivered: steer.delivered
|
|
380
|
-
}));
|
|
381
|
-
}
|
|
382
|
-
if (endAt !== null) events.push(line({
|
|
383
|
-
kind: "finished",
|
|
384
|
-
label,
|
|
385
|
-
at: endAt,
|
|
386
|
-
agentId,
|
|
387
|
-
...child?.finalReport === null || child?.finalReport === void 0 ? {} : { evidence: child.finalReport }
|
|
388
|
-
}));
|
|
389
|
-
workers.push({
|
|
390
|
-
workerId: agentId,
|
|
391
|
-
label,
|
|
392
|
-
events: events.length === 0 ? "" : `${events.join("\n")}\n`,
|
|
393
|
-
inbox: inbox.length === 0 ? "" : `${inbox.join("\n")}\n`,
|
|
394
|
-
patchBytes: null,
|
|
395
|
-
transcriptRef: child?.path ?? null,
|
|
396
|
-
patchPath: null,
|
|
397
|
-
tokensIn: child?.tokensIn ?? null,
|
|
398
|
-
tokensOut: child?.tokensOut ?? null,
|
|
399
|
-
cacheRead: child?.cacheRead ?? null,
|
|
400
|
-
cacheWrite: child?.cacheWrite ?? null
|
|
401
|
-
});
|
|
402
|
-
}
|
|
403
|
-
const joined = children.length;
|
|
404
|
-
const missingChildren = spawns.filter((spawn) => !childByAgentId.has(spawn.agentId)).length;
|
|
405
|
-
const incompleteChildren = children.filter((child) => child.gaps.length > 0 || child.tokensIn === null || child.tokensOut === null || child.cacheRead === null || child.cacheWrite === null).length;
|
|
406
|
-
const harnessMissingReason = subagentsDir === null ? "subagent transcript join disabled" : joined === 0 ? `no subagent transcripts under ${subagentsDir}` : missingChildren > 0 ? `${missingChildren}/${spawns.length} spawned agents have no retained transcript under ${subagentsDir}` : incompleteChildren > 0 ? `${incompleteChildren}/${joined} subagent transcripts have malformed lines or unknown usage` : null;
|
|
407
|
-
const harnessWorkerTokens = joined === 0 || incompleteChildren > 0 ? null : {
|
|
408
|
-
store: "claude-code subagent transcripts",
|
|
409
|
-
sessions: joined,
|
|
410
|
-
input: children.reduce((a, child) => a + (child.tokensIn ?? 0), 0),
|
|
411
|
-
output: children.reduce((a, child) => a + (child.tokensOut ?? 0), 0),
|
|
412
|
-
cacheRead: children.reduce((a, child) => a + (child.cacheRead ?? 0), 0),
|
|
413
|
-
cacheWrite: children.reduce((a, child) => a + (child.cacheWrite ?? 0), 0)
|
|
414
|
-
};
|
|
415
|
-
const liveWorkers = spawns.filter((s) => !lastNotification.has(s.agentId) && !cancelledIds.has(s.agentId)).length;
|
|
416
|
-
const state = JSON.stringify({
|
|
417
|
-
id: sessionId,
|
|
418
|
-
status: liveWorkers > 0 ? "running" : "idle",
|
|
419
|
-
startedAt,
|
|
420
|
-
completedAt,
|
|
421
|
-
result: { delivered: null }
|
|
422
|
-
});
|
|
423
|
-
return {
|
|
424
|
-
runRef,
|
|
425
|
-
instanceId: opts.instanceId ?? sessionId,
|
|
426
|
-
arm: opts.arm ?? null,
|
|
427
|
-
supRunDir: subagentsDir,
|
|
428
|
-
journal: `${journalLines.join("\n")}\n`,
|
|
429
|
-
brainLog: null,
|
|
430
|
-
state,
|
|
431
|
-
progress: null,
|
|
432
|
-
workers,
|
|
433
|
-
workersMissingReason: null,
|
|
434
|
-
result: null,
|
|
435
|
-
judge: null,
|
|
436
|
-
judgeSource: null,
|
|
437
|
-
patch: null,
|
|
438
|
-
driverLog: null,
|
|
439
|
-
harnessWorkerTokens,
|
|
440
|
-
harnessMissingReason,
|
|
441
|
-
limits: {
|
|
442
|
-
...limits,
|
|
443
|
-
managerTokens: mainTranscript.gaps.length > 0 ? `main transcript has ${mainTranscript.gaps.length} parse or usage gaps` : null,
|
|
444
|
-
workerTokens: spawns.length === 0 ? null : harnessMissingReason,
|
|
445
|
-
deliverables: NO_DELIVERABLES
|
|
446
|
-
},
|
|
447
|
-
rootTranscriptRef: opts.transcriptPath,
|
|
448
|
-
traceCommand
|
|
449
|
-
};
|
|
450
|
-
}
|
|
451
|
-
/** A `SupervisorRunReader` over a Claude Code session — the same contract Runtime implements. */
|
|
452
|
-
function claudeCodeSupervisorRunReader(opts) {
|
|
453
|
-
return {
|
|
454
|
-
runRef: opts.runRef ?? opts.transcriptPath,
|
|
455
|
-
read: () => readClaudeCodeSupervisorRun(opts)
|
|
456
|
-
};
|
|
457
|
-
}
|
|
458
|
-
//#endregion
|
|
2
|
+
import { n as supervisorRunRolloutLines, r as SUPERVISOR_RUN_INTEGRITY_SCHEMA, t as analyzeSupervisorRunIntegrity } from "../integrity-C8oUeB0g.js";
|
|
3
|
+
import { c as parseSupervisorTree, f as SUPERVISOR_RUN_ROLLUP_SCHEMA, g as unavailable, h as showMeasured, m as isUnavailable, n as RUNTIME_FAILED_STATUS, r as readTerminalRecord, t as NO_TERMINAL_RECORD } from "../terminal-record-D4Rv-j1W.js";
|
|
4
|
+
import { a as findSupervisorRunDirs, c as analyzeSupervisorRunSources, i as analyzeSupervisorRun, l as parsePatch, n as renderSupervisorRunHeadline, o as isRuntimeSupervisorRunDir, r as renderSupervisorRunMarkdown, s as readRuntimeSupervisorRun, t as renderSupervisorRollupMarkdown } from "../render-Cs34y0iX.js";
|
|
459
5
|
//#region src/supervisor-run/rollup.ts
|
|
460
6
|
/** Aggregate supervisor reports while retaining missing-measurement denominators. */
|
|
461
7
|
/**
|
|
@@ -517,6 +63,6 @@ function rollupSupervisorRuns(reports) {
|
|
|
517
63
|
};
|
|
518
64
|
}
|
|
519
65
|
//#endregion
|
|
520
|
-
export {
|
|
66
|
+
export { NO_TERMINAL_RECORD, RUNTIME_FAILED_STATUS, SUPERVISOR_RUN_INTEGRITY_SCHEMA, analyzeSupervisorRun, analyzeSupervisorRunIntegrity, analyzeSupervisorRunSources, findSupervisorRunDirs, isRuntimeSupervisorRunDir, isUnavailable, parsePatch, parseSupervisorTree, readRuntimeSupervisorRun, readTerminalRecord, renderSupervisorRollupMarkdown, renderSupervisorRunHeadline, renderSupervisorRunMarkdown, rollupSupervisorRuns, showMeasured, supervisorRunRolloutLines, unavailable };
|
|
521
67
|
|
|
522
68
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["round"],"sources":["../../src/supervisor-run/claude-code-reader.ts","../../src/supervisor-run/rollup.ts"],"sourcesContent":["/**\n * Supervision-tree reader over a THIRD-PARTY harness: Claude Code.\n *\n * The Runtime reader reads a supervisor journal designed for this analysis.\n * for this analysis. This reader reads a harness we do not control, whose\n * transcript was designed for replaying a chat — and recovers the same tree\n * from it. If both produce a `SupervisorRunSources`, the tree model is a\n * property of multi-agent runs, not of our journal format.\n *\n * ## Where the tree hides in a Claude Code transcript\n *\n * | Tree fact | Claude Code evidence |\n * |---|---|\n * | spawn | assistant `tool_use` (`Agent` / `Task`), answered by a `tool_result` whose `toolUseResult.agentId` names the child |\n * | settle | a `<task-notification>` block in a later user line: `<task-id>` = agentId, `<status>` |\n * | steer | assistant `tool_use` (`SendMessage`) with `input.to` = agentId — mid-task, to a LIVE child |\n * | delivered | that steer's `tool_result` carrying `success` / `resumedAgentId` |\n * | cancel | assistant `tool_use` (`TaskStop`) targeting an agentId |\n * | brain spend| `message.usage` on the main thread's assistant lines |\n * | worker spend| `message.usage` inside `<session>/subagents/agent-<id>.jsonl` |\n * | depth | a child transcript that itself contains `Agent` tool_use lines |\n *\n * Every one of those is read from the normalized session of @tangle-network/harness-sessions — the SAME\n * parser `src/rollout/readers/claude-jsonl.ts` uses for solo rollouts. There\n * is no second transcript parser.\n *\n * ## What Claude Code cannot say\n *\n * It records tokens but never a price, runs no per-worker verify, and keeps no\n * per-worker patch. Those are declared once in `limits`, so the analyzer\n * reports `unavailable — <reason>` instead of the $0 / 0-accepted that summing\n * an empty field would produce. See `SourceLimits`.\n *\n * ## Metric coverage vs the Runtime journal\n *\n * Measured on a real 52-agent session (fixture:\n * `tests/fixtures/supervisor-run/claude-code-session-*`).\n *\n * | Metric | Runtime | Claude Code | Why |\n * |---|---|---|---|\n * | workersSpawned / Settled / Cancelled | full | full | spawn tool_use + task-notification + TaskStop |\n * | steers / steersDelivered / steersByWorker | full | full | `SendMessage`; delivery from its tool_result |\n * | waves / waveSizes / maxConcurrency | full | full | derived from spawn/settle instants |\n * | respawns / repeatedLabels | full | full | same derivation |\n * | delegationDepth | full | full | a child transcript's own spawn calls |\n * | timeToFirstSpawn / supervisorWall | full | full | transcript instants |\n * | idleMs / idlePct / workerUtilization | full | PARTIAL | an agent that never notifies is counted live to the end of the transcript |\n * | observeThenRespawn / respawnWithoutEvidence | full | full | ordering of spawn vs settle instants |\n * | workerEvidenceBytes | full | PARTIAL | the child's closing message; 0 for pruned transcripts |\n * | brain tokens in/out + cache | full | full | main-thread `message.usage` |\n * | worker tokens in/out + cache | via harness join | full or unavailable | totals are refused if any spawned transcript was pruned; retained per-worker rows remain available |\n * | perWorker wall | full | full | spawn → settle instants |\n * | accepted / rejected / emptyPass / settledVerdicts | full | NONE | no per-worker verify step exists |\n * | brain/worker/total usd, costPerAcceptedPatch | full | NONE | transcripts carry no price |\n * | patch stats, delivered, verifyPass/Rc | full | NONE | no diff is handed back |\n * | judgeResolved / Score / Passed / Total | full | NONE | no judge in the loop |\n * | driverSteerCalls, brainTruncations | full | NONE | no outer driver log, no per-call finish_reason tap |\n */\n\nimport { readdir, readFile } from 'node:fs/promises'\nimport { basename, dirname, join } from 'node:path'\nimport {\n claudeCodeReader,\n claudeCodeRefForFile,\n type HarnessSession,\n} from '@tangle-network/harness-sessions'\nimport { type ClaudeTranscript, transcriptFromSession } from '../rollout/readers/claude-jsonl'\nimport type { SupervisorRunReader, SupervisorRunSources, WorkerLogSource } from './types'\n\n/** Tool names that spawn a child agent. `Task` is the older name for `Agent`. */\nconst DEFAULT_SPAWN_TOOLS = ['Agent', 'Task'] as const\n/** Tool names that deliver a message to an ALREADY-RUNNING child agent. */\nconst DEFAULT_STEER_TOOLS = ['SendMessage'] as const\n/** Tool names that stop a running child agent. */\nconst DEFAULT_CANCEL_TOOLS = ['TaskStop', 'KillAgent'] as const\n\nconst SPEND_UNPRICED =\n 'Claude Code transcripts record token usage but never a price — usd is not in the store'\nconst NO_VERDICTS =\n 'Claude Code runs no per-worker verify step — a subagent reports prose, not pass/fail'\nconst NO_DELIVERABLES =\n 'Claude Code retains no per-worker patch — subagents commit to git, they do not hand back a diff'\n\nexport interface ClaudeCodeReaderOptions {\n /** The main session transcript: `~/.claude/projects/<slug>/<sessionId>.jsonl`. */\n readonly transcriptPath: string\n /**\n * Directory of child transcripts. Defaults to `<transcript-dir>/<sessionId>/subagents`.\n * `null` skips the join, and every per-worker token count becomes unavailable.\n */\n readonly subagentsDir?: string | null\n readonly runRef?: string\n readonly instanceId?: string | null\n readonly arm?: string | null\n readonly spawnTools?: readonly string[]\n readonly steerTools?: readonly string[]\n readonly cancelTools?: readonly string[]\n}\n\nconst isRecord = (v: unknown): v is Record<string, unknown> =>\n typeof v === 'object' && v !== null && !Array.isArray(v)\n\nconst str = (v: unknown): string | null => (typeof v === 'string' ? v : null)\n\ninterface ToolUse {\n readonly id: string\n readonly name: string\n readonly input: Record<string, unknown>\n readonly at: string | null\n}\n\ninterface ToolResult {\n readonly id: string\n readonly at: string | null\n readonly structured: unknown\n readonly text: string\n}\n\n/** Every tool call and tool result on one thread, in order, with instants. */\ninterface ThreadCalls {\n readonly uses: ToolUse[]\n readonly results: Map<string, ToolResult>\n readonly notifications: TaskNotification[]\n readonly firstAt: string | null\n readonly lastAt: string | null\n}\n\ninterface TaskNotification {\n readonly taskId: string\n readonly toolUseId: string | null\n readonly status: string\n readonly summary: string | null\n readonly at: string | null\n}\n\nconst tag = (xml: string, name: string): string | null => {\n const m = xml.match(new RegExp(`<${name}>([\\\\s\\\\S]*?)</${name}>`))\n return m === null ? null : (m[1] as string)\n}\n\n/**\n * Task notifications are the settle instants. A notification fires each time an\n * agent stops, so a resumed agent produces several — they are kept in order and\n * the LAST one is the settle the analyzer sees, with the earlier ones acting as\n * the intermediate stops they actually were.\n */\nfunction parseNotifications(text: string, at: string | null): TaskNotification[] {\n const out: TaskNotification[] = []\n for (const m of text.matchAll(/<task-notification>[\\s\\S]*?<\\/task-notification>/g)) {\n const xml = m[0]\n const taskId = tag(xml, 'task-id')\n if (taskId === null) continue\n out.push({\n taskId: taskId.trim(),\n toolUseId: tag(xml, 'tool-use-id')?.trim() ?? null,\n status: tag(xml, 'status')?.trim() ?? 'unknown',\n summary: tag(xml, 'summary')?.trim() ?? null,\n at,\n })\n }\n return out\n}\n\n/** Project ONE thread's session (main or a single subagent) into tool traffic. */\nfunction threadCalls(session: HarnessSession): ThreadCalls {\n const uses: ToolUse[] = []\n const results = new Map<string, ToolResult>()\n const notifications: TaskNotification[] = []\n for (const call of session.toolCalls) {\n uses.push({\n id: call.id,\n name: call.name,\n input: isRecord(call.input) ? call.input : {},\n at: call.startedAt,\n })\n if (call.result !== null) {\n results.set(call.id, {\n id: call.id,\n at: call.result.at,\n structured: call.result.details,\n text: call.result.text ?? '',\n })\n }\n }\n for (const message of session.messages) {\n if (message.role !== 'user') continue\n for (const part of message.parts) {\n if (part.type === 'text') notifications.push(...parseNotifications(part.text, message.at))\n }\n }\n return { uses, results, notifications, firstAt: session.startedAt, lastAt: session.endedAt }\n}\n\n/**\n * The agent id a spawn produced. Claude Code puts it in the structured\n * `toolUseResult`; the same id is echoed in the result text for transcripts\n * written before that field existed, so both are tried before giving up.\n */\nfunction spawnedAgentId(result: ToolResult | undefined): string | null {\n if (result === undefined) return null\n if (isRecord(result.structured)) {\n const id = str(result.structured.agentId)\n if (id !== null) return id\n }\n return result.text.match(/agentId:\\s*([A-Za-z0-9_-]+)/)?.[1] ?? null\n}\n\ninterface ChildTranscript {\n readonly agentId: string\n readonly path: string\n readonly description: string | null\n readonly spawnToolUseId: string | null\n readonly spawnDepth: number | null\n readonly session: HarnessSession\n readonly tokensIn: number | null\n readonly tokensOut: number | null\n readonly cacheRead: number | null\n readonly cacheWrite: number | null\n readonly gaps: readonly string[]\n readonly firstAt: string | null\n readonly lastAt: string | null\n readonly model: string | null\n /**\n * The child's closing assistant message — what it actually handed back. This\n * is the Claude Code analogue of a worker's `evidence` blob.\n */\n readonly finalReport: string | null\n}\n\nasync function readChildren(dir: string): Promise<ChildTranscript[]> {\n const names = await readdir(dir).catch(() => null)\n if (names === null) return []\n const out: ChildTranscript[] = []\n for (const name of names.filter((n) => n.endsWith('.jsonl')).sort()) {\n const path = join(dir, name)\n // A subagent transcript is sidechain end to end: read it as the subagent's own session.\n const session = await claudeCodeReader\n .read(claudeCodeRefForFile(path, 'parent'))\n .catch(() => null)\n if (session === null) continue\n const projected: ClaudeTranscript = transcriptFromSession(session)\n const metaRaw = await readFile(path.replace(/\\.jsonl$/, '.meta.json'), 'utf8').catch(() => null)\n let meta: Record<string, unknown> = {}\n if (metaRaw !== null) {\n try {\n const parsed: unknown = JSON.parse(metaRaw)\n if (isRecord(parsed)) meta = parsed\n } catch {\n meta = {}\n }\n }\n // The records name the agent; the file name is the fallback for a transcript that does not.\n const agentId = session.nativeSessionId\n out.push({\n agentId,\n path,\n description: str(meta.description),\n spawnToolUseId: str(meta.toolUseId),\n spawnDepth: typeof meta.spawnDepth === 'number' ? meta.spawnDepth : null,\n session,\n tokensIn: projected.usage.tokensIn,\n tokensOut: projected.usage.tokensOut,\n cacheRead: projected.usage.cacheRead,\n cacheWrite: projected.usage.cacheWrite,\n gaps: projected.gaps,\n firstAt: projected.startedAt,\n lastAt: projected.endedAt,\n model: projected.model,\n finalReport:\n [...projected.messages]\n .reverse()\n .find((m) => m.role === 'assistant' && typeof m.content === 'string')?.content ?? null,\n })\n }\n return out\n}\n\ninterface SpawnFact {\n readonly agentId: string\n readonly parentId: string\n readonly label: string\n readonly at: string | null\n readonly model: string | null\n}\n\n/** A journal line in the dialect `parseSupervisorTree` reads. */\nconst line = (obj: Record<string, unknown>): string => JSON.stringify(obj)\n\n/**\n * Read a Claude Code session (plus its subagent transcripts) as supervision-tree\n * source bytes. Never throws on a missing artifact.\n */\nexport async function readClaudeCodeSupervisorRun(\n opts: ClaudeCodeReaderOptions,\n): Promise<SupervisorRunSources> {\n const spawnTools = new Set(opts.spawnTools ?? DEFAULT_SPAWN_TOOLS)\n const steerTools = new Set(opts.steerTools ?? DEFAULT_STEER_TOOLS)\n const cancelTools = new Set(opts.cancelTools ?? DEFAULT_CANCEL_TOOLS)\n\n const mainSession = await claudeCodeReader\n .read(claudeCodeRefForFile(opts.transcriptPath))\n .catch(() => null)\n const sessionId = basename(opts.transcriptPath).replace(/\\.jsonl$/, '')\n const runRef = opts.runRef ?? opts.transcriptPath\n const limits = {\n managerTokens: null,\n workerTokens: null,\n spendUsd: SPEND_UNPRICED,\n workerVerdicts: NO_VERDICTS,\n deliverables: null,\n }\n const traceCommand = `npx --yes @tangle-network/traces@latest analyze --harness claude-code --session ${sessionId}`\n\n if (mainSession === null) {\n return {\n runRef,\n instanceId: opts.instanceId ?? sessionId,\n arm: opts.arm ?? null,\n supRunDir: null,\n journal: null,\n brainLog: null,\n state: null,\n progress: null,\n workers: null,\n workersMissingReason: `session transcript unreadable at ${opts.transcriptPath}`,\n result: null,\n judge: null,\n judgeSource: null,\n patch: null,\n driverLog: null,\n harnessWorkerTokens: null,\n harnessMissingReason: `session transcript unreadable at ${opts.transcriptPath}`,\n limits: {\n ...limits,\n managerTokens: `session transcript unreadable at ${opts.transcriptPath}`,\n workerTokens: `session transcript unreadable at ${opts.transcriptPath}`,\n deliverables: NO_DELIVERABLES,\n },\n traceCommand,\n }\n }\n\n const main = threadCalls(mainSession)\n const mainTranscript = transcriptFromSession(mainSession)\n\n const subagentsDir =\n opts.subagentsDir === undefined\n ? join(dirname(opts.transcriptPath), sessionId, 'subagents')\n : opts.subagentsDir\n const children = subagentsDir === null ? [] : await readChildren(subagentsDir)\n const childByAgentId = new Map(children.map((c) => [c.agentId, c]))\n const childBySpawnToolUseId = new Map(\n children.filter((c) => c.spawnToolUseId !== null).map((c) => [c.spawnToolUseId as string, c]),\n )\n\n // Every thread that can spawn: the session itself, plus each child transcript\n // (a child that calls the spawn tool is a second delegation level).\n const threads: Array<{ id: string; calls: ThreadCalls }> = [{ id: sessionId, calls: main }]\n for (const child of children) {\n threads.push({ id: child.agentId, calls: threadCalls(child.session) })\n }\n\n const spawns: SpawnFact[] = []\n const steersByTarget = new Map<\n string,\n Array<{ requestId: string; at: string | null; delivered: boolean }>\n >()\n const cancels: Array<{ agentId: string; at: string | null }> = []\n const settles: TaskNotification[] = []\n\n for (const thread of threads) {\n for (const use of thread.calls.uses) {\n if (spawnTools.has(use.name)) {\n const result = thread.calls.results.get(use.id)\n const agentId = spawnedAgentId(result) ?? childBySpawnToolUseId.get(use.id)?.agentId ?? null\n if (agentId === null) continue\n const label =\n str(use.input.description) ?? childByAgentId.get(agentId)?.description ?? agentId\n spawns.push({\n agentId,\n parentId: thread.id,\n label,\n // The spawn is complete when the launch call is answered; the tool_use\n // instant is the fallback for a call that never got a result line.\n at: result?.at ?? use.at,\n model: isRecord(result?.structured) ? str(result.structured.resolvedModel) : null,\n })\n continue\n }\n if (steerTools.has(use.name)) {\n const target = str(use.input.to) ?? str(use.input.recipient)\n if (target === null) continue\n const result = thread.calls.results.get(use.id)\n const structured = isRecord(result?.structured) ? result.structured : null\n // `success` is the harness confirming the message reached a live agent;\n // absent, the steer is counted queued but not delivered.\n const delivered = structured?.success === true || str(structured?.resumedAgentId) === target\n const rows = steersByTarget.get(target) ?? []\n rows.push({ requestId: use.id, at: use.at, delivered })\n steersByTarget.set(target, rows)\n continue\n }\n if (cancelTools.has(use.name)) {\n const target = str(use.input.agentId) ?? str(use.input.to) ?? str(use.input.taskId)\n if (target !== null) cancels.push({ agentId: target, at: use.at })\n }\n }\n settles.push(...thread.calls.notifications)\n }\n\n const spawnedIds = new Set(spawns.map((s) => s.agentId))\n const cancelledIds = new Set(\n cancels.filter((c) => spawnedIds.has(c.agentId)).map((c) => c.agentId),\n )\n const startedAt = main.firstAt\n const completedAt = main.lastAt\n\n const journalLines: string[] = [\n line({\n kind: 'spawned',\n id: sessionId,\n parent: null,\n label: `session:${sessionId}`,\n role: 'supervisor',\n at: startedAt,\n }),\n ]\n for (const s of spawns) {\n journalLines.push(\n line({\n kind: 'spawned',\n id: s.agentId,\n parent: s.parentId,\n label: s.label,\n role: 'worker',\n at: s.at,\n }),\n )\n }\n\n // Only the LAST notification per agent is its settle; an earlier one is a stop\n // the supervisor resumed from, which the steer count already records.\n const lastNotification = new Map<string, TaskNotification>()\n for (const n of settles) {\n if (!spawnedIds.has(n.taskId)) continue\n lastNotification.set(n.taskId, n)\n }\n for (const [agentId, n] of lastNotification) {\n if (cancelledIds.has(agentId)) continue\n journalLines.push(\n line({\n kind: 'settled',\n id: agentId,\n status: n.status,\n verdict: n.summary,\n at: n.at,\n // No `spent` key: Claude Code prices nothing, and a zeroed spend object\n // would read as a $0 worker. `limits.spendUsd` carries the reason.\n }),\n )\n }\n // One cancel per agent: Claude Code can emit a stop then a retry-stop for the\n // same agentId, and each raw entry would otherwise mint a duplicate `cancelled`\n // line that double-counts in `workersCancelled`. Keep the last, mirroring the\n // last-notification dedup the settle path already does.\n const lastCancel = new Map<string, { agentId: string; at: string | null }>()\n for (const c of cancels) {\n if (!spawnedIds.has(c.agentId)) continue\n lastCancel.set(c.agentId, c)\n }\n for (const c of lastCancel.values()) {\n journalLines.push(\n line({ kind: 'cancelled', id: c.agentId, reason: 'stopped by supervisor', at: c.at }),\n )\n }\n // `metered` carries the brain's own inference. The token counts are real; the\n // usd stays absent and `limits.spendUsd` explains why.\n if (\n mainTranscript.gaps.length === 0 &&\n mainTranscript.usage.tokensIn !== null &&\n mainTranscript.usage.tokensOut !== null &&\n mainTranscript.usage.cacheRead !== null &&\n mainTranscript.usage.cacheWrite !== null\n ) {\n journalLines.push(\n line({\n kind: 'metered',\n id: sessionId,\n spend: {\n tokens: {\n input: mainTranscript.usage.tokensIn,\n output: mainTranscript.usage.tokensOut,\n cacheRead: mainTranscript.usage.cacheRead,\n cacheWrite: mainTranscript.usage.cacheWrite,\n },\n },\n at: completedAt,\n }),\n )\n }\n\n const settleAtByAgent = new Map(\n [...lastNotification.entries()].map(([id, n]) => [id, n.at] as const),\n )\n const spawnAtByAgent = new Map(spawns.map((s) => [s.agentId, s.at] as const))\n\n const workers: WorkerLogSource[] = []\n for (const spawn of spawns) {\n const { agentId, label } = spawn\n const events: string[] = []\n const inbox: string[] = []\n const child = childByAgentId.get(agentId) ?? null\n const startAt = child?.firstAt ?? spawnAtByAgent.get(agentId) ?? null\n const endAt = settleAtByAgent.get(agentId) ?? child?.lastAt ?? null\n if (startAt !== null) events.push(line({ kind: 'started', label, at: startAt, agentId }))\n for (const steer of steersByTarget.get(agentId) ?? []) {\n inbox.push(line({ id: steer.requestId, at: steer.at, worker: label, message: 'steer' }))\n events.push(\n line({\n kind: 'message',\n label,\n direction: 'down',\n at: steer.at,\n requestId: steer.requestId,\n delivered: steer.delivered,\n }),\n )\n }\n if (endAt !== null) {\n events.push(\n line({\n kind: 'finished',\n label,\n at: endAt,\n agentId,\n // No `passed` / `patchBytes`: this harness has neither. Emitting\n // `passed: false` here would invent a failed worker.\n // `evidence` is the child's closing message — what it handed back.\n ...(child?.finalReport === null || child?.finalReport === undefined\n ? {}\n : { evidence: child.finalReport }),\n }),\n )\n }\n workers.push({\n workerId: agentId,\n label,\n events: events.length === 0 ? '' : `${events.join('\\n')}\\n`,\n inbox: inbox.length === 0 ? '' : `${inbox.join('\\n')}\\n`,\n patchBytes: null,\n transcriptRef: child?.path ?? null,\n patchPath: null,\n tokensIn: child?.tokensIn ?? null,\n tokensOut: child?.tokensOut ?? null,\n cacheRead: child?.cacheRead ?? null,\n cacheWrite: child?.cacheWrite ?? null,\n })\n }\n\n const joined = children.length\n const missingChildren = spawns.filter((spawn) => !childByAgentId.has(spawn.agentId)).length\n const incompleteChildren = children.filter(\n (child) =>\n child.gaps.length > 0 ||\n child.tokensIn === null ||\n child.tokensOut === null ||\n child.cacheRead === null ||\n child.cacheWrite === null,\n ).length\n const harnessMissingReason =\n subagentsDir === null\n ? 'subagent transcript join disabled'\n : joined === 0\n ? `no subagent transcripts under ${subagentsDir}`\n : missingChildren > 0\n ? `${missingChildren}/${spawns.length} spawned agents have no retained transcript under ${subagentsDir}`\n : incompleteChildren > 0\n ? `${incompleteChildren}/${joined} subagent transcripts have malformed lines or unknown usage`\n : null\n const harnessWorkerTokens =\n joined === 0 || incompleteChildren > 0\n ? null\n : {\n store: 'claude-code subagent transcripts',\n sessions: joined,\n input: children.reduce((a, child) => a + (child.tokensIn ?? 0), 0),\n output: children.reduce((a, child) => a + (child.tokensOut ?? 0), 0),\n cacheRead: children.reduce((a, child) => a + (child.cacheRead ?? 0), 0),\n cacheWrite: children.reduce((a, child) => a + (child.cacheWrite ?? 0), 0),\n }\n\n const liveWorkers = spawns.filter(\n (s) => !lastNotification.has(s.agentId) && !cancelledIds.has(s.agentId),\n ).length\n const state = JSON.stringify({\n id: sessionId,\n // Derived, not asserted: a spawned agent with no notification and no stop\n // is still running, which is exactly what a live transcript looks like.\n status: liveWorkers > 0 ? 'running' : 'idle',\n startedAt,\n completedAt,\n result: { delivered: null },\n })\n\n return {\n runRef,\n instanceId: opts.instanceId ?? sessionId,\n arm: opts.arm ?? null,\n supRunDir: subagentsDir,\n journal: `${journalLines.join('\\n')}\\n`,\n brainLog: null,\n state,\n progress: null,\n workers,\n workersMissingReason: null,\n result: null,\n judge: null,\n judgeSource: null,\n patch: null,\n driverLog: null,\n harnessWorkerTokens,\n harnessMissingReason,\n limits: {\n ...limits,\n managerTokens:\n mainTranscript.gaps.length > 0\n ? `main transcript has ${mainTranscript.gaps.length} parse or usage gaps`\n : null,\n workerTokens: spawns.length === 0 ? null : harnessMissingReason,\n deliverables: NO_DELIVERABLES,\n },\n rootTranscriptRef: opts.transcriptPath,\n traceCommand,\n }\n}\n\n/** A `SupervisorRunReader` over a Claude Code session — the same contract Runtime implements. */\nexport function claudeCodeSupervisorRunReader(opts: ClaudeCodeReaderOptions): SupervisorRunReader {\n return {\n runRef: opts.runRef ?? opts.transcriptPath,\n read: () => readClaudeCodeSupervisorRun(opts),\n }\n}\n","/** Aggregate supervisor reports while retaining missing-measurement denominators. */\nimport { roundDecimal as round } from '../math/round-decimal'\nimport type { Measured, RollupCellRow, SupervisorRunReport, SupervisorRunRollup } from './types'\nimport { isUnavailable, SUPERVISOR_RUN_ROLLUP_SCHEMA, unavailable } from './types'\n\n/**\n * Aggregate many supervisor-run reports. A metric no run could measure stays\n * `unavailable` rather than becoming a 0-valued mean, and cells whose steer\n * count was unavailable are counted separately from cells that measured zero.\n */\nexport function rollupSupervisorRuns(reports: readonly SupervisorRunReport[]): SupervisorRunRollup {\n const known = <T>(vals: readonly Measured<T>[]): T[] =>\n vals.filter((v): v is T => !isUnavailable(v))\n const steerVals = known(reports.map((r) => r.orchestration.steers))\n const waveVals = known(reports.map((r) => r.orchestration.waves))\n const concVals = known(reports.map((r) => r.orchestration.maxConcurrency))\n const utilVals = known(reports.map((r) => r.orchestration.workerUtilization))\n const idleVals = known(reports.map((r) => r.orchestration.idlePct))\n const spawnVals = known(reports.map((r) => r.orchestration.workersSpawned))\n const acceptVals = known(reports.map((r) => r.decision.accepted))\n const usdVals = known(reports.map((r) => r.economics.totalUsd))\n const journalSpendVals = known(reports.map((r) => r.economics.spend.journalDerived.usd))\n const closeSpendVals = known(reports.map((r) => r.economics.spend.closeRecord.usd))\n const resolvedVals = known(reports.map((r) => r.outcome.judgeResolved))\n const sum = (xs: readonly number[]): number => xs.reduce((a, b) => a + b, 0)\n const mean = (xs: readonly number[]): Measured<number> =>\n xs.length === 0 ? unavailable('no cell reported this metric') : round(sum(xs) / xs.length, 3)\n\n const perCell: RollupCellRow[] = reports.map((r) => ({\n instanceId: r.instanceId,\n arm: r.arm,\n steers: r.orchestration.steers,\n waves: r.orchestration.waves,\n utilization: r.orchestration.workerUtilization,\n idlePct: r.orchestration.idlePct,\n resolved: r.outcome.judgeResolved,\n usd: r.economics.totalUsd,\n ...(r.economics.resourceRecords === undefined\n ? {}\n : { resourceRecords: r.economics.resourceRecords }),\n }))\n\n return {\n schema: SUPERVISOR_RUN_ROLLUP_SCHEMA,\n cells: reports.length,\n steersTotal:\n steerVals.length === 0 ? unavailable('no cell reported a steer count') : sum(steerVals),\n cellsWithSteers:\n steerVals.length === 0\n ? unavailable('no cell reported a steer count')\n : steerVals.filter((n) => n > 0).length,\n cellsWithUnavailableSteers: reports.filter((r) => isUnavailable(r.orchestration.steers)).length,\n wavesMean: mean(waveVals),\n maxConcurrencyMax:\n concVals.length === 0 ? unavailable('no cell reported concurrency') : Math.max(...concVals),\n utilizationMean: mean(utilVals),\n idlePctMean: mean(idleVals),\n workersSpawnedTotal:\n spawnVals.length === 0 ? unavailable('no cell reported spawns') : sum(spawnVals),\n acceptedTotal:\n acceptVals.length === 0 ? unavailable('no cell reported acceptance') : sum(acceptVals),\n usdTotal: usdVals.length === 0 ? unavailable('no cell reported spend') : round(sum(usdVals), 6),\n spendUsd: {\n journalDerived: {\n value:\n journalSpendVals.length === 0\n ? unavailable('no cell measured journal-derived spend')\n : round(sum(journalSpendVals), 6),\n runs: journalSpendVals.length,\n },\n closeRecord: {\n value:\n closeSpendVals.length === 0\n ? unavailable('no cell carried a close record')\n : round(sum(closeSpendVals), 6),\n runs: closeSpendVals.length,\n },\n },\n resolvedCount:\n resolvedVals.length === 0\n ? unavailable('no cell reported a judge verdict')\n : resolvedVals.filter((v) => v === true).length,\n perCell,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["round"],"sources":["../../src/supervisor-run/rollup.ts"],"sourcesContent":["/** Aggregate supervisor reports while retaining missing-measurement denominators. */\nimport { roundDecimal as round } from '../math/round-decimal'\nimport type { Measured, RollupCellRow, SupervisorRunReport, SupervisorRunRollup } from './types'\nimport { isUnavailable, SUPERVISOR_RUN_ROLLUP_SCHEMA, unavailable } from './types'\n\n/**\n * Aggregate many supervisor-run reports. A metric no run could measure stays\n * `unavailable` rather than becoming a 0-valued mean, and cells whose steer\n * count was unavailable are counted separately from cells that measured zero.\n */\nexport function rollupSupervisorRuns(reports: readonly SupervisorRunReport[]): SupervisorRunRollup {\n const known = <T>(vals: readonly Measured<T>[]): T[] =>\n vals.filter((v): v is T => !isUnavailable(v))\n const steerVals = known(reports.map((r) => r.orchestration.steers))\n const waveVals = known(reports.map((r) => r.orchestration.waves))\n const concVals = known(reports.map((r) => r.orchestration.maxConcurrency))\n const utilVals = known(reports.map((r) => r.orchestration.workerUtilization))\n const idleVals = known(reports.map((r) => r.orchestration.idlePct))\n const spawnVals = known(reports.map((r) => r.orchestration.workersSpawned))\n const acceptVals = known(reports.map((r) => r.decision.accepted))\n const usdVals = known(reports.map((r) => r.economics.totalUsd))\n const journalSpendVals = known(reports.map((r) => r.economics.spend.journalDerived.usd))\n const closeSpendVals = known(reports.map((r) => r.economics.spend.closeRecord.usd))\n const resolvedVals = known(reports.map((r) => r.outcome.judgeResolved))\n const sum = (xs: readonly number[]): number => xs.reduce((a, b) => a + b, 0)\n const mean = (xs: readonly number[]): Measured<number> =>\n xs.length === 0 ? unavailable('no cell reported this metric') : round(sum(xs) / xs.length, 3)\n\n const perCell: RollupCellRow[] = reports.map((r) => ({\n instanceId: r.instanceId,\n arm: r.arm,\n steers: r.orchestration.steers,\n waves: r.orchestration.waves,\n utilization: r.orchestration.workerUtilization,\n idlePct: r.orchestration.idlePct,\n resolved: r.outcome.judgeResolved,\n usd: r.economics.totalUsd,\n ...(r.economics.resourceRecords === undefined\n ? {}\n : { resourceRecords: r.economics.resourceRecords }),\n }))\n\n return {\n schema: SUPERVISOR_RUN_ROLLUP_SCHEMA,\n cells: reports.length,\n steersTotal:\n steerVals.length === 0 ? unavailable('no cell reported a steer count') : sum(steerVals),\n cellsWithSteers:\n steerVals.length === 0\n ? unavailable('no cell reported a steer count')\n : steerVals.filter((n) => n > 0).length,\n cellsWithUnavailableSteers: reports.filter((r) => isUnavailable(r.orchestration.steers)).length,\n wavesMean: mean(waveVals),\n maxConcurrencyMax:\n concVals.length === 0 ? unavailable('no cell reported concurrency') : Math.max(...concVals),\n utilizationMean: mean(utilVals),\n idlePctMean: mean(idleVals),\n workersSpawnedTotal:\n spawnVals.length === 0 ? unavailable('no cell reported spawns') : sum(spawnVals),\n acceptedTotal:\n acceptVals.length === 0 ? unavailable('no cell reported acceptance') : sum(acceptVals),\n usdTotal: usdVals.length === 0 ? unavailable('no cell reported spend') : round(sum(usdVals), 6),\n spendUsd: {\n journalDerived: {\n value:\n journalSpendVals.length === 0\n ? unavailable('no cell measured journal-derived spend')\n : round(sum(journalSpendVals), 6),\n runs: journalSpendVals.length,\n },\n closeRecord: {\n value:\n closeSpendVals.length === 0\n ? unavailable('no cell carried a close record')\n : round(sum(closeSpendVals), 6),\n runs: closeSpendVals.length,\n },\n },\n resolvedCount:\n resolvedVals.length === 0\n ? unavailable('no cell reported a judge verdict')\n : resolvedVals.filter((v) => v === true).length,\n perCell,\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { d as CostReceiptInput, p as CustomTokenPricing } from "./cost-ledger-Jk62OBfF.js";
|
|
2
|
-
import {
|
|
3
|
-
import { R as Scenario, S as JudgeConfig, w as JudgeScore } from "./types-
|
|
4
|
-
import {
|
|
2
|
+
import { i as AnalystFinding, n as AnalystContext, t as Analyst } from "./types-CW8ewATZ.js";
|
|
3
|
+
import { R as Scenario, S as JudgeConfig, w as JudgeScore } from "./types-DtkO1G9L.js";
|
|
4
|
+
import { a as EvaluationResult, o as EvaluatorOptions, r as EvaluationContext } from "./evaluation-BOZ38vOH.js";
|
|
5
5
|
import { f as SystemOneResult, h as SystemOneState, i as SystemOneJson, o as SystemOneQuestions, u as SystemOneRequest } from "./systemone-protocol-DKoi1NdK.js";
|
|
6
|
-
import "./systemone-review-
|
|
6
|
+
import "./systemone-review-CwE6JGIp.js";
|
|
7
7
|
//#region src/systemone-domain-match.d.ts
|
|
8
8
|
type SystemOneDomainCoverage = 'complete' | 'partial' | 'missing';
|
|
9
9
|
interface SystemOneDomainEvidence {
|
|
@@ -132,4 +132,4 @@ interface SystemOneAnalystOptions<I, Q extends SystemOneQuestions = SystemOneQue
|
|
|
132
132
|
declare function systemOneAnalyst<I, Q extends SystemOneQuestions = SystemOneQuestions>(options: SystemOneAnalystOptions<I, Q>): Analyst<I>;
|
|
133
133
|
//#endregion
|
|
134
134
|
export { assessSystemOneDomainMatch as _, SystemOneOptions as a, systemOneEvaluator as c, SystemOneDomainCoverage as d, SystemOneDomainEvidence as f, SystemOneDomainMatchThresholds as g, SystemOneDomainMatchReport as h, SystemOneJudgeOptions as i, systemOneJudge as l, SystemOneDomainMatchReason as m, SystemOneEvaluate as n, normalizedSystemOneScore as o, SystemOneDomainMatchInput as p, SystemOneEvaluatorOptions as r, systemOneAnalyst as s, SystemOneAnalystOptions as t, PreparedSystemOneDomainMatch as u, prepareSystemOneDomainMatch as v };
|
|
135
|
-
//# sourceMappingURL=systemone-
|
|
135
|
+
//# sourceMappingURL=systemone-BMzDJb1i.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemone-
|
|
1
|
+
{"version":3,"file":"systemone-BMzDJb1i.d.ts","names":[],"sources":["../src/systemone-domain-match.ts","../src/systemone.ts"],"mappings":";;;;;;;KAYY;UAEK;GACd,cAAc;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA,YAAY;EACZ,UAAU;EACV,UAAU;EACV,YAAY;;KAGT;EACH;IACE;IACA;IACA;MAAY;MAAe;MAAkB;;;EAE/C;IACE;IACA;IACA,UAAU;;EAEZ;IACE;IACA;IACA,UAAU;;;UAIG,qCAAqC;EACpD,SAAS,iBAAiB;;EAE1B;;KAGU;UAUK;EACf;EACA;EACA;EACA;EACA;EACA,UAAU;EACV,QAAQ;EACR;IACE,OAAO;IACP,UAAU;IACV,QAAQ;;EAEV;IACE;IACA;IACA;;EAEF;;;iBAqHc,4BACd,OAAO,4BACN;;iBA+Ca,2BACd,UAAU,8BACV,eACC;;;KCxOS,oBAAoB,iBAAiB;UAChC;EACf,UAAU;EACV,aAAa,iBAAiB;EAC9B,gBAAgB,iBAAiB;EACjC,UAAU;EACV,WAAW,sBAAsB;EACjC,oBAAoB,OAAO,UAAU;;EAErC,eAAe,mBAAmB;;;iBAIpB,mBAAmB,SAAS,mCA2BtB,UAAU,oBAAkB,SACrC,iBAAiB,IAAE,UAClB,sBACT,QAAQ,iBAAiB,gBAAgB;KAUzC,MAAM,GAAG,UAAU;EAAc,UAAU;EAAG,UAAU;;KACxD,eAAe,GAAG,UAAU,sBAAsB,MAAM,OAAO,MAAM,IAAI,QAAQ;UACrE,yBAAyB;EACxC;EACA;EACA,WAAW;;UAEI,sBACf,GACA,UAAU,WAAW,UACrB,UAAU,qBAAqB,4BACvB;EACR;EACA;EACA,WAAW,eAAe,MAAM,GAAG,IAAI;EACvC,cACE,OAAO,MAAM,GAAG,IAChB,SAAS,sBACN,iBAAiB,QAAQ;EAC9B,aAAa,YAAY,GAAG;EAC5B,UAAU;EACV,OAAO,OAAO,gBAAgB,IAAI,OAAO,MAAM,GAAG,OAAO,aAAa,QAAQ;EAC9E,UACE,QAAQ,iBAAiB,gBAAgB,KACzC,OAAO,MAAM,GAAG,cACN;EACZ,aAAa,UAAU;;;iBA0BT,yBACd,QAAQ,iBACR,UAAU,yBACT;;iBAgCa,eACd,GACA,UAAU,WAAW,UACrB,UAAU,qBAAqB,oBAC/B,cAAc,SAAS,sBAAsB,GAAG,GAAG,KAAK,YAAY,GAAG;UAqDxD,wBAAwB,GAAG,UAAU,qBAAqB,4BACjE;EACR;EACA;EACA,WAAW,QAAQ;EACnB;EACA;EACA,WAAW,MAAM,OAAO,GAAG,SAAS,mBAAmB,IAAI,QAAQ;EACnE,cAAc,OAAO,GAAG,SAAS,mBAAmB,iBAAiB,QAAQ;EAC7E,WACE,OAAO,gBAAgB,IACvB,OAAO,GACP,SAAS,mBACN,mBAAmB,QAAQ;EAChC,UACE,QAAQ,iBAAiB,gBAAgB,KACzC,OAAO,GACP,SAAS,0BACC;;iBAGE,iBAAiB,GAAG,UAAU,qBAAqB,oBACjE,SAAS,wBAAwB,GAAG,KACnC,QAAQ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as AnalystFinding } from "./types-CW8ewATZ.js";
|
|
2
2
|
import { f as SystemOneResult, o as SystemOneQuestions, u as SystemOneRequest } from "./systemone-protocol-DKoi1NdK.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
//#region src/systemone-review.d.ts
|
|
@@ -73,4 +73,4 @@ declare function systemOneReviewFindings<Q extends SystemOneQuestions>(review: P
|
|
|
73
73
|
}): AnalystFinding[];
|
|
74
74
|
//#endregion
|
|
75
75
|
export { SystemOneReviewReport as a, systemOneReviewFindings as c, SystemOneReviewInput as i, SystemOneReviewAssessment as n, assessSystemOneReview as o, SystemOneReviewCheck as r, prepareSystemOneReview as s, PreparedSystemOneReview as t };
|
|
76
|
-
//# sourceMappingURL=systemone-review-
|
|
76
|
+
//# sourceMappingURL=systemone-review-CwE6JGIp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemone-review-
|
|
1
|
+
{"version":3,"file":"systemone-review-CwE6JGIp.d.ts","names":[],"sources":["../src/systemone-review.ts"],"mappings":";;;;cAcM,aAAW,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0Bb,EAAA,KAAA;;KAGQ,uBAAuB,EAAE,aAAa;UACjC,qBAAqB,UAAU,qBAAqB;EACnE;EACA,SAAS,iBAAiB;EAC1B,WAAW,WAAW,IAAI;;UAGX,wBAAwB,UAAU,qBAAqB,4BAC9D,qBAAqB;;EAE7B;;UAGe;EACf;EACA;EACA;;EAQA;EACA;EACA;EACA;EACA,OAAO;;UAGQ;EACf;EACA;EACA;EACA,aAAa;;;iBAWC,6BAA6B,UAAU,oBACrD,OAAO,qBAAqB,KAC3B,wBAAwB;;iBAuCX,sBAAsB,UAAU,oBAC9C,QAAQ,wBAAwB,IAChC,eACC;;iBAyDa,wBAAwB,UAAU,oBAChD,QAAQ,wBAAwB,IAChC,QAAQ,gBAAgB,IACxB;EAAW;EAAmB;IAC7B"}
|