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
|
@@ -1,33 +1,322 @@
|
|
|
1
|
-
import { n as
|
|
2
|
-
import {
|
|
1
|
+
import { n as toolTarget } from "./tool-target-D2mcYlSQ.js";
|
|
2
|
+
import { n as UsageError } from "./errors-B6BSMs03.js";
|
|
3
3
|
import { t as RUN_ID } from "./paths-BmR-7tx3.js";
|
|
4
4
|
import { a as fromCwd } from "./ids-Bp6ut7ZD.js";
|
|
5
|
-
import { o as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { c as
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { r as
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
5
|
+
import { o as redactSecrets, s as registerSecret } from "./redact-DJ9JCShu.js";
|
|
6
|
+
import { o as sortAnalyses } from "./analysis-Bxub9LMT.js";
|
|
7
|
+
import { c as readableTranscriptLine } from "./record-BKmMvZ6O.js";
|
|
8
|
+
import { p as scratchDir, s as readRecord } from "./files-BXUdY8tr.js";
|
|
9
|
+
import { c as renderSummary } from "./summary-BLAVLySU.js";
|
|
10
|
+
import { c as resolveRun } from "./views-BmQF4UCI.js";
|
|
11
|
+
import { a as compareView, h as showRecord, n as allRuns, s as historyView } from "./commands-BFx16WB8.js";
|
|
12
|
+
import { r as VIEW_NAMES, s as openHistoryDb } from "./db-CdHizc4_.js";
|
|
13
|
+
import { r as statementCount } from "./query-Bes9Kh6Y.js";
|
|
14
|
+
import { n as resolveFile } from "./source-C8xumIWj.js";
|
|
15
|
+
import { basename, join } from "node:path";
|
|
16
|
+
import { z } from "zod";
|
|
15
17
|
import { timingSafeEqual } from "node:crypto";
|
|
16
18
|
import { readFile } from "node:fs/promises";
|
|
17
|
-
import { z } from "zod";
|
|
18
19
|
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/server";
|
|
20
|
+
//#region src/mcp/files.ts
|
|
21
|
+
const source = (config) => ({
|
|
22
|
+
root: config.root,
|
|
23
|
+
historyDir: config.history.dir,
|
|
24
|
+
scratch: true
|
|
25
|
+
});
|
|
26
|
+
/** The attempt `ref` names in `run`: its key, or an attempt id (`<cell>#<n>`) unique in the run. */
|
|
27
|
+
function findAttempt(run, ref) {
|
|
28
|
+
const attempts = run.evals.flatMap((e) => e.attempts);
|
|
29
|
+
const exact = attempts.find((a) => a.key === ref);
|
|
30
|
+
if (exact) return exact;
|
|
31
|
+
const byId = attempts.filter((a) => a.id === ref);
|
|
32
|
+
if (byId.length === 1 && byId[0]) return byId[0];
|
|
33
|
+
const keys = attempts.map((a) => a.key);
|
|
34
|
+
const listed = `${keys.slice(0, 20).join("; ")}${keys.length > 20 ? `; … ${keys.length - 20} more` : ""}`;
|
|
35
|
+
throw new Error(byId.length > 1 ? `"${ref}" is an attempt of ${byId.length} evals in ${run.runId}; use its key: ${byId.map((a) => a.key).join("; ")}` : `No attempt "${ref}" in ${run.runId}. Attempts: ${listed}`);
|
|
36
|
+
}
|
|
37
|
+
/** The path of a file the run kept, or null when it wasn't kept. */
|
|
38
|
+
async function runFile(config, run, path) {
|
|
39
|
+
if (!path) return null;
|
|
40
|
+
return resolveFile(source(config), {
|
|
41
|
+
kind: "artifact",
|
|
42
|
+
runId: run.runId,
|
|
43
|
+
segments: path.split("/")
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/** The attempt's transcript lines, or null when the run kept no transcript for it. */
|
|
47
|
+
async function transcriptLines(config, run, attempt) {
|
|
48
|
+
const file = await runFile(config, run, attempt.files.transcript?.path);
|
|
49
|
+
if (!file) return null;
|
|
50
|
+
const lines = [];
|
|
51
|
+
for (const line of (await readFile(file, "utf8")).split("\n")) {
|
|
52
|
+
if (!line.trim()) continue;
|
|
53
|
+
try {
|
|
54
|
+
lines.push(readableTranscriptLine(JSON.parse(line)));
|
|
55
|
+
} catch {}
|
|
56
|
+
}
|
|
57
|
+
return lines;
|
|
58
|
+
}
|
|
59
|
+
async function readTranscript(config, run, ref) {
|
|
60
|
+
const attempt = findAttempt(run, ref);
|
|
61
|
+
const lines = await transcriptLines(config, run, attempt);
|
|
62
|
+
if (!lines) throw new Error(`${run.runId} kept no transcript for ${attempt.key} (recorded with --artifacts failures or none?)`);
|
|
63
|
+
return {
|
|
64
|
+
attempt,
|
|
65
|
+
lines
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/** The last `chars` characters of a kept file, from a line start; null when it wasn't kept. */
|
|
69
|
+
async function fileTail(config, run, path, chars) {
|
|
70
|
+
const file = await runFile(config, run, path);
|
|
71
|
+
if (!file) return null;
|
|
72
|
+
const text = (await readFile(file, "utf8")).trimEnd();
|
|
73
|
+
if (text.length <= chars) return text;
|
|
74
|
+
const cut = text.slice(-chars);
|
|
75
|
+
const nl = cut.indexOf("\n");
|
|
76
|
+
return `…${nl >= 0 && nl < cut.length - 1 ? cut.slice(nl + 1) : cut}`;
|
|
77
|
+
}
|
|
78
|
+
const clip = (text, max) => text.length <= max ? text : `${text.slice(0, max)}… (${text.length - max} more characters)`;
|
|
79
|
+
const asText = (value) => typeof value === "string" ? value : value == null ? "" : JSON.stringify(value);
|
|
80
|
+
/** One transcript line, cut down to what says what happened. Line numbers count from 1. */
|
|
81
|
+
function compactLine(line, n) {
|
|
82
|
+
switch (line.type) {
|
|
83
|
+
case "prompt": return {
|
|
84
|
+
line: n,
|
|
85
|
+
turn: line.turn,
|
|
86
|
+
prompt: clip(line.text, 300)
|
|
87
|
+
};
|
|
88
|
+
case "text": return {
|
|
89
|
+
line: n,
|
|
90
|
+
turn: line.turn,
|
|
91
|
+
text: clip(line.text, 600)
|
|
92
|
+
};
|
|
93
|
+
case "tool": return {
|
|
94
|
+
line: n,
|
|
95
|
+
turn: line.turn,
|
|
96
|
+
tool: line.tool,
|
|
97
|
+
target: toolTarget(line.input, line.tool),
|
|
98
|
+
ok: line.ok,
|
|
99
|
+
output: clip(asText(line.output), 400)
|
|
100
|
+
};
|
|
101
|
+
case "file-edit": return {
|
|
102
|
+
line: n,
|
|
103
|
+
turn: line.turn,
|
|
104
|
+
edit: line.path,
|
|
105
|
+
kind: line.kind
|
|
106
|
+
};
|
|
107
|
+
case "web-search": return {
|
|
108
|
+
line: n,
|
|
109
|
+
turn: line.turn,
|
|
110
|
+
tool: "web-search",
|
|
111
|
+
target: line.query,
|
|
112
|
+
ok: line.ok ?? true
|
|
113
|
+
};
|
|
114
|
+
case "web-fetch": return {
|
|
115
|
+
line: n,
|
|
116
|
+
turn: line.turn,
|
|
117
|
+
tool: "web-fetch",
|
|
118
|
+
target: line.url,
|
|
119
|
+
ok: line.ok
|
|
120
|
+
};
|
|
121
|
+
case "error":
|
|
122
|
+
case "retry": return {
|
|
123
|
+
line: n,
|
|
124
|
+
turn: line.turn,
|
|
125
|
+
[line.type]: clip(line.message, 600)
|
|
126
|
+
};
|
|
127
|
+
case "turn-end": return {
|
|
128
|
+
line: n,
|
|
129
|
+
turn: line.turn,
|
|
130
|
+
turnEnd: line.status
|
|
131
|
+
};
|
|
132
|
+
default: return null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
function transcriptTail(lines, tail) {
|
|
136
|
+
const compact = lines.flatMap((line, i) => {
|
|
137
|
+
const c = compactLine(line, i + 1);
|
|
138
|
+
return c ? [c] : [];
|
|
139
|
+
});
|
|
140
|
+
return {
|
|
141
|
+
lines: lines.length,
|
|
142
|
+
tail: compact.slice(-tail)
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
const failedHere = (c) => c.fail > 0 || c.infraError > 0;
|
|
146
|
+
const changedParts = (a, b) => Object.keys(a).filter((k) => a[k] !== b[k]);
|
|
147
|
+
function changedSources(now, before) {
|
|
148
|
+
const old = new Map(before.map((s) => [s.path, s.sha256]));
|
|
149
|
+
const paths = now.filter((s) => old.get(s.path) !== s.sha256).map((s) => s.path);
|
|
150
|
+
const kept = new Set(now.map((s) => s.path));
|
|
151
|
+
return [...paths, ...before.filter((s) => !kept.has(s.path)).map((s) => `${s.path} (removed)`)];
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* The cell's earlier runs, newest first: whether this failure is new, the last run where the cell
|
|
155
|
+
* passed cleanly, the run its failing streak started in, and what changed since that clean run.
|
|
156
|
+
*/
|
|
157
|
+
function cellHistory(entries, run, e, cell) {
|
|
158
|
+
const earlier = [];
|
|
159
|
+
for (const entry of entries) {
|
|
160
|
+
if (entry.runId >= run.runId) continue;
|
|
161
|
+
const ev = entry.evals.find((x) => x.key === e.key);
|
|
162
|
+
const c = ev?.cells.find((x) => x.key === cell.key);
|
|
163
|
+
if (ev && c) earlier.push({
|
|
164
|
+
entry,
|
|
165
|
+
eval: ev,
|
|
166
|
+
cell: c
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
earlier.reverse();
|
|
170
|
+
const runRef = (entry) => ({
|
|
171
|
+
runId: entry.runId,
|
|
172
|
+
sha: entry.git?.sha.slice(0, 12) ?? null,
|
|
173
|
+
recorded: entry.recorded
|
|
174
|
+
});
|
|
175
|
+
let since = run.runId;
|
|
176
|
+
for (const x of earlier) {
|
|
177
|
+
if (!failedHere(x.cell)) break;
|
|
178
|
+
since = x.entry.runId;
|
|
179
|
+
}
|
|
180
|
+
const clean = earlier.find((x) => !failedHere(x.cell) && x.cell.pass > 0);
|
|
181
|
+
const previous = earlier[0];
|
|
182
|
+
return {
|
|
183
|
+
new: !previous || !failedHere(previous.cell),
|
|
184
|
+
failingSince: since,
|
|
185
|
+
lastPass: clean ? {
|
|
186
|
+
...runRef(clean.entry),
|
|
187
|
+
changed: changedParts(cell.fingerprintParts, clean.cell.fingerprintParts),
|
|
188
|
+
changedSources: changedSources(e.sources, clean.eval.sources)
|
|
189
|
+
} : null,
|
|
190
|
+
earlier: earlier.slice(0, 8).map((x) => ({
|
|
191
|
+
...runRef(x.entry),
|
|
192
|
+
pass: x.cell.pass,
|
|
193
|
+
fail: x.cell.fail,
|
|
194
|
+
infraError: x.cell.infraError,
|
|
195
|
+
sameFingerprint: x.cell.fingerprint === cell.fingerprint
|
|
196
|
+
})),
|
|
197
|
+
earlierRuns: earlier.length
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
async function describeAttempt(config, run, e, a, tail) {
|
|
201
|
+
const cell = e.cells.find((c) => c.key === a.cell);
|
|
202
|
+
const lines = await transcriptLines(config, run, a);
|
|
203
|
+
const failedChecks = await Promise.all(a.checks.filter((c) => c.exitCode !== 0).map(async (c) => ({
|
|
204
|
+
command: c.command,
|
|
205
|
+
exitCode: c.exitCode,
|
|
206
|
+
log: c.log?.path ?? null,
|
|
207
|
+
logTail: await fileTail(config, run, c.log?.path, 1500)
|
|
208
|
+
})));
|
|
209
|
+
const finalText = a.turns.findLast((t) => t.text)?.text ?? "";
|
|
210
|
+
const failedAssertions = (a.assertions ?? []).filter((x) => x.status !== "pass").map((x) => ({
|
|
211
|
+
label: x.label,
|
|
212
|
+
matcher: x.matcher,
|
|
213
|
+
status: x.status,
|
|
214
|
+
soft: x.soft,
|
|
215
|
+
message: x.message ? clip(x.message, 800) : null
|
|
216
|
+
}));
|
|
217
|
+
const repeated = a.error?.kind === "assertion" && a.assertions?.some((x) => x.message === a.error?.message);
|
|
218
|
+
return {
|
|
219
|
+
eval: e.id,
|
|
220
|
+
attempt: a.key,
|
|
221
|
+
cell: a.cell,
|
|
222
|
+
harness: cell?.harness ?? null,
|
|
223
|
+
environment: cell?.environment ?? null,
|
|
224
|
+
outcome: a.outcome,
|
|
225
|
+
gated: cell ? cell.gate !== "none" : true,
|
|
226
|
+
error: a.error ? {
|
|
227
|
+
kind: a.error.kind,
|
|
228
|
+
message: repeated ? null : clip(a.error.message, 1500)
|
|
229
|
+
} : null,
|
|
230
|
+
failedAssertions,
|
|
231
|
+
failedJudgements: a.judgements.filter((j) => j.verdict === "fail").map((j) => ({
|
|
232
|
+
question: j.question,
|
|
233
|
+
score: j.score,
|
|
234
|
+
threshold: j.threshold
|
|
235
|
+
})),
|
|
236
|
+
failedChecks,
|
|
237
|
+
turnErrors: a.turns.flatMap((t, i) => t.error ? [{
|
|
238
|
+
turn: i + 1,
|
|
239
|
+
error: t.error
|
|
240
|
+
}] : []),
|
|
241
|
+
setupLogTail: a.outcome === "infra_error" ? await fileTail(config, run, a.files.setupLog?.path, 1500) : null,
|
|
242
|
+
changedFiles: a.changedFiles.slice(0, 30).map((f) => `${f.status} ${f.path}`),
|
|
243
|
+
finalMessage: finalText ? clip(finalText, 800) : null,
|
|
244
|
+
transcript: lines ? transcriptTail(lines, tail) : null,
|
|
245
|
+
files: {
|
|
246
|
+
transcript: a.files.transcript?.path ?? null,
|
|
247
|
+
diff: a.files.diff?.path ?? null,
|
|
248
|
+
setupLog: a.files.setupLog?.path ?? null
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
const rank = (e, a) => {
|
|
253
|
+
const gated = e.cells.find((c) => c.key === a.cell)?.gate !== "none";
|
|
254
|
+
return (a.outcome === "fail" ? 0 : 1) + (gated ? 0 : 2);
|
|
255
|
+
};
|
|
256
|
+
async function failuresView(config, options = {}) {
|
|
257
|
+
const entries = await allRuns(config);
|
|
258
|
+
const entry = resolveRun(entries, options.run);
|
|
259
|
+
const dir = entry.recorded ? config.history.dir : scratchDir(config.root);
|
|
260
|
+
const run = await readRecord(join(dir, `${entry.runId}.json`));
|
|
261
|
+
const needle = options.filter?.toLowerCase();
|
|
262
|
+
const failing = run.evals.filter((e) => !needle || e.id.toLowerCase().includes(needle)).flatMap((e) => e.attempts.filter((a) => a.outcome === "fail" || a.outcome === "infra_error").map((a) => ({
|
|
263
|
+
e,
|
|
264
|
+
a
|
|
265
|
+
}))).sort((x, y) => rank(x.e, x.a) - rank(y.e, y.a));
|
|
266
|
+
const limit = options.limit ?? 10;
|
|
267
|
+
const shown = failing.slice(0, limit);
|
|
268
|
+
const histories = /* @__PURE__ */ new Map();
|
|
269
|
+
const cells = shown.flatMap(({ e, a }) => {
|
|
270
|
+
const id = `${e.key}\0${a.cell}`;
|
|
271
|
+
const cell = e.cells.find((c) => c.key === a.cell);
|
|
272
|
+
if (histories.has(id) || !cell) return [];
|
|
273
|
+
histories.set(id, cellHistory(entries, run, e, cell));
|
|
274
|
+
return [{
|
|
275
|
+
eval: e.id,
|
|
276
|
+
cell: a.cell,
|
|
277
|
+
...histories.get(id)
|
|
278
|
+
}];
|
|
279
|
+
});
|
|
280
|
+
const attempts = await Promise.all(shown.map(({ e, a }) => describeAttempt(config, run, e, a, options.tail ?? 12)));
|
|
281
|
+
const header = {
|
|
282
|
+
runId: run.runId,
|
|
283
|
+
recorded: entry.recorded,
|
|
284
|
+
sha: run.git?.sha.slice(0, 12) ?? null,
|
|
285
|
+
summary: run.summary
|
|
286
|
+
};
|
|
287
|
+
if (failing.length === 0) {
|
|
288
|
+
const latest = [...entries].reverse().find((x) => x.summary.fail + x.summary.infraError > 0 && x.runId !== run.runId);
|
|
289
|
+
return {
|
|
290
|
+
...header,
|
|
291
|
+
failing: 0,
|
|
292
|
+
attempts: [],
|
|
293
|
+
cells: [],
|
|
294
|
+
note: `Nothing failed in ${run.runId}${needle ? ` matching "${options.filter}"` : ""}.${latest ? ` The latest run with a failure is ${latest.runId}: pass it as run.` : ""}`
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
return {
|
|
298
|
+
...header,
|
|
299
|
+
failing: failing.length,
|
|
300
|
+
shown: shown.length,
|
|
301
|
+
attempts,
|
|
302
|
+
cells,
|
|
303
|
+
next: `For the whole story of one attempt, transcript { run: "${run.runId}", attempt }. compare { head: "${run.runId}" } diffs this run against its baseline; query_flaky_cells says whether a cell fails intermittently across runs.`
|
|
304
|
+
};
|
|
305
|
+
}
|
|
19
306
|
const MAX_ROWS = 1e3;
|
|
20
307
|
/** What each view has one row per, for its tool's description. */
|
|
21
308
|
const VIEW_ROWS = {
|
|
22
|
-
lift: "variant cell per run: its control, both sides’ pass counts, lift points and the 95% interval (lo, hi), within_noise",
|
|
309
|
+
lift: "variant cell per run: its control, both sides’ pass counts and pass@1, lift points and the 95% interval (lo, hi), within_noise",
|
|
310
|
+
family_lift: "variant cell per pooled evaluate.each per run: its control, paired cases, both sides’ mean pass@1 over them, lift points and the 95% interval (lo, hi), verdict and effort ratios",
|
|
23
311
|
effort: "cell per run: attempts, median tool calls, agent seconds and tokens; for a variant, the ratios to its control, p-values and verdicts (tokens omitted when either side has no usage sample)",
|
|
24
|
-
factor_effects: "factor contrast (environment, harness, model) by evidence tier, with pass
|
|
312
|
+
factor_effects: "factor contrast (environment, harness, model) by evidence tier, with pass@1 and effort verdicts",
|
|
25
313
|
skill_reads: "attempt and skill its environment placed: the transcript line of its first read (a path under skills/<name>/, or a skill / load_skill call), and how many",
|
|
26
314
|
flaky_cells: "cell with mixed outcomes pooled over comparable runs: counts, a Wilson interval, a verdict and a likely cause",
|
|
27
315
|
drift: "run where a cell’s fingerprint changed from its previous run, what changed, and noise = 1 when only agent runtime state did",
|
|
28
|
-
failing_attempts: "failed attempt, with its harness, model, environment skill and
|
|
29
|
-
eval_trend: "eval per run: outcome, pass
|
|
30
|
-
verdict_flips: "judge question per cell whose pass rate changed from its previous run"
|
|
316
|
+
failing_attempts: "failed or infra-error attempt, with its harness, model, environment skill, error, OOM kills and first failed check",
|
|
317
|
+
eval_trend: "eval per run: outcome, pass@1, branch, PR and fingerprint",
|
|
318
|
+
verdict_flips: "judge question per cell whose pass rate changed from its previous run",
|
|
319
|
+
check_discrimination: "check (expect label) per variant cell per run: its passes, failures and not-run on both sides, and whether it discriminates (both-pass and both-fail checks measure nothing)"
|
|
31
320
|
};
|
|
32
321
|
const READ_ONLY = {
|
|
33
322
|
readOnlyHint: true,
|
|
@@ -110,44 +399,7 @@ const cell = z.union([
|
|
|
110
399
|
z.null()
|
|
111
400
|
]);
|
|
112
401
|
const limitField = (max, fallback, what) => z.number().int().min(1).max(max).optional().describe(`At most this many ${what} (default ${fallback}, at most ${max})`);
|
|
113
|
-
const source = (config) => ({
|
|
114
|
-
root: config.root,
|
|
115
|
-
historyDir: config.history.dir,
|
|
116
|
-
scratch: true
|
|
117
|
-
});
|
|
118
402
|
const transcriptUri = (runId, attemptKey) => `reeval://runs/${runId}/transcripts/${encodeURIComponent(attemptKey)}`;
|
|
119
|
-
/** The attempt `ref` names in `run`: its key, or an attempt id (`<cell>#<n>`) unique in the run. */
|
|
120
|
-
function findAttempt(run, ref) {
|
|
121
|
-
const attempts = run.evals.flatMap((e) => e.attempts);
|
|
122
|
-
const exact = attempts.find((a) => a.key === ref);
|
|
123
|
-
if (exact) return exact;
|
|
124
|
-
const byId = attempts.filter((a) => a.id === ref);
|
|
125
|
-
if (byId.length === 1 && byId[0]) return byId[0];
|
|
126
|
-
const keys = attempts.map((a) => a.key);
|
|
127
|
-
const listed = `${keys.slice(0, 20).join("; ")}${keys.length > 20 ? `; … ${keys.length - 20} more` : ""}`;
|
|
128
|
-
throw new Error(byId.length > 1 ? `"${ref}" is an attempt of ${byId.length} evals in ${run.runId}; use its key: ${byId.map((a) => a.key).join("; ")}` : `No attempt "${ref}" in ${run.runId}. Attempts: ${listed}`);
|
|
129
|
-
}
|
|
130
|
-
async function readTranscript(config, run, ref) {
|
|
131
|
-
const attempt = findAttempt(run, ref);
|
|
132
|
-
const path = attempt.files.transcript?.path;
|
|
133
|
-
const file = path && await resolveFile(source(config), {
|
|
134
|
-
kind: "artifact",
|
|
135
|
-
runId: run.runId,
|
|
136
|
-
segments: path.split("/")
|
|
137
|
-
});
|
|
138
|
-
if (!file) throw new Error(`${run.runId} kept no transcript for ${attempt.key} (recorded with --artifacts failures or none?)`);
|
|
139
|
-
const lines = [];
|
|
140
|
-
for (const line of (await readFile(file, "utf8")).split("\n")) {
|
|
141
|
-
if (!line.trim()) continue;
|
|
142
|
-
try {
|
|
143
|
-
lines.push(readableTranscriptLine(JSON.parse(line)));
|
|
144
|
-
} catch {}
|
|
145
|
-
}
|
|
146
|
-
return {
|
|
147
|
-
attempt,
|
|
148
|
-
lines
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
403
|
/** Reads the record of a run named by id, recorded or scratch; null if there's none. */
|
|
152
404
|
async function recordById(config, runId) {
|
|
153
405
|
if (!RUN_ID.test(runId)) return null;
|
|
@@ -157,8 +409,9 @@ async function recordById(config, runId) {
|
|
|
157
409
|
});
|
|
158
410
|
return file ? readRecord(file) : null;
|
|
159
411
|
}
|
|
160
|
-
const INSTRUCTIONS = `Read-only access to this project's reeval run history: runs of evals for coding agents, recorded in git and scratch runs in .reeval/runs.
|
|
161
|
-
|
|
412
|
+
const INSTRUCTIONS = `Read-only access to this project's reeval run history: runs of evals for coding agents, recorded in git and scratch runs in .reeval/runs. Use it to debug a failed, flaky or regressed eval run.
|
|
413
|
+
Why did a run fail? Call failures first: each failed attempt's failing checks and judge scores, error, check logs and the end of its transcript, and whether its cell failed in earlier runs (new or not, since which run, what changed since it last passed). It's far smaller than show or summary.md.
|
|
414
|
+
Then: transcript reads one attempt in full; compare diffs two runs (regressions, fixes, stack changes); history is pass/fail per eval over recent runs; show is one run's whole record. The query_* tools answer questions across runs (flaky_cells, drift, failing_attempts, eval_trend, lift, effort); query runs read-only SQL (query_schema lists tables). analysis returns saved reeval analyze results. Runs are named latest, latest~N, a run id prefix or a git SHA prefix. Nothing here runs evals: reeval run does, in a terminal.`;
|
|
162
415
|
/** Builds the factory `reeval mcp` serves: one McpServer per connection (stdio) or request (HTTP). */
|
|
163
416
|
async function serverFactory(config, version) {
|
|
164
417
|
const columns = await viewColumns(config);
|
|
@@ -168,23 +421,55 @@ async function serverFactory(config, version) {
|
|
|
168
421
|
title: "reeval run history",
|
|
169
422
|
version
|
|
170
423
|
}, { instructions: INSTRUCTIONS });
|
|
424
|
+
server.registerTool("failures", {
|
|
425
|
+
title: "Why a run failed",
|
|
426
|
+
description: "Debug a failed reeval eval run: why each failed or infra-error attempt failed. Per attempt: the failing expect checks with their messages, failed judge scores against thresholds, the error, nonzero check commands with their log tails, the setup log tail for infra errors, changed files, the final message and the last transcript lines (tool calls with targets and output). Per cell: whether the failure is new, the run its failing streak started in, the last run it passed and what changed since (fingerprint parts, eval source files). Start here, before show or transcript.",
|
|
427
|
+
inputSchema: z.object({
|
|
428
|
+
run: z.string().optional().describe(RUN_REF),
|
|
429
|
+
filter: z.string().optional().describe("Only evals whose id contains this"),
|
|
430
|
+
limit: limitField(100, 10, "failed attempts"),
|
|
431
|
+
tail: z.number().int().min(0).max(100).optional().describe(`Transcript lines from the end of each attempt (default 12)`)
|
|
432
|
+
}),
|
|
433
|
+
annotations: READ_ONLY
|
|
434
|
+
}, guard(async ({ run, filter, limit, tail }) => failuresView(config, {
|
|
435
|
+
run,
|
|
436
|
+
filter,
|
|
437
|
+
limit,
|
|
438
|
+
tail
|
|
439
|
+
})));
|
|
171
440
|
server.registerTool("history", {
|
|
172
441
|
title: "Run history",
|
|
173
|
-
description: "Pass/fail of each eval over recent runs, oldest first (reeval history --json): runs[] with their ids, commits and summaries, and rows[] with one outcome per run (null when not run) and drift, the runs where the eval or its stack changed.",
|
|
442
|
+
description: "Pass/fail of each reeval eval over recent runs, oldest first (reeval history --json, without each run's evals[], which show has): runs[] with their ids, commits and summaries, and rows[] with one outcome per run (null when not run) and drift, the runs where the eval or its stack changed. With no recorded runs it lists the scratch runs, with a note.",
|
|
174
443
|
inputSchema: z.object({
|
|
175
444
|
filter: z.string().optional().describe("Only evals whose id contains this"),
|
|
176
445
|
limit: limitField(500, 20, "runs"),
|
|
177
446
|
all: z.boolean().optional().describe("Include scratch runs that were never recorded")
|
|
178
447
|
}),
|
|
179
448
|
annotations: READ_ONLY
|
|
180
|
-
}, guard(async ({ filter, limit, all }) =>
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
449
|
+
}, guard(async ({ filter, limit, all }) => {
|
|
450
|
+
const view = briefHistory(await historyView(config, {
|
|
451
|
+
filter,
|
|
452
|
+
limit,
|
|
453
|
+
all
|
|
454
|
+
}));
|
|
455
|
+
if (all || view.runs.length) return view;
|
|
456
|
+
const scratch = briefHistory(await historyView(config, {
|
|
457
|
+
filter,
|
|
458
|
+
limit,
|
|
459
|
+
all: true
|
|
460
|
+
}));
|
|
461
|
+
if (!scratch.runs.length) return {
|
|
462
|
+
...view,
|
|
463
|
+
note: "No runs yet. reeval run, in a terminal, makes one."
|
|
464
|
+
};
|
|
465
|
+
return {
|
|
466
|
+
...scratch,
|
|
467
|
+
note: "No recorded runs yet, so these are the scratch runs in .reeval/runs (reeval run without --record). reeval run --record, or reeval record latest, records one."
|
|
468
|
+
};
|
|
469
|
+
}));
|
|
185
470
|
server.registerTool("show", {
|
|
186
471
|
title: "Show a run",
|
|
187
|
-
description: "One run: its full record (reeval show --json: stack, plan, evals, cells with lift and effort, attempts with verdicts, errors, token usage and file references) or, with format md, its summary.md.",
|
|
472
|
+
description: "One reeval run: its full record (reeval show --json: stack, plan, evals, cells with lift and effort, attempts with verdicts, errors, token usage and file references) or, with format md, its summary.md. Large on big runs: to see why a run failed, failures is smaller.",
|
|
188
473
|
inputSchema: z.object({
|
|
189
474
|
run: z.string().optional().describe(RUN_REF),
|
|
190
475
|
format: z.enum(["json", "md"]).optional().describe("json (default) or md")
|
|
@@ -199,14 +484,22 @@ async function serverFactory(config, version) {
|
|
|
199
484
|
}));
|
|
200
485
|
server.registerTool("compare", {
|
|
201
486
|
title: "Compare two runs",
|
|
202
|
-
description: "Diffs two runs eval by eval (reeval compare --json): each row's base and head outcome and status (regressed, fixed,
|
|
487
|
+
description: "Diffs two reeval runs eval by eval to find a regression (reeval compare --json): each changed row's base and head outcome and status (regressed, fixed, drift = not comparable, added, removed, infra), per-cell lift and effort, and what changed in the stack; same counts the unchanged evals, which all: true lists too. With only head, the base is head's nearest recorded ancestor.",
|
|
203
488
|
inputSchema: z.object({
|
|
204
489
|
base: z.string().optional().describe(`${RUN_REF}; needs head too`),
|
|
205
|
-
head: z.string().optional().describe(RUN_REF)
|
|
490
|
+
head: z.string().optional().describe(RUN_REF),
|
|
491
|
+
all: z.boolean().optional().describe("Also list the evals whose outcome is the same")
|
|
206
492
|
}),
|
|
207
493
|
annotations: READ_ONLY
|
|
208
|
-
}, guard(async ({ base, head }) => {
|
|
209
|
-
|
|
494
|
+
}, guard(async ({ base, head, all }) => {
|
|
495
|
+
const { json } = await compareView(config, base ? [base, head ?? "latest"] : head ? [head] : []);
|
|
496
|
+
if (all) return json;
|
|
497
|
+
const rows = json.rows.filter((r) => r.status !== "same");
|
|
498
|
+
return {
|
|
499
|
+
...json,
|
|
500
|
+
rows,
|
|
501
|
+
same: json.rows.length - rows.length
|
|
502
|
+
};
|
|
210
503
|
}));
|
|
211
504
|
server.registerTool("analysis", {
|
|
212
505
|
title: "Saved analyses of a run",
|
|
@@ -215,7 +508,7 @@ async function serverFactory(config, version) {
|
|
|
215
508
|
annotations: READ_ONLY
|
|
216
509
|
}, guard(async ({ run }) => {
|
|
217
510
|
const entry = resolveRun(await allRuns(config), run);
|
|
218
|
-
const { listAnalyses } = await import("./files-
|
|
511
|
+
const { listAnalyses } = await import("./files-BhyltlDB.js");
|
|
219
512
|
const entries = await listAnalyses(config.root, [config.history.dir], entry.runId, true);
|
|
220
513
|
return {
|
|
221
514
|
runId: entry.runId,
|
|
@@ -224,7 +517,7 @@ async function serverFactory(config, version) {
|
|
|
224
517
|
}));
|
|
225
518
|
server.registerTool("transcript", {
|
|
226
519
|
title: "Attempt transcript",
|
|
227
|
-
description: "What the agent did in one attempt: its transcript.jsonl lines (prompts, messages, tool calls with inputs and outputs), a page at a time. Attempt keys are in show's evals[].attempts[].key.",
|
|
520
|
+
description: "What the coding agent did in one reeval attempt, to debug it: its transcript.jsonl lines (prompts, messages, tool calls with inputs and outputs), a page at a time. Attempt keys are in show's evals[].attempts[].key.",
|
|
228
521
|
inputSchema: z.object({
|
|
229
522
|
run: z.string().optional().describe(RUN_REF),
|
|
230
523
|
attempt: z.string().describe("The attempt key, or its id (<cell>#<n>) when only one eval has it"),
|
|
@@ -249,7 +542,7 @@ async function serverFactory(config, version) {
|
|
|
249
542
|
const where = z.strictObject(Object.fromEntries(cols.map((c) => [c, cell.optional()]))).optional().describe("Only rows where each named column equals its value (null matches NULL)");
|
|
250
543
|
server.registerTool(`query_${view}`, {
|
|
251
544
|
title: `Query ${view}`,
|
|
252
|
-
description: `The ${view} view of reeval query: one row per ${VIEW_ROWS[view] ?? "row"}. Columns: ${cols.join(", ")}.`,
|
|
545
|
+
description: `The ${view} view of reeval query, over the eval run history: one row per ${VIEW_ROWS[view] ?? "row"}. Columns: ${cols.join(", ")}.`,
|
|
253
546
|
inputSchema: z.object({
|
|
254
547
|
where,
|
|
255
548
|
limit: limitField(MAX_ROWS, 100, "rows")
|
|
@@ -270,7 +563,7 @@ async function serverFactory(config, version) {
|
|
|
270
563
|
}
|
|
271
564
|
server.registerTool("query", {
|
|
272
565
|
title: "Query run history with SQL",
|
|
273
|
-
description: "One read-only SQLite SELECT or WITH statement over .reeval/history.db, the projection of every recorded and scratch run (reeval query). Tables include runs, evals, cells, attempts, judgements, tool_calls; the views are the query_* tools. query_schema lists every table's columns.",
|
|
566
|
+
description: "One read-only SQLite SELECT or WITH statement over .reeval/history.db, the projection of every recorded and scratch run (reeval query). Tables include runs, evals, cells, attempts, judgements, tool_calls, assertions; the views are the query_* tools. query_schema lists every table's columns.",
|
|
274
567
|
inputSchema: z.object({
|
|
275
568
|
sql: z.string().describe("One SELECT or WITH statement"),
|
|
276
569
|
limit: limitField(MAX_ROWS, 100, "rows")
|
|
@@ -287,7 +580,7 @@ async function serverFactory(config, version) {
|
|
|
287
580
|
annotations: READ_ONLY
|
|
288
581
|
}, guard(async () => withDb(config, (db) => ({ objects: db.schema() }))));
|
|
289
582
|
server.registerResource("run", new ResourceTemplate("reeval://runs/{runId}", { list: async () => {
|
|
290
|
-
const { listHeaders } = await import("./source-
|
|
583
|
+
const { listHeaders } = await import("./source-fGd0SaKP.js");
|
|
291
584
|
return { resources: [...await listHeaders(source(config))].reverse().map((r) => ({
|
|
292
585
|
uri: `reeval://runs/${r.runId}`,
|
|
293
586
|
name: r.runId,
|
|
@@ -339,6 +632,16 @@ const decode = (s) => {
|
|
|
339
632
|
return s;
|
|
340
633
|
}
|
|
341
634
|
};
|
|
635
|
+
/**
|
|
636
|
+
* History without each run's evals[], which repeat rows[] with every cell's fingerprint and sources:
|
|
637
|
+
* kilobytes a run, and some MCP clients show a long tool result as empty.
|
|
638
|
+
*/
|
|
639
|
+
function briefHistory(view) {
|
|
640
|
+
return {
|
|
641
|
+
...view,
|
|
642
|
+
runs: view.runs.map(({ evals: _, ...run }) => run)
|
|
643
|
+
};
|
|
644
|
+
}
|
|
342
645
|
function rowsOf(result, limit) {
|
|
343
646
|
return {
|
|
344
647
|
columns: result.columns,
|
|
@@ -360,7 +663,7 @@ async function mcpCommand({ config, flags, version }) {
|
|
|
360
663
|
"port",
|
|
361
664
|
"host",
|
|
362
665
|
"token"
|
|
363
|
-
]) if (flags[name] !== void 0) throw new UsageError(`--${name} needs --http`);
|
|
666
|
+
]) if (flags[name] !== void 0) throw new UsageError(`--${name} needs --http: reeval mcp serves over stdio without it`);
|
|
364
667
|
}
|
|
365
668
|
const factory = await serverFactory(config, version);
|
|
366
669
|
if (!flags.http) {
|
|
@@ -386,12 +689,12 @@ async function serveHttp(factory, config, flags) {
|
|
|
386
689
|
const host = flags.host ?? "127.0.0.1";
|
|
387
690
|
if (host !== "127.0.0.1" && host !== "localhost" && host !== "::1") console.error(`warning: reeval mcp is listening on ${host}, reachable beyond this machine`);
|
|
388
691
|
const token = flags.token ?? (process.env.REEVAL_MCP_TOKEN || void 0);
|
|
389
|
-
if (token !== void 0 && !token.trim()) throw new UsageError("--token needs a value");
|
|
692
|
+
if (token !== void 0 && !token.trim()) throw new UsageError("--token needs a value: --token <secret>, or REEVAL_MCP_TOKEN");
|
|
390
693
|
registerSecret(token);
|
|
391
694
|
const { createMcpHandler } = await import("@modelcontextprotocol/server");
|
|
392
695
|
const { Hono } = await import("hono");
|
|
393
696
|
const { serve } = await import("@hono/node-server");
|
|
394
|
-
const { allowedHosts } = await import("./server-
|
|
697
|
+
const { allowedHosts } = await import("./server-C7sg1ndo.js");
|
|
395
698
|
const hosts = allowedHosts(host, port);
|
|
396
699
|
const handler = createMcpHandler(factory, { onerror: report });
|
|
397
700
|
const app = new Hono();
|
|
@@ -413,7 +716,7 @@ async function serveHttp(factory, config, flags) {
|
|
|
413
716
|
hostname: host,
|
|
414
717
|
port
|
|
415
718
|
});
|
|
416
|
-
s.once("error", (error) => reject(error.code === "EADDRINUSE" ? new UsageError(`Port ${port} is in use
|
|
719
|
+
s.once("error", (error) => reject(error.code === "EADDRINUSE" ? new UsageError(`Port ${port} is in use: pass another with --port`) : error));
|
|
417
720
|
s.once("listening", () => resolve(s));
|
|
418
721
|
});
|
|
419
722
|
const url = `http://${host.includes(":") ? `[${host}]` : host}:${port}/mcp`;
|
|
@@ -429,4 +732,4 @@ async function serveHttp(factory, config, flags) {
|
|
|
429
732
|
//#endregion
|
|
430
733
|
export { mcpCommand };
|
|
431
734
|
|
|
432
|
-
//# sourceMappingURL=command-
|
|
735
|
+
//# sourceMappingURL=command-BT9a37ZR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-BT9a37ZR.js","names":[],"sources":["../src/mcp/files.ts","../src/mcp/failures.ts","../src/mcp/server.ts","../src/mcp/command.ts"],"mappings":"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"}
|