@on-par/factory-cli 0.9.18-next.9 → 0.9.19-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 +2 -2
- package/dist/cli/detect-checks.d.ts +2 -0
- package/dist/cli/detect-checks.d.ts.map +1 -1
- package/dist/cli/detect-checks.js +13 -2
- package/dist/cli/detect-checks.js.map +1 -1
- package/dist/cli/doctor-clock-skew.d.ts +20 -0
- package/dist/cli/doctor-clock-skew.d.ts.map +1 -0
- package/dist/cli/doctor-clock-skew.js +37 -0
- package/dist/cli/doctor-clock-skew.js.map +1 -0
- package/dist/cli/doctor-health.d.ts +1 -1
- package/dist/cli/doctor-health.d.ts.map +1 -1
- package/dist/cli/doctor-health.js +7 -5
- package/dist/cli/doctor-health.js.map +1 -1
- package/dist/cli/doctor-queue-reconcile.d.ts +1 -1
- package/dist/cli/doctor-queue-reconcile.d.ts.map +1 -1
- package/dist/cli/doctor-queue-reconcile.js +7 -2
- package/dist/cli/doctor-queue-reconcile.js.map +1 -1
- package/dist/cli/doctor-verify.d.ts +3 -1
- package/dist/cli/doctor-verify.d.ts.map +1 -1
- package/dist/cli/doctor-verify.js +13 -8
- package/dist/cli/doctor-verify.js.map +1 -1
- package/dist/cli/doctor-worktree-reconcile.d.ts +8 -0
- package/dist/cli/doctor-worktree-reconcile.d.ts.map +1 -0
- package/dist/cli/doctor-worktree-reconcile.js +21 -0
- package/dist/cli/doctor-worktree-reconcile.js.map +1 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +15 -18
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init-files.d.ts +4 -3
- package/dist/cli/init-files.d.ts.map +1 -1
- package/dist/cli/init-files.js +15 -10
- package/dist/cli/init-files.js.map +1 -1
- package/dist/cli/json-contract.d.ts +1 -0
- package/dist/cli/json-contract.d.ts.map +1 -1
- package/dist/cli/json-contract.js +1 -0
- package/dist/cli/json-contract.js.map +1 -1
- package/dist/cli/land-behind.d.ts +8 -0
- package/dist/cli/land-behind.d.ts.map +1 -0
- package/dist/cli/land-behind.js +21 -0
- package/dist/cli/land-behind.js.map +1 -0
- package/dist/cli/land-pr.d.ts +6 -0
- package/dist/cli/land-pr.d.ts.map +1 -1
- package/dist/cli/land-pr.js +105 -50
- package/dist/cli/land-pr.js.map +1 -1
- package/dist/cli/land.d.ts +3 -0
- package/dist/cli/land.d.ts.map +1 -1
- package/dist/cli/land.js +11 -11
- package/dist/cli/land.js.map +1 -1
- package/dist/cli/lane-file-hold.d.ts +4 -0
- package/dist/cli/lane-file-hold.d.ts.map +1 -0
- package/dist/cli/lane-file-hold.js +10 -0
- package/dist/cli/lane-file-hold.js.map +1 -0
- package/dist/cli/lane-heartbeat.d.ts +31 -3
- package/dist/cli/lane-heartbeat.d.ts.map +1 -1
- package/dist/cli/lane-heartbeat.js +74 -6
- package/dist/cli/lane-heartbeat.js.map +1 -1
- package/dist/cli/lane-park-comment.d.ts.map +1 -1
- package/dist/cli/lane-park-comment.js +2 -1
- package/dist/cli/lane-park-comment.js.map +1 -1
- package/dist/cli/lane-pause.d.ts +6 -1
- package/dist/cli/lane-pause.d.ts.map +1 -1
- package/dist/cli/lane-pause.js +30 -0
- package/dist/cli/lane-pause.js.map +1 -1
- package/dist/cli/queue-preflight.d.ts +4 -2
- package/dist/cli/queue-preflight.d.ts.map +1 -1
- package/dist/cli/queue-preflight.js +1 -1
- package/dist/cli/queue-preflight.js.map +1 -1
- package/dist/cli/queue-startup.d.ts +55 -0
- package/dist/cli/queue-startup.d.ts.map +1 -1
- package/dist/cli/queue-startup.js +78 -2
- package/dist/cli/queue-startup.js.map +1 -1
- package/dist/cli/reset.d.ts.map +1 -1
- package/dist/cli/reset.js +4 -4
- package/dist/cli/reset.js.map +1 -1
- package/dist/cli/run-branch.js +1 -1
- package/dist/cli/run-branch.js.map +1 -1
- package/dist/cli/run-lane-deps.d.ts +6 -0
- package/dist/cli/run-lane-deps.d.ts.map +1 -1
- package/dist/cli/run-lane-load-hold.d.ts +14 -0
- package/dist/cli/run-lane-load-hold.d.ts.map +1 -0
- package/dist/cli/run-lane-load-hold.js +22 -0
- package/dist/cli/run-lane-load-hold.js.map +1 -0
- package/dist/cli/run-lane-restack.d.ts +13 -0
- package/dist/cli/run-lane-restack.d.ts.map +1 -0
- package/dist/cli/run-lane-restack.js +21 -0
- package/dist/cli/run-lane-restack.js.map +1 -0
- package/dist/cli/run-lane.d.ts.map +1 -1
- package/dist/cli/run-lane.js +32 -48
- package/dist/cli/run-lane.js.map +1 -1
- package/dist/cli/run.d.ts +1 -0
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +12 -11
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/ship-run-state.d.ts +5 -0
- package/dist/cli/ship-run-state.d.ts.map +1 -1
- package/dist/cli/ship-run-state.js +18 -1
- package/dist/cli/ship-run-state.js.map +1 -1
- package/dist/cli/ship.d.ts +2 -0
- package/dist/cli/ship.d.ts.map +1 -1
- package/dist/cli/ship.js +7 -14
- package/dist/cli/ship.js.map +1 -1
- package/dist/cli/steer.js +3 -3
- package/dist/cli/steer.js.map +1 -1
- package/dist/cli/unpark.d.ts.map +1 -1
- package/dist/cli/unpark.js +4 -2
- package/dist/cli/unpark.js.map +1 -1
- package/package.json +4 -4
- package/schemas/logs-line.schema.json +5 -0
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ factory doctor
|
|
|
18
18
|
|
|
19
19
|
Also requires `git`, one supported coding agent CLI (see [docs/agents.md](https://github.com/on-par/software-factory/blob/main/docs/agents.md)), signed in, and the GitHub CLI signed in with `gh auth login`. The factory reads `GITHUB_TOKEN`, then `GH_TOKEN`, and falls back to `gh auth token`. `factory doctor` checks all of this and prints a fix for anything missing. It also checks your git identity and the sandbox runtime, and it runs outside a repo. Global or repo-local `git config` for `user.name` and `user.email` both work. On Linux, install `firejail` first; without it, Codex still runs with `--sandbox workspace-write`.
|
|
20
20
|
|
|
21
|
-
`factory init`
|
|
21
|
+
`factory init` writes `.factory/` with a `default-code` constitution; commit `config.yaml` and `constitution.md`, and only `state/` stays ignored. See the main README quick start.
|
|
22
22
|
|
|
23
23
|
## Safety
|
|
24
24
|
|
|
@@ -30,7 +30,7 @@ Agents run with their permission prompts off (Claude Code with `--permission-mod
|
|
|
30
30
|
npm install -g @on-par/factory-cli@latest
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
`factory self-update --check` reports whether a newer release is on npm. It works in 0.9.3 and later.
|
|
33
|
+
`factory self-update --check` reports whether a newer release is on npm. It works in 0.9.3 and later. `factory self-update --to <version>` (0.9.6 and later) installs that exact stable version next to the running Node, runs `factory doctor`, restarts factoryd, and rolls back if the install or doctor fails. factoryd installed from npm runs the same update on its own when a new stable release appears. See [docs/ops/updating.md](https://github.com/on-par/software-factory/blob/main/docs/ops/updating.md) and the [CHANGELOG](https://github.com/on-par/software-factory/blob/main/CHANGELOG.md).
|
|
34
34
|
|
|
35
35
|
## Documentation
|
|
36
36
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type CostEntry } from '@on-par/factory-core';
|
|
1
2
|
import { type CheckProposal } from '@on-par/factory-core/internal';
|
|
2
3
|
export interface DryRunResult {
|
|
3
4
|
ok: boolean;
|
|
@@ -40,6 +41,7 @@ export interface DetectChecksRouter {
|
|
|
40
41
|
/** `factory init --detect-checks`: detect with the repo's router (missing harness CLIs skipped) into its config file. */
|
|
41
42
|
export declare function detectChecksForInit(repoRoot: string, router: DetectChecksRouter & {
|
|
42
43
|
skipMissingHarnessClis(available: (cmd: string) => boolean): void;
|
|
44
|
+
setCostSink(sink: (entry: Omit<CostEntry, 'ts' | 'issue'>) => void): void;
|
|
43
45
|
}, yes: boolean, tty?: Parameters<typeof detectChecksIo>[2]): Promise<DetectChecksOutcome>;
|
|
44
46
|
/** The real agent, dry-run, confirm and log for `factory init --detect-checks`. Confirm answers no off a TTY. */
|
|
45
47
|
export declare function detectChecksIo(repoRoot: string, router?: DetectChecksRouter, tty?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-checks.d.ts","sourceRoot":"","sources":["../../src/cli/detect-checks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"detect-checks.d.ts","sourceRoot":"","sources":["../../src/cli/detect-checks.ts"],"names":[],"mappings":"AAMA,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAYL,KAAK,aAAa,EACnB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,GAAG,EAAE,OAAO,CAAC;IACb,yFAAyF;IACzF,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAClD,+DAA+D;IAC/D,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;CACnE;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,aAAa,CAAC;IACxB,qEAAqE;IACrE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5D,sEAAsE;IACtE,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CAC/B;AA2CD,gHAAgH;AAChH,wBAAsB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAsC1F;AAID,qFAAqF;AACrF,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpH;AAED,yHAAyH;AACzH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,kBAAkB,GAAG;IAC3B,sBAAsB,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;IAClE,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;CAC3E,EACD,GAAG,EAAE,OAAO,EACZ,GAAG,CAAC,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,GACzC,OAAO,CAAC,mBAAmB,CAAC,CAO9B;AAED,iHAAiH;AACjH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,kBAAkB,EAC3B,GAAG,GAAE;IAAE,KAAK,EAAE,MAAM,CAAC,cAAc,GAAG;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAA;CAGvF,GACA,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC,CA2BhF"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { basename } from 'node:path';
|
|
4
4
|
import { createInterface } from 'node:readline/promises';
|
|
5
5
|
import { getFactoryPaths, isCommandAvailable } from '@on-par/factory-core';
|
|
6
|
-
import { buildDetectChecksPrompt, CHECK_KINDS, detectCheckHeuristics, heuristicProposal, parseDetectedChecks, readRepoConfigFile, runCommand, setRepoConfigValue, tokenizeEvidenceCommand, } from '@on-par/factory-core/internal';
|
|
6
|
+
import { buildDetectChecksPrompt, CHECK_KINDS, detectCheckHeuristics, heuristicProposal, logCost, parseDetectedChecks, readRepoConfigFile, resolveTestsCommand, runCommand, setRepoConfigValue, tokenizeEvidenceCommand, } from '@on-par/factory-core/internal';
|
|
7
7
|
function existingChecks(configPath) {
|
|
8
8
|
const checks = readRepoConfigFile(configPath)?.checks;
|
|
9
9
|
return typeof checks === 'object' && checks !== null && !Array.isArray(checks) ? checks : {};
|
|
@@ -37,13 +37,21 @@ async function propose(deps) {
|
|
|
37
37
|
}
|
|
38
38
|
return { proposal: fallback, source: 'heuristics' };
|
|
39
39
|
}
|
|
40
|
+
/** The closing line when nothing was found: what CHECK still runs, so it never claims no test command exists (#3603). */
|
|
41
|
+
async function nothingToDeclareMessage(repoRoot) {
|
|
42
|
+
const tests = await resolveTestsCommand({ worktree: repoRoot }).catch(() => null);
|
|
43
|
+
if (!tests || tests.runner === 'none') {
|
|
44
|
+
return 'No build, test or lint command found. Declare them by hand under `checks` in the repo config.';
|
|
45
|
+
}
|
|
46
|
+
return `No build, test or lint command to declare. CHECK will run \`${tests.argv.join(' ')}\` (${tests.label}) for tests; declare other commands by hand under \`checks\` in the repo config.`;
|
|
47
|
+
}
|
|
40
48
|
/** Detect, dry-run, confirm and write the repo's CHECK commands. Never throws for a failed agent or dry-run. */
|
|
41
49
|
export async function runDetectChecks(deps) {
|
|
42
50
|
const { configPath, log } = deps;
|
|
43
51
|
const { proposal, source } = await propose(deps);
|
|
44
52
|
const dryRuns = {};
|
|
45
53
|
if (Object.keys(proposal).length === 0) {
|
|
46
|
-
log(
|
|
54
|
+
log(await nothingToDeclareMessage(deps.repoRoot));
|
|
47
55
|
return { proposal, source, dryRuns, written: null };
|
|
48
56
|
}
|
|
49
57
|
const keep = {};
|
|
@@ -80,6 +88,9 @@ const DRY_RUN_TIMEOUT_MS = 15 * 60_000;
|
|
|
80
88
|
/** `factory init --detect-checks`: detect with the repo's router (missing harness CLIs skipped) into its config file. */
|
|
81
89
|
export async function detectChecksForInit(repoRoot, router, yes, tty) {
|
|
82
90
|
router.skipMissingHarnessClis(isCommandAvailable);
|
|
91
|
+
// The detect_checks call's spend goes to the cost ledger like `factory triage` (#3603).
|
|
92
|
+
const costs = getFactoryPaths(repoRoot).costs;
|
|
93
|
+
router.setCostSink((entry) => logCost(costs, { ...entry, issue: '-' }));
|
|
83
94
|
const io = detectChecksIo(repoRoot, router, tty);
|
|
84
95
|
return runDetectChecks({ ...io, configPath: getFactoryPaths(repoRoot).config, yes });
|
|
85
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-checks.js","sourceRoot":"","sources":["../../src/cli/detect-checks.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,kGAAkG;AAElG,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"detect-checks.js","sourceRoot":"","sources":["../../src/cli/detect-checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { measureGithubClockSkew } from '@on-par/factory-core/internal';
|
|
2
|
+
import type { DoctorCheck } from './doctor.js';
|
|
3
|
+
/** `{ measured: false }` (no GitHub token) yields no row; a null skew means the Date header could not be read. */
|
|
4
|
+
export declare function clockSkewCheck(skew: {
|
|
5
|
+
measured: false;
|
|
6
|
+
} | {
|
|
7
|
+
measured: true;
|
|
8
|
+
skewMs: number | null;
|
|
9
|
+
}, maxClockSkewMs: number): DoctorCheck | null;
|
|
10
|
+
/** Measures skew uncached, only when a GitHub token exists; a failed call is a null skew. */
|
|
11
|
+
export declare function measureDoctorClockSkew(rt: {
|
|
12
|
+
hasGitHubToken: () => boolean;
|
|
13
|
+
getOctokit: () => Parameters<typeof measureGithubClockSkew>[0];
|
|
14
|
+
}): Promise<{
|
|
15
|
+
measured: false;
|
|
16
|
+
} | {
|
|
17
|
+
measured: true;
|
|
18
|
+
skewMs: number | null;
|
|
19
|
+
}>;
|
|
20
|
+
//# sourceMappingURL=doctor-clock-skew.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-clock-skew.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-clock-skew.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,kHAAkH;AAClH,wBAAgB,cAAc,CAC5B,IAAI,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACrE,cAAc,EAAE,MAAM,GACrB,WAAW,GAAG,IAAI,CAwBpB;AAED,6FAA6F;AAC7F,wBAAsB,sBAAsB,CAAC,EAAE,EAAE;IAC/C,cAAc,EAAE,MAAM,OAAO,CAAC;IAC9B,UAAU,EAAE,MAAM,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;CAChE,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAG3E"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// packages/cli/src/cli/doctor-clock-skew.ts — the `clock skew` doctor row: local clock vs GitHub's Date header (#3149).
|
|
2
|
+
import { measureGithubClockSkew } from '@on-par/factory-core/internal';
|
|
3
|
+
const NAME = 'clock skew';
|
|
4
|
+
/** `{ measured: false }` (no GitHub token) yields no row; a null skew means the Date header could not be read. */
|
|
5
|
+
export function clockSkewCheck(skew, maxClockSkewMs) {
|
|
6
|
+
if (!skew.measured)
|
|
7
|
+
return null;
|
|
8
|
+
if (skew.skewMs === null) {
|
|
9
|
+
return {
|
|
10
|
+
name: NAME,
|
|
11
|
+
ok: false,
|
|
12
|
+
optional: true,
|
|
13
|
+
detail: 'could not read the GitHub Date header',
|
|
14
|
+
fix: 'check GitHub API reachability',
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
const seconds = skew.skewMs / 1000;
|
|
18
|
+
const signed = `${seconds > 0 ? '+' : ''}${seconds}`;
|
|
19
|
+
const detail = `local clock is ${signed}s vs GitHub (max ${maxClockSkewMs / 1000}s)`;
|
|
20
|
+
if (Math.abs(skew.skewMs) > maxClockSkewMs) {
|
|
21
|
+
return {
|
|
22
|
+
name: NAME,
|
|
23
|
+
ok: false,
|
|
24
|
+
optional: true,
|
|
25
|
+
detail: `${detail}; the stale-claim reaper refuses to reap`,
|
|
26
|
+
fix: 'sync this host clock with NTP (sntp/timedatectl)',
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return { name: NAME, ok: true, detail };
|
|
30
|
+
}
|
|
31
|
+
/** Measures skew uncached, only when a GitHub token exists; a failed call is a null skew. */
|
|
32
|
+
export async function measureDoctorClockSkew(rt) {
|
|
33
|
+
if (!rt.hasGitHubToken())
|
|
34
|
+
return { measured: false };
|
|
35
|
+
return { measured: true, skewMs: await measureGithubClockSkew(rt.getOctokit()).catch(() => null) };
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=doctor-clock-skew.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-clock-skew.js","sourceRoot":"","sources":["../../src/cli/doctor-clock-skew.ts"],"names":[],"mappings":"AAAA,wHAAwH;AAExH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAIvE,MAAM,IAAI,GAAG,YAAY,CAAC;AAE1B,kHAAkH;AAClH,MAAM,UAAU,cAAc,CAC5B,IAAqE,EACrE,cAAsB;IAEtB,IAAI,CAAC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO;YACL,IAAI,EAAE,IAAI;YACV,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,uCAAuC;YAC/C,GAAG,EAAE,+BAA+B;SACrC,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACnC,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IACrD,MAAM,MAAM,GAAG,kBAAkB,MAAM,oBAAoB,cAAc,GAAG,IAAI,IAAI,CAAC;IACrF,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,cAAc,EAAE,CAAC;QAC3C,OAAO;YACL,IAAI,EAAE,IAAI;YACV,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,GAAG,MAAM,0CAA0C;YAC3D,GAAG,EAAE,kDAAkD;SACxD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1C,CAAC;AAED,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAG5C;IACC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACrD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AACrG,CAAC"}
|
|
@@ -48,7 +48,7 @@ export interface ReleasedClaim {
|
|
|
48
48
|
issue: number;
|
|
49
49
|
expiresAt: number;
|
|
50
50
|
released: boolean;
|
|
51
|
-
outcome?: 'released' | 'renewed' | 'failed';
|
|
51
|
+
outcome?: 'released' | 'renewed' | 'failed' | 'refused-clock-skew';
|
|
52
52
|
detail?: string;
|
|
53
53
|
}
|
|
54
54
|
export declare function formatClaimReconcileReport(released: ReleasedClaim[]): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-health.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-health.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAAC;IACzC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAwBjE;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAWlE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI,GAAG,WAAW,CAuB9E;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,EAAE,CAU7E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,EAAE,CAU3E;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CASxE;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAStE;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7E,MAAM,CAMR;AAED;mGACmG;AACnG,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAUnF;AAED;;yCAEyC;AACzC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor-health.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-health.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAAC;IACzC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAwBjE;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAWlE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI,GAAG,WAAW,CAuB9E;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,EAAE,CAU7E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,EAAE,CAU3E;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CASxE;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAStE;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7E,MAAM,CAMR;AAED;mGACmG;AACnG,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAUnF;AAED;;yCAEyC;AACzC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,oBAAoB,CAAC;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,CAc5E;AAED;8FAC8F;AAC9F,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,0FAA0F;AAC1F,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,kBAAkB,EAAE,CAAA;CAAE,GAC5C;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAIzC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,EAAE,CAyB9E;AAED,sGAAsG;AACtG,MAAM,MAAM,uBAAuB,GAC/B;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,kBAAkB,EAAE,CAAA;CAAE,GAC9C;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAIzC,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,uBAAuB,GAAG,WAAW,EAAE,CAgCvF"}
|
|
@@ -121,11 +121,13 @@ export function formatClaimReconcileReport(released) {
|
|
|
121
121
|
if (released.length === 0)
|
|
122
122
|
return 'reconcile: no stale claims';
|
|
123
123
|
return released
|
|
124
|
-
.map((c) => c.outcome === '
|
|
125
|
-
? `reconcile:
|
|
126
|
-
: c.
|
|
127
|
-
? `reconcile:
|
|
128
|
-
:
|
|
124
|
+
.map((c) => c.outcome === 'refused-clock-skew'
|
|
125
|
+
? `reconcile: refused to release issue #${c.issue} (lease expired at ${c.expiresAt}): ${c.detail ?? 'local clock is skewed from GitHub'}`
|
|
126
|
+
: c.outcome === 'renewed'
|
|
127
|
+
? `reconcile: skipped issue #${c.issue}: lease renewed since the stale read (was expired at ${c.expiresAt})`
|
|
128
|
+
: c.released
|
|
129
|
+
? `reconcile: released issue #${c.issue} back to factory:queued (lease expired at ${c.expiresAt})`
|
|
130
|
+
: `reconcile: failed to release issue #${c.issue} (lease expired at ${c.expiresAt}): ${c.detail ?? 'unknown error'}`)
|
|
129
131
|
.join('\n');
|
|
130
132
|
}
|
|
131
133
|
const GREEN_PR_CHECK = 'green PRs awaiting merge';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-health.js","sourceRoot":"","sources":["../../src/cli/doctor-health.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"doctor-health.js","sourceRoot":"","sources":["../../src/cli/doctor-health.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,6 @@ import type { Octokit } from '@octokit/rest';
|
|
|
2
2
|
import type { CliDeps } from './index.js';
|
|
3
3
|
type QueueOps = Required<Pick<CliDeps, 'releaseStaleClaims' | 'pollBlockedParks'>>;
|
|
4
4
|
/** Never throws: each step prints its own failure line. */
|
|
5
|
-
export declare function reconcileQueue(ops: QueueOps, ghRepo: string | undefined, octokit: Octokit | undefined, eventsFile: string): Promise<void>;
|
|
5
|
+
export declare function reconcileQueue(ops: QueueOps, ghRepo: string | undefined, octokit: Octokit | undefined, eventsFile: string, maxClockSkewMs?: number): Promise<void>;
|
|
6
6
|
export {};
|
|
7
7
|
//# sourceMappingURL=doctor-queue-reconcile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-queue-reconcile.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-queue-reconcile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAK7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,KAAK,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,GAAG,kBAAkB,CAAC,CAAC,CAAC;AAInF,2DAA2D;AAC3D,wBAAsB,cAAc,CAClC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"doctor-queue-reconcile.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-queue-reconcile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAK7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,KAAK,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,GAAG,kBAAkB,CAAC,CAAC,CAAC;AAInF,2DAA2D;AAC3D,wBAAsB,cAAc,CAClC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CAgDf"}
|
|
@@ -4,13 +4,18 @@ import { createOctokitBlockedParkStore, createOctokitQueueClient } from '@on-par
|
|
|
4
4
|
import { formatClaimReconcileReport } from './doctor-health.js';
|
|
5
5
|
const errMessage = (err) => err?.message ?? String(err);
|
|
6
6
|
/** Never throws: each step prints its own failure line. */
|
|
7
|
-
export async function reconcileQueue(ops, ghRepo, octokit, eventsFile) {
|
|
7
|
+
export async function reconcileQueue(ops, ghRepo, octokit, eventsFile, maxClockSkewMs) {
|
|
8
8
|
const [owner, repo] = ghRepo?.split('/') ?? [];
|
|
9
9
|
// Stale claim reap (#999): factory:in-progress claims naming a dead local pid go back to
|
|
10
10
|
// factory:queued so the next run can claim them with no manual label surgery.
|
|
11
11
|
try {
|
|
12
12
|
if (ghRepo && octokit) {
|
|
13
|
-
const released = await ops.releaseStaleClaims({
|
|
13
|
+
const released = await ops.releaseStaleClaims({
|
|
14
|
+
client: createOctokitQueueClient(octokit),
|
|
15
|
+
owner,
|
|
16
|
+
repo,
|
|
17
|
+
maxClockSkewMs,
|
|
18
|
+
});
|
|
14
19
|
console.log(formatClaimReconcileReport(released));
|
|
15
20
|
}
|
|
16
21
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-queue-reconcile.js","sourceRoot":"","sources":["../../src/cli/doctor-queue-reconcile.ts"],"names":[],"mappings":"AAAA,mIAAmI;AAGnI,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAExG,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAKhE,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAU,EAAE,CAAC,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AAErE,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAa,EACb,MAA0B,EAC1B,OAA4B,EAC5B,UAAkB;
|
|
1
|
+
{"version":3,"file":"doctor-queue-reconcile.js","sourceRoot":"","sources":["../../src/cli/doctor-queue-reconcile.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export interface VerifyCommandRow {
|
|
|
5
5
|
kind: VerifyKind;
|
|
6
6
|
/** The command CHECK runs, space-joined argv; null when none resolves. */
|
|
7
7
|
command: string | null;
|
|
8
|
-
/** Where it came from:
|
|
8
|
+
/** Where it came from: the repo config file (`checks`), scripts/verify.sh, scripts/verify.ps1, package.json, pytest, Makefile, Cargo.toml, tsconfig.json; null when none. */
|
|
9
9
|
source: string | null;
|
|
10
10
|
/** argv[0]; null when there is no command. */
|
|
11
11
|
executable: string | null;
|
|
@@ -17,6 +17,8 @@ export interface ResolvedVerifyCommands {
|
|
|
17
17
|
error?: string;
|
|
18
18
|
/** The config file probed for `checks`, named in the missing-command rows (#3600). */
|
|
19
19
|
checksProbe?: string;
|
|
20
|
+
/** The repo config file name shown in fix hints, e.g. `.factory/config.yaml` (#3604). */
|
|
21
|
+
configFile?: string;
|
|
20
22
|
}
|
|
21
23
|
/** Asks the CHECK resolvers what CHECK will run, so doctor cannot drift from CHECK. A resolver
|
|
22
24
|
* 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":"AAaA,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;CACrB;AAiBD;2FAC2F;AAC3F,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAwB7F;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,CA6Bf;AAED,wGAAwG;AACxG,wBAAgB,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,GAAG,WAAW,CAYjF"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
// packages/cli/src/cli/doctor-verify.ts — `factory doctor` Verify section: the build/test/lint commands CHECK will run (#3473)
|
|
2
|
+
import { basename } from 'node:path';
|
|
3
|
+
import { getFactoryPaths } from '@on-par/factory-core';
|
|
2
4
|
import { describeChecksProbe, resolveCompileCommand, resolveLintCommands, resolveTestsCommand, } from '@on-par/factory-core/internal';
|
|
3
5
|
import { MIN_NODE_MAJOR } from '../node-version.js';
|
|
4
6
|
export const VERIFY_SECTION = 'Verify';
|
|
@@ -18,6 +20,7 @@ const emptyRow = (kind) => ({ kind, command: null, source: null, executable: nul
|
|
|
18
20
|
export async function resolveVerifyCommands(repoRoot) {
|
|
19
21
|
const src = { worktree: repoRoot };
|
|
20
22
|
const checksProbe = describeChecksProbe(src, 'source checkout');
|
|
23
|
+
const configFile = `.factory/${basename(getFactoryPaths(repoRoot).config)}`;
|
|
21
24
|
try {
|
|
22
25
|
const build = await resolveCompileCommand(src);
|
|
23
26
|
const tests = await resolveTestsCommand(src);
|
|
@@ -33,19 +36,21 @@ export async function resolveVerifyCommands(repoRoot) {
|
|
|
33
36
|
: [emptyRow('lint')]),
|
|
34
37
|
],
|
|
35
38
|
checksProbe,
|
|
39
|
+
configFile,
|
|
36
40
|
};
|
|
37
41
|
}
|
|
38
42
|
catch (err) {
|
|
39
|
-
return { rows: [], error: err instanceof Error ? err.message : String(err) };
|
|
43
|
+
return { rows: [], error: err instanceof Error ? err.message : String(err), checksProbe, configFile };
|
|
40
44
|
}
|
|
41
45
|
}
|
|
42
46
|
/** Rows with `onPath` filled from the host's PATH, for `factory doctor --json`. */
|
|
43
47
|
export function withPathResults(rows, commandAvailable) {
|
|
44
48
|
return rows.map((r) => ({ ...r, onPath: r.executable === null ? null : commandAvailable(r.executable) }));
|
|
45
49
|
}
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
|
|
50
|
+
const noTestsFix = (configFile) => `run \`factory init --detect-checks\` to find and declare your test command under \`checks\` in ${configFile} (or add scripts/verify.sh, scripts/verify.ps1, or a package.json "test" script)`;
|
|
51
|
+
const DEFAULT_CONFIG_FILE = '.factory/config.yaml|yml|json';
|
|
52
|
+
const DEFAULT_CHECKS_PROBE = DEFAULT_CONFIG_FILE;
|
|
53
|
+
function missingRow(row, requireTests, probe = DEFAULT_CHECKS_PROBE, configFile = DEFAULT_CONFIG_FILE) {
|
|
49
54
|
const section = VERIFY_SECTION;
|
|
50
55
|
const noTestsDetail = `no checks.test in ${probe}, scripts/verify.sh, scripts/verify.ps1, package.json test script or pytest surface`;
|
|
51
56
|
if (row.kind === 'test') {
|
|
@@ -55,7 +60,7 @@ function missingRow(row, requireTests, probe = DEFAULT_CHECKS_PROBE) {
|
|
|
55
60
|
section,
|
|
56
61
|
ok: false,
|
|
57
62
|
detail: `CHECK will run no tests, but the constitution sets requireTests: true; ${noTestsDetail}`,
|
|
58
|
-
fix:
|
|
63
|
+
fix: noTestsFix(configFile),
|
|
59
64
|
}
|
|
60
65
|
: {
|
|
61
66
|
name: 'verify test',
|
|
@@ -63,7 +68,7 @@ function missingRow(row, requireTests, probe = DEFAULT_CHECKS_PROBE) {
|
|
|
63
68
|
ok: false,
|
|
64
69
|
optional: true,
|
|
65
70
|
detail: `CHECK will run no tests; ${noTestsDetail}`,
|
|
66
|
-
fix:
|
|
71
|
+
fix: noTestsFix(configFile),
|
|
67
72
|
};
|
|
68
73
|
}
|
|
69
74
|
if (row.kind === 'build') {
|
|
@@ -95,14 +100,14 @@ export function verifyCommandChecks(resolved, opts) {
|
|
|
95
100
|
section,
|
|
96
101
|
ok: false,
|
|
97
102
|
detail: `cannot resolve CHECK commands: ${resolved.error}`,
|
|
98
|
-
fix:
|
|
103
|
+
fix: `fix package.json and ${resolved.configFile ?? DEFAULT_CONFIG_FILE} so they parse`,
|
|
99
104
|
},
|
|
100
105
|
];
|
|
101
106
|
}
|
|
102
107
|
return resolved.rows.map((row) => {
|
|
103
108
|
const { command, source, executable } = row;
|
|
104
109
|
if (command === null || executable === null)
|
|
105
|
-
return missingRow(row, opts.requireTests, resolved.checksProbe);
|
|
110
|
+
return missingRow(row, opts.requireTests, resolved.checksProbe, resolved.configFile);
|
|
106
111
|
const name = row.kind === 'lint' ? `verify lint (${source})` : `verify ${row.kind}`;
|
|
107
112
|
if (opts.commandAvailable(executable)) {
|
|
108
113
|
return { name, section, ok: true, detail: `\`${command}\` (from ${source}); ${executable} found on PATH` };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-verify.js","sourceRoot":"","sources":["../../src/cli/doctor-verify.ts"],"names":[],"mappings":"AAAA,+HAA+H;AAE/H,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor-verify.js","sourceRoot":"","sources":["../../src/cli/doctor-verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Octokit } from '@octokit/rest';
|
|
2
|
+
import type { FactoryConfig, getFactoryPaths } from '@on-par/factory-core';
|
|
3
|
+
import type { DoctorRuntime } from './doctor.js';
|
|
4
|
+
/** Never throws: a failed sweep prints its own failure line. */
|
|
5
|
+
export declare function reconcileWorktrees(rt: Pick<DoctorRuntime, 'gcWorktreeSandbox'> & {
|
|
6
|
+
internalOps: Pick<DoctorRuntime['internalOps'], 'sweepWorktrees'>;
|
|
7
|
+
}, repoRoot: string, paths: ReturnType<typeof getFactoryPaths>, factoryConfig: FactoryConfig, ghRepo: string | undefined, octokit: Octokit | undefined): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=doctor-worktree-reconcile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-worktree-reconcile.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-worktree-reconcile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAa,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAItF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,gEAAgE;AAChE,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,GAAG;IAAE,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC,CAAA;CAAE,EACpH,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EACzC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,OAAO,GAAG,SAAS,GAC3B,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// packages/cli/src/cli/doctor-worktree-reconcile.ts — `doctor --reconcile` worktree sweep (#998)
|
|
2
|
+
import { logEvent, resolveBranchPrefix, withFileLock, withGitLock } from '@on-par/factory-core/internal';
|
|
3
|
+
import { formatWorktreeReconcileReport } from './doctor-health.js';
|
|
4
|
+
/** Never throws: a failed sweep prints its own failure line. */
|
|
5
|
+
export async function reconcileWorktrees(rt, repoRoot, paths, factoryConfig, ghRepo, octokit) {
|
|
6
|
+
try {
|
|
7
|
+
const gcLog = (type, msg) => logEvent(paths.events, type, '-', msg);
|
|
8
|
+
const gcSandbox = rt.gcWorktreeSandbox(factoryConfig.sandbox, repoRoot);
|
|
9
|
+
const report = await withGitLock(repoRoot, () => withFileLock(paths.gitLock, () => rt.internalOps.sweepWorktrees({
|
|
10
|
+
repoRoot,
|
|
11
|
+
ttlDays: factoryConfig.worktree.gcTtlDays,
|
|
12
|
+
repo: ghRepo,
|
|
13
|
+
branchPrefix: resolveBranchPrefix(),
|
|
14
|
+
}, { log: gcLog, octokit, sandbox: gcSandbox })));
|
|
15
|
+
console.log(formatWorktreeReconcileReport(report.removed));
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
console.log(`reconcile: worktree sweep failed: ${err?.message ?? String(err)}`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=doctor-worktree-reconcile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-worktree-reconcile.js","sourceRoot":"","sources":["../../src/cli/doctor-worktree-reconcile.ts"],"names":[],"mappings":"AAAA,iGAAiG;AAIjG,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEzG,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAGnE,gEAAgE;AAChE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAAoH,EACpH,QAAgB,EAChB,KAAyC,EACzC,aAA4B,EAC5B,MAA0B,EAC1B,OAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,IAAe,EAAE,GAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACvF,MAAM,SAAS,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,CAC9C,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,CAC/B,EAAE,CAAC,WAAW,CAAC,cAAc,CAC3B;YACE,QAAQ;YACR,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,SAAS;YACzC,IAAI,EAAE,MAAM;YACZ,YAAY,EAAE,mBAAmB,EAAE;SACpC,EACD,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAC5C,CACF,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,qCAAqC,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;AACH,CAAC"}
|
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,
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|