reeval 0.8.0 → 0.10.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 +52 -40
- package/THIRD_PARTY_NOTICES.md +218 -11
- package/assets/package.json +1 -1
- package/assets/pnpm-lock.yaml +30 -30
- package/dist/adapter-DWlpOtRn.js +279 -0
- package/dist/adapter-DWlpOtRn.js.map +1 -0
- package/dist/{agent-B72lZ6w5.js → agent-CURAwx_q.js} +6 -6
- package/dist/{agent-B72lZ6w5.js.map → agent-CURAwx_q.js.map} +1 -1
- package/dist/{agent-Cfj1wD4D.js → agent-CaS_2Sce.js} +92 -26
- package/dist/agent-CaS_2Sce.js.map +1 -0
- package/dist/{analysis-BTNnKh1w.js → analysis-Bxub9LMT.js} +4 -4
- package/dist/{analysis-BTNnKh1w.js.map → analysis-Bxub9LMT.js.map} +1 -1
- package/dist/{assemble-BbFVjHeS.js → assemble-B9Alds-z.js} +290 -30
- package/dist/assemble-B9Alds-z.js.map +1 -0
- package/dist/assemble-J5MukZFY.js +1 -0
- package/dist/{client-CwzU9CiW.js → assert-EUIoRdIt.js} +38 -112
- package/dist/assert-EUIoRdIt.js.map +1 -0
- package/dist/bridge/index.mjs +248 -55
- package/dist/{capture-BXhBfmsM.js → capture-CNb9SuU5.js} +204 -39
- package/dist/capture-CNb9SuU5.js.map +1 -0
- package/dist/capture-jquXZBKK.js +1 -0
- package/dist/{cli-BMjTKY-D.js → cli-D303Vj5N.js} +257 -146
- package/dist/cli-D303Vj5N.js.map +1 -0
- package/dist/{cli-spec-DSvKsOK4.js → cli-spec-BPZbQG2p.js} +38 -19
- package/dist/cli-spec-BPZbQG2p.js.map +1 -0
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/dist/client-fcwgwOAD.js +106 -0
- package/dist/client-fcwgwOAD.js.map +1 -0
- package/dist/{command-JPGNzFsA.js → command-BLfT7vnQ.js} +19 -18
- package/dist/command-BLfT7vnQ.js.map +1 -0
- package/dist/{command-BK4kOgkH.js → command-BT9a37ZR.js} +381 -78
- package/dist/command-BT9a37ZR.js.map +1 -0
- package/dist/{command-BqJtFiPy.js → command-Bge8F7Ko.js} +384 -101
- package/dist/command-Bge8F7Ko.js.map +1 -0
- package/dist/command-BkFjijN2.js +1 -0
- package/dist/{command-BdstSEHu.js → command-CMJtHKRa.js} +14 -14
- package/dist/{command-BdstSEHu.js.map → command-CMJtHKRa.js.map} +1 -1
- package/dist/commands-1p-bIWhN.js +1 -0
- package/dist/{commands-B618jg3C.js → commands-BFx16WB8.js} +8 -8
- package/dist/commands-BFx16WB8.js.map +1 -0
- package/dist/config-DEgnUiU-.js +756 -0
- package/dist/config-DEgnUiU-.js.map +1 -0
- package/dist/{context-CvUv7DUb.js → context-C1mxXh80.js} +11 -7
- package/dist/context-C1mxXh80.js.map +1 -0
- package/dist/{db-DFbtGIYy.js → db-CdHizc4_.js} +582 -53
- package/dist/db-CdHizc4_.js.map +1 -0
- package/dist/db-Dm1cRJJP.js +2 -0
- package/dist/debug-D7bEv_UV.js +1 -0
- package/dist/{dist-CTzThfu_.js → dist-B8hJImYt.js} +17 -4
- package/dist/dist-B8hJImYt.js.map +1 -0
- package/dist/{docker-2qns7hJ2.js → docker-7b_2SaH7.js} +35 -22
- package/dist/docker-7b_2SaH7.js.map +1 -0
- package/dist/{docker-IFRW8K5f.js → docker-sZrNrr82.js} +3 -3
- package/dist/docker-sZrNrr82.js.map +1 -0
- package/dist/docker-yauK-9X8.js +1 -0
- package/dist/{doctor-B6oYTPoR.js → doctor-BYNok4UO.js} +263 -84
- package/dist/doctor-BYNok4UO.js.map +1 -0
- package/dist/{duration-JsJrIWXq.js → duration-CEOQww97.js} +2 -2
- package/dist/{duration-JsJrIWXq.js.map → duration-CEOQww97.js.map} +1 -1
- package/dist/{egress-IUKdeayc.js → egress-C4PZTSSe.js} +147 -14
- package/dist/egress-C4PZTSSe.js.map +1 -0
- package/dist/environment-DNjRk0nU.js +1133 -0
- package/dist/environment-DNjRk0nU.js.map +1 -0
- package/dist/{errors-yDAEwmZo.js → errors-B6BSMs03.js} +2 -2
- package/dist/errors-B6BSMs03.js.map +1 -0
- package/dist/{errors-C9w_ud7g.js → errors-r025B0Zb.js} +4 -4
- package/dist/errors-r025B0Zb.js.map +1 -0
- package/dist/evaluate-C1UVL21l.d.ts +92 -0
- package/dist/evaluate-D4zeRGBF.js +2351 -0
- package/dist/evaluate-D4zeRGBF.js.map +1 -0
- package/dist/family-D2b7WD10.js +67 -0
- package/dist/family-D2b7WD10.js.map +1 -0
- package/dist/files-BAt0i00X.js +1 -0
- package/dist/{files-CMSUXAEg.js → files-BXUdY8tr.js} +10 -9
- package/dist/{files-CMSUXAEg.js.map → files-BXUdY8tr.js.map} +1 -1
- package/dist/files-BhyltlDB.js +1 -0
- package/dist/files-Bk1mC3AN.js +43 -0
- package/dist/files-Bk1mC3AN.js.map +1 -0
- package/dist/{files-B6aVVGrk.js → files-DQmHE7pb.js} +5 -5
- package/dist/{files-B6aVVGrk.js.map → files-DQmHE7pb.js.map} +1 -1
- package/dist/files-ZZPqfAo6.js +1 -0
- package/dist/{git-EmdFJ4DY.js → git-DfG-YJ1u.js} +2 -2
- package/dist/{git-EmdFJ4DY.js.map → git-DfG-YJ1u.js.map} +1 -1
- package/dist/harness-B8QC9u0O.js +323 -0
- package/dist/harness-B8QC9u0O.js.map +1 -0
- package/dist/harness.d.ts +19 -31
- package/dist/harness.js +1 -2
- package/dist/{header-_F0EWob3.js → header-hK-Z_Po9.js} +10 -3
- package/dist/{header-_F0EWob3.js.map → header-hK-Z_Po9.js.map} +1 -1
- package/dist/{images-CscddrJU.js → images-0On0cztu.js} +114 -45
- package/dist/images-0On0cztu.js.map +1 -0
- package/dist/index.d.ts +10 -26
- package/dist/index.js +6 -2108
- package/dist/{init-NQfIvi-0.js → init-B77Rpcqc.js} +26 -8
- package/dist/init-B77Rpcqc.js.map +1 -0
- package/dist/init-BrOWin3W.js +1 -0
- package/dist/{invocations-nPvrlZPj.js → invocations-DbGfBAA_.js} +4 -4
- package/dist/{invocations-nPvrlZPj.js.map → invocations-DbGfBAA_.js.map} +1 -1
- package/dist/{judge-CeYPN8P_.js → judge-DW_GDOmB.js} +11 -19
- package/dist/{judge-CeYPN8P_.js.map → judge-DW_GDOmB.js.map} +1 -1
- package/dist/judge.d.ts +2 -2
- package/dist/judge.js +1 -1
- package/dist/{live-S0qODb6o.js → live-jlfszAbb.js} +9 -20
- package/dist/live-jlfszAbb.js.map +1 -0
- package/dist/matchers-Ddmc2z7H.js +118 -0
- package/dist/matchers-Ddmc2z7H.js.map +1 -0
- package/dist/{model-DEQo3FkZ.js → model-DaVCY3rb.js} +2 -2
- package/dist/{model-DEQo3FkZ.js.map → model-DaVCY3rb.js.map} +1 -1
- package/dist/model-NM3ID0uR.js +1 -0
- package/dist/{model-Cl507trk.js → model-h_cDtcRr.js} +19 -18
- package/dist/model-h_cDtcRr.js.map +1 -0
- package/dist/model-nwWJvaUR.js +1 -0
- package/dist/{model-BndnmcLm.js → model-oqcDplJG.js} +271 -34
- package/dist/model-oqcDplJG.js.map +1 -0
- package/dist/{node-Co7EXge0.js → node-B3ydHo6t.js} +10 -47
- package/dist/node-B3ydHo6t.js.map +1 -0
- package/dist/object-CLf2-tNq.js +9 -0
- package/dist/object-CLf2-tNq.js.map +1 -0
- package/dist/{opencode-providers-ByD85Q0l.js → opencode-providers-J9colP0-.js} +96 -21
- package/dist/opencode-providers-J9colP0-.js.map +1 -0
- package/dist/options-Bh2W63dK.js +1119 -0
- package/dist/options-Bh2W63dK.js.map +1 -0
- package/dist/{pairs-DDsjgm5F.js → pairs-CnInRu-G.js} +76 -2
- package/dist/{pairs-DDsjgm5F.js.map → pairs-CnInRu-G.js.map} +1 -1
- package/dist/{patch-CGCVipPu.js → patch-Zac5aIRM.js} +6 -6
- package/dist/{patch-CGCVipPu.js.map → patch-Zac5aIRM.js.map} +1 -1
- package/dist/{plan-PPc4-6xd.js → plan-C9Cy27Ay.js} +75 -32
- package/dist/plan-C9Cy27Ay.js.map +1 -0
- package/dist/preflight-CPWpQeBI.js +1 -0
- package/dist/{preflight-CddycK92.js → preflight-D7iFPKeK.js} +8 -7
- package/dist/preflight-D7iFPKeK.js.map +1 -0
- package/dist/prepare-BGjePFQl.js +2 -0
- package/dist/{prepare-CsP-057p.js → prepare-doGxaAGR.js} +38 -30
- package/dist/prepare-doGxaAGR.js.map +1 -0
- package/dist/process-CSVO_jsc.js +119 -0
- package/dist/process-CSVO_jsc.js.map +1 -0
- package/dist/{provenance-CsX6PHDR.js → provenance-DmE9uPVt.js} +4 -4
- package/dist/{provenance-CsX6PHDR.js.map → provenance-DmE9uPVt.js.map} +1 -1
- package/dist/provider-DehR4CMN.js +1 -0
- package/dist/providers-gDMko8fl.js +1 -0
- package/dist/providers-tAOD1NQN.js +165 -0
- package/dist/providers-tAOD1NQN.js.map +1 -0
- package/dist/{query-BUcwCYsI.js → query-Bes9Kh6Y.js} +3 -3
- package/dist/{query-BUcwCYsI.js.map → query-Bes9Kh6Y.js.map} +1 -1
- package/dist/query-C_G_svLU.js +1 -0
- package/dist/questions-DjAwMxZ3.js +524 -0
- package/dist/questions-DjAwMxZ3.js.map +1 -0
- package/dist/{record-BRP9vZrj.js → record-BKmMvZ6O.js} +9 -1
- package/dist/{record-BRP9vZrj.js.map → record-BKmMvZ6O.js.map} +1 -1
- package/dist/remote-HDRt16ew.js +378 -0
- package/dist/remote-HDRt16ew.js.map +1 -0
- package/dist/{results-BcSHWbgB.js → results-DuauQI3Z.js} +4 -4
- package/dist/{results-BcSHWbgB.js.map → results-DuauQI3Z.js.map} +1 -1
- package/dist/{resume-DZ9AmfPv.js → resume-BRfa8E_s.js} +10 -10
- package/dist/{resume-DZ9AmfPv.js.map → resume-BRfa8E_s.js.map} +1 -1
- package/dist/{root-CvdRlRZX.js → root-DICDHCtp.js} +4 -4
- package/dist/{root-CvdRlRZX.js.map → root-DICDHCtp.js.map} +1 -1
- package/dist/{runtime-Dfb2r-cS.js → runtime-PX_oXiCS.js} +105 -11
- package/dist/runtime-PX_oXiCS.js.map +1 -0
- package/dist/sandbox-D3A8oUb7.js +70 -0
- package/dist/sandbox-D3A8oUb7.js.map +1 -0
- package/dist/sandbox.d.ts +22 -8
- package/dist/sandbox.js +1 -2
- package/dist/server-C7sg1ndo.js +1 -0
- package/dist/{server-Da60oe4b.js → server-XDleKaF_.js} +11 -11
- package/dist/server-XDleKaF_.js.map +1 -0
- package/dist/shared-DYpIb1BI.js +166 -0
- package/dist/shared-DYpIb1BI.js.map +1 -0
- package/dist/{source-BVOnL3sn.js → source-C8xumIWj.js} +2 -2
- package/dist/{source-BVOnL3sn.js.map → source-C8xumIWj.js.map} +1 -1
- package/dist/source-fGd0SaKP.js +1 -0
- package/dist/{src-TdJuDYqB.js → src-B7treWa8.js} +1597 -292
- package/dist/src-B7treWa8.js.map +1 -0
- package/dist/{src-C1E9HDWO.js → src-C7_1SqDP.js} +3 -3
- package/dist/{src-C1E9HDWO.js.map → src-C7_1SqDP.js.map} +1 -1
- package/dist/{src-DDNXsD9H.js → src-CF17Ug08.js} +5 -4
- package/dist/src-CF17Ug08.js.map +1 -0
- package/dist/{src-D_cXqmnI.js → src-CFp86GtV.js} +60 -60
- package/dist/src-CFp86GtV.js.map +1 -0
- package/dist/src-C_lPtowT.js +2 -0
- package/dist/src-DIL0jST0.js +368 -0
- package/dist/src-DIL0jST0.js.map +1 -0
- package/dist/src-DNnG4e4R.js +2 -0
- package/dist/src-DTbrY1hi.js +2 -0
- package/dist/src-DdyJEh2v.js +2 -0
- package/dist/src-Dj9PAroc.js +2 -0
- package/dist/src-Du8H85Qq.js +2 -0
- package/dist/src-DvCg0NBs.js +324 -0
- package/dist/src-DvCg0NBs.js.map +1 -0
- package/dist/{src-CxTC5kNI.js → src-DvK0EIZx.js} +8 -10
- package/dist/{src-CxTC5kNI.js.map → src-DvK0EIZx.js.map} +1 -1
- package/dist/{src-DVy58-zZ.js → src-FGXhkEkH.js} +5 -5
- package/dist/{src-DVy58-zZ.js.map → src-FGXhkEkH.js.map} +1 -1
- package/dist/src-jzagbuqH.js +2 -0
- package/dist/src-ofUaYbuY.js +3 -0
- package/dist/src-pJZOrYR9.js +1 -0
- package/dist/{src-D95O-Smv.js → src-u8_ixn_F.js} +15 -11
- package/dist/src-u8_ixn_F.js.map +1 -0
- package/dist/{state-B72h_jEw.js → state-C__9swoG.js} +36 -24
- package/dist/state-C__9swoG.js.map +1 -0
- package/dist/state-CeR6oz0k.js +66 -0
- package/dist/state-CeR6oz0k.js.map +1 -0
- package/dist/state-CgjQo29K.js +1 -0
- package/dist/studio-app/assets/index-CwQN3f_h.css +2 -0
- package/dist/studio-app/assets/{index-Bgr-efZm.js → index-DrQc2Yxd.js} +12 -12
- package/dist/studio-app/index.html +2 -2
- package/dist/{summary-k3mhWWXv.js → summary-BLAVLySU.js} +202 -17
- package/dist/summary-BLAVLySU.js.map +1 -0
- package/dist/{summary-CJdxaRdM.js → summary-DgyjUh_l.js} +7 -7
- package/dist/{summary-CJdxaRdM.js.map → summary-DgyjUh_l.js.map} +1 -1
- package/dist/testing.d.ts +3 -2
- package/dist/testing.js +3 -2
- package/dist/{tool-target-BU1JnSE9.js → tool-target-D2mcYlSQ.js} +14 -7
- package/dist/tool-target-D2mcYlSQ.js.map +1 -0
- package/dist/{tools-D0gF2QoV.js → tools-GCyNYSc1.js} +7 -7
- package/dist/tools-GCyNYSc1.js.map +1 -0
- package/dist/transcript-BNNANU8A.js +64 -0
- package/dist/transcript-BNNANU8A.js.map +1 -0
- package/dist/types-C5vI3g1C.js.map +1 -1
- package/dist/{types-_LOFdPUf.d.ts → types-g17bRAzt.d.ts} +578 -49
- package/dist/{usage-DDF_6tkV.js → usage-CleNKkly.js} +4 -2
- package/dist/{usage-DDF_6tkV.js.map → usage-CleNKkly.js.map} +1 -1
- package/dist/view/index.d.ts +83 -17
- package/dist/view/index.js +7 -6
- package/dist/views-BW6oCDUQ.js +2 -0
- package/dist/{views-DZ1YDqey.js → views-BmQF4UCI.js} +13 -8
- package/dist/views-BmQF4UCI.js.map +1 -0
- package/dist/{worker-entry-DXeyWY-m.js → worker-entry-yOchGYYv.js} +16 -225
- package/dist/worker-entry-yOchGYYv.js.map +1 -0
- package/dist/{workspace-DpXdrslo.js → workspace-CgyHEM0l.js} +7 -7
- package/dist/{workspace-DpXdrslo.js.map → workspace-CgyHEM0l.js.map} +1 -1
- package/dist/workspace-D8sSgpiy.js +1 -0
- package/docker/Dockerfile +7 -5
- package/package.json +12 -12
- package/dist/agent-Cfj1wD4D.js.map +0 -1
- package/dist/assemble-BbFVjHeS.js.map +0 -1
- package/dist/assemble-CXiTVyHD.js +0 -2
- package/dist/capture-BXhBfmsM.js.map +0 -1
- package/dist/capture-N7r3yeak.js +0 -2
- package/dist/cli-BMjTKY-D.js.map +0 -1
- package/dist/cli-spec-DSvKsOK4.js.map +0 -1
- package/dist/client-CwzU9CiW.js.map +0 -1
- package/dist/command-BK4kOgkH.js.map +0 -1
- package/dist/command-BqJtFiPy.js.map +0 -1
- package/dist/command-CTVGuH8y.js +0 -2
- package/dist/command-JPGNzFsA.js.map +0 -1
- package/dist/commands-B618jg3C.js.map +0 -1
- package/dist/commands-Duo2ur3r.js +0 -2
- package/dist/config-B-E0xRkf.js +0 -447
- package/dist/config-B-E0xRkf.js.map +0 -1
- package/dist/context-CvUv7DUb.js.map +0 -1
- package/dist/db-CnoUy-FZ.js +0 -3
- package/dist/db-DFbtGIYy.js.map +0 -1
- package/dist/debug-SEmW4w8f.js +0 -2
- package/dist/dist-CTzThfu_.js.map +0 -1
- package/dist/docker-2qns7hJ2.js.map +0 -1
- package/dist/docker-D6t23fZl.js +0 -2
- package/dist/docker-IFRW8K5f.js.map +0 -1
- package/dist/doctor-B6oYTPoR.js.map +0 -1
- package/dist/egress-IUKdeayc.js.map +0 -1
- package/dist/environment-DiCljXMD.js +0 -657
- package/dist/environment-DiCljXMD.js.map +0 -1
- package/dist/errors-C9w_ud7g.js.map +0 -1
- package/dist/errors-yDAEwmZo.js.map +0 -1
- package/dist/fake-instructions-CUI33I_F.js +0 -32
- package/dist/fake-instructions-CUI33I_F.js.map +0 -1
- package/dist/files-BM78_nnF.js +0 -2
- package/dist/files-BpYgF2z0.js +0 -2
- package/dist/files-YCCVaTQC.js +0 -2
- package/dist/harness-iqWeJQMM.js +0 -154
- package/dist/harness-iqWeJQMM.js.map +0 -1
- package/dist/images-CscddrJU.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init-DBHyi92L.js +0 -2
- package/dist/init-NQfIvi-0.js.map +0 -1
- package/dist/jiti-BcJHCtrb.js +0 -46
- package/dist/jiti-BcJHCtrb.js.map +0 -1
- package/dist/live-S0qODb6o.js.map +0 -1
- package/dist/model-BbLGRtOs.js +0 -2
- package/dist/model-BndnmcLm.js.map +0 -1
- package/dist/model-Cl507trk.js.map +0 -1
- package/dist/model-DMOraCcm.js +0 -2
- package/dist/node-Co7EXge0.js.map +0 -1
- package/dist/opencode-providers-ByD85Q0l.js.map +0 -1
- package/dist/options-DPUlm4FI.js +0 -735
- package/dist/options-DPUlm4FI.js.map +0 -1
- package/dist/plan-PPc4-6xd.js.map +0 -1
- package/dist/preflight-CddycK92.js.map +0 -1
- package/dist/preflight-Zumy0adT.js +0 -2
- package/dist/prepare-CKdMoC7e.js +0 -3
- package/dist/prepare-CsP-057p.js.map +0 -1
- package/dist/provider-BDbNOQhQ.js +0 -2
- package/dist/providers-DkwiLKDS.js +0 -107
- package/dist/providers-DkwiLKDS.js.map +0 -1
- package/dist/providers-yXZZcPfx.js +0 -2
- package/dist/query-noGbekGF.js +0 -2
- package/dist/questions-BEPj98fZ.js +0 -234
- package/dist/questions-BEPj98fZ.js.map +0 -1
- package/dist/runtime-Dfb2r-cS.js.map +0 -1
- package/dist/sandbox--ZXuscAZ.js +0 -134
- package/dist/sandbox--ZXuscAZ.js.map +0 -1
- package/dist/server-Da60oe4b.js.map +0 -1
- package/dist/server-DiGR4JxK.js +0 -2
- package/dist/source-Dqu0jKwx.js +0 -2
- package/dist/src-BHNiP-5A.js +0 -4
- package/dist/src-BT4dB5CO.js +0 -2
- package/dist/src-BT5pwco0.js +0 -3
- package/dist/src-BrMbt1B2.js +0 -3
- package/dist/src-D13vpMh0.js +0 -3
- package/dist/src-D95O-Smv.js.map +0 -1
- package/dist/src-DDNXsD9H.js.map +0 -1
- package/dist/src-D_cXqmnI.js.map +0 -1
- package/dist/src-DdRlaiRc.js +0 -3
- package/dist/src-TdJuDYqB.js.map +0 -1
- package/dist/src-xczuQbE6.js +0 -3
- package/dist/state-B72h_jEw.js.map +0 -1
- package/dist/state-Bf_Vq_pV.js +0 -2
- package/dist/studio-app/assets/index-CUx6GoL5.css +0 -2
- package/dist/summary-k3mhWWXv.js.map +0 -1
- package/dist/tool-target-BU1JnSE9.js.map +0 -1
- package/dist/tools-D0gF2QoV.js.map +0 -1
- package/dist/views-DZ1YDqey.js.map +0 -1
- package/dist/views-Ds0GXWtX.js +0 -3
- package/dist/worker-entry-DXeyWY-m.js.map +0 -1
- package/dist/workspace-DzNL-3iO.js +0 -2
|
@@ -20,7 +20,9 @@ const sumUsage = (usages) => {
|
|
|
20
20
|
const promptTokens = (u) => u.input + u.cacheRead + u.cacheWrite;
|
|
21
21
|
/** Prompt side, output, and reasoning when the harness reported it. No USD. */
|
|
22
22
|
const totalTokens = (u) => promptTokens(u) + u.output + (u.reasoning ?? 0);
|
|
23
|
+
/** A token count as people read it: `9,512`, `430k`, `1,094k`. */
|
|
24
|
+
const formatTokens = (n) => n >= 1e4 ? `${Math.round(n / 1e3).toLocaleString("en-US")}k` : Math.round(n).toLocaleString("en-US");
|
|
23
25
|
//#endregion
|
|
24
|
-
export { totalTokens as i,
|
|
26
|
+
export { totalTokens as a, sumUsage as i, formatTokens as n, promptTokens as r, addUsage as t };
|
|
25
27
|
|
|
26
|
-
//# sourceMappingURL=usage-
|
|
28
|
+
//# sourceMappingURL=usage-CleNKkly.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-
|
|
1
|
+
{"version":3,"file":"usage-CleNKkly.js","names":[],"sources":["../src/usage.ts"],"mappings":";;AAGA,SAAgB,SAAS,GAAsB,GAAyC;CACtF,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,KAAK;CAC1B,OAAO;EACL,OAAO,EAAE,QAAQ,EAAE;EACnB,QAAQ,EAAE,SAAS,EAAE;EACrB,WAAW,EAAE,YAAY,EAAE;EAC3B,YAAY,EAAE,aAAa,EAAE;EAC7B,WACE,EAAE,cAAc,QAAQ,EAAE,cAAc,OAAO,QAAQ,EAAE,aAAa,MAAM,EAAE,aAAa;CAC/F;AACF;;AAGA,MAAa,YAAY,WAAuE;CAC9F,IAAI,QAA2B;CAC/B,KAAK,MAAM,KAAK,QAAQ,QAAQ,SAAS,OAAO,KAAK,IAAI;CACzD,OAAO;AACT;;AAGA,MAAa,gBAAgB,MAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE;;AAGzE,MAAa,eAAe,MAAkB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa;;AAG3F,MAAa,gBAAgB,MAC3B,KAAK,MACD,GAAG,KAAK,MAAM,IAAI,GAAI,CAAC,CAAC,eAAe,OAAO,EAAE,KAChD,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,OAAO"}
|
package/dist/view/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { $t as
|
|
1
|
+
import { $t as RunRecord, Cn as formatCount, En as tokenValues, Et as SandboxWarning, Gt as FamilyLift, Ht as AttemptRecord, It as TurnStatus, Jt as FileRef, Kt as FamilyRate, Mt as TokenUsage, Nt as TranscriptEvent, Qt as Lift, Sn as effortVerdict, Tn as formatSeconds, Ut as CellRecord, Vt as ArtifactRef, Wt as EvalEntry, Xt as HistoryEntry, Yt as HistoryCell, Zt as JudgementRecord, _n as effortChangeLabel, an as EffortContrast, bn as effortSample, cn as EffortVerdict, dn as VERDICT_TEXT, en as StackSummary, fn as cellContrast, gn as directional, gt as Outcome, hn as contrastEffort, in as EFFORT_MIN_RUNS, ln as Spread, mn as cellSamples, nn as DIRECTIONAL_MIN, on as EffortMetric, pn as cellEffort, qt as FamilyRecord, rn as EFFORT_ALPHA, sn as EffortSample, tn as CellEffort, un as TOKENS_UNREPORTED, vn as effortLabel, wn as formatRatio, xn as effortSummary, yn as effortOf } from "../types-g17bRAzt.js";
|
|
2
2
|
//#region src/view/analysis.d.ts
|
|
3
3
|
/** Bumped when the system prompt or output schema changes: an older analysis is superseded. */
|
|
4
|
-
export declare const ANALYSIS_PROMPT_VERSION = "analysis-
|
|
4
|
+
export declare const ANALYSIS_PROMPT_VERSION = "analysis-v10";
|
|
5
5
|
/** Bumped when the digest's shape or selection rules change. */
|
|
6
|
-
export declare const DIGEST_VERSION =
|
|
6
|
+
export declare const DIGEST_VERSION = 10;
|
|
7
7
|
export type Confidence = 'high' | 'medium' | 'low';
|
|
8
8
|
export type AnalysisClaim = {
|
|
9
9
|
text: string;
|
|
@@ -15,7 +15,7 @@ export type AnalysisClaim = {
|
|
|
15
15
|
/** Numbers in the text that no cited fact or evidence contains. */
|
|
16
16
|
unverifiedNumbers?: string[];
|
|
17
17
|
};
|
|
18
|
-
export type AnomalyKind = '
|
|
18
|
+
export type AnomalyKind = 'reeval-bug' | 'eval-design' | 'judge' | 'noise' | 'other';
|
|
19
19
|
export type AnalysisAnomaly = {
|
|
20
20
|
text: string;
|
|
21
21
|
kind: AnomalyKind;
|
|
@@ -23,7 +23,7 @@ export type AnalysisAnomaly = {
|
|
|
23
23
|
/** Numbers in the text that no cited fact or evidence contains. */
|
|
24
24
|
unverifiedNumbers?: string[];
|
|
25
25
|
};
|
|
26
|
-
export type ActionKind = 'skill' | 'docs' | 'eval' | 'judge' | '
|
|
26
|
+
export type ActionKind = 'skill' | 'docs' | 'eval' | 'judge' | 'reeval' | 'harness';
|
|
27
27
|
export type Level = 'high' | 'medium' | 'low';
|
|
28
28
|
export type AnalysisAction = {
|
|
29
29
|
title: string;
|
|
@@ -70,7 +70,7 @@ export type AnalysisScope = {
|
|
|
70
70
|
evals: string | null;
|
|
71
71
|
};
|
|
72
72
|
export type AnalysisDoc = {
|
|
73
|
-
kind: '
|
|
73
|
+
kind: 'reeval-analysis';
|
|
74
74
|
schemaVersion: 1;
|
|
75
75
|
scope: AnalysisScope;
|
|
76
76
|
/** The run the analysis belongs to: the scope's head. */
|
|
@@ -298,6 +298,29 @@ export declare function formatBytes(n: number): string;
|
|
|
298
298
|
*/
|
|
299
299
|
export declare function requestLine(r: Omit<DebugRequest, 'at'>): string;
|
|
300
300
|
//#endregion
|
|
301
|
+
//#region src/view/family.d.ts
|
|
302
|
+
/** `pass@1 2/3 · 67% (95% 21…94)`, or `pass@1 67% over 3 cases (95% 30…100)` at several runs. */
|
|
303
|
+
export declare function familyRateLabel(rate: FamilyRate): string;
|
|
304
|
+
/**
|
|
305
|
+
* `pass@1 88% vs 20% lift +68 pts (95% +40…+82, paired, 18 vs 1 discordant, p <0.001)`. At
|
|
306
|
+
* one attempt a case, the counts are the discordant pairs; at several, the paired cases.
|
|
307
|
+
*/
|
|
308
|
+
export declare function familyLiftLabel(lift: FamilyLift): string;
|
|
309
|
+
/**
|
|
310
|
+
* `tools ×0.41 per case (fewer, signed-rank p 0.002) · agent time ×0.80 per case (noise, …)`;
|
|
311
|
+
* a metric whose control median is 0 has no ratio and is left out.
|
|
312
|
+
*/
|
|
313
|
+
export declare function familyEffortLabel(lift: FamilyLift): string | null;
|
|
314
|
+
/** `25 cases · paired` with a compare, and `3 of 25 cases` when a filter left some out. */
|
|
315
|
+
export declare function familyHeadLabel(family: FamilyRecord): string;
|
|
316
|
+
/**
|
|
317
|
+
* A case's short label: its name less the template's literal text before the first placeholder
|
|
318
|
+
* and after the last, so `fixes $id` labels `fixes GH-101` as `GH-101`.
|
|
319
|
+
*/
|
|
320
|
+
export declare function caseLabel(template: string, name: string): string;
|
|
321
|
+
/** The family's cases in list order. */
|
|
322
|
+
export declare const familyCases: (family: Pick<FamilyRecord, 'id'>, evals: readonly EvalEntry[]) => EvalEntry[];
|
|
323
|
+
//#endregion
|
|
301
324
|
//#region src/view/header.d.ts
|
|
302
325
|
/** The derived header of one run: what listings, indexes and comparisons need without the record. */
|
|
303
326
|
export declare function runHeader(record: RunRecord, recorded: boolean): HistoryEntry;
|
|
@@ -321,7 +344,10 @@ export declare function uniqueJudgeLabels(items: readonly {
|
|
|
321
344
|
}[]): Map<string, string>;
|
|
322
345
|
export type JudgeKeyRate = {
|
|
323
346
|
key: string;
|
|
347
|
+
/** The `expect` label when the judge had one, else a short name from its question. */
|
|
324
348
|
label: string;
|
|
349
|
+
/** Named by an `expect` label, so the cell's checks carry it too. */
|
|
350
|
+
labelled: boolean;
|
|
325
351
|
question: string;
|
|
326
352
|
pass: number;
|
|
327
353
|
counted: number;
|
|
@@ -330,6 +356,11 @@ export type JudgeKeyRate = {
|
|
|
330
356
|
};
|
|
331
357
|
/** Per-key pass/counted for one cell's counted attempts, with lift on a variant when both sides qualify. */
|
|
332
358
|
export declare function cellJudgeRates(e: Pick<EvalEntry, 'attempts' | 'cells'>, cellKey: string): JudgeKeyRate[];
|
|
359
|
+
/**
|
|
360
|
+
* The judge rates a cell's summary line adds to its checks: a labelled judge whose label is one
|
|
361
|
+
* of the cell's checks against its control is already there.
|
|
362
|
+
*/
|
|
363
|
+
export declare function summaryJudgeRates(e: Pick<EvalEntry, 'attempts' | 'cells'>, cell: Pick<CellRecord, 'key' | 'checks'>): JudgeKeyRate[];
|
|
333
364
|
/** `login 4/5 · checkout 0/5`, with `(+80 pts)` on a key that has lift. */
|
|
334
365
|
export declare function judgeRatesLabel(rates: readonly JudgeKeyRate[]): string;
|
|
335
366
|
export type CollapsedJudge = {
|
|
@@ -346,8 +377,27 @@ export declare function collapsedJudges(judgements: readonly JudgementRecord[]):
|
|
|
346
377
|
};
|
|
347
378
|
/** `fail 0.78/0.80`, or `fail 0.33/0.80 · 3 judges` when there are many. */
|
|
348
379
|
export declare function collapsedJudgeLabel(judgements: readonly JudgementRecord[]): string | null;
|
|
380
|
+
/**
|
|
381
|
+
* Each judgement's `expect` label, by position: the attempt's `toPass` assertions (less those on a
|
|
382
|
+
* failed judge call, which recorded no judgement) in call order, when they are exactly as many as
|
|
383
|
+
* its judgements. `check` is that assertion's label, the key of its check; a judgement no label
|
|
384
|
+
* reaches is named by its question.
|
|
385
|
+
*/
|
|
386
|
+
export declare function labelledJudgements(a: Pick<AttemptRecord, 'judgements' | 'assertions'>): Array<{
|
|
387
|
+
judgement: JudgementRecord;
|
|
388
|
+
label: string;
|
|
389
|
+
labelled: boolean;
|
|
390
|
+
check?: string;
|
|
391
|
+
}>;
|
|
349
392
|
/** Sum of counted attempts' usage; null when none of them reported any. */
|
|
350
393
|
export declare function cellUsage(e: Pick<EvalEntry, 'attempts'>, cellKey: string): TokenUsage | null;
|
|
394
|
+
/**
|
|
395
|
+
* Each `c.exec` check's `expect` label, by position: the attempt's `toSucceed` assertions in call
|
|
396
|
+
* order, when they are exactly as many as its checks; undefined where no label reaches.
|
|
397
|
+
*/
|
|
398
|
+
export declare function checkLabels(a: Pick<AttemptRecord, 'checks' | 'assertions'>): Array<string | undefined>;
|
|
399
|
+
/** A check's command on one line: the first non-empty line, clipped; its log has the rest. */
|
|
400
|
+
export declare function commandLine(command: string, max?: number): string;
|
|
351
401
|
//#endregion
|
|
352
402
|
//#region src/view/live.d.ts
|
|
353
403
|
/** The progress file's name inside the run's staging directory. */
|
|
@@ -436,7 +486,7 @@ export type IndexManifest = {
|
|
|
436
486
|
};
|
|
437
487
|
export type StudioInfo = {
|
|
438
488
|
mode: 'live' | 'static';
|
|
439
|
-
|
|
489
|
+
reeval: string;
|
|
440
490
|
project: string;
|
|
441
491
|
generatedAt: string;
|
|
442
492
|
/** `debug`: local debug data (`.reeval/debug`) can be read; never in a static build. */
|
|
@@ -463,7 +513,7 @@ export declare function formatDuration(ms: number | null | undefined): string;
|
|
|
463
513
|
export declare const formatPercent: (rate: number | null) => string;
|
|
464
514
|
/**
|
|
465
515
|
* A harness of the run's stack as `cursor (model composer-2.5, served composer-2.5[fast=true])`:
|
|
466
|
-
* the configured model, then
|
|
516
|
+
* the configured model and reasoning effort, then what the harness says it resolved.
|
|
467
517
|
*/
|
|
468
518
|
export declare function harnessLabel(h: RunRecord['stack']['harnesses'][number]): string;
|
|
469
519
|
/**
|
|
@@ -490,6 +540,9 @@ export declare function runOutcome(run: {
|
|
|
490
540
|
evals: ReadonlyArray<{
|
|
491
541
|
outcome: Outcome;
|
|
492
542
|
}>;
|
|
543
|
+
families?: ReadonlyArray<{
|
|
544
|
+
outcome: 'pass' | 'fail';
|
|
545
|
+
}>;
|
|
493
546
|
}): Outcome;
|
|
494
547
|
/** Distinct judge labels that failed on a counted attempt, in first-seen order. */
|
|
495
548
|
export declare function failedJudgeLabels(record: Pick<RunRecord, 'evals'>): string[];
|
|
@@ -503,6 +556,8 @@ export type RunRow = {
|
|
|
503
556
|
passed: number;
|
|
504
557
|
/** Attempts that reached a verdict or errored; skips excluded. */
|
|
505
558
|
total: number;
|
|
559
|
+
/** Passes and fails, the denominator of the run's pass@1. */
|
|
560
|
+
counted: number;
|
|
506
561
|
/** Stack changes in the cells it shares with earlier runs, and in the judge since the previous complete run. */
|
|
507
562
|
drift: StackChange[];
|
|
508
563
|
/** Evals with a cell whose fingerprint changed since the last run that had that cell. */
|
|
@@ -547,12 +602,15 @@ export type CellRow = {
|
|
|
547
602
|
gated: boolean;
|
|
548
603
|
gate: CellRecord['gate'];
|
|
549
604
|
overrides: string[];
|
|
605
|
+
/** The reasoning effort the harness factory asked for; null when it left it unset. */
|
|
606
|
+
reasoningEffort: string | null;
|
|
550
607
|
runs: number;
|
|
551
608
|
pass: number;
|
|
552
609
|
fail: number;
|
|
553
610
|
infraError: number;
|
|
554
611
|
skipped: number;
|
|
555
|
-
|
|
612
|
+
/** pass@1: passes over passes and fails. */
|
|
613
|
+
passAt1: number | null;
|
|
556
614
|
outcome: Outcome;
|
|
557
615
|
/** A variant's lift over its control, in whole points (from the record), else null. */
|
|
558
616
|
lift: number | null;
|
|
@@ -598,6 +656,8 @@ export type AnswerRow = {
|
|
|
598
656
|
noPairs: boolean;
|
|
599
657
|
/** Distinct vote reasons, in vote order, at most three. */
|
|
600
658
|
reasons: string[];
|
|
659
|
+
/** `questions/<n>.json` under the run's directory: what the model was sent; null when not kept. */
|
|
660
|
+
input: string | null;
|
|
601
661
|
};
|
|
602
662
|
/** One row per compare question, with each cut's win rates in the record's order. */
|
|
603
663
|
export declare function answerRows(e: Pick<EvalEntry, 'answers'>): AnswerRow[];
|
|
@@ -606,7 +666,8 @@ export declare const isMatrix: (e: Pick<EvalEntry, 'cells'>) => boolean;
|
|
|
606
666
|
export type EvalHistoryPoint = {
|
|
607
667
|
run: HistoryEntry;
|
|
608
668
|
outcome: Outcome;
|
|
609
|
-
|
|
669
|
+
/** pass@1 over the gated cells' attempts. */
|
|
670
|
+
passAt1: number | null;
|
|
610
671
|
cells: HistoryCell[];
|
|
611
672
|
/** A cell's fingerprint differs from the last run that had that cell. */
|
|
612
673
|
changed: boolean;
|
|
@@ -619,9 +680,9 @@ export type CompareViewRow = {
|
|
|
619
680
|
status: CompareStatus;
|
|
620
681
|
base: Outcome | null;
|
|
621
682
|
head: Outcome | null;
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
/** See `CompareRow`: then
|
|
683
|
+
basePassAt1: number | null;
|
|
684
|
+
headPassAt1: number | null;
|
|
685
|
+
/** See `CompareRow`: then pass@1 is over the cells both runs have too. */
|
|
625
686
|
cells?: CompareRow['cells'];
|
|
626
687
|
changes?: string[];
|
|
627
688
|
/** Mean judge score per run; null without judgements or without the record. */
|
|
@@ -633,8 +694,8 @@ export type CompareViewRow = {
|
|
|
633
694
|
export declare const COMPARE_ORDER: CompareStatus[];
|
|
634
695
|
/**
|
|
635
696
|
* Whether some of an eval's cells aren't gated (`gate: 'none'`, e.g. controls under
|
|
636
|
-
* `compare.gate: 'variants'`). Its pass
|
|
637
|
-
* the eval line labels
|
|
697
|
+
* `compare.gate: 'variants'`). Its pass@1 then covers fewer attempts than its pass count, so
|
|
698
|
+
* the eval line labels it `gated`: `2/4 · pass@1 100% gated`.
|
|
638
699
|
*/
|
|
639
700
|
export declare const hasUngatedCells: (cells: readonly Pick<HistoryCell, 'gate'>[]) => boolean;
|
|
640
701
|
/**
|
|
@@ -644,7 +705,12 @@ export declare const hasUngatedCells: (cells: readonly Pick<HistoryCell, 'gate'>
|
|
|
644
705
|
export declare const isUngatedMiss: (e: {
|
|
645
706
|
cells: readonly Pick<HistoryCell, 'key' | 'gate'>[];
|
|
646
707
|
}, a: Pick<AttemptRecord, 'cell' | 'outcome' | 'error'>) => boolean;
|
|
647
|
-
/**
|
|
708
|
+
/**
|
|
709
|
+
* The outcome an eval's mark shows. A pass needs a counted (passed or failed) attempt and no infra
|
|
710
|
+
* error: a gate that lets those through, such as `gate: 'none'`, still shows `!`, not `✓`.
|
|
711
|
+
*/
|
|
712
|
+
export declare function evalMarkOutcome(e: Pick<EvalEntry, 'outcome' | 'attempts'>): Outcome;
|
|
713
|
+
/** `reeval compare`'s classification, plus pass@1 and judge-score deltas from the records. */
|
|
648
714
|
export declare function compareView(base: HistoryEntry, head: HistoryEntry, records?: {
|
|
649
715
|
base?: RunRecord;
|
|
650
716
|
head?: RunRecord;
|
|
@@ -767,5 +833,5 @@ export declare const readableTranscriptLine: (line: TranscriptLine) => Transcrip
|
|
|
767
833
|
/** An analysis document as every reader sees it; one from a newer reeval throws. */
|
|
768
834
|
export declare const readableAnalysis: (doc: AnalysisDoc, what?: string) => AnalysisDoc;
|
|
769
835
|
//#endregion
|
|
770
|
-
export { type ArtifactRef, type AttemptRecord, CellEffort, type CellRecord, EFFORT_ALPHA, EffortContrast, EffortSample, EffortVerdict, type EvalEntry, type FileRef, type HistoryCell, type HistoryEntry, type JudgementRecord, type Outcome, type RunRecord, type SandboxWarning, Spread, type StackSummary, TOKENS_UNREPORTED, type TranscriptEvent, VERDICT_TEXT, cellContrast, cellEffort, cellSamples, contrastEffort, effortChangeLabel, effortLabel, effortOf, effortSample, effortSummary, effortVerdict, formatCount, formatRatio, formatSeconds, tokenValues };
|
|
836
|
+
export { type ArtifactRef, type AttemptRecord, CellEffort, type CellRecord, DIRECTIONAL_MIN, EFFORT_ALPHA, EFFORT_MIN_RUNS, EffortContrast, EffortMetric, EffortSample, EffortVerdict, type EvalEntry, type FamilyLift, type FamilyRate, type FamilyRecord, type FileRef, type HistoryCell, type HistoryEntry, type JudgementRecord, type Outcome, type RunRecord, type SandboxWarning, Spread, type StackSummary, TOKENS_UNREPORTED, type TranscriptEvent, VERDICT_TEXT, cellContrast, cellEffort, cellSamples, contrastEffort, directional, effortChangeLabel, effortLabel, effortOf, effortSample, effortSummary, effortVerdict, formatCount, formatRatio, formatSeconds, tokenValues };
|
|
771
837
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/view/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { a as parseDataPath, c as shardPath, i as manifestPath, l as studioPath, n as artifactPath, o as recordPath, r as artifactType, s as shardOf, t as RUN_ID } from "../paths-BmR-7tx3.js";
|
|
2
2
|
import { a as debugApiPath, c as formatBytes, d as requestLine, f as traceApiPath, i as TRACE_FILE, l as parseDebugLog, n as DEBUG_PHASES, o as debugLogLine, r as REQUESTS_FILE, s as debugTime, t as DEBUG_LOG, u as parseNdjson } from "../debug-D24NOQH1.js";
|
|
3
|
-
import { a as pinnedAnalysis, i as isSuperseded, n as DIGEST_VERSION, o as sortAnalyses, r as analysisDataPath, t as ANALYSIS_PROMPT_VERSION } from "../analysis-
|
|
4
|
-
import { $ as
|
|
5
|
-
import { t as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
3
|
+
import { a as pinnedAnalysis, i as isSuperseded, n as DIGEST_VERSION, o as sortAnalyses, r as analysisDataPath, t as ANALYSIS_PROMPT_VERSION } from "../analysis-Bxub9LMT.js";
|
|
4
|
+
import { $ as directional, A as splitPatch, B as judgeRatesLabel, C as parseTranscript, D as runtimeLabel, E as runRows, F as checkLabels, G as EFFORT_ALPHA, H as summaryJudgeRates, I as collapsedJudgeLabel, J as VERDICT_TEXT, K as EFFORT_MIN_RUNS, L as collapsedJudges, M as LIFT_MIN_COUNTED, N as cellJudgeRates, O as shortSha, P as cellUsage, Q as contrastEffort, R as commandLine, S as languageLabel, St as whyChanged, T as runOutcome, U as uniqueJudgeLabels, V as labelledJudgements, W as DIRECTIONAL_MIN, X as cellEffort, Y as cellContrast, Z as cellSamples, _ as harnessLabel, a as cellRows, at as effortVerdict, b as isMatrix, bt as sourceChanges, c as evalHistory, ct as formatSeconds, d as failedJudgeLabels, et as effortChangeLabel, f as findAttempt, g as formatUsage, h as formatPercent, i as buildIndex, it as effortSummary, j as transcriptItems, k as splitEvalId, l as evalMarkOutcome, lt as tokenValues, m as formatDuration, n as activityLabel, nt as effortOf, o as compareView, ot as formatCount, p as findEval, q as TOKENS_UNREPORTED, r as answerRows, rt as effortSample, s as defaultAttempt, st as formatRatio, t as COMPARE_ORDER, tt as effortLabel, u as evalTree, v as hasUngatedCells, vt as cellsChanged, w as runLead, x as isUngatedMiss, xt as stackChanges, y as indexFiles, yt as compare, z as judgeLabel } from "../model-oqcDplJG.js";
|
|
5
|
+
import { a as familyLiftLabel, i as familyHeadLabel, n as familyCases, o as familyRateLabel, r as familyEffortLabel, t as caseLabel } from "../family-D2b7WD10.js";
|
|
6
|
+
import { t as runHeader } from "../header-hK-Z_Po9.js";
|
|
7
|
+
import { c as readableTranscriptLine, r as readableAnalysis, s as readableRecord, t as NewerSchemaError } from "../record-BKmMvZ6O.js";
|
|
8
|
+
import { a as liveApiPath, c as readableLiveProgress, i as isFinished, n as LIVE_FILE, o as liveCounts, r as LIVE_SCHEMA_VERSION, s as liveTranscriptPath, t as FINISHED } from "../live-jlfszAbb.js";
|
|
9
|
+
export { ANALYSIS_PROMPT_VERSION, COMPARE_ORDER, DEBUG_LOG, DEBUG_PHASES, DIGEST_VERSION, DIRECTIONAL_MIN, EFFORT_ALPHA, EFFORT_MIN_RUNS, FINISHED, LIFT_MIN_COUNTED, LIVE_FILE, LIVE_SCHEMA_VERSION, NewerSchemaError, REQUESTS_FILE, RUN_ID, TOKENS_UNREPORTED, TRACE_FILE, VERDICT_TEXT, activityLabel, analysisDataPath, answerRows, artifactPath, artifactType, buildIndex, caseLabel, cellContrast, cellEffort, cellJudgeRates, cellRows, cellSamples, cellUsage, cellsChanged, checkLabels, collapsedJudgeLabel, collapsedJudges, commandLine, compare, compareView, contrastEffort, debugApiPath, debugLogLine, debugTime, defaultAttempt, directional, effortChangeLabel, effortLabel, effortOf, effortSample, effortSummary, effortVerdict, evalHistory, evalMarkOutcome, evalTree, failedJudgeLabels, familyCases, familyEffortLabel, familyHeadLabel, familyLiftLabel, familyRateLabel, findAttempt, findEval, formatBytes, formatCount, formatDuration, formatPercent, formatRatio, formatSeconds, formatUsage, harnessLabel, hasUngatedCells, indexFiles, isFinished, isMatrix, isSuperseded, isUngatedMiss, judgeLabel, judgeRatesLabel, labelledJudgements, languageLabel, liveApiPath, liveCounts, liveTranscriptPath, manifestPath, parseDataPath, parseDebugLog, parseNdjson, parseTranscript, pinnedAnalysis, readableAnalysis, readableLiveProgress, readableRecord, readableTranscriptLine, recordPath, requestLine, runHeader, runLead, runOutcome, runRows, runtimeLabel, shardOf, shardPath, shortSha, sortAnalyses, sourceChanges, splitEvalId, splitPatch, stackChanges, studioPath, summaryJudgeRates, tokenValues, traceApiPath, transcriptItems, uniqueJudgeLabels, whyChanged };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as formatDuration } from "./text-gEcKjAyp.js";
|
|
2
|
-
import {
|
|
3
|
-
import { o as warnings } from "./state-
|
|
4
|
-
import {
|
|
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
5
|
//#region src/history/views.ts
|
|
6
6
|
var RefError = class extends Error {
|
|
7
7
|
name = "RefError";
|
|
@@ -15,20 +15,20 @@ function resolveRun(entries, ref = "latest") {
|
|
|
15
15
|
const back = /^latest(?:~(\d+))?$/.exec(ref);
|
|
16
16
|
if (back) {
|
|
17
17
|
const entry = entries[entries.length - 1 - Number(back[1] ?? 0)];
|
|
18
|
-
if (!entry) throw new RefError(`There are only ${entries.length} runs`);
|
|
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
19
|
return entry;
|
|
20
20
|
}
|
|
21
21
|
const exact = entries.find((e) => e.runId === ref);
|
|
22
22
|
if (exact) return exact;
|
|
23
23
|
const byId = entries.filter((e) => e.runId.startsWith(ref));
|
|
24
24
|
if (byId.length === 1 && byId[0]) return byId[0];
|
|
25
|
-
if (byId.length > 1) throw new RefError(`"${ref}" matches ${byId.length} runs
|
|
25
|
+
if (byId.length > 1) throw new RefError(`"${ref}" matches ${byId.length} runs: use more of the id`);
|
|
26
26
|
if (/^[0-9a-f]{4,40}$/i.test(ref)) {
|
|
27
27
|
const atSha = entries.filter((e) => e.git?.sha.startsWith(ref.toLowerCase()));
|
|
28
28
|
const newest = atSha[atSha.length - 1];
|
|
29
29
|
if (newest) return newest;
|
|
30
30
|
}
|
|
31
|
-
throw new RefError(`No run matches "${ref}"
|
|
31
|
+
throw new RefError(`No run matches "${ref}". Pass latest, latest~N, a run id or a git SHA; reeval history lists them.`);
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* The run to compare `head` against: a complete, earlier run on the first commit of `ancestry` that
|
|
@@ -205,10 +205,15 @@ function formatShow(run) {
|
|
|
205
205
|
const single = e.attempts.length === 1;
|
|
206
206
|
const first = e.attempts[0];
|
|
207
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
|
+
}
|
|
208
213
|
for (const t of e.attempts) {
|
|
209
214
|
const indent = single ? " " : " ";
|
|
210
215
|
if (!single) lines.push(` ${OUTCOME_MARK[t.outcome]} ${t.id} ${formatDuration(t.durationMs)}`);
|
|
211
|
-
for (const j of t
|
|
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}`);
|
|
212
217
|
if (t.error && !repeatsVerdict(t)) lines.push(`${indent}${t.error.kind}: ${t.error.message.split("\n")[0]}`);
|
|
213
218
|
}
|
|
214
219
|
}
|
|
@@ -217,4 +222,4 @@ function formatShow(run) {
|
|
|
217
222
|
//#endregion
|
|
218
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 };
|
|
219
224
|
|
|
220
|
-
//# sourceMappingURL=views-
|
|
225
|
+
//# sourceMappingURL=views-BmQF4UCI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views-BmQF4UCI.js","names":[],"sources":["../src/history/views.ts"],"mappings":"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"}
|
|
@@ -1,86 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { c as
|
|
4
|
-
import { t as
|
|
5
|
-
import { a as useEngine, d as withAttemptExpect, l as extendExpect, o as attemptExpectError, s as createExpect, u as unawaitedError } from "./runtime-Dfb2r-cS.js";
|
|
1
|
+
import { n as UsageError, t as TimeoutError } from "./errors-B6BSMs03.js";
|
|
2
|
+
import { i as originalStack, t as adapterForFile } from "./adapter-DWlpOtRn.js";
|
|
3
|
+
import { a as useEngine, c as createExpect, f as rawAssertions, m as withAttemptExpect, p as unawaitedError, s as attemptExpectError, u as extendExpect } from "./runtime-PX_oXiCS.js";
|
|
4
|
+
import { n as useSchedulerChannel, t as acquire } from "./client-fcwgwOAD.js";
|
|
6
5
|
import { t as budgetMarker } from "./budget-DBUrH4jX.js";
|
|
7
|
-
import {
|
|
8
|
-
import { existsSync
|
|
9
|
-
import {
|
|
6
|
+
import { n as evalMatchers } from "./matchers-Ddmc2z7H.js";
|
|
7
|
+
import { existsSync } from "node:fs";
|
|
8
|
+
import { format } from "node:util";
|
|
10
9
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
11
|
-
import { format, stripVTControlCharacters } from "node:util";
|
|
12
|
-
import { DecodedMap, getOriginalPosition } from "@vitest/utils/source-map";
|
|
13
|
-
import { getTsconfig } from "get-tsconfig";
|
|
14
10
|
import { processError } from "@vitest/utils/error";
|
|
15
|
-
//#region src/
|
|
16
|
-
/**
|
|
17
|
-
const
|
|
18
|
-
const last = s.trimEnd().split("\n").slice(-lines).join("\n");
|
|
19
|
-
return last.length <= chars ? last : `[… ${last.length - chars} earlier characters]${last.slice(-chars)}`;
|
|
20
|
-
};
|
|
21
|
-
const hasFiles = (value) => typeof value === "object" && value !== null && typeof value.readFile === "function";
|
|
22
|
-
const matchers = {
|
|
23
|
-
async toHaveFile(actual, path, pattern) {
|
|
24
|
-
if (!hasFiles(actual)) throw new TypeError("toHaveFile() expects a turn from c.send(), or c");
|
|
25
|
-
const content = await actual.readFile(path);
|
|
26
|
-
if (content === null) return {
|
|
27
|
-
pass: false,
|
|
28
|
-
message: () => `expected file ${path} to exist`
|
|
29
|
-
};
|
|
30
|
-
if (pattern === void 0) return {
|
|
31
|
-
pass: true,
|
|
32
|
-
message: () => `expected no file at ${path}`
|
|
33
|
-
};
|
|
34
|
-
const pass = typeof pattern === "string" ? content.includes(pattern) : pattern.test(content);
|
|
35
|
-
return {
|
|
36
|
-
pass,
|
|
37
|
-
message: () => `expected ${path} ${pass ? "not " : ""}to match ${pattern}\n--- ${path} ---\n${tail(content)}`
|
|
38
|
-
};
|
|
39
|
-
},
|
|
40
|
-
async toSucceed(actual) {
|
|
41
|
-
const r = await actual;
|
|
42
|
-
if (typeof r?.exitCode !== "number") throw new TypeError("toSucceed() expects run.exec(...)");
|
|
43
|
-
return {
|
|
44
|
-
pass: r.exitCode === 0,
|
|
45
|
-
message: () => r.exitCode === 0 ? "expected command to fail" : `expected command to succeed, exit code ${r.exitCode}\n--- stderr ---\n${tail(r.stderr)}\n--- stdout ---\n${tail(r.stdout)}`
|
|
46
|
-
};
|
|
47
|
-
},
|
|
48
|
-
toHaveSearched(actual, query) {
|
|
49
|
-
return searched(actual, query);
|
|
50
|
-
},
|
|
51
|
-
toHaveFetched(actual, url) {
|
|
52
|
-
return fetched(actual, url);
|
|
53
|
-
},
|
|
54
|
-
toHaveCalledSkill(actual, name) {
|
|
55
|
-
return calledSkill(actual, name);
|
|
56
|
-
},
|
|
57
|
-
toHaveCalledMcp(actual, server, tool, input) {
|
|
58
|
-
return calledMcp(actual, server, tool, input);
|
|
59
|
-
},
|
|
60
|
-
toHaveCalledTool(actual, name, input) {
|
|
61
|
-
return calledTool(actual, name, input);
|
|
62
|
-
},
|
|
63
|
-
toHaveRun(actual, command) {
|
|
64
|
-
return ran(actual, command);
|
|
65
|
-
},
|
|
66
|
-
toHaveEdited(actual, path) {
|
|
67
|
-
return edited(actual, path);
|
|
68
|
-
},
|
|
69
|
-
toPass(actual) {
|
|
70
|
-
const failure = actual;
|
|
71
|
-
if (failure?.verdict === "error" && typeof failure.error === "string") return {
|
|
72
|
-
pass: !!this?.isNot,
|
|
73
|
-
message: () => `judge failed for "${failure.question}" (${failure.model}): ${failure.error}`
|
|
74
|
-
};
|
|
75
|
-
const v = actual;
|
|
76
|
-
if (typeof v?.score !== "number") throw new TypeError("toPass() expects a c.judge() verdict");
|
|
77
|
-
const score = v.score.toFixed(2);
|
|
78
|
-
return {
|
|
79
|
-
pass: v.verdict === "pass",
|
|
80
|
-
message: () => v.verdict === "pass" ? `expected judge to fail: score ${score} ≥ ${v.threshold} for "${v.question}"` : `judge score ${score} is below ${v.threshold} for "${v.question}" (${v.model})`
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
};
|
|
11
|
+
//#region src/language-runner/load.ts
|
|
12
|
+
/** Loads an eval file through its language adapter while the worker is collecting. */
|
|
13
|
+
const loadEvalModule = (file, root) => adapterForFile(file).load(file, root);
|
|
84
14
|
//#endregion
|
|
85
15
|
//#region src/engine/collector.ts
|
|
86
16
|
let collecting;
|
|
@@ -181,147 +111,6 @@ function markAll(suite, mode) {
|
|
|
181
111
|
}
|
|
182
112
|
}
|
|
183
113
|
//#endregion
|
|
184
|
-
//#region src/engine/loader.ts
|
|
185
|
-
var TsconfigError = class extends Error {
|
|
186
|
-
name = "TsconfigError";
|
|
187
|
-
};
|
|
188
|
-
/** Each file jiti transformed: its source map, and how far jiti's wrapper shifts line 1. */
|
|
189
|
-
const transformed = /* @__PURE__ */ new Map();
|
|
190
|
-
const INLINE_MAP = /\/\/# sourceMappingURL=data:application\/json;(?:charset=utf-8;)?base64,([A-Za-z0-9+/=]+)\s*$/;
|
|
191
|
-
/** Imports `file` and whatever it imports. */
|
|
192
|
-
async function loadEvalFile(file, root) {
|
|
193
|
-
checkTsconfig(dirname(file), root);
|
|
194
|
-
const options = {
|
|
195
|
-
moduleCache: true,
|
|
196
|
-
fsCache: false,
|
|
197
|
-
sourceMaps: true
|
|
198
|
-
};
|
|
199
|
-
const base = await esJiti(file, options);
|
|
200
|
-
const jiti = await esJiti(file, {
|
|
201
|
-
...options,
|
|
202
|
-
transform: (opts) => {
|
|
203
|
-
const code = base.transform(opts);
|
|
204
|
-
const inline = INLINE_MAP.exec(code);
|
|
205
|
-
if (opts.filename && inline?.[1]) {
|
|
206
|
-
const map = JSON.parse(Buffer.from(inline[1], "base64").toString("utf8"));
|
|
207
|
-
const shift = `(${opts.async ? "async " : ""}function (exports, require, module, __filename, __dirname, jitiImport, jitiESMResolve) { `.length;
|
|
208
|
-
transformed.set(opts.filename, {
|
|
209
|
-
map: new DecodedMap(map, opts.filename),
|
|
210
|
-
shift
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
return { code };
|
|
214
|
-
}
|
|
215
|
-
});
|
|
216
|
-
try {
|
|
217
|
-
return await jiti.import(file);
|
|
218
|
-
} catch (error) {
|
|
219
|
-
throw syntaxError(error, root) ?? missingModule(error);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
/** jiti's `Cannot find module 'x'` plus a require stack, as `… imported from <file>`. */
|
|
223
|
-
function missingModule(error) {
|
|
224
|
-
const e = error;
|
|
225
|
-
if (e?.code !== "MODULE_NOT_FOUND") return error;
|
|
226
|
-
const parts = /^(Cannot find module '[^']+')\nRequire stack:\n- (.+)/.exec(e.message);
|
|
227
|
-
if (parts) e.message = `${parts[1]} imported from ${parts[2]}`;
|
|
228
|
-
return error;
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* jiti reports a parse error as a plain Error, `ParseError: <reason>` then ` <file>:<line>:<col>`
|
|
232
|
-
* (col 0-based): a SyntaxError again, naming the file and position, with a code frame.
|
|
233
|
-
*/
|
|
234
|
-
function syntaxError(error, root) {
|
|
235
|
-
const parsed = /^ParseError: (.*?)\s*\n\s*(.+):(\d+):(\d+)$/.exec(error?.message ?? "");
|
|
236
|
-
if (!parsed) return void 0;
|
|
237
|
-
const [, said, file, line, column] = parsed;
|
|
238
|
-
const reason = said.replace(/^(?:[A-Za-z]:)?[\\/]\S*?: /, "");
|
|
239
|
-
const at = {
|
|
240
|
-
line: Number(line),
|
|
241
|
-
column: Number(column) + 1
|
|
242
|
-
};
|
|
243
|
-
let frame = "";
|
|
244
|
-
try {
|
|
245
|
-
frame = stripVTControlCharacters(codeFrame(readFileSync(file, "utf8"), 0, at, 200));
|
|
246
|
-
} catch {}
|
|
247
|
-
return /* @__PURE__ */ new SyntaxError(`${reason} (${relativeFile(root, file)}:${at.line}:${at.column})${frame ? `\n${frame}` : ""}`);
|
|
248
|
-
}
|
|
249
|
-
/** `stack` with positions in transformed files mapped back to their sources. */
|
|
250
|
-
function originalStack(stack) {
|
|
251
|
-
return stack.replace(/^(\s+at (?:.*\()?)(.+?):(\d+):(\d+)(\)?)$/gm, (whole, before, file, line, column, after) => {
|
|
252
|
-
const loaded = transformed.get(file);
|
|
253
|
-
const at0 = Number(column) - 1 - (line === "1" ? loaded?.shift ?? 0 : 0);
|
|
254
|
-
if (!loaded || at0 < 0) return whole;
|
|
255
|
-
const at = getOriginalPosition(loaded.map, {
|
|
256
|
-
line: Number(line),
|
|
257
|
-
column: at0
|
|
258
|
-
});
|
|
259
|
-
if (!at) return whole;
|
|
260
|
-
const original = at.line;
|
|
261
|
-
return `${before}${file}:${original}:${callee(file, original, at.column) + 1}${after}`;
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Where V8 would put a call's position without the transform: jiti calls an imported function as
|
|
266
|
-
* `(0, _module.fn)()`, which V8 reports at the `(`, where a plain `fn()` reports at `fn`.
|
|
267
|
-
*/
|
|
268
|
-
function callee(file, line, column) {
|
|
269
|
-
const text = readFileSync(file, "utf8").split(/\r?\n/)[line - 1] ?? "";
|
|
270
|
-
if (text[column] !== "(") return column;
|
|
271
|
-
let start = column;
|
|
272
|
-
while (start > 0 && /[\w$]/.test(text[start - 1])) start--;
|
|
273
|
-
return start;
|
|
274
|
-
}
|
|
275
|
-
/** Fails when the nearest tsconfig.json isn't valid JSON with comments, or extends a missing file. */
|
|
276
|
-
function checkTsconfig(dir, root) {
|
|
277
|
-
let found;
|
|
278
|
-
try {
|
|
279
|
-
found = getTsconfig(dir);
|
|
280
|
-
} catch (error) {
|
|
281
|
-
const message = error.message;
|
|
282
|
-
const missing = /^File '(.+)' not found\.$/.exec(message);
|
|
283
|
-
throw new TsconfigError(missing ? `Failed to load tsconfig '${missing[1]}': Tsconfig not found` : `Failed to load tsconfig: ${message}`);
|
|
284
|
-
}
|
|
285
|
-
if (!found) return;
|
|
286
|
-
try {
|
|
287
|
-
JSON.parse(stripJsonComments(readFileSync(found.path, "utf8")));
|
|
288
|
-
} catch (error) {
|
|
289
|
-
throw new TsconfigError(`Failed to load tsconfig '${relativeFile(root, found.path)}': ${error.message}`);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
/** JSON with comments and trailing commas (tsconfig's dialect) as plain JSON. */
|
|
293
|
-
function stripJsonComments(text) {
|
|
294
|
-
return scan(scan(text, (rest) => {
|
|
295
|
-
if (rest.startsWith("//")) {
|
|
296
|
-
const end = rest.indexOf("\n");
|
|
297
|
-
return [end < 0 ? rest.length : end, ""];
|
|
298
|
-
}
|
|
299
|
-
if (rest.startsWith("/*")) {
|
|
300
|
-
const end = rest.indexOf("*/", 2);
|
|
301
|
-
return [end < 0 ? rest.length : end + 2, " "];
|
|
302
|
-
}
|
|
303
|
-
}), (rest) => /^,\s*[}\]]/.test(rest) ? [1, " "] : void 0);
|
|
304
|
-
}
|
|
305
|
-
/** Rewrites `text` outside its strings: `at` says how much to replace here, and with what. */
|
|
306
|
-
function scan(text, at) {
|
|
307
|
-
let out = "";
|
|
308
|
-
for (let i = 0; i < text.length;) {
|
|
309
|
-
if (text[i] === "\"") {
|
|
310
|
-
let end = i + 1;
|
|
311
|
-
while (end < text.length && text[end] !== "\"") end += text[end] === "\\" ? 2 : 1;
|
|
312
|
-
out += text.slice(i, end + 1);
|
|
313
|
-
i = end + 1;
|
|
314
|
-
continue;
|
|
315
|
-
}
|
|
316
|
-
const hit = at(text.slice(i));
|
|
317
|
-
if (hit) {
|
|
318
|
-
out += hit[1];
|
|
319
|
-
i += hit[0];
|
|
320
|
-
} else out += text[i++];
|
|
321
|
-
}
|
|
322
|
-
return out;
|
|
323
|
-
}
|
|
324
|
-
//#endregion
|
|
325
114
|
//#region src/engine/run.ts
|
|
326
115
|
/** An error as it crosses to the main process: its diff computed, then plain data. */
|
|
327
116
|
function serializeError(error) {
|
|
@@ -413,7 +202,9 @@ async function runTest(test, { file, stagingDir, signal, reporter }, bodies) {
|
|
|
413
202
|
},
|
|
414
203
|
progress: (progress) => reporter.progress(index, progress),
|
|
415
204
|
debug: (line) => reporter.debug(index, line),
|
|
416
|
-
unawaited:
|
|
205
|
+
unawaited: () => unawaitedError(pending),
|
|
206
|
+
expectError: () => attemptExpectError(own),
|
|
207
|
+
assertions: () => rawAssertions(task)
|
|
417
208
|
})));
|
|
418
209
|
bodies.add(body);
|
|
419
210
|
const release = () => lease?.release();
|
|
@@ -515,10 +306,10 @@ function startWorker(channel) {
|
|
|
515
306
|
getRunContext: () => run,
|
|
516
307
|
collectingFile
|
|
517
308
|
});
|
|
518
|
-
extendExpect(
|
|
309
|
+
extendExpect(evalMatchers);
|
|
519
310
|
routeConsole(reporter);
|
|
520
311
|
try {
|
|
521
|
-
const tests = await collect(file, () =>
|
|
312
|
+
const tests = await collect(file, () => loadEvalModule(file, run.config.root));
|
|
522
313
|
channel.send({
|
|
523
314
|
t: "collected",
|
|
524
315
|
tests: tests.map(({ index, name, groups, mode, options }) => ({
|
|
@@ -574,4 +365,4 @@ process.on("uncaughtException", (error) => worker.unhandled(error));
|
|
|
574
365
|
//#endregion
|
|
575
366
|
export {};
|
|
576
367
|
|
|
577
|
-
//# sourceMappingURL=worker-entry-
|
|
368
|
+
//# sourceMappingURL=worker-entry-yOchGYYv.js.map
|