@on-par/factory-cli 0.9.25-next.9 → 0.9.26-next.1
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 +1 -1
- package/dist/cli/__fixtures__/land-octokit.d.ts +98 -0
- package/dist/cli/__fixtures__/land-octokit.d.ts.map +1 -0
- package/dist/cli/__fixtures__/land-octokit.js +33 -0
- package/dist/cli/__fixtures__/land-octokit.js.map +1 -0
- package/dist/cli/base-health-ci.d.ts +1 -0
- package/dist/cli/base-health-ci.d.ts.map +1 -1
- package/dist/cli/base-health-ci.js +1 -1
- package/dist/cli/base-health-ci.js.map +1 -1
- package/dist/cli/doctor-codex-sandbox.d.ts +8 -4
- package/dist/cli/doctor-codex-sandbox.d.ts.map +1 -1
- package/dist/cli/doctor-codex-sandbox.js +25 -5
- package/dist/cli/doctor-codex-sandbox.js.map +1 -1
- package/dist/cli/doctor-config.d.ts.map +1 -1
- package/dist/cli/doctor-config.js +13 -2
- package/dist/cli/doctor-config.js.map +1 -1
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +5 -6
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +2 -9
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +39 -95
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/json-contract.d.ts.map +1 -1
- package/dist/cli/json-contract.js +5 -1
- package/dist/cli/json-contract.js.map +1 -1
- package/dist/cli/land-base-gate.d.ts +15 -0
- package/dist/cli/land-base-gate.d.ts.map +1 -0
- package/dist/cli/land-base-gate.js +37 -0
- package/dist/cli/land-base-gate.js.map +1 -0
- package/dist/cli/land-merge.d.ts +13 -0
- package/dist/cli/land-merge.d.ts.map +1 -0
- package/dist/cli/land-merge.js +25 -0
- package/dist/cli/land-merge.js.map +1 -0
- package/dist/cli/land-pr.d.ts +7 -13
- package/dist/cli/land-pr.d.ts.map +1 -1
- package/dist/cli/land-pr.js +19 -28
- package/dist/cli/land-pr.js.map +1 -1
- package/dist/cli/land.d.ts +1 -3
- package/dist/cli/land.d.ts.map +1 -1
- package/dist/cli/land.js +12 -9
- package/dist/cli/land.js.map +1 -1
- package/dist/cli/merge-base-gate.d.ts +21 -0
- package/dist/cli/merge-base-gate.d.ts.map +1 -0
- package/dist/cli/merge-base-gate.js +86 -0
- package/dist/cli/merge-base-gate.js.map +1 -0
- package/dist/cli/program-run-work.d.ts.map +1 -1
- package/dist/cli/program-run-work.js +4 -4
- package/dist/cli/program-run-work.js.map +1 -1
- package/dist/cli/repo-router.js +3 -1
- package/dist/cli/repo-router.js.map +1 -1
- package/dist/cli/run-branch.d.ts +5 -1
- package/dist/cli/run-branch.d.ts.map +1 -1
- package/dist/cli/run-branch.js +7 -4
- package/dist/cli/run-branch.js.map +1 -1
- package/dist/cli/run-brief.d.ts.map +1 -1
- package/dist/cli/run-brief.js +38 -10
- package/dist/cli/run-brief.js.map +1 -1
- package/dist/cli/run-lane-deps.d.ts +0 -4
- package/dist/cli/run-lane-deps.d.ts.map +1 -1
- package/dist/cli/run-lane.d.ts.map +1 -1
- package/dist/cli/run-lane.js +9 -26
- package/dist/cli/run-lane.js.map +1 -1
- package/dist/cli/ship-options.d.ts +3 -1
- package/dist/cli/ship-options.d.ts.map +1 -1
- package/dist/cli/ship-options.js +3 -3
- package/dist/cli/ship-options.js.map +1 -1
- package/dist/cli/ship-runtime.d.ts +1 -2
- package/dist/cli/ship-runtime.d.ts.map +1 -1
- package/dist/cli/ship-runtime.js.map +1 -1
- package/dist/cli/ship-steps.d.ts +1 -7
- package/dist/cli/ship-steps.d.ts.map +1 -1
- package/dist/cli/ship-steps.js +3 -23
- package/dist/cli/ship-steps.js.map +1 -1
- package/dist/cli/ship.d.ts +4 -2
- package/dist/cli/ship.d.ts.map +1 -1
- package/dist/cli/ship.js +16 -7
- package/dist/cli/ship.js.map +1 -1
- package/dist/cli/slice-index.d.ts +1 -1
- package/dist/cli/slice-index.d.ts.map +1 -1
- package/dist/cli/slice-index.js +4 -8
- package/dist/cli/slice-index.js.map +1 -1
- package/dist/cli/stack-run.d.ts +14 -2
- package/dist/cli/stack-run.d.ts.map +1 -1
- package/dist/cli/stack-run.js +50 -5
- package/dist/cli/stack-run.js.map +1 -1
- package/dist/cli/status-json.d.ts +1 -2
- package/dist/cli/status-json.d.ts.map +1 -1
- package/dist/cli/status-json.js +2 -7
- package/dist/cli/status-json.js.map +1 -1
- package/dist/cli/status.d.ts.map +1 -1
- package/dist/cli/status.js +4 -23
- package/dist/cli/status.js.map +1 -1
- package/package.json +4 -4
- package/schemas/status.schema.json +3 -1
- package/dist/cli/run-children.d.ts +0 -24
- package/dist/cli/run-children.d.ts.map +0 -1
- package/dist/cli/run-children.js +0 -73
- package/dist/cli/run-children.js.map +0 -1
- package/dist/cli/run-lane-decompose.d.ts +0 -12
- package/dist/cli/run-lane-decompose.d.ts.map +0 -1
- package/dist/cli/run-lane-decompose.js +0 -27
- package/dist/cli/run-lane-decompose.js.map +0 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { EventKind } from '@on-par/factory-core';
|
|
2
|
+
import type { RequiredChecksVerdict } from '@on-par/factory-core/internal';
|
|
3
|
+
export declare class BaseCiPendingError extends Error {
|
|
4
|
+
prNumber?: number;
|
|
5
|
+
}
|
|
6
|
+
type Options = {
|
|
7
|
+
file: string;
|
|
8
|
+
repo: string;
|
|
9
|
+
head: () => Promise<string>;
|
|
10
|
+
verdict: (sha: string) => Promise<RequiredChecksVerdict>;
|
|
11
|
+
descends?: (merge: string, head: string) => Promise<boolean>;
|
|
12
|
+
log: (kind: EventKind, message: string) => void;
|
|
13
|
+
now?: () => number;
|
|
14
|
+
sleep?: (ms: number) => Promise<void>;
|
|
15
|
+
};
|
|
16
|
+
export declare function createMergeBaseGate(opts: Options): {
|
|
17
|
+
check: (wait?: boolean) => Promise<void>;
|
|
18
|
+
record: (merge: string) => void;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=merge-base-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-base-gate.d.ts","sourceRoot":"","sources":["../../src/cli/merge-base-gate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACzD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO;+BAyDZ,OAAO,CAAC,IAAI,CAAC;oBAYhB,MAAM;EACvC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname } from 'node:path';
|
|
3
|
+
export class BaseCiPendingError extends Error {
|
|
4
|
+
prNumber;
|
|
5
|
+
}
|
|
6
|
+
export function createMergeBaseGate(opts) {
|
|
7
|
+
const read = () => {
|
|
8
|
+
try {
|
|
9
|
+
const value = JSON.parse(readFileSync(opts.file, 'utf8'));
|
|
10
|
+
if (typeof value !== 'object' || value === null)
|
|
11
|
+
return undefined;
|
|
12
|
+
const entry = value[opts.repo];
|
|
13
|
+
return entry?.repo === opts.repo && typeof entry.merge === 'string' ? entry : undefined;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const write = (entry) => {
|
|
20
|
+
let all = {};
|
|
21
|
+
try {
|
|
22
|
+
all = JSON.parse(readFileSync(opts.file, 'utf8'));
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
all = {};
|
|
26
|
+
}
|
|
27
|
+
mkdirSync(dirname(opts.file), { recursive: true });
|
|
28
|
+
writeFileSync(opts.file, `${JSON.stringify({ ...all, [opts.repo]: entry }, null, 2)}\n`);
|
|
29
|
+
};
|
|
30
|
+
const once = async () => {
|
|
31
|
+
let sha;
|
|
32
|
+
let verdict;
|
|
33
|
+
try {
|
|
34
|
+
sha = await opts.head();
|
|
35
|
+
verdict = await opts.verdict(sha);
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
throw new BaseCiPendingError(`base CI lookup failed: ${String(err)}`);
|
|
39
|
+
}
|
|
40
|
+
const entry = read();
|
|
41
|
+
if (verdict.green) {
|
|
42
|
+
if (entry?.paused) {
|
|
43
|
+
write({ ...entry, paused: false });
|
|
44
|
+
opts.log('red-main-cleared', `base CI green; merge pause cleared for ${entry.merge}`);
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
if (entry?.paused)
|
|
49
|
+
throw new BaseCiPendingError(`base merge pause for ${entry.merge}: ${verdict.reason}`);
|
|
50
|
+
if (verdict.noCodeHealthChecks)
|
|
51
|
+
return true;
|
|
52
|
+
if (verdict.state === 'failed') {
|
|
53
|
+
let related = entry?.merge === sha;
|
|
54
|
+
if (entry && !related) {
|
|
55
|
+
try {
|
|
56
|
+
related = (await opts.descends?.(entry.merge, sha)) === true;
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
throw new BaseCiPendingError(`base ancestry lookup failed: ${String(err)}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (entry && related && !read()?.paused) {
|
|
63
|
+
write({ ...entry, paused: true });
|
|
64
|
+
opts.log('red-main', `base CI failed after merge ${entry.merge}: ${verdict.reason}`);
|
|
65
|
+
}
|
|
66
|
+
throw new BaseCiPendingError(`base CI failed on ${sha}: ${verdict.reason}`);
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
69
|
+
};
|
|
70
|
+
const check = async (wait = true) => {
|
|
71
|
+
const now = opts.now ?? Date.now;
|
|
72
|
+
const sleep = opts.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
73
|
+
const deadline = now() + 30 * 60_000;
|
|
74
|
+
let delay = 5_000;
|
|
75
|
+
for (;;) {
|
|
76
|
+
if (await once())
|
|
77
|
+
return;
|
|
78
|
+
if (!wait || now() >= deadline)
|
|
79
|
+
throw new BaseCiPendingError('base CI is pending; leaving PR open');
|
|
80
|
+
await sleep(Math.min(delay, deadline - now()));
|
|
81
|
+
delay = Math.min(delay * 2, 60_000);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
return { check, record: (merge) => write({ repo: opts.repo, merge }) };
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=merge-base-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-base-gate.js","sourceRoot":"","sources":["../../src/cli/merge-base-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program-run-work.d.ts","sourceRoot":"","sources":["../../src/cli/program-run-work.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"program-run-work.d.ts","sourceRoot":"","sources":["../../src/cli/program-run-work.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CA8NzF"}
|
|
@@ -31,10 +31,10 @@ export function registerRunWorkCommands(program, handlers) {
|
|
|
31
31
|
.option('--no-draft-pr', 'Mark the PR ready for review after CI, overriding run.pr.draft in the repo config')
|
|
32
32
|
.option('--branch-prefix <prefix>', BRANCH_PREFIX_OPTION_DESCRIPTION)
|
|
33
33
|
.option('--base-branch <ref>', BASE_BRANCH_OPTION_DESCRIPTION)
|
|
34
|
-
.option('--run-children', '
|
|
35
|
-
.option('--size-gate <mode>', 'Size gate mode for this run:
|
|
34
|
+
.option('--run-children', 'Removed: exits 2 — oversized issues stack with --stack')
|
|
35
|
+
.option('--size-gate <mode>', 'Size gate mode for this run: stack (default; stacked PR set built in one run; same as --stack) or off (skip both gates); file and slice are deprecated aliases for stack; beats sizeGate.mode in the config')
|
|
36
36
|
.option('--stack', "Build an oversized issue as a stacked PR set in one run: each slice's PR bases on the previous slice's PR head, the stack stops at the first failed slice; same as --size-gate stack")
|
|
37
|
-
.option('--max-slices <count>', '
|
|
37
|
+
.option('--max-slices <count>', 'Stack mode: most slices a not-yet-started slice plan may have (1-20); an over-cap plan is recorded and parks; beats sizeGate.maxSlices (default 10)')
|
|
38
38
|
.action(async (issueNum, opts) => {
|
|
39
39
|
await handlers.cmdRunIssue(handlers.parseIssueArg(issueNum), opts);
|
|
40
40
|
});
|
|
@@ -53,7 +53,7 @@ export function registerRunWorkCommands(program, handlers) {
|
|
|
53
53
|
.option('--artifacts <dir>', 'Local-only: write a versioned benchmark artifact manifest (manifest.json, request.json, events.ndjson, diff.patch) to this directory; requires --workspace')
|
|
54
54
|
.option('--branch-prefix <prefix>', BRANCH_PREFIX_OPTION_DESCRIPTION)
|
|
55
55
|
.option('--base-branch <ref>', BASE_BRANCH_OPTION_DESCRIPTION)
|
|
56
|
-
.option('--stack', "Several briefs: open them as a PR stack — each brief starts from and targets the previous brief's PR head branch; a failure or missing PR (e.g. --no-pr) stops the stack and skips the rest")
|
|
56
|
+
.option('--stack', "Several briefs: open them as a PR stack — each brief starts from and targets the previous brief's PR head branch; a failure or missing PR (e.g. --no-pr) stops the stack and skips the rest. One brief: an over-budget brief is sliced and built as a stacked PR set in one run")
|
|
57
57
|
.action(async (file, files, opts) => {
|
|
58
58
|
await handlers.cmdRunBrief([file, ...files], opts);
|
|
59
59
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program-run-work.js","sourceRoot":"","sources":["../../src/cli/program-run-work.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAGhG,OAAO,EAAE,sCAAsC,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAI9G,MAAM,8BAA8B,GAClC,uIAAuI,CAAC;AAE1I,MAAM,UAAU,uBAAuB,CAAC,OAAgB,EAAE,QAAyB;IACjF,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CACV,4GAA4G,CAC7G;SACA,MAAM,CAAC,kBAAkB,EAAE,sCAAsC,CAAC;SAClE,MAAM,CAAC,kBAAkB,EAAE,+BAA+B,CAAC;SAC3D,MAAM,CAAC,eAAe,EAAE,gEAAgE,CAAC;SACzF,MAAM,CACL,SAAS,EACT,0GAA0G,CAC3G;SACA,MAAM,CAAC,gBAAgB,EAAE,sEAAsE,CAAC;SAChG,MAAM,CAAC,cAAc,EAAE,4DAA4D,CAAC;SACpF,MAAM,CACL,YAAY,EACZ,qGAAqG,CACtG;SACA,MAAM,CAAC,eAAe,EAAE,mFAAmF,CAAC;SAC5G,MAAM,CAAC,0BAA0B,EAAE,gCAAgC,CAAC;SACpE,MAAM,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;SAC7D,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;QAC/B,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,kGAAkG,CAAC;SAC/G,MAAM,CAAC,kBAAkB,EAAE,sCAAsC,CAAC;SAClE,MAAM,CAAC,kBAAkB,EAAE,+BAA+B,CAAC;SAC3D,MAAM,CAAC,eAAe,EAAE,gEAAgE,CAAC;SACzF,MAAM,CACL,SAAS,EACT,0GAA0G,CAC3G;SACA,MAAM,CAAC,gBAAgB,EAAE,sEAAsE,CAAC;SAChG,MAAM,CAAC,cAAc,EAAE,4DAA4D,CAAC;SACpF,MAAM,CACL,YAAY,EACZ,qGAAqG,CACtG;SACA,MAAM,CAAC,eAAe,EAAE,mFAAmF,CAAC;SAC5G,MAAM,CAAC,0BAA0B,EAAE,gCAAgC,CAAC;SACpE,MAAM,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;SAC7D,MAAM,
|
|
1
|
+
{"version":3,"file":"program-run-work.js","sourceRoot":"","sources":["../../src/cli/program-run-work.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/repo-router.js
CHANGED
|
@@ -7,7 +7,9 @@ export function newRepoRouter(repoRoot, loaders, Router) {
|
|
|
7
7
|
const repoConfig = loaders.loadRepoConfig(repoRoot);
|
|
8
8
|
const effective = resolveEffectiveConfig(repoConfig);
|
|
9
9
|
const router = new Router(applyRepoConfig(loaders.loadModelsConfig(), repoConfig), loaders.loadRoutesConfig(), false, undefined, effective.allowExperimental, effective.localOnly);
|
|
10
|
-
|
|
10
|
+
const sandbox = loaders.loadFactoryConfigForRepo(getFactoryPaths(repoRoot).config).sandbox;
|
|
11
|
+
router.setCodexFullAccessTasks?.(sandbox.codexFullAccessTasks);
|
|
12
|
+
router.setCodexSandbox?.(sandbox.codexSandbox);
|
|
11
13
|
router.setLocalAuthSink?.(recordLocalAuthFailure);
|
|
12
14
|
return router;
|
|
13
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-router.js","sourceRoot":"","sources":["../../src/cli/repo-router.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,yDAAyD;AAEzD,OAAO,EACL,eAAe,EACf,eAAe,GAMhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAU/F,8GAA8G;AAC9G,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAA0B,EAAE,MAA0B;IACpG,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,eAAe,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,UAAU,CAAC,EACvD,OAAO,CAAC,gBAAgB,EAAE,EAC1B,KAAK,EACL,SAAS,EACT,SAAS,CAAC,iBAAiB,EAC3B,SAAS,CAAC,SAAS,CACpB,CAAC;IACF,MAAM,
|
|
1
|
+
{"version":3,"file":"repo-router.js","sourceRoot":"","sources":["../../src/cli/repo-router.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,yDAAyD;AAEzD,OAAO,EACL,eAAe,EACf,eAAe,GAMhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAU/F,8GAA8G;AAC9G,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAA0B,EAAE,MAA0B;IACpG,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,eAAe,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,UAAU,CAAC,EACvD,OAAO,CAAC,gBAAgB,EAAE,EAC1B,KAAK,EACL,SAAS,EACT,SAAS,CAAC,iBAAiB,EAC3B,SAAS,CAAC,SAAS,CACpB,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;IAC3F,MAAM,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/D,MAAM,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,CAAC,gBAAgB,EAAE,CAAC,sBAAsB,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,mHAAmH;AACnH,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,MAAM,CAAC,gBAAgB,EAAE,CAAC,sBAAsB,CAAC,CAAC;IAClD,MAAM,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/cli/run-branch.d.ts
CHANGED
|
@@ -4,7 +4,8 @@ import { type CheckResumeRecord } from '@on-par/factory-core/internal';
|
|
|
4
4
|
/**
|
|
5
5
|
* Picks the lane branch. A plain GitHub-issue claim first looks for the issue's open factory PR so a requeue
|
|
6
6
|
* continues on the stranded draft even after a title or prefix change (#2253); several candidates park as
|
|
7
|
-
* escalate before any worktree exists. resume, rebuild, local-only
|
|
7
|
+
* escalate before any worktree exists. resume, rebuild, local-only and slice runs keep their branch selection; explicit stack runs
|
|
8
|
+
* keep theirs too, while a defaulted or aliased stack still adopts (#3832).
|
|
8
9
|
*/
|
|
9
10
|
export declare function resolveRunBranch(opts: {
|
|
10
11
|
issueNum: number;
|
|
@@ -12,6 +13,9 @@ export declare function resolveRunBranch(opts: {
|
|
|
12
13
|
ghRepo: string;
|
|
13
14
|
branchPrefix?: string;
|
|
14
15
|
sizeGateMode: SizeGateMode;
|
|
16
|
+
/** #3832: stack came from --stack, --size-gate stack or sizeGate.mode: stack. */
|
|
17
|
+
explicitStack?: boolean;
|
|
18
|
+
parkOverBudget?: boolean;
|
|
15
19
|
work: WorkRequest;
|
|
16
20
|
ctx?: {
|
|
17
21
|
localOnly?: LocalOnlyPolicy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-branch.d.ts","sourceRoot":"","sources":["../../src/cli/run-branch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,WAAW,EAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAwC,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAI7G
|
|
1
|
+
{"version":3,"file":"run-branch.d.ts","sourceRoot":"","sources":["../../src/cli/run-branch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,WAAW,EAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAwC,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAI7G;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;IAC3B,iFAAiF;IACjF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,eAAe,CAAC;QAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACnH,kEAAkE;IAClE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqDlB"}
|
package/dist/cli/run-branch.js
CHANGED
|
@@ -5,13 +5,16 @@ import { shipRuntime } from './ship-runtime.js';
|
|
|
5
5
|
/**
|
|
6
6
|
* Picks the lane branch. A plain GitHub-issue claim first looks for the issue's open factory PR so a requeue
|
|
7
7
|
* continues on the stranded draft even after a title or prefix change (#2253); several candidates park as
|
|
8
|
-
* escalate before any worktree exists. resume, rebuild, local-only
|
|
8
|
+
* escalate before any worktree exists. resume, rebuild, local-only and slice runs keep their branch selection; explicit stack runs
|
|
9
|
+
* keep theirs too, while a defaulted or aliased stack still adopts (#3832).
|
|
9
10
|
*/
|
|
10
11
|
export async function resolveRunBranch(opts) {
|
|
11
|
-
const { issueNum, issueTitle, ghRepo, branchPrefix, sizeGateMode, work, ctx, noPr, baseBranch, octokit, eventsFile } = opts;
|
|
12
|
+
const { issueNum, issueTitle, ghRepo, branchPrefix, sizeGateMode, explicitStack, work, ctx, noPr, baseBranch, octokit, eventsFile, } = opts;
|
|
12
13
|
if (ctx?.rebuild)
|
|
13
14
|
return ctx.rebuild.branch; // #3325: never adopt the conflicting PR being replaced
|
|
14
|
-
const sliceIndex =
|
|
15
|
+
const sliceIndex = opts.parkOverBudget
|
|
16
|
+
? undefined
|
|
17
|
+
: await findSliceIndex({ sizeGateMode, ctx, work, octokit, ghRepo, issueNum });
|
|
15
18
|
if (ctx?.resumeFrom)
|
|
16
19
|
return ctx.resumeFrom.branch;
|
|
17
20
|
const fresh = branchFor(workKeyFromIssue(issueNum), issueTitle, branchPrefix, sliceIndex);
|
|
@@ -19,7 +22,7 @@ export async function resolveRunBranch(opts) {
|
|
|
19
22
|
noPr ||
|
|
20
23
|
baseBranch !== undefined ||
|
|
21
24
|
sliceIndex !== undefined ||
|
|
22
|
-
sizeGateMode === 'stack' ||
|
|
25
|
+
(sizeGateMode === 'stack' && explicitStack === true) ||
|
|
23
26
|
work.kind !== GITHUB_ISSUE_SOURCE) {
|
|
24
27
|
return fresh;
|
|
25
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-branch.js","sourceRoot":"","sources":["../../src/cli/run-branch.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EAInB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAA0B,MAAM,+BAA+B,CAAC;AAC7G,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD
|
|
1
|
+
{"version":3,"file":"run-branch.js","sourceRoot":"","sources":["../../src/cli/run-branch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-brief.d.ts","sourceRoot":"","sources":["../../src/cli/run-brief.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-brief.d.ts","sourceRoot":"","sources":["../../src/cli/run-brief.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AA8B7C,4GAA4G;AAC5G,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,WAAW,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5E,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;CACvC;AAQD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gEAAgE;IAChE,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8GAA8G;IAC9G,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;uDAIuD;AACvD,wBAAsB,WAAW,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CrH"}
|
package/dist/cli/run-brief.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
// packages/cli/src/cli/run-brief.ts — the factory run-brief handler, moved out of index.ts (#3762)
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
3
4
|
import { styleText } from 'node:util';
|
|
4
5
|
import { createDefaultWorkSourceRegistry, getFactoryPaths, hasUnresolvedPark, InvalidArtifactsDirError, InvalidWorkRequestInputError, InvalidWorkspaceError, LOCAL_BRIEF_SOURCE, readEvents, resolveArtifactsDir, resolveLocalOnlyPolicy, runStack, workKeyFromIssue, } from '@on-par/factory-core';
|
|
5
|
-
import { logEvent } from '@on-par/factory-core/internal';
|
|
6
|
+
import { fileSlicePlanStore, logEvent } from '@on-par/factory-core/internal';
|
|
6
7
|
import { CliExitError } from './errors.js';
|
|
7
8
|
import { availableAgentClis, missingAgentCliMessage, notInitializedMessage } from './first-run.js';
|
|
8
9
|
import { withRepoRunLock } from './repo-run-lock.js';
|
|
9
10
|
import { recordDraftPrFlag } from './run-flags.js';
|
|
10
11
|
import { shipIssue } from './ship.js';
|
|
11
12
|
import { baseBranchConflict, baseBranchOrExit } from './ship-options.js';
|
|
12
|
-
import { consoleStackLog, printStackResult } from './stack-run.js';
|
|
13
|
+
import { consoleStackLog, printStackResult, runSliceStack } from './stack-run.js';
|
|
13
14
|
/** Deterministic run number for a brief, derived from its content digest.
|
|
14
15
|
* Reserved 9,000,000+ range keeps brief branches/worktrees clear of real issue numbers. */
|
|
15
16
|
function briefRunNumber(sha256Hex) {
|
|
@@ -28,6 +29,10 @@ export async function cmdRunBrief(files, opts, rt) {
|
|
|
28
29
|
throw new CliExitError('factory: --artifacts takes exactly one brief (each run writes the same manifest files) — run the briefs one at a time', 2);
|
|
29
30
|
}
|
|
30
31
|
const env = await prepareRunBrief(opts, rt);
|
|
32
|
+
if (files.length === 1 && opts.stack) {
|
|
33
|
+
await runStackedBrief(files[0], opts, env, rt);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
31
36
|
if (files.length === 1) {
|
|
32
37
|
await runOneBrief(files[0], opts, env, rt);
|
|
33
38
|
return;
|
|
@@ -94,15 +99,30 @@ async function prepareRunBrief(opts, rt) {
|
|
|
94
99
|
const workSources = createDefaultWorkSourceRegistry({ octokit: rt.getOctokit() });
|
|
95
100
|
return { repoRoot, paths, branchPrefix, localOnly, artifactsDir, ghRepo, workSources };
|
|
96
101
|
}
|
|
97
|
-
/**
|
|
98
|
-
*
|
|
99
|
-
async function
|
|
100
|
-
const {
|
|
101
|
-
|
|
102
|
-
|
|
102
|
+
/** `run-brief <file> --stack` (#3813): an over-budget brief is sliced and its slices build as a stack in
|
|
103
|
+
* this one run; the slice plan lives in the run's state file, not on any issue. */
|
|
104
|
+
async function runStackedBrief(file, opts, env, rt) {
|
|
105
|
+
const { runNum } = await resolveBrief(file, env, rt);
|
|
106
|
+
const store = fileSlicePlanStore(join(env.paths.state, 'slice-plans', `${runNum}.md`));
|
|
107
|
+
await runSliceStack({ prefix: 'run-brief', label: file, failLabel: `brief ${file}` }, opts.baseBranch, {
|
|
108
|
+
readSlicePlan: async () => {
|
|
109
|
+
const lookup = await store.find();
|
|
110
|
+
return lookup.status === 'found' ? lookup.plan : undefined;
|
|
111
|
+
},
|
|
112
|
+
ship: async (base, onOutcome) => {
|
|
113
|
+
const outcome = await runOneBrief(file, { ...opts, baseBranch: base, sizeGate: 'stack' }, env, rt, {
|
|
114
|
+
slicePlanStore: store,
|
|
115
|
+
});
|
|
116
|
+
if (outcome)
|
|
117
|
+
onOutcome(outcome);
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/** Resolves the brief through the canonical work-request seam BEFORE any worktree or PR exists. */
|
|
122
|
+
async function resolveBrief(briefPath, env, rt) {
|
|
103
123
|
let work;
|
|
104
124
|
try {
|
|
105
|
-
work = await workSources.resolve(LOCAL_BRIEF_SOURCE, { path: briefPath });
|
|
125
|
+
work = await env.workSources.resolve(LOCAL_BRIEF_SOURCE, { path: briefPath });
|
|
106
126
|
}
|
|
107
127
|
catch (err) {
|
|
108
128
|
if (err instanceof InvalidWorkRequestInputError) {
|
|
@@ -111,7 +131,14 @@ async function runOneBrief(briefPath, opts, env, rt) {
|
|
|
111
131
|
throw new CliExitError(`factory: could not resolve brief at ${briefPath} (${rt.errorDetail(err)}) — no worktree or PR was created`, 2);
|
|
112
132
|
}
|
|
113
133
|
const digest = work.reference?.externalId ?? '';
|
|
114
|
-
|
|
134
|
+
return { work, digest, runNum: briefRunNumber(digest) };
|
|
135
|
+
}
|
|
136
|
+
/** One brief through the one-shot pipeline under its own per-brief lock. Throws CliExitError(2) when
|
|
137
|
+
* the brief cannot be resolved (no worktree or PR exists yet) and CliExitError(1) on a pipeline failure. */
|
|
138
|
+
async function runOneBrief(briefPath, opts, env, rt, extra) {
|
|
139
|
+
const { repoRoot, paths, branchPrefix, localOnly, artifactsDir, ghRepo } = env;
|
|
140
|
+
// Pre-flight: a malformed brief exits here, so BUILD never starts.
|
|
141
|
+
const { work, digest, runNum } = await resolveBrief(briefPath, env, rt);
|
|
115
142
|
let outcome;
|
|
116
143
|
await withRepoRunLock(paths, 'factory run-brief', async () => {
|
|
117
144
|
recordDraftPrFlag(paths.runFlags, opts.draftPr);
|
|
@@ -135,6 +162,7 @@ async function runOneBrief(briefPath, opts, env, rt) {
|
|
|
135
162
|
workSource: { kind: LOCAL_BRIEF_SOURCE, params: { path: briefPath } },
|
|
136
163
|
localOnly,
|
|
137
164
|
artifactsDir,
|
|
165
|
+
slicePlanStore: extra?.slicePlanStore,
|
|
138
166
|
onOutcome: (o) => {
|
|
139
167
|
outcome = o;
|
|
140
168
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-brief.js","sourceRoot":"","sources":["../../src/cli/run-brief.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAEnG,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EACL,+BAA+B,EAC/B,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,GAMjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"run-brief.js","sourceRoot":"","sources":["../../src/cli/run-brief.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@ import type { AwaitingCiRecord, logEvent, DiskGuardDecision, LoadGuardDecision,
|
|
|
3
3
|
import type { Octokit } from '@octokit/rest';
|
|
4
4
|
import type { AwaitingCiLaneOps } from './awaiting-ci-recheck.js';
|
|
5
5
|
import type { BaseHoldDecision } from './base-hold.js';
|
|
6
|
-
import type { ChildEnqueueResult } from './run-lane-decompose.js';
|
|
7
6
|
import type { waitForMerge } from './land.js';
|
|
8
7
|
import type { ReplacedPr } from './land-rebuild.js';
|
|
9
8
|
export type RunLaneDeps = {
|
|
@@ -60,9 +59,6 @@ export type RunLaneDeps = {
|
|
|
60
59
|
* Fail-closed: a rejection is logged as a warn and never changes lane flow. */
|
|
61
60
|
recheckAwaitingCi?: (ops: AwaitingCiLaneOps) => Promise<void>;
|
|
62
61
|
releaseIssue?: (issue: number, outcome: QueueReleaseOutcome) => Promise<void>;
|
|
63
|
-
/** Writes decomposed children into the GitHub queue (queued, lane, order right behind the parent)
|
|
64
|
-
* before the lane moves on, so a restart never loses them (#3539). Absent for static local lanes. */
|
|
65
|
-
queueChildren?: (parent: number, children: number[]) => Promise<ChildEnqueueResult>;
|
|
66
62
|
/** Refreshes the claim lease every HEARTBEAT_INTERVAL_MS while an issue is in flight
|
|
67
63
|
* (#1500). Absent for static local-queue lanes, which carry no remote claim to lease. */
|
|
68
64
|
heartbeat?: (issue: number) => Promise<unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-lane-deps.d.ts","sourceRoot":"","sources":["../../src/cli/run-lane-deps.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACrG,OAAO,KAAK,EACV,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"run-lane-deps.d.ts","sourceRoot":"","sources":["../../src/cli/run-lane-deps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-lane.d.ts","sourceRoot":"","sources":["../../src/cli/run-lane.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAa,eAAe,EAA2B,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-lane.d.ts","sourceRoot":"","sources":["../../src/cli/run-lane.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAa,eAAe,EAA2B,MAAM,sBAAsB,CAAC;AAgChG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EACzC,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,IAAI,CAAC,CAyZf"}
|
package/dist/cli/run-lane.js
CHANGED
|
@@ -15,10 +15,10 @@ import { releaseKeepOnRequeue } from './worktree-keep.js';
|
|
|
15
15
|
import { shipIssue } from './ship.js';
|
|
16
16
|
import { ClaimLostError, createClaimLease, laneRenewLogger, onClaimLost, withHeartbeat } from './lane-heartbeat.js';
|
|
17
17
|
import { restackUnderHeartbeat } from './run-lane-restack.js';
|
|
18
|
-
import { queueDecomposedChildren } from './run-lane-decompose.js';
|
|
19
18
|
import { shipRuntime } from './ship-runtime.js';
|
|
19
|
+
import { BaseCiPendingError } from './merge-base-gate.js';
|
|
20
20
|
export async function runLane(lane, issues, repoRoot, ghRepo, paths, deps = {}) {
|
|
21
|
-
const { ship = shipIssue, waitMerge = waitForMerge, recordStackMerge = async () => { }, restack = async () => ({ status: 'nothing', reason: 'restack not wired' }), pathExists = existsSync, emitEvent = logEvent, claimNext = async () => null, pollReviewRework, recordAwaitingCi, recheckAwaitingCi, releaseIssue = async () => { },
|
|
21
|
+
const { ship = shipIssue, waitMerge = waitForMerge, recordStackMerge = async () => { }, restack = async () => ({ status: 'nothing', reason: 'restack not wired' }), pathExists = existsSync, emitEvent = logEvent, claimNext = async () => null, pollReviewRework, recordAwaitingCi, recheckAwaitingCi, releaseIssue = async () => { }, heartbeat, leaseMs = DEFAULT_CLAIM_LEASE_MS, hostId = defaultClaimantId(), reapWorktree = async () => { }, closeParkedPr = async () => { }, closeReplacedPr = (replaced) => closeReplacedPullRequest(ghRepo, replaced), sweepFinished = async () => { }, activeIssues = new Set(), countRemaining, baseHoldGate, loadGuard, diskGuard, sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)), now = () => new Date(), laneBreakerThreshold = 0, commentIssue = async () => { }, octokit: getOctokit, runId = '-', readParkSha = () => Promise.reject(new Error('no park sha reader')), providerBreaker = restoredLoggingBreaker(paths.breaker, paths.events, '-', lane, emitEvent), configStamp = () => {
|
|
22
22
|
try {
|
|
23
23
|
const st = statSync(paths.config);
|
|
24
24
|
return `${st.mtimeMs}:${st.size}`;
|
|
@@ -35,7 +35,6 @@ export async function runLane(lane, issues, repoRoot, ghRepo, paths, deps = {})
|
|
|
35
35
|
let merged = 0;
|
|
36
36
|
let awaitingReview = 0;
|
|
37
37
|
let skipped = 0;
|
|
38
|
-
let decomposed = 0;
|
|
39
38
|
let parked = 0;
|
|
40
39
|
const buildClaim = (issue) => ({ issue, decision: { kind: 'build' } });
|
|
41
40
|
const pending = issues.map(buildClaim);
|
|
@@ -249,7 +248,7 @@ export async function runLane(lane, issues, repoRoot, ghRepo, paths, deps = {})
|
|
|
249
248
|
await settle(issue, 'done');
|
|
250
249
|
}
|
|
251
250
|
catch (err) {
|
|
252
|
-
const { LaneParkError, LaneEnvironmentPauseError, IssueSkippedError
|
|
251
|
+
const { LaneParkError, LaneEnvironmentPauseError, IssueSkippedError } = shipRuntime();
|
|
253
252
|
if (err instanceof ClaimLostError) {
|
|
254
253
|
// #3146: another host owns the claim. Keep the worktree; never release, reap, comment or park.
|
|
255
254
|
onClaimLost(err, emitEvent, paths.events, lane, hostId, runId);
|
|
@@ -275,6 +274,11 @@ export async function runLane(lane, issues, repoRoot, ghRepo, paths, deps = {})
|
|
|
275
274
|
await settle(issue, 'done');
|
|
276
275
|
continue;
|
|
277
276
|
}
|
|
277
|
+
if (err instanceof BaseCiPendingError) {
|
|
278
|
+
streak = null;
|
|
279
|
+
await settle(issue, 'queued');
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
278
282
|
if (err instanceof AwaitMergeStoppedError) {
|
|
279
283
|
emitEvent(paths.events, 'await-merge-stopped', issue, `${err.message}; re-queued (#3291)`, { lane });
|
|
280
284
|
streak = null;
|
|
@@ -287,27 +291,6 @@ export async function runLane(lane, issues, repoRoot, ghRepo, paths, deps = {})
|
|
|
287
291
|
await settle(issue, 'done');
|
|
288
292
|
continue;
|
|
289
293
|
}
|
|
290
|
-
if (err instanceof IssueDecomposedError) {
|
|
291
|
-
// shipIssue already rewrote the queue — splice the children in after the
|
|
292
|
-
// current issue so this same lane run ships them, deduping ones already queued.
|
|
293
|
-
// On a GitHub lane the children are first written to the tracker (#3539); only the ones
|
|
294
|
-
// that were not written are spliced in-memory, the rest are claimed next through claimNext.
|
|
295
|
-
let clean = true;
|
|
296
|
-
let unwritten = err.childIssues;
|
|
297
|
-
if (queueChildren && err.childIssues.length > 0) {
|
|
298
|
-
({ unwritten, clean } = await queueDecomposedChildren(queueChildren, issue, err.childIssues, lane, paths.events, emitEvent));
|
|
299
|
-
}
|
|
300
|
-
const fresh = unwritten.filter((n) => !seen.has(n));
|
|
301
|
-
for (const n of fresh)
|
|
302
|
-
seen.add(n);
|
|
303
|
-
pending.splice(i + 1, 0, ...fresh.map(buildClaim));
|
|
304
|
-
if (clean) {
|
|
305
|
-
decomposed++;
|
|
306
|
-
emitEvent(paths.events, 'decompose_filed', issue, `lane '${lane}' continuing with ${fresh.length} child issue(s) in place of #${issue}`, { lane });
|
|
307
|
-
}
|
|
308
|
-
await settle(issue, 'done');
|
|
309
|
-
continue;
|
|
310
|
-
}
|
|
311
294
|
if (err instanceof LaneEnvironmentPauseError) {
|
|
312
295
|
// The base is broken, not the issue (#1928): release to queued (never parked),
|
|
313
296
|
// pause the lane whatever laneBreakerThreshold is, and stop claiming.
|
|
@@ -359,6 +342,6 @@ export async function runLane(lane, issues, repoRoot, ghRepo, paths, deps = {})
|
|
|
359
342
|
continue;
|
|
360
343
|
}
|
|
361
344
|
}
|
|
362
|
-
emitEvent(paths.events, 'lane-done', lane, `lane complete (${merged} merged, ${awaitingReview} awaiting review, ${skipped} skipped, ${
|
|
345
|
+
emitEvent(paths.events, 'lane-done', lane, `lane complete (${merged} merged, ${awaitingReview} awaiting review, ${skipped} skipped, ${parked} parked)`, { lane });
|
|
363
346
|
}
|
|
364
347
|
//# sourceMappingURL=run-lane.js.map
|