plumbbob 0.6.5 → 0.8.0
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/.claude-plugin/plugin.json +2 -2
- package/README.md +24 -7
- package/dist/cli-core.js +7 -2
- package/dist/lib/buildlog.js +5 -2
- package/dist/lib/check.js +33 -1
- package/dist/lib/git.js +17 -0
- package/dist/lib/intent.js +3 -2
- package/dist/lib/latch.js +97 -0
- package/dist/lib/orient.js +31 -1
- package/dist/lib/sidecar.js +116 -0
- package/dist/verbs/build.js +5 -1
- package/dist/verbs/checkpoint.js +61 -7
- package/dist/verbs/doctor.js +33 -2
- package/dist/verbs/finish.js +57 -1
- package/dist/verbs/revert.js +19 -1
- package/dist/verbs/start.js +22 -2
- package/dist/verbs/status.js +10 -3
- package/dist/verbs/turn.js +106 -0
- package/hooks/hooks.json +15 -0
- package/hooks/pre-bash-commit.sh +69 -0
- package/node_modules/checkride/CHANGELOG.md +111 -0
- package/node_modules/checkride/README.md +185 -20
- package/node_modules/checkride/dist/adapters.d.ts +9 -4
- package/node_modules/checkride/dist/adapters.d.ts.map +1 -1
- package/node_modules/checkride/dist/adapters.js +62 -2
- package/node_modules/checkride/dist/adapters.js.map +1 -1
- package/node_modules/checkride/dist/agent-setup/hook.d.ts +63 -0
- package/node_modules/checkride/dist/agent-setup/hook.d.ts.map +1 -0
- package/node_modules/checkride/dist/agent-setup/hook.js +92 -0
- package/node_modules/checkride/dist/agent-setup/hook.js.map +1 -0
- package/node_modules/checkride/dist/agent-setup/index.d.ts +8 -0
- package/node_modules/checkride/dist/agent-setup/index.d.ts.map +1 -0
- package/node_modules/checkride/dist/agent-setup/index.js +7 -0
- package/node_modules/checkride/dist/agent-setup/index.js.map +1 -0
- package/node_modules/checkride/dist/atomic.d.ts +13 -0
- package/node_modules/checkride/dist/atomic.d.ts.map +1 -0
- package/node_modules/checkride/dist/atomic.js +24 -0
- package/node_modules/checkride/dist/atomic.js.map +1 -0
- package/node_modules/checkride/dist/baseline/command.d.ts +42 -0
- package/node_modules/checkride/dist/baseline/command.d.ts.map +1 -0
- package/node_modules/checkride/dist/baseline/command.js +58 -0
- package/node_modules/checkride/dist/baseline/command.js.map +1 -0
- package/node_modules/checkride/dist/baseline/fingerprint.d.ts +41 -0
- package/node_modules/checkride/dist/baseline/fingerprint.d.ts.map +1 -0
- package/node_modules/checkride/dist/baseline/fingerprint.js +119 -0
- package/node_modules/checkride/dist/baseline/fingerprint.js.map +1 -0
- package/node_modules/checkride/dist/baseline/index.d.ts +13 -0
- package/node_modules/checkride/dist/baseline/index.d.ts.map +1 -0
- package/node_modules/checkride/dist/baseline/index.js +10 -0
- package/node_modules/checkride/dist/baseline/index.js.map +1 -0
- package/node_modules/checkride/dist/baseline/store.d.ts +67 -0
- package/node_modules/checkride/dist/baseline/store.d.ts.map +1 -0
- package/node_modules/checkride/dist/baseline/store.js +110 -0
- package/node_modules/checkride/dist/baseline/store.js.map +1 -0
- package/node_modules/checkride/dist/cli.d.ts.map +1 -1
- package/node_modules/checkride/dist/cli.js +37 -3
- package/node_modules/checkride/dist/cli.js.map +1 -1
- package/node_modules/checkride/dist/config.d.ts +43 -3
- package/node_modules/checkride/dist/config.d.ts.map +1 -1
- package/node_modules/checkride/dist/config.js +95 -22
- package/node_modules/checkride/dist/config.js.map +1 -1
- package/node_modules/checkride/dist/digest/digest.d.ts +52 -0
- package/node_modules/checkride/dist/digest/digest.d.ts.map +1 -0
- package/node_modules/checkride/dist/digest/digest.js +147 -0
- package/node_modules/checkride/dist/digest/digest.js.map +1 -0
- package/node_modules/checkride/dist/digest/index.d.ts +8 -0
- package/node_modules/checkride/dist/digest/index.d.ts.map +1 -0
- package/node_modules/checkride/dist/digest/index.js +7 -0
- package/node_modules/checkride/dist/digest/index.js.map +1 -0
- package/node_modules/checkride/dist/doctor.d.ts +4 -0
- package/node_modules/checkride/dist/doctor.d.ts.map +1 -1
- package/node_modules/checkride/dist/doctor.js +33 -10
- package/node_modules/checkride/dist/doctor.js.map +1 -1
- package/node_modules/checkride/dist/index.d.ts +1 -1
- package/node_modules/checkride/dist/index.d.ts.map +1 -1
- package/node_modules/checkride/dist/index.js +1 -1
- package/node_modules/checkride/dist/index.js.map +1 -1
- package/node_modules/checkride/dist/init.d.ts +38 -0
- package/node_modules/checkride/dist/init.d.ts.map +1 -1
- package/node_modules/checkride/dist/init.js +97 -8
- package/node_modules/checkride/dist/init.js.map +1 -1
- package/node_modules/checkride/dist/orchestrator.d.ts +58 -1
- package/node_modules/checkride/dist/orchestrator.d.ts.map +1 -1
- package/node_modules/checkride/dist/orchestrator.js +155 -27
- package/node_modules/checkride/dist/orchestrator.js.map +1 -1
- package/node_modules/checkride/dist/pm/detect.d.ts +21 -0
- package/node_modules/checkride/dist/pm/detect.d.ts.map +1 -0
- package/node_modules/checkride/dist/pm/detect.js +60 -0
- package/node_modules/checkride/dist/pm/detect.js.map +1 -0
- package/node_modules/checkride/dist/pm/index.d.ts +10 -0
- package/node_modules/checkride/dist/pm/index.d.ts.map +1 -0
- package/node_modules/checkride/dist/pm/index.js +9 -0
- package/node_modules/checkride/dist/pm/index.js.map +1 -0
- package/node_modules/checkride/dist/pm/translate.d.ts +28 -0
- package/node_modules/checkride/dist/pm/translate.d.ts.map +1 -0
- package/node_modules/checkride/dist/pm/translate.js +40 -0
- package/node_modules/checkride/dist/pm/translate.js.map +1 -0
- package/node_modules/checkride/package.json +20 -17
- package/node_modules/checkride/schema/checkride.config.schema.json +97 -0
- package/node_modules/checkride/schema/checkride.summary.schema.json +57 -0
- package/node_modules/checkride/templates/shared/cspell.json +1 -0
- package/node_modules/checkride/templates/shared/prettierrc.json +6 -0
- package/package.json +8 -4
- package/skills/pb-build/SKILL.md +32 -14
- package/skills/pb-finish/SKILL.md +5 -6
- package/skills/pb-harvest/SKILL.md +1 -2
- package/skills/pb-park/SKILL.md +1 -1
- package/skills/pb-plan/SKILL.md +37 -5
- package/skills/pb-refine/SKILL.md +0 -1
- package/skills/pb-status/SKILL.md +5 -1
- package/skills/pb-step/SKILL.md +5 -4
- package/skills/pb-verify/SKILL.md +26 -9
- package/templates/intent.md +4 -0
|
@@ -7,13 +7,21 @@
|
|
|
7
7
|
* diagnostics — agents read the per-tool JSON directly.
|
|
8
8
|
*/
|
|
9
9
|
import { spawn } from 'node:child_process';
|
|
10
|
-
import { mkdir
|
|
10
|
+
import { mkdir } from 'node:fs/promises';
|
|
11
11
|
import { join } from 'node:path';
|
|
12
12
|
import { performance } from 'node:perf_hooks';
|
|
13
13
|
import { ADAPTERS, SCHEMA_VERSION, SLOTS } from './adapters.js';
|
|
14
|
+
import { writeFileAtomic } from './atomic.js';
|
|
15
|
+
import { applyBaseline, BASELINE_FILE, baselinesEqual, countBaselineKeys, fingerprint, loadBaseline, ratchet, writeBaseline, } from './baseline/index.js';
|
|
14
16
|
import { loadConfig, resolveChecks } from './config.js';
|
|
17
|
+
import { writeDigest } from './digest/index.js';
|
|
15
18
|
import { checkLinks } from './links.js';
|
|
16
|
-
|
|
19
|
+
import { detectPackageManager, isAvailableUnder, translateExec } from './pm/index.js';
|
|
20
|
+
/**
|
|
21
|
+
* Port of the interim `select_checks`: only/skip/opt-in selection by slot name.
|
|
22
|
+
* An opt-in slot runs when `--all`/`--include` names it, or when it was
|
|
23
|
+
* explicitly configured in `checks` (`r.explicit`) — naming a slot is opting in.
|
|
24
|
+
*/
|
|
17
25
|
export function selectChecks(resolved, flags) {
|
|
18
26
|
const only = flags.only ?? null;
|
|
19
27
|
const skipSet = new Set(flags.skip ?? []);
|
|
@@ -24,7 +32,7 @@ export function selectChecks(resolved, flags) {
|
|
|
24
32
|
return only.includes(r.slot);
|
|
25
33
|
if (skipSet.has(r.slot))
|
|
26
34
|
return false;
|
|
27
|
-
if (r.optIn && !all && !includeSet.has(r.slot))
|
|
35
|
+
if (r.optIn && !all && !includeSet.has(r.slot) && !r.explicit)
|
|
28
36
|
return false;
|
|
29
37
|
return true;
|
|
30
38
|
});
|
|
@@ -36,10 +44,21 @@ export function runtimeArgs(adapter, changed) {
|
|
|
36
44
|
return adapter.args;
|
|
37
45
|
}
|
|
38
46
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
47
|
+
* Default per-check timeout (seconds) when neither the check nor the config
|
|
48
|
+
* sets one. A definition-of-done gate that can hang forever fails its one job
|
|
49
|
+
* on the worst day, so the cap is on by default — generous enough for any
|
|
50
|
+
* legitimate single slot. Override per check or globally via `timeout`; `0`
|
|
51
|
+
* disables the cap.
|
|
52
|
+
*/
|
|
53
|
+
export const DEFAULT_TIMEOUT_SECONDS = 600;
|
|
54
|
+
/** Grace between SIGTERM and SIGKILL when a timed-out check won't die politely. */
|
|
55
|
+
const KILL_GRACE_SECONDS = 5;
|
|
56
|
+
/**
|
|
57
|
+
* Spawn one check. A falsy or non-positive `timeoutSec` means no cap (the
|
|
58
|
+
* default cap is applied by the runner, not here). When it fires, the child
|
|
59
|
+
* gets SIGTERM, then SIGKILL after a short grace, and a failed outcome carries
|
|
60
|
+
* a `"timed out after Ns"` note so the slot is recorded failed with its
|
|
61
|
+
* elapsed duration (both timers are always cleared on `close`).
|
|
43
62
|
*/
|
|
44
63
|
function spawnCheck(command, args, cwd, timeoutSec) {
|
|
45
64
|
return new Promise((resolveOutcome) => {
|
|
@@ -51,19 +70,28 @@ function spawnCheck(command, args, cwd, timeoutSec) {
|
|
|
51
70
|
let stdout = '';
|
|
52
71
|
let stderr = '';
|
|
53
72
|
let timedOut = false;
|
|
73
|
+
let killTimer = null;
|
|
54
74
|
const timer = timeoutSec && timeoutSec > 0
|
|
55
|
-
? setTimeout(() => {
|
|
75
|
+
? setTimeout(() => {
|
|
76
|
+
timedOut = true;
|
|
77
|
+
proc.kill('SIGTERM');
|
|
78
|
+
killTimer = setTimeout(() => { proc.kill('SIGKILL'); }, KILL_GRACE_SECONDS * 1000);
|
|
79
|
+
}, timeoutSec * 1000)
|
|
56
80
|
: null;
|
|
81
|
+
const clearTimers = () => {
|
|
82
|
+
if (timer)
|
|
83
|
+
clearTimeout(timer);
|
|
84
|
+
if (killTimer)
|
|
85
|
+
clearTimeout(killTimer);
|
|
86
|
+
};
|
|
57
87
|
proc.stdout.on('data', (chunk) => { stdout += chunk.toString(); });
|
|
58
88
|
proc.stderr.on('data', (chunk) => { stderr += chunk.toString(); });
|
|
59
89
|
proc.on('error', (err) => {
|
|
60
|
-
|
|
61
|
-
clearTimeout(timer);
|
|
90
|
+
clearTimers();
|
|
62
91
|
resolveOutcome({ ok: false, exit_code: -1, stdout: '', stderr: `Failed to spawn: ${err.message}` });
|
|
63
92
|
});
|
|
64
93
|
proc.on('close', (code) => {
|
|
65
|
-
|
|
66
|
-
clearTimeout(timer);
|
|
94
|
+
clearTimers();
|
|
67
95
|
if (timedOut) {
|
|
68
96
|
const note = `timed out after ${timeoutSec}s`;
|
|
69
97
|
resolveOutcome({ ok: false, exit_code: -1, stdout, stderr: stderr ? `${stderr}\n${note}` : `${note}\n` });
|
|
@@ -79,16 +107,17 @@ const defaultRunner = (resolved, ctx) => {
|
|
|
79
107
|
return Promise.resolve({ ok: true, exit_code: 0, stdout: '', stderr: '' });
|
|
80
108
|
if (adapter.builtin === 'links')
|
|
81
109
|
return checkLinks(ctx.cwd);
|
|
82
|
-
const timeout = adapter.timeout ?? ctx.timeout;
|
|
83
|
-
|
|
110
|
+
const timeout = adapter.timeout ?? ctx.timeout ?? DEFAULT_TIMEOUT_SECONDS;
|
|
111
|
+
const { command, args } = translateExec(adapter.command, runtimeArgs(adapter, ctx.changed), ctx.pm);
|
|
112
|
+
return spawnCheck(command, args, ctx.cwd, timeout);
|
|
84
113
|
};
|
|
85
|
-
/** Persist raw output: JSON to `.check/<outputFile>`, else stdout/stderr text. */
|
|
114
|
+
/** Persist raw output atomically: JSON to `.check/<outputFile>`, else stdout/stderr text. */
|
|
86
115
|
async function persistOutput(cwd, adapter, outcome) {
|
|
87
116
|
const dir = join(cwd, '.check');
|
|
88
117
|
if (adapter.outputFile && outcome.stdout.trim()) {
|
|
89
118
|
try {
|
|
90
119
|
JSON.parse(outcome.stdout);
|
|
91
|
-
await
|
|
120
|
+
await writeFileAtomic(join(dir, adapter.outputFile), outcome.stdout);
|
|
92
121
|
return;
|
|
93
122
|
}
|
|
94
123
|
catch {
|
|
@@ -96,9 +125,9 @@ async function persistOutput(cwd, adapter, outcome) {
|
|
|
96
125
|
}
|
|
97
126
|
}
|
|
98
127
|
if (outcome.stdout.trim())
|
|
99
|
-
await
|
|
128
|
+
await writeFileAtomic(join(dir, `${adapter.slot}.stdout.txt`), outcome.stdout);
|
|
100
129
|
if (outcome.stderr.trim())
|
|
101
|
-
await
|
|
130
|
+
await writeFileAtomic(join(dir, `${adapter.slot}.stderr.txt`), outcome.stderr);
|
|
102
131
|
}
|
|
103
132
|
function writeLine(out, line) {
|
|
104
133
|
out.write(`${line}\n`);
|
|
@@ -127,10 +156,38 @@ function buildSummary(checks) {
|
|
|
127
156
|
schema_version: SCHEMA_VERSION,
|
|
128
157
|
timestamp: new Date().toISOString(),
|
|
129
158
|
ok: checks.every((c) => c.ok),
|
|
159
|
+
checks_run: checks.filter((c) => !c.skipped).length,
|
|
130
160
|
total_duration_ms: checks.reduce((sum, c) => sum + c.duration_ms, 0),
|
|
131
161
|
checks,
|
|
132
162
|
};
|
|
133
163
|
}
|
|
164
|
+
/** What could fill a sat-out slot: each candidate adapter and its first detect file. */
|
|
165
|
+
function enableHint(slot, adapters) {
|
|
166
|
+
const candidates = adapters.filter((a) => a.slot === slot);
|
|
167
|
+
if (candidates.length === 0)
|
|
168
|
+
return null;
|
|
169
|
+
const parts = candidates.map((a) => a.detect.length > 0 ? `${a.name} (add ${a.detect[0]})` : a.name);
|
|
170
|
+
return `enable with: ${parts.join(', ')}`;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* The first-party vacuous-green signal: "green because nothing ran" must be
|
|
174
|
+
* unmissable, not something only a consumer that hand-rolled the check (as
|
|
175
|
+
* plumbbob's gate did) can distinguish from "green because everything passed".
|
|
176
|
+
* Names why each slot sat out and what would enable it.
|
|
177
|
+
*/
|
|
178
|
+
function warnVacuous(stderr, checks, adapters) {
|
|
179
|
+
writeLine(stderr, '');
|
|
180
|
+
writeLine(stderr, '⚠ 0 checks ran — nothing was verified. This is not a pass.');
|
|
181
|
+
if (checks.length === 0) {
|
|
182
|
+
writeLine(stderr, ' No slots matched the selection (--only/--skip).');
|
|
183
|
+
}
|
|
184
|
+
for (const c of checks) {
|
|
185
|
+
const hint = c.adapter === null ? enableHint(c.name, adapters) : null;
|
|
186
|
+
writeLine(stderr, ` ○ ${c.name}: ${c.reason ?? 'skipped'}${hint ? ` — ${hint}` : ''}`);
|
|
187
|
+
}
|
|
188
|
+
writeLine(stderr, ' Run `checkride doctor` for per-slot detail, or add a custom check to');
|
|
189
|
+
writeLine(stderr, ' checkride.config.json. Gates should run with --strict (exit 2 on zero checks).');
|
|
190
|
+
}
|
|
134
191
|
/** Run the selected checks against `cwd`, persist output, write the summary. */
|
|
135
192
|
export async function runChecks(options) {
|
|
136
193
|
const cwd = options.cwd ?? process.cwd();
|
|
@@ -144,15 +201,25 @@ export async function runChecks(options) {
|
|
|
144
201
|
const bail = options.bail ?? false;
|
|
145
202
|
const changed = options.changed ?? false;
|
|
146
203
|
const timeout = config?.timeout;
|
|
204
|
+
const pm = options.pm ?? detectPackageManager({ cwd });
|
|
205
|
+
const baseline = options.baseline !== undefined ? options.baseline : loadBaseline(cwd);
|
|
147
206
|
await mkdir(join(cwd, '.check'), { recursive: true });
|
|
148
207
|
const resolved = resolveChecks({ slots, adapters, config, cwd });
|
|
149
208
|
const selected = selectChecks(resolved, options);
|
|
150
209
|
if (!json)
|
|
151
210
|
writeLine(stderr, `\nRunning ${selected.length} check(s)...\n`);
|
|
152
211
|
const checks = [];
|
|
212
|
+
const runs = [];
|
|
213
|
+
// Per-slot current fingerprints for slots actually observed this run, and
|
|
214
|
+
// whether `--bail` cut the loop short — both feed the ratchet's full-run gate.
|
|
215
|
+
const observed = new Map();
|
|
216
|
+
let brokeEarly = false;
|
|
153
217
|
for (const r of selected) {
|
|
154
|
-
|
|
155
|
-
|
|
218
|
+
// Skip when unresolved, or when the adapter can't run under this PM — e.g.
|
|
219
|
+
// `pnpm audit` (the `security` slot) is unavailable off pnpm (b5).
|
|
220
|
+
const unavailable = r.adapter && !isAvailableUnder(r.adapter.command, r.adapter.args, pm);
|
|
221
|
+
if (r.skip || !r.adapter || unavailable) {
|
|
222
|
+
const entry = skippedEntry(unavailable ? { ...r, skip: `'${r.adapter?.command} ${r.adapter?.args[0]}' is unavailable under ${pm}` } : r);
|
|
156
223
|
checks.push(entry);
|
|
157
224
|
if (!json)
|
|
158
225
|
writeLine(stderr, ` ○ ${entry.name.padEnd(8)} skip ${entry.reason ?? ''}`);
|
|
@@ -162,37 +229,98 @@ export async function runChecks(options) {
|
|
|
162
229
|
if (!json)
|
|
163
230
|
writeLine(stderr, ` ▸ ${r.slot} ${adapter.description}`);
|
|
164
231
|
const start = performance.now();
|
|
165
|
-
const outcome = await runner(r, { cwd, changed, ...(timeout !== undefined ? { timeout } : {}) });
|
|
232
|
+
const outcome = await runner(r, { cwd, changed, pm, ...(timeout !== undefined ? { timeout } : {}) });
|
|
166
233
|
const duration_ms = Math.round(performance.now() - start);
|
|
234
|
+
runs.push({ slot: r.slot, adapter, outcome });
|
|
167
235
|
await persistOutput(cwd, adapter, outcome);
|
|
236
|
+
// Baseline-aware: subtract this slot's grandfathered diagnostics. Masking is
|
|
237
|
+
// always on (even under a partial run); only the ratchet below is gated. The
|
|
238
|
+
// raw `.check/<slot>.json` is already persisted untouched — masking changes
|
|
239
|
+
// the pass/fail verdict, never the authoritative output.
|
|
240
|
+
let ok = outcome.ok;
|
|
241
|
+
let baselined = 0;
|
|
242
|
+
let newKeys = [];
|
|
243
|
+
const current = baseline ? fingerprint(adapter.name, outcome.stdout) : null;
|
|
244
|
+
if (baseline && current !== null) {
|
|
245
|
+
observed.set(r.slot, current);
|
|
246
|
+
const adj = applyBaseline(current, baseline.slots[r.slot] ?? [], outcome.ok);
|
|
247
|
+
({ ok, baselined, newKeys } = adj);
|
|
248
|
+
}
|
|
168
249
|
const entry = {
|
|
169
250
|
name: r.slot,
|
|
170
251
|
adapter: adapter.name,
|
|
171
252
|
description: adapter.description,
|
|
172
|
-
ok
|
|
253
|
+
ok,
|
|
173
254
|
exit_code: outcome.exit_code,
|
|
174
255
|
duration_ms,
|
|
175
256
|
output_file: adapter.outputFile,
|
|
257
|
+
...(baselined > 0 ? { baselined } : {}),
|
|
176
258
|
};
|
|
177
259
|
checks.push(entry);
|
|
178
|
-
if (!json)
|
|
260
|
+
if (!json) {
|
|
179
261
|
writeLine(stderr, formatStatusLine(entry));
|
|
180
|
-
|
|
262
|
+
if (baselined > 0)
|
|
263
|
+
writeLine(stderr, ` ${baselined} baselined (grandfathered)`);
|
|
264
|
+
if (!ok && newKeys.length > 0) {
|
|
265
|
+
writeLine(stderr, ` ${newKeys.length} new, not in baseline:`);
|
|
266
|
+
for (const k of newKeys)
|
|
267
|
+
writeLine(stderr, ` ${k}`);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
if (!ok && bail) {
|
|
271
|
+
brokeEarly = true;
|
|
181
272
|
break;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// Ratchet: on a fully-observed run, prune grandfathered diagnostics now fixed.
|
|
276
|
+
// A partial run (`--only`/`--skip`/`--changed`) or an early `--bail` break can't
|
|
277
|
+
// see every slot's full output, so it never prunes — an unobserved diagnostic
|
|
278
|
+
// must not be mistaken for a fixed one and dropped (a1). Masking still applied
|
|
279
|
+
// above; only the rewrite is withheld.
|
|
280
|
+
if (baseline) {
|
|
281
|
+
const restricted = (options.only ?? null) !== null || (options.skip?.length ?? 0) > 0 || changed || brokeEarly;
|
|
282
|
+
if (!restricted) {
|
|
283
|
+
const pruned = ratchet(baseline, observed);
|
|
284
|
+
if (!baselinesEqual(baseline, pruned)) {
|
|
285
|
+
await writeBaseline(cwd, pruned);
|
|
286
|
+
if (!json) {
|
|
287
|
+
writeLine(stderr, `\nbaseline: ratcheted ${BASELINE_FILE} to ${countBaselineKeys(pruned)} grandfathered diagnostic(s)`);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
182
291
|
}
|
|
183
292
|
const summary = buildSummary(checks);
|
|
184
|
-
await
|
|
293
|
+
await writeFileAtomic(join(cwd, '.check', 'summary.json'), `${JSON.stringify(summary, null, 2)}\n`);
|
|
294
|
+
// `--digest`: write (or, on green, clear) the token-bounded failure excerpt.
|
|
295
|
+
// A file beside summary.json, never a stdout stream, so the machine-output
|
|
296
|
+
// split holds (C5). Raw `.check/<slot>.json` files are already persisted and
|
|
297
|
+
// untouched — the digest only reads them.
|
|
298
|
+
const digestWritten = (options.digest ?? false) ? await writeDigest(cwd, runs, checks) : false;
|
|
185
299
|
if (json) {
|
|
186
300
|
stdout.write(`${JSON.stringify(summary, null, 2)}\n`);
|
|
187
301
|
}
|
|
188
302
|
else {
|
|
303
|
+
if (summary.checks_run === 0)
|
|
304
|
+
warnVacuous(stderr, checks, adapters);
|
|
189
305
|
writeLine(stderr, '');
|
|
190
|
-
const status = summary.
|
|
306
|
+
const status = summary.checks_run === 0
|
|
307
|
+
? '⚠ no checks ran'
|
|
308
|
+
: summary.ok ? '✔ all checks passed' : '✘ one or more checks failed';
|
|
191
309
|
writeLine(stderr, `${status} in ${summary.total_duration_ms}ms`);
|
|
192
310
|
writeLine(stderr, 'report: .check/summary.json');
|
|
311
|
+
if (digestWritten)
|
|
312
|
+
writeLine(stderr, 'digest: .check/digest.md');
|
|
193
313
|
writeLine(stderr, '');
|
|
194
314
|
}
|
|
195
|
-
|
|
315
|
+
// `--strict` turns a vacuous green into a harness error: exit 2, never 0 —
|
|
316
|
+
// a gate must not report "done" on a repo where nothing was checked.
|
|
317
|
+
let exitCode = summary.ok ? 0 : 1;
|
|
318
|
+
if ((options.strict ?? false) && summary.checks_run === 0) {
|
|
319
|
+
exitCode = 2;
|
|
320
|
+
if (!json)
|
|
321
|
+
writeLine(stderr, '--strict: zero checks ran, exiting 2.\n');
|
|
322
|
+
}
|
|
323
|
+
return { ok: summary.ok, summary, exitCode, runs };
|
|
196
324
|
}
|
|
197
325
|
function spawnInherit(command, args, cwd) {
|
|
198
326
|
return new Promise((resolveOutcome) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package-manager detection.
|
|
3
|
+
*
|
|
4
|
+
* Resolves which package manager a repo uses so the orchestrator can translate
|
|
5
|
+
* each adapter's canonical `pnpm exec <tool>` invocation into that PM's form.
|
|
6
|
+
* Resolution order (D5): the declared `packageManager` field wins (it is the
|
|
7
|
+
* author's explicit intent), then a lockfile, then a `pnpm` default. Every fs
|
|
8
|
+
* touch is injectable so the logic is unit-testable without a real repo.
|
|
9
|
+
*/
|
|
10
|
+
export type PackageManager = 'pnpm' | 'npm' | 'yarn' | 'bun';
|
|
11
|
+
/**
|
|
12
|
+
* Resolve the package manager for `cwd`: the declared `packageManager` field,
|
|
13
|
+
* else the first matching lockfile, else `pnpm`. `fileExists` and
|
|
14
|
+
* `packageManagerField` are injectable for tests.
|
|
15
|
+
*/
|
|
16
|
+
export declare function detectPackageManager(input?: {
|
|
17
|
+
cwd?: string;
|
|
18
|
+
fileExists?: (file: string) => boolean;
|
|
19
|
+
packageManagerField?: () => string | undefined;
|
|
20
|
+
}): PackageManager;
|
|
21
|
+
//# sourceMappingURL=detect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/pm/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAmC7D;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,GAAE;IACL,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAC3C,GACL,cAAc,CAYhB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package-manager detection.
|
|
3
|
+
*
|
|
4
|
+
* Resolves which package manager a repo uses so the orchestrator can translate
|
|
5
|
+
* each adapter's canonical `pnpm exec <tool>` invocation into that PM's form.
|
|
6
|
+
* Resolution order (D5): the declared `packageManager` field wins (it is the
|
|
7
|
+
* author's explicit intent), then a lockfile, then a `pnpm` default. Every fs
|
|
8
|
+
* touch is injectable so the logic is unit-testable without a real repo.
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
11
|
+
import { join } from 'node:path';
|
|
12
|
+
const KNOWN = new Set(['pnpm', 'npm', 'yarn', 'bun']);
|
|
13
|
+
/** Narrow a raw name to a known package manager. */
|
|
14
|
+
function isPackageManager(name) {
|
|
15
|
+
return KNOWN.has(name);
|
|
16
|
+
}
|
|
17
|
+
/** Lockfile → package manager, in resolution priority when several coexist. */
|
|
18
|
+
const LOCKFILES = [
|
|
19
|
+
{ file: 'pnpm-lock.yaml', pm: 'pnpm' },
|
|
20
|
+
{ file: 'bun.lock', pm: 'bun' },
|
|
21
|
+
{ file: 'bun.lockb', pm: 'bun' },
|
|
22
|
+
{ file: 'yarn.lock', pm: 'yarn' },
|
|
23
|
+
{ file: 'package-lock.json', pm: 'npm' },
|
|
24
|
+
];
|
|
25
|
+
/** Parse the `packageManager` field value (`"yarn@3.6.1"` → `'yarn'`), if known. */
|
|
26
|
+
function parseField(value) {
|
|
27
|
+
if (!value)
|
|
28
|
+
return null;
|
|
29
|
+
const name = value.split('@')[0]?.trim() ?? '';
|
|
30
|
+
return isPackageManager(name) ? name : null;
|
|
31
|
+
}
|
|
32
|
+
/** Read the `packageManager` field from `cwd`'s package.json, or `undefined`. */
|
|
33
|
+
function readPackageManagerField(cwd) {
|
|
34
|
+
try {
|
|
35
|
+
const pkg = JSON.parse(readFileSync(join(cwd, 'package.json'), 'utf8'));
|
|
36
|
+
return pkg.packageManager;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Resolve the package manager for `cwd`: the declared `packageManager` field,
|
|
44
|
+
* else the first matching lockfile, else `pnpm`. `fileExists` and
|
|
45
|
+
* `packageManagerField` are injectable for tests.
|
|
46
|
+
*/
|
|
47
|
+
export function detectPackageManager(input = {}) {
|
|
48
|
+
const cwd = input.cwd ?? process.cwd();
|
|
49
|
+
const fileExists = input.fileExists ?? ((file) => existsSync(join(cwd, file)));
|
|
50
|
+
const readField = input.packageManagerField ?? (() => readPackageManagerField(cwd));
|
|
51
|
+
const declared = parseField(readField());
|
|
52
|
+
if (declared)
|
|
53
|
+
return declared;
|
|
54
|
+
for (const { file, pm } of LOCKFILES) {
|
|
55
|
+
if (fileExists(file))
|
|
56
|
+
return pm;
|
|
57
|
+
}
|
|
58
|
+
return 'pnpm';
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/pm/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,KAAK,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3E,oDAAoD;AACpD,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,+EAA+E;AAC/E,MAAM,SAAS,GAAoD;IACjE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE;IACtC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE;IAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE;IAChC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE;IACjC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,KAAK,EAAE;CACzC,CAAC;AAEF,oFAAoF;AACpF,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/C,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,iFAAiF;AACjF,SAAS,uBAAuB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAgC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACrG,OAAO,GAAG,CAAC,cAAc,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAII,EAAE;IAEN,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,mBAAmB,IAAI,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpF,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;IACzC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,SAAS,EAAE,CAAC;QACrC,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package-manager module — the public surface for detecting a repo's package
|
|
3
|
+
* manager and translating each adapter's canonical `pnpm exec <tool>` prefix
|
|
4
|
+
* into that PM's form. Detection lives in `detect.ts`, translation in
|
|
5
|
+
* `translate.ts`; siblings import only from here.
|
|
6
|
+
*/
|
|
7
|
+
export type { PackageManager } from './detect.js';
|
|
8
|
+
export { detectPackageManager } from './detect.js';
|
|
9
|
+
export { isAvailableUnder, translateExec } from './translate.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pm/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package-manager module — the public surface for detecting a repo's package
|
|
3
|
+
* manager and translating each adapter's canonical `pnpm exec <tool>` prefix
|
|
4
|
+
* into that PM's form. Detection lives in `detect.ts`, translation in
|
|
5
|
+
* `translate.ts`; siblings import only from here.
|
|
6
|
+
*/
|
|
7
|
+
export { detectPackageManager } from './detect.js';
|
|
8
|
+
export { isAvailableUnder, translateExec } from './translate.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pm/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exec-prefix translation.
|
|
3
|
+
*
|
|
4
|
+
* The adapter registry keeps its canonical `pnpm exec <tool>` form (D5); this
|
|
5
|
+
* is the single seam that rewrites that prefix for whichever package manager a
|
|
6
|
+
* repo actually uses. Only the `pnpm exec` prefix is translated — `pnpm audit`,
|
|
7
|
+
* custom-check commands, and built-ins pass through untouched, so the default
|
|
8
|
+
* pnpm run is byte-identical to before.
|
|
9
|
+
*/
|
|
10
|
+
import type { PackageManager } from './detect.js';
|
|
11
|
+
/**
|
|
12
|
+
* Rewrite a canonical `pnpm exec <tool> …` invocation for `pm`. Anything that
|
|
13
|
+
* is not a `pnpm exec` prefix (a `pnpm audit`, a custom check's own command, a
|
|
14
|
+
* built-in) is returned unchanged, and so is every invocation under `pnpm`
|
|
15
|
+
* itself — the default stays exactly as it was.
|
|
16
|
+
*/
|
|
17
|
+
export declare function translateExec(command: string, args: readonly string[], pm: PackageManager): {
|
|
18
|
+
command: string;
|
|
19
|
+
args: string[];
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Can this adapter run under `pm`? Audit is package-manager-specific — its
|
|
23
|
+
* flags and JSON shape don't port — so `pnpm audit` (the `security` slot) is
|
|
24
|
+
* unavailable on a non-pnpm PM until a per-PM audit adapter lands (b5).
|
|
25
|
+
* Everything else is PM-agnostic once its exec prefix is translated.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isAvailableUnder(command: string, args: readonly string[], pm: PackageManager): boolean;
|
|
28
|
+
//# sourceMappingURL=translate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../src/pm/translate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AASlD;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,cAAc,GACjB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAKrC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAGtG"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exec-prefix translation.
|
|
3
|
+
*
|
|
4
|
+
* The adapter registry keeps its canonical `pnpm exec <tool>` form (D5); this
|
|
5
|
+
* is the single seam that rewrites that prefix for whichever package manager a
|
|
6
|
+
* repo actually uses. Only the `pnpm exec` prefix is translated — `pnpm audit`,
|
|
7
|
+
* custom-check commands, and built-ins pass through untouched, so the default
|
|
8
|
+
* pnpm run is byte-identical to before.
|
|
9
|
+
*/
|
|
10
|
+
/** The exec command each non-pnpm PM uses in place of `pnpm exec`. */
|
|
11
|
+
const EXEC_COMMAND = {
|
|
12
|
+
npm: 'npx',
|
|
13
|
+
yarn: 'yarn',
|
|
14
|
+
bun: 'bunx',
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Rewrite a canonical `pnpm exec <tool> …` invocation for `pm`. Anything that
|
|
18
|
+
* is not a `pnpm exec` prefix (a `pnpm audit`, a custom check's own command, a
|
|
19
|
+
* built-in) is returned unchanged, and so is every invocation under `pnpm`
|
|
20
|
+
* itself — the default stays exactly as it was.
|
|
21
|
+
*/
|
|
22
|
+
export function translateExec(command, args, pm) {
|
|
23
|
+
const isExec = command === 'pnpm' && args[0] === 'exec';
|
|
24
|
+
if (!isExec || pm === 'pnpm')
|
|
25
|
+
return { command, args: [...args] };
|
|
26
|
+
// Drop 'exec'; keep <tool> and its arguments, e.g. `npx oxlint --type-aware`.
|
|
27
|
+
return { command: EXEC_COMMAND[pm], args: args.slice(1) };
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Can this adapter run under `pm`? Audit is package-manager-specific — its
|
|
31
|
+
* flags and JSON shape don't port — so `pnpm audit` (the `security` slot) is
|
|
32
|
+
* unavailable on a non-pnpm PM until a per-PM audit adapter lands (b5).
|
|
33
|
+
* Everything else is PM-agnostic once its exec prefix is translated.
|
|
34
|
+
*/
|
|
35
|
+
export function isAvailableUnder(command, args, pm) {
|
|
36
|
+
if (command === 'pnpm' && args[0] === 'audit')
|
|
37
|
+
return pm === 'pnpm';
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=translate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/pm/translate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,sEAAsE;AACtE,MAAM,YAAY,GAAoD;IACpE,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,IAAuB,EACvB,EAAkB;IAElB,MAAM,MAAM,GAAG,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;IACxD,IAAI,CAAC,MAAM,IAAI,EAAE,KAAK,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAClE,8EAA8E;IAC9E,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,IAAuB,EAAE,EAAkB;IAC3F,IAAI,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO;QAAE,OAAO,EAAE,KAAK,MAAM,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "checkride",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "An agent harness for TypeScript repositories: one command that is the definition of done, plus mechanically enforced module boundaries.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Rob McLarty",
|
|
@@ -39,24 +39,11 @@
|
|
|
39
39
|
"files": [
|
|
40
40
|
"dist",
|
|
41
41
|
"templates",
|
|
42
|
+
"schema",
|
|
42
43
|
"README.md",
|
|
43
44
|
"CHANGELOG.md",
|
|
44
45
|
"LICENSE"
|
|
45
46
|
],
|
|
46
|
-
"devDependencies": {
|
|
47
|
-
"@ast-grep/cli": "0.42.1",
|
|
48
|
-
"@stryker-mutator/core": "9.6.1",
|
|
49
|
-
"@stryker-mutator/vitest-runner": "9.6.1",
|
|
50
|
-
"@types/node": "22.20.0",
|
|
51
|
-
"@vitest/coverage-v8": "4.1.5",
|
|
52
|
-
"cspell": "10.0.0",
|
|
53
|
-
"fallow": "2.48.0",
|
|
54
|
-
"markdownlint-cli2": "0.22.1",
|
|
55
|
-
"oxlint": "1.61.0",
|
|
56
|
-
"oxlint-tsgolint": "0.21.1",
|
|
57
|
-
"typescript": "6.0.3",
|
|
58
|
-
"vitest": "4.1.5"
|
|
59
|
-
},
|
|
60
47
|
"scripts": {
|
|
61
48
|
"check": "tsc --build && node dist/cli.js",
|
|
62
49
|
"check:all": "tsc --build && node dist/cli.js --all",
|
|
@@ -71,6 +58,22 @@
|
|
|
71
58
|
"mutation": "stryker run",
|
|
72
59
|
"build": "tsc --build",
|
|
73
60
|
"build:clean": "tsc --build --clean",
|
|
74
|
-
"types": "tsc --build"
|
|
61
|
+
"types": "tsc --build",
|
|
62
|
+
"prepublishOnly": "tsc --build && vitest run"
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"@ast-grep/cli": "0.42.1",
|
|
66
|
+
"@stryker-mutator/core": "9.6.1",
|
|
67
|
+
"@stryker-mutator/vitest-runner": "9.6.1",
|
|
68
|
+
"@types/node": "22.20.0",
|
|
69
|
+
"@vitest/coverage-v8": "4.1.5",
|
|
70
|
+
"ajv": "8.20.0",
|
|
71
|
+
"cspell": "10.0.0",
|
|
72
|
+
"fallow": "2.48.0",
|
|
73
|
+
"markdownlint-cli2": "0.22.1",
|
|
74
|
+
"oxlint": "1.61.0",
|
|
75
|
+
"oxlint-tsgolint": "0.21.1",
|
|
76
|
+
"typescript": "6.0.3",
|
|
77
|
+
"vitest": "4.1.5"
|
|
75
78
|
}
|
|
76
|
-
}
|
|
79
|
+
}
|