reeval 0.9.0 → 0.11.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 +99 -64
- package/THIRD_PARTY_NOTICES.md +288 -112
- package/assets/package.json +1 -1
- package/assets/pnpm-lock.yaml +30 -30
- package/dist/adapter-Bwy3QxAK.js +279 -0
- package/dist/adapter-Bwy3QxAK.js.map +1 -0
- package/dist/{agent-6FefIhX7.js → agent-D483ru7D.js} +6 -6
- package/dist/{agent-6FefIhX7.js.map → agent-D483ru7D.js.map} +1 -1
- package/dist/{agent-WSmTaesf.js → agent-DpE80WPz.js} +46 -15
- package/dist/agent-DpE80WPz.js.map +1 -0
- package/dist/{analysis-DlGBDjTj.js → analysis-Bxub9LMT.js} +4 -4
- package/dist/{analysis-DlGBDjTj.js.map → analysis-Bxub9LMT.js.map} +1 -1
- package/dist/assemble-D5KGrwnJ.js +1 -0
- package/dist/{assemble-BCZzTyR7.js → assemble-D9GWr-HS.js} +69 -41
- package/dist/assemble-D9GWr-HS.js.map +1 -0
- package/dist/{client-Bbo9SPlK.js → assert-EUIoRdIt.js} +10 -113
- package/dist/assert-EUIoRdIt.js.map +1 -0
- package/dist/bridge/index.mjs +260 -60
- package/dist/{capture-Bp74Z6Fr.js → capture-BQlGHiMC.js} +146 -32
- package/dist/capture-BQlGHiMC.js.map +1 -0
- package/dist/capture-CYGLpWxR.js +1 -0
- package/dist/{cli-CVrMh_qz.js → cli-ClpPT8kn.js} +229 -537
- package/dist/cli-ClpPT8kn.js.map +1 -0
- package/dist/{cli-spec-CKEYa8V2.js → cli-spec-qmEnQ25_.js} +50 -22
- package/dist/cli-spec-qmEnQ25_.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-DUT5l13I.js → command-Bj39y-Wm.js} +329 -87
- package/dist/command-Bj39y-Wm.js.map +1 -0
- package/dist/{command-BFP0hKEb.js → command-BlM0y8jN.js} +14 -14
- package/dist/{command-BFP0hKEb.js.map → command-BlM0y8jN.js.map} +1 -1
- package/dist/command-C-cVjlny.js +1 -0
- package/dist/{command-CzIFp1JQ.js → command-DbAe1Rzb.js} +19 -19
- package/dist/command-DbAe1Rzb.js.map +1 -0
- package/dist/{command-C5xFPKHM.js → command-TgbzPizb.js} +378 -74
- package/dist/command-TgbzPizb.js.map +1 -0
- package/dist/commands-CthqwkAn.js +1 -0
- package/dist/{commands-CLmPBrTS.js → commands-YUwlyTbr.js} +14 -11
- package/dist/commands-YUwlyTbr.js.map +1 -0
- package/dist/config-DrVSEVN0.js +774 -0
- package/dist/config-DrVSEVN0.js.map +1 -0
- package/dist/{context-DbSMEVKs.js → context-C1mxXh80.js} +11 -3
- package/dist/context-C1mxXh80.js.map +1 -0
- package/dist/contrasts-5zsj32gk.js +101 -0
- package/dist/contrasts-5zsj32gk.js.map +1 -0
- package/dist/db-CKg5NtiW.js +2 -0
- package/dist/{db-CfQFwJtq.js → db-DfhipHEF.js} +467 -38
- package/dist/db-DfhipHEF.js.map +1 -0
- package/dist/debug-D7bEv_UV.js +1 -0
- package/dist/{dist-CTzThfu_.js → dist-CuY4ehEk.js} +95 -15
- package/dist/dist-CuY4ehEk.js.map +1 -0
- package/dist/{docker-CRQGQbIt.js → docker-D1HZDS6q.js} +22 -21
- package/dist/docker-D1HZDS6q.js.map +1 -0
- package/dist/docker-DNmMPOBb.js +1 -0
- package/dist/{docker-DV2GNgle.js → docker-DOvjji9I.js} +3 -3
- package/dist/docker-DOvjji9I.js.map +1 -0
- package/dist/{doctor-DlKycx5H.js → doctor-D2MbNO8L.js} +262 -84
- package/dist/doctor-D2MbNO8L.js.map +1 -0
- package/dist/{egress-BhzNh7Yi.js → egress-2-qzPvGi.js} +146 -15
- package/dist/egress-2-qzPvGi.js.map +1 -0
- package/dist/environment-Cca6a4wB.js +1132 -0
- package/dist/environment-Cca6a4wB.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-DKIl54Hb.js +2348 -0
- package/dist/evaluate-DKIl54Hb.js.map +1 -0
- package/dist/evaluate-DMyaGQEj.d.ts +92 -0
- package/dist/files-BAt0i00X.js +1 -0
- package/dist/{files-DJUFg-4e.js → files-BXHZFWmx.js} +5 -5
- package/dist/{files-DJUFg-4e.js.map → files-BXHZFWmx.js.map} +1 -1
- package/dist/files-Bk1mC3AN.js +43 -0
- package/dist/files-Bk1mC3AN.js.map +1 -0
- package/dist/{files-CSzVADHn.js → files-BpUYBwGu.js} +11 -10
- package/dist/{files-CSzVADHn.js.map → files-BpUYBwGu.js.map} +1 -1
- package/dist/files-Bw8lWEjg.js +1 -0
- package/dist/files-D6J0iSdx.js +1 -0
- package/dist/{git-DfG-YJ1u.js → git-Crl3b87o.js} +2 -2
- package/dist/{git-DfG-YJ1u.js.map → git-Crl3b87o.js.map} +1 -1
- package/dist/harness-CEuntrla.js +323 -0
- package/dist/harness-CEuntrla.js.map +1 -0
- package/dist/harness.d.ts +16 -30
- package/dist/harness.js +1 -2
- package/dist/{header-CALhmafp.js → header-DHQv_ZrF.js} +2 -2
- package/dist/{header-CALhmafp.js.map → header-DHQv_ZrF.js.map} +1 -1
- package/dist/{images-BMgdpMAX.js → images-Bi3aGxb9.js} +114 -45
- package/dist/images-Bi3aGxb9.js.map +1 -0
- package/dist/index.d.ts +9 -37
- package/dist/index.js +6 -2138
- package/dist/{init-BIdLF0F9.js → init-Cl3f3NBT.js} +26 -8
- package/dist/init-Cl3f3NBT.js.map +1 -0
- package/dist/init-fhOXED8F.js +1 -0
- package/dist/{invocations-CLaL8AuW.js → invocations-BYDPe3fV.js} +4 -4
- package/dist/{invocations-CLaL8AuW.js.map → invocations-BYDPe3fV.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-CXhrziBe.js +1 -0
- package/dist/{model-B1BZoZ9b.js → model-D0IcOQao.js} +22 -20
- package/dist/model-D0IcOQao.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-BOnlAPzs.js → model-DaX4bNLZ.js} +123 -22
- package/dist/model-DaX4bNLZ.js.map +1 -0
- package/dist/model-_bxNrk2h.js +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-C0d0AzeR.js +1118 -0
- package/dist/options-C0d0AzeR.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-bDV8YFW0.js → patch-B1bnfhN-.js} +6 -6
- package/dist/{patch-bDV8YFW0.js.map → patch-B1bnfhN-.js.map} +1 -1
- package/dist/{plan-DUydFc_1.js → plan-DgQxp9yy.js} +34 -13
- package/dist/plan-DgQxp9yy.js.map +1 -0
- package/dist/{preflight-BkoSxf4C.js → preflight-BRzD30L5.js} +8 -7
- package/dist/preflight-BRzD30L5.js.map +1 -0
- package/dist/preflight-DlQvbySb.js +1 -0
- package/dist/{prepare-CUAWHebF.js → prepare-B_y-AFMv.js} +38 -30
- package/dist/prepare-B_y-AFMv.js.map +1 -0
- package/dist/prepare-DCKTLHN3.js +2 -0
- package/dist/{provenance-D7HK3vzt.js → provenance-DQ0AXn6c.js} +5 -5
- package/dist/{provenance-D7HK3vzt.js.map → provenance-DQ0AXn6c.js.map} +1 -1
- package/dist/provider-DehR4CMN.js +1 -0
- package/dist/providers-B9yTdIqF.js +1 -0
- package/dist/providers-DoTq1jHW.js +165 -0
- package/dist/providers-DoTq1jHW.js.map +1 -0
- package/dist/query-BO-ux7RB.js +139 -0
- package/dist/query-BO-ux7RB.js.map +1 -0
- package/dist/query-CRQfsw0e.js +1 -0
- package/dist/questions-C2dym2ce.js +524 -0
- package/dist/questions-C2dym2ce.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-CPPW86Q9.js +378 -0
- package/dist/remote-CPPW86Q9.js.map +1 -0
- package/dist/{results-Di7m8dQ3.js → results-BE2f-1XS.js} +6 -5
- package/dist/results-BE2f-1XS.js.map +1 -0
- package/dist/{resume-SUz1GskV.js → resume-Ca1c8vix.js} +10 -10
- package/dist/{resume-SUz1GskV.js.map → resume-Ca1c8vix.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-DdsfnRz_.js → runtime-PX_oXiCS.js} +23 -71
- package/dist/runtime-PX_oXiCS.js.map +1 -0
- package/dist/sandbox-DLrsvu7U.js +70 -0
- package/dist/sandbox-DLrsvu7U.js.map +1 -0
- package/dist/sandbox.d.ts +19 -6
- package/dist/sandbox.js +1 -2
- package/dist/server-Dp8eOeK5.js +1 -0
- package/dist/{server-BNnXtmS8.js → server-TUY5xA_A.js} +11 -11
- package/dist/server-TUY5xA_A.js.map +1 -0
- package/dist/shared-CA61BuPJ.js +188 -0
- package/dist/shared-CA61BuPJ.js.map +1 -0
- package/dist/{source-Dof0NQBm.js → source-DJGS0a0u.js} +2 -2
- package/dist/{source-Dof0NQBm.js.map → source-DJGS0a0u.js.map} +1 -1
- package/dist/source-DdbLGR1M.js +1 -0
- package/dist/src-BxfCKA3_.js +2 -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-C_4Umgh2.js → src-CFp86GtV.js} +52 -51
- package/dist/src-CFp86GtV.js.map +1 -0
- package/dist/src-CLoOMVWI.js +3 -0
- package/dist/src-CcrQbpG8.js +2 -0
- package/dist/src-DCFtJRp0.js +2 -0
- package/dist/src-DIL0jST0.js +368 -0
- package/dist/src-DIL0jST0.js.map +1 -0
- package/dist/src-DSYYPEOj.js +2 -0
- package/dist/src-DYO3DdnQ.js +1 -0
- package/dist/src-DvCg0NBs.js +324 -0
- package/dist/src-DvCg0NBs.js.map +1 -0
- package/dist/{src-COgE7991.js → src-DvK0EIZx.js} +5 -5
- package/dist/{src-COgE7991.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-WD-zgQYZ.js +2 -0
- package/dist/src-_oI9AePb.js +2 -0
- package/dist/{src-8rRXy4u9.js → src-ftu5wPSt.js} +1652 -182
- package/dist/src-ftu5wPSt.js.map +1 -0
- package/dist/src-qsKCqv7a.js +2 -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-CeR6oz0k.js +66 -0
- package/dist/state-CeR6oz0k.js.map +1 -0
- package/dist/{state-CiXyLqg0.js → state-DfpHox6b.js} +36 -24
- package/dist/state-DfpHox6b.js.map +1 -0
- package/dist/state-DpAxYyED.js +1 -0
- package/dist/studio-app/assets/index-CBkhNAv8.js +58 -0
- package/dist/studio-app/assets/index-CwQN3f_h.css +2 -0
- package/dist/studio-app/index.html +2 -2
- package/dist/suite-Cw_7G2RM.js +429 -0
- package/dist/suite-Cw_7G2RM.js.map +1 -0
- package/dist/suite-DamAEnNF.js +1 -0
- package/dist/summary-BUKfU-9l.js +611 -0
- package/dist/summary-BUKfU-9l.js.map +1 -0
- package/dist/{summary-2OAWF2N7.js → summary-Baa4rTHS.js} +7 -7
- package/dist/{summary-2OAWF2N7.js.map → summary-Baa4rTHS.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-B10Uj7OI.js → tools-DLHgetpx.js} +6 -6
- package/dist/tools-DLHgetpx.js.map +1 -0
- package/dist/transcript-BNNANU8A.js +64 -0
- package/dist/transcript-BNNANU8A.js.map +1 -0
- package/dist/{types-D8RLfkFP.d.ts → types-BYdlwMwo.d.ts} +398 -46
- 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 +290 -8
- package/dist/view/index.js +7 -7
- package/dist/{views-Dqa5ojfZ.js → views-B8w2J-gD.js} +19 -24
- package/dist/views-B8w2J-gD.js.map +1 -0
- package/dist/views-DblnI3kA.js +2 -0
- package/dist/{worker-entry-BAikHl9F.js → worker-entry-DNnveLqx.js} +16 -229
- package/dist/worker-entry-DNnveLqx.js.map +1 -0
- package/dist/{workspace-C-TrNIUc.js → workspace-C4RA3srV.js} +7 -7
- package/dist/{workspace-C-TrNIUc.js.map → workspace-C4RA3srV.js.map} +1 -1
- package/dist/workspace-C_X0tdv6.js +1 -0
- package/package.json +12 -12
- package/dist/agent-WSmTaesf.js.map +0 -1
- package/dist/assemble-BCZzTyR7.js.map +0 -1
- package/dist/assemble-C5qq5yT2.js +0 -2
- package/dist/capture-Bp74Z6Fr.js.map +0 -1
- package/dist/capture-DS-cPyuE.js +0 -2
- package/dist/cli-CVrMh_qz.js.map +0 -1
- package/dist/cli-spec-CKEYa8V2.js.map +0 -1
- package/dist/client-Bbo9SPlK.js.map +0 -1
- package/dist/command-BrmXUC-W.js +0 -2
- package/dist/command-C5xFPKHM.js.map +0 -1
- package/dist/command-CzIFp1JQ.js.map +0 -1
- package/dist/command-DUT5l13I.js.map +0 -1
- package/dist/commands-CLmPBrTS.js.map +0 -1
- package/dist/commands-fI3G2Wnh.js +0 -2
- package/dist/config-CGvBeewH.js +0 -457
- package/dist/config-CGvBeewH.js.map +0 -1
- package/dist/context-DbSMEVKs.js.map +0 -1
- package/dist/db-CSSFtGcN.js +0 -3
- package/dist/db-CfQFwJtq.js.map +0 -1
- package/dist/debug-SEmW4w8f.js +0 -2
- package/dist/dist-CTzThfu_.js.map +0 -1
- package/dist/docker-CRQGQbIt.js.map +0 -1
- package/dist/docker-DV2GNgle.js.map +0 -1
- package/dist/docker-Df_YOxxB.js +0 -2
- package/dist/doctor-DlKycx5H.js.map +0 -1
- package/dist/duration-JsJrIWXq.js +0 -26
- package/dist/duration-JsJrIWXq.js.map +0 -1
- package/dist/egress-BhzNh7Yi.js.map +0 -1
- package/dist/env-BQqj93gu.js +0 -21
- package/dist/env-BQqj93gu.js.map +0 -1
- package/dist/environment-1jE-HhO-.js +0 -657
- package/dist/environment-1jE-HhO-.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/family-D2b7WD10.js +0 -67
- package/dist/family-D2b7WD10.js.map +0 -1
- package/dist/files-AiEKuEZe.js +0 -2
- package/dist/files-BM78_nnF.js +0 -2
- package/dist/files-BMCvfB4X.js +0 -2
- package/dist/harness-CeCp2GSW.js +0 -171
- package/dist/harness-CeCp2GSW.js.map +0 -1
- package/dist/images-BMgdpMAX.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init-B6vegaP_.js +0 -2
- package/dist/init-BIdLF0F9.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-B1BZoZ9b.js.map +0 -1
- package/dist/model-BOnlAPzs.js.map +0 -1
- package/dist/model-DWeg5J7z.js +0 -2
- package/dist/model-FXko2kl7.js +0 -2
- package/dist/node-Co7EXge0.js.map +0 -1
- package/dist/opencode-providers-ByD85Q0l.js.map +0 -1
- package/dist/options-CKqyPGxX.js +0 -739
- package/dist/options-CKqyPGxX.js.map +0 -1
- package/dist/plan-DUydFc_1.js.map +0 -1
- package/dist/preflight-BkoSxf4C.js.map +0 -1
- package/dist/preflight-D5LW7Oqi.js +0 -2
- package/dist/prepare-CUAWHebF.js.map +0 -1
- package/dist/prepare-oji2oO8W.js +0 -3
- package/dist/process-CSVO_jsc.js +0 -119
- package/dist/process-CSVO_jsc.js.map +0 -1
- package/dist/provider-BDbNOQhQ.js +0 -2
- package/dist/providers-B1DzMvmH.js +0 -107
- package/dist/providers-B1DzMvmH.js.map +0 -1
- package/dist/providers-CpEfNU1F.js +0 -2
- package/dist/query-BjBMLa-C.js +0 -91
- package/dist/query-BjBMLa-C.js.map +0 -1
- package/dist/query-oPO_XrTy.js +0 -2
- package/dist/questions-B8by4Bbt.js +0 -234
- package/dist/questions-B8by4Bbt.js.map +0 -1
- package/dist/results-Di7m8dQ3.js.map +0 -1
- package/dist/runtime-DdsfnRz_.js.map +0 -1
- package/dist/sandbox-D5v-of6d.js +0 -139
- package/dist/sandbox-D5v-of6d.js.map +0 -1
- package/dist/server-BNnXtmS8.js.map +0 -1
- package/dist/server-BNwoKzlm.js +0 -2
- package/dist/source-Bk_0ZaEY.js +0 -2
- package/dist/src-8rRXy4u9.js.map +0 -1
- package/dist/src-BGWuWp6I.js +0 -3
- package/dist/src-BRt0O02i.js +0 -3
- package/dist/src-Bx2x1ekD.js +0 -3
- package/dist/src-C_4Umgh2.js.map +0 -1
- package/dist/src-D95O-Smv.js.map +0 -1
- package/dist/src-DDNXsD9H.js.map +0 -1
- package/dist/src-DLa-ESW0.js +0 -4
- package/dist/src-cN0aB-WR.js +0 -3
- package/dist/src-cdIVjC5b.js +0 -2
- package/dist/src-sIsDHWYq.js +0 -3
- package/dist/state-Bo5zg4da.js +0 -2
- package/dist/state-CiXyLqg0.js.map +0 -1
- package/dist/studio-app/assets/index-B9MCTfuu.css +0 -2
- package/dist/studio-app/assets/index-CROH2NB3.js +0 -58
- package/dist/summary-BTksrIxn.js +0 -254
- package/dist/summary-BTksrIxn.js.map +0 -1
- package/dist/tool-target-BU1JnSE9.js.map +0 -1
- package/dist/tools-B10Uj7OI.js.map +0 -1
- package/dist/views-Cs2Oqayd.js +0 -3
- package/dist/views-Dqa5ojfZ.js.map +0 -1
- package/dist/worker-entry-BAikHl9F.js.map +0 -1
- package/dist/workspace-Do_SiWBs.js +0 -2
package/README.md
CHANGED
|
@@ -64,8 +64,8 @@ evaluate(
|
|
|
64
64
|
)
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
- **Real agents in sandboxes.** Cursor, Claude Code, Codex, Antigravity, OpenCode, Goose
|
|
68
|
-
each work in a fresh local Docker container. Their API keys stay on the host: the sandbox gets
|
|
67
|
+
- **Real agents in sandboxes.** Cursor, Claude Code, Codex, Antigravity, OpenCode, Goose, pi, fx
|
|
68
|
+
and Grok Build each work in a fresh local Docker container. Their API keys stay on the host: the sandbox gets
|
|
69
69
|
a placeholder, and reeval's egress gateway swaps in the key only on requests to that provider.
|
|
70
70
|
- **Any environment.** Start from a git repository at a pinned ref, then add files, setup steps,
|
|
71
71
|
rules, skills, MCP servers and secrets, on reeval's image or your own `from` or Dockerfile.
|
|
@@ -74,9 +74,9 @@ evaluate(
|
|
|
74
74
|
nightly.
|
|
75
75
|
- **Checks and judges.** Deterministic checks on files, commands and the transcript decide pass
|
|
76
76
|
or fail; an LLM judge answers what they can't.
|
|
77
|
-
- **Compare, questions and analysis.** `compare`
|
|
78
|
-
|
|
79
|
-
pair and blind; `reeval analyze` writes a checked reading of a run.
|
|
77
|
+
- **Compare, questions and analysis.** `compare` says whether each variant helped over the
|
|
78
|
+
control, made it worse or can't tell yet (`-v` adds the 95% interval), and its effort;
|
|
79
|
+
`questions` asks a model which attempt did better, pair by pair and blind; `reeval analyze` writes a checked reading of a run.
|
|
80
80
|
- **Results in your repo.** Every run is a JSON record you can commit, diff with `reeval compare`,
|
|
81
81
|
query with SQL (`reeval query`) and browse in `reeval studio`.
|
|
82
82
|
|
|
@@ -86,14 +86,32 @@ all three agents passed every check.
|
|
|
86
86
|
```text
|
|
87
87
|
$ reeval run evals/api.eval.ts --runs 1
|
|
88
88
|
…
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
89
|
+
pass how well the api-conventions skill influences the output
|
|
90
|
+
cursor:composer-2.5
|
|
91
|
+
arm pass
|
|
92
|
+
nextjs-api 0 of 1
|
|
93
|
+
with-api-conventions 1 of 1 can't tell yet
|
|
94
|
+
check nextjs-api with-api-conventions
|
|
95
|
+
toHaveFile app/api/users/route.ts 0 of 1 1 of 1
|
|
96
|
+
expected app/api/users/route.ts to match /cursor/i
|
|
97
|
+
toSucceed npm run build not run 1 of 1
|
|
98
|
+
toSucceed npm test not run 1 of 1
|
|
99
|
+
toSucceed cat > /tmp/probe-users.mjs <<'EOF'… not run 1 of 1
|
|
100
|
+
toPass Do the tests follow nextCursor to the… not run 1 of 1
|
|
101
|
+
claude-code:claude-sonnet-5
|
|
102
|
+
arm pass
|
|
103
|
+
nextjs-api 0 of 1
|
|
104
|
+
with-api-conventions 1 of 1 can't tell yet
|
|
105
|
+
…
|
|
106
|
+
codex:gpt-5.6-luna
|
|
107
|
+
arm pass
|
|
108
|
+
nextjs-api 0 of 1
|
|
109
|
+
with-api-conventions 1 of 1 can't tell yet
|
|
110
|
+
…
|
|
111
|
+
question Which endpoint follows our API conventions?
|
|
112
|
+
claude-code:claude-sonnet-5 won 2 of 2
|
|
113
|
+
cursor:composer-2.5 won 1 of 4
|
|
114
|
+
codex:gpt-5.6-luna won 1 of 2
|
|
97
115
|
…
|
|
98
116
|
```
|
|
99
117
|
|
|
@@ -127,7 +145,8 @@ group('greet module', () => {
|
|
|
127
145
|
|
|
128
146
|
await expect(turn).toHaveFile('greet.js')
|
|
129
147
|
await expect(c.exec('node --test')).toSucceed()
|
|
130
|
-
|
|
148
|
+
const honest = "Does the agent's final message describe what it changed?"
|
|
149
|
+
expect(await c.judge(honest)).toPass()
|
|
131
150
|
})
|
|
132
151
|
})
|
|
133
152
|
```
|
|
@@ -139,8 +158,11 @@ import { cursor } from 'reeval/harness'
|
|
|
139
158
|
|
|
140
159
|
export default defineConfig({
|
|
141
160
|
include: ['evals/**/*.eval.ts'],
|
|
142
|
-
|
|
143
|
-
|
|
161
|
+
// or claudeCode, codex, antigravity, opencode, goose, pi, fx, grokBuild, or a
|
|
162
|
+
// list of harnesses: each is its own cell
|
|
163
|
+
harness: cursor({ model: 'composer-2.5' }),
|
|
164
|
+
// optional; pin the version
|
|
165
|
+
judge: { model: 'typesafe-ai/jev-1.14.0', threshold: 0.8 },
|
|
144
166
|
timeout: '15m',
|
|
145
167
|
profiles: {
|
|
146
168
|
pr: { limit: { runs: 1, compare: false }, budget: { attempts: 20 } },
|
|
@@ -185,75 +207,88 @@ group(
|
|
|
185
207
|
|
|
186
208
|
```text
|
|
187
209
|
$ reeval run skill --runs 2
|
|
188
|
-
plan 1 eval · 2 cells · 4 attempts · ~
|
|
210
|
+
plan run 20261020T213308Z_… · 1 eval · 2 cells · 4 attempts · ~52s serial (~13s at concurrency 4)
|
|
211
|
+
…
|
|
212
|
+
pass house greeting › greets in the house style
|
|
213
|
+
arm pass
|
|
214
|
+
plain 0 of 2
|
|
215
|
+
with-house-greeting 2 of 2 can't tell yet
|
|
216
|
+
check plain with-house-greeting
|
|
217
|
+
house greeting 0 of 2 2 of 2
|
|
218
|
+
expected command to succeed, exit code 1
|
|
219
|
+
+2 more passed
|
|
189
220
|
…
|
|
190
|
-
✓ greets in the house style 2/4 · pass@1 100% gated 4 attempts
|
|
191
|
-
cursor:composer-2.5/plain/docker control 0/2 pass@1 0% not gated
|
|
192
|
-
cursor:composer-2.5/with-house-greeting/docker variant 2/2 pass@1 100% lift +100 pts (95% +7…+100, 2/2 vs 0/2)
|
|
193
|
-
effort: tools 3 vs 8 (×0.38), agent 9s vs 18s (×0.50): too few attempts to test
|
|
194
221
|
```
|
|
195
222
|
|
|
196
223
|
## Run it
|
|
197
224
|
|
|
198
225
|
```text
|
|
199
|
-
$ CI=1 reeval run
|
|
200
|
-
plan profile pr (auto: CI is set) · 2 evals · 2 cells · 2 attempts · ~
|
|
201
|
-
reeval 0.0
|
|
226
|
+
$ CI=1 reeval run hello --output-logs full
|
|
227
|
+
plan run 20261020T220141Z_… · profile pr (auto: CI is set) · 2 evals · 2 cells · 2 attempts · ~25s serial (~13s at concurrency 4) · budget 20 attempts ✓
|
|
228
|
+
reeval 0.10.0 · run 20261020T220141Z_… · 1 eval file · harness cursor:composer-2.5 · sandbox docker · concurrency 4 · grouped logs
|
|
202
229
|
[creates#1 cursor] ▶ evals/hello.eval.ts › greet module › creates a tested greet module
|
|
203
|
-
[creates#1 cursor]
|
|
204
|
-
[creates#1 cursor] +0:
|
|
205
|
-
[creates#1 cursor] +0:
|
|
206
|
-
[creates#1 cursor] +0:
|
|
207
|
-
[creates#1 cursor] +0:13 judge pass 1.00 (≥ 0.8) Does the agent's final message accurately describe what it changed?
|
|
230
|
+
[creates#1 cursor] +0:00 sandbox ready 2s
|
|
231
|
+
[creates#1 cursor] +0:01 turn 1 done 6s · 2 tool calls, 2 file edits
|
|
232
|
+
[creates#1 cursor] +0:08 $ node --test exit 0 210ms
|
|
233
|
+
[creates#1 cursor] +0:08 judge pass 1.00 (≥ 0.8) Does the agent's final message accurately describe what it changed?
|
|
208
234
|
[adds#1 cursor] ▶ evals/hello.eval.ts › greet module › adds a default name in a follow-up turn
|
|
209
|
-
[adds#1 cursor]
|
|
210
|
-
|
|
235
|
+
[adds#1 cursor] +0:00 sandbox ready 2s
|
|
236
|
+
[adds#1 cursor] +0:01 turn 1 done 7s · 1 tool call, 1 file edit
|
|
237
|
+
[adds#1 cursor] +0:09 turn 2 done 4s · 1 tool call, 1 file edit
|
|
238
|
+
[adds#1 cursor] +0:12 $ node -e "import('./greet.js').then((m) => {… exit 0 105ms
|
|
239
|
+
[adds#1 cursor] +0:13 judge pass 1.00 (≥ 0.8) Did the agent add the default without breaking greet(name)?
|
|
240
|
+
|
|
241
|
+
pass greet module › creates a tested greet module
|
|
242
|
+
pass greet module › adds a default name in a follow-up turn
|
|
243
|
+
|
|
244
|
+
16s · 144k in (64k cached) · 863 out · results .reeval/runs/20261020T220141Z_…/summary.md
|
|
245
|
+
2 pass
|
|
246
|
+
Set analysis.model in reeval.config.ts for answers to what each eval asks.
|
|
247
|
+
recorded evals/.history/20261020T220141Z_….json + 10 artifact files in evals/.history/20261020T220141Z_…/ (41.8 KB). Commit it with git.
|
|
248
|
+
```
|
|
211
249
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
✓ adds a default name in a follow-up turn 23s judge 1.00 2 turns
|
|
250
|
+
Under a coding agent, reeval switches to compact output: the plan, the same result blocks and
|
|
251
|
+
the tally, with no per-attempt lines. To see what an attempt did step by step, add `-v`; `-vv`
|
|
252
|
+
adds the raw payloads and every `docker` command. Either way each attempt's trace stays local in `.reeval/debug`, never in
|
|
253
|
+
the committed history.
|
|
217
254
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
255
|
+
```bash
|
|
256
|
+
reeval record # copy the latest run into evals/.history/
|
|
257
|
+
reeval history # pass/fail per eval over recent runs
|
|
258
|
+
reeval compare # latest vs its nearest recorded ancestor
|
|
259
|
+
reeval query lift # each variant against its control
|
|
260
|
+
reeval query effort # tool calls, agent time and tokens
|
|
261
|
+
reeval query "SELECT * FROM failing_attempts WHERE skill = 'house-greeting'"
|
|
262
|
+
reeval analyze # a checked reading of a run
|
|
221
263
|
```
|
|
222
264
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
and `reeval
|
|
229
|
-
agent time and tokens, variant against control), `reeval query factor_effects`, or
|
|
230
|
-
`reeval query "SELECT * FROM failing_attempts WHERE skill = 'house-greeting'"`. Where the harness
|
|
231
|
-
reports them (Cursor, Claude Code, Antigravity, pi and Codex do), the record keeps each turn's tokens and the model that
|
|
232
|
-
served it, and totals them per attempt and per run.
|
|
233
|
-
|
|
234
|
-
`reeval analyze` explains a run: one LLM call over a digest of those facts, with every claim's
|
|
235
|
-
citations and every suggested command checked against reeval's own CLI. It's cached in `.reeval/`;
|
|
236
|
-
`--save` commits it next to the run, and `reeval analyze --context` hands the same digest to your own
|
|
237
|
-
coding agent instead, with no key.
|
|
265
|
+
Where the harness reports them (every harness but Goose does), the record
|
|
266
|
+
keeps each turn's tokens and the model that served it, and totals them per attempt and per run.
|
|
267
|
+
|
|
268
|
+
`reeval analyze` makes one LLM call over a digest of those facts, and checks every claim's
|
|
269
|
+
citations and every suggested command against reeval's own CLI. `--save` commits it next to the
|
|
270
|
+
run, and `reeval analyze --context` hands the same digest to your own coding agent, with no key.
|
|
238
271
|
|
|
239
272
|
## Studio
|
|
240
273
|
|
|
241
274
|
```bash
|
|
242
|
-
reeval studio #
|
|
243
|
-
reeval studio build --out site # the same
|
|
275
|
+
reeval studio # runs, evals and transcripts on :4984
|
|
276
|
+
reeval studio build --out site # the same as a static site, for any host
|
|
244
277
|
```
|
|
245
278
|
|
|
246
|
-
The studio shows each run's commit, pass counts and drift
|
|
247
|
-
rates, lift and effort, and
|
|
248
|
-
adds a Debug tab for attempts with local debug data.
|
|
279
|
+
The studio shows each run's commit, pass counts and drift, and its saved analyses. For compares
|
|
280
|
+
it shows per-cell pass rates, lift and effort, and for each attempt the transcript, diff, checks
|
|
281
|
+
and judge input. `reeval studio` adds a Debug tab for attempts with local debug data.
|
|
249
282
|
|
|
250
283
|
## Learn more
|
|
251
284
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
285
|
+
| For | Read |
|
|
286
|
+
|---|---|
|
|
287
|
+
| Learning reeval, from a first eval to CI | The Guide in [`docs/`](./docs), a [docs.page](https://use.docs.page) site (`npx @docs.page/cli preview`) |
|
|
288
|
+
| How it works, and complete solutions | The docs' Concepts and Recipes |
|
|
289
|
+
| Every option, command, flag, exit code and file format | The docs' Reference |
|
|
290
|
+
| Coding agents writing evals | The reeval skill, [`skills/reeval/SKILL.md`](./skills/reeval/SKILL.md) |
|
|
291
|
+
| Developing this repo | [AGENTS.md](./AGENTS.md) |
|
|
257
292
|
|
|
258
293
|
## License
|
|
259
294
|
|