@on-par/factory-cli 0.9.18-next.13 → 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.
- 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-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/package.json +4 -4
|
@@ -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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"}
|
|
@@ -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
|
},
|