@tangle-network/agent-eval 0.217.1 → 0.219.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +57 -1
- package/dist/adapters/http.d.ts +3 -3
- package/dist/adapters/http.d.ts.map +1 -1
- package/dist/adapters/http.js +1 -0
- package/dist/adapters/http.js.map +1 -1
- package/dist/{agent-profile-DTt8uGP9.d.ts → agent-profile-D01Io2Xw.d.ts} +4 -4
- package/dist/{agent-profile-DTt8uGP9.d.ts.map → agent-profile-D01Io2Xw.d.ts.map} +1 -1
- package/dist/analyst/index.d.ts +13 -13
- package/dist/analyst/index.d.ts.map +1 -1
- package/dist/analyst/index.js +10 -10
- package/dist/analyst/index.js.map +1 -1
- package/dist/{analyze-runs-DyeNcenW.d.ts → analyze-runs-BWAHBDAw.d.ts} +4 -4
- package/dist/{analyze-runs-DyeNcenW.d.ts.map → analyze-runs-BWAHBDAw.d.ts.map} +1 -1
- package/dist/{benchmark-command-xQK8nOI6.js → benchmark-command-BzmMTnvC.js} +664 -565
- package/dist/benchmark-command-BzmMTnvC.js.map +1 -0
- package/dist/benchmarks/index.d.ts +5 -5
- package/dist/benchmarks/index.js +3 -3
- package/dist/benchmarks/index.js.map +1 -1
- package/dist/campaign/index.d.ts +8 -8
- package/dist/campaign/index.js +11 -11
- package/dist/{campaign-CJGkxAQ6.js → campaign-BVPC6ODQ.js} +452 -282
- package/dist/campaign-BVPC6ODQ.js.map +1 -0
- package/dist/{campaign-evidence-CQYw8_0H.js → campaign-evidence-DunzcJGv.js} +2 -2
- package/dist/campaign-evidence-DunzcJGv.js.map +1 -0
- package/dist/{chat-client-ldqxYYTN.js → chat-client-CMQ8_h4J.js} +2 -2
- package/dist/{chat-client-ldqxYYTN.js.map → chat-client-CMQ8_h4J.js.map} +1 -1
- package/dist/{chat-json-call-DavzexSp.js → chat-json-call-BrZKn0L3.js} +2 -2
- package/dist/{chat-json-call-DavzexSp.js.map → chat-json-call-BrZKn0L3.js.map} +1 -1
- package/dist/cli.js +10 -10
- package/dist/{completion-verifier-B_jw6C9p.js → completion-verifier-Cigap8CG.js} +5 -5
- package/dist/{completion-verifier-B_jw6C9p.js.map → completion-verifier-Cigap8CG.js.map} +1 -1
- package/dist/contract/index.d.ts +11 -11
- package/dist/contract/index.js +91 -11
- package/dist/contract/index.js.map +1 -1
- package/dist/{cost-ledger-D0352Z4d.js → cost-ledger-BGZB6yY2.js} +75 -2
- package/dist/cost-ledger-BGZB6yY2.js.map +1 -0
- package/dist/{cost-ledger-Jk62OBfF.d.ts → cost-ledger-C1W3ICmP.d.ts} +26 -2
- package/dist/cost-ledger-C1W3ICmP.d.ts.map +1 -0
- package/dist/{default-registry-ClYjq3QE.js → default-registry-BrKmT01n.js} +310 -278
- package/dist/{default-registry-ClYjq3QE.js.map → default-registry-BrKmT01n.js.map} +1 -1
- package/dist/{default-registry-DXgLmoDI.d.ts → default-registry-Cwg_QN3d.d.ts} +6 -6
- package/dist/{default-registry-DXgLmoDI.d.ts.map → default-registry-Cwg_QN3d.d.ts.map} +1 -1
- package/dist/{define-agent-eval-BIkH_gAR.d.ts → define-agent-eval-C2nFhHPu.d.ts} +8 -8
- package/dist/{define-agent-eval-BIkH_gAR.d.ts.map → define-agent-eval-C2nFhHPu.d.ts.map} +1 -1
- package/dist/{define-agent-eval-BDxNlP3D.js → define-agent-eval-UQY3VbJ2.js} +165 -105
- package/dist/define-agent-eval-UQY3VbJ2.js.map +1 -0
- package/dist/diagnosis/index.d.ts +2 -2
- package/dist/{dspy-rlm-engine-DhdCr1Dc.js → dspy-rlm-engine-Bn_Mt_LW.js} +3 -3
- package/dist/{dspy-rlm-engine-DhdCr1Dc.js.map → dspy-rlm-engine-Bn_Mt_LW.js.map} +1 -1
- package/dist/{engine-BvZ0R-36.d.ts → engine-BpGGw6cd.d.ts} +3 -3
- package/dist/{engine-BvZ0R-36.d.ts.map → engine-BpGGw6cd.d.ts.map} +1 -1
- package/dist/eval-campaign-BUMIxKTE.js +393 -0
- package/dist/eval-campaign-BUMIxKTE.js.map +1 -0
- package/dist/{evaluation-jTjC_QQD.d.ts → evaluation-CBdQt_kr.d.ts} +4 -4
- package/dist/{evaluation-jTjC_QQD.d.ts.map → evaluation-CBdQt_kr.d.ts.map} +1 -1
- package/dist/evaluation.d.ts +1 -1
- package/dist/evaluation.js +1 -1
- package/dist/{exact-types-CflbJ9f3.d.ts → exact-types-BYFmYq44.d.ts} +2 -2
- package/dist/{exact-types-CflbJ9f3.d.ts.map → exact-types-BYFmYq44.d.ts.map} +1 -1
- package/dist/experiment/index.d.ts +24 -1
- package/dist/experiment/index.d.ts.map +1 -1
- package/dist/experiment/index.js +110 -71
- package/dist/experiment/index.js.map +1 -1
- package/dist/{exporters-Cl6IeNAu.js → exporters-DWvM16LE.js} +2 -2
- package/dist/{exporters-Cl6IeNAu.js.map → exporters-DWvM16LE.js.map} +1 -1
- package/dist/{external-optimizer-process-KVFGvYX1.js → external-optimizer-process-wOLfzsCC.js} +2 -2
- package/dist/{external-optimizer-process-KVFGvYX1.js.map → external-optimizer-process-wOLfzsCC.js.map} +1 -1
- package/dist/{external-optimizer-subprocess-XIHBOSKt.js → external-optimizer-subprocess-D670Oxf2.js} +4 -4
- package/dist/{external-optimizer-subprocess-XIHBOSKt.js.map → external-optimizer-subprocess-D670Oxf2.js.map} +1 -1
- package/dist/{feedback-trajectory-BWmhRBGu.d.ts → feedback-trajectory-DhB9WzYg.d.ts} +3 -3
- package/dist/{feedback-trajectory-BWmhRBGu.d.ts.map → feedback-trajectory-DhB9WzYg.d.ts.map} +1 -1
- package/dist/{findings-store-BMVQtEsm.js → findings-store-CvNo712L.js} +6 -6
- package/dist/{findings-store-BMVQtEsm.js.map → findings-store-CvNo712L.js.map} +1 -1
- package/dist/fuzz.d.ts +1 -1
- package/dist/fuzz.js +1 -1
- package/dist/{hf-dataset-D9f7-oX7.js → hf-dataset-CKxIJQba.js} +3 -3
- package/dist/{hf-dataset-D9f7-oX7.js.map → hf-dataset-CKxIJQba.js.map} +1 -1
- package/dist/hosted/index.js +1 -1
- package/dist/{index-CX-GAUpw.d.ts → index-CHxwfW5g.d.ts} +2 -2
- package/dist/{index-CX-GAUpw.d.ts.map → index-CHxwfW5g.d.ts.map} +1 -1
- package/dist/{index-BLGqZ81N.d.ts → index-CVFStrQD.d.ts} +8 -8
- package/dist/{index-BLGqZ81N.d.ts.map → index-CVFStrQD.d.ts.map} +1 -1
- package/dist/{index-9jJ2fKSX.d.ts → index-CalAsXMR.d.ts} +7 -5
- package/dist/index-CalAsXMR.d.ts.map +1 -0
- package/dist/{index-CiRwLv2R.d.ts → index-D7fmC-1K.d.ts} +3 -4
- package/dist/index-D7fmC-1K.d.ts.map +1 -0
- package/dist/{index-BiT6RtNH.d.ts → index-DAXfpVf7.d.ts} +10 -10
- package/dist/{index-BiT6RtNH.d.ts.map → index-DAXfpVf7.d.ts.map} +1 -1
- package/dist/{index-ZuWx52WG.d.ts → index-Q6DvdcwI.d.ts} +67 -24
- package/dist/index-Q6DvdcwI.d.ts.map +1 -0
- package/dist/index.d.ts +26 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +615 -692
- package/dist/index.js.map +1 -1
- package/dist/{integrity-DOd9Q86O.js → integrity-C8oUeB0g.js} +322 -197
- package/dist/integrity-C8oUeB0g.js.map +1 -0
- package/dist/{integrity-_qgZLA5p.d.ts → integrity-CCwvezWS.d.ts} +2 -2
- package/dist/{integrity-_qgZLA5p.d.ts.map → integrity-CCwvezWS.d.ts.map} +1 -1
- package/dist/{journal-CR4QikYp.js → journal-C7om8Gum.js} +48 -38
- package/dist/journal-C7om8Gum.js.map +1 -0
- package/dist/judge-gate-Co5tuh57.js.map +1 -1
- package/dist/{judge-gate-DsL0yFcb.d.ts → judge-gate-Dc_mXQsL.d.ts} +2 -2
- package/dist/judge-gate-Dc_mXQsL.d.ts.map +1 -0
- package/dist/{kind-factory-Gy4fXixd.js → kind-factory-BhxbtUsQ.js} +2 -2
- package/dist/{kind-factory-Gy4fXixd.js.map → kind-factory-BhxbtUsQ.js.map} +1 -1
- package/dist/ledger-core/index.d.ts +1 -1
- package/dist/ledger-core/index.js +2 -2
- package/dist/ledger-core/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-DrJhbms9.js → ledger-core-CAxUdDk0.js} +2 -2
- package/dist/{ledger-core-DrJhbms9.js.map → ledger-core-CAxUdDk0.js.map} +1 -1
- package/dist/{llm-client-BshCREn6.js → llm-client-DXuOTseU.js} +239 -249
- package/dist/llm-client-DXuOTseU.js.map +1 -0
- package/dist/{llm-judge-C8jMTNNG.js → llm-judge-Cc8vDJh_.js} +648 -459
- package/dist/llm-judge-Cc8vDJh_.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 +2 -2
- package/dist/{matrix-DHe-dwVJ.d.ts → matrix-Cf-AGxGh.d.ts} +4 -4
- package/dist/{matrix-DHe-dwVJ.d.ts.map → matrix-Cf-AGxGh.d.ts.map} +1 -1
- package/dist/meta-eval/index.d.ts +2 -2
- package/dist/{mint-zszyYlpA.js → mint-CbdwjTPW.js} +2 -2
- package/dist/{mint-zszyYlpA.js.map → mint-CbdwjTPW.js.map} +1 -1
- package/dist/{mint-BRZXuwRi.d.ts → mint-CkzpVPdz.d.ts} +3 -3
- package/dist/{mint-BRZXuwRi.d.ts.map → mint-CkzpVPdz.d.ts.map} +1 -1
- package/dist/multishot/golden/index.d.ts +1 -1
- package/dist/multishot/index.d.ts +2 -2
- package/dist/multishot/index.js.map +1 -1
- package/dist/openapi.json +1 -1
- package/dist/{pareto-BzsxidFD.js → pareto-BiBnQXAE.js} +306 -212
- package/dist/pareto-BiBnQXAE.js.map +1 -0
- package/dist/pipelines/index.d.ts.map +1 -1
- package/dist/pipelines/index.js.map +1 -1
- package/dist/{prime-protocol-BWG2DQIk.d.ts → prime-protocol-CckHBxGu.d.ts} +3 -3
- package/dist/{prime-protocol-BWG2DQIk.d.ts.map → prime-protocol-CckHBxGu.d.ts.map} +1 -1
- package/dist/{promotion-gate-DaY95yU6.d.ts → promotion-gate-CkVZHagC.d.ts} +3 -3
- package/dist/{promotion-gate-DaY95yU6.d.ts.map → promotion-gate-CkVZHagC.d.ts.map} +1 -1
- package/dist/{proposal-findings-BbWidvUk.js → proposal-findings-E1aSC_cU.js} +2 -2
- package/dist/{proposal-findings-BbWidvUk.js.map → proposal-findings-E1aSC_cU.js.map} +1 -1
- package/dist/{registry-ssNoHzwD.d.ts → registry-B_yG-1jh.d.ts} +5 -5
- package/dist/{registry-ssNoHzwD.d.ts.map → registry-B_yG-1jh.d.ts.map} +1 -1
- package/dist/{render-C-w2EZ6p.js → render-Cs34y0iX.js} +404 -208
- package/dist/render-Cs34y0iX.js.map +1 -0
- package/dist/reporting.d.ts +3 -3
- package/dist/{researcher-0ABVIdGa.d.ts → researcher-H0p44OYC.d.ts} +5 -5
- package/dist/{researcher-0ABVIdGa.d.ts.map → researcher-H0p44OYC.d.ts.map} +1 -1
- package/dist/{reward-DrZ71vnf.d.ts → reward-BeUgVVC_.d.ts} +2 -2
- package/dist/{reward-DrZ71vnf.d.ts.map → reward-BeUgVVC_.d.ts.map} +1 -1
- package/dist/{reward-hacking-E52wq86n.d.ts → reward-hacking-WTxUbtbb.d.ts} +2 -2
- package/dist/{reward-hacking-E52wq86n.d.ts.map → reward-hacking-WTxUbtbb.d.ts.map} +1 -1
- package/dist/rl.d.ts +8 -8
- package/dist/rl.js +4 -4
- package/dist/rollout/index.d.ts +3 -3
- package/dist/rollout/index.js +5 -5
- package/dist/{rollout-D6C50mfA.js → rollout-Dd1ucT_M.js} +5 -5
- package/dist/{rollout-D6C50mfA.js.map → rollout-Dd1ucT_M.js.map} +1 -1
- package/dist/{rubric-predictive-validity-DiwT8PbL.d.ts → rubric-predictive-validity-noY7uE03.d.ts} +2 -2
- package/dist/{rubric-predictive-validity-DiwT8PbL.d.ts.map → rubric-predictive-validity-noY7uE03.d.ts.map} +1 -1
- package/dist/{run-record-CaxbLq6Y.d.ts → run-record-C3awiXPf.d.ts} +2 -2
- package/dist/{run-record-CaxbLq6Y.d.ts.map → run-record-C3awiXPf.d.ts.map} +1 -1
- package/dist/schema-C-ziyJD7.d.ts.map +1 -1
- package/dist/{schema-DxcKTzbi.js → schema-CvhfLjtZ.js} +77 -47
- package/dist/schema-CvhfLjtZ.js.map +1 -0
- package/dist/search/index.d.ts +2 -2
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +2 -2
- package/dist/{search-kernel-DxqjBxA-.d.ts → search-kernel-Dloxd6gs.d.ts} +5 -5
- package/dist/{search-kernel-DxqjBxA-.d.ts.map → search-kernel-Dloxd6gs.d.ts.map} +1 -1
- package/dist/{search-ledger-TUvB5gWH.js → search-ledger-CZRqtFbW.js} +252 -245
- package/dist/search-ledger-CZRqtFbW.js.map +1 -0
- package/dist/{search-ledger-file-UKCO2r8a.js → search-ledger-file-Bd5Tioq6.js} +3 -3
- package/dist/{search-ledger-file-UKCO2r8a.js.map → search-ledger-file-Bd5Tioq6.js.map} +1 -1
- package/dist/{search-shipper-Cw2z3-td.js → search-shipper-Dn3NLsuH.js} +3 -3
- package/dist/{search-shipper-Cw2z3-td.js.map → search-shipper-Dn3NLsuH.js.map} +1 -1
- package/dist/{search-summary-DQIvJsSB.js → search-summary-D4bwYnAE.js} +3 -3
- package/dist/{search-summary-DQIvJsSB.js.map → search-summary-D4bwYnAE.js.map} +1 -1
- package/dist/{server-DoVbqqtJ.js → server-8TS8XCvg.js} +3 -3
- package/dist/{server-DoVbqqtJ.js.map → server-8TS8XCvg.js.map} +1 -1
- package/dist/{single-run-lock-U58yf8N6.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-kyL94-ri.js → skillopt-optimization-method-DLKqdhcR.js} +1384 -1059
- package/dist/skillopt-optimization-method-DLKqdhcR.js.map +1 -0
- package/dist/{statistical-heldout-C9AbgREN.d.ts → statistical-heldout-3z3I-kJN.d.ts} +3 -3
- package/dist/{statistical-heldout-C9AbgREN.d.ts.map → statistical-heldout-3z3I-kJN.d.ts.map} +1 -1
- package/dist/{store-otlp-BteDAbHK.js → store-otlp-dyWE3wAG.js} +2 -2
- package/dist/{store-otlp-BteDAbHK.js.map → store-otlp-dyWE3wAG.js.map} +1 -1
- package/dist/{store-tool-spans-D5l_OfTJ.js → store-tool-spans-DIUgZbzu.js} +3 -3
- package/dist/{store-tool-spans-D5l_OfTJ.js.map → store-tool-spans-DIUgZbzu.js.map} +1 -1
- package/dist/{store-tool-spans-DZS0HWVf.d.ts → store-tool-spans-DPwXHQkH.d.ts} +7 -7
- package/dist/{store-tool-spans-DZS0HWVf.d.ts.map → store-tool-spans-DPwXHQkH.d.ts.map} +1 -1
- package/dist/{summary-report-DM7tlml1.d.ts → summary-report-C8V49Jt3.d.ts} +18 -3
- package/dist/summary-report-C8V49Jt3.d.ts.map +1 -0
- package/dist/supervisor-run/index.d.ts.map +1 -1
- package/dist/supervisor-run/index.js +3 -3
- package/dist/{systemone-Bp_Ac0p1.d.ts → systemone-DVA7t76V.d.ts} +6 -6
- package/dist/{systemone-Bp_Ac0p1.d.ts.map → systemone-DVA7t76V.d.ts.map} +1 -1
- package/dist/{systemone-review-CwE6JGIp.d.ts → systemone-review-CUBMuTLi.d.ts} +2 -2
- package/dist/{systemone-review-CwE6JGIp.d.ts.map → systemone-review-CUBMuTLi.d.ts.map} +1 -1
- package/dist/systemone.d.ts +3 -3
- package/dist/{terminal-record-78g6E4vh.js → terminal-record-D4Rv-j1W.js} +241 -193
- package/dist/{terminal-record-78g6E4vh.js.map → terminal-record-D4Rv-j1W.js.map} +1 -1
- package/dist/{tool-groups-DyNz2JZ_.d.ts → tool-groups-LISbBWCg.d.ts} +3 -3
- package/dist/tool-groups-LISbBWCg.d.ts.map +1 -0
- package/dist/{trace-questions-xxwgsuMi.d.ts → trace-questions-C42fYEE4.d.ts} +4 -4
- package/dist/{trace-questions-xxwgsuMi.d.ts.map → trace-questions-C42fYEE4.d.ts.map} +1 -1
- package/dist/trace-repair/index.d.ts +3 -3
- package/dist/traces.d.ts +6 -6
- package/dist/traces.js +3 -3
- package/dist/trajectory-replay/index.d.ts +4 -1
- package/dist/trajectory-replay/index.d.ts.map +1 -1
- package/dist/trajectory-replay/index.js +854 -823
- package/dist/trajectory-replay/index.js.map +1 -1
- package/dist/{tree-BGRglkKd.js → tree-DSqwJpL9.js} +122 -14
- package/dist/tree-DSqwJpL9.js.map +1 -0
- package/dist/{types-CW8ewATZ.d.ts → types-8yQzNm8u.d.ts} +4 -4
- package/dist/{types-CW8ewATZ.d.ts.map → types-8yQzNm8u.d.ts.map} +1 -1
- package/dist/{types-D8GhJoHk.d.ts → types-CHfn1zg5.d.ts} +70 -72
- package/dist/types-CHfn1zg5.d.ts.map +1 -0
- package/dist/{types-DtMbFw6U.d.ts → types-D8GXK9Z5.d.ts} +3 -3
- package/dist/{types-DtMbFw6U.d.ts.map → types-D8GXK9Z5.d.ts.map} +1 -1
- package/dist/{types-D-mgRzlh.d.ts → types-eMhdacVp.d.ts} +2 -2
- package/dist/{types-D-mgRzlh.d.ts.map → types-eMhdacVp.d.ts.map} +1 -1
- package/dist/wire/index.d.ts +3 -3
- package/dist/wire/index.js +1 -1
- package/docs/campaign-proposers.md +16 -0
- package/docs/concepts.md +31 -0
- package/docs/design/statistics-decisions.md +1 -1
- package/docs/eval-surface-map.md +1 -0
- package/docs/profile-json-identity.md +1 -2
- package/docs/public-api.md +100 -88
- package/package.json +8 -6
- package/dist/benchmark-command-xQK8nOI6.js.map +0 -1
- package/dist/campaign-CJGkxAQ6.js.map +0 -1
- package/dist/campaign-evidence-CQYw8_0H.js.map +0 -1
- package/dist/cost-ledger-D0352Z4d.js.map +0 -1
- package/dist/cost-ledger-Jk62OBfF.d.ts.map +0 -1
- package/dist/define-agent-eval-BDxNlP3D.js.map +0 -1
- package/dist/eval-campaign-BLEfBGbA.js +0 -343
- package/dist/eval-campaign-BLEfBGbA.js.map +0 -1
- package/dist/index-9jJ2fKSX.d.ts.map +0 -1
- package/dist/index-CiRwLv2R.d.ts.map +0 -1
- package/dist/index-ZuWx52WG.d.ts.map +0 -1
- package/dist/integrity-DOd9Q86O.js.map +0 -1
- package/dist/journal-CR4QikYp.js.map +0 -1
- package/dist/judge-gate-DsL0yFcb.d.ts.map +0 -1
- package/dist/llm-client-BshCREn6.js.map +0 -1
- package/dist/llm-judge-C8jMTNNG.js.map +0 -1
- package/dist/pareto-BzsxidFD.js.map +0 -1
- package/dist/render-C-w2EZ6p.js.map +0 -1
- package/dist/schema-DxcKTzbi.js.map +0 -1
- package/dist/search-ledger-TUvB5gWH.js.map +0 -1
- package/dist/single-run-lock-U58yf8N6.js.map +0 -1
- package/dist/skillopt-optimization-method-kyL94-ri.js.map +0 -1
- package/dist/summary-report-DM7tlml1.d.ts.map +0 -1
- package/dist/tool-groups-DyNz2JZ_.d.ts.map +0 -1
- package/dist/tree-BGRglkKd.js.map +0 -1
- package/dist/types-D8GhJoHk.d.ts.map +0 -1
|
@@ -193,24 +193,84 @@ function summarizeDialect(seen) {
|
|
|
193
193
|
if (seen.size > 1) return "mixed";
|
|
194
194
|
return seen.has("runtime-envelope") ? "runtime-envelope" : "flat";
|
|
195
195
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
const
|
|
199
|
-
const
|
|
196
|
+
/** One spawned event as a row; a field that is present but unusable marks the row invalid. */
|
|
197
|
+
function spawnRowOf(ev, id, sourceRow, rootId) {
|
|
198
|
+
const parent = typeof ev.parent === "string" && ev.parent.length > 0 ? ev.parent : null;
|
|
199
|
+
const label = typeof ev.label === "string" ? ev.label : "";
|
|
200
|
+
const invalidFields = [];
|
|
201
|
+
if (id.length === 0) invalidFields.push("id");
|
|
202
|
+
const parentOmittedForFirstRoot = ev.parent === void 0 && rootId === null;
|
|
203
|
+
if (ev.parent !== null && !parentOmittedForFirstRoot && !(typeof ev.parent === "string" && ev.parent.length > 0)) invalidFields.push("parent");
|
|
204
|
+
if (label.length === 0) invalidFields.push("label");
|
|
205
|
+
if (ev.role !== void 0 && ev.role !== "supervisor" && ev.role !== "worker") invalidFields.push("role");
|
|
206
|
+
if (ev.profileDigest !== void 0 && !(typeof ev.profileDigest === "string" && ev.profileDigest.length > 0)) invalidFields.push("profileDigest");
|
|
207
|
+
if (ev.runtime !== void 0 && !(typeof ev.runtime === "string" && ev.runtime.length > 0)) invalidFields.push("runtime");
|
|
208
|
+
const role = ev.role === "supervisor" || ev.role === "worker" ? ev.role : null;
|
|
209
|
+
const valid = invalidFields.length === 0;
|
|
210
|
+
if (valid && parent === null && rootId === null) rootId = id;
|
|
211
|
+
return {
|
|
212
|
+
sourceRow,
|
|
213
|
+
id,
|
|
214
|
+
parent,
|
|
215
|
+
label,
|
|
216
|
+
role,
|
|
217
|
+
profileDigest: typeof ev.profileDigest === "string" && ev.profileDigest.length > 0 ? ev.profileDigest : null,
|
|
218
|
+
runtime: typeof ev.runtime === "string" && ev.runtime.length > 0 ? ev.runtime : null,
|
|
219
|
+
at: ms(ev.at),
|
|
220
|
+
valid,
|
|
221
|
+
invalidFields
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/** A settled event as a close row, with its verdict and spend. */
|
|
225
|
+
function settledCloseOf(ev, id) {
|
|
226
|
+
const verdict = readVerdict(ev.verdict);
|
|
227
|
+
return {
|
|
228
|
+
id,
|
|
229
|
+
kind: "settled",
|
|
230
|
+
status: typeof ev.status === "string" ? ev.status : null,
|
|
231
|
+
verdict: verdict.label,
|
|
232
|
+
valid: verdict.valid,
|
|
233
|
+
score: verdict.score,
|
|
234
|
+
rawVerdict: verdict.raw,
|
|
235
|
+
reason: typeof ev.reason === "string" ? ev.reason : null,
|
|
236
|
+
infra: typeof ev.infra === "boolean" ? ev.infra : null,
|
|
237
|
+
at: ms(ev.at),
|
|
238
|
+
spend: readSpend(ev.spent),
|
|
239
|
+
hasSpend: asRecord(ev.spent).tokens !== void 0
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
/** A cancelled event as a close row: it carries no verdict and no spend. */
|
|
243
|
+
function cancelledCloseOf(ev, id) {
|
|
244
|
+
return {
|
|
245
|
+
id,
|
|
246
|
+
kind: "cancelled",
|
|
247
|
+
status: "cancelled",
|
|
248
|
+
verdict: typeof ev.reason === "string" ? ev.reason : null,
|
|
249
|
+
valid: null,
|
|
250
|
+
score: null,
|
|
251
|
+
rawVerdict: typeof ev.reason === "string" ? ev.reason : null,
|
|
252
|
+
reason: typeof ev.reason === "string" ? ev.reason : null,
|
|
253
|
+
infra: null,
|
|
254
|
+
at: ms(ev.at),
|
|
255
|
+
spend: {
|
|
256
|
+
tokens: {
|
|
257
|
+
input: 0,
|
|
258
|
+
output: 0,
|
|
259
|
+
cacheRead: 0,
|
|
260
|
+
cacheWrite: 0,
|
|
261
|
+
hasCache: false,
|
|
262
|
+
breakdownKnown: true
|
|
263
|
+
},
|
|
264
|
+
tokensKnown: true,
|
|
265
|
+
usd: 0,
|
|
266
|
+
usdKnown: true
|
|
267
|
+
},
|
|
268
|
+
hasSpend: false
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
function readJournal(events) {
|
|
200
272
|
const spawns = [];
|
|
201
273
|
const closes = [];
|
|
202
|
-
let brainIn = 0;
|
|
203
|
-
let brainOut = 0;
|
|
204
|
-
let brainCacheRead = 0;
|
|
205
|
-
let brainCacheWrite = 0;
|
|
206
|
-
let brainHasCache = false;
|
|
207
|
-
let brainCacheBreakdownKnown = true;
|
|
208
|
-
let brainTokensKnownCount = 0;
|
|
209
|
-
let brainTokensUnknownCount = 0;
|
|
210
|
-
let brainUsd = 0;
|
|
211
|
-
let brainUsdKnownCount = 0;
|
|
212
|
-
let brainUsdUnknownCount = 0;
|
|
213
|
-
let meteredCount = 0;
|
|
214
274
|
let rootId = null;
|
|
215
275
|
let unreadableRows = 0;
|
|
216
276
|
const ignoredByKind = /* @__PURE__ */ new Map();
|
|
@@ -240,73 +300,11 @@ function parseSupervisorTree(src) {
|
|
|
240
300
|
});
|
|
241
301
|
}
|
|
242
302
|
if (kind === "spawned") {
|
|
243
|
-
const
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
if (ev.parent !== null && !parentOmittedForFirstRoot && !(typeof ev.parent === "string" && ev.parent.length > 0)) invalidFields.push("parent");
|
|
249
|
-
if (label.length === 0) invalidFields.push("label");
|
|
250
|
-
if (ev.role !== void 0 && ev.role !== "supervisor" && ev.role !== "worker") invalidFields.push("role");
|
|
251
|
-
if (ev.profileDigest !== void 0 && !(typeof ev.profileDigest === "string" && ev.profileDigest.length > 0)) invalidFields.push("profileDigest");
|
|
252
|
-
if (ev.runtime !== void 0 && !(typeof ev.runtime === "string" && ev.runtime.length > 0)) invalidFields.push("runtime");
|
|
253
|
-
const role = ev.role === "supervisor" || ev.role === "worker" ? ev.role : null;
|
|
254
|
-
const valid = invalidFields.length === 0;
|
|
255
|
-
if (valid && parent === null && rootId === null) rootId = id;
|
|
256
|
-
spawns.push({
|
|
257
|
-
sourceRow,
|
|
258
|
-
id,
|
|
259
|
-
parent,
|
|
260
|
-
label,
|
|
261
|
-
role,
|
|
262
|
-
profileDigest: typeof ev.profileDigest === "string" && ev.profileDigest.length > 0 ? ev.profileDigest : null,
|
|
263
|
-
runtime: typeof ev.runtime === "string" && ev.runtime.length > 0 ? ev.runtime : null,
|
|
264
|
-
at: ms(ev.at),
|
|
265
|
-
valid,
|
|
266
|
-
invalidFields
|
|
267
|
-
});
|
|
268
|
-
} else if (kind === "settled") {
|
|
269
|
-
const verdict = readVerdict(ev.verdict);
|
|
270
|
-
closes.push({
|
|
271
|
-
id,
|
|
272
|
-
kind: "settled",
|
|
273
|
-
status: typeof ev.status === "string" ? ev.status : null,
|
|
274
|
-
verdict: verdict.label,
|
|
275
|
-
valid: verdict.valid,
|
|
276
|
-
score: verdict.score,
|
|
277
|
-
rawVerdict: verdict.raw,
|
|
278
|
-
reason: typeof ev.reason === "string" ? ev.reason : null,
|
|
279
|
-
infra: typeof ev.infra === "boolean" ? ev.infra : null,
|
|
280
|
-
at: ms(ev.at),
|
|
281
|
-
spend: readSpend(ev.spent),
|
|
282
|
-
hasSpend: asRecord(ev.spent).tokens !== void 0
|
|
283
|
-
});
|
|
284
|
-
} else if (kind === "cancelled") closes.push({
|
|
285
|
-
id,
|
|
286
|
-
kind: "cancelled",
|
|
287
|
-
status: "cancelled",
|
|
288
|
-
verdict: typeof ev.reason === "string" ? ev.reason : null,
|
|
289
|
-
valid: null,
|
|
290
|
-
score: null,
|
|
291
|
-
rawVerdict: typeof ev.reason === "string" ? ev.reason : null,
|
|
292
|
-
reason: typeof ev.reason === "string" ? ev.reason : null,
|
|
293
|
-
infra: null,
|
|
294
|
-
at: ms(ev.at),
|
|
295
|
-
spend: {
|
|
296
|
-
tokens: {
|
|
297
|
-
input: 0,
|
|
298
|
-
output: 0,
|
|
299
|
-
cacheRead: 0,
|
|
300
|
-
cacheWrite: 0,
|
|
301
|
-
hasCache: false,
|
|
302
|
-
breakdownKnown: true
|
|
303
|
-
},
|
|
304
|
-
tokensKnown: true,
|
|
305
|
-
usd: 0,
|
|
306
|
-
usdKnown: true
|
|
307
|
-
},
|
|
308
|
-
hasSpend: false
|
|
309
|
-
});
|
|
303
|
+
const spawn = spawnRowOf(ev, id, sourceRow, rootId);
|
|
304
|
+
if (spawn.valid && spawn.parent === null && rootId === null) rootId = id;
|
|
305
|
+
spawns.push(spawn);
|
|
306
|
+
} else if (kind === "settled") closes.push(settledCloseOf(ev, id));
|
|
307
|
+
else if (kind === "cancelled") closes.push(cancelledCloseOf(ev, id));
|
|
310
308
|
else if (kind === "metered") meteredRows.push({
|
|
311
309
|
id,
|
|
312
310
|
spend: readSpend(ev.spend),
|
|
@@ -314,6 +312,31 @@ function parseSupervisorTree(src) {
|
|
|
314
312
|
});
|
|
315
313
|
else throw new Error(`unhandled journal event kind ${JSON.stringify(kind)}`);
|
|
316
314
|
}
|
|
315
|
+
return {
|
|
316
|
+
spawns,
|
|
317
|
+
closes,
|
|
318
|
+
rootId,
|
|
319
|
+
unreadableRows,
|
|
320
|
+
ignoredByKind,
|
|
321
|
+
dialectsSeen,
|
|
322
|
+
resourceRecords,
|
|
323
|
+
meteredRows
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
/** Only root-attributed metered events are the supervisor brain's own spend. A nested driver meters under its own id; its spend reaches this tree through its settled close, so folding it into the brain here would count the same tokens twice. */
|
|
327
|
+
function foldBrainSpend(meteredRows, rootId) {
|
|
328
|
+
let brainIn = 0;
|
|
329
|
+
let brainOut = 0;
|
|
330
|
+
let brainCacheRead = 0;
|
|
331
|
+
let brainCacheWrite = 0;
|
|
332
|
+
let brainHasCache = false;
|
|
333
|
+
let brainCacheBreakdownKnown = true;
|
|
334
|
+
let brainTokensKnownCount = 0;
|
|
335
|
+
let brainTokensUnknownCount = 0;
|
|
336
|
+
let brainUsd = 0;
|
|
337
|
+
let brainUsdKnownCount = 0;
|
|
338
|
+
let brainUsdUnknownCount = 0;
|
|
339
|
+
let meteredCount = 0;
|
|
317
340
|
for (const row of meteredRows) {
|
|
318
341
|
if (rootId === null || row.id !== rootId) continue;
|
|
319
342
|
if (row.spend.tokensKnown) {
|
|
@@ -331,105 +354,118 @@ function parseSupervisorTree(src) {
|
|
|
331
354
|
} else brainUsdUnknownCount += 1;
|
|
332
355
|
meteredCount += 1;
|
|
333
356
|
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
357
|
+
return {
|
|
358
|
+
tokensIn: brainIn,
|
|
359
|
+
tokensOut: brainOut,
|
|
360
|
+
cacheRead: brainCacheRead,
|
|
361
|
+
cacheWrite: brainCacheWrite,
|
|
362
|
+
hasCache: brainHasCache,
|
|
363
|
+
cacheBreakdownKnown: brainCacheBreakdownKnown,
|
|
364
|
+
tokensKnownCount: brainTokensKnownCount,
|
|
365
|
+
tokensUnknownCount: brainTokensUnknownCount,
|
|
366
|
+
usd: brainUsd,
|
|
367
|
+
usdKnownCount: brainUsdKnownCount,
|
|
368
|
+
usdUnknownCount: brainUsdUnknownCount,
|
|
369
|
+
meteredCount
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
/** Steer counts from a worker's inbox and acknowledgements, or the reason they cannot be stated exactly. */
|
|
373
|
+
function accountSteers(facts) {
|
|
374
|
+
const requestsById = /* @__PURE__ */ new Map();
|
|
375
|
+
for (const request of facts.steerRequests) {
|
|
376
|
+
if (request.requestId === null) continue;
|
|
377
|
+
requestsById.set(request.requestId, (requestsById.get(request.requestId) ?? 0) + 1);
|
|
378
|
+
}
|
|
379
|
+
const acknowledgementsById = /* @__PURE__ */ new Map();
|
|
380
|
+
for (const acknowledgement of facts.steerAcknowledgements) {
|
|
381
|
+
if (acknowledgement.requestId === null) continue;
|
|
382
|
+
const matches = acknowledgementsById.get(acknowledgement.requestId) ?? [];
|
|
383
|
+
matches.push(acknowledgement);
|
|
384
|
+
acknowledgementsById.set(acknowledgement.requestId, matches);
|
|
385
|
+
}
|
|
386
|
+
const queueProblems = [];
|
|
387
|
+
if (!facts.inboxCaptured) queueProblems.push("inbox absent");
|
|
388
|
+
if (!facts.eventsCaptured) queueProblems.push("events absent");
|
|
389
|
+
if (facts.inboxInvalidRows > 0) queueProblems.push("inbox contains malformed rows");
|
|
390
|
+
if (facts.eventsInvalidRows > 0) queueProblems.push("events contain malformed rows");
|
|
391
|
+
if (facts.steerRequests.some((request) => request.requestId === null)) queueProblems.push("queued request id missing");
|
|
392
|
+
if ([...requestsById.values()].some((count) => count > 1)) queueProblems.push("queued request id duplicated");
|
|
393
|
+
if (facts.steerAcknowledgements.some((acknowledgement) => acknowledgement.requestId === null)) queueProblems.push("acknowledgement request id missing");
|
|
394
|
+
if ([...acknowledgementsById.keys()].some((id) => !requestsById.has(id))) queueProblems.push("acknowledgement has no queued request");
|
|
395
|
+
if (queueProblems.length === 0) facts.steersQueued = requestsById.size;
|
|
396
|
+
else facts.steersQueuedUnavailable = [...new Set(queueProblems)].join("; ");
|
|
397
|
+
const deliveryProblems = [...queueProblems];
|
|
398
|
+
if ([...acknowledgementsById.values()].some((rows) => rows.length > 1)) deliveryProblems.push("acknowledgement request id duplicated");
|
|
399
|
+
if (facts.steerAcknowledgements.some((acknowledgement) => acknowledgement.delivered === null)) deliveryProblems.push("acknowledgement delivery status missing");
|
|
400
|
+
if (deliveryProblems.length === 0) facts.steersDelivered = [...requestsById.keys()].filter((id) => {
|
|
401
|
+
const acknowledgement = acknowledgementsById.get(id);
|
|
402
|
+
return acknowledgement?.length === 1 && acknowledgement[0]?.delivered === true;
|
|
403
|
+
}).length;
|
|
404
|
+
else facts.steersDeliveredUnavailable = [...new Set(deliveryProblems)].join("; ");
|
|
405
|
+
}
|
|
406
|
+
/** Everything one worker's inbox and event log say: timing, verdict, questions and steer accounting. */
|
|
407
|
+
function readWorkerLog(w, sourceIndex) {
|
|
408
|
+
const facts = {
|
|
409
|
+
sourceIndex,
|
|
410
|
+
workerId: w.workerId ?? null,
|
|
411
|
+
label: w.label,
|
|
412
|
+
inboxCaptured: w.inbox !== null,
|
|
413
|
+
eventsCaptured: w.events !== null,
|
|
414
|
+
inboxInvalidRows: 0,
|
|
415
|
+
eventsInvalidRows: 0,
|
|
416
|
+
started: null,
|
|
417
|
+
finished: false,
|
|
418
|
+
finishedAt: null,
|
|
419
|
+
passed: null,
|
|
420
|
+
score: null,
|
|
421
|
+
finishedPatchBytes: null,
|
|
422
|
+
evidenceBytes: 0,
|
|
423
|
+
steersQueued: null,
|
|
424
|
+
steersDelivered: null,
|
|
425
|
+
steersQueuedUnavailable: null,
|
|
426
|
+
steersDeliveredUnavailable: null,
|
|
427
|
+
questions: 0,
|
|
428
|
+
steerRequests: [],
|
|
429
|
+
steerAcknowledgements: []
|
|
430
|
+
};
|
|
431
|
+
const parsedInbox = parseJsonlWithDiagnostics(w.inbox);
|
|
432
|
+
const parsedEvents = parseJsonlWithDiagnostics(w.events);
|
|
433
|
+
facts.inboxInvalidRows = parsedInbox.invalidRows;
|
|
434
|
+
facts.eventsInvalidRows = parsedEvents.invalidRows;
|
|
435
|
+
for (const [row, req] of parsedInbox.rows.entries()) {
|
|
436
|
+
if (typeof req.message !== "string" || req.message.trim().length === 0) continue;
|
|
437
|
+
facts.steerRequests.push({
|
|
438
|
+
requestId: typeof req.id === "string" && req.id.length > 0 ? req.id : null,
|
|
439
|
+
row
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
for (const [row, ev] of parsedEvents.rows.entries()) {
|
|
443
|
+
const kind = ev.kind;
|
|
444
|
+
if (kind === "message") {
|
|
445
|
+
if (ev.direction === "up") {
|
|
446
|
+
facts.questions += 1;
|
|
447
|
+
continue;
|
|
448
|
+
}
|
|
449
|
+
facts.steerAcknowledgements.push({
|
|
450
|
+
requestId: typeof ev.requestId === "string" && ev.requestId.length > 0 ? ev.requestId : null,
|
|
451
|
+
delivered: typeof ev.delivered === "boolean" ? ev.delivered : null,
|
|
371
452
|
row
|
|
372
453
|
});
|
|
454
|
+
} else if (kind === "started") facts.started = ms(ev.at);
|
|
455
|
+
else if (kind === "finished") {
|
|
456
|
+
facts.finished = true;
|
|
457
|
+
facts.finishedAt = ms(ev.at);
|
|
458
|
+
facts.passed = typeof ev.passed === "boolean" ? ev.passed : null;
|
|
459
|
+
facts.score = typeof ev.score === "number" && Number.isFinite(ev.score) ? ev.score : null;
|
|
460
|
+
facts.finishedPatchBytes = typeof ev.patchBytes === "number" ? ev.patchBytes : null;
|
|
461
|
+
facts.evidenceBytes = typeof ev.evidence === "string" ? ev.evidence.length : 0;
|
|
373
462
|
}
|
|
374
|
-
for (const [row, ev] of parsedEvents.rows.entries()) {
|
|
375
|
-
const kind = ev.kind;
|
|
376
|
-
if (kind === "message") {
|
|
377
|
-
if (ev.direction === "up") {
|
|
378
|
-
facts.questions += 1;
|
|
379
|
-
continue;
|
|
380
|
-
}
|
|
381
|
-
facts.steerAcknowledgements.push({
|
|
382
|
-
requestId: typeof ev.requestId === "string" && ev.requestId.length > 0 ? ev.requestId : null,
|
|
383
|
-
delivered: typeof ev.delivered === "boolean" ? ev.delivered : null,
|
|
384
|
-
row
|
|
385
|
-
});
|
|
386
|
-
} else if (kind === "started") facts.started = ms(ev.at);
|
|
387
|
-
else if (kind === "finished") {
|
|
388
|
-
facts.finished = true;
|
|
389
|
-
facts.finishedAt = ms(ev.at);
|
|
390
|
-
facts.passed = typeof ev.passed === "boolean" ? ev.passed : null;
|
|
391
|
-
facts.score = typeof ev.score === "number" && Number.isFinite(ev.score) ? ev.score : null;
|
|
392
|
-
facts.finishedPatchBytes = typeof ev.patchBytes === "number" ? ev.patchBytes : null;
|
|
393
|
-
facts.evidenceBytes = typeof ev.evidence === "string" ? ev.evidence.length : 0;
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
const requestsById = /* @__PURE__ */ new Map();
|
|
397
|
-
for (const request of facts.steerRequests) {
|
|
398
|
-
if (request.requestId === null) continue;
|
|
399
|
-
requestsById.set(request.requestId, (requestsById.get(request.requestId) ?? 0) + 1);
|
|
400
|
-
}
|
|
401
|
-
const acknowledgementsById = /* @__PURE__ */ new Map();
|
|
402
|
-
for (const acknowledgement of facts.steerAcknowledgements) {
|
|
403
|
-
if (acknowledgement.requestId === null) continue;
|
|
404
|
-
const matches = acknowledgementsById.get(acknowledgement.requestId) ?? [];
|
|
405
|
-
matches.push(acknowledgement);
|
|
406
|
-
acknowledgementsById.set(acknowledgement.requestId, matches);
|
|
407
|
-
}
|
|
408
|
-
const queueProblems = [];
|
|
409
|
-
if (!facts.inboxCaptured) queueProblems.push("inbox absent");
|
|
410
|
-
if (!facts.eventsCaptured) queueProblems.push("events absent");
|
|
411
|
-
if (facts.inboxInvalidRows > 0) queueProblems.push("inbox contains malformed rows");
|
|
412
|
-
if (facts.eventsInvalidRows > 0) queueProblems.push("events contain malformed rows");
|
|
413
|
-
if (facts.steerRequests.some((request) => request.requestId === null)) queueProblems.push("queued request id missing");
|
|
414
|
-
if ([...requestsById.values()].some((count) => count > 1)) queueProblems.push("queued request id duplicated");
|
|
415
|
-
if (facts.steerAcknowledgements.some((acknowledgement) => acknowledgement.requestId === null)) queueProblems.push("acknowledgement request id missing");
|
|
416
|
-
if ([...acknowledgementsById.keys()].some((id) => !requestsById.has(id))) queueProblems.push("acknowledgement has no queued request");
|
|
417
|
-
if (queueProblems.length === 0) facts.steersQueued = requestsById.size;
|
|
418
|
-
else facts.steersQueuedUnavailable = [...new Set(queueProblems)].join("; ");
|
|
419
|
-
const deliveryProblems = [...queueProblems];
|
|
420
|
-
if ([...acknowledgementsById.values()].some((rows) => rows.length > 1)) deliveryProblems.push("acknowledgement request id duplicated");
|
|
421
|
-
if (facts.steerAcknowledgements.some((acknowledgement) => acknowledgement.delivered === null)) deliveryProblems.push("acknowledgement delivery status missing");
|
|
422
|
-
if (deliveryProblems.length === 0) facts.steersDelivered = [...requestsById.keys()].filter((id) => {
|
|
423
|
-
const acknowledgement = acknowledgementsById.get(id);
|
|
424
|
-
return acknowledgement?.length === 1 && acknowledgement[0]?.delivered === true;
|
|
425
|
-
}).length;
|
|
426
|
-
else facts.steersDeliveredUnavailable = [...new Set(deliveryProblems)].join("; ");
|
|
427
|
-
workerLogRows.push(facts);
|
|
428
|
-
workerLogs.set(workerSourceKey(w), facts);
|
|
429
463
|
}
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
464
|
+
accountSteers(facts);
|
|
465
|
+
return facts;
|
|
466
|
+
}
|
|
467
|
+
/** The earliest and latest stamped event across spawns, closes and metered rows. */
|
|
468
|
+
function eventSpan(spawns, closes, meteredRows) {
|
|
433
469
|
let firstEventAt = null;
|
|
434
470
|
let lastEventAt = null;
|
|
435
471
|
const widenEventSpan = (at) => {
|
|
@@ -440,6 +476,31 @@ function parseSupervisorTree(src) {
|
|
|
440
476
|
for (const spawn of spawns) widenEventSpan(spawn.at);
|
|
441
477
|
for (const close of closes) widenEventSpan(close.at);
|
|
442
478
|
for (const metered of meteredRows) widenEventSpan(metered.at);
|
|
479
|
+
return {
|
|
480
|
+
firstEventAt,
|
|
481
|
+
lastEventAt
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
function parseSupervisorTree(src) {
|
|
485
|
+
const parsedJournal = parseJsonlWithDiagnostics(src.journal);
|
|
486
|
+
const events = parsedJournal.rows;
|
|
487
|
+
const state = parseJsonRecord(src.state);
|
|
488
|
+
const { spawns, closes, rootId, unreadableRows, ignoredByKind, dialectsSeen, resourceRecords, meteredRows } = readJournal(events);
|
|
489
|
+
const brain = foldBrainSpend(meteredRows, rootId);
|
|
490
|
+
const workerSpawns = spawns.filter((s) => s.valid && s.id !== rootId);
|
|
491
|
+
const workerIds = new Set(workerSpawns.map((s) => s.id));
|
|
492
|
+
const workerCloses = closes.filter((c) => workerIds.has(c.id));
|
|
493
|
+
const workerLogs = /* @__PURE__ */ new Map();
|
|
494
|
+
const workerLogRows = [];
|
|
495
|
+
for (const [sourceIndex, w] of (src.workers ?? []).entries()) {
|
|
496
|
+
const facts = readWorkerLog(w, sourceIndex);
|
|
497
|
+
workerLogRows.push(facts);
|
|
498
|
+
workerLogs.set(workerSourceKey(w), facts);
|
|
499
|
+
}
|
|
500
|
+
const startedAt = ms(state?.startedAt) ?? spawns[0]?.at ?? null;
|
|
501
|
+
const rootClose = rootId === null ? null : closes.find((close) => close.id === rootId);
|
|
502
|
+
const completedAt = ms(state?.completedAt) ?? rootClose?.at ?? null;
|
|
503
|
+
const { firstEventAt, lastEventAt } = eventSpan(spawns, closes, meteredRows);
|
|
443
504
|
const result = parseJsonRecord(src.result);
|
|
444
505
|
if (result && Object.hasOwn(result, "spentTotal")) resourceRecords.push({
|
|
445
506
|
nodeId: rootId,
|
|
@@ -454,20 +515,7 @@ function parseSupervisorTree(src) {
|
|
|
454
515
|
closes,
|
|
455
516
|
workerSpawns,
|
|
456
517
|
workerCloses,
|
|
457
|
-
brain
|
|
458
|
-
tokensIn: brainIn,
|
|
459
|
-
tokensOut: brainOut,
|
|
460
|
-
cacheRead: brainCacheRead,
|
|
461
|
-
cacheWrite: brainCacheWrite,
|
|
462
|
-
hasCache: brainHasCache,
|
|
463
|
-
cacheBreakdownKnown: brainCacheBreakdownKnown,
|
|
464
|
-
tokensKnownCount: brainTokensKnownCount,
|
|
465
|
-
tokensUnknownCount: brainTokensUnknownCount,
|
|
466
|
-
usd: brainUsd,
|
|
467
|
-
usdKnownCount: brainUsdKnownCount,
|
|
468
|
-
usdUnknownCount: brainUsdUnknownCount,
|
|
469
|
-
meteredCount
|
|
470
|
-
},
|
|
518
|
+
brain,
|
|
471
519
|
workerLogs,
|
|
472
520
|
workerLogRows,
|
|
473
521
|
journalRows: events.length + parsedJournal.invalidRows,
|
|
@@ -555,4 +603,4 @@ function readTerminalRecord(input) {
|
|
|
555
603
|
//#endregion
|
|
556
604
|
export { nonEmptyString as a, parseSupervisorTree as c, NO_SOURCE_LIMITS as d, SUPERVISOR_RUN_ROLLUP_SCHEMA as f, unavailable as g, showMeasured as h, asRecord as i, recordOrNull as l, isUnavailable as m, RUNTIME_FAILED_STATUS as n, parseJsonRecord as o, SUPERVISOR_RUN_SCHEMA as p, readTerminalRecord as r, parseJsonl as s, NO_TERMINAL_RECORD as t, workerSourceKey as u };
|
|
557
605
|
|
|
558
|
-
//# sourceMappingURL=terminal-record-
|
|
606
|
+
//# sourceMappingURL=terminal-record-D4Rv-j1W.js.map
|