reeval 0.8.0 → 0.9.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 +10 -10
- package/dist/{agent-B72lZ6w5.js → agent-6FefIhX7.js} +5 -5
- package/dist/{agent-B72lZ6w5.js.map → agent-6FefIhX7.js.map} +1 -1
- package/dist/{agent-Cfj1wD4D.js → agent-WSmTaesf.js} +51 -16
- package/dist/agent-WSmTaesf.js.map +1 -0
- package/dist/{analysis-BTNnKh1w.js → analysis-DlGBDjTj.js} +3 -3
- package/dist/{analysis-BTNnKh1w.js.map → analysis-DlGBDjTj.js.map} +1 -1
- package/dist/{assemble-BbFVjHeS.js → assemble-BCZzTyR7.js} +243 -11
- package/dist/assemble-BCZzTyR7.js.map +1 -0
- package/dist/assemble-C5qq5yT2.js +2 -0
- package/dist/{capture-BXhBfmsM.js → capture-Bp74Z6Fr.js} +66 -15
- package/dist/capture-Bp74Z6Fr.js.map +1 -0
- package/dist/capture-DS-cPyuE.js +2 -0
- package/dist/{cli-BMjTKY-D.js → cli-CVrMh_qz.js} +201 -108
- package/dist/cli-CVrMh_qz.js.map +1 -0
- package/dist/{cli-spec-DSvKsOK4.js → cli-spec-CKEYa8V2.js} +3 -3
- package/dist/{cli-spec-DSvKsOK4.js.map → cli-spec-CKEYa8V2.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{client-CwzU9CiW.js → client-Bbo9SPlK.js} +31 -2
- package/dist/client-Bbo9SPlK.js.map +1 -0
- package/dist/{command-BdstSEHu.js → command-BFP0hKEb.js} +7 -7
- package/dist/{command-BdstSEHu.js.map → command-BFP0hKEb.js.map} +1 -1
- package/dist/command-BrmXUC-W.js +2 -0
- package/dist/{command-BK4kOgkH.js → command-C5xFPKHM.js} +19 -18
- package/dist/command-C5xFPKHM.js.map +1 -0
- package/dist/{command-JPGNzFsA.js → command-CzIFp1JQ.js} +10 -10
- package/dist/{command-JPGNzFsA.js.map → command-CzIFp1JQ.js.map} +1 -1
- package/dist/{command-BqJtFiPy.js → command-DUT5l13I.js} +82 -32
- package/dist/command-DUT5l13I.js.map +1 -0
- package/dist/{commands-B618jg3C.js → commands-CLmPBrTS.js} +6 -6
- package/dist/{commands-B618jg3C.js.map → commands-CLmPBrTS.js.map} +1 -1
- package/dist/{commands-Duo2ur3r.js → commands-fI3G2Wnh.js} +1 -1
- package/dist/{config-B-E0xRkf.js → config-CGvBeewH.js} +17 -7
- package/dist/config-CGvBeewH.js.map +1 -0
- package/dist/{context-CvUv7DUb.js → context-DbSMEVKs.js} +1 -5
- package/dist/{context-CvUv7DUb.js.map → context-DbSMEVKs.js.map} +1 -1
- package/dist/{db-CnoUy-FZ.js → db-CSSFtGcN.js} +1 -1
- package/dist/{db-DFbtGIYy.js → db-CfQFwJtq.js} +137 -27
- package/dist/db-CfQFwJtq.js.map +1 -0
- package/dist/{docker-2qns7hJ2.js → docker-CRQGQbIt.js} +17 -5
- package/dist/docker-CRQGQbIt.js.map +1 -0
- package/dist/{docker-IFRW8K5f.js → docker-DV2GNgle.js} +2 -2
- package/dist/{docker-IFRW8K5f.js.map → docker-DV2GNgle.js.map} +1 -1
- package/dist/{docker-D6t23fZl.js → docker-Df_YOxxB.js} +1 -1
- package/dist/{doctor-B6oYTPoR.js → doctor-DlKycx5H.js} +12 -12
- package/dist/{doctor-B6oYTPoR.js.map → doctor-DlKycx5H.js.map} +1 -1
- package/dist/{egress-IUKdeayc.js → egress-BhzNh7Yi.js} +10 -9
- package/dist/{egress-IUKdeayc.js.map → egress-BhzNh7Yi.js.map} +1 -1
- package/dist/{environment-DiCljXMD.js → environment-1jE-HhO-.js} +2 -2
- package/dist/{environment-DiCljXMD.js.map → environment-1jE-HhO-.js.map} +1 -1
- package/dist/family-D2b7WD10.js +67 -0
- package/dist/family-D2b7WD10.js.map +1 -0
- package/dist/files-AiEKuEZe.js +2 -0
- package/dist/files-BMCvfB4X.js +2 -0
- package/dist/{files-CMSUXAEg.js → files-CSzVADHn.js} +4 -4
- package/dist/{files-CMSUXAEg.js.map → files-CSzVADHn.js.map} +1 -1
- package/dist/{files-B6aVVGrk.js → files-DJUFg-4e.js} +2 -2
- package/dist/{files-B6aVVGrk.js.map → files-DJUFg-4e.js.map} +1 -1
- 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-iqWeJQMM.js → harness-CeCp2GSW.js} +19 -2
- package/dist/harness-CeCp2GSW.js.map +1 -0
- package/dist/harness.d.ts +5 -3
- package/dist/harness.js +1 -1
- package/dist/{header-_F0EWob3.js → header-CALhmafp.js} +10 -3
- package/dist/{header-_F0EWob3.js.map → header-CALhmafp.js.map} +1 -1
- package/dist/{images-CscddrJU.js → images-BMgdpMAX.js} +6 -6
- package/dist/{images-CscddrJU.js.map → images-BMgdpMAX.js.map} +1 -1
- package/dist/index.d.ts +17 -5
- package/dist/index.js +92 -62
- package/dist/index.js.map +1 -1
- package/dist/init-B6vegaP_.js +2 -0
- package/dist/{init-NQfIvi-0.js → init-BIdLF0F9.js} +4 -4
- package/dist/{init-NQfIvi-0.js.map → init-BIdLF0F9.js.map} +1 -1
- package/dist/{invocations-nPvrlZPj.js → invocations-CLaL8AuW.js} +2 -2
- package/dist/{invocations-nPvrlZPj.js.map → invocations-CLaL8AuW.js.map} +1 -1
- package/dist/judge.d.ts +1 -1
- package/dist/{model-Cl507trk.js → model-B1BZoZ9b.js} +4 -4
- package/dist/{model-Cl507trk.js.map → model-B1BZoZ9b.js.map} +1 -1
- package/dist/{model-BndnmcLm.js → model-BOnlAPzs.js} +162 -17
- package/dist/model-BOnlAPzs.js.map +1 -0
- package/dist/model-DWeg5J7z.js +2 -0
- package/dist/{model-DMOraCcm.js → model-FXko2kl7.js} +1 -1
- package/dist/{options-DPUlm4FI.js → options-CKqyPGxX.js} +12 -8
- package/dist/options-CKqyPGxX.js.map +1 -0
- package/dist/{patch-CGCVipPu.js → patch-bDV8YFW0.js} +2 -2
- package/dist/{patch-CGCVipPu.js.map → patch-bDV8YFW0.js.map} +1 -1
- package/dist/{plan-PPc4-6xd.js → plan-DUydFc_1.js} +53 -25
- package/dist/plan-DUydFc_1.js.map +1 -0
- package/dist/{preflight-CddycK92.js → preflight-BkoSxf4C.js} +3 -3
- package/dist/{preflight-CddycK92.js.map → preflight-BkoSxf4C.js.map} +1 -1
- package/dist/{preflight-Zumy0adT.js → preflight-D5LW7Oqi.js} +1 -1
- package/dist/{prepare-CsP-057p.js → prepare-CUAWHebF.js} +5 -5
- package/dist/{prepare-CsP-057p.js.map → prepare-CUAWHebF.js.map} +1 -1
- package/dist/{prepare-CKdMoC7e.js → prepare-oji2oO8W.js} +2 -2
- package/dist/process-CSVO_jsc.js +119 -0
- package/dist/process-CSVO_jsc.js.map +1 -0
- package/dist/{provenance-CsX6PHDR.js → provenance-D7HK3vzt.js} +2 -2
- package/dist/{provenance-CsX6PHDR.js.map → provenance-D7HK3vzt.js.map} +1 -1
- package/dist/{providers-DkwiLKDS.js → providers-B1DzMvmH.js} +3 -3
- package/dist/{providers-DkwiLKDS.js.map → providers-B1DzMvmH.js.map} +1 -1
- package/dist/{providers-yXZZcPfx.js → providers-CpEfNU1F.js} +1 -1
- package/dist/{query-BUcwCYsI.js → query-BjBMLa-C.js} +2 -2
- package/dist/{query-BUcwCYsI.js.map → query-BjBMLa-C.js.map} +1 -1
- package/dist/query-oPO_XrTy.js +2 -0
- package/dist/{questions-BEPj98fZ.js → questions-B8by4Bbt.js} +3 -3
- package/dist/{questions-BEPj98fZ.js.map → questions-B8by4Bbt.js.map} +1 -1
- package/dist/{results-BcSHWbgB.js → results-Di7m8dQ3.js} +4 -4
- package/dist/{results-BcSHWbgB.js.map → results-Di7m8dQ3.js.map} +1 -1
- package/dist/{resume-DZ9AmfPv.js → resume-SUz1GskV.js} +3 -3
- package/dist/{resume-DZ9AmfPv.js.map → resume-SUz1GskV.js.map} +1 -1
- package/dist/{runtime-Dfb2r-cS.js → runtime-DdsfnRz_.js} +148 -6
- package/dist/runtime-DdsfnRz_.js.map +1 -0
- package/dist/{sandbox--ZXuscAZ.js → sandbox-D5v-of6d.js} +10 -5
- package/dist/sandbox-D5v-of6d.js.map +1 -0
- package/dist/sandbox.d.ts +4 -3
- package/dist/sandbox.js +1 -1
- package/dist/{server-Da60oe4b.js → server-BNnXtmS8.js} +7 -7
- package/dist/{server-Da60oe4b.js.map → server-BNnXtmS8.js.map} +1 -1
- package/dist/server-BNwoKzlm.js +2 -0
- package/dist/source-Bk_0ZaEY.js +2 -0
- package/dist/{source-BVOnL3sn.js → source-Dof0NQBm.js} +2 -2
- package/dist/{source-BVOnL3sn.js.map → source-Dof0NQBm.js.map} +1 -1
- package/dist/{src-TdJuDYqB.js → src-8rRXy4u9.js} +71 -124
- package/dist/src-8rRXy4u9.js.map +1 -0
- package/dist/{src-DdRlaiRc.js → src-BGWuWp6I.js} +1 -1
- package/dist/{src-D13vpMh0.js → src-BRt0O02i.js} +1 -1
- package/dist/{src-BrMbt1B2.js → src-Bx2x1ekD.js} +1 -1
- package/dist/{src-CxTC5kNI.js → src-COgE7991.js} +4 -6
- package/dist/{src-CxTC5kNI.js.map → src-COgE7991.js.map} +1 -1
- package/dist/{src-D_cXqmnI.js → src-C_4Umgh2.js} +9 -10
- package/dist/{src-D_cXqmnI.js.map → src-C_4Umgh2.js.map} +1 -1
- package/dist/src-DLa-ESW0.js +4 -0
- package/dist/src-cN0aB-WR.js +3 -0
- package/dist/{src-BT4dB5CO.js → src-cdIVjC5b.js} +1 -1
- package/dist/{src-BT5pwco0.js → src-sIsDHWYq.js} +1 -1
- package/dist/state-Bo5zg4da.js +2 -0
- package/dist/{state-B72h_jEw.js → state-CiXyLqg0.js} +5 -5
- package/dist/{state-B72h_jEw.js.map → state-CiXyLqg0.js.map} +1 -1
- package/dist/studio-app/assets/index-B9MCTfuu.css +2 -0
- package/dist/studio-app/assets/{index-Bgr-efZm.js → index-CROH2NB3.js} +12 -12
- package/dist/studio-app/index.html +2 -2
- package/dist/{summary-CJdxaRdM.js → summary-2OAWF2N7.js} +6 -6
- package/dist/{summary-CJdxaRdM.js.map → summary-2OAWF2N7.js.map} +1 -1
- package/dist/{summary-k3mhWWXv.js → summary-BTksrIxn.js} +58 -4
- package/dist/summary-BTksrIxn.js.map +1 -0
- package/dist/testing.d.ts +1 -1
- package/dist/{tools-D0gF2QoV.js → tools-B10Uj7OI.js} +4 -4
- package/dist/tools-B10Uj7OI.js.map +1 -0
- package/dist/types-C5vI3g1C.js.map +1 -1
- package/dist/{types-_LOFdPUf.d.ts → types-D8RLfkFP.d.ts} +195 -13
- package/dist/view/index.d.ts +44 -12
- package/dist/view/index.js +5 -4
- package/dist/views-Cs2Oqayd.js +3 -0
- package/dist/{views-DZ1YDqey.js → views-Dqa5ojfZ.js} +4 -4
- package/dist/{views-DZ1YDqey.js.map → views-Dqa5ojfZ.js.map} +1 -1
- package/dist/{worker-entry-DXeyWY-m.js → worker-entry-BAikHl9F.js} +9 -5
- package/dist/worker-entry-BAikHl9F.js.map +1 -0
- package/dist/{workspace-DpXdrslo.js → workspace-C-TrNIUc.js} +4 -4
- package/dist/{workspace-DpXdrslo.js.map → workspace-C-TrNIUc.js.map} +1 -1
- package/dist/{workspace-DzNL-3iO.js → workspace-Do_SiWBs.js} +1 -1
- package/docker/Dockerfile +7 -5
- package/package.json +1 -1
- 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/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/config-B-E0xRkf.js.map +0 -1
- package/dist/db-DFbtGIYy.js.map +0 -1
- package/dist/docker-2qns7hJ2.js.map +0 -1
- package/dist/files-BpYgF2z0.js +0 -2
- package/dist/files-YCCVaTQC.js +0 -2
- package/dist/harness-iqWeJQMM.js.map +0 -1
- package/dist/init-DBHyi92L.js +0 -2
- package/dist/model-BbLGRtOs.js +0 -2
- package/dist/model-BndnmcLm.js.map +0 -1
- package/dist/options-DPUlm4FI.js.map +0 -1
- package/dist/plan-PPc4-6xd.js.map +0 -1
- package/dist/query-noGbekGF.js +0 -2
- package/dist/runtime-Dfb2r-cS.js.map +0 -1
- package/dist/sandbox--ZXuscAZ.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-TdJuDYqB.js.map +0 -1
- package/dist/src-xczuQbE6.js +0 -3
- 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/tools-D0gF2QoV.js.map +0 -1
- package/dist/views-Ds0GXWtX.js +0 -3
- package/dist/worker-entry-DXeyWY-m.js.map +0 -1
|
@@ -3,25 +3,26 @@ import { t as parseDuration } from "./duration-JsJrIWXq.js";
|
|
|
3
3
|
import { n as loadEnvFiles, t as inCI } from "./env-BQqj93gu.js";
|
|
4
4
|
import { o as redactSecrets, s as registerSecret } from "./redact-DJ9JCShu.js";
|
|
5
5
|
import { o as PACKAGE_VERSION } from "./root-CvdRlRZX.js";
|
|
6
|
-
import { T as workspaceLabel, u as environmentSandbox } from "./environment-
|
|
6
|
+
import { T as workspaceLabel, u as environmentSandbox } from "./environment-1jE-HhO-.js";
|
|
7
7
|
import { a as fromCwd, i as evalSlug, n as attemptKey, o as newRunId } from "./ids-Bp6ut7ZD.js";
|
|
8
|
-
import { I as LABEL, X as imageInfo } from "./src-
|
|
9
|
-
import { d as sandboxId, s as harnessId } from "./options-
|
|
10
|
-
import { c as
|
|
8
|
+
import { I as LABEL, X as imageInfo } from "./src-8rRXy4u9.js";
|
|
9
|
+
import { d as sandboxId, s as harnessId } from "./options-CKqyPGxX.js";
|
|
10
|
+
import { a as configPathFor, c as findConfig, d as malformedCredentials, f as missingCredentials, h as selectProfile, i as configLabel, l as hostCapacity, m as resolveConcurrency, p as requireConfig, u as loadConfig } from "./config-CGvBeewH.js";
|
|
11
11
|
import { s as debugTime } from "./debug-D24NOQH1.js";
|
|
12
12
|
import { i as sandboxWarningLine, n as clip, r as formatDuration } from "./text-gEcKjAyp.js";
|
|
13
13
|
import { t as PrepareError } from "./provider-CmAYTQQs.js";
|
|
14
|
-
import { H as cellContrast, L as judgeRatesLabel, M as cellJudgeRates, N as cellUsage, P as collapsedJudgeLabel, _ as hasUngatedCells, b as isUngatedMiss, h as formatUsage, q as effortLabel, w as runOutcome } from "./model-
|
|
14
|
+
import { H as cellContrast, L as judgeRatesLabel, M as cellJudgeRates, N as cellUsage, P as collapsedJudgeLabel, _ as hasUngatedCells, b as isUngatedMiss, h as formatUsage, q as effortLabel, w as runOutcome } from "./model-BOnlAPzs.js";
|
|
15
|
+
import { a as familyLiftLabel, i as familyHeadLabel, n as familyCases, o as familyRateLabel, r as familyEffortLabel, t as caseLabel } from "./family-D2b7WD10.js";
|
|
15
16
|
import { a as sampleReasons } from "./pairs-DDsjgm5F.js";
|
|
16
|
-
import { a as
|
|
17
|
-
import { c as writeLiveProgress, i as prepareResume, o as resolveResume, r as loadPrevious, s as writeCurrent, t as completedKeysFor } from "./resume-
|
|
18
|
-
import { n as FLAGS, o as helpText, r as GLOBAL, t as COMMANDS } from "./cli-spec-
|
|
19
|
-
import { i as runtimeInfo, n as gitInfo, r as runnerInfo, t as author } from "./provenance-
|
|
17
|
+
import { a as gateLabel, d as undiscriminating, f as undiscriminatingLabel, i as checksLabel, n as answersLabel, o as liftLabel } from "./summary-BTksrIxn.js";
|
|
18
|
+
import { c as writeLiveProgress, i as prepareResume, o as resolveResume, r as loadPrevious, s as writeCurrent, t as completedKeysFor } from "./resume-SUz1GskV.js";
|
|
19
|
+
import { n as FLAGS, o as helpText, r as GLOBAL, t as COMMANDS } from "./cli-spec-CKEYa8V2.js";
|
|
20
|
+
import { i as runtimeInfo, n as gitInfo, r as runnerInfo, t as author } from "./provenance-D7HK3vzt.js";
|
|
20
21
|
import { t as budgetMarker } from "./budget-DBUrH4jX.js";
|
|
21
|
-
import { n as prepareAll, o as writePrepared, r as prepareTargets, t as RunStopError } from "./preflight-
|
|
22
|
-
import { r as imageHarness } from "./prepare-
|
|
23
|
-
import { n as createProviders } from "./providers-
|
|
24
|
-
import { a as redactArgv, r as commandOf, t as logInvocation } from "./invocations-
|
|
22
|
+
import { n as prepareAll, o as writePrepared, r as prepareTargets, t as RunStopError } from "./preflight-BkoSxf4C.js";
|
|
23
|
+
import { r as imageHarness } from "./prepare-CUAWHebF.js";
|
|
24
|
+
import { n as createProviders } from "./providers-B1DzMvmH.js";
|
|
25
|
+
import { a as redactArgv, r as commandOf, t as logInvocation } from "./invocations-CLaL8AuW.js";
|
|
25
26
|
import { n as stripAnsi, t as colors } from "./colors-QV9dFVhN.js";
|
|
26
27
|
import { existsSync, mkdirSync, readdirSync, writeFileSync } from "node:fs";
|
|
27
28
|
import { dirname, join } from "node:path";
|
|
@@ -426,7 +427,7 @@ function evalColumns(c, e) {
|
|
|
426
427
|
if (more.length) {
|
|
427
428
|
const pass = e.attempts.filter((a) => a.outcome === "pass").length;
|
|
428
429
|
const counted = e.attempts.filter((a) => a.outcome === "pass" || a.outcome === "fail").length;
|
|
429
|
-
const rate = hasUngatedCells(e.cells) ? ` · ${pct(e.passRate).trim()} gated` : ` ${pct(e.passRate)}`;
|
|
430
|
+
const rate = hasUngatedCells(e.cells) ? ` · pass@1 ${pct(e.passRate).trim()} gated` : ` pass@1 ${pct(e.passRate)}`;
|
|
430
431
|
return c.dim(`${`${pass}/${counted}`.padStart(7)}${rate} ${e.attempts.length} attempts`);
|
|
431
432
|
}
|
|
432
433
|
if (attemptOutcome(attempt) === "cancelled") return c.yellow("cancelled");
|
|
@@ -439,7 +440,7 @@ function evalColumns(c, e) {
|
|
|
439
440
|
if (tokens) cols.push(tokens);
|
|
440
441
|
return c.dim(cols.join(" "));
|
|
441
442
|
}
|
|
442
|
-
/**
|
|
443
|
+
/** pass@1 per cell for evals with several attempts; with compare, each cell's role and lift. */
|
|
443
444
|
function cellRows(c, e, indent) {
|
|
444
445
|
if (e.attempts.length < 2) return [];
|
|
445
446
|
const compare = e.cells.some((cell) => cell.role === "variant");
|
|
@@ -458,11 +459,13 @@ function cellRows(c, e, indent) {
|
|
|
458
459
|
if (cell.gate !== "all" && cell.gate !== "none") note += ` ${c.dim(`gate ${gateLabel(cell.gate)}`)}`;
|
|
459
460
|
const tokens = formatUsage(cellUsage(e, cell.key));
|
|
460
461
|
const usage = tokens ? ` ${c.dim(tokens)}` : "";
|
|
461
|
-
const rows = [`${indent}${c.dim(cell.key.padEnd(width))}${role} ${counts} ${pct(cell.passRate)}${note}${infra}${usage}`];
|
|
462
|
+
const rows = [`${indent}${c.dim(cell.key.padEnd(width))}${role} ${counts} pass@1 ${pct(cell.passRate)}${note}${infra}${usage}`];
|
|
462
463
|
const rates = judgeRatesLabel(cellJudgeRates(e, cell.key));
|
|
463
464
|
if (rates) rows.push(`${indent} ${c.dim(rates)}`);
|
|
464
465
|
const effort = cellContrast(e, cell.key);
|
|
465
466
|
if (effort) rows.push(`${indent} ${c.dim(`effort: ${effortLabel(effort)}`)}`);
|
|
467
|
+
const checks = checksLabel(cell);
|
|
468
|
+
if (checks) rows.push(`${indent} ${c.dim(`checks: ${checks}`)}`);
|
|
466
469
|
if (cell.overrides.length) rows.push(`${indent} ${c.dim(`overrides: ${cell.overrides.join(", ")}`)}`);
|
|
467
470
|
return rows;
|
|
468
471
|
});
|
|
@@ -474,11 +477,64 @@ function questionRows(c, e, indent) {
|
|
|
474
477
|
return [`${indent}${c.dim("question")} ${a.error !== void 0 ? c.yellow(label) : label}`, ...sampleReasons(a.votes).map((reason) => `${indent} ${c.dim(reason)}`)];
|
|
475
478
|
});
|
|
476
479
|
}
|
|
477
|
-
/**
|
|
478
|
-
function
|
|
480
|
+
/** A family's mark: its pooled gate's and its cases' worst. */
|
|
481
|
+
function familyOutcome(family, cases) {
|
|
482
|
+
const outcomes = [family.outcome, ...cases.map(entryOutcome)];
|
|
483
|
+
for (const o of [
|
|
484
|
+
"fail",
|
|
485
|
+
"infra_error",
|
|
486
|
+
"cancelled"
|
|
487
|
+
]) if (outcomes.includes(o)) return o;
|
|
488
|
+
return outcomes.every((o) => o === "skipped") ? "skipped" : "pass";
|
|
489
|
+
}
|
|
490
|
+
/** The width case marks wrap at. */
|
|
491
|
+
const CASE_WIDTH = 96;
|
|
492
|
+
/** A pooled family's rows under its header: its cases' marks, then each pooled rate or lift. */
|
|
493
|
+
function familyRows(c, family, cases, indent) {
|
|
494
|
+
const marks = cases.map((e) => `${mark(c, entryOutcome(e))} ${caseLabel(family.name, e.name)}`);
|
|
495
|
+
const plain = cases.map((e) => `x ${caseLabel(family.name, e.name)}`);
|
|
479
496
|
const rows = [];
|
|
497
|
+
let line = [];
|
|
498
|
+
let width = 0;
|
|
499
|
+
marks.forEach((m, i) => {
|
|
500
|
+
const w = plain[i].length + 2;
|
|
501
|
+
if (line.length && width + w > CASE_WIDTH) {
|
|
502
|
+
rows.push(`${indent}${line.join(" ")}`);
|
|
503
|
+
line = [];
|
|
504
|
+
width = 0;
|
|
505
|
+
}
|
|
506
|
+
line.push(m);
|
|
507
|
+
width += w;
|
|
508
|
+
});
|
|
509
|
+
if (line.length) rows.push(`${indent}${line.join(" ")}`);
|
|
510
|
+
if (family.lifts.length) {
|
|
511
|
+
const keyWidth = Math.max(...family.lifts.map((l) => l.variant.length));
|
|
512
|
+
for (const lift of family.lifts) {
|
|
513
|
+
const below = lift.outcome === "fail";
|
|
514
|
+
const gate = lift.minLift !== void 0 ? ` (minLift ${Math.round(lift.minLift * 100)}${below ? " ✗" : ""})` : "";
|
|
515
|
+
const text = `${familyLiftLabel(lift)}${gate}`;
|
|
516
|
+
rows.push(`${indent}${c.dim(lift.variant.padEnd(keyWidth))} ${below ? c.red(text) : text}`);
|
|
517
|
+
const effort = familyEffortLabel(lift);
|
|
518
|
+
if (effort) rows.push(`${indent} ${c.dim(`effort: ${effort}`)}`);
|
|
519
|
+
}
|
|
520
|
+
} else if (family.rates.length === 1) rows.push(`${indent}${familyRateLabel(family.rates[0])}`);
|
|
521
|
+
else {
|
|
522
|
+
const keyWidth = Math.max(...family.rates.map((r) => r.cell.length));
|
|
523
|
+
for (const rate of family.rates) rows.push(`${indent}${c.dim(rate.cell.padEnd(keyWidth))} ${familyRateLabel(rate)}`);
|
|
524
|
+
}
|
|
525
|
+
return rows;
|
|
526
|
+
}
|
|
527
|
+
/**
|
|
528
|
+
* The run's evals as a file › group tree, one row per eval and per cell of a matrix. A pooled
|
|
529
|
+
* family is one row, its template, with its cases' marks and the pooled results under it.
|
|
530
|
+
*/
|
|
531
|
+
function tree(c, evals, families = []) {
|
|
532
|
+
const rows = [];
|
|
533
|
+
const shown = /* @__PURE__ */ new Set();
|
|
480
534
|
let path = [];
|
|
481
535
|
for (const e of evals) {
|
|
536
|
+
const family = e.family && families.find((f) => f.id === e.family?.id);
|
|
537
|
+
if (family && shown.has(family.id)) continue;
|
|
482
538
|
const next = [e.file, ...e.group];
|
|
483
539
|
let same = 0;
|
|
484
540
|
while (same < path.length && same < next.length && path[same] === next[same]) same++;
|
|
@@ -487,18 +543,30 @@ function tree(c, evals) {
|
|
|
487
543
|
text: i === 0 ? c.bold(next[i] ?? "") : next[i] ?? ""
|
|
488
544
|
});
|
|
489
545
|
path = next;
|
|
490
|
-
|
|
546
|
+
if (family) {
|
|
547
|
+
shown.add(family.id);
|
|
548
|
+
rows.push({
|
|
549
|
+
indent: next.length,
|
|
550
|
+
text: family.name,
|
|
551
|
+
family
|
|
552
|
+
});
|
|
553
|
+
} else rows.push({
|
|
491
554
|
indent: next.length,
|
|
492
555
|
text: e.name,
|
|
493
556
|
entry: e
|
|
494
557
|
});
|
|
495
558
|
}
|
|
496
|
-
const width = Math.max(...rows.filter((r) => r.entry).map((r) => r.indent * 2 + 2 + r.text.length));
|
|
497
|
-
return rows.flatMap(({ indent, text, entry }) => {
|
|
559
|
+
const width = Math.max(...rows.filter((r) => r.entry || r.family).map((r) => r.indent * 2 + 2 + r.text.length));
|
|
560
|
+
return rows.flatMap(({ indent, text, entry, family }) => {
|
|
498
561
|
const pad = " ".repeat(indent);
|
|
562
|
+
const fill = " ".repeat(Math.max(0, width - indent * 2 - 2 - text.length));
|
|
563
|
+
if (family) {
|
|
564
|
+
const cases = familyCases(family, evals);
|
|
565
|
+
return [` ${pad}${mark(c, familyOutcome(family, cases))} ${text}${fill} ${c.dim(familyHeadLabel(family))}`, ...familyRows(c, family, cases, ` ${pad} `)];
|
|
566
|
+
}
|
|
499
567
|
if (!entry) return [` ${pad}${text}`];
|
|
500
568
|
return [
|
|
501
|
-
` ${pad}${`${mark(c, entryOutcome(entry))} ${text}`}${
|
|
569
|
+
` ${pad}${`${mark(c, entryOutcome(entry))} ${text}`}${fill} ${evalColumns(c, entry)}`,
|
|
502
570
|
...cellRows(c, entry, ` ${pad} `),
|
|
503
571
|
...questionRows(c, entry, ` ${pad} `)
|
|
504
572
|
];
|
|
@@ -517,6 +585,12 @@ function totals(c, s, cancelled = 0) {
|
|
|
517
585
|
const scope = s.attempts === s.evals ? `${s.evals}` : `${s.attempts} attempts, ${s.evals} evals`;
|
|
518
586
|
return parts.length ? `${parts.join(c.dim(" · "))} ${c.dim(`(${scope})`)}` : "no evals ran";
|
|
519
587
|
}
|
|
588
|
+
/** `1 passed · 1 failed (2)`: the families' pooled gates. */
|
|
589
|
+
function familyTotals(c, families) {
|
|
590
|
+
const fail = families.filter((f) => f.outcome === "fail").length;
|
|
591
|
+
const pass = families.length - fail;
|
|
592
|
+
return `${[pass && c.green(`${pass} passed`), fail && c.red(`${fail} failed`)].filter(Boolean).join(c.dim(" · "))} ${c.dim(`(${families.length})`)}`;
|
|
593
|
+
}
|
|
520
594
|
/** Failing attempts, in run order, including expected misses. */
|
|
521
595
|
function failingAttempts(evals) {
|
|
522
596
|
return evals.flatMap((entry) => entry.attempts.map((attempt) => ({
|
|
@@ -528,7 +602,7 @@ function failingAttempts(evals) {
|
|
|
528
602
|
function renderSummary(c, e, attemptDir) {
|
|
529
603
|
const { record } = e;
|
|
530
604
|
const lines = [];
|
|
531
|
-
if (record.evals.length) lines.push(c.bold("Summary"), ...tree(c, record.evals));
|
|
605
|
+
if (record.evals.length) lines.push(c.bold("Summary"), ...tree(c, record.evals, record.families));
|
|
532
606
|
const all = failingAttempts(record.evals);
|
|
533
607
|
const missed = all.filter(({ entry, attempt }) => isUngatedMiss(entry, attempt));
|
|
534
608
|
const failing = all.filter((f) => !missed.includes(f));
|
|
@@ -550,7 +624,18 @@ function renderSummary(c, e, attemptDir) {
|
|
|
550
624
|
}
|
|
551
625
|
if (missed.length) {
|
|
552
626
|
lines.push("", c.bold(`Expected misses, not gated (${missed.length})`));
|
|
627
|
+
const pooled = /* @__PURE__ */ new Map();
|
|
553
628
|
for (const { entry, attempt } of missed) {
|
|
629
|
+
if (!entry.family) continue;
|
|
630
|
+
const key = `${entry.family.id}\0${attempt.cell}`;
|
|
631
|
+
pooled.set(key, (pooled.get(key) ?? 0) + 1);
|
|
632
|
+
}
|
|
633
|
+
for (const [key, n] of pooled) {
|
|
634
|
+
const [id, cell] = key.split("\0");
|
|
635
|
+
lines.push(` ${MISS_MARK(c)} ${id} ${c.dim(`${n} ${n === 1 ? "attempt" : "attempts"} on ${cell}`)}`);
|
|
636
|
+
}
|
|
637
|
+
for (const { entry, attempt } of missed) {
|
|
638
|
+
if (entry.family) continue;
|
|
554
639
|
const which = entry.attempts.length > 1 ? ` ${c.dim(attempt.id)}` : "";
|
|
555
640
|
const [reason] = failureLines(colors(false), resultFor(entry, attempt, e.results), { max: 1 }).filter((l) => l.trim());
|
|
556
641
|
lines.push(` ${MISS_MARK(c)} ${entry.id}${which}`);
|
|
@@ -562,12 +647,23 @@ function renderSummary(c, e, attemptDir) {
|
|
|
562
647
|
const cancelled = failing.filter((f) => f.outcome === "cancelled").length;
|
|
563
648
|
const label = record.summary.attempts === record.summary.evals ? " Evals" : "Attempts";
|
|
564
649
|
const lifted = record.evals.flatMap((entry) => entry.cells.flatMap((cell) => cell.lift?.minLift !== void 0 && cell.lift.interval.lo < cell.lift.minLift ? [`${entry.id} ${cell.key} ${liftLabel(cell.lift)}: its lower bound is below minLift ${Math.round(cell.lift.minLift * 100)}`] : []));
|
|
650
|
+
for (const family of record.families ?? []) for (const lift of family.lifts) {
|
|
651
|
+
if (lift.outcome !== "fail" || lift.minLift === void 0) continue;
|
|
652
|
+
lifted.push(`${family.id} ${lift.variant} pooled ${familyLiftLabel(lift)}: its lower bound is below minLift ${Math.round(lift.minLift * 100)}`);
|
|
653
|
+
}
|
|
654
|
+
const idle = undiscriminating(record.evals);
|
|
655
|
+
if (idle.length) {
|
|
656
|
+
lines.push("", c.bold(`Checks that don't discriminate (${idle.length})`));
|
|
657
|
+
for (const x of idle) lines.push(` ${c.dim("·")} ${undiscriminatingLabel(x)}`);
|
|
658
|
+
}
|
|
565
659
|
if (lifted.length) {
|
|
566
660
|
lines.push("", c.bold(c.red(`Lift below minLift (${lifted.length})`)));
|
|
567
661
|
for (const line of lifted) lines.push(` ${c.red("✗")} ${line}`);
|
|
568
662
|
}
|
|
569
663
|
if (record.status === "budget") lines.push("", c.yellow("Budget reached: attempts that hadn’t started were skipped"));
|
|
570
|
-
lines.push(""
|
|
664
|
+
lines.push("");
|
|
665
|
+
if (record.families?.length) lines.push(`${c.dim("Families")} ${familyTotals(c, record.families)}`);
|
|
666
|
+
lines.push(`${c.dim(label)} ${totals(c, record.summary, cancelled)}`, `${c.dim("Duration")} ${formatDuration(record.durationMs)}`);
|
|
571
667
|
const tokens = formatUsage(record.cost.usage);
|
|
572
668
|
if (tokens) lines.push(` ${c.dim("Tokens")} ${tokens}`);
|
|
573
669
|
lines.push(` ${c.dim("Results")} ${e.summaryPath}`);
|
|
@@ -734,6 +830,14 @@ var AgentRenderer = class {
|
|
|
734
830
|
this.#write(`question ${entry.id}: ${answersLabel(a)}`);
|
|
735
831
|
for (const reason of sampleReasons(a.votes)) this.#write(` ${reason}`);
|
|
736
832
|
}
|
|
833
|
+
for (const x of undiscriminating(e.record.evals)) this.#write(`check doesn't discriminate: ${undiscriminatingLabel(x)}`);
|
|
834
|
+
for (const family of e.record.families ?? []) {
|
|
835
|
+
const pooled = family.lifts.length ? family.lifts.map((l) => {
|
|
836
|
+
const gate = l.minLift === void 0 ? "" : ` (minLift ${Math.round(l.minLift * 100)}${l.outcome === "fail" ? ", FAIL" : ""})`;
|
|
837
|
+
return `${l.variant} ${familyLiftLabel(l)}${gate}`;
|
|
838
|
+
}) : family.rates.map((r) => `${r.cell} ${familyRateLabel(r)}`);
|
|
839
|
+
this.#write(`family ${family.id}: ${familyHeadLabel(family)} · ${pooled.join(" · ")}`);
|
|
840
|
+
}
|
|
737
841
|
const s = e.record.summary;
|
|
738
842
|
const cancelled = failing.filter((f) => f.outcome === "cancelled").length;
|
|
739
843
|
const parts = [
|
|
@@ -1120,7 +1224,7 @@ async function run(argv) {
|
|
|
1120
1224
|
return values.help ? EXIT.ok : EXIT.usage;
|
|
1121
1225
|
}
|
|
1122
1226
|
if (command === "init") {
|
|
1123
|
-
const { initCommand } = await import("./init-
|
|
1227
|
+
const { initCommand } = await import("./init-B6vegaP_.js");
|
|
1124
1228
|
return initCommand(values, filters, {
|
|
1125
1229
|
out: (s) => console.log(s),
|
|
1126
1230
|
input: process.stdin,
|
|
@@ -1129,7 +1233,7 @@ async function run(argv) {
|
|
|
1129
1233
|
});
|
|
1130
1234
|
}
|
|
1131
1235
|
if (command === "doctor") {
|
|
1132
|
-
const { doctorCommand } = await import("./doctor-
|
|
1236
|
+
const { doctorCommand } = await import("./doctor-DlKycx5H.js");
|
|
1133
1237
|
return doctorCommand(values, {
|
|
1134
1238
|
out: (s) => console.log(s),
|
|
1135
1239
|
color: !!process.stdout.isTTY && !process.env.NO_COLOR,
|
|
@@ -1137,7 +1241,7 @@ async function run(argv) {
|
|
|
1137
1241
|
});
|
|
1138
1242
|
}
|
|
1139
1243
|
if (command === "report") {
|
|
1140
|
-
const { reportCommand } = await import("./command-
|
|
1244
|
+
const { reportCommand } = await import("./command-CzIFp1JQ.js");
|
|
1141
1245
|
return reportCommand(values, filters, {
|
|
1142
1246
|
out: (s) => console.log(s),
|
|
1143
1247
|
err: (s) => console.error(dim(s)),
|
|
@@ -1152,7 +1256,7 @@ async function run(argv) {
|
|
|
1152
1256
|
}
|
|
1153
1257
|
if (command === "studio") {
|
|
1154
1258
|
const config = await loadConfig(configPath, "studio");
|
|
1155
|
-
const { studioCommand } = await import("./command-
|
|
1259
|
+
const { studioCommand } = await import("./command-BFP0hKEb.js");
|
|
1156
1260
|
return studioCommand({
|
|
1157
1261
|
config,
|
|
1158
1262
|
flags: values,
|
|
@@ -1163,7 +1267,7 @@ async function run(argv) {
|
|
|
1163
1267
|
if (command === "mcp") {
|
|
1164
1268
|
if (!values.http) console.log = console.info = console.debug = console.error;
|
|
1165
1269
|
const config = await loadConfig(configPath, "mcp");
|
|
1166
|
-
const { mcpCommand } = await import("./command-
|
|
1270
|
+
const { mcpCommand } = await import("./command-C5xFPKHM.js");
|
|
1167
1271
|
return mcpCommand({
|
|
1168
1272
|
config,
|
|
1169
1273
|
flags: values,
|
|
@@ -1172,7 +1276,7 @@ async function run(argv) {
|
|
|
1172
1276
|
}
|
|
1173
1277
|
if (command in HISTORY_COMMANDS) {
|
|
1174
1278
|
const config = await loadConfig(configPath, command);
|
|
1175
|
-
const commands = await import("./commands-
|
|
1279
|
+
const commands = await import("./commands-fI3G2Wnh.js");
|
|
1176
1280
|
const ctx = {
|
|
1177
1281
|
config,
|
|
1178
1282
|
flags: values,
|
|
@@ -1185,7 +1289,7 @@ async function run(argv) {
|
|
|
1185
1289
|
case "compare": return commands.compareCommand(ctx, filters);
|
|
1186
1290
|
case "checkout": return commands.checkoutCommand(ctx, filters);
|
|
1187
1291
|
case "query": {
|
|
1188
|
-
const { queryCommand } = await import("./query-
|
|
1292
|
+
const { queryCommand } = await import("./query-oPO_XrTy.js");
|
|
1189
1293
|
return queryCommand({
|
|
1190
1294
|
...ctx,
|
|
1191
1295
|
err: (s) => console.error(dim(s))
|
|
@@ -1193,7 +1297,7 @@ async function run(argv) {
|
|
|
1193
1297
|
}
|
|
1194
1298
|
case "analyze": {
|
|
1195
1299
|
loadEnvFiles(configPath);
|
|
1196
|
-
const { analyzeCommand } = await import("./command-
|
|
1300
|
+
const { analyzeCommand } = await import("./command-BrmXUC-W.js");
|
|
1197
1301
|
return analyzeCommand({
|
|
1198
1302
|
...ctx,
|
|
1199
1303
|
err: (s) => console.error(dim(s))
|
|
@@ -1232,8 +1336,8 @@ async function cleanCommand(flags, configPath) {
|
|
|
1232
1336
|
const where = fromCwd(debugRoot(config.root)) || ".";
|
|
1233
1337
|
console.log(runs.length ? `Removed debug data for ${runs.length} run${runs.length === 1 ? "" : "s"} (${formatBytes(bytes)}) from ${where}` : `No debug data to remove in ${where}`);
|
|
1234
1338
|
if (flags.images) {
|
|
1235
|
-
const { pruneImages } = await import("./src-
|
|
1236
|
-
const { requireDocker } = await import("./providers-
|
|
1339
|
+
const { pruneImages } = await import("./src-cdIVjC5b.js");
|
|
1340
|
+
const { requireDocker } = await import("./providers-CpEfNU1F.js");
|
|
1237
1341
|
await requireDocker();
|
|
1238
1342
|
const removed = await pruneImages();
|
|
1239
1343
|
console.log(removed ? `Removed ${removed} image${removed === 1 ? "" : "s"} reeval built that nothing uses` : "No leftover images to remove");
|
|
@@ -1248,55 +1352,43 @@ function verbosityOf(flags) {
|
|
|
1248
1352
|
/**
|
|
1249
1353
|
* `reeval image build`: collects the evals (as `--dry-run` does) and builds every image their Docker
|
|
1250
1354
|
* sandboxes need; with `--dry-run`, lists them instead. `--profile` plans as `reeval run --profile`
|
|
1251
|
-
* does.
|
|
1355
|
+
* does. Needs a config, as `reeval run` does: there is no default image.
|
|
1252
1356
|
*/
|
|
1253
1357
|
async function imageBuildCommand(flags, configPath, filters) {
|
|
1254
|
-
const { buildImages, imagePlanLines, imageTargets } = await import("./images-
|
|
1255
|
-
const {
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1358
|
+
const { buildImages, imagePlanLines, imageTargets } = await import("./images-BMgdpMAX.js");
|
|
1359
|
+
const { runId, stagingDir, config, runs, tags, concurrency, profile } = await startRun(await prepareRun({
|
|
1360
|
+
...flags,
|
|
1361
|
+
"dry-run": true
|
|
1362
|
+
}, configPath));
|
|
1363
|
+
const root = config.root;
|
|
1364
|
+
const { runEngine } = await import("./node-Co7EXge0.js");
|
|
1365
|
+
let planned = [];
|
|
1366
|
+
await runEngine({
|
|
1367
|
+
run: JSON.parse(JSON.stringify({
|
|
1368
|
+
runId,
|
|
1369
|
+
stagingDir,
|
|
1370
|
+
config,
|
|
1371
|
+
runs,
|
|
1372
|
+
tags,
|
|
1373
|
+
concurrency,
|
|
1374
|
+
profile
|
|
1375
|
+
})),
|
|
1376
|
+
filters,
|
|
1377
|
+
onPlan: async (collected) => {
|
|
1378
|
+
if (collected.unmatched.length) throw unmatchedFilter(config, collected.unmatched);
|
|
1379
|
+
planned = collected.planned.filter((p) => !p.attempt.plan.skip);
|
|
1380
|
+
return false;
|
|
1381
|
+
}
|
|
1382
|
+
});
|
|
1383
|
+
const targets = imageTargets(planned.length ? planned.map((p) => ({
|
|
1384
|
+
id: p.id,
|
|
1385
|
+
harness: p.attempt.harness,
|
|
1386
|
+
sandbox: p.attempt.sandbox
|
|
1387
|
+
})) : config.harness.map((harness) => ({
|
|
1259
1388
|
id: "",
|
|
1260
|
-
harness
|
|
1261
|
-
sandbox:
|
|
1262
|
-
}
|
|
1263
|
-
if (!configPath && flags.profile) selectProfile(await loadConfig(void 0), flags.profile);
|
|
1264
|
-
if (configPath) {
|
|
1265
|
-
const { runId, stagingDir, config, runs, tags, concurrency, profile } = await startRun(await prepareRun({
|
|
1266
|
-
...flags,
|
|
1267
|
-
"dry-run": true
|
|
1268
|
-
}, configPath));
|
|
1269
|
-
root = config.root;
|
|
1270
|
-
const { runEngine } = await import("./node-Co7EXge0.js");
|
|
1271
|
-
let planned = [];
|
|
1272
|
-
await runEngine({
|
|
1273
|
-
run: JSON.parse(JSON.stringify({
|
|
1274
|
-
runId,
|
|
1275
|
-
stagingDir,
|
|
1276
|
-
config,
|
|
1277
|
-
runs,
|
|
1278
|
-
tags,
|
|
1279
|
-
concurrency,
|
|
1280
|
-
profile
|
|
1281
|
-
})),
|
|
1282
|
-
filters,
|
|
1283
|
-
onPlan: async (collected) => {
|
|
1284
|
-
if (collected.unmatched.length) throw unmatchedFilter(config, collected.unmatched);
|
|
1285
|
-
planned = collected.planned.filter((p) => !p.attempt.plan.skip);
|
|
1286
|
-
return false;
|
|
1287
|
-
}
|
|
1288
|
-
});
|
|
1289
|
-
uses = planned.length ? planned.map((p) => ({
|
|
1290
|
-
id: p.id,
|
|
1291
|
-
harness: p.attempt.harness,
|
|
1292
|
-
sandbox: p.attempt.sandbox
|
|
1293
|
-
})) : config.harness.map((harness) => ({
|
|
1294
|
-
id: "",
|
|
1295
|
-
harness,
|
|
1296
|
-
sandbox: config.sandbox
|
|
1297
|
-
}));
|
|
1298
|
-
}
|
|
1299
|
-
const targets = imageTargets(uses);
|
|
1389
|
+
harness,
|
|
1390
|
+
sandbox: config.sandbox
|
|
1391
|
+
})));
|
|
1300
1392
|
if (targets.length === 0) {
|
|
1301
1393
|
console.log("No eval runs in a Docker sandbox, so there are no images to build.");
|
|
1302
1394
|
return EXIT.ok;
|
|
@@ -1364,14 +1456,14 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1364
1456
|
const { engineRun, plan, sandboxVersions, budgetReached, live, notes, questions } = executed;
|
|
1365
1457
|
invocation.unhandledErrors = engineRun.unhandledErrors;
|
|
1366
1458
|
if ((interrupted || engineRun.cancelled) && plan?.sandboxes.some((s) => s.kind === "docker")) {
|
|
1367
|
-
const { removeRunContainers } = await import("./docker-
|
|
1459
|
+
const { removeRunContainers } = await import("./docker-Df_YOxxB.js");
|
|
1368
1460
|
await removeRunContainers(ctx.runId);
|
|
1369
1461
|
}
|
|
1370
1462
|
if (notes) {
|
|
1371
1463
|
const cancelled = interrupted || engineRun.cancelled;
|
|
1372
1464
|
const written = await notes.finish(cancelled);
|
|
1373
1465
|
if (!cancelled && written.length) {
|
|
1374
|
-
const { notesLine } = await import("./agent-
|
|
1466
|
+
const { notesLine } = await import("./agent-6FefIhX7.js");
|
|
1375
1467
|
const text = notesLine(ctx.config.root, ctx.runId, written);
|
|
1376
1468
|
renderer.onEvent({
|
|
1377
1469
|
type: "notice",
|
|
@@ -1388,8 +1480,8 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1388
1480
|
}
|
|
1389
1481
|
const stopped = interrupted || engineRun.cancelled;
|
|
1390
1482
|
const answers = questions && !stopped ? await questions.settle() : void 0;
|
|
1391
|
-
const { lockfiles } = await import("./state-
|
|
1392
|
-
const { writeScratchRun } = await import("./results-
|
|
1483
|
+
const { lockfiles } = await import("./state-Bo5zg4da.js");
|
|
1484
|
+
const { writeScratchRun } = await import("./results-Di7m8dQ3.js");
|
|
1393
1485
|
const run = await writeScratchRun({
|
|
1394
1486
|
ctx,
|
|
1395
1487
|
author: ctx.author,
|
|
@@ -1414,8 +1506,8 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1414
1506
|
}, () => live?.stop());
|
|
1415
1507
|
const { record } = run;
|
|
1416
1508
|
if (notes && !stopped) {
|
|
1417
|
-
const { summarizeRun } = await import("./agent-
|
|
1418
|
-
const { resolveAnalysisModel } = await import("./model-
|
|
1509
|
+
const { summarizeRun } = await import("./agent-6FefIhX7.js");
|
|
1510
|
+
const { resolveAnalysisModel } = await import("./model-FXko2kl7.js");
|
|
1419
1511
|
const model = resolveAnalysisModel(ctx.config, "agent");
|
|
1420
1512
|
const { level, text } = await summarizeRun(ctx.config, record.runId, model);
|
|
1421
1513
|
renderer.onEvent({
|
|
@@ -1442,7 +1534,7 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1442
1534
|
const { config } = ctx;
|
|
1443
1535
|
const mode = setup.record;
|
|
1444
1536
|
if ((flags.record || mode === "always" || mode === "ci" && inCI()) && record.status !== "interrupted") {
|
|
1445
|
-
const { record: recordCmd } = await import("./commands-
|
|
1537
|
+
const { record: recordCmd } = await import("./commands-fI3G2Wnh.js");
|
|
1446
1538
|
const allow = record.status === "budget" ? { "allow-incomplete": true } : {};
|
|
1447
1539
|
console.log(await recordCmd(config, record.runId, {
|
|
1448
1540
|
...flags,
|
|
@@ -1468,9 +1560,10 @@ async function prepareRun(flags, configPath) {
|
|
|
1468
1560
|
agent: detectAgent().name
|
|
1469
1561
|
});
|
|
1470
1562
|
if (flags.json && !flags["dry-run"]) throw new UsageError("reeval run --json only prints the plan: add --dry-run. A run writes its record to .reeval/runs; read it with reeval show --json.");
|
|
1471
|
-
|
|
1563
|
+
const path = requireConfig(configPath);
|
|
1564
|
+
loadEnvFiles(path);
|
|
1472
1565
|
const named = flags.profile ?? (process.env.REEVAL_PROFILE || void 0);
|
|
1473
|
-
const config = await loadConfig(
|
|
1566
|
+
const config = await loadConfig(path, "run", named);
|
|
1474
1567
|
const profile = selectProfile(config, flags.profile);
|
|
1475
1568
|
let runs;
|
|
1476
1569
|
if (flags.runs !== void 0) {
|
|
@@ -1480,7 +1573,7 @@ async function prepareRun(flags, configPath) {
|
|
|
1480
1573
|
const sandboxes = [environmentSandbox(config.environment, config.sandbox), ...profile?.defaults.environment ? [environmentSandbox(profile.defaults.environment, config.sandbox)] : []];
|
|
1481
1574
|
const concurrency = await resolveConcurrency(config, flags.concurrency, async () => {
|
|
1482
1575
|
if (!sandboxes.some((s) => s.kind === "docker")) return hostCapacity();
|
|
1483
|
-
const { dockerCapacity } = await import("./src-
|
|
1576
|
+
const { dockerCapacity } = await import("./src-cdIVjC5b.js");
|
|
1484
1577
|
return await dockerCapacity() ?? hostCapacity();
|
|
1485
1578
|
});
|
|
1486
1579
|
return {
|
|
@@ -1496,9 +1589,9 @@ async function prepareRun(flags, configPath) {
|
|
|
1496
1589
|
json: !!flags.json,
|
|
1497
1590
|
force: !!flags.force,
|
|
1498
1591
|
verbosity: verbosityOf(flags),
|
|
1499
|
-
configFile:
|
|
1592
|
+
configFile: configLabel(path),
|
|
1500
1593
|
/** Named in the plan line when the project root isn't the current directory. */
|
|
1501
|
-
configElsewhere:
|
|
1594
|
+
configElsewhere: dirname(path) !== process.cwd(),
|
|
1502
1595
|
/** `undefined` is a new run; `''` is newest resumable; a string is a run id or prefix. */
|
|
1503
1596
|
resume: flags.resume
|
|
1504
1597
|
};
|
|
@@ -1507,11 +1600,11 @@ async function prepareRun(flags, configPath) {
|
|
|
1507
1600
|
async function startRun({ config, profile, runs, tags, concurrency, verbosity, configFile, resume, dryRun }) {
|
|
1508
1601
|
const startedAt = /* @__PURE__ */ new Date();
|
|
1509
1602
|
const git = await gitInfo(config.root, [config.history.dir]);
|
|
1510
|
-
const { worktreePatch } = await import("./state-
|
|
1603
|
+
const { worktreePatch } = await import("./state-Bo5zg4da.js");
|
|
1511
1604
|
const patch = git?.dirty ? await worktreePatch(config.root, [config.history.dir]) : null;
|
|
1512
1605
|
const who = await author(config.root);
|
|
1513
|
-
const { stagingDir, sweepStaging } = await import("./results-
|
|
1514
|
-
const { scratchDir } = await import("./files-
|
|
1606
|
+
const { stagingDir, sweepStaging } = await import("./results-Di7m8dQ3.js");
|
|
1607
|
+
const { scratchDir } = await import("./files-BMCvfB4X.js");
|
|
1515
1608
|
const scratch = scratchDir(config.root);
|
|
1516
1609
|
if (resume !== void 0) {
|
|
1517
1610
|
const target = await resolveResume(config.root, resume || void 0);
|
|
@@ -1522,7 +1615,7 @@ async function startRun({ config, profile, runs, tags, concurrency, verbosity, c
|
|
|
1522
1615
|
artifacts: target.previousArtifacts
|
|
1523
1616
|
} : await loadPrevious(stagingDir(config.root, target.runId));
|
|
1524
1617
|
if (!dryRun) try {
|
|
1525
|
-
const { removeRunContainers } = await import("./docker-
|
|
1618
|
+
const { removeRunContainers } = await import("./docker-Df_YOxxB.js");
|
|
1526
1619
|
await removeRunContainers(target.runId);
|
|
1527
1620
|
} catch {}
|
|
1528
1621
|
return {
|
|
@@ -1594,7 +1687,7 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1594
1687
|
completed: []
|
|
1595
1688
|
}));
|
|
1596
1689
|
const { runEngine } = await import("./node-Co7EXge0.js");
|
|
1597
|
-
const { buildPlan, checkAttemptBudget, planDocument, planLine, planTable } = await import("./plan-
|
|
1690
|
+
const { buildPlan, checkAttemptBudget, planDocument, planLine, planTable } = await import("./plan-DUydFc_1.js");
|
|
1598
1691
|
let plan;
|
|
1599
1692
|
let sandboxVersions = { images: [] };
|
|
1600
1693
|
let preflightStop;
|
|
@@ -1621,7 +1714,7 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1621
1714
|
} : p);
|
|
1622
1715
|
toRun = skipped;
|
|
1623
1716
|
for (const p of skipped) for (const name of p.attempt.secretVars) registerSecret(process.env[name]);
|
|
1624
|
-
const models = skipped.some((p) => !p.attempt.plan.skip && p.attempt.plan.questions?.length) ? await import("./model-
|
|
1717
|
+
const models = skipped.some((p) => !p.attempt.plan.skip && p.attempt.plan.questions?.length) ? await import("./model-FXko2kl7.js") : void 0;
|
|
1625
1718
|
plan = await buildPlan({
|
|
1626
1719
|
planned: skipped,
|
|
1627
1720
|
profile,
|
|
@@ -1637,7 +1730,7 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1637
1730
|
completed: completed.size
|
|
1638
1731
|
};
|
|
1639
1732
|
run.completed = [...completed];
|
|
1640
|
-
const { imageStages, imageTargets } = await import("./images-
|
|
1733
|
+
const { imageStages, imageTargets } = await import("./images-BMgdpMAX.js");
|
|
1641
1734
|
const targets = imageTargets(skipped.filter((p) => !p.attempt.plan.skip).map((p) => ({
|
|
1642
1735
|
id: p.id,
|
|
1643
1736
|
harness: p.attempt.harness,
|
|
@@ -1658,8 +1751,8 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1658
1751
|
if (setup.dryRun) {
|
|
1659
1752
|
const todos = excluded.filter((e) => e.mode === "todo").map((e) => e.id);
|
|
1660
1753
|
lines.push(...planTable(plan, todos));
|
|
1661
|
-
const { imageStatusLines } = await import("./images-
|
|
1662
|
-
const { dockerAvailable } = await import("./src-
|
|
1754
|
+
const { imageStatusLines } = await import("./images-BMgdpMAX.js");
|
|
1755
|
+
const { dockerAvailable } = await import("./src-cdIVjC5b.js");
|
|
1663
1756
|
if (targets.length && await dockerAvailable()) lines.push(...await imageStatusLines(targets, config.root));
|
|
1664
1757
|
else if (targets.length) lines.push("images not checked: Docker is not running");
|
|
1665
1758
|
}
|
|
@@ -1673,7 +1766,7 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1673
1766
|
});
|
|
1674
1767
|
if (setup.dryRun) return false;
|
|
1675
1768
|
checkAttemptBudget(plan, setup.force, config.file);
|
|
1676
|
-
const analysis = config.analysis.agent ? await import("./model-
|
|
1769
|
+
const analysis = config.analysis.agent ? await import("./model-FXko2kl7.js") : null;
|
|
1677
1770
|
analysis?.analysisModelName(config, "agent");
|
|
1678
1771
|
const questionModels = /* @__PURE__ */ new Set();
|
|
1679
1772
|
const asked = [];
|
|
@@ -1703,7 +1796,7 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1703
1796
|
});
|
|
1704
1797
|
if (malformed.length) throw new UsageError(`Credentials with whitespace or a line break in them: ${malformed.join(", ")}. A key copied from a wrapped terminal line picks these up; set it again as one line.`);
|
|
1705
1798
|
if (analysis) {
|
|
1706
|
-
const { startNotes } = await import("./agent-
|
|
1799
|
+
const { startNotes } = await import("./agent-6FefIhX7.js");
|
|
1707
1800
|
notes = startNotes({
|
|
1708
1801
|
config,
|
|
1709
1802
|
model: analysis.resolveAnalysisModel(config, "agent"),
|
|
@@ -1719,7 +1812,7 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1719
1812
|
});
|
|
1720
1813
|
}
|
|
1721
1814
|
if (asked.length) {
|
|
1722
|
-
const { questionRunner } = await import("./questions-
|
|
1815
|
+
const { questionRunner } = await import("./questions-B8by4Bbt.js");
|
|
1723
1816
|
questions = questionRunner({
|
|
1724
1817
|
evals: asked,
|
|
1725
1818
|
stagingDir,
|
|
@@ -1736,7 +1829,7 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1736
1829
|
}
|
|
1737
1830
|
});
|
|
1738
1831
|
}
|
|
1739
|
-
const { prepareWorkspaces, workspaceKey } = await import("./workspace-
|
|
1832
|
+
const { prepareWorkspaces, workspaceKey } = await import("./workspace-Do_SiWBs.js");
|
|
1740
1833
|
const live = skipped.filter((p) => !p.attempt.plan.skip);
|
|
1741
1834
|
const outcomes = await prepareWorkspaces(live.flatMap(({ attempt: a }) => a.workspace ? [{
|
|
1742
1835
|
workspace: a.workspace,
|
|
@@ -1884,9 +1977,9 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1884
1977
|
throw error;
|
|
1885
1978
|
} finally {
|
|
1886
1979
|
clearTimeout(budgetTimer);
|
|
1887
|
-
const { removePrepared } = await import("./preflight-
|
|
1980
|
+
const { removePrepared } = await import("./preflight-D5LW7Oqi.js");
|
|
1888
1981
|
removePrepared(config.root, runId);
|
|
1889
|
-
const { removePreparedWorkspaces } = await import("./workspace-
|
|
1982
|
+
const { removePreparedWorkspaces } = await import("./workspace-Do_SiWBs.js");
|
|
1890
1983
|
removePreparedWorkspaces(config.root, runId);
|
|
1891
1984
|
}
|
|
1892
1985
|
if (preflightStop) throw preflightStop;
|
|
@@ -1969,4 +2062,4 @@ run(process.argv.slice(2)).finally(() => {
|
|
|
1969
2062
|
//#endregion
|
|
1970
2063
|
export {};
|
|
1971
2064
|
|
|
1972
|
-
//# sourceMappingURL=cli-
|
|
2065
|
+
//# sourceMappingURL=cli-CVrMh_qz.js.map
|