@on-par/factory-cli 0.9.25-next.2 → 0.9.25-next.21
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/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 +3 -9
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +58 -93
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/program-run-work.d.ts.map +1 -1
- package/dist/cli/program-run-work.js +4 -3
- 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 +0 -7
- package/dist/cli/run-brief.d.ts.map +1 -1
- package/dist/cli/run-brief.js +47 -81
- 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 +3 -33
- 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 -27
- package/dist/cli/ship-steps.js.map +1 -1
- package/dist/cli/ship.d.ts +3 -1
- package/dist/cli/ship.d.ts.map +1 -1
- package/dist/cli/ship.js +17 -6
- package/dist/cli/ship.js.map +1 -1
- package/dist/cli/stack-run.d.ts +27 -0
- package/dist/cli/stack-run.d.ts.map +1 -0
- package/dist/cli/stack-run.js +109 -0
- package/dist/cli/stack-run.js.map +1 -0
- package/dist/cli/status.js +3 -1
- package/dist/cli/status.js.map +1 -1
- package/package.json +4 -4
- 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
|
@@ -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,8 +31,9 @@ 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
|
+
.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")
|
|
36
37
|
.option('--max-slices <count>', 'Slice 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)')
|
|
37
38
|
.action(async (issueNum, opts) => {
|
|
38
39
|
await handlers.cmdRunIssue(handlers.parseIssueArg(issueNum), opts);
|
|
@@ -52,7 +53,7 @@ export function registerRunWorkCommands(program, handlers) {
|
|
|
52
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')
|
|
53
54
|
.option('--branch-prefix <prefix>', BRANCH_PREFIX_OPTION_DESCRIPTION)
|
|
54
55
|
.option('--base-branch <ref>', BASE_BRANCH_OPTION_DESCRIPTION)
|
|
55
|
-
.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")
|
|
56
57
|
.action(async (file, files, opts) => {
|
|
57
58
|
await handlers.cmdRunBrief([file, ...files], opts);
|
|
58
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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"}
|
package/dist/cli/run-brief.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { Octokit } from '@octokit/rest';
|
|
2
|
-
import { type RunOutcome } from '@on-par/factory-core';
|
|
3
2
|
/** index.ts bindings the handler needs; index.ts passes them so this module never imports it at runtime. */
|
|
4
3
|
export interface RunBriefRuntime {
|
|
5
4
|
isCommandAvailable: (cmd: string) => boolean;
|
|
@@ -25,12 +24,6 @@ export interface RunBriefOptions {
|
|
|
25
24
|
/** --stack (#3763): brief N+1 bases on brief N's PR head branch; stops at the first failure or missing PR. */
|
|
26
25
|
stack?: boolean;
|
|
27
26
|
}
|
|
28
|
-
/** The base the next stacked brief starts from: this brief's PR head branch, or why the stack stops (#3763). */
|
|
29
|
-
export declare function nextStackBase(outcome: RunOutcome | undefined): {
|
|
30
|
-
base: string;
|
|
31
|
-
} | {
|
|
32
|
-
stop: string;
|
|
33
|
-
};
|
|
34
27
|
/** Runs each brief through the one-shot pipeline in argv order with the same flags. The checks that
|
|
35
28
|
* hold for every brief (agent CLI, init, flags, GitHub remote) run once up front and abort the whole
|
|
36
29
|
* invocation; a failure of one brief (missing file, malformed brief, lock refusal, pipeline failure)
|
|
@@ -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,26 +1,21 @@
|
|
|
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
|
-
import { createDefaultWorkSourceRegistry, getFactoryPaths, hasUnresolvedPark, InvalidArtifactsDirError, InvalidWorkRequestInputError, InvalidWorkspaceError, LOCAL_BRIEF_SOURCE, readEvents, resolveArtifactsDir, resolveLocalOnlyPolicy, workKeyFromIssue, } from '@on-par/factory-core';
|
|
5
|
-
import { logEvent } from '@on-par/factory-core/internal';
|
|
5
|
+
import { createDefaultWorkSourceRegistry, getFactoryPaths, hasUnresolvedPark, InvalidArtifactsDirError, InvalidWorkRequestInputError, InvalidWorkspaceError, LOCAL_BRIEF_SOURCE, readEvents, resolveArtifactsDir, resolveLocalOnlyPolicy, runStack, workKeyFromIssue, } from '@on-par/factory-core';
|
|
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';
|
|
13
|
+
import { consoleStackLog, printStackResult, runSliceStack } from './stack-run.js';
|
|
12
14
|
/** Deterministic run number for a brief, derived from its content digest.
|
|
13
15
|
* Reserved 9,000,000+ range keeps brief branches/worktrees clear of real issue numbers. */
|
|
14
16
|
function briefRunNumber(sha256Hex) {
|
|
15
17
|
return 9_000_000 + (Number.parseInt(sha256Hex.slice(0, 8), 16) % 1_000_000);
|
|
16
18
|
}
|
|
17
|
-
/** The base the next stacked brief starts from: this brief's PR head branch, or why the stack stops (#3763). */
|
|
18
|
-
export function nextStackBase(outcome) {
|
|
19
|
-
if (outcome && 'prNumber' in outcome && outcome.prNumber !== undefined && 'branch' in outcome && outcome.branch) {
|
|
20
|
-
return { base: outcome.branch };
|
|
21
|
-
}
|
|
22
|
-
return { stop: 'opened no PR' };
|
|
23
|
-
}
|
|
24
19
|
/** Runs each brief through the one-shot pipeline in argv order with the same flags. The checks that
|
|
25
20
|
* hold for every brief (agent CLI, init, flags, GitHub remote) run once up front and abort the whole
|
|
26
21
|
* invocation; a failure of one brief (missing file, malformed brief, lock refusal, pipeline failure)
|
|
@@ -34,59 +29,26 @@ export async function cmdRunBrief(files, opts, rt) {
|
|
|
34
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);
|
|
35
30
|
}
|
|
36
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
|
+
}
|
|
37
36
|
if (files.length === 1) {
|
|
38
37
|
await runOneBrief(files[0], opts, env, rt);
|
|
39
38
|
return;
|
|
40
39
|
}
|
|
41
40
|
console.log(styleText('cyan', `run-brief: ${files.length} briefs — running them in order`));
|
|
42
|
-
let stackBase = opts.baseBranch;
|
|
43
|
-
let stackStop;
|
|
44
41
|
if (opts.stack) {
|
|
45
42
|
console.log(styleText('cyan', "run-brief: --stack — each brief bases on the previous brief's PR head"));
|
|
46
43
|
}
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const briefOpts = opts.stack ? { ...opts, baseBranch: stackBase, sizeGate: 'off' } : opts;
|
|
56
|
-
if (opts.stack && stackBase !== undefined) {
|
|
57
|
-
console.log(styleText('cyan', `run-brief: [${i + 1}/${files.length}] stacking on ${stackBase}`));
|
|
58
|
-
}
|
|
59
|
-
try {
|
|
60
|
-
const outcome = await runOneBrief(file, briefOpts, env, rt);
|
|
61
|
-
results.push({
|
|
62
|
-
file,
|
|
63
|
-
status: 'ready',
|
|
64
|
-
prNumber: outcome && 'prNumber' in outcome ? outcome.prNumber : undefined,
|
|
65
|
-
...(opts.stack ? { base: stackBase } : {}),
|
|
66
|
-
});
|
|
67
|
-
if (opts.stack) {
|
|
68
|
-
const next = nextStackBase(outcome);
|
|
69
|
-
if ('base' in next)
|
|
70
|
-
stackBase = next.base;
|
|
71
|
-
else
|
|
72
|
-
stackStop = `stack stopped: ${file} ${next.stop}`;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch (err) {
|
|
76
|
-
const detail = err instanceof Error ? err.message : String(err);
|
|
77
|
-
console.error(styleText('red', detail));
|
|
78
|
-
results.push({ file, status: 'failed', detail });
|
|
79
|
-
if (opts.stack)
|
|
80
|
-
stackStop = `stack stopped: ${file} failed`;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
const ok = results.every((r) => r.status === 'ready');
|
|
84
|
-
for (const line of formatBriefRunSummary(results)) {
|
|
85
|
-
console.log(ok ? styleText('green', line) : styleText('yellow', line));
|
|
86
|
-
}
|
|
87
|
-
if (!ok) {
|
|
88
|
-
throw new CliExitError('Run failed for one or more briefs (listed above)', 1);
|
|
89
|
-
}
|
|
44
|
+
const result = await runStack(files.map((file) => ({
|
|
45
|
+
title: file,
|
|
46
|
+
run: async (base) => {
|
|
47
|
+
const o = await runOneBrief(file, opts.stack ? { ...opts, baseBranch: base, sizeGate: 'off' } : opts, env, rt);
|
|
48
|
+
return (o && { prNumber: 'prNumber' in o ? o.prNumber : undefined, branch: 'branch' in o ? o.branch : undefined });
|
|
49
|
+
},
|
|
50
|
+
})), { base: opts.baseBranch, chain: opts.stack === true, prefix: 'run-brief', noun: 'brief', log: consoleStackLog });
|
|
51
|
+
printStackResult(result, 'Run failed for one or more briefs (listed above)');
|
|
90
52
|
}
|
|
91
53
|
/** The run-brief pre-flight shared by every brief in one invocation; any failure here exits 2. */
|
|
92
54
|
async function prepareRunBrief(opts, rt) {
|
|
@@ -137,15 +99,30 @@ async function prepareRunBrief(opts, rt) {
|
|
|
137
99
|
const workSources = createDefaultWorkSourceRegistry({ octokit: rt.getOctokit() });
|
|
138
100
|
return { repoRoot, paths, branchPrefix, localOnly, artifactsDir, ghRepo, workSources };
|
|
139
101
|
}
|
|
140
|
-
/**
|
|
141
|
-
*
|
|
142
|
-
async function
|
|
143
|
-
const {
|
|
144
|
-
|
|
145
|
-
|
|
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) {
|
|
146
123
|
let work;
|
|
147
124
|
try {
|
|
148
|
-
work = await workSources.resolve(LOCAL_BRIEF_SOURCE, { path: briefPath });
|
|
125
|
+
work = await env.workSources.resolve(LOCAL_BRIEF_SOURCE, { path: briefPath });
|
|
149
126
|
}
|
|
150
127
|
catch (err) {
|
|
151
128
|
if (err instanceof InvalidWorkRequestInputError) {
|
|
@@ -154,7 +131,14 @@ async function runOneBrief(briefPath, opts, env, rt) {
|
|
|
154
131
|
throw new CliExitError(`factory: could not resolve brief at ${briefPath} (${rt.errorDetail(err)}) — no worktree or PR was created`, 2);
|
|
155
132
|
}
|
|
156
133
|
const digest = work.reference?.externalId ?? '';
|
|
157
|
-
|
|
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);
|
|
158
142
|
let outcome;
|
|
159
143
|
await withRepoRunLock(paths, 'factory run-brief', async () => {
|
|
160
144
|
recordDraftPrFlag(paths.runFlags, opts.draftPr);
|
|
@@ -178,6 +162,7 @@ async function runOneBrief(briefPath, opts, env, rt) {
|
|
|
178
162
|
workSource: { kind: LOCAL_BRIEF_SOURCE, params: { path: briefPath } },
|
|
179
163
|
localOnly,
|
|
180
164
|
artifactsDir,
|
|
165
|
+
slicePlanStore: extra?.slicePlanStore,
|
|
181
166
|
onOutcome: (o) => {
|
|
182
167
|
outcome = o;
|
|
183
168
|
},
|
|
@@ -189,23 +174,4 @@ async function runOneBrief(briefPath, opts, env, rt) {
|
|
|
189
174
|
}, { scope: { kind: 'issue', key: workKeyFromIssue(runNum) } });
|
|
190
175
|
return outcome;
|
|
191
176
|
}
|
|
192
|
-
/** Renders the per-brief summary lines in run order; the caller colours and prints them. */
|
|
193
|
-
function formatBriefRunSummary(results) {
|
|
194
|
-
const lines = ['Briefs:'];
|
|
195
|
-
for (const r of results) {
|
|
196
|
-
if (r.status === 'ready') {
|
|
197
|
-
const base = r.base !== undefined ? ` (base ${r.base})` : '';
|
|
198
|
-
lines.push(r.prNumber !== undefined ? ` ${r.file} → PR #${r.prNumber}${base}` : ` ${r.file} → done (no PR)`);
|
|
199
|
-
}
|
|
200
|
-
else if (r.status === 'skipped') {
|
|
201
|
-
lines.push(` ${r.file} → skipped: ${r.detail}`);
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
lines.push(r.detail ? ` ${r.file} → failed: ${r.detail}` : ` ${r.file} → failed`);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
const done = results.filter((r) => r.status === 'ready').length;
|
|
208
|
-
lines.push(`${done}/${results.length} briefs succeeded`);
|
|
209
|
-
return lines;
|
|
210
|
-
}
|
|
211
177
|
//# sourceMappingURL=run-brief.js.map
|
|
@@ -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,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;AAGtD,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,CAoZf"}
|
package/dist/cli/run-lane.js
CHANGED
|
@@ -15,10 +15,9 @@ 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';
|
|
20
19
|
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 () => { },
|
|
20
|
+
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
21
|
try {
|
|
23
22
|
const st = statSync(paths.config);
|
|
24
23
|
return `${st.mtimeMs}:${st.size}`;
|
|
@@ -35,7 +34,6 @@ export async function runLane(lane, issues, repoRoot, ghRepo, paths, deps = {})
|
|
|
35
34
|
let merged = 0;
|
|
36
35
|
let awaitingReview = 0;
|
|
37
36
|
let skipped = 0;
|
|
38
|
-
let decomposed = 0;
|
|
39
37
|
let parked = 0;
|
|
40
38
|
const buildClaim = (issue) => ({ issue, decision: { kind: 'build' } });
|
|
41
39
|
const pending = issues.map(buildClaim);
|
|
@@ -189,13 +187,6 @@ export async function runLane(lane, issues, repoRoot, ghRepo, paths, deps = {})
|
|
|
189
187
|
});
|
|
190
188
|
landBranch = branch;
|
|
191
189
|
const shipped = sliceOutcome.value;
|
|
192
|
-
if (shipped?.state === 'released' && shipped.reason === 'stack-wait') {
|
|
193
|
-
// ADR-0161: the slice below awaits review, so release the issue and do not park (#3367).
|
|
194
|
-
awaitingReview++;
|
|
195
|
-
streak = null;
|
|
196
|
-
await settle(issue, 'queued');
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
190
|
if (shipped?.state === 'released' && shipped.reason === 'file-overlap') {
|
|
200
191
|
// #3576: another live lane owns a file this issue touches; re-queue it, never park.
|
|
201
192
|
streak = null;
|
|
@@ -256,7 +247,7 @@ export async function runLane(lane, issues, repoRoot, ghRepo, paths, deps = {})
|
|
|
256
247
|
await settle(issue, 'done');
|
|
257
248
|
}
|
|
258
249
|
catch (err) {
|
|
259
|
-
const { LaneParkError, LaneEnvironmentPauseError, IssueSkippedError
|
|
250
|
+
const { LaneParkError, LaneEnvironmentPauseError, IssueSkippedError } = shipRuntime();
|
|
260
251
|
if (err instanceof ClaimLostError) {
|
|
261
252
|
// #3146: another host owns the claim. Keep the worktree; never release, reap, comment or park.
|
|
262
253
|
onClaimLost(err, emitEvent, paths.events, lane, hostId, runId);
|
|
@@ -294,27 +285,6 @@ export async function runLane(lane, issues, repoRoot, ghRepo, paths, deps = {})
|
|
|
294
285
|
await settle(issue, 'done');
|
|
295
286
|
continue;
|
|
296
287
|
}
|
|
297
|
-
if (err instanceof IssueDecomposedError) {
|
|
298
|
-
// shipIssue already rewrote the queue — splice the children in after the
|
|
299
|
-
// current issue so this same lane run ships them, deduping ones already queued.
|
|
300
|
-
// On a GitHub lane the children are first written to the tracker (#3539); only the ones
|
|
301
|
-
// that were not written are spliced in-memory, the rest are claimed next through claimNext.
|
|
302
|
-
let clean = true;
|
|
303
|
-
let unwritten = err.childIssues;
|
|
304
|
-
if (queueChildren && err.childIssues.length > 0) {
|
|
305
|
-
({ unwritten, clean } = await queueDecomposedChildren(queueChildren, issue, err.childIssues, lane, paths.events, emitEvent));
|
|
306
|
-
}
|
|
307
|
-
const fresh = unwritten.filter((n) => !seen.has(n));
|
|
308
|
-
for (const n of fresh)
|
|
309
|
-
seen.add(n);
|
|
310
|
-
pending.splice(i + 1, 0, ...fresh.map(buildClaim));
|
|
311
|
-
if (clean) {
|
|
312
|
-
decomposed++;
|
|
313
|
-
emitEvent(paths.events, 'decompose_filed', issue, `lane '${lane}' continuing with ${fresh.length} child issue(s) in place of #${issue}`, { lane });
|
|
314
|
-
}
|
|
315
|
-
await settle(issue, 'done');
|
|
316
|
-
continue;
|
|
317
|
-
}
|
|
318
288
|
if (err instanceof LaneEnvironmentPauseError) {
|
|
319
289
|
// The base is broken, not the issue (#1928): release to queued (never parked),
|
|
320
290
|
// pause the lane whatever laneBreakerThreshold is, and stop claiming.
|
|
@@ -366,6 +336,6 @@ export async function runLane(lane, issues, repoRoot, ghRepo, paths, deps = {})
|
|
|
366
336
|
continue;
|
|
367
337
|
}
|
|
368
338
|
}
|
|
369
|
-
emitEvent(paths.events, 'lane-done', lane, `lane complete (${merged} merged, ${awaitingReview} awaiting review, ${skipped} skipped, ${
|
|
339
|
+
emitEvent(paths.events, 'lane-done', lane, `lane complete (${merged} merged, ${awaitingReview} awaiting review, ${skipped} skipped, ${parked} parked)`, { lane });
|
|
370
340
|
}
|
|
371
341
|
//# sourceMappingURL=run-lane.js.map
|