@on-par/factory-cli 0.9.28-next.9 → 0.9.29-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/dist/cli/ci-pending-draft-sweep.d.ts +45 -0
- package/dist/cli/ci-pending-draft-sweep.d.ts.map +1 -0
- package/dist/cli/ci-pending-draft-sweep.js +176 -0
- package/dist/cli/ci-pending-draft-sweep.js.map +1 -0
- package/dist/cli/config-override-option.d.ts +11 -0
- package/dist/cli/config-override-option.d.ts.map +1 -0
- package/dist/cli/config-override-option.js +37 -0
- package/dist/cli/config-override-option.js.map +1 -0
- package/dist/cli/doctor-config-sources.d.ts +23 -0
- package/dist/cli/doctor-config-sources.d.ts.map +1 -0
- package/dist/cli/doctor-config-sources.js +44 -0
- package/dist/cli/doctor-config-sources.js.map +1 -0
- package/dist/cli/doctor-verify.d.ts +5 -0
- package/dist/cli/doctor-verify.d.ts.map +1 -1
- package/dist/cli/doctor-verify.js +21 -4
- package/dist/cli/doctor-verify.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +8 -3
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/help-groups.d.ts.map +1 -1
- package/dist/cli/help-groups.js +1 -0
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/index.d.ts +49 -45
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +73 -16
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/land-find-pr.d.ts +5 -0
- package/dist/cli/land-find-pr.d.ts.map +1 -0
- package/dist/cli/land-find-pr.js +27 -0
- package/dist/cli/land-find-pr.js.map +1 -0
- package/dist/cli/land-merge.d.ts.map +1 -1
- package/dist/cli/land-merge.js +5 -0
- package/dist/cli/land-merge.js.map +1 -1
- package/dist/cli/land-pr.d.ts +5 -1
- package/dist/cli/land-pr.d.ts.map +1 -1
- package/dist/cli/land-pr.js +5 -1
- package/dist/cli/land-pr.js.map +1 -1
- package/dist/cli/land.d.ts +11 -3
- package/dist/cli/land.d.ts.map +1 -1
- package/dist/cli/land.js +27 -34
- package/dist/cli/land.js.map +1 -1
- package/dist/cli/program-observe.js +1 -1
- package/dist/cli/program-observe.js.map +1 -1
- package/dist/cli/program-run-work.d.ts.map +1 -1
- package/dist/cli/program-run-work.js +14 -0
- package/dist/cli/program-run-work.js.map +1 -1
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +11 -1
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/queue-backend-select.d.ts +15 -0
- package/dist/cli/queue-backend-select.d.ts.map +1 -0
- package/dist/cli/queue-backend-select.js +30 -0
- package/dist/cli/queue-backend-select.js.map +1 -0
- package/dist/cli/queue-preflight-prerequisite-stack.d.ts +11 -0
- package/dist/cli/queue-preflight-prerequisite-stack.d.ts.map +1 -0
- package/dist/cli/queue-preflight-prerequisite-stack.js +75 -0
- package/dist/cli/queue-preflight-prerequisite-stack.js.map +1 -0
- package/dist/cli/queue-preflight.d.ts +4 -0
- package/dist/cli/queue-preflight.d.ts.map +1 -1
- package/dist/cli/queue-preflight.js +16 -64
- package/dist/cli/queue-preflight.js.map +1 -1
- package/dist/cli/queue-prerequisite-state.d.ts +8 -0
- package/dist/cli/queue-prerequisite-state.d.ts.map +1 -0
- package/dist/cli/queue-prerequisite-state.js +66 -0
- package/dist/cli/queue-prerequisite-state.js.map +1 -0
- package/dist/cli/queue-startup.d.ts +42 -0
- package/dist/cli/queue-startup.d.ts.map +1 -1
- package/dist/cli/queue-startup.js +2 -0
- package/dist/cli/queue-startup.js.map +1 -1
- package/dist/cli/respond-command.d.ts +42 -0
- package/dist/cli/respond-command.d.ts.map +1 -0
- package/dist/cli/respond-command.js +76 -0
- package/dist/cli/respond-command.js.map +1 -0
- package/dist/cli/run-branch.d.ts.map +1 -1
- package/dist/cli/run-branch.js +2 -2
- package/dist/cli/run-branch.js.map +1 -1
- package/dist/cli/run-brief.d.ts +10 -0
- package/dist/cli/run-brief.d.ts.map +1 -1
- package/dist/cli/run-brief.js +41 -5
- package/dist/cli/run-brief.js.map +1 -1
- package/dist/cli/run-issue-merge.d.ts +54 -0
- package/dist/cli/run-issue-merge.d.ts.map +1 -0
- package/dist/cli/run-issue-merge.js +155 -0
- package/dist/cli/run-issue-merge.js.map +1 -0
- package/dist/cli/run-lane-deps.d.ts +6 -1
- package/dist/cli/run-lane-deps.d.ts.map +1 -1
- package/dist/cli/run-lane-discovery.d.ts +35 -0
- package/dist/cli/run-lane-discovery.d.ts.map +1 -0
- package/dist/cli/run-lane-discovery.js +93 -0
- package/dist/cli/run-lane-discovery.js.map +1 -0
- package/dist/cli/run-lane-restack.d.ts +6 -1
- package/dist/cli/run-lane-restack.d.ts.map +1 -1
- package/dist/cli/run-lane-restack.js +16 -0
- package/dist/cli/run-lane-restack.js.map +1 -1
- package/dist/cli/run-lane.d.ts.map +1 -1
- package/dist/cli/run-lane.js +40 -4
- package/dist/cli/run-lane.js.map +1 -1
- package/dist/cli/run-queue.d.ts +19 -0
- package/dist/cli/run-queue.d.ts.map +1 -0
- package/dist/cli/run-queue.js +66 -0
- package/dist/cli/run-queue.js.map +1 -0
- package/dist/cli/run-rework-poll.d.ts +15 -0
- package/dist/cli/run-rework-poll.d.ts.map +1 -0
- package/dist/cli/run-rework-poll.js +79 -0
- package/dist/cli/run-rework-poll.js.map +1 -0
- package/dist/cli/run.d.ts +3 -0
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +58 -102
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/ship-options.d.ts +25 -1
- package/dist/cli/ship-options.d.ts.map +1 -1
- package/dist/cli/ship-options.js +39 -0
- package/dist/cli/ship-options.js.map +1 -1
- package/dist/cli/ship-pr-state.d.ts +58 -0
- package/dist/cli/ship-pr-state.d.ts.map +1 -0
- package/dist/cli/ship-pr-state.js +172 -0
- package/dist/cli/ship-pr-state.js.map +1 -0
- package/dist/cli/ship-review-rework.d.ts +6 -0
- package/dist/cli/ship-review-rework.d.ts.map +1 -1
- package/dist/cli/ship-review-rework.js +11 -2
- package/dist/cli/ship-review-rework.js.map +1 -1
- package/dist/cli/ship-steps.d.ts +5 -2
- package/dist/cli/ship-steps.d.ts.map +1 -1
- package/dist/cli/ship-steps.js +15 -2
- package/dist/cli/ship-steps.js.map +1 -1
- package/dist/cli/ship.d.ts +3 -0
- package/dist/cli/ship.d.ts.map +1 -1
- package/dist/cli/ship.js +26 -20
- package/dist/cli/ship.js.map +1 -1
- package/dist/cli/shutdown.d.ts +26 -0
- package/dist/cli/shutdown.d.ts.map +1 -0
- package/dist/cli/shutdown.js +82 -0
- package/dist/cli/shutdown.js.map +1 -0
- package/dist/cli/status.d.ts.map +1 -1
- package/dist/cli/status.js +57 -27
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/supervise.d.ts.map +1 -1
- package/dist/cli/supervise.js +11 -6
- package/dist/cli/supervise.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Octokit } from '@octokit/rest';
|
|
2
|
+
import { type EventKind } from '@on-par/factory-core';
|
|
3
|
+
import type { getFactoryPaths } from '@on-par/factory-core';
|
|
4
|
+
import { type CiOutcome } from '@on-par/factory-core/internal';
|
|
5
|
+
import { waitForMerge } from './land.js';
|
|
6
|
+
export type CiPendingDraftAction = 'landed' | 'merge-gated' | 'marked-ready' | 'land-failed' | 'ci-rework' | 'still-pending' | 'skipped';
|
|
7
|
+
export interface CiPendingDraftResult {
|
|
8
|
+
pr: number;
|
|
9
|
+
issue: number;
|
|
10
|
+
action: CiPendingDraftAction;
|
|
11
|
+
detail?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CiPendingDraftSweepDeps {
|
|
14
|
+
octokit: Octokit;
|
|
15
|
+
ghRepo: string;
|
|
16
|
+
branchPrefix: string;
|
|
17
|
+
/** Issues a lane holds right now; their drafts are never touched. */
|
|
18
|
+
protectedIssues?: ReadonlySet<number>;
|
|
19
|
+
mergeEnabled: () => boolean;
|
|
20
|
+
probeCi: (pr: {
|
|
21
|
+
headSha: string;
|
|
22
|
+
baseRef: string;
|
|
23
|
+
}) => Promise<CiOutcome>;
|
|
24
|
+
markReady: (pullRequestNodeId: string) => Promise<void>;
|
|
25
|
+
land: (issue: number, branch: string) => Promise<void>;
|
|
26
|
+
queueRework: (issue: number, pr: number) => Promise<{
|
|
27
|
+
outcome: 'queued' | 'skipped' | 'error';
|
|
28
|
+
detail?: string;
|
|
29
|
+
}>;
|
|
30
|
+
log: (type: EventKind, issue: number, msg: string) => void;
|
|
31
|
+
}
|
|
32
|
+
/** Never throws. Returns one result per factory draft it acted on or deliberately left. */
|
|
33
|
+
export declare function sweepCiPendingDrafts(deps: CiPendingDraftSweepDeps): Promise<CiPendingDraftResult[]>;
|
|
34
|
+
/** Options for the production wrapper; `lane` and `protectedIssues` are set between lane issues. */
|
|
35
|
+
export interface CiPendingDraftSweepOpts {
|
|
36
|
+
repoRoot?: string;
|
|
37
|
+
protectedIssues?: ReadonlySet<number>;
|
|
38
|
+
lane?: string;
|
|
39
|
+
autoMerge?: boolean;
|
|
40
|
+
/** Test seam: the land path; defaults to waitForMerge. */
|
|
41
|
+
waitMerge?: typeof waitForMerge;
|
|
42
|
+
}
|
|
43
|
+
/** The production wiring of the sweep. Never throws — a failure is a warn, never a reason to abort `factory run`. */
|
|
44
|
+
export declare function runCiPendingDraftSweep(paths: ReturnType<typeof getFactoryPaths>, ghRepo: string, getOctokit: () => Octokit | undefined, opts?: CiPendingDraftSweepOpts): Promise<void>;
|
|
45
|
+
//# sourceMappingURL=ci-pending-draft-sweep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci-pending-draft-sweep.d.ts","sourceRoot":"","sources":["../../src/cli/ci-pending-draft-sweep.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAkE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAUL,KAAK,SAAS,EAEf,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,MAAM,oBAAoB,GAC9B,QAAQ,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,GAAG,WAAW,GAAG,eAAe,GAAG,SAAS,CAAC;AAExG,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,YAAY,EAAE,MAAM,OAAO,CAAC;IAC5B,OAAO,EAAE,CAAC,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1E,SAAS,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClH,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5D;AAmFD,2FAA2F;AAC3F,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA6BzG;AAED,oGAAoG;AACpG,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,YAAY,CAAC;CACjC;AAED,qHAAqH;AACrH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EACzC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,OAAO,GAAG,SAAS,EACrC,IAAI,GAAE,uBAA4B,GACjC,OAAO,CAAC,IAAI,CAAC,CAyDf"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
// packages/cli/src/cli/ci-pending-draft-sweep.ts — land or CI-rework factory drafts SHIP left for pending CI (#3932)
|
|
2
|
+
//
|
|
3
|
+
// SHIP leaves a PR as a draft when its CI watch window ends before a verdict, and records `draftReason:
|
|
4
|
+
// 'ci-pending'` on the trusted PR run-state comment. This sweep, run at `factory run` start and between lane
|
|
5
|
+
// issues, lands such a draft once CI is green, queues CI rework when CI is red and leaves it while CI still runs.
|
|
6
|
+
// Drafts made on purpose (--draft-pr, run.pr.draft, a human) carry no such reason and are never touched.
|
|
7
|
+
import { loadFactoryConfigForRepo, resolveMergePolicy, workKeyFromIssue } from '@on-par/factory-core';
|
|
8
|
+
import { createFileIterateStore, createOctokitQueueClient, factoryBranchIssue, loadPrRunState, logEvent, queueCiPendingRework, resolveBranchPrefix, savePrRunState, watchChecks, } from '@on-par/factory-core/internal';
|
|
9
|
+
import { MergeGatedError, markPullRequestReady } from './land-pr.js';
|
|
10
|
+
import { waitForMerge } from './land.js';
|
|
11
|
+
const PAGE_SIZE = 100;
|
|
12
|
+
const MAX_PAGES = 50;
|
|
13
|
+
const PROBE_DEADLINE_MS = 60_000;
|
|
14
|
+
const errorMessage = (err) => (err instanceof Error ? err.message : String(err));
|
|
15
|
+
async function listOpenPulls(octokit, ghRepo) {
|
|
16
|
+
const [owner = '', repo = ''] = ghRepo.split('/');
|
|
17
|
+
const pulls = [];
|
|
18
|
+
for (let page = 1; page <= MAX_PAGES; page++) {
|
|
19
|
+
const { data } = await octokit.rest.pulls.list({ owner, repo, state: 'open', per_page: PAGE_SIZE, page });
|
|
20
|
+
pulls.push(...data);
|
|
21
|
+
if (data.length < PAGE_SIZE)
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
return pulls;
|
|
25
|
+
}
|
|
26
|
+
/** Drops the CI-pending reason so the PR is never picked up twice. A save failure is logged, never fatal. */
|
|
27
|
+
async function clearReason(deps, pr, issue, state) {
|
|
28
|
+
const { draftReason: _cleared, ...rest } = state;
|
|
29
|
+
try {
|
|
30
|
+
await savePrRunState({
|
|
31
|
+
octokit: deps.octokit,
|
|
32
|
+
repo: deps.ghRepo,
|
|
33
|
+
prNumber: pr,
|
|
34
|
+
state: { ...rest, status: 'awaiting-review', updatedAt: new Date().toISOString() },
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
deps.log('pr_state_failed', issue, `could not clear the CI-pending reason on PR #${pr}: ${errorMessage(err)}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async function handleDraft(deps, pull, issue, state) {
|
|
42
|
+
const { log } = deps;
|
|
43
|
+
const pr = pull.number;
|
|
44
|
+
let verdict;
|
|
45
|
+
try {
|
|
46
|
+
verdict = await deps.probeCi({ headSha: pull.head.sha, baseRef: pull.base.ref });
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
log('warn', issue, `CI probe for CI-pending draft PR #${pr} failed: ${errorMessage(err)}`);
|
|
50
|
+
return { pr, issue, action: 'still-pending', detail: errorMessage(err) };
|
|
51
|
+
}
|
|
52
|
+
if (verdict === 'timeout') {
|
|
53
|
+
log('ship', issue, `PR #${pr}: CI still pending; left as draft`);
|
|
54
|
+
return { pr, issue, action: 'still-pending' };
|
|
55
|
+
}
|
|
56
|
+
if (verdict === 'failure') {
|
|
57
|
+
const queued = await deps.queueRework(issue, pr);
|
|
58
|
+
if (queued.outcome !== 'queued') {
|
|
59
|
+
const detail = queued.detail ?? queued.outcome;
|
|
60
|
+
log('warn', issue, `CI failed on CI-pending draft PR #${pr} but #${issue} was not queued for rework: ${detail}`);
|
|
61
|
+
return { pr, issue, action: 'skipped', detail };
|
|
62
|
+
}
|
|
63
|
+
await clearReason(deps, pr, issue, state);
|
|
64
|
+
log('rework', issue, `CI failed on CI-pending draft PR #${pr}; queued #${issue} for CI rework`);
|
|
65
|
+
return { pr, issue, action: 'ci-rework' };
|
|
66
|
+
}
|
|
67
|
+
await clearReason(deps, pr, issue, state);
|
|
68
|
+
await deps.markReady(pull.node_id);
|
|
69
|
+
log('ready', issue, `PR #${pr} marked ready: CI passed after SHIP left it as a draft`);
|
|
70
|
+
if (!deps.mergeEnabled()) {
|
|
71
|
+
log('merge-gated', issue, `auto-merge off by merge policy; PR #${pr} left ready for a human`);
|
|
72
|
+
return { pr, issue, action: 'merge-gated' };
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
await deps.land(issue, pull.head.ref);
|
|
76
|
+
return { pr, issue, action: 'landed' };
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
if (err instanceof MergeGatedError)
|
|
80
|
+
return { pr, issue, action: 'merge-gated', detail: err.message };
|
|
81
|
+
log('warn', issue, `landing CI-pending draft PR #${pr} failed: ${errorMessage(err)}`);
|
|
82
|
+
return { pr, issue, action: 'land-failed', detail: errorMessage(err) };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/** Never throws. Returns one result per factory draft it acted on or deliberately left. */
|
|
86
|
+
export async function sweepCiPendingDrafts(deps) {
|
|
87
|
+
const { octokit, ghRepo, branchPrefix, protectedIssues } = deps;
|
|
88
|
+
let pulls;
|
|
89
|
+
try {
|
|
90
|
+
pulls = await listOpenPulls(octokit, ghRepo);
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
deps.log('warn', 0, `CI-pending draft sweep could not list open PRs: ${errorMessage(err)}`);
|
|
94
|
+
return [];
|
|
95
|
+
}
|
|
96
|
+
const results = [];
|
|
97
|
+
for (const pull of pulls) {
|
|
98
|
+
if (!pull.draft || !pull.head.ref.startsWith(`${branchPrefix}/`))
|
|
99
|
+
continue;
|
|
100
|
+
const issue = factoryBranchIssue(pull.head.ref, branchPrefix);
|
|
101
|
+
if (issue === null || protectedIssues?.has(issue))
|
|
102
|
+
continue;
|
|
103
|
+
try {
|
|
104
|
+
const loaded = await loadPrRunState({
|
|
105
|
+
octokit,
|
|
106
|
+
repo: ghRepo,
|
|
107
|
+
prNumber: pull.number,
|
|
108
|
+
key: workKeyFromIssue(issue),
|
|
109
|
+
});
|
|
110
|
+
if (loaded.status !== 'found' || loaded.state.draftReason !== 'ci-pending')
|
|
111
|
+
continue;
|
|
112
|
+
if (loaded.state.prNumber !== pull.number)
|
|
113
|
+
continue;
|
|
114
|
+
results.push(await handleDraft(deps, pull, issue, loaded.state));
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
deps.log('warn', issue, `CI-pending draft sweep failed on PR #${pull.number}: ${errorMessage(err)}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return results;
|
|
121
|
+
}
|
|
122
|
+
/** The production wiring of the sweep. Never throws — a failure is a warn, never a reason to abort `factory run`. */
|
|
123
|
+
export async function runCiPendingDraftSweep(paths, ghRepo, getOctokit, opts = {}) {
|
|
124
|
+
const log = (type, issue, msg) => logEvent(paths.events, type, issue === 0 ? 'all' : issue, msg, opts.lane ? { lane: opts.lane } : undefined);
|
|
125
|
+
try {
|
|
126
|
+
const octokit = getOctokit();
|
|
127
|
+
if (!octokit)
|
|
128
|
+
return;
|
|
129
|
+
const [owner = '', repo = ''] = ghRepo.split('/');
|
|
130
|
+
const config = loadFactoryConfigForRepo(paths.config);
|
|
131
|
+
const { autoMerge, waitMerge = waitForMerge } = opts;
|
|
132
|
+
const results = await sweepCiPendingDrafts({
|
|
133
|
+
octokit,
|
|
134
|
+
ghRepo,
|
|
135
|
+
branchPrefix: resolveBranchPrefix(config),
|
|
136
|
+
...(opts.protectedIssues ? { protectedIssues: opts.protectedIssues } : {}),
|
|
137
|
+
mergeEnabled: () => resolveMergePolicy(config, process.env, autoMerge === undefined ? undefined : { auto: autoMerge }).auto,
|
|
138
|
+
probeCi: ({ headSha, baseRef }) => watchChecks({
|
|
139
|
+
octokit,
|
|
140
|
+
owner,
|
|
141
|
+
repo,
|
|
142
|
+
ref: headSha,
|
|
143
|
+
deadlineMs: PROBE_DEADLINE_MS,
|
|
144
|
+
settleMs: 0,
|
|
145
|
+
requiredChecks: { branch: baseRef },
|
|
146
|
+
probeNoCi: true,
|
|
147
|
+
}),
|
|
148
|
+
markReady: (nodeId) => markPullRequestReady(octokit, nodeId),
|
|
149
|
+
// Land the draft's own branch, synced with main so a conflict takes the land conflict path (#1887 is out of
|
|
150
|
+
// scope), and held rather than polled when a human gate label is set.
|
|
151
|
+
land: (issue, branch) => waitMerge(issue, branch, opts.repoRoot ?? process.cwd(), ghRepo, paths, {
|
|
152
|
+
landBranch: branch,
|
|
153
|
+
holdWhenGated: true,
|
|
154
|
+
syncMain: true,
|
|
155
|
+
...(autoMerge === undefined ? {} : { mergeOverrides: { auto: autoMerge } }),
|
|
156
|
+
}),
|
|
157
|
+
queueRework: (issue, pr) => queueCiPendingRework({
|
|
158
|
+
store: createFileIterateStore(paths.iterate),
|
|
159
|
+
queue: createOctokitQueueClient(octokit),
|
|
160
|
+
owner,
|
|
161
|
+
repo,
|
|
162
|
+
issue,
|
|
163
|
+
pr,
|
|
164
|
+
}),
|
|
165
|
+
log,
|
|
166
|
+
});
|
|
167
|
+
const acted = results.filter((r) => r.action !== 'still-pending' && r.action !== 'skipped');
|
|
168
|
+
if (acted.length > 0) {
|
|
169
|
+
console.log(`factory: CI-pending draft sweep handled ${acted.map((r) => `PR #${r.pr} (${r.action})`).join(', ')}`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
log('warn', 0, `CI-pending draft sweep failed: ${errorMessage(err)}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=ci-pending-draft-sweep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci-pending-draft-sweep.js","sourceRoot":"","sources":["../../src/cli/ci-pending-draft-sweep.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Resolve each set flag to an absolute path and hand it to every command, lane and CHECK
|
|
2
|
+
* subprocess through env. A missing file throws. */
|
|
3
|
+
export declare function applyConfigOverrideOptions(flags: {
|
|
4
|
+
config?: string;
|
|
5
|
+
constitution?: string;
|
|
6
|
+
}, cwd: string, env?: NodeJS.ProcessEnv): void;
|
|
7
|
+
/** Label of the constitution source a run uses: an override, the committed instance, or repo files / bundled. */
|
|
8
|
+
export declare function constitutionSourceLabel(repoRoot: string): string;
|
|
9
|
+
/** Print and record the sources the run's config and constitution came from; keys only, never values. */
|
|
10
|
+
export declare function reportConfigSource(repoRoot: string, eventsFile: string, issueNum: number): void;
|
|
11
|
+
//# sourceMappingURL=config-override-option.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-override-option.d.ts","sourceRoot":"","sources":["../../src/cli/config-override-option.ts"],"names":[],"mappings":"AAYA;qDACqD;AACrD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,EACjD,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,IAAI,CAUN;AAED,iHAAiH;AACjH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOhE;AAED,yGAAyG;AACzG,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAO/F"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// src/cli/config-override-option.ts — global --config / --constitution flags and the run's config-source report (#3906).
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { join, resolve } from 'node:path';
|
|
4
|
+
import { describeConfigSources, lastRunConfigLadder, logEvent, resolveConstitutionOverride, } from '@on-par/factory-core/internal';
|
|
5
|
+
/** Resolve each set flag to an absolute path and hand it to every command, lane and CHECK
|
|
6
|
+
* subprocess through env. A missing file throws. */
|
|
7
|
+
export function applyConfigOverrideOptions(flags, cwd, env = process.env) {
|
|
8
|
+
const apply = (flag, value, pathVar) => {
|
|
9
|
+
if (value === undefined)
|
|
10
|
+
return;
|
|
11
|
+
const abs = resolve(cwd, value);
|
|
12
|
+
if (!existsSync(abs))
|
|
13
|
+
throw new Error(`${flag}: no such file: ${abs}`);
|
|
14
|
+
env[pathVar] = abs;
|
|
15
|
+
env[`${pathVar}_SOURCE`] = flag;
|
|
16
|
+
};
|
|
17
|
+
apply('--config', flags.config, 'FACTORY_CONFIG_PATH');
|
|
18
|
+
apply('--constitution', flags.constitution, 'FACTORY_CONSTITUTION_PATH');
|
|
19
|
+
}
|
|
20
|
+
/** Label of the constitution source a run uses: an override, the committed instance, or repo files / bundled. */
|
|
21
|
+
export function constitutionSourceLabel(repoRoot) {
|
|
22
|
+
return (resolveConstitutionOverride()?.source ??
|
|
23
|
+
(existsSync(join(repoRoot, '.factory', 'constitution.md'))
|
|
24
|
+
? '.factory/constitution.md'
|
|
25
|
+
: 'repo instruction files / bundled'));
|
|
26
|
+
}
|
|
27
|
+
/** Print and record the sources the run's config and constitution came from; keys only, never values. */
|
|
28
|
+
export function reportConfigSource(repoRoot, eventsFile, issueNum) {
|
|
29
|
+
const ladder = lastRunConfigLadder();
|
|
30
|
+
if (!ladder)
|
|
31
|
+
return;
|
|
32
|
+
const constitution = constitutionSourceLabel(repoRoot);
|
|
33
|
+
const text = describeConfigSources(ladder, constitution);
|
|
34
|
+
console.log(`factory: ${text}`);
|
|
35
|
+
logEvent(eventsFile, 'config_source', issueNum, text, { level: 'info' });
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=config-override-option.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-override-option.js","sourceRoot":"","sources":["../../src/cli/config-override-option.ts"],"names":[],"mappings":"AAAA,yHAAyH;AAEzH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,QAAQ,EACR,2BAA2B,GAC5B,MAAM,+BAA+B,CAAC;AAEvC;qDACqD;AACrD,MAAM,UAAU,0BAA0B,CACxC,KAAiD,EACjD,GAAW,EACX,GAAG,GAAsB,OAAO,CAAC,GAAG;IAEpC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,KAAyB,EAAE,OAAe,EAAQ,EAAE;QAC/E,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO;QAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,mBAAmB,GAAG,EAAE,CAAC,CAAC;QACvE,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;QACnB,GAAG,CAAC,GAAG,OAAO,SAAS,CAAC,GAAG,IAAI,CAAC;IAClC,CAAC,CAAC;IACF,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACvD,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;AAC3E,CAAC;AAED,iHAAiH;AACjH,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,OAAO,CACL,2BAA2B,EAAE,EAAE,MAAM;QACrC,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;YACxD,CAAC,CAAC,0BAA0B;YAC5B,CAAC,CAAC,kCAAkC,CAAC,CACxC,CAAC;AACJ,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,UAAkB,EAAE,QAAgB;IACvF,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IACrC,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { RunConfigLadder } from '@on-par/factory-core/internal';
|
|
2
|
+
import { type DoctorCheck } from './doctor.js';
|
|
3
|
+
export interface DoctorConfigSources {
|
|
4
|
+
config: {
|
|
5
|
+
source: string;
|
|
6
|
+
path?: string;
|
|
7
|
+
overrideKeys: string[];
|
|
8
|
+
};
|
|
9
|
+
constitution: {
|
|
10
|
+
source: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/** The `config sources` row: which config and constitution the run would start from; keys only, never values. */
|
|
14
|
+
export declare function configSourcesCheck(ladder: RunConfigLadder, constitution: string): DoctorCheck;
|
|
15
|
+
export interface HeldDoctorConfig {
|
|
16
|
+
release: () => void;
|
|
17
|
+
check: DoctorCheck;
|
|
18
|
+
sources: DoctorConfigSources | null;
|
|
19
|
+
}
|
|
20
|
+
/** Snapshot the ladder so the config loaders doctor calls see the overrides. A ladder error becomes a
|
|
21
|
+
* failing row and never aborts doctor. */
|
|
22
|
+
export declare function holdDoctorConfigSources(repoRoot: string, configPath: string): HeldDoctorConfig;
|
|
23
|
+
//# sourceMappingURL=doctor-config-sources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-config-sources.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-config-sources.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGrE,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAClE,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAClC;AAED,iHAAiH;AACjH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,GAAG,WAAW,CAO7F;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACrC;AAED;2CAC2C;AAC3C,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAyB9F"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// src/cli/doctor-config-sources.ts — the `config sources` doctor row and `--json` sources field (#3906).
|
|
2
|
+
import { describeConfigSources, holdRunConfigSnapshot, lastRunConfigLadder } from '@on-par/factory-core/internal';
|
|
3
|
+
import { constitutionSourceLabel } from './config-override-option.js';
|
|
4
|
+
import { REPO_SECTION } from './doctor.js';
|
|
5
|
+
/** The `config sources` row: which config and constitution the run would start from; keys only, never values. */
|
|
6
|
+
export function configSourcesCheck(ladder, constitution) {
|
|
7
|
+
return {
|
|
8
|
+
name: 'config sources',
|
|
9
|
+
section: REPO_SECTION,
|
|
10
|
+
ok: true,
|
|
11
|
+
detail: describeConfigSources(ladder, constitution),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/** Snapshot the ladder so the config loaders doctor calls see the overrides. A ladder error becomes a
|
|
15
|
+
* failing row and never aborts doctor. */
|
|
16
|
+
export function holdDoctorConfigSources(repoRoot, configPath) {
|
|
17
|
+
try {
|
|
18
|
+
const release = holdRunConfigSnapshot(configPath);
|
|
19
|
+
const ladder = lastRunConfigLadder();
|
|
20
|
+
const constitution = constitutionSourceLabel(repoRoot);
|
|
21
|
+
if (!ladder)
|
|
22
|
+
return { release, check: { name: 'config sources', ok: true, detail: 'packaged defaults' }, sources: null };
|
|
23
|
+
const config = { source: ladder.source, overrideKeys: ladder.overrideKeys };
|
|
24
|
+
if (ladder.path !== undefined)
|
|
25
|
+
config.path = ladder.path;
|
|
26
|
+
return {
|
|
27
|
+
release,
|
|
28
|
+
check: configSourcesCheck(ladder, constitution),
|
|
29
|
+
sources: { config, constitution: { source: constitution } },
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
34
|
+
const check = {
|
|
35
|
+
name: 'config sources',
|
|
36
|
+
section: REPO_SECTION,
|
|
37
|
+
ok: false,
|
|
38
|
+
detail,
|
|
39
|
+
fix: 'fix the --config / FACTORY_CONFIG_* / FACTORY_CONSTITUTION* override named above',
|
|
40
|
+
};
|
|
41
|
+
return { release: () => { }, check, sources: null };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=doctor-config-sources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-config-sources.js","sourceRoot":"","sources":["../../src/cli/doctor-config-sources.ts"],"names":[],"mappings":"AAAA,yGAAyG;AAEzG,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGlH,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAoB,MAAM,aAAa,CAAC;AAO7D,iHAAiH;AACjH,MAAM,UAAU,kBAAkB,CAAC,MAAuB,EAAE,YAAoB;IAC9E,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,YAAY;QACrB,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,qBAAqB,CAAC,MAAM,EAAE,YAAY,CAAC;KACpD,CAAC;AACJ,CAAC;AAQD;2CAC2C;AAC3C,MAAM,UAAU,uBAAuB,CAAC,QAAgB,EAAE,UAAkB;IAC1E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM;YACT,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9G,MAAM,MAAM,GAAkC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;QAC3G,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzD,OAAO;YACL,OAAO;YACP,KAAK,EAAE,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC;YAC/C,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE;SAC5D,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,KAAK,GAAgB;YACzB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,YAAY;YACrB,EAAE,EAAE,KAAK;YACT,MAAM;YACN,GAAG,EAAE,kFAAkF;SACxF,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrD,CAAC;AACH,CAAC"}
|
|
@@ -19,6 +19,11 @@ export interface ResolvedVerifyCommands {
|
|
|
19
19
|
checksProbe?: string;
|
|
20
20
|
/** The repo config file name shown in fix hints, e.g. `.factory/config.yaml` (#3604). */
|
|
21
21
|
configFile?: string;
|
|
22
|
+
/** Workspaces whose own test script runs vitest or jest, found through a root fan-out script. */
|
|
23
|
+
testRunners?: {
|
|
24
|
+
dir: string;
|
|
25
|
+
runner: string;
|
|
26
|
+
}[];
|
|
22
27
|
}
|
|
23
28
|
/** Asks the CHECK resolvers what CHECK will run, so doctor cannot drift from CHECK. A resolver
|
|
24
29
|
* failure (for example a malformed package.json) comes back as `error`, never a throw. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-verify.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-verify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor-verify.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-verify.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,6KAA6K;IAC7K,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iGAAiG;IACjG,WAAW,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACjD;AAiBD;2FAC2F;AAC3F,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAgC7F;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAC7B,IAAI,EAAE,gBAAgB,EAAE,EACxB,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GACzC,gBAAgB,EAAE,CAEpB;AAoDD;8EAC8E;AAC9E,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,sBAAsB,EAChC,IAAI,EAAE;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CAAE,GAC1E,WAAW,EAAE,CAmCf;AAED,wGAAwG;AACxG,wBAAgB,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,GAAG,WAAW,CAYjF"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// packages/cli/src/cli/doctor-verify.ts — `factory doctor` Verify section: the build/test/lint commands CHECK will run (#3473)
|
|
2
|
-
import {
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { basename, join } from 'node:path';
|
|
3
4
|
import { getFactoryPaths } from '@on-par/factory-core';
|
|
4
|
-
import { describeChecksProbe, resolveCompileCommand, resolveLintCommands, resolveTestsCommand, } from '@on-par/factory-core/internal';
|
|
5
|
+
import { describeChecksProbe, resolveCompileCommand, resolveLintCommands, resolveTestsCommand, resolveWorkspaceTestRunners, } from '@on-par/factory-core/internal';
|
|
5
6
|
import { MIN_NODE_MAJOR } from '../node-version.js';
|
|
6
7
|
export const VERIFY_SECTION = 'Verify';
|
|
7
8
|
const TEST_SOURCES = {
|
|
@@ -25,6 +26,14 @@ export async function resolveVerifyCommands(repoRoot) {
|
|
|
25
26
|
const build = await resolveCompileCommand(src);
|
|
26
27
|
const tests = await resolveTestsCommand(src);
|
|
27
28
|
const lint = await resolveLintCommands(src);
|
|
29
|
+
let testRunners = [];
|
|
30
|
+
try {
|
|
31
|
+
const pkg = JSON.parse(await readFile(join(repoRoot, 'package.json'), 'utf8'));
|
|
32
|
+
testRunners = (await resolveWorkspaceTestRunners(repoRoot, pkg)).map(({ dir, runner }) => ({ dir, runner }));
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
testRunners = [];
|
|
36
|
+
}
|
|
28
37
|
return {
|
|
29
38
|
rows: [
|
|
30
39
|
build ? rowFor('build', build.argv, build.source) : emptyRow('build'),
|
|
@@ -37,6 +46,7 @@ export async function resolveVerifyCommands(repoRoot) {
|
|
|
37
46
|
],
|
|
38
47
|
checksProbe,
|
|
39
48
|
configFile,
|
|
49
|
+
...(testRunners.length > 0 ? { testRunners } : {}),
|
|
40
50
|
};
|
|
41
51
|
}
|
|
42
52
|
catch (err) {
|
|
@@ -77,7 +87,7 @@ function missingRow(row, requireTests, probe = DEFAULT_CHECKS_PROBE, configFile
|
|
|
77
87
|
section,
|
|
78
88
|
ok: false,
|
|
79
89
|
optional: true,
|
|
80
|
-
detail: `no build system detected (checks.build in ${probe}, package.json build script, Makefile, Cargo.toml); CHECK skips compile`,
|
|
90
|
+
detail: `no build system detected (checks.build in ${probe}, package.json build or typecheck script, Makefile, Cargo.toml); CHECK skips compile`,
|
|
81
91
|
fix: 'run `factory init --detect-checks` to declare a build command',
|
|
82
92
|
};
|
|
83
93
|
}
|
|
@@ -104,7 +114,7 @@ export function verifyCommandChecks(resolved, opts) {
|
|
|
104
114
|
},
|
|
105
115
|
];
|
|
106
116
|
}
|
|
107
|
-
|
|
117
|
+
const checks = resolved.rows.map((row) => {
|
|
108
118
|
const { command, source, executable } = row;
|
|
109
119
|
if (command === null || executable === null)
|
|
110
120
|
return missingRow(row, opts.requireTests, resolved.checksProbe, resolved.configFile);
|
|
@@ -120,6 +130,13 @@ export function verifyCommandChecks(resolved, opts) {
|
|
|
120
130
|
fix: `install ${executable} and put it on PATH${executable === 'pwsh' ? ': https://aka.ms/powershell' : ''}`,
|
|
121
131
|
};
|
|
122
132
|
});
|
|
133
|
+
if (!resolved.testRunners?.length)
|
|
134
|
+
return checks;
|
|
135
|
+
const detail = [...resolved.testRunners]
|
|
136
|
+
.sort((a, b) => (a.dir < b.dir ? -1 : a.dir > b.dir ? 1 : 0))
|
|
137
|
+
.map((w) => `${w.dir}: ${w.runner}`)
|
|
138
|
+
.join('; ');
|
|
139
|
+
return [...checks, { name: 'verify test runner', section, ok: true, detail }];
|
|
123
140
|
}
|
|
124
141
|
/** The npm row: required unless doctor runs in a repo with no package.json (`hasPackageJson` false). */
|
|
125
142
|
export function npmCheck(available, hasPackageJson) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-verify.js","sourceRoot":"","sources":["../../src/cli/doctor-verify.ts"],"names":[],"mappings":"AAAA,+HAA+H;AAE/H,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor-verify.js","sourceRoot":"","sources":["../../src/cli/doctor-verify.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAwB,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAa7F,OAAO,EAAwB,KAAK,eAAe,EAAwB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/doctor.js
CHANGED
|
@@ -8,6 +8,7 @@ import { claudeStoredSessionState, codexChatgptSessionState, hasClaudeLoginEvide
|
|
|
8
8
|
import { npmCheck, resolveVerifyCommands, verifyCommandChecks, withPathResults } from './doctor-verify.js';
|
|
9
9
|
import { configLintChecks, declaredHarnessChecks, linearTrackerChecks, modelsRegistryChecks } from './doctor-config.js';
|
|
10
10
|
import { failoverProviderChecks } from './doctor-failover-providers.js';
|
|
11
|
+
import { holdDoctorConfigSources } from './doctor-config-sources.js';
|
|
11
12
|
import { codexSandboxNote } from './doctor-codex-sandbox.js';
|
|
12
13
|
import { agentMemoryChecks } from './doctor-agent-memory.js';
|
|
13
14
|
import { factoryIgnoredChecks } from './doctor-factory-ignored.js';
|
|
@@ -696,6 +697,7 @@ export async function cmdDoctor(opts, rt) {
|
|
|
696
697
|
catch {
|
|
697
698
|
repoRoot = null;
|
|
698
699
|
}
|
|
700
|
+
const held = repoRoot === null ? null : holdDoctorConfigSources(repoRoot, getFactoryPaths(repoRoot).config);
|
|
699
701
|
const harnessView = repoRoot === null ? null : resolveDoctorHarnesses(rt.configLoaders, repoRoot);
|
|
700
702
|
const repoSandbox = () => repoRoot === null ? undefined : rt.configLoaders.loadFactoryConfigForRepo(getFactoryPaths(repoRoot).config).sandbox;
|
|
701
703
|
const checks = runDoctorChecks({
|
|
@@ -732,6 +734,8 @@ export async function cmdDoctor(opts, rt) {
|
|
|
732
734
|
codexSandbox: () => repoSandbox()?.codexSandbox,
|
|
733
735
|
});
|
|
734
736
|
checks.push(...failoverProviderChecks(rt, repoRoot));
|
|
737
|
+
if (held)
|
|
738
|
+
checks.push(held.check);
|
|
735
739
|
// Only with --probe-inference: these send a real prompt (claude, opencode; uses quota). Plain doctor makes no inference call.
|
|
736
740
|
if (opts.probeInference) {
|
|
737
741
|
const CLAUDE_AUTH_PROBE = 'claude -p "reply with exactly: ok"';
|
|
@@ -890,10 +894,11 @@ export async function cmdDoctor(opts, rt) {
|
|
|
890
894
|
const skewRow = clockSkewCheck(skew, maxClockSkewMs);
|
|
891
895
|
if (skewRow)
|
|
892
896
|
checks.push(skewRow);
|
|
897
|
+
held?.release();
|
|
893
898
|
const text = formatDoctorChecks(checks, { inRepo: repoRoot !== null });
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
899
|
+
const clockSkewMs = skew.measured ? skew.skewMs : null;
|
|
900
|
+
const report = { ok: !doctorFailed(checks), checks, verify: verifyRows, clockSkewMs, sources: held?.sources ?? null };
|
|
901
|
+
console.log(opts.json ? JSON.stringify(report, null, 2) : text);
|
|
897
902
|
if (doctorFailed(checks))
|
|
898
903
|
process.exit(1);
|
|
899
904
|
}
|