@nodetool-ai/cli 0.8.1 → 0.8.2
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 +4 -1
- package/dist/.nodetool-build-stamp +1 -1
- package/dist/affected/affected.d.ts +7 -12
- package/dist/affected/affected.d.ts.map +1 -1
- package/dist/affected/affected.js +42 -0
- package/dist/affected/affected.js.map +1 -1
- package/dist/app-debug/app-target.d.ts +1 -1
- package/dist/app-debug/app-target.d.ts.map +1 -1
- package/dist/app-debug/harness.d.ts +3 -1
- package/dist/app-debug/harness.d.ts.map +1 -1
- package/dist/app-debug/harness.js +23 -0
- package/dist/app-debug/harness.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +2 -1
- package/dist/app.js.map +1 -1
- package/dist/chat-codeact.d.ts +8 -0
- package/dist/chat-codeact.d.ts.map +1 -1
- package/dist/chat-codeact.js +59 -21
- package/dist/chat-codeact.js.map +1 -1
- package/dist/chat-context.d.ts.map +1 -1
- package/dist/chat-context.js +7 -2
- package/dist/chat-context.js.map +1 -1
- package/dist/commands/__tests__/timeline-render-audio.test.js +1 -1
- package/dist/commands/__tests__/timeline-render-audio.test.js.map +1 -1
- package/dist/commands/__tests__/timeline-render-completeness.test.d.ts +2 -0
- package/dist/commands/__tests__/timeline-render-completeness.test.d.ts.map +1 -0
- package/dist/commands/__tests__/timeline-render-completeness.test.js +117 -0
- package/dist/commands/__tests__/timeline-render-completeness.test.js.map +1 -0
- package/dist/commands/__tests__/timeline-score.test.d.ts +2 -0
- package/dist/commands/__tests__/timeline-score.test.d.ts.map +1 -0
- package/dist/commands/__tests__/timeline-score.test.js +100 -0
- package/dist/commands/__tests__/timeline-score.test.js.map +1 -0
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +2 -1
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +29 -5
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/debug-summary-output.d.ts +22 -0
- package/dist/commands/debug-summary-output.d.ts.map +1 -0
- package/dist/commands/debug-summary-output.js +28 -0
- package/dist/commands/debug-summary-output.js.map +1 -0
- package/dist/commands/errors.d.ts +11 -0
- package/dist/commands/errors.d.ts.map +1 -0
- package/dist/commands/errors.js +177 -0
- package/dist/commands/errors.js.map +1 -0
- package/dist/commands/eval.d.ts.map +1 -1
- package/dist/commands/eval.js +2 -0
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/extension.d.ts +12 -0
- package/dist/commands/extension.d.ts.map +1 -0
- package/dist/commands/extension.js +30 -0
- package/dist/commands/extension.js.map +1 -0
- package/dist/commands/game-benchmark.d.ts +34 -0
- package/dist/commands/game-benchmark.d.ts.map +1 -0
- package/dist/commands/game-benchmark.js +95 -0
- package/dist/commands/game-benchmark.js.map +1 -0
- package/dist/commands/game-smoke.d.ts +3 -0
- package/dist/commands/game-smoke.d.ts.map +1 -0
- package/dist/commands/game-smoke.js +23 -0
- package/dist/commands/game-smoke.js.map +1 -0
- package/dist/commands/game.d.ts.map +1 -1
- package/dist/commands/game.js +247 -18
- package/dist/commands/game.js.map +1 -1
- package/dist/commands/harness.d.ts +50 -0
- package/dist/commands/harness.d.ts.map +1 -1
- package/dist/commands/harness.js +284 -70
- package/dist/commands/harness.js.map +1 -1
- package/dist/commands/js-script.d.ts.map +1 -1
- package/dist/commands/js-script.js +6 -22
- package/dist/commands/js-script.js.map +1 -1
- package/dist/commands/mcp.d.ts +21 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +164 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/package.d.ts.map +1 -1
- package/dist/commands/package.js +12 -12
- package/dist/commands/package.js.map +1 -1
- package/dist/commands/runs.d.ts +7 -0
- package/dist/commands/runs.d.ts.map +1 -0
- package/dist/commands/runs.js +302 -0
- package/dist/commands/runs.js.map +1 -0
- package/dist/commands/sketch.d.ts.map +1 -1
- package/dist/commands/sketch.js +6 -22
- package/dist/commands/sketch.js.map +1 -1
- package/dist/commands/timeline-render.d.ts +6 -1
- package/dist/commands/timeline-render.d.ts.map +1 -1
- package/dist/commands/timeline-render.js +13 -4
- package/dist/commands/timeline-render.js.map +1 -1
- package/dist/commands/timeline-score.d.ts +16 -0
- package/dist/commands/timeline-score.d.ts.map +1 -0
- package/dist/commands/timeline-score.js +89 -0
- package/dist/commands/timeline-score.js.map +1 -0
- package/dist/commands/timeline.d.ts.map +1 -1
- package/dist/commands/timeline.js +8 -22
- package/dist/commands/timeline.js.map +1 -1
- package/dist/commands/worker.js +1 -1
- package/dist/commands/worker.js.map +1 -1
- package/dist/debug/server-runner.d.ts +2 -0
- package/dist/debug/server-runner.d.ts.map +1 -1
- package/dist/debug/server-runner.js +37 -4
- package/dist/debug/server-runner.js.map +1 -1
- package/dist/harness/capability-table.d.ts.map +1 -1
- package/dist/harness/capability-table.js +295 -27
- package/dist/harness/capability-table.js.map +1 -1
- package/dist/harness/changed-files.d.ts +2 -0
- package/dist/harness/changed-files.d.ts.map +1 -1
- package/dist/harness/changed-files.js +14 -0
- package/dist/harness/changed-files.js.map +1 -1
- package/dist/harness/registry.d.ts +32 -4
- package/dist/harness/registry.d.ts.map +1 -1
- package/dist/harness/registry.js +327 -31
- package/dist/harness/registry.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interaction-script.d.ts +23 -0
- package/dist/interaction-script.d.ts.map +1 -1
- package/dist/interaction-script.js +50 -1
- package/dist/interaction-script.js.map +1 -1
- package/dist/js-script-debug/harness.d.ts +11 -1
- package/dist/js-script-debug/harness.d.ts.map +1 -1
- package/dist/js-script-debug/harness.js +17 -39
- package/dist/js-script-debug/harness.js.map +1 -1
- package/dist/local-model-interfaces.d.ts.map +1 -1
- package/dist/local-model-interfaces.js +1 -24
- package/dist/local-model-interfaces.js.map +1 -1
- package/dist/node-registry.d.ts +14 -0
- package/dist/node-registry.d.ts.map +1 -1
- package/dist/node-registry.js +15 -18
- package/dist/node-registry.js.map +1 -1
- package/dist/nodetool-main.d.ts +15 -0
- package/dist/nodetool-main.d.ts.map +1 -0
- package/dist/nodetool-main.js +1368 -0
- package/dist/nodetool-main.js.map +1 -0
- package/dist/nodetool.d.ts +0 -13
- package/dist/nodetool.d.ts.map +1 -1
- package/dist/nodetool.js +17 -1683
- package/dist/nodetool.js.map +1 -1
- package/dist/providers.d.ts +1 -1
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +11 -1
- package/dist/providers.js.map +1 -1
- package/dist/run-dsl.d.ts +6 -0
- package/dist/run-dsl.d.ts.map +1 -1
- package/dist/run-dsl.js +4 -1
- package/dist/run-dsl.js.map +1 -1
- package/dist/sandbox-catalog.d.ts +12 -0
- package/dist/sandbox-catalog.d.ts.map +1 -1
- package/dist/sandbox-catalog.js +51 -0
- package/dist/sandbox-catalog.js.map +1 -1
- package/dist/sketch-debug/harness.d.ts.map +1 -1
- package/dist/sketch-debug/harness.js +2 -35
- package/dist/sketch-debug/harness.js.map +1 -1
- package/dist/stdin.d.ts.map +1 -1
- package/dist/stdin.js +2 -1
- package/dist/stdin.js.map +1 -1
- package/dist/timeline-debug/harness.d.ts.map +1 -1
- package/dist/timeline-debug/harness.js +2 -35
- package/dist/timeline-debug/harness.js.map +1 -1
- package/package.json +38 -35
|
@@ -13,7 +13,57 @@
|
|
|
13
13
|
* `--timeout <seconds>` bounds each selfcheck (default 900s, fails closed on
|
|
14
14
|
* timeout); a code file no surface claims fails the gate outright, and
|
|
15
15
|
* `--strict` also fails on a touched surface only a gap note covers.
|
|
16
|
+
* Selfchecks that only re-run workspace test suites `npm run test:affected`
|
|
17
|
+
* already runs (`suiteOnly`) are skipped unless `--include-suites`.
|
|
18
|
+
* `--jobs <n>` runs the cheap selfchecks n at a time, each one's output
|
|
19
|
+
* buffered and printed as one block; expensive selfchecks stay serial.
|
|
20
|
+
*
|
|
21
|
+
* Every import of a built workspace package in this file is lazy, so the
|
|
22
|
+
* planning commands (`list`, `audit`, `gate --dry-run`) work on a tree whose
|
|
23
|
+
* `dist/` is not built (see ../nodetool.ts).
|
|
16
24
|
*/
|
|
17
25
|
import type { Command } from "commander";
|
|
26
|
+
import { type GateCheck, type GatePlan } from "../harness/registry.js";
|
|
18
27
|
export declare function registerHarnessCommands(program: Command): void;
|
|
28
|
+
/**
|
|
29
|
+
* Split a plan's checks into what runs now and what is deliberately left out.
|
|
30
|
+
* A suite-only check is skipped (and named) rather than silently dropped:
|
|
31
|
+
* `npm run test:affected` runs the same suites for the same diff, so running
|
|
32
|
+
* them here again is pure repetition unless `--include-suites` asks for it.
|
|
33
|
+
*/
|
|
34
|
+
export declare function selectChecks(checks: readonly GateCheck[], opts: {
|
|
35
|
+
expensive?: boolean;
|
|
36
|
+
includeSuites?: boolean;
|
|
37
|
+
}): {
|
|
38
|
+
toRun: GateCheck[];
|
|
39
|
+
skippedExpensive: GateCheck[];
|
|
40
|
+
skippedSuites: GateCheck[];
|
|
41
|
+
};
|
|
42
|
+
export interface GateCheckResult {
|
|
43
|
+
harnessId: string;
|
|
44
|
+
command: string;
|
|
45
|
+
ok: boolean;
|
|
46
|
+
exitCode: number;
|
|
47
|
+
timedOut: boolean;
|
|
48
|
+
/** Killed by a signal or a spawn error that is not the timeout. */
|
|
49
|
+
killed: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface ExecuteChecksOptions {
|
|
52
|
+
repoRoot: string;
|
|
53
|
+
json: boolean;
|
|
54
|
+
timeoutMs: number;
|
|
55
|
+
timeoutSeconds: number;
|
|
56
|
+
jobs: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Run the selected selfchecks and return their results in plan order.
|
|
60
|
+
*
|
|
61
|
+
* With `jobs` of 1 every check runs serially in plan order with live output.
|
|
62
|
+
* With more, the cheap checks run `jobs` at a time with buffered output
|
|
63
|
+
* printed per check as a block, then the expensive ones run serially: they
|
|
64
|
+
* stage bundles and bind ports, so they cannot share a machine with each other
|
|
65
|
+
* or with the cheap pool.
|
|
66
|
+
*/
|
|
67
|
+
export declare function executeChecks(checks: readonly GateCheck[], o: ExecuteChecksOptions): Promise<GateCheckResult[]>;
|
|
68
|
+
export declare function printGatePlan(plan: GatePlan, runCount: number, skippedExpensive: number, skippedSuites: readonly GateCheck[], all?: boolean): void;
|
|
19
69
|
//# sourceMappingURL=harness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/commands/harness.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/commands/harness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAML,KAAK,SAAS,EACd,KAAK,QAAQ,EACd,MAAM,wBAAwB,CAAC;AA+BhC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwW9D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACrD;IACD,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAC9B,aAAa,EAAE,SAAS,EAAE,CAAC;CAC5B,CAQA;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AA0KD;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,CAAC,EAAE,oBAAoB,GACtB,OAAO,CAAC,eAAe,EAAE,CAAC,CAgD5B;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,SAAS,SAAS,EAAE,EACnC,GAAG,CAAC,EAAE,OAAO,GACZ,IAAI,CA8DN"}
|
package/dist/commands/harness.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HARNESSES, SURFACES, auditHarnessCoverage, isUnclaimedPath, planGate } from "../harness/registry.js";
|
|
2
|
+
import { readWorkspacePackages } from "../affected/affected.js";
|
|
2
3
|
import { auditCapabilityCoverage, planCapabilityMappingGate, resolveGateBaseRef } from "../harness/capability-coverage.js";
|
|
3
4
|
import { CAPABILITY_COVERAGE } from "../harness/capability-table.js";
|
|
4
|
-
import { declaredCapabilities } from "../harness/declared-capabilities.js";
|
|
5
5
|
import { readChangedFiles, isGateRelevantCodeFile } from "../harness/changed-files.js";
|
|
6
6
|
/** Sentinel exit code for a selfcheck the gate had to kill on timeout. */
|
|
7
7
|
const TIMEOUT_EXIT_CODE = 124;
|
|
@@ -90,7 +90,9 @@ export function registerHarnessCommands(program) {
|
|
|
90
90
|
.description("Audit capability coverage: every capability needs a suite, an eval case, or a gap note")
|
|
91
91
|
.option("--json", "Print the audit result as JSON")
|
|
92
92
|
.option("--strict", "Exit non-zero while any capability gap remains")
|
|
93
|
-
.action((opts) => {
|
|
93
|
+
.action(async (opts) => {
|
|
94
|
+
// Lazy: declared-capabilities imports the built agents package.
|
|
95
|
+
const { declaredCapabilities } = await import("../harness/declared-capabilities.js");
|
|
94
96
|
const result = auditCapabilityCoverage(declaredCapabilities(), CAPABILITY_COVERAGE, HARNESSES);
|
|
95
97
|
if (opts.json) {
|
|
96
98
|
console.log(JSON.stringify(result, null, 2));
|
|
@@ -141,12 +143,14 @@ export function registerHarnessCommands(program) {
|
|
|
141
143
|
.option("--base <ref>", "Diff against a git ref (e.g. main) instead of the working tree")
|
|
142
144
|
.option("--all", "Ignore the diff and run every selfcheck")
|
|
143
145
|
.option("--expensive", "Include expensive selfchecks (bundle staging etc.)")
|
|
146
|
+
.option("--include-suites", "Also run selfchecks that only re-run suites `npm run test:affected` runs")
|
|
147
|
+
.option("--deps", "Also touch surfaces inside workspaces that depend on a changed one")
|
|
144
148
|
.option("--dry-run", "Print the plan without running anything")
|
|
145
149
|
.option("--json", "Print the plan (and results, unless --dry-run) as JSON")
|
|
146
150
|
.option("--strict", "Exit non-zero when the diff touches a surface only a gap note covers")
|
|
147
151
|
.option("--timeout <seconds>", "Kill a selfcheck that runs longer than this many seconds (default 900)", "900")
|
|
152
|
+
.option("--jobs <n>", "Run up to n cheap selfchecks at once (default 1, serial)", "1")
|
|
148
153
|
.action(async (files, opts) => {
|
|
149
|
-
const { spawnSync } = await import("node:child_process");
|
|
150
154
|
const { fileURLToPath } = await import("node:url");
|
|
151
155
|
const { dirname, resolve } = await import("node:path");
|
|
152
156
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
@@ -156,6 +160,10 @@ export function registerHarnessCommands(program) {
|
|
|
156
160
|
const timeoutMs = Number.isFinite(timeoutSeconds) && timeoutSeconds > 0
|
|
157
161
|
? timeoutSeconds * 1000
|
|
158
162
|
: 900_000;
|
|
163
|
+
const jobsRequested = Number(opts.jobs ?? "1");
|
|
164
|
+
const jobs = Number.isInteger(jobsRequested) && jobsRequested > 0
|
|
165
|
+
? jobsRequested
|
|
166
|
+
: 1;
|
|
159
167
|
let changedFiles = files;
|
|
160
168
|
if (changedFiles.length === 0 && !opts.all) {
|
|
161
169
|
changedFiles = readChangedFiles(repoRoot, opts.base);
|
|
@@ -171,20 +179,21 @@ export function registerHarnessCommands(program) {
|
|
|
171
179
|
const plan = opts.all
|
|
172
180
|
? {
|
|
173
181
|
changedFiles: [],
|
|
182
|
+
globalFiles: [],
|
|
174
183
|
surfaces: [],
|
|
175
184
|
checks: HARNESSES.filter((h) => h.selfcheck).map((h) => ({
|
|
176
185
|
harnessId: h.id,
|
|
177
186
|
command: h.selfcheck.command,
|
|
178
187
|
cost: h.selfcheck.cost,
|
|
188
|
+
suiteOnly: h.selfcheck.suiteOnly ?? false,
|
|
179
189
|
surfaces: []
|
|
180
190
|
})),
|
|
181
191
|
manual: [],
|
|
182
192
|
uncoveredSurfaces: [],
|
|
183
193
|
unmappedFiles: []
|
|
184
194
|
}
|
|
185
|
-
: planGate(changedFiles);
|
|
186
|
-
const toRun = plan.checks
|
|
187
|
-
const skippedExpensive = plan.checks.filter((c) => !opts.expensive && c.cost === "expensive");
|
|
195
|
+
: planGate(changedFiles, undefined, undefined, opts.deps ? readWorkspacePackages(repoRoot) : undefined);
|
|
196
|
+
const { toRun, skippedExpensive, skippedSuites } = selectChecks(plan.checks, { expensive: opts.expensive, includeSuites: opts.includeSuites });
|
|
188
197
|
// A directory recorded in UNCLAIMED_PATHS has already been judged: no
|
|
189
198
|
// harness reaches it, and the entry says why. `auditPathClaims` honors
|
|
190
199
|
// that; the gate did not, so the first diff to touch such a directory
|
|
@@ -193,16 +202,22 @@ export function registerHarnessCommands(program) {
|
|
|
193
202
|
.filter(isGateRelevantCodeFile)
|
|
194
203
|
.filter((f) => !isUnclaimedPath(f));
|
|
195
204
|
if (!opts.json) {
|
|
196
|
-
printGatePlan(plan, toRun.length, skippedExpensive.length, opts.all);
|
|
205
|
+
printGatePlan(plan, toRun.length, skippedExpensive.length, skippedSuites, opts.all);
|
|
197
206
|
if (unmappedCodeFiles.length > 0) {
|
|
198
207
|
console.log("\nCode files no surface claims (the gate fails on these):");
|
|
199
208
|
for (const f of unmappedCodeFiles)
|
|
200
209
|
console.log(` ${f}`);
|
|
201
210
|
}
|
|
202
211
|
}
|
|
212
|
+
const skippedSuiteIds = skippedSuites.map((c) => c.harnessId);
|
|
203
213
|
if (opts.dryRun) {
|
|
204
214
|
if (opts.json) {
|
|
205
|
-
console.log(JSON.stringify({
|
|
215
|
+
console.log(JSON.stringify({
|
|
216
|
+
plan,
|
|
217
|
+
skippedSuites: skippedSuiteIds,
|
|
218
|
+
mappingViolations,
|
|
219
|
+
unmappedCodeFiles
|
|
220
|
+
}, null, 2));
|
|
206
221
|
}
|
|
207
222
|
if (mappingViolations.length > 0 ||
|
|
208
223
|
unmappedCodeFiles.length > 0 ||
|
|
@@ -211,66 +226,22 @@ export function registerHarnessCommands(program) {
|
|
|
211
226
|
}
|
|
212
227
|
return;
|
|
213
228
|
}
|
|
214
|
-
const results =
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
// `npm run dev:nodetool`), or dist-mode scripts like
|
|
222
|
-
// reliability:ring0 resolve packages to src/ and fail.
|
|
223
|
-
const nodeOptions = (process.env["NODE_OPTIONS"] ?? "")
|
|
224
|
-
.replace(/--conditions[= ]nodetool-dev/g, "")
|
|
225
|
-
.trim();
|
|
226
|
-
const r = spawnSync(check.command, {
|
|
227
|
-
cwd: repoRoot,
|
|
228
|
-
shell: true,
|
|
229
|
-
stdio: opts.json ? "pipe" : "inherit",
|
|
230
|
-
encoding: "utf8",
|
|
231
|
-
timeout: timeoutMs,
|
|
232
|
-
maxBuffer: SELFCHECK_MAX_BUFFER,
|
|
233
|
-
killSignal: "SIGKILL",
|
|
234
|
-
env: {
|
|
235
|
-
...process.env,
|
|
236
|
-
...(nodeOptions
|
|
237
|
-
? { NODE_OPTIONS: nodeOptions }
|
|
238
|
-
: { NODE_OPTIONS: "" })
|
|
239
|
-
}
|
|
240
|
-
});
|
|
241
|
-
// spawnSync fails closed on a kill: a timeout or any other signal
|
|
242
|
-
// leaves `status` null, which must count as a failure, never as
|
|
243
|
-
// the "no exit code, assume ok" case. Only ETIMEDOUT is reported as
|
|
244
|
-
// a timeout, though — every other signal used to be too, and a check
|
|
245
|
-
// killed for some other reason then claimed to have run for the full
|
|
246
|
-
// `--timeout` when it had run for three minutes.
|
|
247
|
-
const errorCode = r.error
|
|
248
|
-
?.code;
|
|
249
|
-
const timedOut = errorCode === "ETIMEDOUT";
|
|
250
|
-
const killed = r.signal != null || r.error !== undefined;
|
|
251
|
-
const exitCode = timedOut ? TIMEOUT_EXIT_CODE : (r.status ?? 1);
|
|
252
|
-
if (opts.json && (timedOut || killed || exitCode !== 0)) {
|
|
253
|
-
const output = `${r.stdout ?? ""}\n${r.stderr ?? ""}`.slice(-20_000);
|
|
254
|
-
process.stderr.write(`\n${check.harnessId} failed (exit ${exitCode}):\n${output}\n`);
|
|
255
|
-
}
|
|
256
|
-
if (!opts.json && timedOut) {
|
|
257
|
-
console.log(`\nTIMEOUT ${check.harnessId} exceeded ${timeoutSeconds}s: ${check.command}`);
|
|
258
|
-
}
|
|
259
|
-
else if (!opts.json && killed) {
|
|
260
|
-
console.log(`\nKILLED ${check.harnessId} (${r.signal ?? errorCode}): ${check.command}`);
|
|
261
|
-
}
|
|
262
|
-
results.push({
|
|
263
|
-
harnessId: check.harnessId,
|
|
264
|
-
command: check.command,
|
|
265
|
-
ok: !timedOut && !killed && exitCode === 0,
|
|
266
|
-
exitCode,
|
|
267
|
-
timedOut,
|
|
268
|
-
killed
|
|
269
|
-
});
|
|
270
|
-
}
|
|
229
|
+
const results = await executeChecks(toRun, {
|
|
230
|
+
repoRoot,
|
|
231
|
+
json: opts.json === true,
|
|
232
|
+
timeoutMs,
|
|
233
|
+
timeoutSeconds,
|
|
234
|
+
jobs
|
|
235
|
+
});
|
|
271
236
|
const failed = results.filter((r) => !r.ok);
|
|
272
237
|
if (opts.json) {
|
|
273
|
-
console.log(JSON.stringify({
|
|
238
|
+
console.log(JSON.stringify({
|
|
239
|
+
plan,
|
|
240
|
+
results,
|
|
241
|
+
skippedSuites: skippedSuiteIds,
|
|
242
|
+
mappingViolations,
|
|
243
|
+
unmappedCodeFiles
|
|
244
|
+
}, null, 2));
|
|
274
245
|
}
|
|
275
246
|
else if (toRun.length > 0) {
|
|
276
247
|
console.log(`\nGate: ${results.length - failed.length}/${results.length} selfchecks passed`);
|
|
@@ -292,18 +263,260 @@ export function registerHarnessCommands(program) {
|
|
|
292
263
|
}
|
|
293
264
|
});
|
|
294
265
|
}
|
|
295
|
-
|
|
266
|
+
/**
|
|
267
|
+
* Split a plan's checks into what runs now and what is deliberately left out.
|
|
268
|
+
* A suite-only check is skipped (and named) rather than silently dropped:
|
|
269
|
+
* `npm run test:affected` runs the same suites for the same diff, so running
|
|
270
|
+
* them here again is pure repetition unless `--include-suites` asks for it.
|
|
271
|
+
*/
|
|
272
|
+
export function selectChecks(checks, opts) {
|
|
273
|
+
const skippedSuites = checks.filter((c) => c.suiteOnly && !opts.includeSuites);
|
|
274
|
+
const rest = checks.filter((c) => !skippedSuites.includes(c));
|
|
275
|
+
return {
|
|
276
|
+
toRun: rest.filter((c) => opts.expensive || c.cost === "cheap"),
|
|
277
|
+
skippedExpensive: rest.filter((c) => !opts.expensive && c.cost === "expensive"),
|
|
278
|
+
skippedSuites
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
/** Cap on what a failing selfcheck prints into `--json` mode's stderr. */
|
|
282
|
+
const FAILURE_OUTPUT_CHARS = 20_000;
|
|
283
|
+
/**
|
|
284
|
+
* Selfchecks decide their own module resolution: strip the `nodetool-dev`
|
|
285
|
+
* conditions this CLI may be running under (set by `npm run dev:nodetool`), or
|
|
286
|
+
* dist-mode scripts like reliability:ring0 resolve packages to src/ and fail.
|
|
287
|
+
*/
|
|
288
|
+
function selfcheckEnv() {
|
|
289
|
+
const nodeOptions = (process.env["NODE_OPTIONS"] ?? "")
|
|
290
|
+
.replace(/--conditions[= ]nodetool-dev/g, "")
|
|
291
|
+
.trim();
|
|
292
|
+
return {
|
|
293
|
+
...process.env,
|
|
294
|
+
...(nodeOptions ? { NODE_OPTIONS: nodeOptions } : { NODE_OPTIONS: "" })
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
/** Run one selfcheck to completion, output inherited (serial, live). */
|
|
298
|
+
async function runCheckSync(check, o) {
|
|
299
|
+
const { spawnSync } = await import("node:child_process");
|
|
300
|
+
const r = spawnSync(check.command, {
|
|
301
|
+
cwd: o.repoRoot,
|
|
302
|
+
shell: true,
|
|
303
|
+
stdio: o.json ? "pipe" : "inherit",
|
|
304
|
+
encoding: "utf8",
|
|
305
|
+
timeout: o.timeoutMs,
|
|
306
|
+
maxBuffer: SELFCHECK_MAX_BUFFER,
|
|
307
|
+
killSignal: "SIGKILL",
|
|
308
|
+
env: selfcheckEnv()
|
|
309
|
+
});
|
|
310
|
+
return {
|
|
311
|
+
status: r.status,
|
|
312
|
+
signal: r.signal,
|
|
313
|
+
errorCode: r.error?.code,
|
|
314
|
+
hasError: r.error !== undefined,
|
|
315
|
+
stdout: r.stdout ?? "",
|
|
316
|
+
stderr: r.stderr ?? ""
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Run one selfcheck without blocking, buffering its output. A stream keeps only
|
|
321
|
+
* its tail past the cap instead of killing the child, which is what a full
|
|
322
|
+
* pipe did to `spawnSync` (see SELFCHECK_MAX_BUFFER). The child leads its own
|
|
323
|
+
* process group so the timeout's SIGKILL reaches what the shell started, and
|
|
324
|
+
* the result settles at the kill rather than waiting on pipes a grandchild
|
|
325
|
+
* still holds.
|
|
326
|
+
*/
|
|
327
|
+
async function runCheckAsync(check, o) {
|
|
328
|
+
const { spawn } = await import("node:child_process");
|
|
329
|
+
const cap = o.json ? FAILURE_OUTPUT_CHARS : SELFCHECK_MAX_BUFFER;
|
|
330
|
+
return new Promise((resolveOutcome) => {
|
|
331
|
+
let stdout = "";
|
|
332
|
+
let stderr = "";
|
|
333
|
+
let timedOut = false;
|
|
334
|
+
let spawnError;
|
|
335
|
+
let settled = false;
|
|
336
|
+
const child = spawn(check.command, {
|
|
337
|
+
cwd: o.repoRoot,
|
|
338
|
+
shell: true,
|
|
339
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
340
|
+
detached: true,
|
|
341
|
+
env: selfcheckEnv()
|
|
342
|
+
});
|
|
343
|
+
const settle = (status, signal) => {
|
|
344
|
+
if (settled)
|
|
345
|
+
return;
|
|
346
|
+
settled = true;
|
|
347
|
+
clearTimeout(timer);
|
|
348
|
+
resolveOutcome({
|
|
349
|
+
status,
|
|
350
|
+
signal,
|
|
351
|
+
errorCode: timedOut ? "ETIMEDOUT" : spawnError?.code,
|
|
352
|
+
hasError: timedOut || spawnError !== undefined,
|
|
353
|
+
stdout,
|
|
354
|
+
stderr
|
|
355
|
+
});
|
|
356
|
+
};
|
|
357
|
+
const timer = setTimeout(() => {
|
|
358
|
+
timedOut = true;
|
|
359
|
+
try {
|
|
360
|
+
if (child.pid !== undefined)
|
|
361
|
+
process.kill(-child.pid, "SIGKILL");
|
|
362
|
+
}
|
|
363
|
+
catch {
|
|
364
|
+
child.kill("SIGKILL");
|
|
365
|
+
}
|
|
366
|
+
settle(null, "SIGKILL");
|
|
367
|
+
}, o.timeoutMs);
|
|
368
|
+
child.stdout?.setEncoding("utf8");
|
|
369
|
+
child.stderr?.setEncoding("utf8");
|
|
370
|
+
child.stdout?.on("data", (d) => {
|
|
371
|
+
stdout += d;
|
|
372
|
+
if (stdout.length > cap)
|
|
373
|
+
stdout = stdout.slice(-cap);
|
|
374
|
+
});
|
|
375
|
+
child.stderr?.on("data", (d) => {
|
|
376
|
+
stderr += d;
|
|
377
|
+
if (stderr.length > cap)
|
|
378
|
+
stderr = stderr.slice(-cap);
|
|
379
|
+
});
|
|
380
|
+
child.on("error", (e) => {
|
|
381
|
+
spawnError = e;
|
|
382
|
+
settle(null, null);
|
|
383
|
+
});
|
|
384
|
+
child.on("close", (code, signal) => settle(code, signal));
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Turn what a selfcheck did into a result and print its report. `emit` receives
|
|
389
|
+
* the text so a parallel run can print it as one block.
|
|
390
|
+
*
|
|
391
|
+
* Fails closed on a kill: a timeout or any other signal leaves `status` null,
|
|
392
|
+
* which counts as a failure, never as the "no exit code, assume ok" case. Only
|
|
393
|
+
* ETIMEDOUT is reported as a timeout, though — every other signal used to be
|
|
394
|
+
* too, and a check killed for some other reason then claimed to have run for
|
|
395
|
+
* the full `--timeout` when it had run for three minutes.
|
|
396
|
+
*/
|
|
397
|
+
function interpretOutcome(check, raw, o) {
|
|
398
|
+
const timedOut = raw.errorCode === "ETIMEDOUT";
|
|
399
|
+
const killed = raw.signal != null || raw.hasError;
|
|
400
|
+
const exitCode = timedOut ? TIMEOUT_EXIT_CODE : (raw.status ?? 1);
|
|
401
|
+
let stderrText = "";
|
|
402
|
+
let stdoutText = "";
|
|
403
|
+
if (o.json && (timedOut || killed || exitCode !== 0)) {
|
|
404
|
+
const output = `${raw.stdout}\n${raw.stderr}`.slice(-FAILURE_OUTPUT_CHARS);
|
|
405
|
+
stderrText = `\n${check.harnessId} failed (exit ${exitCode}):\n${output}\n`;
|
|
406
|
+
}
|
|
407
|
+
if (!o.json && timedOut) {
|
|
408
|
+
stdoutText = `\nTIMEOUT ${check.harnessId} exceeded ${o.timeoutSeconds}s: ${check.command}\n`;
|
|
409
|
+
}
|
|
410
|
+
else if (!o.json && killed) {
|
|
411
|
+
stdoutText = `\nKILLED ${check.harnessId} (${raw.signal ?? raw.errorCode}): ${check.command}\n`;
|
|
412
|
+
}
|
|
413
|
+
return {
|
|
414
|
+
result: {
|
|
415
|
+
harnessId: check.harnessId,
|
|
416
|
+
command: check.command,
|
|
417
|
+
ok: !timedOut && !killed && exitCode === 0,
|
|
418
|
+
exitCode,
|
|
419
|
+
timedOut,
|
|
420
|
+
killed
|
|
421
|
+
},
|
|
422
|
+
stdoutText,
|
|
423
|
+
stderrText
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Run the selected selfchecks and return their results in plan order.
|
|
428
|
+
*
|
|
429
|
+
* With `jobs` of 1 every check runs serially in plan order with live output.
|
|
430
|
+
* With more, the cheap checks run `jobs` at a time with buffered output
|
|
431
|
+
* printed per check as a block, then the expensive ones run serially: they
|
|
432
|
+
* stage bundles and bind ports, so they cannot share a machine with each other
|
|
433
|
+
* or with the cheap pool.
|
|
434
|
+
*/
|
|
435
|
+
export async function executeChecks(checks, o) {
|
|
436
|
+
const results = new Array(checks.length);
|
|
437
|
+
const runSerial = async (index) => {
|
|
438
|
+
const check = checks[index];
|
|
439
|
+
if (!o.json)
|
|
440
|
+
console.log(`\n── ${check.harnessId}: ${check.command}\n`);
|
|
441
|
+
const { result, stdoutText, stderrText } = interpretOutcome(check, await runCheckSync(check, o), o);
|
|
442
|
+
if (stderrText)
|
|
443
|
+
process.stderr.write(stderrText);
|
|
444
|
+
if (stdoutText)
|
|
445
|
+
process.stdout.write(stdoutText);
|
|
446
|
+
results[index] = result;
|
|
447
|
+
};
|
|
448
|
+
if (o.jobs <= 1) {
|
|
449
|
+
for (let i = 0; i < checks.length; i++)
|
|
450
|
+
await runSerial(i);
|
|
451
|
+
return results;
|
|
452
|
+
}
|
|
453
|
+
const cheap = [];
|
|
454
|
+
const expensive = [];
|
|
455
|
+
checks.forEach((c, i) => (c.cost === "cheap" ? cheap : expensive).push(i));
|
|
456
|
+
let next = 0;
|
|
457
|
+
const worker = async () => {
|
|
458
|
+
while (next < cheap.length) {
|
|
459
|
+
const index = cheap[next++];
|
|
460
|
+
const check = checks[index];
|
|
461
|
+
const raw = await runCheckAsync(check, o);
|
|
462
|
+
const { result, stdoutText, stderrText } = interpretOutcome(check, raw, o);
|
|
463
|
+
// One block per check, written without an await in between, so output
|
|
464
|
+
// from checks that finish together does not interleave.
|
|
465
|
+
if (!o.json) {
|
|
466
|
+
process.stdout.write(`\n── ${check.harnessId}: ${check.command}\n\n${raw.stdout}`);
|
|
467
|
+
if (raw.stderr)
|
|
468
|
+
process.stderr.write(raw.stderr);
|
|
469
|
+
}
|
|
470
|
+
if (stderrText)
|
|
471
|
+
process.stderr.write(stderrText);
|
|
472
|
+
if (stdoutText)
|
|
473
|
+
process.stdout.write(stdoutText);
|
|
474
|
+
results[index] = result;
|
|
475
|
+
}
|
|
476
|
+
};
|
|
477
|
+
await Promise.all(Array.from({ length: Math.min(o.jobs, cheap.length) }, () => worker()));
|
|
478
|
+
for (const index of expensive)
|
|
479
|
+
await runSerial(index);
|
|
480
|
+
return results;
|
|
481
|
+
}
|
|
482
|
+
export function printGatePlan(plan, runCount, skippedExpensive, skippedSuites, all) {
|
|
483
|
+
const skipNote = [
|
|
484
|
+
skippedExpensive > 0
|
|
485
|
+
? `${skippedExpensive} expensive skipped — pass --expensive`
|
|
486
|
+
: "",
|
|
487
|
+
skippedSuites.length > 0
|
|
488
|
+
? `${skippedSuites.length} suite-only skipped — pass --include-suites`
|
|
489
|
+
: ""
|
|
490
|
+
].filter(Boolean);
|
|
491
|
+
const suffix = skipNote.length > 0 ? ` (${skipNote.join("; ")})` : "";
|
|
492
|
+
const printSkippedSuites = () => {
|
|
493
|
+
if (skippedSuites.length === 0)
|
|
494
|
+
return;
|
|
495
|
+
console.log("\nCovered by `npm run test:affected` (selfcheck only re-runs those suites):");
|
|
496
|
+
for (const c of skippedSuites)
|
|
497
|
+
console.log(` ${c.harnessId}`);
|
|
498
|
+
};
|
|
296
499
|
if (all) {
|
|
297
|
-
console.log(`\nRunning all ${runCount} selfcheck(s)${
|
|
500
|
+
console.log(`\nRunning all ${runCount} selfcheck(s)${suffix}`);
|
|
501
|
+
printSkippedSuites();
|
|
298
502
|
return;
|
|
299
503
|
}
|
|
300
504
|
if (plan.changedFiles.length === 0) {
|
|
301
505
|
console.log("\nNo changed files — nothing to gate.");
|
|
302
506
|
return;
|
|
303
507
|
}
|
|
508
|
+
if (plan.globalFiles.length > 0) {
|
|
509
|
+
console.log(`\n${plan.globalFiles.length} global file(s) force every selfcheck:`);
|
|
510
|
+
for (const f of plan.globalFiles.slice(0, 8))
|
|
511
|
+
console.log(` ${f}`);
|
|
512
|
+
if (plan.globalFiles.length > 8) {
|
|
513
|
+
console.log(` …and ${plan.globalFiles.length - 8} more`);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
304
516
|
console.log(`\n${plan.changedFiles.length} changed file(s) touch ${plan.surfaces.length} surface(s):`);
|
|
305
517
|
for (const s of plan.surfaces) {
|
|
306
|
-
|
|
518
|
+
const via = s.viaDependency ? " (via dependency)" : "";
|
|
519
|
+
console.log(` ${s.id.padEnd(20)} (${s.files.length} file(s))${via}`);
|
|
307
520
|
}
|
|
308
521
|
if (plan.unmappedFiles.length > 0) {
|
|
309
522
|
console.log(`\n${plan.unmappedFiles.length} file(s) outside any surface:`);
|
|
@@ -322,7 +535,8 @@ function printGatePlan(plan, runCount, skippedExpensive, all) {
|
|
|
322
535
|
console.log(` ${m.harnessId.padEnd(18)} ${m.command}`);
|
|
323
536
|
}
|
|
324
537
|
}
|
|
325
|
-
|
|
538
|
+
printSkippedSuites();
|
|
539
|
+
console.log(`\n${runCount} selfcheck(s) to run${suffix}`);
|
|
326
540
|
}
|
|
327
541
|
/**
|
|
328
542
|
* A capability whose declared contract moved without its coverage mapping
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/commands/harness.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/commands/harness.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js-script.d.ts","sourceRoot":"","sources":["../../src/commands/js-script.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"js-script.d.ts","sourceRoot":"","sources":["../../src/commands/js-script.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAI5E,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAoCpC,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWtE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,6BAwBlD;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuK/D"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { printCommandError } from "../command-errors.js";
|
|
2
|
+
import { printDebugSummary } from "./debug-summary-output.js";
|
|
2
3
|
import { renderJsScriptValidation } from "./js-script-validation-output.js";
|
|
3
4
|
import { registerJsScriptVersionsCommands } from "./js-script-versions.js";
|
|
4
5
|
import { isRecord } from "../predicates.js";
|
|
@@ -168,7 +169,11 @@ export function registerJsScriptCommands(program) {
|
|
|
168
169
|
console.log(JSON.stringify(report, null, 2));
|
|
169
170
|
}
|
|
170
171
|
else {
|
|
171
|
-
|
|
172
|
+
printDebugSummary(report, bundleDir, {
|
|
173
|
+
label: "script",
|
|
174
|
+
meta: `${report.meta.inputCount} input(s), ${report.meta.outputCount} output(s), ${report.meta.testCount} test(s)`,
|
|
175
|
+
file: "jsscript.json"
|
|
176
|
+
});
|
|
172
177
|
}
|
|
173
178
|
process.exit(report.verdict.ok ? 0 : 1);
|
|
174
179
|
}
|
|
@@ -203,25 +208,4 @@ function printTestReport(report) {
|
|
|
203
208
|
}
|
|
204
209
|
}
|
|
205
210
|
}
|
|
206
|
-
function printJsScriptSummary(report, bundleDir) {
|
|
207
|
-
const mark = report.verdict.ok ? "✅" : "❌";
|
|
208
|
-
console.log(`\n${mark} ${report.verdict.headline}`);
|
|
209
|
-
console.log(` script: ${report.meta.inputCount} input(s), ${report.meta.outputCount} output(s), ${report.meta.testCount} test(s)`);
|
|
210
|
-
const failed = report.interactions.filter((i) => !i.ok).length;
|
|
211
|
-
if (report.interactions.length > 0) {
|
|
212
|
-
console.log(` session: ${report.interactions.length} step(s), ${failed} failed`);
|
|
213
|
-
}
|
|
214
|
-
if (report.verdict.issues.length > 0) {
|
|
215
|
-
console.log("\nIssues:");
|
|
216
|
-
for (const issue of report.verdict.issues)
|
|
217
|
-
console.log(` - ${issue}`);
|
|
218
|
-
}
|
|
219
|
-
if (report.verdict.warnings && report.verdict.warnings.length > 0) {
|
|
220
|
-
console.log("\nWarnings:");
|
|
221
|
-
for (const warning of report.verdict.warnings)
|
|
222
|
-
console.log(` - ${warning}`);
|
|
223
|
-
}
|
|
224
|
-
console.log(`\nDebug bundle: ${bundleDir}`);
|
|
225
|
-
console.log(" report.md / report.json · jsscript.json");
|
|
226
|
-
}
|
|
227
211
|
//# sourceMappingURL=js-script.js.map
|