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
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as inCI } from "./env-BQqj93gu.js";
|
|
2
|
-
import { c as stripCredentials } from "./redact-DJ9JCShu.js";
|
|
3
1
|
import { l as sha256, u as slugify } from "./ids-Bp6ut7ZD.js";
|
|
4
|
-
import {
|
|
2
|
+
import { v as inCI } from "./config-DrVSEVN0.js";
|
|
3
|
+
import { c as stripCredentials } from "./redact-DJ9JCShu.js";
|
|
4
|
+
import { r as repoTop, t as git } from "./git-Crl3b87o.js";
|
|
5
5
|
import { hostname, userInfo } from "node:os";
|
|
6
6
|
import { relative, sep } from "node:path";
|
|
7
7
|
//#region src/history/provenance.ts
|
|
@@ -82,7 +82,7 @@ function runtimeInfo(versions = process.versions) {
|
|
|
82
82
|
function runnerInfo(env = process.env) {
|
|
83
83
|
if (!inCI(env)) return {
|
|
84
84
|
kind: "local",
|
|
85
|
-
hostHash: sha256(`
|
|
85
|
+
hostHash: sha256(`reeval:${hostname()}`).slice(0, 12)
|
|
86
86
|
};
|
|
87
87
|
if (env.GITHUB_ACTIONS) {
|
|
88
88
|
const runUrl = env.GITHUB_SERVER_URL && env.GITHUB_REPOSITORY && env.GITHUB_RUN_ID ? `${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}` : null;
|
|
@@ -144,4 +144,4 @@ async function author(root, env = process.env) {
|
|
|
144
144
|
//#endregion
|
|
145
145
|
export { runtimeInfo as i, gitInfo as n, runnerInfo as r, author as t };
|
|
146
146
|
|
|
147
|
-
//# sourceMappingURL=provenance-
|
|
147
|
+
//# sourceMappingURL=provenance-DQ0AXn6c.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provenance-
|
|
1
|
+
{"version":3,"file":"provenance-DQ0AXn6c.js","names":[],"sources":["../src/history/provenance.ts"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { t as PrepareError } from "./provider-CmAYTQQs.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { t as attemptImage, o as dockerProvider, c as podmanConfinementProblem, u as requireDocker } from "./providers-DoTq1jHW.js";
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { n as UsageError } from "./errors-B6BSMs03.js";
|
|
2
|
+
import { Y as dockerState, ft as engineSpec, rt as ImageBuildError, st as isTransient } from "./src-ftu5wPSt.js";
|
|
3
|
+
import { t as PrepareError } from "./provider-CmAYTQQs.js";
|
|
4
|
+
//#region src/sandbox/providers.ts
|
|
5
|
+
/** The key of a Docker sandbox's image: what's in it, not the limits or user it runs with. */
|
|
6
|
+
const dockerKey = (sandbox, harness) => {
|
|
7
|
+
const kind = harness.kind === "fake" ? harness.layout ?? "cursor" : harness.kind;
|
|
8
|
+
const { image, from, dockerfile, install } = sandbox;
|
|
9
|
+
return JSON.stringify({
|
|
10
|
+
harness: kind,
|
|
11
|
+
image: {
|
|
12
|
+
image,
|
|
13
|
+
from,
|
|
14
|
+
dockerfile,
|
|
15
|
+
install
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
/** How Docker's build errors class: a named cause is a resource, a network error transient. */
|
|
20
|
+
function classifyDocker(error) {
|
|
21
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
22
|
+
if (error instanceof ImageBuildError) {
|
|
23
|
+
const { stage, ref, transient, cause, log } = error.failure;
|
|
24
|
+
return {
|
|
25
|
+
class: cause ? "resource" : transient ? "transient" : "config",
|
|
26
|
+
stage,
|
|
27
|
+
ref,
|
|
28
|
+
cause,
|
|
29
|
+
log,
|
|
30
|
+
message
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
class: isTransient(message) ? "transient" : "config",
|
|
35
|
+
stage: "image",
|
|
36
|
+
ref: null,
|
|
37
|
+
cause: null,
|
|
38
|
+
log: null,
|
|
39
|
+
message
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** Why Docker (or Podman) can't run a sandbox, as the fix a user needs; null when it can. */
|
|
43
|
+
function dockerProblem(state, platform = process.platform, engine = "docker") {
|
|
44
|
+
if (state === "running") return null;
|
|
45
|
+
if (engine === "podman") return podmanProblem(platform);
|
|
46
|
+
if (state === "windows-containers") return "Docker is running Windows containers, but reeval's sandboxes are Linux containers. Switch Docker Desktop to Linux containers (its tray menu: Switch to Linux containers) and try again.";
|
|
47
|
+
return platform === "win32" ? "Docker is not running. Start Docker Desktop (with the WSL 2 backend and Linux containers) and try again." : "Docker is not running. Start Docker and try again.";
|
|
48
|
+
}
|
|
49
|
+
const upper = (s) => s.charAt(0).toUpperCase() + s.slice(1);
|
|
50
|
+
/** Podman doesn't answer: not installed, or (macOS, Windows) its machine isn't running. */
|
|
51
|
+
function podmanProblem(platform) {
|
|
52
|
+
return platform === "linux" ? "Podman isn't answering: `podman info` failed. Install Podman 4 or later (your distribution's podman package) and check `podman info` works as you, then try again." : "Podman isn't answering: `podman info` failed. Start its machine (podman machine init, then podman machine start) and try again.";
|
|
53
|
+
}
|
|
54
|
+
/** Throws a usage error unless Docker (or Podman) can run a sandbox. */
|
|
55
|
+
async function requireDocker(engine = "docker") {
|
|
56
|
+
const problem = dockerProblem(await dockerState(engine), process.platform, engine);
|
|
57
|
+
if (problem) throw new UsageError(problem);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Why Podman can't confine a sandbox as reeval needs, or null: too old for the bridge network
|
|
61
|
+
* rootless, or a rootless cgroup without the controllers `--cpus`, `--memory` and `--pids-limit`
|
|
62
|
+
* need (systemd before 252 delegates only memory and pids).
|
|
63
|
+
*/
|
|
64
|
+
function podmanInfoProblem(info) {
|
|
65
|
+
if (Number(/^(\d+)/.exec(info.version)?.[1]) < 4) return {
|
|
66
|
+
problem: `Podman ${info.version} is too old for reeval's sandboxes, which need Podman 4 or later (its rootless bridge network)`,
|
|
67
|
+
fix: "upgrade Podman"
|
|
68
|
+
};
|
|
69
|
+
const missing = [
|
|
70
|
+
"cpu",
|
|
71
|
+
"memory",
|
|
72
|
+
"pids"
|
|
73
|
+
].filter((c) => !(info.controllers ?? []).includes(c));
|
|
74
|
+
if (info.rootless && missing.length) {
|
|
75
|
+
const names = missing.join(", ");
|
|
76
|
+
return {
|
|
77
|
+
problem: `rootless Podman can't limit a sandbox's ${names}: your user's cgroup doesn't have the ${names} controller${missing.length === 1 ? "" : "s"}`,
|
|
78
|
+
fix: "delegate them with a systemd drop-in for user@.service (Delegate=cpu cpuset io memory pids), then log in again"
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
/** {@link podmanInfoProblem} for this host's Podman; null when `podman info` doesn't answer. */
|
|
84
|
+
async function podmanConfinementProblem() {
|
|
85
|
+
const { docker } = await import("./src-DYO3DdnQ.js");
|
|
86
|
+
const r = await docker([
|
|
87
|
+
"info",
|
|
88
|
+
"--format",
|
|
89
|
+
"{{json .Version.Version}} {{json .Host.Security.Rootless}} {{json .Host.CgroupControllers}}"
|
|
90
|
+
], { engine: "podman" }).catch(() => null);
|
|
91
|
+
if (r?.exitCode !== 0) return null;
|
|
92
|
+
const [version, rootless, controllers] = r.stdout.toString("utf8").trim().split(/\s+/).map((v) => JSON.parse(v));
|
|
93
|
+
return podmanInfoProblem({
|
|
94
|
+
version,
|
|
95
|
+
rootless,
|
|
96
|
+
controllers
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/** Docker or Podman: one image per key, each sub-image built once per provider (so once per run). */
|
|
100
|
+
function dockerProvider(options = {}) {
|
|
101
|
+
const engine = options.engine ?? "docker";
|
|
102
|
+
let builds;
|
|
103
|
+
return {
|
|
104
|
+
kind: engine,
|
|
105
|
+
async check() {
|
|
106
|
+
const confinement = engine === "podman" ? await podmanConfinementProblem() : null;
|
|
107
|
+
const problem = dockerProblem(await dockerState(engine), process.platform, engine) ?? (confinement && `${upper(confinement.problem)}: ${confinement.fix}, and try again.`);
|
|
108
|
+
if (!problem) return;
|
|
109
|
+
throw new PrepareError({
|
|
110
|
+
class: "config",
|
|
111
|
+
stage: engineSpec(engine).bin,
|
|
112
|
+
ref: null,
|
|
113
|
+
cause: null,
|
|
114
|
+
log: null,
|
|
115
|
+
usage: true,
|
|
116
|
+
message: problem
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
key: dockerKey,
|
|
120
|
+
async prepare(sandbox, harness, ctx) {
|
|
121
|
+
const { createBuilds, imageHarness, prepareImage } = await import("./prepare-DCKTLHN3.js");
|
|
122
|
+
builds ??= createBuilds({
|
|
123
|
+
retry: ctx.retry,
|
|
124
|
+
log: ctx.log,
|
|
125
|
+
refresh: options.refresh ?? "none",
|
|
126
|
+
engine
|
|
127
|
+
});
|
|
128
|
+
return await prepareImage(sandbox, imageHarness(harness), ctx.root, ctx.signal, builds);
|
|
129
|
+
},
|
|
130
|
+
classify: classifyDocker
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* The image a Docker sandbox's `prepare` returned. Handles are opaque to preflight and round-trip
|
|
135
|
+
* through `prepared.json`, so only the Docker provider's own type says what this one holds.
|
|
136
|
+
*/
|
|
137
|
+
const attemptImage = (handle) => handle;
|
|
138
|
+
/** The fake sandbox is a temp directory on the host: nothing to check or prepare. */
|
|
139
|
+
const fakeProvider = () => ({
|
|
140
|
+
kind: "fake",
|
|
141
|
+
check: async () => {},
|
|
142
|
+
key: () => "fake",
|
|
143
|
+
prepare: async () => null,
|
|
144
|
+
classify: (error) => ({
|
|
145
|
+
class: "config",
|
|
146
|
+
stage: "fake",
|
|
147
|
+
ref: null,
|
|
148
|
+
cause: null,
|
|
149
|
+
log: null,
|
|
150
|
+
message: error instanceof Error ? error.message : String(error)
|
|
151
|
+
})
|
|
152
|
+
});
|
|
153
|
+
/** A fresh set of providers, one per run: each keeps the run's builds. */
|
|
154
|
+
const createProviders = (options = {}) => ({
|
|
155
|
+
docker: dockerProvider(options),
|
|
156
|
+
podman: dockerProvider({
|
|
157
|
+
...options,
|
|
158
|
+
engine: "podman"
|
|
159
|
+
}),
|
|
160
|
+
fake: fakeProvider()
|
|
161
|
+
});
|
|
162
|
+
//#endregion
|
|
163
|
+
export { dockerProblem as a, podmanConfinementProblem as c, dockerKey as i, podmanInfoProblem as l, classifyDocker as n, dockerProvider as o, createProviders as r, fakeProvider as s, attemptImage as t, requireDocker as u };
|
|
164
|
+
|
|
165
|
+
//# sourceMappingURL=providers-DoTq1jHW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers-DoTq1jHW.js","names":[],"sources":["../src/sandbox/providers.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { n as UsageError } from "./errors-B6BSMs03.js";
|
|
2
|
+
import { n as clip } from "./text-gEcKjAyp.js";
|
|
3
|
+
//#region src/query.ts
|
|
4
|
+
const EXAMPLES = [
|
|
5
|
+
"reeval query lift",
|
|
6
|
+
`reeval query "SELECT eval_key, variant, points, lo, hi FROM lift WHERE within_noise = 0"`,
|
|
7
|
+
`reeval query "SELECT * FROM failing_attempts WHERE skill = 'house-greeting' AND model LIKE 'composer%'"`,
|
|
8
|
+
`reeval query "SELECT eval_key, cell_key, first_seen, flaky_runs FROM flaky_cells"`,
|
|
9
|
+
`reeval query "SELECT run_id, eval_key, changed FROM drift ORDER BY run_id DESC LIMIT 20"`,
|
|
10
|
+
`reeval query "SELECT eval_key, outcome FROM evals WHERE run_id = :run" --run last`,
|
|
11
|
+
`reeval query "SELECT branch, outcome, COUNT(*) AS n FROM eval_trend GROUP BY branch, outcome" --json`
|
|
12
|
+
];
|
|
13
|
+
/**
|
|
14
|
+
* A text cell, clipped to 60 characters, except a `sql` column: no view or table of reeval's has
|
|
15
|
+
* one, so it's `sqlite_schema.sql`, a CREATE statement only useful whole.
|
|
16
|
+
*/
|
|
17
|
+
const cell = (value, column) => {
|
|
18
|
+
if (value === null || value === void 0) return "·";
|
|
19
|
+
const text = typeof value === "object" ? JSON.stringify(value) : String(value);
|
|
20
|
+
return column === "sql" ? text : clip(text, 60);
|
|
21
|
+
};
|
|
22
|
+
const width = (text) => Math.max(...text.split("\n").map((line) => line.length));
|
|
23
|
+
/** Rows as an aligned table: a header, then one line per row. */
|
|
24
|
+
function formatRows({ columns, rows }) {
|
|
25
|
+
if (rows.length === 0) return "(no rows)";
|
|
26
|
+
const table = [columns, ...rows.map((r) => columns.map((c) => cell(r[c], c)))];
|
|
27
|
+
const widths = columns.map((_, i) => Math.max(...table.map((r) => width(r[i] ?? ""))));
|
|
28
|
+
return table.map((r) => r.map((v, i) => i === r.length - 1 ? v : v.padEnd(widths[i] ?? 0)).join(" ").trimEnd()).join("\n");
|
|
29
|
+
}
|
|
30
|
+
function formatSchema(schema, withExamples) {
|
|
31
|
+
const block = (type, title) => [title, ...schema.filter((o) => o.type === type).map((o) => ` ${o.name}(${o.columns.join(", ")})`)];
|
|
32
|
+
return [
|
|
33
|
+
...block("view", "Views (the common questions; filter them with SQL):"),
|
|
34
|
+
"",
|
|
35
|
+
...block("table", "Tables:"),
|
|
36
|
+
...withExamples ? [
|
|
37
|
+
"",
|
|
38
|
+
"Examples:",
|
|
39
|
+
...EXAMPLES.map((e) => ` ${e}`)
|
|
40
|
+
] : []
|
|
41
|
+
].join("\n");
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Whether `sql` holds more than one statement: SQLite would run the first and ignore the rest.
|
|
45
|
+
* Semicolons inside quotes, identifiers and comments don't count; a trailing one is fine.
|
|
46
|
+
*/
|
|
47
|
+
function statementCount(sql) {
|
|
48
|
+
let count = 0;
|
|
49
|
+
let pending = false;
|
|
50
|
+
for (let i = 0; i < sql.length; i++) {
|
|
51
|
+
const c = sql[i];
|
|
52
|
+
if (c === "'" || c === "\"" || c === "`") {
|
|
53
|
+
const end = sql.indexOf(c, i + 1);
|
|
54
|
+
i = end === -1 ? sql.length : end;
|
|
55
|
+
pending = true;
|
|
56
|
+
} else if (c === "-" && sql[i + 1] === "-") {
|
|
57
|
+
const end = sql.indexOf("\n", i);
|
|
58
|
+
i = end === -1 ? sql.length : end;
|
|
59
|
+
} else if (c === "/" && sql[i + 1] === "*") {
|
|
60
|
+
const end = sql.indexOf("*/", i + 2);
|
|
61
|
+
i = end === -1 ? sql.length : end + 1;
|
|
62
|
+
} else if (c === ";") {
|
|
63
|
+
if (pending) count++;
|
|
64
|
+
pending = false;
|
|
65
|
+
} else if (!/\s/.test(c)) pending = true;
|
|
66
|
+
}
|
|
67
|
+
return count + (pending ? 1 : 0);
|
|
68
|
+
}
|
|
69
|
+
/** Whether `sql` names the `:run` parameter (or `$run`, `@run`) outside quotes and comments. */
|
|
70
|
+
function usesRunParameter(sql) {
|
|
71
|
+
let code = "";
|
|
72
|
+
for (let i = 0; i < sql.length; i++) {
|
|
73
|
+
const c = sql[i];
|
|
74
|
+
let end = -1;
|
|
75
|
+
if (c === "'" || c === "\"" || c === "`") end = sql.indexOf(c, i + 1);
|
|
76
|
+
else if (c === "-" && sql[i + 1] === "-") end = sql.indexOf("\n", i);
|
|
77
|
+
else if (c === "/" && sql[i + 1] === "*") end = sql.indexOf("*/", i + 2) + 1;
|
|
78
|
+
else {
|
|
79
|
+
code += c;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
code += " ";
|
|
83
|
+
i = end <= 0 ? sql.length : end;
|
|
84
|
+
}
|
|
85
|
+
return /[:$@]run\b/.test(code);
|
|
86
|
+
}
|
|
87
|
+
/** The run id `ref` names in history.db: `last` (or `latest`) by started_at, an id or a unique prefix. */
|
|
88
|
+
function resolveRunRef(db, ref) {
|
|
89
|
+
if (ref === "last" || ref === "latest") {
|
|
90
|
+
const [row] = db.query("SELECT run_id FROM runs ORDER BY started_at DESC, run_id DESC LIMIT 1").rows;
|
|
91
|
+
if (!row) throw new UsageError(`reeval query --run ${ref}: .reeval/history.db has no runs yet.`);
|
|
92
|
+
return String(row.run_id);
|
|
93
|
+
}
|
|
94
|
+
const ids = db.query("SELECT run_id FROM runs WHERE substr(run_id, 1, length(?)) = ? ORDER BY run_id", [ref, ref]).rows.map((r) => String(r.run_id));
|
|
95
|
+
if (ids.includes(ref)) return ref;
|
|
96
|
+
if (ids.length === 1) return ids[0];
|
|
97
|
+
throw new UsageError(ids.length > 1 ? `reeval query --run ${ref}: "${ref}" matches ${ids.length} runs; use more of the id.` : `reeval query --run ${ref}: no run "${ref}" in .reeval/history.db. Pass last, or a run id from reeval query "SELECT run_id, started_at FROM runs ORDER BY started_at DESC".`);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* `reeval query [sql | view] [--run <id|last>] [--json] [--schema] [--rebuild]`. With no statement
|
|
101
|
+
* it lists the views and tables; a bare name selects everything from that view or table (with
|
|
102
|
+
* `--run`, that run's rows). `--run` binds `:run` in a statement and never rewrites it.
|
|
103
|
+
*/
|
|
104
|
+
async function queryCommand(ctx, args) {
|
|
105
|
+
const { openHistoryDb } = await import("./db-CKg5NtiW.js");
|
|
106
|
+
const db = await openHistoryDb(ctx.config.root, ctx.config.history.dir, { rebuild: !!ctx.flags.rebuild });
|
|
107
|
+
try {
|
|
108
|
+
const { sync } = db;
|
|
109
|
+
ctx.err(`history.db: ${sync.runs} runs${sync.rebuilt ? ", rebuilt" : ""}${sync.added ? `, ${sync.added} read` : ""}${sync.removed ? `, ${sync.removed} removed` : ""}`);
|
|
110
|
+
const text = args.join(" ").trim();
|
|
111
|
+
const schema = db.schema();
|
|
112
|
+
if (!text || ctx.flags.schema) {
|
|
113
|
+
ctx.out(ctx.flags.json ? JSON.stringify(schema, null, 2) : formatSchema(schema, !text));
|
|
114
|
+
return 0;
|
|
115
|
+
}
|
|
116
|
+
let sql = text;
|
|
117
|
+
if (statementCount(text) > 1) throw new UsageError("reeval query runs one statement at a time; drop the extra ones after \";\".");
|
|
118
|
+
const run = ctx.flags.run;
|
|
119
|
+
if (/^[A-Za-z_]\w*$/.test(text)) {
|
|
120
|
+
const object = schema.find((o) => o.name === text);
|
|
121
|
+
if (!object) {
|
|
122
|
+
const names = (type) => schema.filter((o) => o.type === type).map((o) => o.name).join(", ");
|
|
123
|
+
throw new UsageError(`reeval query: no view or table named "${text}". Views: ${names("view")}. Tables: ${names("table")}. Run reeval query --schema for every column.`);
|
|
124
|
+
}
|
|
125
|
+
if (run !== void 0 && !object.columns.includes("run_id")) throw new UsageError(`reeval query ${text} --run: ${text} has no run_id column (it pools runs), so --run can't filter it.`);
|
|
126
|
+
sql = `SELECT * FROM "${text}"${run === void 0 ? "" : " WHERE run_id = :run"}`;
|
|
127
|
+
} else if (run === void 0 && usesRunParameter(sql)) throw new UsageError("reeval query: the statement uses :run but no --run was given: pass --run <id|last>.");
|
|
128
|
+
else if (run !== void 0 && !usesRunParameter(sql)) throw new UsageError(`reeval query --run ${run}: --run binds :run, which the statement doesn't use; add WHERE run_id = :run.`);
|
|
129
|
+
const result = run === void 0 ? db.query(sql) : db.query(sql, { run: resolveRunRef(db, run) });
|
|
130
|
+
ctx.out(ctx.flags.json ? JSON.stringify(result.rows, null, 2) : formatRows(result));
|
|
131
|
+
return 0;
|
|
132
|
+
} finally {
|
|
133
|
+
db.close();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//#endregion
|
|
137
|
+
export { usesRunParameter as i, queryCommand as n, statementCount as r, formatRows as t };
|
|
138
|
+
|
|
139
|
+
//# sourceMappingURL=query-BO-ux7RB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-BO-ux7RB.js","names":[],"sources":["../src/query.ts"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { n as queryCommand } from "./query-BO-ux7RB.js";
|