reeval 0.6.1 → 0.7.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 +265 -0
- package/THIRD_PARTY_NOTICES.md +5 -5
- package/assets/package.json +1 -1
- package/assets/pnpm-lock.yaml +35 -311
- package/dist/{agent-BrqDHAx6.js → agent-Dhd5FJCZ.js} +4 -4
- package/dist/{agent-BrqDHAx6.js.map → agent-Dhd5FJCZ.js.map} +1 -1
- package/dist/{agent-bHgHIPVD.js → agent-gjBiZis8.js} +4 -4
- package/dist/{agent-bHgHIPVD.js.map → agent-gjBiZis8.js.map} +1 -1
- package/dist/assemble-D8sZ4Jiv.js +2 -0
- package/dist/{assemble-BB_dcnfh.js → assemble-Dd_mZYnu.js} +109 -7
- package/dist/assemble-Dd_mZYnu.js.map +1 -0
- package/dist/bridge/index.mjs +84 -9
- package/dist/bridge/package.json +3 -3
- package/dist/bridge/pnpm-lock.yaml +84 -89
- package/dist/bridge/pnpm-workspace.yaml +1 -1
- package/dist/{capture-tcMRp6ks.js → capture-CisAmy-G.js} +3 -3
- package/dist/{capture-tcMRp6ks.js.map → capture-CisAmy-G.js.map} +1 -1
- package/dist/capture-DquyqAHC.js +2 -0
- package/dist/{cli-BM-qbqO_.js → cli-r9CDqoFL.js} +139 -172
- package/dist/cli-r9CDqoFL.js.map +1 -0
- package/dist/{cli-spec-DUeyuSIQ.js → cli-spec-DOyxAMc2.js} +22 -9
- package/dist/cli-spec-DOyxAMc2.js.map +1 -0
- package/dist/cli.js +2 -2
- package/dist/{matchers-Bp-OH1vj.js → client-LsfDiD-X.js} +152 -76
- package/dist/client-LsfDiD-X.js.map +1 -0
- package/dist/{command-BT9i1I5S.js → command-Cej2t3y-.js} +9 -9
- package/dist/{command-BT9i1I5S.js.map → command-Cej2t3y-.js.map} +1 -1
- package/dist/command-Cxfgghqo.js +2 -0
- package/dist/{command-DITkSzxp.js → command-D6r2pwO5.js} +10 -10
- package/dist/{command-DITkSzxp.js.map → command-D6r2pwO5.js.map} +1 -1
- package/dist/{command-BpoZJVeI.js → command-DMR69l5G.js} +12 -12
- package/dist/{command-BpoZJVeI.js.map → command-DMR69l5G.js.map} +1 -1
- package/dist/{command-DATlIXj1.js → command-l4ZFCeMh.js} +6 -6
- package/dist/{command-DATlIXj1.js.map → command-l4ZFCeMh.js.map} +1 -1
- package/dist/{commands-C0SFWd1T.js → commands-BA_NCh2h.js} +6 -6
- package/dist/{commands-C0SFWd1T.js.map → commands-BA_NCh2h.js.map} +1 -1
- package/dist/{commands-CDty3r_G.js → commands-DgOUkcSO.js} +1 -1
- package/dist/{config-Cy_vLUbw.js → config-DuQDCx0B.js} +3 -3
- package/dist/{config-Cy_vLUbw.js.map → config-DuQDCx0B.js.map} +1 -1
- package/dist/{context-loi9OCZv.js → context-CvUv7DUb.js} +3 -4
- package/dist/{context-loi9OCZv.js.map → context-CvUv7DUb.js.map} +1 -1
- package/dist/{db-iskAs8Ox.js → db-CjX7JF4o.js} +13 -25
- package/dist/{db-iskAs8Ox.js.map → db-CjX7JF4o.js.map} +1 -1
- package/dist/db-o_osRkqr.js +3 -0
- package/dist/{dist-Dmm3bnKA.js → dist-CTzThfu_.js} +3 -3
- package/dist/{dist-Dmm3bnKA.js.map → dist-CTzThfu_.js.map} +1 -1
- package/dist/{docker-B9wx9-KX.js → docker-DaUaG4XZ.js} +4 -4
- package/dist/{docker-B9wx9-KX.js.map → docker-DaUaG4XZ.js.map} +1 -1
- package/dist/{docker-Di4o89kZ.js → docker-Dnya8eo9.js} +1 -1
- package/dist/{docker-Ctnty6xd.js → docker-ZaYeKE2w.js} +2 -2
- package/dist/{docker-Ctnty6xd.js.map → docker-ZaYeKE2w.js.map} +1 -1
- package/dist/{doctor-BMUVi-gC.js → doctor-Bk6aJeec.js} +10 -10
- package/dist/{doctor-BMUVi-gC.js.map → doctor-Bk6aJeec.js.map} +1 -1
- package/dist/{egress-3bdvDu1s.js → egress-BKbyriEa.js} +13 -13
- package/dist/{egress-3bdvDu1s.js.map → egress-BKbyriEa.js.map} +1 -1
- package/dist/{files-CITwkC4O.js → files-BSMSnQMa.js} +2 -2
- package/dist/{files-CITwkC4O.js.map → files-BSMSnQMa.js.map} +1 -1
- package/dist/files-DmZGPsWK.js +2 -0
- package/dist/{files-DGhQZaXT.js → files-TNrZJQ3Y.js} +15 -4
- package/dist/{files-DGhQZaXT.js.map → files-TNrZJQ3Y.js.map} +1 -1
- package/dist/files-Tb8wY0Ze.js +2 -0
- package/dist/{git-BzyBakoB.js → git-DNGtrOg9.js} +2 -2
- package/dist/{git-BzyBakoB.js.map → git-DNGtrOg9.js.map} +1 -1
- package/dist/{harness-8-dnGNgT.js → harness-CDRaaGvR.js} +2 -2
- package/dist/{harness-8-dnGNgT.js.map → harness-CDRaaGvR.js.map} +1 -1
- package/dist/harness.d.ts +1 -1
- package/dist/harness.js +1 -1
- package/dist/{header-IE-uIvX0.js → header-BZF8Xss1.js} +2 -2
- package/dist/{header-IE-uIvX0.js.map → header-BZF8Xss1.js.map} +1 -1
- package/dist/{images-QBtOj-_q.js → images-BpwFDT1E.js} +6 -6
- package/dist/{images-QBtOj-_q.js.map → images-BpwFDT1E.js.map} +1 -1
- package/dist/index.d.ts +12 -7
- package/dist/index.js +31 -24
- package/dist/index.js.map +1 -1
- package/dist/init-1THeGfut.js +2 -0
- package/dist/{init-B47uIoHu.js → init-CBWt1rZT.js} +4 -4
- package/dist/{init-B47uIoHu.js.map → init-CBWt1rZT.js.map} +1 -1
- package/dist/{invocations-DHC946b-.js → invocations-DArYWyXN.js} +2 -2
- package/dist/{invocations-DHC946b-.js.map → invocations-DArYWyXN.js.map} +1 -1
- package/dist/judge.d.ts +1 -1
- package/dist/model-D_pF3Vcl.js +2 -0
- package/dist/{model-CtrJdFi6.js → model-DyQbu7KF.js} +113 -3
- package/dist/model-DyQbu7KF.js.map +1 -0
- package/dist/{opencode-providers-DJVocFOU.js → opencode-providers-ByD85Q0l.js} +33 -19
- package/dist/opencode-providers-ByD85Q0l.js.map +1 -0
- package/dist/{options-DVB78W8X.js → options-Ge_x32XE.js} +3 -3
- package/dist/{options-DVB78W8X.js.map → options-Ge_x32XE.js.map} +1 -1
- package/dist/{plan-Bsge1_cc.js → plan-BqBadHYj.js} +14 -7
- package/dist/plan-BqBadHYj.js.map +1 -0
- package/dist/{preflight-B5ue4TlX.js → preflight-CFtZNTLt.js} +1 -1
- package/dist/{preflight-BOstyJDX.js → preflight-CyaAZE9r.js} +3 -3
- package/dist/{preflight-BOstyJDX.js.map → preflight-CyaAZE9r.js.map} +1 -1
- package/dist/{prepare-ChIEi8hP.js → prepare-Dl7-t3fO.js} +2 -2
- package/dist/{prepare-jpXfdH-9.js → prepare-Zr1xOMUX.js} +4 -4
- package/dist/{prepare-jpXfdH-9.js.map → prepare-Zr1xOMUX.js.map} +1 -1
- package/dist/{provenance-BTJCjEPg.js → provenance-Byl2T6LJ.js} +2 -2
- package/dist/{provenance-BTJCjEPg.js.map → provenance-Byl2T6LJ.js.map} +1 -1
- package/dist/{providers-BJCxWIm4.js → providers-Cflw7Ks-.js} +3 -3
- package/dist/{providers-BJCxWIm4.js.map → providers-Cflw7Ks-.js.map} +1 -1
- package/dist/{providers-DxVIaae1.js → providers-SBMExI53.js} +1 -1
- package/dist/query-CvutWHaL.js +2 -0
- package/dist/{query-Cpe659ni.js → query-DUSLlic0.js} +2 -2
- package/dist/{query-Cpe659ni.js.map → query-DUSLlic0.js.map} +1 -1
- package/dist/results-owJR-NFm.js +52 -0
- package/dist/results-owJR-NFm.js.map +1 -0
- package/dist/resume-BL4Yw7Ld.js +406 -0
- package/dist/resume-BL4Yw7Ld.js.map +1 -0
- package/dist/sandbox.d.ts +1 -1
- package/dist/server-CNPsB0cT.js +2 -0
- package/dist/{server-CSSXF89R.js → server-yFVUxAm0.js} +6 -6
- package/dist/{server-CSSXF89R.js.map → server-yFVUxAm0.js.map} +1 -1
- package/dist/source-Cmc5SKFn.js +2 -0
- package/dist/{source-BcHShRWU.js → source-M3gS517R.js} +2 -2
- package/dist/{source-BcHShRWU.js.map → source-M3gS517R.js.map} +1 -1
- package/dist/src--L8B4WGa.js +3 -0
- package/dist/{src-BRdoxjJS.js → src-79JhW-zG.js} +15 -15
- package/dist/{src-BRdoxjJS.js.map → src-79JhW-zG.js.map} +1 -1
- package/dist/src-BLN459er.js +3 -0
- package/dist/src-Bz66jDtE.js +3 -0
- package/dist/src-CfUwg9UY.js +3 -0
- package/dist/{src-B3J1D0nL.js → src-CokPbYCb.js} +76 -60
- package/dist/src-CokPbYCb.js.map +1 -0
- package/dist/{src-a6y9cGkR.js → src-DH0jhpoi.js} +1 -1
- package/dist/{src-DyQJdvp2.js → src-DSE0FWaU.js} +5 -5
- package/dist/{src-DyQJdvp2.js.map → src-DSE0FWaU.js.map} +1 -1
- package/dist/{src-Czhg5ONv.js → src-DTcalvuF.js} +3 -3
- package/dist/{src-Czhg5ONv.js.map → src-DTcalvuF.js.map} +1 -1
- package/dist/src-DV_3QDHA.js +4 -0
- package/dist/{src-BjVw2K4H.js → src-DxFJrMUA.js} +4 -4
- package/dist/{src-BjVw2K4H.js.map → src-DxFJrMUA.js.map} +1 -1
- package/dist/{src-Dk96a9w7.js → src-IOr1rhEg.js} +6 -6
- package/dist/{src-Dk96a9w7.js.map → src-IOr1rhEg.js.map} +1 -1
- package/dist/src-Ljh2vKXm.js +3 -0
- package/dist/{src-CdwJuMBO.js → src-s-VffoYK.js} +2 -2
- package/dist/{src-CdwJuMBO.js.map → src-s-VffoYK.js.map} +1 -1
- package/dist/{state-evRYxV_q.js → state-DEj_utaE.js} +15 -15
- package/dist/{state-evRYxV_q.js.map → state-DEj_utaE.js.map} +1 -1
- package/dist/state-DkqbCVVp.js +2 -0
- package/dist/studio-app/assets/{index-WQPq5K3E.js → index-Bbl0oTxu.js} +1 -1
- package/dist/studio-app/index.html +1 -1
- package/dist/{summary-DTUCNA-v.js → summary--FBuB_sr.js} +3 -3
- package/dist/{summary-DTUCNA-v.js.map → summary--FBuB_sr.js.map} +1 -1
- package/dist/{summary-CIw18kb-.js → summary-D012KlUM.js} +5 -5
- package/dist/{summary-CIw18kb-.js.map → summary-D012KlUM.js.map} +1 -1
- package/dist/tool-target-BU1JnSE9.js +34 -0
- package/dist/tool-target-BU1JnSE9.js.map +1 -0
- package/dist/{tools-By2WuNxm.js → tools-CJHw-zCo.js} +3 -3
- package/dist/{tools-By2WuNxm.js.map → tools-CJHw-zCo.js.map} +1 -1
- package/dist/{types-C2Gl05_c.d.ts → types-BsRSknLe.d.ts} +6 -5
- package/dist/view/index.d.ts +1 -1
- package/dist/view/index.js +2 -2
- package/dist/{views-BJ0i1Iuw.js → views-jhL9Jb8A.js} +4 -4
- package/dist/{views-BJ0i1Iuw.js.map → views-jhL9Jb8A.js.map} +1 -1
- package/dist/views-yPmmoo8f.js +3 -0
- package/dist/{worker-entry-mCctDzig.js → worker-entry-OwnsrUdr.js} +72 -2
- package/dist/worker-entry-OwnsrUdr.js.map +1 -0
- package/dist/{workspace-Bl1SiRQa.js → workspace-C4_J0pqb.js} +3 -3
- package/dist/{workspace-Bl1SiRQa.js.map → workspace-C4_J0pqb.js.map} +1 -1
- package/dist/{workspace-CvAPfa8b.js → workspace-wudSz_W-.js} +1 -1
- package/package.json +11 -10
- package/dist/assemble-BB_dcnfh.js.map +0 -1
- package/dist/assemble-DcLLkwnB.js +0 -2
- package/dist/capture-EvOaSXj_.js +0 -2
- package/dist/cli-BM-qbqO_.js.map +0 -1
- package/dist/cli-spec-DUeyuSIQ.js.map +0 -1
- package/dist/command-Bn_kbh3B.js +0 -2
- package/dist/db-4nMvBFNX.js +0 -2
- package/dist/files-C_CsTMtM.js +0 -2
- package/dist/files-vgLA9tcj.js +0 -2
- package/dist/init-DIAJuCs2.js +0 -2
- package/dist/matchers-Bp-OH1vj.js.map +0 -1
- package/dist/model-C_B5JrhL.js +0 -2
- package/dist/model-CtrJdFi6.js.map +0 -1
- package/dist/opencode-providers-DJVocFOU.js.map +0 -1
- package/dist/plan-Bsge1_cc.js.map +0 -1
- package/dist/query-BtLxk32J.js +0 -2
- package/dist/results-CiJzkjNI.js +0 -37
- package/dist/results-CiJzkjNI.js.map +0 -1
- package/dist/server-CN3lGbK-.js +0 -2
- package/dist/source-CxLRUqU2.js +0 -2
- package/dist/src-B3J1D0nL.js.map +0 -1
- package/dist/src-Ba3zMSdv.js +0 -3
- package/dist/src-BpVFmHqj.js +0 -3
- package/dist/src-CJONyPRm.js +0 -3
- package/dist/src-CLO4dUg7.js +0 -3
- package/dist/src-DQCjANtm.js +0 -3
- package/dist/src-yCDQ7kpQ.js +0 -4
- package/dist/state-CeYoWFWx.js +0 -2
- package/dist/stats-BNAHlNMD.js +0 -114
- package/dist/stats-BNAHlNMD.js.map +0 -1
- package/dist/views-BEurSpHC.js +0 -3
- package/dist/worker-entry-mCctDzig.js.map +0 -1
|
@@ -5,25 +5,24 @@ import { o as redactSecrets, s as registerSecret } from "./redact-DJ9JCShu.js";
|
|
|
5
5
|
import { o as PACKAGE_VERSION } from "./root-CvdRlRZX.js";
|
|
6
6
|
import { T as workspaceLabel, u as environmentSandbox } from "./environment-DiCljXMD.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 hostCapacity, d as missingCredentials, f as resolveConcurrency, i as configPathFor, l as loadConfig, p as selectProfile, r as configLabel, s as findConfig, u as malformedCredentials } from "./config-
|
|
8
|
+
import { I as LABEL, X as imageInfo } from "./src-79JhW-zG.js";
|
|
9
|
+
import { d as sandboxId, s as harnessId } from "./options-Ge_x32XE.js";
|
|
10
|
+
import { c as hostCapacity, d as missingCredentials, f as resolveConcurrency, i as configPathFor, l as loadConfig, p as selectProfile, r as configLabel, s as findConfig, u as malformedCredentials } from "./config-DuQDCx0B.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 { B as cellContrast, G as effortLabel, L as judgeRatesLabel, M as cellJudgeRates, N as cellUsage, P as collapsedJudgeLabel, _ as hasUngatedCells, b as isUngatedMiss, h as formatUsage, w as runOutcome } from "./model-
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import { n as FLAGS, o as helpText, r as GLOBAL, t as COMMANDS } from "./cli-spec-
|
|
18
|
-
import { i as runtimeInfo, n as gitInfo, r as runnerInfo, t as author } from "./provenance-
|
|
14
|
+
import { B as cellContrast, G as effortLabel, L as judgeRatesLabel, M as cellJudgeRates, N as cellUsage, P as collapsedJudgeLabel, _ as hasUngatedCells, b as isUngatedMiss, h as formatUsage, w as runOutcome } from "./model-DyQbu7KF.js";
|
|
15
|
+
import { a as liftLabel, i as gateLabel, n as answersLabel } from "./summary--FBuB_sr.js";
|
|
16
|
+
import { c as writeLiveProgress, i as prepareResume, o as resolveResume, r as loadPrevious, s as writeCurrent, t as completedKeysFor } from "./resume-BL4Yw7Ld.js";
|
|
17
|
+
import { n as FLAGS, o as helpText, r as GLOBAL, t as COMMANDS } from "./cli-spec-DOyxAMc2.js";
|
|
18
|
+
import { i as runtimeInfo, n as gitInfo, r as runnerInfo, t as author } from "./provenance-Byl2T6LJ.js";
|
|
19
19
|
import { t as budgetMarker } from "./budget-DBUrH4jX.js";
|
|
20
|
-
import { n as prepareAll, o as writePrepared, r as prepareTargets, t as RunStopError } from "./preflight-
|
|
21
|
-
import { r as imageHarness } from "./prepare-
|
|
22
|
-
import { n as createProviders } from "./providers-
|
|
23
|
-
import { a as redactArgv, r as commandOf, t as logInvocation } from "./invocations-
|
|
20
|
+
import { n as prepareAll, o as writePrepared, r as prepareTargets, t as RunStopError } from "./preflight-CyaAZE9r.js";
|
|
21
|
+
import { r as imageHarness } from "./prepare-Zr1xOMUX.js";
|
|
22
|
+
import { n as createProviders } from "./providers-Cflw7Ks-.js";
|
|
23
|
+
import { a as redactArgv, r as commandOf, t as logInvocation } from "./invocations-DArYWyXN.js";
|
|
24
24
|
import { n as stripAnsi, t as colors } from "./colors-QV9dFVhN.js";
|
|
25
|
-
import { existsSync, mkdirSync, readdirSync,
|
|
26
|
-
import { hostname } from "node:os";
|
|
25
|
+
import { existsSync, mkdirSync, readdirSync, writeFileSync } from "node:fs";
|
|
27
26
|
import { dirname, join } from "node:path";
|
|
28
27
|
import { appendFile, readFile, rm } from "node:fs/promises";
|
|
29
28
|
import { inspect } from "node:util";
|
|
@@ -32,7 +31,7 @@ import { Command, Option } from "commander";
|
|
|
32
31
|
//#region src/cli-parse.ts
|
|
33
32
|
const OPTIONS = Object.fromEntries(Object.entries(FLAGS).map(([name, spec]) => {
|
|
34
33
|
const short = "short" in spec ? `-${spec.short}, ` : "";
|
|
35
|
-
const value = spec.type === "string" ? " <value>" : "";
|
|
34
|
+
const value = spec.type === "string" ? "optional" in spec && spec.optional ? " [value]" : " <value>" : "";
|
|
36
35
|
return [name, () => {
|
|
37
36
|
const option = new Option(`${short}--${name}${value}`);
|
|
38
37
|
if ("multiple" in spec && spec.multiple) option.argParser((v, prev = []) => [...prev, spec.type === "string" ? v : true]);
|
|
@@ -108,7 +107,10 @@ function valuesOf(command, flags) {
|
|
|
108
107
|
const value = option && opts[option.attributeName()];
|
|
109
108
|
if (option?.negate) {
|
|
110
109
|
if (value === false) values[flag] = true;
|
|
111
|
-
} else if (value !== void 0)
|
|
110
|
+
} else if (value !== void 0) {
|
|
111
|
+
const spec = FLAGS[flag];
|
|
112
|
+
values[flag] = spec.type === "string" && "optional" in spec && spec.optional && value === true ? "" : value;
|
|
113
|
+
}
|
|
112
114
|
}
|
|
113
115
|
return values;
|
|
114
116
|
}
|
|
@@ -127,104 +129,6 @@ function usageError(error, command) {
|
|
|
127
129
|
}
|
|
128
130
|
return new UsageError(first.charAt(0).toUpperCase() + first.slice(1));
|
|
129
131
|
}
|
|
130
|
-
function finished(result) {
|
|
131
|
-
const outcome = result.meta?.outcome;
|
|
132
|
-
if (result.state === "skipped") return outcome === "fail" || outcome === "infra_error" ? outcome : "skipped";
|
|
133
|
-
if (outcome === "infra_error") return "infra_error";
|
|
134
|
-
return result.state === "passed" ? "pass" : "fail";
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Renames `from` over `to`. Windows refuses while a reader (`reeval studio`) has `to` open, for a
|
|
138
|
-
* moment: try again briefly rather than drop the update.
|
|
139
|
-
*/
|
|
140
|
-
function replace(from, to, rename = renameSync) {
|
|
141
|
-
for (let attempt = 1;; attempt++) try {
|
|
142
|
-
rename(from, to);
|
|
143
|
-
return;
|
|
144
|
-
} catch (error) {
|
|
145
|
-
const code = error.code;
|
|
146
|
-
if (attempt >= 20 || !(code === "EPERM" || code === "EACCES" || code === "EBUSY")) throw error;
|
|
147
|
-
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, attempt);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
/** Writes the file at once, then on every change and heartbeat. Write errors never fail the run. */
|
|
151
|
-
function writeLiveProgress(options) {
|
|
152
|
-
const now = options.now ?? (() => /* @__PURE__ */ new Date());
|
|
153
|
-
const file = join(options.dir, LIVE_FILE);
|
|
154
|
-
const tmp = `${file}.${process.pid}.tmp`;
|
|
155
|
-
const attempts = new Map(options.planned.map((p) => [p.key, {
|
|
156
|
-
key: p.key,
|
|
157
|
-
evalId: p.id,
|
|
158
|
-
name: p.attempt.name,
|
|
159
|
-
file: p.file,
|
|
160
|
-
cell: p.attempt.cell.key,
|
|
161
|
-
n: p.attempt.n,
|
|
162
|
-
status: p.attempt.plan.skip ? "skipped" : "queued",
|
|
163
|
-
startedAt: null,
|
|
164
|
-
durationMs: null
|
|
165
|
-
}]));
|
|
166
|
-
let phase = "running";
|
|
167
|
-
let stopped = false;
|
|
168
|
-
const read = () => {
|
|
169
|
-
const list = [...attempts.values()];
|
|
170
|
-
return {
|
|
171
|
-
schemaVersion: 1,
|
|
172
|
-
runId: options.runId,
|
|
173
|
-
startedAt: options.startedAt.toISOString(),
|
|
174
|
-
pid: process.pid,
|
|
175
|
-
host: hostname(),
|
|
176
|
-
heartbeatAt: now().toISOString(),
|
|
177
|
-
phase,
|
|
178
|
-
planned: list.length,
|
|
179
|
-
counts: liveCounts(list),
|
|
180
|
-
attempts: list
|
|
181
|
-
};
|
|
182
|
-
};
|
|
183
|
-
const write = () => {
|
|
184
|
-
if (stopped) return;
|
|
185
|
-
try {
|
|
186
|
-
writeFileSync(tmp, JSON.stringify(read()));
|
|
187
|
-
replace(tmp, file);
|
|
188
|
-
} catch {}
|
|
189
|
-
};
|
|
190
|
-
try {
|
|
191
|
-
mkdirSync(options.dir, { recursive: true });
|
|
192
|
-
} catch {}
|
|
193
|
-
write();
|
|
194
|
-
const heartbeat = setInterval(write, options.heartbeatMs ?? 2e3);
|
|
195
|
-
heartbeat.unref();
|
|
196
|
-
const stop = () => {
|
|
197
|
-
stopped = true;
|
|
198
|
-
clearInterval(heartbeat);
|
|
199
|
-
};
|
|
200
|
-
return {
|
|
201
|
-
start(key, at) {
|
|
202
|
-
const a = attempts.get(key);
|
|
203
|
-
if (!a) return;
|
|
204
|
-
a.status = "running";
|
|
205
|
-
a.startedAt = new Date(at).toISOString();
|
|
206
|
-
write();
|
|
207
|
-
},
|
|
208
|
-
end(result) {
|
|
209
|
-
const a = attempts.get(result.key);
|
|
210
|
-
if (!a) return;
|
|
211
|
-
a.status = finished(result);
|
|
212
|
-
a.durationMs = result.durationMs;
|
|
213
|
-
write();
|
|
214
|
-
},
|
|
215
|
-
phase(next) {
|
|
216
|
-
phase = next;
|
|
217
|
-
write();
|
|
218
|
-
},
|
|
219
|
-
stop,
|
|
220
|
-
remove() {
|
|
221
|
-
stop();
|
|
222
|
-
rmSync(file, { force: true });
|
|
223
|
-
rmSync(tmp, { force: true });
|
|
224
|
-
},
|
|
225
|
-
read
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
132
|
//#endregion
|
|
229
133
|
//#region src/preflight.ts
|
|
230
134
|
/** How the terminal names a sandbox to prepare: its cell id, `+ install`, and a harness other than Cursor. */
|
|
@@ -779,7 +683,7 @@ var AgentRenderer = class {
|
|
|
779
683
|
for (const w of e.sandboxWarnings ?? []) this.#write(sandboxWarningLine(w));
|
|
780
684
|
return;
|
|
781
685
|
case "run-start":
|
|
782
|
-
this.#write(`reeval run: ${e.files} eval file${e.files === 1 ? "" : "s"}`);
|
|
686
|
+
this.#write(`reeval run: ${e.runId} · ${e.files} eval file${e.files === 1 ? "" : "s"}`);
|
|
783
687
|
return;
|
|
784
688
|
case "collected":
|
|
785
689
|
this.#tags.addFile(e.evals);
|
|
@@ -932,7 +836,7 @@ var PlainRenderer = class {
|
|
|
932
836
|
const files = `${e.files} eval file${e.files === 1 ? "" : "s"}`;
|
|
933
837
|
const order = `${this.#o.output.logOrder} logs`;
|
|
934
838
|
const setup = `harness ${e.harness} · sandbox ${e.sandbox} · concurrency ${e.concurrency}`;
|
|
935
|
-
this.#write(c.dim(`reeval ${e.version} · ${files} · ${setup} · ${order}`));
|
|
839
|
+
this.#write(c.dim(`reeval ${e.version} · run ${e.runId} · ${files} · ${setup} · ${order}`));
|
|
936
840
|
return;
|
|
937
841
|
}
|
|
938
842
|
case "plan":
|
|
@@ -1212,7 +1116,7 @@ async function run(argv) {
|
|
|
1212
1116
|
return values.help ? EXIT.ok : EXIT.usage;
|
|
1213
1117
|
}
|
|
1214
1118
|
if (command === "init") {
|
|
1215
|
-
const { initCommand } = await import("./init-
|
|
1119
|
+
const { initCommand } = await import("./init-1THeGfut.js");
|
|
1216
1120
|
return initCommand(values, filters, {
|
|
1217
1121
|
out: (s) => console.log(s),
|
|
1218
1122
|
input: process.stdin,
|
|
@@ -1221,7 +1125,7 @@ async function run(argv) {
|
|
|
1221
1125
|
});
|
|
1222
1126
|
}
|
|
1223
1127
|
if (command === "doctor") {
|
|
1224
|
-
const { doctorCommand } = await import("./doctor-
|
|
1128
|
+
const { doctorCommand } = await import("./doctor-Bk6aJeec.js");
|
|
1225
1129
|
return doctorCommand(values, {
|
|
1226
1130
|
out: (s) => console.log(s),
|
|
1227
1131
|
color: !!process.stdout.isTTY && !process.env.NO_COLOR,
|
|
@@ -1229,7 +1133,7 @@ async function run(argv) {
|
|
|
1229
1133
|
});
|
|
1230
1134
|
}
|
|
1231
1135
|
if (command === "report") {
|
|
1232
|
-
const { reportCommand } = await import("./command-
|
|
1136
|
+
const { reportCommand } = await import("./command-Cej2t3y-.js");
|
|
1233
1137
|
return reportCommand(values, filters, {
|
|
1234
1138
|
out: (s) => console.log(s),
|
|
1235
1139
|
err: (s) => console.error(dim(s)),
|
|
@@ -1244,7 +1148,7 @@ async function run(argv) {
|
|
|
1244
1148
|
}
|
|
1245
1149
|
if (command === "studio") {
|
|
1246
1150
|
const config = await loadConfig(configPath, "studio");
|
|
1247
|
-
const { studioCommand } = await import("./command-
|
|
1151
|
+
const { studioCommand } = await import("./command-l4ZFCeMh.js");
|
|
1248
1152
|
return studioCommand({
|
|
1249
1153
|
config,
|
|
1250
1154
|
flags: values,
|
|
@@ -1255,7 +1159,7 @@ async function run(argv) {
|
|
|
1255
1159
|
if (command === "mcp") {
|
|
1256
1160
|
if (!values.http) console.log = console.info = console.debug = console.error;
|
|
1257
1161
|
const config = await loadConfig(configPath, "mcp");
|
|
1258
|
-
const { mcpCommand } = await import("./command-
|
|
1162
|
+
const { mcpCommand } = await import("./command-DMR69l5G.js");
|
|
1259
1163
|
return mcpCommand({
|
|
1260
1164
|
config,
|
|
1261
1165
|
flags: values,
|
|
@@ -1264,7 +1168,7 @@ async function run(argv) {
|
|
|
1264
1168
|
}
|
|
1265
1169
|
if (command in HISTORY_COMMANDS) {
|
|
1266
1170
|
const config = await loadConfig(configPath, command);
|
|
1267
|
-
const commands = await import("./commands-
|
|
1171
|
+
const commands = await import("./commands-DgOUkcSO.js");
|
|
1268
1172
|
const ctx = {
|
|
1269
1173
|
config,
|
|
1270
1174
|
flags: values,
|
|
@@ -1277,7 +1181,7 @@ async function run(argv) {
|
|
|
1277
1181
|
case "compare": return commands.compareCommand(ctx, filters);
|
|
1278
1182
|
case "checkout": return commands.checkoutCommand(ctx, filters);
|
|
1279
1183
|
case "query": {
|
|
1280
|
-
const { queryCommand } = await import("./query-
|
|
1184
|
+
const { queryCommand } = await import("./query-CvutWHaL.js");
|
|
1281
1185
|
return queryCommand({
|
|
1282
1186
|
...ctx,
|
|
1283
1187
|
err: (s) => console.error(dim(s))
|
|
@@ -1285,7 +1189,7 @@ async function run(argv) {
|
|
|
1285
1189
|
}
|
|
1286
1190
|
case "analyze": {
|
|
1287
1191
|
loadEnvFiles(configPath);
|
|
1288
|
-
const { analyzeCommand } = await import("./command-
|
|
1192
|
+
const { analyzeCommand } = await import("./command-Cxfgghqo.js");
|
|
1289
1193
|
return analyzeCommand({
|
|
1290
1194
|
...ctx,
|
|
1291
1195
|
err: (s) => console.error(dim(s))
|
|
@@ -1324,8 +1228,8 @@ async function cleanCommand(flags, configPath) {
|
|
|
1324
1228
|
const where = fromCwd(debugRoot(config.root)) || ".";
|
|
1325
1229
|
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}`);
|
|
1326
1230
|
if (flags.images) {
|
|
1327
|
-
const { pruneImages } = await import("./src-
|
|
1328
|
-
const { requireDocker } = await import("./providers-
|
|
1231
|
+
const { pruneImages } = await import("./src-DH0jhpoi.js");
|
|
1232
|
+
const { requireDocker } = await import("./providers-SBMExI53.js");
|
|
1329
1233
|
await requireDocker();
|
|
1330
1234
|
const removed = await pruneImages();
|
|
1331
1235
|
console.log(removed ? `Removed ${removed} image${removed === 1 ? "" : "s"} reeval built that nothing uses` : "No leftover images to remove");
|
|
@@ -1343,7 +1247,7 @@ function verbosityOf(flags) {
|
|
|
1343
1247
|
* does. Without a config, just reeval's image.
|
|
1344
1248
|
*/
|
|
1345
1249
|
async function imageBuildCommand(flags, configPath, filters) {
|
|
1346
|
-
const { buildImages, imagePlanLines, imageTargets } = await import("./images-
|
|
1250
|
+
const { buildImages, imagePlanLines, imageTargets } = await import("./images-BpwFDT1E.js");
|
|
1347
1251
|
const { docker } = await import("./sandbox.js");
|
|
1348
1252
|
let root = process.cwd();
|
|
1349
1253
|
const { fakeHarness } = await import("./harness.js");
|
|
@@ -1430,6 +1334,10 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1430
1334
|
const setup = await prepareRun(flags, configPath);
|
|
1431
1335
|
const ctx = await startRun(setup);
|
|
1432
1336
|
invocation.runId = ctx.runId;
|
|
1337
|
+
const githubOut = process.env.GITHUB_OUTPUT;
|
|
1338
|
+
if (githubOut) await appendFile(githubOut, `run-id=${ctx.runId}\n`).catch(() => {});
|
|
1339
|
+
const stepStart = process.env.GITHUB_STEP_SUMMARY;
|
|
1340
|
+
if (stepStart) await appendFile(stepStart, `run ${ctx.runId}\n`).catch(() => {});
|
|
1433
1341
|
const { engineVersions } = await import("./node-Co7EXge0.js");
|
|
1434
1342
|
const renderer = createRenderer({
|
|
1435
1343
|
out: setup.json ? { write: () => true } : process.stdout,
|
|
@@ -1443,7 +1351,7 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1443
1351
|
executed = await executeRun(ctx, setup, filters, renderer);
|
|
1444
1352
|
} catch (error) {
|
|
1445
1353
|
renderer.close();
|
|
1446
|
-
await rm(ctx.stagingDir, {
|
|
1354
|
+
if (setup.resume === void 0) await rm(ctx.stagingDir, {
|
|
1447
1355
|
recursive: true,
|
|
1448
1356
|
force: true
|
|
1449
1357
|
});
|
|
@@ -1452,14 +1360,14 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1452
1360
|
const { engineRun, plan, sandboxVersions, budgetReached, live, notes, questions } = executed;
|
|
1453
1361
|
invocation.unhandledErrors = engineRun.unhandledErrors;
|
|
1454
1362
|
if ((interrupted || engineRun.cancelled) && plan?.sandboxes.some((s) => s.kind === "docker")) {
|
|
1455
|
-
const { removeRunContainers } = await import("./docker-
|
|
1363
|
+
const { removeRunContainers } = await import("./docker-Dnya8eo9.js");
|
|
1456
1364
|
await removeRunContainers(ctx.runId);
|
|
1457
1365
|
}
|
|
1458
1366
|
if (notes) {
|
|
1459
1367
|
const cancelled = interrupted || engineRun.cancelled;
|
|
1460
1368
|
const written = await notes.finish(cancelled);
|
|
1461
1369
|
if (!cancelled && written.length) {
|
|
1462
|
-
const { notesLine } = await import("./agent-
|
|
1370
|
+
const { notesLine } = await import("./agent-Dhd5FJCZ.js");
|
|
1463
1371
|
const text = notesLine(ctx.config.root, ctx.runId, written);
|
|
1464
1372
|
renderer.onEvent({
|
|
1465
1373
|
type: "notice",
|
|
@@ -1476,8 +1384,8 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1476
1384
|
}
|
|
1477
1385
|
const stopped = interrupted || engineRun.cancelled;
|
|
1478
1386
|
const answers = questions && !stopped ? await questions.settle() : void 0;
|
|
1479
|
-
const { lockfiles } = await import("./state-
|
|
1480
|
-
const { writeScratchRun } = await import("./results-
|
|
1387
|
+
const { lockfiles } = await import("./state-DkqbCVVp.js");
|
|
1388
|
+
const { writeScratchRun } = await import("./results-owJR-NFm.js");
|
|
1481
1389
|
const run = await writeScratchRun({
|
|
1482
1390
|
ctx,
|
|
1483
1391
|
author: ctx.author,
|
|
@@ -1495,12 +1403,14 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1495
1403
|
worktreePatch: ctx.worktreePatch,
|
|
1496
1404
|
lockfiles: await lockfiles(ctx.config.root),
|
|
1497
1405
|
git: ctx.git,
|
|
1406
|
+
previous: ctx.previous,
|
|
1407
|
+
previousArtifacts: ctx.previousArtifacts,
|
|
1498
1408
|
runner: runnerInfo(),
|
|
1499
1409
|
...answers?.size ? { answers } : {}
|
|
1500
1410
|
}, () => live?.stop());
|
|
1501
1411
|
const { record } = run;
|
|
1502
1412
|
if (notes && !stopped) {
|
|
1503
|
-
const { summarizeRun } = await import("./agent-
|
|
1413
|
+
const { summarizeRun } = await import("./agent-Dhd5FJCZ.js");
|
|
1504
1414
|
const { resolveAnalysisModel } = await import("./model-BeoRxCcJ.js");
|
|
1505
1415
|
const model = resolveAnalysisModel(ctx.config, "agent");
|
|
1506
1416
|
const { level, text } = await summarizeRun(ctx.config, record.runId, model);
|
|
@@ -1528,7 +1438,7 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1528
1438
|
const { config } = ctx;
|
|
1529
1439
|
const mode = setup.record;
|
|
1530
1440
|
if ((flags.record || mode === "always" || mode === "ci" && inCI()) && record.status !== "interrupted") {
|
|
1531
|
-
const { record: recordCmd } = await import("./commands-
|
|
1441
|
+
const { record: recordCmd } = await import("./commands-DgOUkcSO.js");
|
|
1532
1442
|
const allow = record.status === "budget" ? { "allow-incomplete": true } : {};
|
|
1533
1443
|
console.log(await recordCmd(config, record.runId, {
|
|
1534
1444
|
...flags,
|
|
@@ -1566,7 +1476,7 @@ async function prepareRun(flags, configPath) {
|
|
|
1566
1476
|
const sandboxes = [environmentSandbox(config.environment, config.sandbox), ...profile?.defaults.environment ? [environmentSandbox(profile.defaults.environment, config.sandbox)] : []];
|
|
1567
1477
|
const concurrency = await resolveConcurrency(config, flags.concurrency, async () => {
|
|
1568
1478
|
if (!sandboxes.some((s) => s.kind === "docker")) return hostCapacity();
|
|
1569
|
-
const { dockerCapacity } = await import("./src-
|
|
1479
|
+
const { dockerCapacity } = await import("./src-DH0jhpoi.js");
|
|
1570
1480
|
return await dockerCapacity() ?? hostCapacity();
|
|
1571
1481
|
});
|
|
1572
1482
|
return {
|
|
@@ -1584,19 +1494,52 @@ async function prepareRun(flags, configPath) {
|
|
|
1584
1494
|
verbosity: verbosityOf(flags),
|
|
1585
1495
|
configFile: configPath && configLabel(configPath),
|
|
1586
1496
|
/** Named in the plan line when the project root isn't the current directory. */
|
|
1587
|
-
configElsewhere: !!configPath && dirname(configPath) !== process.cwd()
|
|
1497
|
+
configElsewhere: !!configPath && dirname(configPath) !== process.cwd(),
|
|
1498
|
+
/** `undefined` is a new run; `''` is newest resumable; a string is a run id or prefix. */
|
|
1499
|
+
resume: flags.resume
|
|
1588
1500
|
};
|
|
1589
1501
|
}
|
|
1590
1502
|
/** The run's id and the state it starts from: commit, uncommitted changes, author. */
|
|
1591
|
-
async function startRun({ config, profile, runs, tags, concurrency, verbosity, configFile }) {
|
|
1503
|
+
async function startRun({ config, profile, runs, tags, concurrency, verbosity, configFile, resume, dryRun }) {
|
|
1592
1504
|
const startedAt = /* @__PURE__ */ new Date();
|
|
1593
1505
|
const git = await gitInfo(config.root, [config.history.dir]);
|
|
1594
|
-
const { worktreePatch } = await import("./state-
|
|
1506
|
+
const { worktreePatch } = await import("./state-DkqbCVVp.js");
|
|
1595
1507
|
const patch = git?.dirty ? await worktreePatch(config.root, [config.history.dir]) : null;
|
|
1596
1508
|
const who = await author(config.root);
|
|
1597
|
-
const { stagingDir, sweepStaging } = await import("./results-
|
|
1598
|
-
const { scratchDir } = await import("./files-
|
|
1509
|
+
const { stagingDir, sweepStaging } = await import("./results-owJR-NFm.js");
|
|
1510
|
+
const { scratchDir } = await import("./files-DmZGPsWK.js");
|
|
1599
1511
|
const scratch = scratchDir(config.root);
|
|
1512
|
+
if (resume !== void 0) {
|
|
1513
|
+
const target = await resolveResume(config.root, resume || void 0);
|
|
1514
|
+
if (!dryRun) await prepareResume(target, config.root);
|
|
1515
|
+
await sweepStaging(config.root, target.runId);
|
|
1516
|
+
const aside = dryRun ? {
|
|
1517
|
+
record: target.previous,
|
|
1518
|
+
artifacts: target.previousArtifacts
|
|
1519
|
+
} : await loadPrevious(stagingDir(config.root, target.runId));
|
|
1520
|
+
if (!dryRun) try {
|
|
1521
|
+
const { removeRunContainers } = await import("./docker-Dnya8eo9.js");
|
|
1522
|
+
await removeRunContainers(target.runId);
|
|
1523
|
+
} catch {}
|
|
1524
|
+
return {
|
|
1525
|
+
runId: target.runId,
|
|
1526
|
+
stagingDir: stagingDir(config.root, target.runId),
|
|
1527
|
+
config,
|
|
1528
|
+
runs,
|
|
1529
|
+
tags,
|
|
1530
|
+
concurrency,
|
|
1531
|
+
profile,
|
|
1532
|
+
verbosity,
|
|
1533
|
+
configFile,
|
|
1534
|
+
startedAt: target.startedAt,
|
|
1535
|
+
git,
|
|
1536
|
+
worktreePatch: patch,
|
|
1537
|
+
author: who,
|
|
1538
|
+
scratch,
|
|
1539
|
+
previous: aside.record ?? target.previous,
|
|
1540
|
+
previousArtifacts: aside.artifacts ?? target.previousArtifacts
|
|
1541
|
+
};
|
|
1542
|
+
}
|
|
1600
1543
|
const stamps = new Set([scratch, config.history.dir].flatMap((dir) => existsSync(dir) ? readdirSync(dir).map((name) => name.slice(0, 16)) : []));
|
|
1601
1544
|
let runId = newRunId(startedAt, git?.sha ?? null, who);
|
|
1602
1545
|
for (let n = 1; stamps.has(runId.slice(0, 16)); n++) runId = newRunId(new Date(startedAt.getTime() + n * 1e3), git?.sha ?? null, who);
|
|
@@ -1615,7 +1558,9 @@ async function startRun({ config, profile, runs, tags, concurrency, verbosity, c
|
|
|
1615
1558
|
git,
|
|
1616
1559
|
worktreePatch: patch,
|
|
1617
1560
|
author: who,
|
|
1618
|
-
scratch
|
|
1561
|
+
scratch,
|
|
1562
|
+
previous: null,
|
|
1563
|
+
previousArtifacts: null
|
|
1619
1564
|
};
|
|
1620
1565
|
}
|
|
1621
1566
|
function noMatch(config, filters, tags) {
|
|
@@ -1632,8 +1577,20 @@ function unmatchedFilter(config, parts) {
|
|
|
1632
1577
|
*/
|
|
1633
1578
|
async function executeRun(ctx, setup, filters, renderer) {
|
|
1634
1579
|
const { runId, stagingDir, config, runs, tags, concurrency, profile, verbosity, configFile } = ctx;
|
|
1580
|
+
const run = JSON.parse(JSON.stringify({
|
|
1581
|
+
runId,
|
|
1582
|
+
stagingDir,
|
|
1583
|
+
config,
|
|
1584
|
+
runs,
|
|
1585
|
+
tags,
|
|
1586
|
+
concurrency,
|
|
1587
|
+
profile,
|
|
1588
|
+
verbosity,
|
|
1589
|
+
configFile,
|
|
1590
|
+
completed: []
|
|
1591
|
+
}));
|
|
1635
1592
|
const { runEngine } = await import("./node-Co7EXge0.js");
|
|
1636
|
-
const { buildPlan, checkAttemptBudget, planDocument, planLine, planTable } = await import("./plan-
|
|
1593
|
+
const { buildPlan, checkAttemptBudget, planDocument, planLine, planTable } = await import("./plan-BqBadHYj.js");
|
|
1637
1594
|
let plan;
|
|
1638
1595
|
let sandboxVersions = { images: [] };
|
|
1639
1596
|
let preflightStop;
|
|
@@ -1646,11 +1603,23 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1646
1603
|
const onPlan = async ({ planned, excluded, matched, unmatched }) => {
|
|
1647
1604
|
if (unmatched.length) throw unmatchedFilter(config, unmatched);
|
|
1648
1605
|
if (matched === 0) throw noMatch(config, filters, tags);
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1606
|
+
const completed = completedKeysFor(planned, stagingDir, ctx.previous);
|
|
1607
|
+
const skipped = planned.map((p) => completed.has(p.key) ? {
|
|
1608
|
+
...p,
|
|
1609
|
+
attempt: {
|
|
1610
|
+
...p.attempt,
|
|
1611
|
+
skip: "already completed in this run",
|
|
1612
|
+
plan: {
|
|
1613
|
+
...p.attempt.plan,
|
|
1614
|
+
skip: "already completed in this run"
|
|
1615
|
+
}
|
|
1616
|
+
}
|
|
1617
|
+
} : p);
|
|
1618
|
+
toRun = skipped;
|
|
1619
|
+
for (const p of skipped) for (const name of p.attempt.secretVars) registerSecret(process.env[name]);
|
|
1620
|
+
const models = skipped.some((p) => !p.attempt.plan.skip && p.attempt.plan.questions?.length) ? await import("./model-BeoRxCcJ.js") : void 0;
|
|
1652
1621
|
plan = await buildPlan({
|
|
1653
|
-
planned,
|
|
1622
|
+
planned: skipped,
|
|
1654
1623
|
profile,
|
|
1655
1624
|
budget: setup.budget,
|
|
1656
1625
|
concurrency,
|
|
@@ -1658,8 +1627,14 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1658
1627
|
historyDir: config.history.dir,
|
|
1659
1628
|
questionModel: models?.questionModelLabel(config) ?? null
|
|
1660
1629
|
});
|
|
1661
|
-
|
|
1662
|
-
|
|
1630
|
+
plan.runId = runId;
|
|
1631
|
+
if (completed.size) plan.resume = {
|
|
1632
|
+
runId,
|
|
1633
|
+
completed: completed.size
|
|
1634
|
+
};
|
|
1635
|
+
run.completed = [...completed];
|
|
1636
|
+
const { imageStages, imageTargets } = await import("./images-BpwFDT1E.js");
|
|
1637
|
+
const targets = imageTargets(skipped.filter((p) => !p.attempt.plan.skip).map((p) => ({
|
|
1663
1638
|
id: p.id,
|
|
1664
1639
|
harness: p.attempt.harness,
|
|
1665
1640
|
sandbox: p.attempt.sandbox
|
|
@@ -1671,16 +1646,16 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1671
1646
|
evals: t.evals,
|
|
1672
1647
|
stages: await imageStages(t, config.root)
|
|
1673
1648
|
})));
|
|
1674
|
-
const doc = planDocument(plan,
|
|
1649
|
+
const doc = planDocument(plan, skipped, excluded, images);
|
|
1675
1650
|
process.stdout.write(`${JSON.stringify(doc, null, 2)}\n`);
|
|
1676
1651
|
return false;
|
|
1677
1652
|
}
|
|
1678
|
-
const lines = [planLine(plan, setup.configElsewhere ? configFile : void 0)];
|
|
1653
|
+
const lines = [planLine(plan, setup.configElsewhere ? configFile : void 0, runId)];
|
|
1679
1654
|
if (setup.dryRun) {
|
|
1680
1655
|
const todos = excluded.filter((e) => e.mode === "todo").map((e) => e.id);
|
|
1681
1656
|
lines.push(...planTable(plan, todos));
|
|
1682
|
-
const { imageStatusLines } = await import("./images-
|
|
1683
|
-
const { dockerAvailable } = await import("./src-
|
|
1657
|
+
const { imageStatusLines } = await import("./images-BpwFDT1E.js");
|
|
1658
|
+
const { dockerAvailable } = await import("./src-DH0jhpoi.js");
|
|
1684
1659
|
if (targets.length && await dockerAvailable()) lines.push(...await imageStatusLines(targets, config.root));
|
|
1685
1660
|
else if (targets.length) lines.push("images not checked: Docker is not running");
|
|
1686
1661
|
}
|
|
@@ -1723,13 +1698,13 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1723
1698
|
});
|
|
1724
1699
|
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.`);
|
|
1725
1700
|
if (analysis) {
|
|
1726
|
-
const { startNotes } = await import("./agent-
|
|
1701
|
+
const { startNotes } = await import("./agent-Dhd5FJCZ.js");
|
|
1727
1702
|
notes = startNotes({
|
|
1728
1703
|
config,
|
|
1729
1704
|
model: analysis.resolveAnalysisModel(config, "agent"),
|
|
1730
1705
|
runId,
|
|
1731
1706
|
stagingDir,
|
|
1732
|
-
planned,
|
|
1707
|
+
planned: skipped,
|
|
1733
1708
|
warn: (text) => renderer.onEvent({
|
|
1734
1709
|
type: "notice",
|
|
1735
1710
|
at: Date.now(),
|
|
@@ -1756,8 +1731,8 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1756
1731
|
}
|
|
1757
1732
|
});
|
|
1758
1733
|
}
|
|
1759
|
-
const { prepareWorkspaces, workspaceKey } = await import("./workspace-
|
|
1760
|
-
const live =
|
|
1734
|
+
const { prepareWorkspaces, workspaceKey } = await import("./workspace-wudSz_W-.js");
|
|
1735
|
+
const live = skipped.filter((p) => !p.attempt.plan.skip);
|
|
1761
1736
|
const outcomes = await prepareWorkspaces(live.flatMap(({ attempt: a }) => a.workspace ? [{
|
|
1762
1737
|
workspace: a.workspace,
|
|
1763
1738
|
environment: a.cell.environment
|
|
@@ -1802,7 +1777,7 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1802
1777
|
});
|
|
1803
1778
|
}
|
|
1804
1779
|
try {
|
|
1805
|
-
sandboxVersions = await preflight(
|
|
1780
|
+
sandboxVersions = await preflight(skipped.filter((p) => !p.attempt.plan.skip).map((p) => ({
|
|
1806
1781
|
harness: p.attempt.harness,
|
|
1807
1782
|
sandbox: p.attempt.sandbox,
|
|
1808
1783
|
setBy: p.attempt.setBy
|
|
@@ -1841,20 +1816,11 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1841
1816
|
let engineRun;
|
|
1842
1817
|
try {
|
|
1843
1818
|
engineRun = await runEngine({
|
|
1844
|
-
run
|
|
1845
|
-
runId,
|
|
1846
|
-
stagingDir,
|
|
1847
|
-
config,
|
|
1848
|
-
runs,
|
|
1849
|
-
tags,
|
|
1850
|
-
concurrency,
|
|
1851
|
-
profile,
|
|
1852
|
-
verbosity,
|
|
1853
|
-
configFile
|
|
1854
|
-
})),
|
|
1819
|
+
run,
|
|
1855
1820
|
filters,
|
|
1856
1821
|
onPlan,
|
|
1857
1822
|
onRunStart: (files) => {
|
|
1823
|
+
writeCurrent(setup.config.root, runId);
|
|
1858
1824
|
live = writeLiveProgress({
|
|
1859
1825
|
dir: stagingDir,
|
|
1860
1826
|
runId,
|
|
@@ -1868,7 +1834,8 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1868
1834
|
files,
|
|
1869
1835
|
harness: (plan?.harnesses ?? config.harness.map(harnessId)).join(", "),
|
|
1870
1836
|
sandbox: sandboxId(config.sandbox),
|
|
1871
|
-
concurrency
|
|
1837
|
+
concurrency,
|
|
1838
|
+
runId
|
|
1872
1839
|
});
|
|
1873
1840
|
},
|
|
1874
1841
|
onEvent: (e) => {
|
|
@@ -1912,9 +1879,9 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1912
1879
|
throw error;
|
|
1913
1880
|
} finally {
|
|
1914
1881
|
clearTimeout(budgetTimer);
|
|
1915
|
-
const { removePrepared } = await import("./preflight-
|
|
1882
|
+
const { removePrepared } = await import("./preflight-CFtZNTLt.js");
|
|
1916
1883
|
removePrepared(config.root, runId);
|
|
1917
|
-
const { removePreparedWorkspaces } = await import("./workspace-
|
|
1884
|
+
const { removePreparedWorkspaces } = await import("./workspace-wudSz_W-.js");
|
|
1918
1885
|
removePreparedWorkspaces(config.root, runId);
|
|
1919
1886
|
}
|
|
1920
1887
|
if (preflightStop) throw preflightStop;
|
|
@@ -1997,4 +1964,4 @@ run(process.argv.slice(2)).finally(() => {
|
|
|
1997
1964
|
//#endregion
|
|
1998
1965
|
export {};
|
|
1999
1966
|
|
|
2000
|
-
//# sourceMappingURL=cli-
|
|
1967
|
+
//# sourceMappingURL=cli-r9CDqoFL.js.map
|