reeval 0.6.3 → 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 +30 -307
- package/dist/{agent-DKuFnZPM.js → agent-Dhd5FJCZ.js} +4 -4
- package/dist/{agent-DKuFnZPM.js.map → agent-Dhd5FJCZ.js.map} +1 -1
- package/dist/{agent-oirN_8IS.js → agent-gjBiZis8.js} +4 -4
- package/dist/{agent-oirN_8IS.js.map → agent-gjBiZis8.js.map} +1 -1
- package/dist/assemble-D8sZ4Jiv.js +2 -0
- package/dist/{assemble-DYCDgbTq.js → assemble-Dd_mZYnu.js} +109 -7
- package/dist/assemble-Dd_mZYnu.js.map +1 -0
- package/dist/bridge/index.mjs +66 -7
- package/dist/bridge/package.json +3 -3
- package/dist/bridge/pnpm-lock.yaml +84 -89
- package/dist/{cli-BIhzl_v_.js → cli-r9CDqoFL.js} +139 -186
- 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-KoOJ0ntD.js → command-Cej2t3y-.js} +9 -9
- package/dist/{command-KoOJ0ntD.js.map → command-Cej2t3y-.js.map} +1 -1
- package/dist/command-Cxfgghqo.js +2 -0
- package/dist/{command-DuJBqcwu.js → command-D6r2pwO5.js} +10 -10
- package/dist/{command-DuJBqcwu.js.map → command-D6r2pwO5.js.map} +1 -1
- package/dist/{command-B8tcwUJk.js → command-DMR69l5G.js} +12 -12
- package/dist/{command-B8tcwUJk.js.map → command-DMR69l5G.js.map} +1 -1
- package/dist/{command-fJpZK205.js → command-l4ZFCeMh.js} +6 -6
- package/dist/{command-fJpZK205.js.map → command-l4ZFCeMh.js.map} +1 -1
- package/dist/{commands-CHdTfPB6.js → commands-BA_NCh2h.js} +6 -6
- package/dist/{commands-CHdTfPB6.js.map → commands-BA_NCh2h.js.map} +1 -1
- package/dist/{commands-DE604ldB.js → commands-DgOUkcSO.js} +1 -1
- package/dist/{config-7-gXOgQf.js → config-DuQDCx0B.js} +3 -3
- package/dist/{config-7-gXOgQf.js.map → config-DuQDCx0B.js.map} +1 -1
- package/dist/{db-DvkzBhM6.js → db-CjX7JF4o.js} +12 -24
- package/dist/{db-DvkzBhM6.js.map → db-CjX7JF4o.js.map} +1 -1
- package/dist/db-o_osRkqr.js +3 -0
- package/dist/{dist-DsZNsoD3.js → dist-CTzThfu_.js} +3 -3
- package/dist/{dist-DsZNsoD3.js.map → dist-CTzThfu_.js.map} +1 -1
- package/dist/{docker-BBOMThRi.js → docker-DaUaG4XZ.js} +4 -4
- package/dist/{docker-BBOMThRi.js.map → docker-DaUaG4XZ.js.map} +1 -1
- package/dist/{docker-CiNVc7di.js → docker-Dnya8eo9.js} +1 -1
- package/dist/{docker-CzFiN2AZ.js → docker-ZaYeKE2w.js} +2 -2
- package/dist/{docker-CzFiN2AZ.js.map → docker-ZaYeKE2w.js.map} +1 -1
- package/dist/{doctor-C06kYs2r.js → doctor-Bk6aJeec.js} +10 -10
- package/dist/{doctor-C06kYs2r.js.map → doctor-Bk6aJeec.js.map} +1 -1
- package/dist/{egress-De64jpeQ.js → egress-BKbyriEa.js} +10 -10
- package/dist/{egress-De64jpeQ.js.map → egress-BKbyriEa.js.map} +1 -1
- package/dist/{files-BqIF7iu4.js → files-BSMSnQMa.js} +2 -2
- package/dist/{files-BqIF7iu4.js.map → files-BSMSnQMa.js.map} +1 -1
- package/dist/files-DmZGPsWK.js +2 -0
- package/dist/{files-Cq99wif-.js → files-TNrZJQ3Y.js} +15 -4
- package/dist/{files-Cq99wif-.js.map → files-TNrZJQ3Y.js.map} +1 -1
- package/dist/files-Tb8wY0Ze.js +2 -0
- package/dist/{git-Dnl-kXgD.js → git-DNGtrOg9.js} +2 -2
- package/dist/{git-Dnl-kXgD.js.map → git-DNGtrOg9.js.map} +1 -1
- package/dist/{harness-3QUEWx8G.js → harness-CDRaaGvR.js} +2 -2
- package/dist/{harness-3QUEWx8G.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-B8Mp_VXZ.js → images-BpwFDT1E.js} +6 -6
- package/dist/{images-B8Mp_VXZ.js.map → images-BpwFDT1E.js.map} +1 -1
- package/dist/index.d.ts +12 -7
- package/dist/index.js +24 -17
- package/dist/index.js.map +1 -1
- package/dist/init-1THeGfut.js +2 -0
- package/dist/{init-B8mw86E6.js → init-CBWt1rZT.js} +4 -4
- package/dist/{init-B8mw86E6.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-DjlA5fuC.js → opencode-providers-ByD85Q0l.js} +21 -7
- package/dist/{opencode-providers-DjlA5fuC.js.map → opencode-providers-ByD85Q0l.js.map} +1 -1
- package/dist/{options-CWYB613o.js → options-Ge_x32XE.js} +3 -3
- package/dist/{options-CWYB613o.js.map → options-Ge_x32XE.js.map} +1 -1
- package/dist/{plan-CsPE24pp.js → plan-BqBadHYj.js} +14 -7
- package/dist/plan-BqBadHYj.js.map +1 -0
- package/dist/{preflight-DKZjb7ZH.js → preflight-CFtZNTLt.js} +1 -1
- package/dist/{preflight-r0DgibQV.js → preflight-CyaAZE9r.js} +3 -3
- package/dist/{preflight-r0DgibQV.js.map → preflight-CyaAZE9r.js.map} +1 -1
- package/dist/{prepare-DOkvAa9D.js → prepare-Dl7-t3fO.js} +2 -2
- package/dist/{prepare-CTLg3nuk.js → prepare-Zr1xOMUX.js} +4 -4
- package/dist/{prepare-CTLg3nuk.js.map → prepare-Zr1xOMUX.js.map} +1 -1
- package/dist/{provenance--cVNo80L.js → provenance-Byl2T6LJ.js} +2 -2
- package/dist/{provenance--cVNo80L.js.map → provenance-Byl2T6LJ.js.map} +1 -1
- package/dist/{providers-DNLQzVnc.js → providers-Cflw7Ks-.js} +3 -3
- package/dist/{providers-DNLQzVnc.js.map → providers-Cflw7Ks-.js.map} +1 -1
- package/dist/{providers-B2cSfewm.js → providers-SBMExI53.js} +1 -1
- package/dist/query-CvutWHaL.js +2 -0
- package/dist/{query-DTtIZaua.js → query-DUSLlic0.js} +2 -2
- package/dist/{query-DTtIZaua.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-BFlKK2j6.js → server-yFVUxAm0.js} +6 -6
- package/dist/{server-BFlKK2j6.js.map → server-yFVUxAm0.js.map} +1 -1
- package/dist/source-Cmc5SKFn.js +2 -0
- package/dist/{source-B2ASbTdc.js → source-M3gS517R.js} +2 -2
- package/dist/{source-B2ASbTdc.js.map → source-M3gS517R.js.map} +1 -1
- package/dist/{src-Bo8GFUXg.js → src--L8B4WGa.js} +1 -1
- package/dist/{src-zOeHvrzR.js → src-79JhW-zG.js} +13 -13
- package/dist/{src-zOeHvrzR.js.map → src-79JhW-zG.js.map} +1 -1
- package/dist/{src-BoziVhKa.js → src-BLN459er.js} +1 -1
- package/dist/src-Bz66jDtE.js +3 -0
- package/dist/{src-CPkDaNxp.js → src-CfUwg9UY.js} +1 -1
- package/dist/{src-BHFNhTTQ.js → src-CokPbYCb.js} +45 -45
- package/dist/{src-BHFNhTTQ.js.map → src-CokPbYCb.js.map} +1 -1
- package/dist/{src-CDiGyoDt.js → src-DH0jhpoi.js} +1 -1
- package/dist/{src-CVoCJjEe.js → src-DTcalvuF.js} +2 -2
- package/dist/{src-CVoCJjEe.js.map → src-DTcalvuF.js.map} +1 -1
- package/dist/src-DV_3QDHA.js +4 -0
- package/dist/{src-CqsERnCZ.js → src-IOr1rhEg.js} +4 -4
- package/dist/{src-CqsERnCZ.js.map → src-IOr1rhEg.js.map} +1 -1
- package/dist/src-Ljh2vKXm.js +3 -0
- package/dist/{state-DBKcUJ2u.js → state-DEj_utaE.js} +10 -10
- package/dist/{state-DBKcUJ2u.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-CahgSiVt.js → summary--FBuB_sr.js} +3 -3
- package/dist/{summary-CahgSiVt.js.map → summary--FBuB_sr.js.map} +1 -1
- package/dist/{summary-BBABbon9.js → summary-D012KlUM.js} +5 -5
- package/dist/{summary-BBABbon9.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-53YHomyk.js → tools-CJHw-zCo.js} +3 -3
- package/dist/{tools-53YHomyk.js.map → tools-CJHw-zCo.js.map} +1 -1
- package/dist/{types-CoAfC-_k.d.ts → types-BsRSknLe.d.ts} +5 -4
- package/dist/view/index.d.ts +1 -1
- package/dist/view/index.js +2 -2
- package/dist/{views-Drl2OXuj.js → views-jhL9Jb8A.js} +4 -4
- package/dist/{views-Drl2OXuj.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-BT4jd04k.js → workspace-C4_J0pqb.js} +3 -3
- package/dist/{workspace-BT4jd04k.js.map → workspace-C4_J0pqb.js.map} +1 -1
- package/dist/{workspace-U6M1gKzo.js → workspace-wudSz_W-.js} +1 -1
- package/package.json +9 -8
- package/dist/assemble-DYCDgbTq.js.map +0 -1
- package/dist/assemble-DykFydSU.js +0 -2
- package/dist/cli-BIhzl_v_.js.map +0 -1
- package/dist/cli-spec-DUeyuSIQ.js.map +0 -1
- package/dist/command-CwuwuKJD.js +0 -2
- package/dist/db-BVE1kZ2w.js +0 -2
- package/dist/files-Cs8tbYQY.js +0 -2
- package/dist/files-wUtoO5aA.js +0 -2
- package/dist/init-DDEpamaf.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/plan-CsPE24pp.js.map +0 -1
- package/dist/query-BWc_5Lhe.js +0 -2
- package/dist/results-CrFs7_In.js +0 -37
- package/dist/results-CrFs7_In.js.map +0 -1
- package/dist/server-HRUHVcHc.js +0 -2
- package/dist/source-Co7h89WK.js +0 -2
- package/dist/src-BE19tji4.js +0 -3
- package/dist/src-CFxHPwQA.js +0 -3
- package/dist/src-D-go5-qz.js +0 -4
- package/dist/state-BaHjYXr1.js +0 -2
- package/dist/stats-BNAHlNMD.js +0 -114
- package/dist/stats-BNAHlNMD.js.map +0 -1
- package/dist/views-BhGinAz_.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,118 +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
|
-
/** Sharing-violation codes Windows uses while a reader has `to` open. */
|
|
137
|
-
const BUSY = /* @__PURE__ */ new Set([
|
|
138
|
-
"EPERM",
|
|
139
|
-
"EACCES",
|
|
140
|
-
"EBUSY"
|
|
141
|
-
]);
|
|
142
|
-
/** How long a busy rename is retried. A studio poll holds the file for a few milliseconds. */
|
|
143
|
-
const BUSY_MS = 1e3;
|
|
144
|
-
function pause(ms) {
|
|
145
|
-
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Renames `from` over `to`. Windows refuses while a reader (`reeval studio`) has `to` open, for a
|
|
149
|
-
* moment: try again for up to a second rather than drop the update.
|
|
150
|
-
*/
|
|
151
|
-
function replace(from, to, rename = renameSync, hooks = {}) {
|
|
152
|
-
const now = hooks.now ?? Date.now;
|
|
153
|
-
const wait = hooks.wait ?? pause;
|
|
154
|
-
const deadline = now() + (hooks.busyMs ?? BUSY_MS);
|
|
155
|
-
for (let attempt = 1;; attempt++) try {
|
|
156
|
-
rename(from, to);
|
|
157
|
-
return;
|
|
158
|
-
} catch (error) {
|
|
159
|
-
const code = error.code;
|
|
160
|
-
if (!code || !BUSY.has(code) || now() >= deadline) throw error;
|
|
161
|
-
wait(Math.min(attempt, 32));
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
/** Writes the file at once, then on every change and heartbeat. Write errors never fail the run. */
|
|
165
|
-
function writeLiveProgress(options) {
|
|
166
|
-
const now = options.now ?? (() => /* @__PURE__ */ new Date());
|
|
167
|
-
const file = join(options.dir, LIVE_FILE);
|
|
168
|
-
const tmp = `${file}.${process.pid}.tmp`;
|
|
169
|
-
const attempts = new Map(options.planned.map((p) => [p.key, {
|
|
170
|
-
key: p.key,
|
|
171
|
-
evalId: p.id,
|
|
172
|
-
name: p.attempt.name,
|
|
173
|
-
file: p.file,
|
|
174
|
-
cell: p.attempt.cell.key,
|
|
175
|
-
n: p.attempt.n,
|
|
176
|
-
status: p.attempt.plan.skip ? "skipped" : "queued",
|
|
177
|
-
startedAt: null,
|
|
178
|
-
durationMs: null
|
|
179
|
-
}]));
|
|
180
|
-
let phase = "running";
|
|
181
|
-
let stopped = false;
|
|
182
|
-
const read = () => {
|
|
183
|
-
const list = [...attempts.values()];
|
|
184
|
-
return {
|
|
185
|
-
schemaVersion: 1,
|
|
186
|
-
runId: options.runId,
|
|
187
|
-
startedAt: options.startedAt.toISOString(),
|
|
188
|
-
pid: process.pid,
|
|
189
|
-
host: hostname(),
|
|
190
|
-
heartbeatAt: now().toISOString(),
|
|
191
|
-
phase,
|
|
192
|
-
planned: list.length,
|
|
193
|
-
counts: liveCounts(list),
|
|
194
|
-
attempts: list
|
|
195
|
-
};
|
|
196
|
-
};
|
|
197
|
-
const write = () => {
|
|
198
|
-
if (stopped) return;
|
|
199
|
-
try {
|
|
200
|
-
writeFileSync(tmp, JSON.stringify(read()));
|
|
201
|
-
replace(tmp, file);
|
|
202
|
-
} catch {}
|
|
203
|
-
};
|
|
204
|
-
try {
|
|
205
|
-
mkdirSync(options.dir, { recursive: true });
|
|
206
|
-
} catch {}
|
|
207
|
-
write();
|
|
208
|
-
const heartbeat = setInterval(write, options.heartbeatMs ?? 2e3);
|
|
209
|
-
heartbeat.unref();
|
|
210
|
-
const stop = () => {
|
|
211
|
-
stopped = true;
|
|
212
|
-
clearInterval(heartbeat);
|
|
213
|
-
};
|
|
214
|
-
return {
|
|
215
|
-
start(key, at) {
|
|
216
|
-
const a = attempts.get(key);
|
|
217
|
-
if (!a) return;
|
|
218
|
-
a.status = "running";
|
|
219
|
-
a.startedAt = new Date(at).toISOString();
|
|
220
|
-
write();
|
|
221
|
-
},
|
|
222
|
-
end(result) {
|
|
223
|
-
const a = attempts.get(result.key);
|
|
224
|
-
if (!a) return;
|
|
225
|
-
a.status = finished(result);
|
|
226
|
-
a.durationMs = result.durationMs;
|
|
227
|
-
write();
|
|
228
|
-
},
|
|
229
|
-
phase(next) {
|
|
230
|
-
phase = next;
|
|
231
|
-
write();
|
|
232
|
-
},
|
|
233
|
-
stop,
|
|
234
|
-
remove() {
|
|
235
|
-
stop();
|
|
236
|
-
rmSync(file, { force: true });
|
|
237
|
-
rmSync(tmp, { force: true });
|
|
238
|
-
},
|
|
239
|
-
read
|
|
240
|
-
};
|
|
241
|
-
}
|
|
242
132
|
//#endregion
|
|
243
133
|
//#region src/preflight.ts
|
|
244
134
|
/** How the terminal names a sandbox to prepare: its cell id, `+ install`, and a harness other than Cursor. */
|
|
@@ -793,7 +683,7 @@ var AgentRenderer = class {
|
|
|
793
683
|
for (const w of e.sandboxWarnings ?? []) this.#write(sandboxWarningLine(w));
|
|
794
684
|
return;
|
|
795
685
|
case "run-start":
|
|
796
|
-
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"}`);
|
|
797
687
|
return;
|
|
798
688
|
case "collected":
|
|
799
689
|
this.#tags.addFile(e.evals);
|
|
@@ -946,7 +836,7 @@ var PlainRenderer = class {
|
|
|
946
836
|
const files = `${e.files} eval file${e.files === 1 ? "" : "s"}`;
|
|
947
837
|
const order = `${this.#o.output.logOrder} logs`;
|
|
948
838
|
const setup = `harness ${e.harness} · sandbox ${e.sandbox} · concurrency ${e.concurrency}`;
|
|
949
|
-
this.#write(c.dim(`reeval ${e.version} · ${files} · ${setup} · ${order}`));
|
|
839
|
+
this.#write(c.dim(`reeval ${e.version} · run ${e.runId} · ${files} · ${setup} · ${order}`));
|
|
950
840
|
return;
|
|
951
841
|
}
|
|
952
842
|
case "plan":
|
|
@@ -1226,7 +1116,7 @@ async function run(argv) {
|
|
|
1226
1116
|
return values.help ? EXIT.ok : EXIT.usage;
|
|
1227
1117
|
}
|
|
1228
1118
|
if (command === "init") {
|
|
1229
|
-
const { initCommand } = await import("./init-
|
|
1119
|
+
const { initCommand } = await import("./init-1THeGfut.js");
|
|
1230
1120
|
return initCommand(values, filters, {
|
|
1231
1121
|
out: (s) => console.log(s),
|
|
1232
1122
|
input: process.stdin,
|
|
@@ -1235,7 +1125,7 @@ async function run(argv) {
|
|
|
1235
1125
|
});
|
|
1236
1126
|
}
|
|
1237
1127
|
if (command === "doctor") {
|
|
1238
|
-
const { doctorCommand } = await import("./doctor-
|
|
1128
|
+
const { doctorCommand } = await import("./doctor-Bk6aJeec.js");
|
|
1239
1129
|
return doctorCommand(values, {
|
|
1240
1130
|
out: (s) => console.log(s),
|
|
1241
1131
|
color: !!process.stdout.isTTY && !process.env.NO_COLOR,
|
|
@@ -1243,7 +1133,7 @@ async function run(argv) {
|
|
|
1243
1133
|
});
|
|
1244
1134
|
}
|
|
1245
1135
|
if (command === "report") {
|
|
1246
|
-
const { reportCommand } = await import("./command-
|
|
1136
|
+
const { reportCommand } = await import("./command-Cej2t3y-.js");
|
|
1247
1137
|
return reportCommand(values, filters, {
|
|
1248
1138
|
out: (s) => console.log(s),
|
|
1249
1139
|
err: (s) => console.error(dim(s)),
|
|
@@ -1258,7 +1148,7 @@ async function run(argv) {
|
|
|
1258
1148
|
}
|
|
1259
1149
|
if (command === "studio") {
|
|
1260
1150
|
const config = await loadConfig(configPath, "studio");
|
|
1261
|
-
const { studioCommand } = await import("./command-
|
|
1151
|
+
const { studioCommand } = await import("./command-l4ZFCeMh.js");
|
|
1262
1152
|
return studioCommand({
|
|
1263
1153
|
config,
|
|
1264
1154
|
flags: values,
|
|
@@ -1269,7 +1159,7 @@ async function run(argv) {
|
|
|
1269
1159
|
if (command === "mcp") {
|
|
1270
1160
|
if (!values.http) console.log = console.info = console.debug = console.error;
|
|
1271
1161
|
const config = await loadConfig(configPath, "mcp");
|
|
1272
|
-
const { mcpCommand } = await import("./command-
|
|
1162
|
+
const { mcpCommand } = await import("./command-DMR69l5G.js");
|
|
1273
1163
|
return mcpCommand({
|
|
1274
1164
|
config,
|
|
1275
1165
|
flags: values,
|
|
@@ -1278,7 +1168,7 @@ async function run(argv) {
|
|
|
1278
1168
|
}
|
|
1279
1169
|
if (command in HISTORY_COMMANDS) {
|
|
1280
1170
|
const config = await loadConfig(configPath, command);
|
|
1281
|
-
const commands = await import("./commands-
|
|
1171
|
+
const commands = await import("./commands-DgOUkcSO.js");
|
|
1282
1172
|
const ctx = {
|
|
1283
1173
|
config,
|
|
1284
1174
|
flags: values,
|
|
@@ -1291,7 +1181,7 @@ async function run(argv) {
|
|
|
1291
1181
|
case "compare": return commands.compareCommand(ctx, filters);
|
|
1292
1182
|
case "checkout": return commands.checkoutCommand(ctx, filters);
|
|
1293
1183
|
case "query": {
|
|
1294
|
-
const { queryCommand } = await import("./query-
|
|
1184
|
+
const { queryCommand } = await import("./query-CvutWHaL.js");
|
|
1295
1185
|
return queryCommand({
|
|
1296
1186
|
...ctx,
|
|
1297
1187
|
err: (s) => console.error(dim(s))
|
|
@@ -1299,7 +1189,7 @@ async function run(argv) {
|
|
|
1299
1189
|
}
|
|
1300
1190
|
case "analyze": {
|
|
1301
1191
|
loadEnvFiles(configPath);
|
|
1302
|
-
const { analyzeCommand } = await import("./command-
|
|
1192
|
+
const { analyzeCommand } = await import("./command-Cxfgghqo.js");
|
|
1303
1193
|
return analyzeCommand({
|
|
1304
1194
|
...ctx,
|
|
1305
1195
|
err: (s) => console.error(dim(s))
|
|
@@ -1338,8 +1228,8 @@ async function cleanCommand(flags, configPath) {
|
|
|
1338
1228
|
const where = fromCwd(debugRoot(config.root)) || ".";
|
|
1339
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}`);
|
|
1340
1230
|
if (flags.images) {
|
|
1341
|
-
const { pruneImages } = await import("./src-
|
|
1342
|
-
const { requireDocker } = await import("./providers-
|
|
1231
|
+
const { pruneImages } = await import("./src-DH0jhpoi.js");
|
|
1232
|
+
const { requireDocker } = await import("./providers-SBMExI53.js");
|
|
1343
1233
|
await requireDocker();
|
|
1344
1234
|
const removed = await pruneImages();
|
|
1345
1235
|
console.log(removed ? `Removed ${removed} image${removed === 1 ? "" : "s"} reeval built that nothing uses` : "No leftover images to remove");
|
|
@@ -1357,7 +1247,7 @@ function verbosityOf(flags) {
|
|
|
1357
1247
|
* does. Without a config, just reeval's image.
|
|
1358
1248
|
*/
|
|
1359
1249
|
async function imageBuildCommand(flags, configPath, filters) {
|
|
1360
|
-
const { buildImages, imagePlanLines, imageTargets } = await import("./images-
|
|
1250
|
+
const { buildImages, imagePlanLines, imageTargets } = await import("./images-BpwFDT1E.js");
|
|
1361
1251
|
const { docker } = await import("./sandbox.js");
|
|
1362
1252
|
let root = process.cwd();
|
|
1363
1253
|
const { fakeHarness } = await import("./harness.js");
|
|
@@ -1444,6 +1334,10 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1444
1334
|
const setup = await prepareRun(flags, configPath);
|
|
1445
1335
|
const ctx = await startRun(setup);
|
|
1446
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(() => {});
|
|
1447
1341
|
const { engineVersions } = await import("./node-Co7EXge0.js");
|
|
1448
1342
|
const renderer = createRenderer({
|
|
1449
1343
|
out: setup.json ? { write: () => true } : process.stdout,
|
|
@@ -1457,7 +1351,7 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1457
1351
|
executed = await executeRun(ctx, setup, filters, renderer);
|
|
1458
1352
|
} catch (error) {
|
|
1459
1353
|
renderer.close();
|
|
1460
|
-
await rm(ctx.stagingDir, {
|
|
1354
|
+
if (setup.resume === void 0) await rm(ctx.stagingDir, {
|
|
1461
1355
|
recursive: true,
|
|
1462
1356
|
force: true
|
|
1463
1357
|
});
|
|
@@ -1466,14 +1360,14 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1466
1360
|
const { engineRun, plan, sandboxVersions, budgetReached, live, notes, questions } = executed;
|
|
1467
1361
|
invocation.unhandledErrors = engineRun.unhandledErrors;
|
|
1468
1362
|
if ((interrupted || engineRun.cancelled) && plan?.sandboxes.some((s) => s.kind === "docker")) {
|
|
1469
|
-
const { removeRunContainers } = await import("./docker-
|
|
1363
|
+
const { removeRunContainers } = await import("./docker-Dnya8eo9.js");
|
|
1470
1364
|
await removeRunContainers(ctx.runId);
|
|
1471
1365
|
}
|
|
1472
1366
|
if (notes) {
|
|
1473
1367
|
const cancelled = interrupted || engineRun.cancelled;
|
|
1474
1368
|
const written = await notes.finish(cancelled);
|
|
1475
1369
|
if (!cancelled && written.length) {
|
|
1476
|
-
const { notesLine } = await import("./agent-
|
|
1370
|
+
const { notesLine } = await import("./agent-Dhd5FJCZ.js");
|
|
1477
1371
|
const text = notesLine(ctx.config.root, ctx.runId, written);
|
|
1478
1372
|
renderer.onEvent({
|
|
1479
1373
|
type: "notice",
|
|
@@ -1490,8 +1384,8 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1490
1384
|
}
|
|
1491
1385
|
const stopped = interrupted || engineRun.cancelled;
|
|
1492
1386
|
const answers = questions && !stopped ? await questions.settle() : void 0;
|
|
1493
|
-
const { lockfiles } = await import("./state-
|
|
1494
|
-
const { writeScratchRun } = await import("./results-
|
|
1387
|
+
const { lockfiles } = await import("./state-DkqbCVVp.js");
|
|
1388
|
+
const { writeScratchRun } = await import("./results-owJR-NFm.js");
|
|
1495
1389
|
const run = await writeScratchRun({
|
|
1496
1390
|
ctx,
|
|
1497
1391
|
author: ctx.author,
|
|
@@ -1509,12 +1403,14 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1509
1403
|
worktreePatch: ctx.worktreePatch,
|
|
1510
1404
|
lockfiles: await lockfiles(ctx.config.root),
|
|
1511
1405
|
git: ctx.git,
|
|
1406
|
+
previous: ctx.previous,
|
|
1407
|
+
previousArtifacts: ctx.previousArtifacts,
|
|
1512
1408
|
runner: runnerInfo(),
|
|
1513
1409
|
...answers?.size ? { answers } : {}
|
|
1514
1410
|
}, () => live?.stop());
|
|
1515
1411
|
const { record } = run;
|
|
1516
1412
|
if (notes && !stopped) {
|
|
1517
|
-
const { summarizeRun } = await import("./agent-
|
|
1413
|
+
const { summarizeRun } = await import("./agent-Dhd5FJCZ.js");
|
|
1518
1414
|
const { resolveAnalysisModel } = await import("./model-BeoRxCcJ.js");
|
|
1519
1415
|
const model = resolveAnalysisModel(ctx.config, "agent");
|
|
1520
1416
|
const { level, text } = await summarizeRun(ctx.config, record.runId, model);
|
|
@@ -1542,7 +1438,7 @@ async function runCommand(flags, configPath, filters) {
|
|
|
1542
1438
|
const { config } = ctx;
|
|
1543
1439
|
const mode = setup.record;
|
|
1544
1440
|
if ((flags.record || mode === "always" || mode === "ci" && inCI()) && record.status !== "interrupted") {
|
|
1545
|
-
const { record: recordCmd } = await import("./commands-
|
|
1441
|
+
const { record: recordCmd } = await import("./commands-DgOUkcSO.js");
|
|
1546
1442
|
const allow = record.status === "budget" ? { "allow-incomplete": true } : {};
|
|
1547
1443
|
console.log(await recordCmd(config, record.runId, {
|
|
1548
1444
|
...flags,
|
|
@@ -1580,7 +1476,7 @@ async function prepareRun(flags, configPath) {
|
|
|
1580
1476
|
const sandboxes = [environmentSandbox(config.environment, config.sandbox), ...profile?.defaults.environment ? [environmentSandbox(profile.defaults.environment, config.sandbox)] : []];
|
|
1581
1477
|
const concurrency = await resolveConcurrency(config, flags.concurrency, async () => {
|
|
1582
1478
|
if (!sandboxes.some((s) => s.kind === "docker")) return hostCapacity();
|
|
1583
|
-
const { dockerCapacity } = await import("./src-
|
|
1479
|
+
const { dockerCapacity } = await import("./src-DH0jhpoi.js");
|
|
1584
1480
|
return await dockerCapacity() ?? hostCapacity();
|
|
1585
1481
|
});
|
|
1586
1482
|
return {
|
|
@@ -1598,19 +1494,52 @@ async function prepareRun(flags, configPath) {
|
|
|
1598
1494
|
verbosity: verbosityOf(flags),
|
|
1599
1495
|
configFile: configPath && configLabel(configPath),
|
|
1600
1496
|
/** Named in the plan line when the project root isn't the current directory. */
|
|
1601
|
-
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
|
|
1602
1500
|
};
|
|
1603
1501
|
}
|
|
1604
1502
|
/** The run's id and the state it starts from: commit, uncommitted changes, author. */
|
|
1605
|
-
async function startRun({ config, profile, runs, tags, concurrency, verbosity, configFile }) {
|
|
1503
|
+
async function startRun({ config, profile, runs, tags, concurrency, verbosity, configFile, resume, dryRun }) {
|
|
1606
1504
|
const startedAt = /* @__PURE__ */ new Date();
|
|
1607
1505
|
const git = await gitInfo(config.root, [config.history.dir]);
|
|
1608
|
-
const { worktreePatch } = await import("./state-
|
|
1506
|
+
const { worktreePatch } = await import("./state-DkqbCVVp.js");
|
|
1609
1507
|
const patch = git?.dirty ? await worktreePatch(config.root, [config.history.dir]) : null;
|
|
1610
1508
|
const who = await author(config.root);
|
|
1611
|
-
const { stagingDir, sweepStaging } = await import("./results-
|
|
1612
|
-
const { scratchDir } = await import("./files-
|
|
1509
|
+
const { stagingDir, sweepStaging } = await import("./results-owJR-NFm.js");
|
|
1510
|
+
const { scratchDir } = await import("./files-DmZGPsWK.js");
|
|
1613
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
|
+
}
|
|
1614
1543
|
const stamps = new Set([scratch, config.history.dir].flatMap((dir) => existsSync(dir) ? readdirSync(dir).map((name) => name.slice(0, 16)) : []));
|
|
1615
1544
|
let runId = newRunId(startedAt, git?.sha ?? null, who);
|
|
1616
1545
|
for (let n = 1; stamps.has(runId.slice(0, 16)); n++) runId = newRunId(new Date(startedAt.getTime() + n * 1e3), git?.sha ?? null, who);
|
|
@@ -1629,7 +1558,9 @@ async function startRun({ config, profile, runs, tags, concurrency, verbosity, c
|
|
|
1629
1558
|
git,
|
|
1630
1559
|
worktreePatch: patch,
|
|
1631
1560
|
author: who,
|
|
1632
|
-
scratch
|
|
1561
|
+
scratch,
|
|
1562
|
+
previous: null,
|
|
1563
|
+
previousArtifacts: null
|
|
1633
1564
|
};
|
|
1634
1565
|
}
|
|
1635
1566
|
function noMatch(config, filters, tags) {
|
|
@@ -1646,8 +1577,20 @@ function unmatchedFilter(config, parts) {
|
|
|
1646
1577
|
*/
|
|
1647
1578
|
async function executeRun(ctx, setup, filters, renderer) {
|
|
1648
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
|
+
}));
|
|
1649
1592
|
const { runEngine } = await import("./node-Co7EXge0.js");
|
|
1650
|
-
const { buildPlan, checkAttemptBudget, planDocument, planLine, planTable } = await import("./plan-
|
|
1593
|
+
const { buildPlan, checkAttemptBudget, planDocument, planLine, planTable } = await import("./plan-BqBadHYj.js");
|
|
1651
1594
|
let plan;
|
|
1652
1595
|
let sandboxVersions = { images: [] };
|
|
1653
1596
|
let preflightStop;
|
|
@@ -1660,11 +1603,23 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1660
1603
|
const onPlan = async ({ planned, excluded, matched, unmatched }) => {
|
|
1661
1604
|
if (unmatched.length) throw unmatchedFilter(config, unmatched);
|
|
1662
1605
|
if (matched === 0) throw noMatch(config, filters, tags);
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
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;
|
|
1666
1621
|
plan = await buildPlan({
|
|
1667
|
-
planned,
|
|
1622
|
+
planned: skipped,
|
|
1668
1623
|
profile,
|
|
1669
1624
|
budget: setup.budget,
|
|
1670
1625
|
concurrency,
|
|
@@ -1672,8 +1627,14 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1672
1627
|
historyDir: config.history.dir,
|
|
1673
1628
|
questionModel: models?.questionModelLabel(config) ?? null
|
|
1674
1629
|
});
|
|
1675
|
-
|
|
1676
|
-
|
|
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) => ({
|
|
1677
1638
|
id: p.id,
|
|
1678
1639
|
harness: p.attempt.harness,
|
|
1679
1640
|
sandbox: p.attempt.sandbox
|
|
@@ -1685,16 +1646,16 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1685
1646
|
evals: t.evals,
|
|
1686
1647
|
stages: await imageStages(t, config.root)
|
|
1687
1648
|
})));
|
|
1688
|
-
const doc = planDocument(plan,
|
|
1649
|
+
const doc = planDocument(plan, skipped, excluded, images);
|
|
1689
1650
|
process.stdout.write(`${JSON.stringify(doc, null, 2)}\n`);
|
|
1690
1651
|
return false;
|
|
1691
1652
|
}
|
|
1692
|
-
const lines = [planLine(plan, setup.configElsewhere ? configFile : void 0)];
|
|
1653
|
+
const lines = [planLine(plan, setup.configElsewhere ? configFile : void 0, runId)];
|
|
1693
1654
|
if (setup.dryRun) {
|
|
1694
1655
|
const todos = excluded.filter((e) => e.mode === "todo").map((e) => e.id);
|
|
1695
1656
|
lines.push(...planTable(plan, todos));
|
|
1696
|
-
const { imageStatusLines } = await import("./images-
|
|
1697
|
-
const { dockerAvailable } = await import("./src-
|
|
1657
|
+
const { imageStatusLines } = await import("./images-BpwFDT1E.js");
|
|
1658
|
+
const { dockerAvailable } = await import("./src-DH0jhpoi.js");
|
|
1698
1659
|
if (targets.length && await dockerAvailable()) lines.push(...await imageStatusLines(targets, config.root));
|
|
1699
1660
|
else if (targets.length) lines.push("images not checked: Docker is not running");
|
|
1700
1661
|
}
|
|
@@ -1737,13 +1698,13 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1737
1698
|
});
|
|
1738
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.`);
|
|
1739
1700
|
if (analysis) {
|
|
1740
|
-
const { startNotes } = await import("./agent-
|
|
1701
|
+
const { startNotes } = await import("./agent-Dhd5FJCZ.js");
|
|
1741
1702
|
notes = startNotes({
|
|
1742
1703
|
config,
|
|
1743
1704
|
model: analysis.resolveAnalysisModel(config, "agent"),
|
|
1744
1705
|
runId,
|
|
1745
1706
|
stagingDir,
|
|
1746
|
-
planned,
|
|
1707
|
+
planned: skipped,
|
|
1747
1708
|
warn: (text) => renderer.onEvent({
|
|
1748
1709
|
type: "notice",
|
|
1749
1710
|
at: Date.now(),
|
|
@@ -1770,8 +1731,8 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1770
1731
|
}
|
|
1771
1732
|
});
|
|
1772
1733
|
}
|
|
1773
|
-
const { prepareWorkspaces, workspaceKey } = await import("./workspace-
|
|
1774
|
-
const live =
|
|
1734
|
+
const { prepareWorkspaces, workspaceKey } = await import("./workspace-wudSz_W-.js");
|
|
1735
|
+
const live = skipped.filter((p) => !p.attempt.plan.skip);
|
|
1775
1736
|
const outcomes = await prepareWorkspaces(live.flatMap(({ attempt: a }) => a.workspace ? [{
|
|
1776
1737
|
workspace: a.workspace,
|
|
1777
1738
|
environment: a.cell.environment
|
|
@@ -1816,7 +1777,7 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1816
1777
|
});
|
|
1817
1778
|
}
|
|
1818
1779
|
try {
|
|
1819
|
-
sandboxVersions = await preflight(
|
|
1780
|
+
sandboxVersions = await preflight(skipped.filter((p) => !p.attempt.plan.skip).map((p) => ({
|
|
1820
1781
|
harness: p.attempt.harness,
|
|
1821
1782
|
sandbox: p.attempt.sandbox,
|
|
1822
1783
|
setBy: p.attempt.setBy
|
|
@@ -1855,20 +1816,11 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1855
1816
|
let engineRun;
|
|
1856
1817
|
try {
|
|
1857
1818
|
engineRun = await runEngine({
|
|
1858
|
-
run
|
|
1859
|
-
runId,
|
|
1860
|
-
stagingDir,
|
|
1861
|
-
config,
|
|
1862
|
-
runs,
|
|
1863
|
-
tags,
|
|
1864
|
-
concurrency,
|
|
1865
|
-
profile,
|
|
1866
|
-
verbosity,
|
|
1867
|
-
configFile
|
|
1868
|
-
})),
|
|
1819
|
+
run,
|
|
1869
1820
|
filters,
|
|
1870
1821
|
onPlan,
|
|
1871
1822
|
onRunStart: (files) => {
|
|
1823
|
+
writeCurrent(setup.config.root, runId);
|
|
1872
1824
|
live = writeLiveProgress({
|
|
1873
1825
|
dir: stagingDir,
|
|
1874
1826
|
runId,
|
|
@@ -1882,7 +1834,8 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1882
1834
|
files,
|
|
1883
1835
|
harness: (plan?.harnesses ?? config.harness.map(harnessId)).join(", "),
|
|
1884
1836
|
sandbox: sandboxId(config.sandbox),
|
|
1885
|
-
concurrency
|
|
1837
|
+
concurrency,
|
|
1838
|
+
runId
|
|
1886
1839
|
});
|
|
1887
1840
|
},
|
|
1888
1841
|
onEvent: (e) => {
|
|
@@ -1926,9 +1879,9 @@ async function executeRun(ctx, setup, filters, renderer) {
|
|
|
1926
1879
|
throw error;
|
|
1927
1880
|
} finally {
|
|
1928
1881
|
clearTimeout(budgetTimer);
|
|
1929
|
-
const { removePrepared } = await import("./preflight-
|
|
1882
|
+
const { removePrepared } = await import("./preflight-CFtZNTLt.js");
|
|
1930
1883
|
removePrepared(config.root, runId);
|
|
1931
|
-
const { removePreparedWorkspaces } = await import("./workspace-
|
|
1884
|
+
const { removePreparedWorkspaces } = await import("./workspace-wudSz_W-.js");
|
|
1932
1885
|
removePreparedWorkspaces(config.root, runId);
|
|
1933
1886
|
}
|
|
1934
1887
|
if (preflightStop) throw preflightStop;
|
|
@@ -2011,4 +1964,4 @@ run(process.argv.slice(2)).finally(() => {
|
|
|
2011
1964
|
//#endregion
|
|
2012
1965
|
export {};
|
|
2013
1966
|
|
|
2014
|
-
//# sourceMappingURL=cli-
|
|
1967
|
+
//# sourceMappingURL=cli-r9CDqoFL.js.map
|