@on-par/factory-cli 0.9.18-next.14 → 0.9.18-next.15
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.
|
@@ -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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@on-par/factory-cli",
|
|
3
|
-
"version": "0.9.18-next.
|
|
3
|
+
"version": "0.9.18-next.15",
|
|
4
4
|
"description": "On PAR Dev's Software Factory CLI: takes a GitHub issue through plan, build and check with AI agents, then opens a ready-for-review PR.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-agents",
|
|
@@ -48,9 +48,9 @@
|
|
|
48
48
|
"@octokit/plugin-retry": "^8.1.1",
|
|
49
49
|
"@octokit/plugin-throttling": "^11.0.5",
|
|
50
50
|
"@octokit/rest": "^22.0.0",
|
|
51
|
-
"@on-par/factory-config": "0.9.18-next.
|
|
52
|
-
"@on-par/factory-core": "0.9.18-next.
|
|
53
|
-
"@on-par/factory-tui": "0.9.18-next.
|
|
51
|
+
"@on-par/factory-config": "0.9.18-next.15",
|
|
52
|
+
"@on-par/factory-core": "0.9.18-next.15",
|
|
53
|
+
"@on-par/factory-tui": "0.9.18-next.15",
|
|
54
54
|
"commander": "^15.0.0",
|
|
55
55
|
"zod": "^4.6.5"
|
|
56
56
|
},
|