reeval 0.10.0 → 0.12.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/README.md +64 -39
- package/THIRD_PARTY_NOTICES.md +75 -106
- package/bin/mcp-timer.cjs +224 -0
- package/dist/{adapter-DWlpOtRn.js → adapter-DigeVFWC.js} +3 -3
- package/dist/{adapter-DWlpOtRn.js.map → adapter-DigeVFWC.js.map} +1 -1
- package/dist/{agent-CaS_2Sce.js → agent-CatUEo5h.js} +21 -6
- package/dist/{agent-CaS_2Sce.js.map → agent-CatUEo5h.js.map} +1 -1
- package/dist/{assemble-B9Alds-z.js → assemble-CF063ms6.js} +19 -17
- package/dist/assemble-CF063ms6.js.map +1 -0
- package/dist/assemble-CJoD_Rzr.js +1 -0
- package/dist/bridge/index.mjs +15 -7
- package/dist/{capture-CNb9SuU5.js → capture-BiD7lVaM.js} +26 -18
- package/dist/{capture-CNb9SuU5.js.map → capture-BiD7lVaM.js.map} +1 -1
- package/dist/capture-Dp3q7K7Y.js +1 -0
- package/dist/{cli-D303Vj5N.js → cli-B5zQCR2r.js} +266 -547
- package/dist/cli-B5zQCR2r.js.map +1 -0
- package/dist/{cli-spec-BPZbQG2p.js → cli-spec-BXIBUlaK.js} +46 -18
- package/dist/cli-spec-BXIBUlaK.js.map +1 -0
- package/dist/cli.js +2 -2
- package/dist/{command-BT9a37ZR.js → command-BMHXHqMT.js} +17 -14
- package/dist/command-BMHXHqMT.js.map +1 -0
- package/dist/command-C94CQNh8.js +91 -0
- package/dist/command-C94CQNh8.js.map +1 -0
- package/dist/command-CVtgyqlM.js +335 -0
- package/dist/command-CVtgyqlM.js.map +1 -0
- package/dist/{command-BLfT7vnQ.js → command-CaZgCTIw.js} +13 -17
- package/dist/command-CaZgCTIw.js.map +1 -0
- package/dist/{command-CMJtHKRa.js → command-DTgBZR0k.js} +6 -6
- package/dist/{command-CMJtHKRa.js.map → command-DTgBZR0k.js.map} +1 -1
- package/dist/{commands-1p-bIWhN.js → commands-BXzIDB3X.js} +1 -1
- package/dist/commands-CjpGBUWr.js +666 -0
- package/dist/commands-CjpGBUWr.js.map +1 -0
- package/dist/{config-DEgnUiU-.js → config-Dv5MG7Rp.js} +31 -34
- package/dist/config-Dv5MG7Rp.js.map +1 -0
- package/dist/{context-C1mxXh80.js → context-Dgn48BqT.js} +13 -2
- package/dist/context-Dgn48BqT.js.map +1 -0
- package/dist/contrasts-CcoMLC_y.js +101 -0
- package/dist/contrasts-CcoMLC_y.js.map +1 -0
- package/dist/db-BeqRiWLl.js +602 -0
- package/dist/db-BeqRiWLl.js.map +1 -0
- package/dist/db-CJDRVQal.js +2 -0
- package/dist/{dist-B8hJImYt.js → dist-CMjp3qqF.js} +81 -14
- package/dist/dist-CMjp3qqF.js.map +1 -0
- package/dist/{docker-sZrNrr82.js → docker-BbTlMmYi.js} +2 -2
- package/dist/{docker-sZrNrr82.js.map → docker-BbTlMmYi.js.map} +1 -1
- package/dist/{docker-7b_2SaH7.js → docker-CCXdbREk.js} +20 -4
- package/dist/{docker-7b_2SaH7.js.map → docker-CCXdbREk.js.map} +1 -1
- package/dist/{docker-yauK-9X8.js → docker-DC69dKxB.js} +1 -1
- package/dist/{doctor-BYNok4UO.js → doctor-CqttrZcs.js} +56 -22
- package/dist/doctor-CqttrZcs.js.map +1 -0
- package/dist/{egress-C4PZTSSe.js → egress-BfK_O9ce.js} +435 -31
- package/dist/egress-BfK_O9ce.js.map +1 -0
- package/dist/{environment-DNjRk0nU.js → environment-BBz1Yes9.js} +225 -12
- package/dist/environment-BBz1Yes9.js.map +1 -0
- package/dist/{evaluate-D4zeRGBF.js → evaluate-CXQ1o-pd.js} +539 -562
- package/dist/evaluate-CXQ1o-pd.js.map +1 -0
- package/dist/{evaluate-C1UVL21l.d.ts → evaluate-yjZKUexW.d.ts} +2 -2
- package/dist/facts-DtENlf9s.js +898 -0
- package/dist/facts-DtENlf9s.js.map +1 -0
- package/dist/{files-BXUdY8tr.js → files-B-eUpCZ1.js} +30 -7
- package/dist/files-B-eUpCZ1.js.map +1 -0
- package/dist/files-BsQbYz2i.js +65 -0
- package/dist/files-BsQbYz2i.js.map +1 -0
- package/dist/{files-DQmHE7pb.js → files-COHQLEHE.js} +6 -17
- package/dist/files-COHQLEHE.js.map +1 -0
- package/dist/files-DqCBW7i8.js +1 -0
- package/dist/files-Ha-jsQXf.js +1 -0
- package/dist/generate-Cs2TMH_k.js +1647 -0
- package/dist/generate-Cs2TMH_k.js.map +1 -0
- package/dist/{git-DfG-YJ1u.js → git-DhykwgKF.js} +2 -2
- package/dist/{git-DfG-YJ1u.js.map → git-DhykwgKF.js.map} +1 -1
- package/dist/{harness-B8QC9u0O.js → harness-BAjw1fcr.js} +3 -3
- package/dist/{harness-B8QC9u0O.js.map → harness-BAjw1fcr.js.map} +1 -1
- package/dist/harness.d.ts +1 -1
- package/dist/harness.js +1 -1
- package/dist/{header-hK-Z_Po9.js → header-kSmWatcO.js} +10 -3
- package/dist/{header-hK-Z_Po9.js.map → header-kSmWatcO.js.map} +1 -1
- package/dist/{images-0On0cztu.js → images-BmJRuTpm.js} +61 -13
- package/dist/images-BmJRuTpm.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -4
- package/dist/init-Bwc9byQr.js +543 -0
- package/dist/init-Bwc9byQr.js.map +1 -0
- package/dist/init-D7Y1ny1z.js +1 -0
- package/dist/insights-B2Xmhz9o.js +64 -0
- package/dist/insights-B2Xmhz9o.js.map +1 -0
- package/dist/{invocations-DbGfBAA_.js → invocations-CQTbP092.js} +3 -3
- package/dist/{invocations-DbGfBAA_.js.map → invocations-CQTbP092.js.map} +1 -1
- package/dist/{judge-DW_GDOmB.js → judge-Dt6KW6_O.js} +5 -3
- package/dist/judge-Dt6KW6_O.js.map +1 -0
- package/dist/judge.d.ts +7 -6
- package/dist/judge.js +8 -7
- package/dist/judge.js.map +1 -1
- package/dist/{live-jlfszAbb.js → live-DYd2QEyR.js} +2 -2
- package/dist/{live-jlfszAbb.js.map → live-DYd2QEyR.js.map} +1 -1
- package/dist/{model-h_cDtcRr.js → model-B-mel-Gv.js} +46 -20
- package/dist/model-B-mel-Gv.js.map +1 -0
- package/dist/model-BGKYVpoj.js +1 -0
- package/dist/{model-DaVCY3rb.js → model-C7tSwT7f.js} +2 -2
- package/dist/{model-DaVCY3rb.js.map → model-C7tSwT7f.js.map} +1 -1
- package/dist/{model-oqcDplJG.js → model-CWlAqmbU.js} +150 -46
- package/dist/model-CWlAqmbU.js.map +1 -0
- package/dist/model-DHY-dfoO.js +1 -0
- package/dist/{node-B3ydHo6t.js → node-D0mtjRAO.js} +3 -3
- package/dist/{node-B3ydHo6t.js.map → node-D0mtjRAO.js.map} +1 -1
- package/dist/{options-Bh2W63dK.js → options-CPUW97_7.js} +9 -12
- package/dist/options-CPUW97_7.js.map +1 -0
- package/dist/{pairs-CnInRu-G.js → pairs-DP6XOJby.js} +2 -2
- package/dist/{pairs-CnInRu-G.js.map → pairs-DP6XOJby.js.map} +1 -1
- package/dist/{patch-Zac5aIRM.js → patch-D4oluWzH.js} +2 -2
- package/dist/{patch-Zac5aIRM.js.map → patch-D4oluWzH.js.map} +1 -1
- package/dist/{plan-C9Cy27Ay.js → plan-OkwUcJQ9.js} +31 -12
- package/dist/plan-OkwUcJQ9.js.map +1 -0
- package/dist/plugins-CUWMnSNb.js +654 -0
- package/dist/plugins-CUWMnSNb.js.map +1 -0
- package/dist/{preflight-CPWpQeBI.js → preflight-B6pY89bF.js} +1 -1
- package/dist/{preflight-D7iFPKeK.js → preflight-Bjm7_ylE.js} +14 -10
- package/dist/preflight-Bjm7_ylE.js.map +1 -0
- package/dist/{prepare-doGxaAGR.js → prepare-CQmK3SBn.js} +71 -24
- package/dist/prepare-CQmK3SBn.js.map +1 -0
- package/dist/prepare-DbdgtZKe.js +2 -0
- package/dist/{provenance-DmE9uPVt.js → provenance-B3Y17oCC.js} +2 -2
- package/dist/{provenance-DmE9uPVt.js.map → provenance-B3Y17oCC.js.map} +1 -1
- package/dist/providers-CXN2RFz-.js +1 -0
- package/dist/{providers-tAOD1NQN.js → providers-eoniqK6w.js} +24 -10
- package/dist/providers-eoniqK6w.js.map +1 -0
- package/dist/query-CLRZmWBT.js +139 -0
- package/dist/query-CLRZmWBT.js.map +1 -0
- package/dist/query-CmBDYt0_.js +1 -0
- package/dist/{questions-DjAwMxZ3.js → questions-1XOulevV.js} +6 -6
- package/dist/{questions-DjAwMxZ3.js.map → questions-1XOulevV.js.map} +1 -1
- package/dist/{record-BKmMvZ6O.js → record-kk9M1hj-.js} +8 -4
- package/dist/record-kk9M1hj-.js.map +1 -0
- package/dist/remarks-1521zwfW.js +38 -0
- package/dist/remarks-1521zwfW.js.map +1 -0
- package/dist/remarks-BhAV1H4V.js +1 -0
- package/dist/remarks-DlJCqWRs.js +278 -0
- package/dist/remarks-DlJCqWRs.js.map +1 -0
- package/dist/{remote-HDRt16ew.js → remote-cE2VWfkJ.js} +3 -3
- package/dist/{remote-HDRt16ew.js.map → remote-cE2VWfkJ.js.map} +1 -1
- package/dist/resolve-C4zeccCH.js +724 -0
- package/dist/resolve-C4zeccCH.js.map +1 -0
- package/dist/resolve-D30yZYmB.js +1 -0
- package/dist/{results-DuauQI3Z.js → results-Drtt0uFl.js} +33 -7
- package/dist/results-Drtt0uFl.js.map +1 -0
- package/dist/{resume-BRfa8E_s.js → resume-BEFazUfy.js} +4 -4
- package/dist/{resume-BRfa8E_s.js.map → resume-BEFazUfy.js.map} +1 -1
- package/dist/rules-BFzQqPIm.js +317 -0
- package/dist/rules-BFzQqPIm.js.map +1 -0
- package/dist/run-BeMy92Us.js +88 -0
- package/dist/run-BeMy92Us.js.map +1 -0
- package/dist/{sandbox-D3A8oUb7.js → sandbox-CQaJj7n9.js} +2 -2
- package/dist/{sandbox-D3A8oUb7.js.map → sandbox-CQaJj7n9.js.map} +1 -1
- package/dist/sandbox.d.ts +1 -1
- package/dist/sandbox.js +1 -1
- package/dist/server-V4-2w0l8.js +1 -0
- package/dist/{server-XDleKaF_.js → server-xK0les4f.js} +8 -8
- package/dist/{server-XDleKaF_.js.map → server-xK0les4f.js.map} +1 -1
- package/dist/{shared-DYpIb1BI.js → shared-CA61BuPJ.js} +25 -3
- package/dist/shared-CA61BuPJ.js.map +1 -0
- package/dist/source-BDow_oW8.js +1 -0
- package/dist/{source-C8xumIWj.js → source-Q1hEKbCs.js} +2 -2
- package/dist/{source-C8xumIWj.js.map → source-Q1hEKbCs.js.map} +1 -1
- package/dist/src-B9L9yGKI.js +1 -0
- package/dist/{src-ofUaYbuY.js → src-Bcah6ZkT.js} +1 -1
- package/dist/{src-DvCg0NBs.js → src-BhmaorOU.js} +28 -6
- package/dist/{src-DvCg0NBs.js.map → src-BhmaorOU.js.map} +1 -1
- package/dist/{src-CF17Ug08.js → src-C0CeKiLU.js} +19 -4
- package/dist/{src-CF17Ug08.js.map → src-C0CeKiLU.js.map} +1 -1
- package/dist/src-C0xowZ3C.js +2 -0
- package/dist/src-CHIfIKUu.js +2 -0
- package/dist/src-DLtyz4w5.js +2 -0
- package/dist/src-DPIjmReZ.js +2 -0
- package/dist/{src-C_lPtowT.js → src-DXNh5mTr.js} +1 -1
- package/dist/{src-FGXhkEkH.js → src-DiLMkIr9.js} +142 -13
- package/dist/src-DiLMkIr9.js.map +1 -0
- package/dist/{src-B7treWa8.js → src-LekQrr_S.js} +324 -32
- package/dist/src-LekQrr_S.js.map +1 -0
- package/dist/src-bCnsA6Vp.js +2 -0
- package/dist/{src-u8_ixn_F.js → src-cbCb-MPy.js} +20 -4
- package/dist/src-cbCb-MPy.js.map +1 -0
- package/dist/{src-DvK0EIZx.js → src-qGoFkuJF.js} +55 -6
- package/dist/{src-DvK0EIZx.js.map → src-qGoFkuJF.js.map} +1 -1
- package/dist/{src-jzagbuqH.js → src-ynBVosfX.js} +1 -1
- package/dist/state-BQR_BCm4.js +1 -0
- package/dist/{state-C__9swoG.js → state-BmZ8QVZ8.js} +12 -12
- package/dist/{state-C__9swoG.js.map → state-BmZ8QVZ8.js.map} +1 -1
- package/dist/studio-app/assets/index-CnYJijyI.js +58 -0
- package/dist/studio-app/index.html +1 -1
- package/dist/suite-BaHPmAGy.js +1 -0
- package/dist/suite-C8sw2pox.js +481 -0
- package/dist/suite-C8sw2pox.js.map +1 -0
- package/dist/summary-0oQNGskv.js +837 -0
- package/dist/summary-0oQNGskv.js.map +1 -0
- package/dist/testing.d.ts +2 -2
- package/dist/testing.js +2 -2
- package/dist/{text-gEcKjAyp.js → text-CrVy5ioL.js} +18 -2
- package/dist/text-CrVy5ioL.js.map +1 -0
- package/dist/{transcript-BNNANU8A.js → transcript-BTxJpW4R.js} +2 -2
- package/dist/{transcript-BNNANU8A.js.map → transcript-BTxJpW4R.js.map} +1 -1
- package/dist/types-C5vI3g1C.js.map +1 -1
- package/dist/{types-g17bRAzt.d.ts → types-GraZtfHN.d.ts} +858 -39
- package/dist/usage-BDo2q_yu.js +1 -0
- package/dist/{command-Bge8F7Ko.js → validate-BdoXUuL_.js} +35 -383
- package/dist/validate-BdoXUuL_.js.map +1 -0
- package/dist/view/index.d.ts +20 -9
- package/dist/view/index.js +7 -6
- package/dist/views-BoUoX4_A.js +125 -0
- package/dist/views-BoUoX4_A.js.map +1 -0
- package/dist/views-noVQNCUP.js +2 -0
- package/dist/{worker-entry-yOchGYYv.js → worker-entry-D0-GErmU.js} +2 -2
- package/dist/{worker-entry-yOchGYYv.js.map → worker-entry-D0-GErmU.js.map} +1 -1
- package/dist/{workspace-D8sSgpiy.js → workspace-B90YDU_a.js} +1 -1
- package/dist/{workspace-CgyHEM0l.js → workspace-tjZFkjxC.js} +4 -4
- package/dist/{workspace-CgyHEM0l.js.map → workspace-tjZFkjxC.js.map} +1 -1
- package/package.json +10 -8
- package/skills/eval-rubric/SKILL.md +130 -0
- package/dist/agent-CURAwx_q.js +0 -334
- package/dist/agent-CURAwx_q.js.map +0 -1
- package/dist/assemble-B9Alds-z.js.map +0 -1
- package/dist/assemble-J5MukZFY.js +0 -1
- package/dist/capture-jquXZBKK.js +0 -1
- package/dist/cli-D303Vj5N.js.map +0 -1
- package/dist/cli-spec-BPZbQG2p.js.map +0 -1
- package/dist/command-BLfT7vnQ.js.map +0 -1
- package/dist/command-BT9a37ZR.js.map +0 -1
- package/dist/command-Bge8F7Ko.js.map +0 -1
- package/dist/command-BkFjijN2.js +0 -1
- package/dist/commands-BFx16WB8.js +0 -225
- package/dist/commands-BFx16WB8.js.map +0 -1
- package/dist/config-DEgnUiU-.js.map +0 -1
- package/dist/context-C1mxXh80.js.map +0 -1
- package/dist/db-CdHizc4_.js +0 -1406
- package/dist/db-CdHizc4_.js.map +0 -1
- package/dist/db-Dm1cRJJP.js +0 -2
- package/dist/dist-B8hJImYt.js.map +0 -1
- package/dist/doctor-BYNok4UO.js.map +0 -1
- package/dist/duration-CEOQww97.js +0 -26
- package/dist/duration-CEOQww97.js.map +0 -1
- package/dist/egress-C4PZTSSe.js.map +0 -1
- package/dist/environment-DNjRk0nU.js.map +0 -1
- package/dist/evaluate-D4zeRGBF.js.map +0 -1
- package/dist/family-D2b7WD10.js +0 -67
- package/dist/family-D2b7WD10.js.map +0 -1
- package/dist/files-BXUdY8tr.js.map +0 -1
- package/dist/files-BhyltlDB.js +0 -1
- package/dist/files-DQmHE7pb.js.map +0 -1
- package/dist/files-ZZPqfAo6.js +0 -1
- package/dist/images-0On0cztu.js.map +0 -1
- package/dist/init-B77Rpcqc.js +0 -360
- package/dist/init-B77Rpcqc.js.map +0 -1
- package/dist/init-BrOWin3W.js +0 -1
- package/dist/judge-DW_GDOmB.js.map +0 -1
- package/dist/model-NM3ID0uR.js +0 -1
- package/dist/model-h_cDtcRr.js.map +0 -1
- package/dist/model-nwWJvaUR.js +0 -1
- package/dist/model-oqcDplJG.js.map +0 -1
- package/dist/options-Bh2W63dK.js.map +0 -1
- package/dist/plan-C9Cy27Ay.js.map +0 -1
- package/dist/preflight-D7iFPKeK.js.map +0 -1
- package/dist/prepare-BGjePFQl.js +0 -2
- package/dist/prepare-doGxaAGR.js.map +0 -1
- package/dist/process-CSVO_jsc.js +0 -119
- package/dist/process-CSVO_jsc.js.map +0 -1
- package/dist/providers-gDMko8fl.js +0 -1
- package/dist/providers-tAOD1NQN.js.map +0 -1
- package/dist/query-Bes9Kh6Y.js +0 -91
- package/dist/query-Bes9Kh6Y.js.map +0 -1
- package/dist/query-C_G_svLU.js +0 -1
- package/dist/record-BKmMvZ6O.js.map +0 -1
- package/dist/results-DuauQI3Z.js.map +0 -1
- package/dist/server-C7sg1ndo.js +0 -1
- package/dist/shared-DYpIb1BI.js.map +0 -1
- package/dist/source-fGd0SaKP.js +0 -1
- package/dist/src-B7treWa8.js.map +0 -1
- package/dist/src-DNnG4e4R.js +0 -2
- package/dist/src-DTbrY1hi.js +0 -2
- package/dist/src-DdyJEh2v.js +0 -2
- package/dist/src-Dj9PAroc.js +0 -2
- package/dist/src-Du8H85Qq.js +0 -2
- package/dist/src-FGXhkEkH.js.map +0 -1
- package/dist/src-pJZOrYR9.js +0 -1
- package/dist/src-u8_ixn_F.js.map +0 -1
- package/dist/state-CgjQo29K.js +0 -1
- package/dist/studio-app/assets/index-DrQc2Yxd.js +0 -58
- package/dist/summary-BLAVLySU.js +0 -385
- package/dist/summary-BLAVLySU.js.map +0 -1
- package/dist/summary-DgyjUh_l.js +0 -192
- package/dist/summary-DgyjUh_l.js.map +0 -1
- package/dist/text-gEcKjAyp.js.map +0 -1
- package/dist/tools-GCyNYSc1.js +0 -249
- package/dist/tools-GCyNYSc1.js.map +0 -1
- package/dist/views-BW6oCDUQ.js +0 -2
- package/dist/views-BmQF4UCI.js +0 -225
- package/dist/views-BmQF4UCI.js.map +0 -1
package/dist/tools-GCyNYSc1.js
DELETED
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
import { t as isObjectLike } from "./object-CLf2-tNq.js";
|
|
2
|
-
import { s as recordFileName } from "./ids-Bp6ut7ZD.js";
|
|
3
|
-
import { n as clip } from "./text-gEcKjAyp.js";
|
|
4
|
-
import { C as parseTranscript } from "./model-oqcDplJG.js";
|
|
5
|
-
import { s as mergeOutcome } from "./assemble-B9Alds-z.js";
|
|
6
|
-
import { join } from "node:path";
|
|
7
|
-
import { readFile } from "node:fs/promises";
|
|
8
|
-
//#region src/analysis/agent/tools.ts
|
|
9
|
-
const INPUT_KEYS = [
|
|
10
|
-
"command",
|
|
11
|
-
"cmd",
|
|
12
|
-
"path",
|
|
13
|
-
"file_path",
|
|
14
|
-
"filePath",
|
|
15
|
-
"target_file",
|
|
16
|
-
"pattern",
|
|
17
|
-
"query",
|
|
18
|
-
"url"
|
|
19
|
-
];
|
|
20
|
-
/** A tool call's input in a few words: its command or path when it has one. */
|
|
21
|
-
function inputSummary(input) {
|
|
22
|
-
if (typeof input === "string") return clip(input.replace(/\s+/g, " "), 120);
|
|
23
|
-
if (!isObjectLike(input)) return "";
|
|
24
|
-
for (const key of INPUT_KEYS) {
|
|
25
|
-
const value = input[key];
|
|
26
|
-
if (typeof value === "string" && value) return clip(value.replace(/\s+/g, " "), 120);
|
|
27
|
-
if (Array.isArray(value) && value.every((v) => typeof v === "string")) return clip(value.join(" "), 120);
|
|
28
|
-
}
|
|
29
|
-
return clip(JSON.stringify(input), 120);
|
|
30
|
-
}
|
|
31
|
-
/** One transcript event as a step, or null for text and reasoning (a turn's text is kept whole). */
|
|
32
|
-
function stepOf(event) {
|
|
33
|
-
switch (event.type) {
|
|
34
|
-
case "tool": {
|
|
35
|
-
const input = inputSummary(event.input);
|
|
36
|
-
return `${event.tool}${input ? `: ${input}` : ""}${event.ok ? "" : " (failed)"}`;
|
|
37
|
-
}
|
|
38
|
-
case "file-edit": return `edit (${event.kind}): ${event.path}`;
|
|
39
|
-
case "web-search": return `web-search: ${clip(event.query, 120)}${event.ok === false ? " (failed)" : ""}`;
|
|
40
|
-
case "web-fetch": return `web-fetch: ${event.url}${event.ok ? "" : " (failed)"}`;
|
|
41
|
-
case "error": return `error: ${clip(event.message, 200)}`;
|
|
42
|
-
case "retry": return `retry: ${clip(event.message, 200)}`;
|
|
43
|
-
default: return null;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
const steps = (events) => events.flatMap((e) => stepOf(e) ?? []);
|
|
47
|
-
const tail = (text, max) => text.length <= max ? text : `…${text.slice(-max)}`;
|
|
48
|
-
const head = (text, max) => text.length <= max ? text : `${text.slice(0, max)}\n… ${text.length - max} more characters`;
|
|
49
|
-
/** A worker's staged record, read the way the run will assemble it. */
|
|
50
|
-
function fromStaged(result, record) {
|
|
51
|
-
const attempt = result.attempt;
|
|
52
|
-
if (!attempt) return null;
|
|
53
|
-
const { outcome, error } = mergeOutcome(result, record);
|
|
54
|
-
return {
|
|
55
|
-
id: `${attempt.cell.key}#${attempt.n}`,
|
|
56
|
-
cell: attempt.cell.key,
|
|
57
|
-
n: attempt.n,
|
|
58
|
-
outcome,
|
|
59
|
-
error: error ? {
|
|
60
|
-
kind: error.kind,
|
|
61
|
-
message: error.message
|
|
62
|
-
} : null,
|
|
63
|
-
checks: (record?.checks ?? []).map((c) => ({
|
|
64
|
-
command: c.command,
|
|
65
|
-
exitCode: c.exitCode,
|
|
66
|
-
output: tail(`${c.stdout}\n${c.stderr}`.trim(), 600)
|
|
67
|
-
})),
|
|
68
|
-
judgements: (record?.judgements ?? []).map((j) => ({
|
|
69
|
-
question: j.question,
|
|
70
|
-
verdict: j.verdict,
|
|
71
|
-
score: j.score
|
|
72
|
-
})),
|
|
73
|
-
turns: (record?.turns ?? []).map((t) => ({
|
|
74
|
-
prompt: t.prompt,
|
|
75
|
-
text: t.text,
|
|
76
|
-
status: t.status,
|
|
77
|
-
steps: steps(t.transcript)
|
|
78
|
-
})),
|
|
79
|
-
files: (record?.diff?.files ?? []).map((f) => f.path),
|
|
80
|
-
patch: record?.diff?.patch ?? ""
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
/** The staged attempts of one eval on one harness, from `.reeval/staging/<run>/evals`. */
|
|
84
|
-
async function stagedAttempts(stagingDir, results) {
|
|
85
|
-
const views = [];
|
|
86
|
-
for (const result of results) {
|
|
87
|
-
const path = join(stagingDir, "evals", recordFileName(result.key));
|
|
88
|
-
let record = null;
|
|
89
|
-
try {
|
|
90
|
-
record = JSON.parse(await readFile(path, "utf8"));
|
|
91
|
-
} catch {}
|
|
92
|
-
const view = fromStaged(result, record);
|
|
93
|
-
if (view) views.push(view);
|
|
94
|
-
}
|
|
95
|
-
return views;
|
|
96
|
-
}
|
|
97
|
-
/** A recorded attempt, read from its run's artifact directory (`<history>/<run>/`, or `.reeval/runs/<run>/`). */
|
|
98
|
-
async function fromRecorded(runDir, attempt) {
|
|
99
|
-
const read = (path) => path ? readFile(join(runDir, path), "utf8").catch(() => "") : Promise.resolve("");
|
|
100
|
-
const lines = parseTranscript(await read(attempt.files.transcript?.path));
|
|
101
|
-
return {
|
|
102
|
-
id: attempt.id,
|
|
103
|
-
cell: attempt.cell,
|
|
104
|
-
n: attempt.n,
|
|
105
|
-
outcome: attempt.outcome,
|
|
106
|
-
error: attempt.error ? {
|
|
107
|
-
kind: attempt.error.kind,
|
|
108
|
-
message: attempt.error.message
|
|
109
|
-
} : null,
|
|
110
|
-
checks: await Promise.all(attempt.checks.map(async (c) => ({
|
|
111
|
-
command: c.command,
|
|
112
|
-
exitCode: c.exitCode,
|
|
113
|
-
output: tail((await read(c.log?.path)).trim(), 600)
|
|
114
|
-
}))),
|
|
115
|
-
judgements: attempt.judgements.map((j) => ({
|
|
116
|
-
question: j.question,
|
|
117
|
-
verdict: j.verdict,
|
|
118
|
-
score: j.score
|
|
119
|
-
})),
|
|
120
|
-
turns: attempt.turns.map((t, i) => ({
|
|
121
|
-
prompt: t.prompt,
|
|
122
|
-
text: t.text,
|
|
123
|
-
status: t.status,
|
|
124
|
-
steps: steps(lines.filter((l) => l.turn === i && l.type !== "prompt" && l.type !== "turn-end"))
|
|
125
|
-
})),
|
|
126
|
-
files: attempt.changedFiles.map((f) => f.path),
|
|
127
|
-
patch: await read(attempt.files.diff?.path)
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
/** Each failed attempt beside the nearest passing run of its cell, else of another cell. */
|
|
131
|
-
function failedVsPassed(attempts) {
|
|
132
|
-
const passed = attempts.filter((a) => a.outcome === "pass");
|
|
133
|
-
const near = (a) => (b, c) => Math.abs(b.n - a.n) - Math.abs(c.n - a.n);
|
|
134
|
-
return attempts.filter((a) => a.outcome === "fail").flatMap((a) => {
|
|
135
|
-
const sameCell = passed.filter((p) => p.cell === a.cell).sort(near(a))[0];
|
|
136
|
-
const other = passed.filter((p) => p.cell !== a.cell).sort(near(a))[0];
|
|
137
|
-
const match = sameCell ?? other;
|
|
138
|
-
return match ? [{
|
|
139
|
-
failed: a.id,
|
|
140
|
-
passed: match.id,
|
|
141
|
-
match: sameCell ? "cell" : "harness"
|
|
142
|
-
}] : [];
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
const stepCount = (a) => a.turns.reduce((n, t) => n + t.steps.length, 0);
|
|
146
|
-
/** `list_attempts`: every attempt's outcome in a line, and the failed-vs-passed pairs to open. */
|
|
147
|
-
function listOutcomes(attempts) {
|
|
148
|
-
return {
|
|
149
|
-
attempts: attempts.map((a) => ({
|
|
150
|
-
id: a.id,
|
|
151
|
-
outcome: a.outcome,
|
|
152
|
-
error: a.error ? `${a.error.kind}: ${clip(a.error.message, 300)}` : null,
|
|
153
|
-
failedChecks: a.checks.filter((c) => c.exitCode !== 0).map((c) => c.command),
|
|
154
|
-
judgements: a.judgements.map((j) => `${j.verdict} ${j.score.toFixed(2)}: ${clip(j.question, 120)}`),
|
|
155
|
-
turns: a.turns.length,
|
|
156
|
-
steps: stepCount(a),
|
|
157
|
-
files: a.files.length
|
|
158
|
-
})),
|
|
159
|
-
pairs: failedVsPassed(attempts)
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
/** `open_attempt`: one attempt's turns, steps (the first 40 and last 20), checks, verdicts and diff. */
|
|
163
|
-
function attemptSummary(a) {
|
|
164
|
-
return {
|
|
165
|
-
id: a.id,
|
|
166
|
-
outcome: a.outcome,
|
|
167
|
-
error: a.error ? {
|
|
168
|
-
kind: a.error.kind,
|
|
169
|
-
message: clip(a.error.message, 1e3)
|
|
170
|
-
} : null,
|
|
171
|
-
turns: a.turns.map((t, i) => ({
|
|
172
|
-
turn: i + 1,
|
|
173
|
-
prompt: clip(t.prompt, 400),
|
|
174
|
-
status: t.status,
|
|
175
|
-
steps: t.steps.length > 60 ? [
|
|
176
|
-
...t.steps.slice(0, 40),
|
|
177
|
-
`… ${t.steps.length - 60} steps …`,
|
|
178
|
-
...t.steps.slice(-20)
|
|
179
|
-
] : t.steps,
|
|
180
|
-
text: clip(t.text, 800)
|
|
181
|
-
})),
|
|
182
|
-
checks: a.checks.map((c) => ({
|
|
183
|
-
command: c.command,
|
|
184
|
-
exitCode: c.exitCode,
|
|
185
|
-
...c.exitCode !== 0 ? { output: c.output } : {}
|
|
186
|
-
})),
|
|
187
|
-
judgements: a.judgements,
|
|
188
|
-
files: a.files.slice(0, 50),
|
|
189
|
-
diff: head(a.patch, 3e3)
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* `compare_attempts`: where a failed attempt's steps first differ from a passing one's, a few
|
|
194
|
-
* steps either side, the checks, verdicts and files that differ, and the start of each diff.
|
|
195
|
-
*/
|
|
196
|
-
function divergence(failed, passed, window = 6) {
|
|
197
|
-
const a = failed.turns.flatMap((t) => t.steps);
|
|
198
|
-
const b = passed.turns.flatMap((t) => t.steps);
|
|
199
|
-
let same = 0;
|
|
200
|
-
while (same < a.length && same < b.length && a[same] === b[same]) same++;
|
|
201
|
-
const diverged = same < a.length || same < b.length;
|
|
202
|
-
const from = Math.max(0, same - 2);
|
|
203
|
-
const commands = [...new Set([...failed.checks, ...passed.checks].map((c) => c.command))];
|
|
204
|
-
const exit = (v, command) => v.checks.find((c) => c.command === command)?.exitCode ?? null;
|
|
205
|
-
const verdict = (v, question) => v.judgements.find((j) => j.question === question)?.verdict ?? null;
|
|
206
|
-
const questions = [...new Set([...failed.judgements, ...passed.judgements].map((j) => j.question))];
|
|
207
|
-
const last = (v) => clip(v.turns.at(-1)?.text ?? "", 600);
|
|
208
|
-
return {
|
|
209
|
-
failed: failed.id,
|
|
210
|
-
passed: passed.id,
|
|
211
|
-
error: failed.error ? `${failed.error.kind}: ${clip(failed.error.message, 600)}` : null,
|
|
212
|
-
stepsInCommon: same,
|
|
213
|
-
/** The first step (from 1) where they differ; null when the steps are the same. */
|
|
214
|
-
divergedAt: diverged ? same + 1 : null,
|
|
215
|
-
steps: {
|
|
216
|
-
failed: a.length,
|
|
217
|
-
passed: b.length
|
|
218
|
-
},
|
|
219
|
-
failedSteps: a.slice(from, same + window),
|
|
220
|
-
passedSteps: b.slice(from, same + window),
|
|
221
|
-
checks: commands.filter((c) => exit(failed, c) !== exit(passed, c)).map((c) => ({
|
|
222
|
-
command: c,
|
|
223
|
-
failed: exit(failed, c),
|
|
224
|
-
passed: exit(passed, c),
|
|
225
|
-
failedOutput: failed.checks.find((x) => x.command === c)?.output ?? null
|
|
226
|
-
})),
|
|
227
|
-
judgements: questions.filter((q) => verdict(failed, q) !== verdict(passed, q)).map((q) => ({
|
|
228
|
-
question: clip(q, 200),
|
|
229
|
-
failed: verdict(failed, q),
|
|
230
|
-
passed: verdict(passed, q)
|
|
231
|
-
})),
|
|
232
|
-
files: {
|
|
233
|
-
onlyFailed: failed.files.filter((f) => !passed.files.includes(f)).slice(0, 30),
|
|
234
|
-
onlyPassed: passed.files.filter((f) => !failed.files.includes(f)).slice(0, 30)
|
|
235
|
-
},
|
|
236
|
-
finalText: {
|
|
237
|
-
failed: last(failed),
|
|
238
|
-
passed: last(passed)
|
|
239
|
-
},
|
|
240
|
-
diff: {
|
|
241
|
-
failed: head(failed.patch, 1500),
|
|
242
|
-
passed: head(passed.patch, 1500)
|
|
243
|
-
}
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
//#endregion
|
|
247
|
-
export { stagedAttempts as a, listOutcomes as i, divergence as n, fromRecorded as r, attemptSummary as t };
|
|
248
|
-
|
|
249
|
-
//# sourceMappingURL=tools-GCyNYSc1.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools-GCyNYSc1.js","names":[],"sources":["../src/analysis/agent/tools.ts"],"mappings":"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"}
|
package/dist/views-BW6oCDUQ.js
DELETED
package/dist/views-BmQF4UCI.js
DELETED
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
import { r as formatDuration } from "./text-gEcKjAyp.js";
|
|
2
|
-
import { V as labelledJudgements, et as effortChangeLabel, vt as cellsChanged, xt as stackChanges } from "./model-oqcDplJG.js";
|
|
3
|
-
import { o as warnings } from "./state-C__9swoG.js";
|
|
4
|
-
import { a as contrastLines, d as summaryCounts, l as repeatsVerdict, r as cellCounts, t as OUTCOME_MARK, u as stateRows } from "./summary-BLAVLySU.js";
|
|
5
|
-
//#region src/history/views.ts
|
|
6
|
-
var RefError = class extends Error {
|
|
7
|
-
name = "RefError";
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* `latest`, `latest~N`, a run id or unique prefix of one, or a git SHA prefix (the newest run
|
|
11
|
-
* at that commit). `entries` are sorted oldest first.
|
|
12
|
-
*/
|
|
13
|
-
function resolveRun(entries, ref = "latest") {
|
|
14
|
-
if (entries.length === 0) throw new RefError("No runs yet. Run reeval run.");
|
|
15
|
-
const back = /^latest(?:~(\d+))?$/.exec(ref);
|
|
16
|
-
if (back) {
|
|
17
|
-
const entry = entries[entries.length - 1 - Number(back[1] ?? 0)];
|
|
18
|
-
if (!entry) throw new RefError(`There ${entries.length === 1 ? "is only 1 run" : `are only ${entries.length} runs`}, so ${ref} names none. reeval history lists them.`);
|
|
19
|
-
return entry;
|
|
20
|
-
}
|
|
21
|
-
const exact = entries.find((e) => e.runId === ref);
|
|
22
|
-
if (exact) return exact;
|
|
23
|
-
const byId = entries.filter((e) => e.runId.startsWith(ref));
|
|
24
|
-
if (byId.length === 1 && byId[0]) return byId[0];
|
|
25
|
-
if (byId.length > 1) throw new RefError(`"${ref}" matches ${byId.length} runs: use more of the id`);
|
|
26
|
-
if (/^[0-9a-f]{4,40}$/i.test(ref)) {
|
|
27
|
-
const atSha = entries.filter((e) => e.git?.sha.startsWith(ref.toLowerCase()));
|
|
28
|
-
const newest = atSha[atSha.length - 1];
|
|
29
|
-
if (newest) return newest;
|
|
30
|
-
}
|
|
31
|
-
throw new RefError(`No run matches "${ref}". Pass latest, latest~N, a run id or a git SHA; reeval history lists them.`);
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* The run to compare `head` against: a complete, earlier run on the first commit of `ancestry` that
|
|
35
|
-
* has one, newest run first; otherwise the previous complete run by time. `ancestry` is `git
|
|
36
|
-
* rev-list <head's commit>`: head's own commit first, then every ancestor through all parents
|
|
37
|
-
* (merged branches too, not only first parents), newest commit first. Ancestry beats wall-clock
|
|
38
|
-
* time, which can be skewed.
|
|
39
|
-
*/
|
|
40
|
-
function pickBaseline(entries, head, ancestry) {
|
|
41
|
-
const earlier = entries.filter((e) => e.runId < head.runId && e.status === "complete");
|
|
42
|
-
if (ancestry && ancestry.length > 0) {
|
|
43
|
-
const rank = new Map(ancestry.map((sha, i) => [sha, i]));
|
|
44
|
-
let best = null;
|
|
45
|
-
let bestRank = Number.POSITIVE_INFINITY;
|
|
46
|
-
for (const e of earlier) {
|
|
47
|
-
const r = e.git ? rank.get(e.git.sha) : void 0;
|
|
48
|
-
if (r !== void 0 && (r < bestRank || r === bestRank && best && e.runId > best.runId)) {
|
|
49
|
-
best = e;
|
|
50
|
-
bestRank = r;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
if (best) return best;
|
|
54
|
-
}
|
|
55
|
-
return earlier[earlier.length - 1] ?? null;
|
|
56
|
-
}
|
|
57
|
-
const shortSha = (e) => e.git ? e.git.sha.slice(0, 7) : "no-git";
|
|
58
|
-
const unreachable = (entry, reach) => !!reach && !!entry.git && !reach.has(entry.git.sha);
|
|
59
|
-
function history(entries, options = {}) {
|
|
60
|
-
const runs = entries.slice(-(options.limit ?? 20));
|
|
61
|
-
const ids = [];
|
|
62
|
-
for (const run of [...runs].reverse()) for (const e of run.evals) if (!ids.includes(e.id)) ids.push(e.id);
|
|
63
|
-
const needle = options.filter?.toLowerCase();
|
|
64
|
-
return {
|
|
65
|
-
runs,
|
|
66
|
-
rows: ids.filter((id) => !needle || id.toLowerCase().includes(needle)).map((id) => {
|
|
67
|
-
const row = {
|
|
68
|
-
id,
|
|
69
|
-
outcomes: [],
|
|
70
|
-
drift: [],
|
|
71
|
-
pass: 0,
|
|
72
|
-
counted: 0
|
|
73
|
-
};
|
|
74
|
-
const seen = /* @__PURE__ */ new Map();
|
|
75
|
-
runs.forEach((run, i) => {
|
|
76
|
-
const e = run.evals.find((x) => x.id === id);
|
|
77
|
-
row.outcomes.push(e?.outcome ?? null);
|
|
78
|
-
if (!e) return;
|
|
79
|
-
if (cellsChanged(seen, id, e.cells)) row.drift.push(i);
|
|
80
|
-
if (e.outcome === "pass" || e.outcome === "fail") row.counted++;
|
|
81
|
-
if (e.outcome === "pass") row.pass++;
|
|
82
|
-
});
|
|
83
|
-
return row;
|
|
84
|
-
}),
|
|
85
|
-
orphaned: runs.filter((r) => unreachable(r, options.reach ?? null)).map((r) => r.runId)
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
function formatHistory({ runs, rows, orphaned }) {
|
|
89
|
-
if (runs.length === 0) return "No recorded runs yet. Run reeval run --record, or reeval record latest.";
|
|
90
|
-
const first = runs[0];
|
|
91
|
-
const last = runs[runs.length - 1];
|
|
92
|
-
const lines = [`${runs.length} run${runs.length === 1 ? "" : "s"}, oldest → newest: ${first.runId} (${shortSha(first)}) … ${last.runId} (${shortSha(last)})`, ""];
|
|
93
|
-
const width = Math.max(...rows.map((r) => r.outcomes.length + r.drift.length), 0);
|
|
94
|
-
for (const row of rows) {
|
|
95
|
-
const strip = row.outcomes.map((o, i) => `${row.drift.includes(i) ? "¦" : ""}${o ? OUTCOME_MARK[o] : "·"}`).join("");
|
|
96
|
-
const rate = row.counted ? `${row.pass}/${row.counted}` : "–";
|
|
97
|
-
lines.push(` ${strip.padEnd(width)} ${rate.padStart(5)} ${row.id}`);
|
|
98
|
-
}
|
|
99
|
-
lines.push("", "✓ pass ✗ fail ! infra error ↓ skipped · not run ¦ eval or stack changed");
|
|
100
|
-
if (orphaned.length > 0) lines.push("", `${orphaned.length} run${orphaned.length === 1 ? " was" : "s were"} recorded on commits that aren't in HEAD's history (rebased or dropped?):`, ...orphaned.map((id) => ` ${id}`));
|
|
101
|
-
return lines.join("\n");
|
|
102
|
-
}
|
|
103
|
-
const STATUS_LABEL = {
|
|
104
|
-
regressed: "regressed",
|
|
105
|
-
fixed: "fixed",
|
|
106
|
-
same: "same",
|
|
107
|
-
drift: "changed (not comparable)",
|
|
108
|
-
added: "new",
|
|
109
|
-
removed: "removed",
|
|
110
|
-
infra: "infra error"
|
|
111
|
-
};
|
|
112
|
-
/**
|
|
113
|
-
* `: evals/helpers.ts changed, harness config changed` for a row that isn't comparable, and
|
|
114
|
-
* ` · cells removed: …` when the runs ran different cells of the eval.
|
|
115
|
-
*/
|
|
116
|
-
const why = (r) => [
|
|
117
|
-
r.changes?.length ? `: ${r.changes.join(", ")}` : "",
|
|
118
|
-
r.cells?.added.length ? ` · cells added: ${r.cells.added.join(", ")}` : "",
|
|
119
|
-
r.cells?.removed.length ? ` · cells removed: ${r.cells.removed.join(", ")}` : ""
|
|
120
|
-
].join("");
|
|
121
|
-
const ORDER = [
|
|
122
|
-
"regressed",
|
|
123
|
-
"fixed",
|
|
124
|
-
"drift",
|
|
125
|
-
"infra",
|
|
126
|
-
"added",
|
|
127
|
-
"removed",
|
|
128
|
-
"same"
|
|
129
|
-
];
|
|
130
|
-
const describeRun = (e, reach) => `${e.runId} (${shortSha(e)}${e.recorded ? "" : ", not recorded"}${unreachable(e, reach) ? ", commit not in HEAD's history" : ""})`;
|
|
131
|
-
function formatCompare(base, head, rows, md, reach = null) {
|
|
132
|
-
const sorted = [...rows].sort((a, b) => ORDER.indexOf(a.status) - ORDER.indexOf(b.status));
|
|
133
|
-
const mark = (o) => o ? OUTCOME_MARK[o] : "·";
|
|
134
|
-
const count = (s) => rows.filter((r) => r.status === s).length;
|
|
135
|
-
const tally = `${count("regressed")} regressed · ${count("fixed")} fixed · ${count("drift")} not comparable · ${count("same")} same`;
|
|
136
|
-
const changes = stackChanges(base, head);
|
|
137
|
-
const changeText = changes.map((c) => `${c.label} ${c.base} → ${c.head}`).join("; ");
|
|
138
|
-
const esc = (s) => s.replace(/\|/g, "\\|");
|
|
139
|
-
const cells = sorted.flatMap((r) => (r.perCell ?? []).map((c) => ({
|
|
140
|
-
row: r,
|
|
141
|
-
cell: c
|
|
142
|
-
})));
|
|
143
|
-
if (md) return [
|
|
144
|
-
`### reeval: ${head.runId} vs ${base.runId}`,
|
|
145
|
-
"",
|
|
146
|
-
`Base ${describeRun(base, reach)} → head ${describeRun(head, reach)}. ${tally}.`,
|
|
147
|
-
"",
|
|
148
|
-
...changes.length ? [`**Stack changed:** ${changeText}.`, ""] : [],
|
|
149
|
-
"| Eval | Base | Head | Change |",
|
|
150
|
-
"|---|---|---|---|",
|
|
151
|
-
...sorted.map((r) => `| ${esc(r.id)} | ${mark(r.base)} | ${mark(r.head)} | ${STATUS_LABEL[r.status]}${why(r)} |`),
|
|
152
|
-
"",
|
|
153
|
-
...cells.length ? [
|
|
154
|
-
"| Eval | Cell | Lift, base → head | Effort, base → head |",
|
|
155
|
-
"|---|---|---|---|",
|
|
156
|
-
...cells.map(({ row, cell }) => `| ${esc(row.id)} | ${esc(cell.key)} | ${liftChange(cell)} | ${effortChange(cell)} |`),
|
|
157
|
-
""
|
|
158
|
-
] : []
|
|
159
|
-
].join("\n");
|
|
160
|
-
return [
|
|
161
|
-
`base ${describeRun(base, reach)} → head ${describeRun(head, reach)}`,
|
|
162
|
-
tally,
|
|
163
|
-
...changes.length ? [`stack changed: ${changeText}`] : [],
|
|
164
|
-
"",
|
|
165
|
-
...sorted.flatMap((r) => [` ${mark(r.base)} → ${mark(r.head)} ${STATUS_LABEL[r.status].padEnd(24)} ${r.id}${why(r)}`, ...(r.perCell ?? []).map((c) => ` ${c.key} ${[c.base.lift || c.head.lift ? `lift ${liftChange(c)}` : "", effortChange(c)].filter(Boolean).join(" · ")}`)])
|
|
166
|
-
].join("\n");
|
|
167
|
-
}
|
|
168
|
-
/** `reeval compare` when head has no earlier recorded run: every eval is new. */
|
|
169
|
-
function formatNoBaseline(head, rows, md) {
|
|
170
|
-
const failing = rows.filter((r) => r.head === "fail").length;
|
|
171
|
-
const note = `No earlier recorded run to compare ${head.runId} with: every eval is new${failing ? `, and ${failing} fail${failing === 1 ? "s" : ""}` : ""}.`;
|
|
172
|
-
const mark = (o) => o ? OUTCOME_MARK[o] : "·";
|
|
173
|
-
if (md) return [
|
|
174
|
-
`### reeval: ${head.runId}`,
|
|
175
|
-
"",
|
|
176
|
-
note,
|
|
177
|
-
"",
|
|
178
|
-
"| Eval | Head |",
|
|
179
|
-
"|---|---|",
|
|
180
|
-
...rows.map((r) => `| ${r.id.replace(/\|/g, "\\|")} | ${mark(r.head)} |`),
|
|
181
|
-
""
|
|
182
|
-
].join("\n");
|
|
183
|
-
return [
|
|
184
|
-
note,
|
|
185
|
-
"",
|
|
186
|
-
...rows.map((r) => ` ${mark(r.head)} new ${r.id}`)
|
|
187
|
-
].join("\n");
|
|
188
|
-
}
|
|
189
|
-
const liftShort = (l) => l ? `${signed(l.points)} (${signed(l.lo)}…${signed(l.hi)})${l.withinNoise ? " noise" : ""}` : "–";
|
|
190
|
-
const signed = (x) => `${x >= 0 ? "+" : "−"}${Math.round(Math.abs(x) * 100)}`;
|
|
191
|
-
const liftChange = (c) => `${liftShort(c.base.lift)} → ${liftShort(c.head.lift)}`;
|
|
192
|
-
const effortChange = (c) => c.base.effort && c.head.effort ? effortChangeLabel(c.base.effort, c.head.effort) : "effort –";
|
|
193
|
-
function formatShow(run) {
|
|
194
|
-
const rows = stateRows(run);
|
|
195
|
-
const width = Math.max(...rows.map(([k]) => k.length));
|
|
196
|
-
const lines = [
|
|
197
|
-
`run ${run.runId} ${summaryCounts(run.summary)}${run.status === "interrupted" ? " (interrupted)" : ""}`,
|
|
198
|
-
` started ${run.startedAt} (${formatDuration(run.durationMs)}) · artifacts ${run.artifacts}`,
|
|
199
|
-
"",
|
|
200
|
-
...rows.map(([k, v]) => ` ${k.padEnd(width)} ${v}`),
|
|
201
|
-
...warnings(run).map((w) => ` ! ${w}`),
|
|
202
|
-
""
|
|
203
|
-
];
|
|
204
|
-
for (const e of run.evals) {
|
|
205
|
-
const single = e.attempts.length === 1;
|
|
206
|
-
const first = e.attempts[0];
|
|
207
|
-
lines.push(` ${OUTCOME_MARK[e.outcome]} ${e.id}${single && first ? ` ${formatDuration(first.durationMs)}` : ` ${cellCounts(e)}`}`);
|
|
208
|
-
const contrasts = contrastLines(e);
|
|
209
|
-
if (contrasts.length) {
|
|
210
|
-
lines.push(" contrasts (each pair of arms, same harness)");
|
|
211
|
-
for (const line of contrasts) lines.push(` ${line}`);
|
|
212
|
-
}
|
|
213
|
-
for (const t of e.attempts) {
|
|
214
|
-
const indent = single ? " " : " ";
|
|
215
|
-
if (!single) lines.push(` ${OUTCOME_MARK[t.outcome]} ${t.id} ${formatDuration(t.durationMs)}`);
|
|
216
|
-
for (const { judgement: j, label, labelled } of labelledJudgements(t)) lines.push(`${indent}judge ${j.verdict} ${j.score.toFixed(2)} (≥ ${j.threshold}) ${labelled ? `${label}: ` : ""}${j.question}`);
|
|
217
|
-
if (t.error && !repeatsVerdict(t)) lines.push(`${indent}${t.error.kind}: ${t.error.message.split("\n")[0]}`);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
return lines.join("\n");
|
|
221
|
-
}
|
|
222
|
-
//#endregion
|
|
223
|
-
export { formatShow as a, resolveRun as c, formatNoBaseline as i, unreachable as l, formatCompare as n, history as o, formatHistory as r, pickBaseline as s, RefError as t };
|
|
224
|
-
|
|
225
|
-
//# sourceMappingURL=views-BmQF4UCI.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"views-BmQF4UCI.js","names":[],"sources":["../src/history/views.ts"],"mappings":";;;;;AA6BA,IAAa,WAAb,cAA8B,MAAM;CAClC,OAAgB;AAClB;;;;;AAMA,SAAgB,WAAW,SAAyB,MAAM,UAAwB;CAChF,IAAI,QAAQ,WAAW,GAAG,MAAM,IAAI,SAAS,8BAA8B;CAC3E,MAAM,OAAO,sBAAsB,KAAK,GAAG;CAC3C,IAAI,MAAM;EACR,MAAM,QAAQ,QAAQ,QAAQ,SAAS,IAAI,OAAO,KAAK,MAAM,CAAC;EAC9D,IAAI,CAAC,OACH,MAAM,IAAI,SACR,SAAS,QAAQ,WAAW,IAAI,kBAAkB,YAAY,QAAQ,OAAO,OAAO,OAAO,IAAI,wCACjG;EAEF,OAAO;CACT;CACA,MAAM,QAAQ,QAAQ,MAAM,MAAM,EAAE,UAAU,GAAG;CACjD,IAAI,OAAO,OAAO;CAClB,MAAM,OAAO,QAAQ,QAAQ,MAAM,EAAE,MAAM,WAAW,GAAG,CAAC;CAC1D,IAAI,KAAK,WAAW,KAAK,KAAK,IAAI,OAAO,KAAK;CAC9C,IAAI,KAAK,SAAS,GAChB,MAAM,IAAI,SAAS,IAAI,IAAI,YAAY,KAAK,OAAO,0BAA0B;CAC/E,IAAI,oBAAoB,KAAK,GAAG,GAAG;EACjC,MAAM,QAAQ,QAAQ,QAAQ,MAAM,EAAE,KAAK,IAAI,WAAW,IAAI,YAAY,CAAC,CAAC;EAC5E,MAAM,SAAS,MAAM,MAAM,SAAS;EACpC,IAAI,QAAQ,OAAO;CACrB;CACA,MAAM,IAAI,SACR,mBAAmB,IAAI,4EACzB;AACF;;;;;;;;AASA,SAAgB,aACd,SACA,MACA,UACqB;CACrB,MAAM,UAAU,QAAQ,QAAQ,MAAM,EAAE,QAAQ,KAAK,SAAS,EAAE,WAAW,UAAU;CACrF,IAAI,YAAY,SAAS,SAAS,GAAG;EACnC,MAAM,OAAO,IAAI,IAAI,SAAS,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EACvD,IAAI,OAA4B;EAChC,IAAI,WAAW,OAAO;EACtB,KAAK,MAAM,KAAK,SAAS;GACvB,MAAM,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,IAAI,GAAG,IAAI,KAAA;GACxC,IAAI,MAAM,KAAA,MAAc,IAAI,YAAa,MAAM,YAAY,QAAQ,EAAE,QAAQ,KAAK,QAAS;IACzF,OAAO;IACP,WAAW;GACb;EACF;EACA,IAAI,MAAM,OAAO;CACnB;CACA,OAAO,QAAQ,QAAQ,SAAS,MAAM;AACxC;AAEA,MAAM,YAAY,MAAqB,EAAE,MAAM,EAAE,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI;AAkBvE,MAAa,eAAe,OAAqB,UAC/C,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,IAAI,MAAM,IAAI,GAAG;AAEpD,SAAgB,QACd,SACA,UAAqE,CAAC,GACtE;CACA,MAAM,OAAO,QAAQ,MAAM,EAAE,QAAQ,SAAS,GAAG;CACjD,MAAM,MAAgB,CAAC;CACvB,KAAK,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,GAClC,KAAK,MAAM,KAAK,IAAI,OAAO,IAAI,CAAC,IAAI,SAAS,EAAE,EAAE,GAAG,IAAI,KAAK,EAAE,EAAE;CAEnE,MAAM,SAAS,QAAQ,QAAQ,YAAY;CAiB3C,OAAO;EAAE;EAAM,MAhBY,IACxB,QAAQ,OAAO,CAAC,UAAU,GAAG,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,CAC5D,KAAK,OAAO;GACX,MAAM,MAAkB;IAAE;IAAI,UAAU,CAAC;IAAG,OAAO,CAAC;IAAG,MAAM;IAAG,SAAS;GAAE;GAC3E,MAAM,uBAAO,IAAI,IAAoB;GACrC,KAAK,SAAS,KAAK,MAAM;IACvB,MAAM,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,OAAO,EAAE;IAC3C,IAAI,SAAS,KAAK,GAAG,WAAW,IAAI;IACpC,IAAI,CAAC,GAAG;IACR,IAAI,aAAa,MAAM,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,KAAK,CAAC;IACrD,IAAI,EAAE,YAAY,UAAU,EAAE,YAAY,QAAQ,IAAI;IACtD,IAAI,EAAE,YAAY,QAAQ,IAAI;GAChC,CAAC;GACD,OAAO;EACT,CAEgB;EAAG,UADJ,KAAK,QAAQ,MAAM,YAAY,GAAG,QAAQ,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,KAC5D;CAAE;AAChC;AAEA,SAAgB,cAAc,EAAE,MAAM,MAAM,YAAgD;CAC1F,IAAI,KAAK,WAAW,GAClB,OAAO;CACT,MAAM,QAAQ,KAAK;CACnB,MAAM,OAAO,KAAK,KAAK,SAAS;CAChC,MAAM,QAAQ,CACZ,GAAG,KAAK,OAAO,MAAM,KAAK,WAAW,IAAI,KAAK,IAAI,qBAAqB,MAAM,MAAM,IAAI,SAAS,KAAK,EAAE,MAAM,KAAK,MAAM,IAAI,SAAS,IAAI,EAAE,IAC3I,EACF;CACA,MAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,KAAK,MAAM,EAAE,SAAS,SAAS,EAAE,MAAM,MAAM,GAAG,CAAC;CAChF,KAAK,MAAM,OAAO,MAAM;EACtB,MAAM,QAAQ,IAAI,SACf,KAAK,GAAG,MAAM,GAAG,IAAI,MAAM,SAAS,CAAC,IAAI,MAAM,KAAK,IAAI,aAAa,KAAK,KAAK,CAAC,CAChF,KAAK,EAAE;EACV,MAAM,OAAO,IAAI,UAAU,GAAG,IAAI,KAAK,GAAG,IAAI,YAAY;EAC1D,MAAM,KAAK,KAAK,MAAM,OAAO,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,EAAE,IAAI,IAAI,IAAI;CACvE;CACA,MAAM,KAAK,IAAI,8EAA8E;CAC7F,IAAI,SAAS,SAAS,GACpB,MAAM,KACJ,IACA,GAAG,SAAS,OAAO,MAAM,SAAS,WAAW,IAAI,SAAS,SAAS,4EACnE,GAAG,SAAS,KAAK,OAAO,KAAK,IAAI,CACnC;CAEF,OAAO,MAAM,KAAK,IAAI;AACxB;AAEA,MAAM,eAA8C;CAClD,WAAW;CACX,OAAO;CACP,MAAM;CACN,OAAO;CACP,OAAO;CACP,SAAS;CACT,OAAO;AACT;;;;;AAMA,MAAM,OAAO,MACX;CACE,EAAE,SAAS,SAAS,KAAK,EAAE,QAAQ,KAAK,IAAI,MAAM;CAClD,EAAE,OAAO,MAAM,SAAS,mBAAmB,EAAE,MAAM,MAAM,KAAK,IAAI,MAAM;CACxE,EAAE,OAAO,QAAQ,SAAS,qBAAqB,EAAE,MAAM,QAAQ,KAAK,IAAI,MAAM;AAChF,CAAC,CAAC,KAAK,EAAE;AAEX,MAAM,QAAyB;CAAC;CAAa;CAAS;CAAS;CAAS;CAAS;CAAW;AAAM;AAElG,MAAM,eAAe,GAAiB,UACpC,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,IAAI,EAAE,WAAW,KAAK,mBAAmB,YAAY,GAAG,KAAK,IAAI,mCAAmC,GAAG;AAElI,SAAgB,cACd,MACA,MACA,MACA,IACA,QAAsB,MACtB;CACA,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,MAAM,QAAQ,EAAE,MAAM,IAAI,MAAM,QAAQ,EAAE,MAAM,CAAC;CACzF,MAAM,QAAQ,MAAuB,IAAI,aAAa,KAAK;CAC3D,MAAM,SAAS,MAAqB,KAAK,QAAQ,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;CACvE,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,eAAe,MAAM,OAAO,EAAE,WAAW,MAAM,OAAO,EAAE,oBAAoB,MAAM,MAAM,EAAE;CAC9H,MAAM,UAAU,aAAa,MAAM,IAAI;CACvC,MAAM,aAAa,QAAQ,KAAK,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI;CACnF,MAAM,OAAO,MAAc,EAAE,QAAQ,OAAO,KAAK;CACjD,MAAM,QAAQ,OAAO,SAAS,OAAO,EAAE,WAAW,CAAC,EAAA,CAAG,KAAK,OAAO;EAAE,KAAK;EAAG,MAAM;CAAE,EAAE,CAAC;CACvF,IAAI,IACF,OAAO;EACL,eAAe,KAAK,MAAM,MAAM,KAAK;EACrC;EACA,QAAQ,YAAY,MAAM,KAAK,EAAE,UAAU,YAAY,MAAM,KAAK,EAAE,IAAI,MAAM;EAC9E;EACA,GAAI,QAAQ,SAAS,CAAC,sBAAsB,WAAW,IAAI,EAAE,IAAI,CAAC;EAClE;EACA;EACA,GAAG,OAAO,KACP,MACC,KAAK,IAAI,EAAE,EAAE,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,aAAa,EAAE,UAAU,IAAI,CAAC,EAAE,GAC5F;EACA;EACA,GAAI,MAAM,SACN;GACE;GACA;GACA,GAAG,MAAM,KACN,EAAE,KAAK,WACN,KAAK,IAAI,IAAI,EAAE,EAAE,KAAK,IAAI,KAAK,GAAG,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,aAAa,IAAI,EAAE,GACtF;GACA;EACF,IACA,CAAC;CACP,CAAC,CAAC,KAAK,IAAI;CAEb,OAAO;EACL,QAAQ,YAAY,MAAM,KAAK,EAAE,UAAU,YAAY,MAAM,KAAK;EAClE;EACA,GAAI,QAAQ,SAAS,CAAC,kBAAkB,YAAY,IAAI,CAAC;EACzD;EACA,GAAG,OAAO,SAAS,MAAM,CACvB,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,KAC1F,IAAI,EAAE,WAAW,CAAC,EAAA,CAAG,KAClB,MACC,SAAS,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,KAAK,OAAO,QAAQ,WAAW,CAAC,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,KAAK,GAC9H,CACF,CAAC;CACH,CAAC,CAAC,KAAK,IAAI;AACb;;AAGA,SAAgB,iBAAiB,MAAoB,MAAoB,IAAqB;CAC5F,MAAM,UAAU,KAAK,QAAQ,MAAM,EAAE,SAAS,MAAM,CAAC,CAAC;CACtD,MAAM,OAAO,sCAAsC,KAAK,MAAM,0BAA0B,UAAU,SAAS,QAAQ,OAAO,YAAY,IAAI,MAAM,OAAO,GAAG;CAC1J,MAAM,QAAQ,MAAuB,IAAI,aAAa,KAAK;CAC3D,IAAI,IACF,OAAO;EACL,eAAe,KAAK;EACpB;EACA;EACA;EACA;EACA;EACA,GAAG,KAAK,KAAK,MAAM,KAAK,EAAE,GAAG,QAAQ,OAAO,KAAK,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,GAAG;EACxE;CACF,CAAC,CAAC,KAAK,IAAI;CAEb,OAAO;EAAC;EAAM;EAAI,GAAG,KAAK,KAAK,MAAM,KAAK,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI;CAAC,CAAC,CAAC,KAAK,IAAI;AACpF;AAEA,MAAM,aAAa,MACjB,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,cAAc,WAAW,OAAO;AAChG,MAAM,UAAU,MAAc,GAAG,KAAK,IAAI,MAAM,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,GAAG;AAClF,MAAM,cAAc,MAAmB,GAAG,UAAU,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI;AAC3F,MAAM,gBAAgB,MACpB,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,kBAAkB,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,IAAI;AAErF,SAAgB,WAAW,KAAwB;CACjD,MAAM,OAAO,UAAU,GAAG;CAC1B,MAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;CACrD,MAAM,QAAQ;EACZ,OAAO,IAAI,MAAM,IAAI,cAAc,IAAI,OAAO,IAAI,IAAI,WAAW,gBAAgB,oBAAoB;EACrG,aAAa,IAAI,UAAU,KAAK,eAAe,IAAI,UAAU,EAAE,gBAAgB,IAAI;EACnF;EACA,GAAG,KAAK,KAAK,CAAC,GAAG,OAAO,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,GAAG;EACpD,GAAG,SAAS,GAAG,CAAC,CAAC,KAAK,MAAM,OAAO,GAAG;EACtC;CACF;CACA,KAAK,MAAM,KAAK,IAAI,OAAO;EACzB,MAAM,SAAS,EAAE,SAAS,WAAW;EACrC,MAAM,QAAQ,EAAE,SAAS;EACzB,MAAM,KACJ,KAAK,aAAa,EAAE,SAAS,GAAG,EAAE,KAAK,UAAU,QAAQ,KAAK,eAAe,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC,KACtH;EACA,MAAM,YAAY,cAAc,CAAC;EACjC,IAAI,UAAU,QAAQ;GACpB,MAAM,KAAK,mDAAmD;GAC9D,KAAK,MAAM,QAAQ,WAAW,MAAM,KAAK,WAAW,MAAM;EAC5D;EACA,KAAK,MAAM,KAAK,EAAE,UAAU;GAC1B,MAAM,SAAS,SAAS,WAAW;GACnC,IAAI,CAAC,QACH,MAAM,KAAK,SAAS,aAAa,EAAE,SAAS,GAAG,EAAE,GAAG,IAAI,eAAe,EAAE,UAAU,GAAG;GAExF,KAAK,MAAM,EAAE,WAAW,GAAG,OAAO,cAAc,mBAAmB,CAAC,GAClE,MAAM,KACJ,GAAG,OAAO,QAAQ,EAAE,QAAQ,GAAG,EAAE,MAAM,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,KAAK,WAAW,GAAG,MAAM,MAAM,KAAK,EAAE,UAC5G;GAEF,IAAI,EAAE,SAAS,CAAC,eAAe,CAAC,GAC9B,MAAM,KAAK,GAAG,SAAS,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,QAAQ,MAAM,IAAI,CAAC,CAAC,IAAI;EAE5E;CACF;CACA,OAAO,MAAM,KAAK,IAAI;AACxB"}
|